Skip to main content
Glama
bmorphism

Manifold Markets MCP Server

by bmorphism
README.md
# 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

TDQS

B3.4/5.0

Scored across 18 tools

Disambiguation5/5

Each tool has a clearly distinct purpose, such as adding liquidity, placing bets, or searching markets. No two tools overlap in functionality, making it easy for an agent to select the correct tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., add_liquidity, get_market, sell_shares). There are no deviations or mixed conventions, ensuring predictability.

Tool Count5/5

With 18 tools covering market creation, trading, liquidity, user info, and more, the count is well-scoped for a prediction market server. It provides comprehensive functionality without being excessive.

Completeness4/5

The tool set covers most core operations, including create, read, trade, and liquidity management. However, missing explicit tools for resolving markets and creating comments represent notable gaps that agents may need to work around.

Maintenance

ActivityInactive
ResponsivenessNo issues