# Manifold Markets MCP Server

An MCP server for interacting with Manifold Markets prediction markets. This server provides comprehensive access to Manifold's features through a clean MCP interface, enabling sophisticated market interactions and collective intelligence mechanisms.

## Architecture

The server implements a complete mapping of Manifold Markets' API capabilities through a structured tool system:

### Core Components
- **Schema Layer**: Zod-based validation schemas for all operations
- **API Integration**: Direct mapping to Manifold's REST endpoints
- **Tool Handlers**: Request processing with proper error management
- **Type Safety**: Full TypeScript implementation

### Tool Categories

#### Market Creation & Management
- `create_market`: Create markets (BINARY, MULTIPLE_CHOICE, PSEUDO_NUMERIC, POLL)
- `unresolve_market`: Revert resolved markets
- `close_market`: Close markets for trading
- `add_answer`: Add options to multiple choice markets

#### Market Interaction
- `follow_market`: Track markets of interest
- `react`: Like/dislike markets and comments
- `add_bounty`: Add bounties for analysis
- `award_bounty`: Reward valuable contributions

#### Trading Operations
- `place_bet`: Execute market trades
- `cancel_bet`: Cancel limit orders
- `sell_shares`: Liquidate positions

#### Liquidity Management
- `add_liquidity`: Provide market liquidity
- `remove_liquidity`: Withdraw provided liquidity

#### Information Retrieval
- `search_markets`: Find markets with filters
- `get_market`: Detailed market information
- `get_user`: User profile data
- `get_positions`: Portfolio tracking

#### Social Features
- `send_mana`: Transfer mana between users

## Verified Capabilities

The server has been tested through comprehensive interaction trajectories:

### Successfully Tested
1. Market Discovery & Following
   - ✅ Market search with filters
   - ✅ Market following
   - ✅ Detailed market information retrieval

2. Trading Operations
   - ✅ Liquidity provision
   - ✅ Bet placement with probability updates
   - ✅ Position liquidation
   - ✅ Share selling

3. Permission Management
   - ✅ Role-based access control
   - ✅ Authentication handling
   - ✅ Error messaging

### Permission-Restricted Operations
These operations are implemented but require specific user roles:
- Market resolution/unresolving (market creator)
- Market closing (market creator)
- Bounty management (market creator)
- Liquidity removal (liquidity provider)

## Prerequisites

- Node.js 18 or higher
- npm or yarn
- Manifold Markets API key
- Minimum M$1000 balance for market creation

## Installation

### 1. Install the package

```bash
npm install manifold-mcp-server
```

### 2. Get your API Key

1. Log in to [Manifold Markets](https://manifold.markets)
2. Go to your profile settings
3. Generate an API key
4. Ensure account has sufficient mana for intended operations

### 3. Configure MCP Settings

#### For Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "manifold": {
      "command": "node",
      "args": ["/path/to/manifold-mcp-server/build/index.js"],
      "env": {
        "MANIFOLD_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

#### For Cline (VSCode Extension)

Add to `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`:

```json
{
  "mcpServers": {
    "manifold": {
      "command": "node",
      "args": ["/path/to/manifold-mcp-server/build/index.js"],
      "env": {
        "MANIFOLD_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

## Tool Documentation

### Market Creation & Management

#### create_market
Create a new prediction market:
```typescript
{
  outcomeType: 'BINARY' | 'MULTIPLE_CHOICE' | 'PSEUDO_NUMERIC' | 'POLL' | 'BOUNTIED_QUESTION'
  question: string
  description?: string | {
    type: 'doc'
    content: any[]
  }
  closeTime?: number // Unix timestamp ms
  visibility?: 'public' | 'unlisted'
  initialProb?: number // Required for BINARY (1-99)
  min?: number // Required for PSEUDO_NUMERIC
  max?: number // Required for PSEUDO_NUMERIC
  isLogScale?: boolean
  initialValue?: number // Required for PSEUDO_NUMERIC
  answers?: string[] // Required for MULTIPLE_CHOICE/POLL
  addAnswersMode?: 'DISABLED' | 'ONLY_CREATOR' | 'ANYONE'
  shouldAnswersSumToOne?: boolean
  totalBounty?: number // Required for BOUNTIED_QUESTION
}
```

#### unresolve_market
Unresolve a previously resolved market:
```typescript
{
  contractId: string
  answerId?: string // For multiple choice markets
}
```

#### close_market
Close a market for trading:
```typescript
{
  contractId: string
  closeTime?: number // Optional close time
}
```

### Market Interaction

#### follow_market
Follow or unfollow a market:
```typescript
{
  contractId: string
  follow: boolean
}
```

#### react
React to markets or comments:
```typescript
{
  contentId: string
  contentType: 'comment' | 'contract'
  remove?: boolean
  reactionType: 'like' | 'dislike'
}
```

### Trading Operations

#### place_bet
Place a bet on a market:
```typescript
{
  marketId: string
  amount: number
  outcome: 'YES' | 'NO'
  limitProb?: number // 0.01-0.99
}
```

#### sell_shares
Sell shares in a market:
```typescript
{
  marketId: string
  outcome?: 'YES' | 'NO'
  shares?: number // Defaults to all
}
```

### Liquidity Management

#### add_liquidity
Add liquidity to market pool:
```typescript
{
  marketId: string
  amount: number
}
```

#### remove_liquidity
Remove liquidity from market pool:
```typescript
{
  contractId: string
  amount: number
}
```

## Error Handling

The server implements comprehensive error handling:

1. Input Validation
   - Parameter type checking via Zod schemas
   - Value range validation
   - Required field verification

2. API Communication
   - Authentication errors
   - Network failures
   - Rate limiting
   - Permission checks

3. Business Logic
   - Insufficient balance
   - Invalid market states
   - Unauthorized operations

4. Error Response Format
```typescript
{
  code: ErrorCode
  message: string
  details?: any
}
```

## Development

```bash
# Clone the repository
git clone https://github.com/bmorphism/manifold-mcp-server.git
cd manifold-mcp-server

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test
```

## Contributing

Contributions welcome! Areas of interest:
- Advanced market analysis tools
- Portfolio optimization features
- Integration with other prediction platforms
- Documentation improvements

## Security

- API keys handled via environment variables
- Input validation on all parameters
- Rate limiting protection
- Safe error messages
- Role-based access control

## License

MIT
