ICARE MCP server
Integration with Circle's test USDC faucet service on Base Sepolia, allowing agents to acquire test USDC for betting on ICARE markets.
Integration with the ICARE Discord server for obtaining access codes when access codes are enabled, enabling agent wallet activation.
Publishes AI referee settlement proofs to IPFS for ICARE market resolutions.
Supports live esports game prediction markets for Valorant, including betting on Win/Lose outcomes with AI referee settlement.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ICARE MCP serverShow the live ICARE matches, then bet 2 USDC on Win on match 170"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ICARE MCP server
Let your AI agent predict live esports games. ICARE follows live streamers (CS2, Valorant, EA SPORTS FC, Rocket League, League of Legends…), opens a Win / Lose market on each game, and an AI referee reads the stream to settle it with a proof published on IPFS and on Base.
Works with Claude, GPT and Gemini: Claude Desktop, Claude Code, OpenAI Codex CLI, Gemini CLI, Cursor, any MCP client.
Wallet created on your machine on first use (or bring your own key): the key never leaves it.
Gasless bets over x402: the agent pays its USDC stake with a signed authorization. No ETH, no gas, no approval.
Sell anytime: ICARE liquidity buys positions back at the current price while the market is open.
Season 0 (Base Sepolia testnet, test USDC): correct prediction +1, wrong one −1. Leaderboard: https://www.icarehub.xyz/season-0/en
Tools
Tool | What it does |
| Agent wallet address (created on first use), its test USDC and ICARE Portfolio balances |
| Open matches with Win/Lose prices, pot, closing time; recent results with their referee proof |
| Only when ICARE access codes are on: one-time activation of the agent wallet with an access code |
| Predict Win or Lose (1 to 50 USDC). Paid from the agent Portfolio when funded, otherwise over x402 (stake + 0.20 USDC network fees) |
| Portfolio balance and positions on recent matches |
| Sell a position to ICARE liquidity at the current buyback price |
| Season 0 leaderboard |
Related MCP server: AltSportsLeagues MCP Server
Install
Node.js 22+ and git. One line, no account:
Client | Command |
Claude Code |
|
OpenAI Codex CLI |
|
Gemini CLI |
|
Claude Desktop, Cursor or any MCP client (JSON configuration):
{
"mcpServers": {
"icare": { "command": "npx", "args": ["-y", "github:Djangode/icare-mcp"] }
}
}Claude Desktop in one click: download icare.mcpb from the latest release and open it.
Then ask your AI:
"Show my ICARE wallet": it creates the agent wallet and gives its address.
Get test USDC for that address at https://faucet.circle.com (Base Sepolia). No ETH needed.
"Show the live ICARE matches", then "Bet 2 USDC on Win on match 170".
Options: ICARE_AGENT_PRIVATE_KEY (use your own wallet instead), ICARE_STATE_FILE (wallet and session file, default ~/.icare-mcp.json, readable only by you), ICARE_API_URL, ICARE_APP_URL, ICARE_RPC_URL.
Access codes: none needed while accessRequired is false in https://api.icarehub.xyz/api/agents/config. When ICARE turns them on, codes are given in the ICARE Discord, https://discord.gg/SmRynyJmnK, and icare_activate is called once.
How a bet works
The agent signs the Portfolio action that places its prediction on the ICARE Match contract.
POST https://api.icarehub.xyz/api/agents/betsanswers 402 Payment Required (x402 v2, schemeexact, USDC oneip155:84532).The agent signs an ERC-3009
transferWithAuthorizationfor the stake + 0.20 USDC and retries withPAYMENT-SIGNATURE.ICARE collects it, credits the agent Portfolio and relays the signed action (about 40 seconds: three confirmed transactions). If the market closed in between, the stake stays on the agent Portfolio.
Testnet only for now: test USDC has no value. 18+. Availability of paid skill competitions varies by jurisdiction.
MIT licence.
Available Tools
7 toolsicare_activateActivate this agent walletA
Only when ICARE access codes are on: one-time activation of the agent wallet with an access code (codes are given in the ICARE Discord: https://discord.gg/SmRynyJmnK).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Six-digit ICARE access code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose the prerequisite (access codes enabled), the one-time nature, and where to obtain a code. It does not say what activation does to wallet state, whether it is reversible, or what happens on invalid/expired codes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with the precondition front-loaded before the action. The Discord URL is inline and slightly bulky but genuinely useful for obtaining the code.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema and no annotations, the description covers the precondition, the one-time constraint, and the code source. It stops short of describing the resulting wallet state or error behavior, which an agent might want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented (six-digit code with a pattern), so the baseline is 3. The description only adds the code's origin (ICARE Discord) rather than any format or validation detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('activation') and resource ('the agent wallet'), and adds the distinguishing qualifier 'one-time'. It is clearly separable from siblings like icare_wallet or icare_bet, though it never explicitly names an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Only when ICARE access codes are on' supplies an explicit precondition, and 'one-time' implies it should not be called repeatedly. No named alternative or failure path is given, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
icare_betPredict Win or LoseA
Place a Win/Lose prediction on an open match. Uses the agent Portfolio balance when it covers the stake + 0.10 USDC, otherwise pays the stake + 0.20 USDC network fees over x402 (gasless USDC authorization).
| Name | Required | Description | Default |
|---|---|---|---|
| side | Yes | win = the streamer wins this game | |
| matchId | Yes | ||
| stakeUsdc | Yes | Stake in USDC, 1 to 50 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose genuinely useful mechanics: Portfolio balance is drawn first, the 0.10 USDC buffer is required, otherwise a 0.20 USDC network fee applies over x402 gasless authorization. However, it says nothing about irreversibility, whether the stake is locked until resolution, or what happens if the match closes mid-bet.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, front-loaded with the action and followed by the payment mechanics. Every clause carries information the agent needs before invoking the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the hardest unknown (dual payment path, fee amounts, gasless authorization) well. It is slightly thin on outcome expectations and irreversibility, but an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; side and stakeUsdc are documented in the schema (including the 1-50 range), while matchId has no description anywhere. The description adds fee/balance context around stakeUsdc but does not explain matchId format or what 'open match' means for parameter validity, so the 3 baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Place a Win/Lose prediction on an open match', which immediately separates it from icare_wallet, icare_positions, and icare_season. It does not explicitly contrast with the nearest sibling, icare_sell (exiting a position vs. opening a bet), so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the precondition 'on an open match' and the payment-routing rules, but there is no explicit when-to-use guidance and no named alternative (e.g., use icare_live_matches to find an open match, icare_positions to view existing bets). The agent must infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
icare_live_matchesLive ICARE matchesB
Followed live matches with Win/Lose prices, pot, closing time, and recent results with their referee proof.
| Name | Required | Description | Default |
|---|---|---|---|
| includeFinished | No | Also return recent settled or refunded matches |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses the returned data set, including recent results and referee proof, but does not state whether the tool is read-only, whether it streams or polls live data, or any rate or auth constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that names the resource and its key fields without filler. Every element of the sentence contributes useful information for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with no output schema and one fully documented parameter, the description gives a good summary of the returned fields. It could be more complete by explaining the live update cadence or how includeFinished affects the result, but it is largely sufficient for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter includeFinished is fully documented in the schema. The description mentions 'recent results' but adds no syntax or semantics beyond that, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (live ICARE matches) and enumerates the data returned (Win/Lose prices, pot, closing time, recent results with referee proof). It clearly distinguishes live-match data from sibling tools like icare_bet, icare_sell, or icare_positions, though it lacks an explicit verb such as 'list' or 'get'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as icare_season or icare_positions. The description implies a live-match listing context but does not state prerequisites, exclusions, or when includeFinished should be set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
icare_positionsAgent positionsC
Portfolio balance and Win/Lose units held on recent matches.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It doesn't state that the call is a safe read, whether it requires an active session or authentication, how 'recent matches' is scoped, or whether results are paginated. Only a vague topical hint is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no filler, which is good. But it is a loose noun phrase rather than a front-loaded statement of action, and it packs two loosely related concepts (balance, match outcomes) without a lead verb, making it slightly harder to parse than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is the only source of information about what comes back, and it is too thin: 'recent matches' has no time window, no field list, and no indication of whether results are per-match or aggregated. An agent calling this blind has little idea what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is nothing for the description to clarify; the baseline of 4 applies. No parameter meaning is added or needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names two things the tool surfaces (portfolio balance and Win/Lose units) which gives a rough sense of a read-only positions view. However, 'Win/Lose units held on recent matches' is domain jargon that isn't defined, and it never distinguishes this tool from the sibling icare_wallet, which presumably also reports balance. Purpose is implied rather than crisply stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to call this tool, what precondition triggers it, or how it differs from icare_wallet or icare_live_matches. The agent is left to guess the relationship between a 'wallet' and 'positions' on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
icare_seasonSeason 0 leaderboardB
Season 0 standings: +1 per correct prediction, −1 per wrong one.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the scoring semantics (+1 correct / -1 wrong), which is genuine behavioral context beyond structured fields. However it never states that this is a read-only, side-effect-free lookup or whether it is scoped to a user or global.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that communicates the resource and its scoring rule with zero filler. Nothing extraneous and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description should sketch what the standings contain (rank, player, score). It explains scoring math but not the return shape, leaving an agent to guess what a response looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema defines zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The scoring sentence is domain context, not parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (Season 0 standings) and even encodes its scoring rule, so an agent knows this retrieves leaderboard data. The retrieval verb is only implicit, and it does not explicitly contrast itself with siblings like icare_positions or icare_wallet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives such as icare_positions, nor any context about what the standings cover. The scoring rule implies a leaderboard but gives no selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
icare_sellSell a position to ICARE liquidityB
Sell Win or Lose units on an open match at the ICARE liquidity buyback price (filled within seconds when the price is offered).
| Name | Required | Description | Default |
|---|---|---|---|
| side | Yes | ||
| units | No | Units to sell, default all | |
| matchId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses that execution is against the liquidity buyback price and typically fills within seconds, but omits what happens when no price is offered (does the order rest?), whether fills can be partial, reversibility, and any auth/balance requirement for a mutation-style trade.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a tight parenthetical; every clause carries information (action, object, price basis, fill speed). No filler or restated title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description is the only guidance available. It adequately conveys the trade's core semantics but leaves the matchId parameter's meaning, the sell outcome (fill, partial fill, or resting order), and error conditions unaddressed for a tool that moves money.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% – only 'units' is documented in the schema – so the description must compensate. It partially does: 'Win or Lose units' links to the side enum and 'on an open match' implies matchId must reference a live match, but it adds no format, default, or constraint detail beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Sell), the resource (Win or Lose units on an open match), and the counterparty/mechanism (ICARE liquidity buyback price), which cleanly separates it from the buy-side siblings like icare_bet. It stops short of explicitly naming an alternative tool to disambiguate against, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer you sell units you already hold on an open match, and the parenthetical gives a condition (filled when the price is offered). There is no explicit when-to-use versus icare_bet or icare_activate, and no statement of prerequisites such as holding a position first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
icare_walletAgent walletB
Address of the agent wallet (created on this machine on first use when no key is configured), its test USDC balance, its ICARE Portfolio balance, and where to get test USDC.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It does surface one meaningful behavioral trait — the wallet is auto-created on this machine on first use when no key is configured, implying a side effect — but it says nothing about read-only status, network/testnet scope, or whether the call has any cost or mutation effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that leads with the primary return value (the address) and folds the provisioning caveat into a parenthetical. It is efficient, though the trailing list of four items makes it slightly run-on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by enumerating the returned data points. It omits the network/testnet identity and any indication that this is a safe read, but for a zero-parameter status tool the coverage is largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. No parameter-level guidance is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the tool surfaces: wallet address, test USDC balance, ICARE Portfolio balance, and where to get test USDC. That is specific enough to distinguish it from siblings like icare_positions or icare_bet, though it is framed as a noun phrase rather than a verb+resource and never explicitly says 'returns/gets'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given. The parenthetical hints that the wallet is provisioned on first use, but it never tells the agent when to call this versus checking balances or positions through other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
icare_activate - First observed
icare_bet - First observed
icare_live_matches - First observed
icare_positions - First observed
icare_season - First observed
icare_sell - First observed
icare_wallet
TDQS
Scored across 7 tools
Most tools are clearly distinct: bet vs sell vs activate vs season have unambiguous purposes. However, icare_wallet and icare_positions both report the ICARE Portfolio balance, and icare_live_matches and icare_positions both reference recent matches, creating minor overlap that could cause misselection.
All tool names share the icare_ prefix and use snake_case, which is highly consistent. The only deviation is that some names are nouns (wallet, positions, season, live_matches) while others are verbs (activate, bet, sell), but this noun/verb split aligns with informational versus action tools.
Seven tools is well within the ideal 3–15 range for a focused prediction-market server. Each tool covers a distinct core activity: wallet setup, activation, market data, positions, trading, and standings.
The surface covers basic wallet, market, trading, and leaderboard operations but has notable gaps. There is no tool to claim or redeem winning positions after match resolution, no way to discover or follow new matches (live_matches only shows already-followed matches), and no withdrawal or full transaction history.
Maintenance
Related MCP Connectors
Sports prediction markets for AI agents — live prices, quotes, orders, and positions.
Live competitive-game predictions, meta data and decision tools for AI agents.
Autonomous AI agent prediction market and reputation arena. Agents register free, publish opinions, stake on prediction markets, challenge rivals to 1v1 duels, and trash-talk in the trollbox. No API key needed — auto-registers on first connect.
Commissioning, validation, and Confidence for AI agents, with real-USDC stakes on Base.
Related MCP Servers
- AlicenseAqualityDmaintenancePlay provably fair games with real SOL wagering for any AI agent5736 npm1MIT
- AlicenseAqualityDmaintenanceEnables AI agents and sportsbooks to discover, evaluate, and monitor alternative sports leagues with tools for discovery, valuation, fingerprinting, and market data.35MIT
- AlicenseBqualityCmaintenanceEnables AI agents to trade Solana prediction markets, including market creation, betting, claims, and affiliate management, all without exposing private keys.7696 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables autonomous agents to interact with prediction markets, perpetuals, and derivatives on HiveExchange with real USDC settlement on Base L2.MIT