Bopster MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_PORT | No | HTTP port. | 8788 |
| BOPSTER_API_URL | No | Bopster API. | https://api.bopster.fun |
| BOPSTER_RPC_URL | No | Base RPC. The public one rate-limits bursts, so use a dedicated one in production. It must return transaction receipts (publicnode's free tier doesn't). Checked at startup and shown on /health. | https://mainnet.base.org |
| BOPSTER_CHAIN_ID | No | 8453 (Base) or 84532 (Base Sepolia). | 8453 |
| BOPSTER_SITE_URL | No | Where market links point. | https://bopster.fun |
| BOPSTER_MCP_SECRET | No | Only for the official server. Sent as X-Bopster-Mcp-Secret to BOPSTER_API_URL and nowhere else. | |
| BOPSTER_DRAFT_SECRET | No | Signs market drafts between steps 2 and 3. Set it (32+ bytes) so drafts survive a restart. | |
| BOPSTER_FACTORY_ADDRESS | No | BopsterFactory. The get_fees, quote_, prepare_, sync_ and register_ tools need it. | |
| BOPSTER_HTTP_TIMEOUT_MS | No | Timeout for backend requests. | 10000 |
| BOPSTER_REALITY_ARBITRATOR | No | Arbitrator for new questions. Empty turns market creation off. Mainnet: 0xcB4B48d2A7a44247A00048963F169d2b4Ab045a6. | |
| BOPSTER_REALITY_TIMEOUT_SECONDS | No | Answer window for new questions (12 h, as on the site). | 43200 |
| BOPSTER_REALITY_ANSWER_REWARD_WEI | No | Bounty sent with new questions. | 0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_marketsA | 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 |
| get_marketA | 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). |
| get_leaderboardA | Return a ranked leaderboard of Bopster participants (top market creators, predictors, i.e. position takers, or oracle answerers) over a given time period, with pagination. |
| get_portfolioA | 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. |
| get_user_profileB | Fetch a public Bopster user profile plus aggregate activity (as creator, predictor and oracle participant). Accepts either a wallet address or an alias. |
| get_creator_profileA | Fetch a public creator profile on Bopster: alias, avatar, verified badge and creator stats. Accepts either a wallet address or an alias. |
| get_feesA | 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). |
| ping_healthA | Verify that the Bopster read API is reachable and responding. Useful before running other tools. |
| quote_positionA | 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. |
| prepare_positionA | 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. |
| prepare_claimA | 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 why when there's nothing to claim. Non-custodial: this server never holds keys or sends anything. |
| prepare_finalizeA | 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. |
| sync_marketA | 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. |
| get_login_messageA | 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. |
| prepare_market_questionA | 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. |
| prepare_market_launchA | Step 3 of creating a Bopster market. Only launches drafts prepare_market_question built: pass its |
| register_marketA | 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Most tools have clearly distinct purposes, but a few boundaries require reading descriptions: get_user_profile vs get_creator_profile overlap as public profile lookups, and prepare_claim vs prepare_finalize both touch settlement. sync_market and register_market also overlap in refreshing backend state, though the step-wise creation tools are otherwise well separated.
All tool names use snake_case with a consistent verb_noun pattern, such as get_market, list_markets, prepare_position, and prepare_market_launch. Prefixes like get_, prepare_, and list_ are applied predictably across the set.
Seventeen tools is slightly above the ideal compact range, but each maps to a distinct part of the prediction-market lifecycle or a distinct read operation. There is little obvious redundancy, though the surface is heavier than a minimal server would need.
The set covers discovery, market detail, quoting, position preparation, claim/finalize flows, the multi-step market creation pipeline, profiles, leaderboard, portfolio, fees, and health checks. Minor gaps remain around generic transaction-status inspection and possible market edge-case operations, but core workflows are well covered.