{"apiVersion":"v1","directorySlug":"bopster-mcp-8b4351c955","title":"Bopster Fun — Prediction Markets, Just for Fun","description":"Bopster Fun is a social prediction market platform where you create markets, take YES/NO positions with USDC, and earn when you","pageUrl":"https://www.mcpbundles.com/skills/bopster-mcp-8b4351c955","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.bopster.fun/mcp","hostedMcpUrl":null,"toolCount":17,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"fun.bopster/bopster-mcp-8b4351c955","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"list_markets","description":"Search and list prediction markets on Bopster (a non-custodial prediction market on Base). Supports filtering by status, category and text, plus sorting and pagination. Returns each market with YES/NO pools, total volume and end/resolve times, and a `pagination` block (page, size, total, pages). Amounts are USDC (6 decimals); *_formatted and *_iso fields are added for readability.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"page":{"type":"integer","maximum":9007199254740991,"minimum":1},"size":{"type":"integer","maximum":100,"minimum":1},"status":{"enum":["open","locked","resolved"],"type":"string"},"creator":{"type":"string"},"category":{"type":"string"},"question":{"type":"string"},"sort_field":{"enum":["total_volume","participants_count","created_at","end_time","quality_tier","status","total_yes"],"type":"string"},"sort_order":{"enum":["asc","desc"],"type":"string"}}},"title":"List Bopster markets","logicalName":"list_markets","displayName":"List Bopster markets","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_market","description":"Fetch the full detail of a single Bopster prediction market by its on-chain address: question, category, source, YES/NO pools, market phase, oracle state and (optionally) a given wallet’s positions. Amounts are USDC base units (6 decimals); times are unix seconds (UTC).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["address"],"properties":{"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"user_address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}}},"title":"Get a Bopster market","logicalName":"get_market","displayName":"Get a Bopster market","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_leaderboard","description":"Return a ranked leaderboard of Bopster participants — top market creators, predictors (position takers) or oracle answerers — over a given time period, with pagination.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["type"],"properties":{"page":{"type":"integer","default":1,"maximum":9007199254740991,"minimum":1},"type":{"enum":["creators","predictors","oracles"],"type":"string"},"limit":{"type":"integer","default":25,"maximum":100,"minimum":1},"period":{"enum":["all","day","week","month"],"type":"string","default":"all"}}},"title":"Get a Bopster leaderboard","logicalName":"get_leaderboard","displayName":"Get a Bopster leaderboard","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_portfolio","description":"Fetch the Bopster portfolio of a wallet you control: its open positions across markets, claimable rewards and refunds. Amounts are USDC base units (6 decimals). The backend shows a portfolio only to its own wallet, so this needs a login: call get_login_message for the wallet, sign the message with personal_sign, then pass wallet, nonce and signature here. Each signature works once. The session can't move funds and isn't kept.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["wallet","nonce","signature"],"properties":{"nonce":{"type":"string","minLength":1},"wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"signature":{"type":"string","pattern":"^0x[0-9a-fA-F]+$"}}},"title":"Get a wallet portfolio","logicalName":"get_portfolio","displayName":"Get a wallet portfolio","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_user_profile","description":"Fetch a public Bopster user profile plus aggregate activity (as creator, predictor and oracle participant). Accepts either a wallet address or an alias.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["handle"],"properties":{"handle":{"type":"string","minLength":1}}},"title":"Get a Bopster user profile","logicalName":"get_user_profile","displayName":"Get a Bopster user profile","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_creator_profile","description":"Fetch a public creator profile on Bopster: alias, avatar, verified badge and creator stats. Accepts either a wallet address or an alias.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["handle"],"properties":{"handle":{"type":"string","minLength":1}}},"title":"Get a Bopster creator profile","logicalName":"get_creator_profile","displayName":"Get a Bopster creator profile","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_fees","description":"Return the Bopster market fee split (protocol, creator and resolver) as read live from the BopsterFactory contract on Base. Percentages are of the total market pool. No fees are charged when a market refunds (no positions, or nobody on the winning side).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Get Bopster market fees","logicalName":"get_fees","displayName":"Get Bopster market fees","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"ping_health","description":"Verify that the Bopster read API is reachable and responding. Useful before running other tools.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Check Bopster backend health","logicalName":"ping_health","displayName":"Check Bopster backend health","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"quote_position","description":"Estimate what a YES or NO position of a given size would pay on a Bopster market if its side wins, read from the market contract on Base. Read-only: builds no transaction. Payouts are parimutuel, so the estimate moves with every later position.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["market","side","amount"],"properties":{"side":{"enum":["YES","NO"],"type":"string"},"amount":{"type":"string","pattern":"^\\d+(\\.\\d+)?$"},"market":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}}},"title":"Quote a Bopster position","logicalName":"quote_position","displayName":"Quote a Bopster position","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"prepare_position","description":"Build the unsigned transactions to take a YES or NO position on a Bopster market on Base: an exact-amount token approval, then the position. Checks the market is open, is a real Bopster market and that the wallet holds enough. Non-custodial: this server never holds keys or sends anything; the agent's wallet signs and sends the transactions in order.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["market","side","amount","wallet"],"properties":{"side":{"enum":["YES","NO"],"type":"string"},"amount":{"type":"string","pattern":"^\\d+(\\.\\d+)?$"},"market":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}}},"title":"Prepare a Bopster position","logicalName":"prepare_position","displayName":"Prepare a Bopster position","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"prepare_claim","description":"Work out what a wallet can take out of a Bopster market on Base and build the unsigned transactions to do it, in order: settling the market first when it's ready but nobody has (finalize, or the emergency refund path), then claim() or claimRefund(). Says plainly when there's nothing to claim and why. Non-custodial: this server never holds keys or sends anything.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["market","wallet"],"properties":{"market":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}}},"title":"Prepare a Bopster claim","logicalName":"prepare_claim","displayName":"Prepare a Bopster claim","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"prepare_finalize","description":"Check whether a Bopster market on Base can be settled now and build the unsigned transaction(s) to do it. Anyone can settle a market once its Reality.eth answer is final; the sender earns the resolver reward when the market has winners. Also covers the emergency refund path for markets whose answer never became final. Non-custodial: this server never holds keys or sends anything.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["market"],"properties":{"market":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}}},"title":"Prepare to settle a Bopster market","logicalName":"prepare_finalize","displayName":"Prepare to settle a Bopster market","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"sync_market","description":"Ask the Bopster backend to re-read a market from the chain after a transaction confirms, so the site and the other tools show it right away instead of after the next indexer pass. Changes nothing on-chain and moves no funds; the chain stays the source of truth either way.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["market","tx_hash"],"properties":{"market":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"tx_hash":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$"}}},"title":"Sync a Bopster market","logicalName":"sync_market","displayName":"Sync a Bopster market","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_login_message","description":"Step 1 of creating a Bopster market, and what get_portfolio needs. Returns a one-time message for the wallet to sign with personal_sign (EIP-191). The signature opens a short session with the Bopster backend, used only for the one request that needs it: pinning a new market's metadata to IPFS, or reading this wallet's own portfolio. It can't move funds or sign transactions. Each client gets 3 a minute: ask for one only when you're about to sign it.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["wallet"],"properties":{"wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}}},"title":"Get a Bopster login message","logicalName":"get_login_message","displayName":"Get a Bopster login message","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"prepare_market_question","description":"Step 2 of creating a Bopster market. The question is built from one of the five Bopster templates (price threshold, event outcome, before a date, price change, compare assets), worded exactly as bopster.fun words it; free-text questions are not accepted. Checks the market against every rule the site, the backend and the factory enforce, pins its metadata to IPFS, and returns the unsigned Reality.eth askQuestion transaction. Non-custodial: nothing is signed or sent here.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["wallet","nonce","signature","title","template","category","source_url","end_time","accept_terms"],"properties":{"nonce":{"type":"string","minLength":1},"wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"category":{"type":"string"},"end_time":{"type":"string"},"template":{"oneOf":[{"type":"object","required":["type","asset","direction","price"],"properties":{"type":{"type":"string","const":"price_threshold"},"asset":{"type":"string"},"price":{"type":"string"},"direction":{"enum":["above","below"],"type":"string"}}},{"type":"object","required":["type","event"],"properties":{"type":{"type":"string","const":"event_outcome"},"event":{"type":"string"}}},{"type":"object","required":["type","subject","action"],"properties":{"type":{"type":"string","const":"before_date"},"action":{"type":"string"},"subject":{"type":"string"}}},{"type":"object","required":["type","asset","direction","percentage"],"properties":{"type":{"type":"string","const":"price_change"},"asset":{"type":"string"},"direction":{"enum":["up","down"],"type":"string"},"percentage":{"type":"string"}}},{"type":"object","required":["type","asset_a","direction","asset_b"],"properties":{"type":{"type":"string","const":"compare_assets"},"asset_a":{"type":"string"},"asset_b":{"type":"string"},"direction":{"enum":["higher","lower"],"type":"string"}}}]},"signature":{"type":"string","pattern":"^0x[0-9a-fA-F]+$"},"source_url":{"type":"string"},"accept_terms":{"type":"boolean","const":true},"creator_name":{"type":"string"},"sports_match":{"enum":["football","football-knockout","basketball","ice-hockey","rugby","american-football-baseball","formula-1","other","not_a_match"],"type":"string"},"resolution_delay_minutes":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991}}},"title":"Prepare a Bopster market question","logicalName":"prepare_market_question","displayName":"Prepare a Bopster market question","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"prepare_market_launch","description":"Step 3 of creating a Bopster market. Only launches drafts prepare_market_question built: pass its `next.arguments` unchanged, plus the question tx hash. Reads the confirmed askQuestion transaction, checks it is exactly the drafted question (same text, asker, arbitrator, answer window and opening time), and returns the unsigned createMarket transaction. Non-custodial: nothing is signed or sent here.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["wallet","question_tx_hash","metadata_uri","question","end_time","resolve_time","draft_token"],"properties":{"wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"end_time":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"question":{"type":"string"},"draft_token":{"type":"string","minLength":1},"metadata_uri":{"type":"string","pattern":"^ipfs:\\/\\/\\S+$"},"resolve_time":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"question_tx_hash":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$"}}},"title":"Prepare a Bopster market launch","logicalName":"prepare_market_launch","displayName":"Prepare a Bopster market launch","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"register_market","description":"Step 4 of creating a Bopster market. Reads the confirmed createMarket transaction, returns the new market and its link, and tells the Bopster backend so it shows up on the site right away. The backend re-reads the market from the chain itself, and its indexer would find it anyway; this only saves the wait.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["tx_hash"],"properties":{"tx_hash":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$"}}},"title":"Register a new Bopster market","logicalName":"register_market","displayName":"Register a new Bopster market","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Bopster-Fun-Prediction-Markets-Just-for-Fun&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AuYm9wc3Rlci5mdW4vbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Bopster-Fun-Prediction-Markets-Just-for-Fun%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.bopster.fun%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Bopster-Fun-Prediction-Markets-Just-for-Fun%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.bopster.fun%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Bopster+Fun+%E2%80%94+Prediction+Markets%2C+Just+for+Fun&connectorUrl=https%3A%2F%2Fmcp.bopster.fun%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Bopster-Fun-Prediction-Markets-Just-for-Fun\" --url \"https://mcp.bopster.fun/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/bopster-mcp-8b4351c955","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/bopster-mcp-8b4351c955/tools/{tool}","mcpServerUrl":"https://mcp.bopster.fun/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/bopster-mcp-8b4351c955?live=1"}