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.
The server implements a complete mapping of Manifold Markets' API capabilities through a structured tool system:
- 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
create_market
: Create markets (BINARY, MULTIPLE_CHOICE, PSEUDO_NUMERIC, POLL)unresolve_market
: Revert resolved marketsclose_market
: Close markets for tradingadd_answer
: Add options to multiple choice markets
follow_market
: Track markets of interestreact
: Like/dislike markets and commentsadd_bounty
: Add bounties for analysisaward_bounty
: Reward valuable contributions
place_bet
: Execute market tradescancel_bet
: Cancel limit orderssell_shares
: Liquidate positions
add_liquidity
: Provide market liquidityremove_liquidity
: Withdraw provided liquidity
search_markets
: Find markets with filtersget_market
: Detailed market informationget_user
: User profile dataget_positions
: Portfolio tracking
send_mana
: Transfer mana between users
The server has been tested through comprehensive interaction trajectories:
-
Market Discovery & Following
- ✅ Market search with filters
- ✅ Market following
- ✅ Detailed market information retrieval
-
Trading Operations
- ✅ Liquidity provision
- ✅ Bet placement with probability updates
- ✅ Position liquidation
- ✅ Share selling
-
Permission Management
- ✅ Role-based access control
- ✅ Authentication handling
- ✅ Error messaging
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)
- Node.js 18 or higher
- npm or yarn
- Manifold Markets API key
- Minimum M$1000 balance for market creation
npm install manifold-mcp-server
- Log in to Manifold Markets
- Go to your profile settings
- Generate an API key
- Ensure account has sufficient mana for intended operations
Add to ~/Library/Application Support/Claude/claude_desktop_config.json
:
{
"mcpServers": {
"manifold": {
"command": "node",
"args": ["/path/to/manifold-mcp-server/build/index.js"],
"env": {
"MANIFOLD_API_KEY": "your_api_key_here"
}
}
}
}
Add to ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
:
{
"mcpServers": {
"manifold": {
"command": "node",
"args": ["/path/to/manifold-mcp-server/build/index.js"],
"env": {
"MANIFOLD_API_KEY": "your_api_key_here"
}
}
}
}
Create a new prediction market:
{
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 a previously resolved market:
{
contractId: string
answerId?: string // For multiple choice markets
}
Close a market for trading:
{
contractId: string
closeTime?: number // Optional close time
}
Follow or unfollow a market:
{
contractId: string
follow: boolean
}
React to markets or comments:
{
contentId: string
contentType: 'comment' | 'contract'
remove?: boolean
reactionType: 'like' | 'dislike'
}
Place a bet on a market:
{
marketId: string
amount: number
outcome: 'YES' | 'NO'
limitProb?: number // 0.01-0.99
}
Sell shares in a market:
{
marketId: string
outcome?: 'YES' | 'NO'
shares?: number // Defaults to all
}
Add liquidity to market pool:
{
marketId: string
amount: number
}
Remove liquidity from market pool:
{
contractId: string
amount: number
}
The server implements comprehensive error handling:
-
Input Validation
- Parameter type checking via Zod schemas
- Value range validation
- Required field verification
-
API Communication
- Authentication errors
- Network failures
- Rate limiting
- Permission checks
-
Business Logic
- Insufficient balance
- Invalid market states
- Unauthorized operations
-
Error Response Format
{
code: ErrorCode
message: string
details?: any
}
# 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
Contributions welcome! Areas of interest:
- Advanced market analysis tools
- Portfolio optimization features
- Integration with other prediction platforms
- Documentation improvements
- API keys handled via environment variables
- Input validation on all parameters
- Rate limiting protection
- Safe error messages
- Role-based access control
MIT