IFSO MCP
An MCP server that allows AI assistants to read IFSO payment conditions, quote fees, list payments, explain payment states, and prepare unsigned transactions for conditional USDG payments on Robinhood Chain.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.ifso.tech/mcpWhat its tools do
7 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- List available payment conditions and limits
- Quote fees for specific condition types
- Explain the state and deadline of a payment
- Prepare unsigned transactions for wallet signing
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- ifso 0.1.0+97c3c9be38a9
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 7 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
7 advertised
ifso_version — IFSO build and contracts
Which IFSO build is running, the chain id (Robinhood Chain mainnet is 4663), the address of every contract it uses (payments, conditions, outcome resolver, USDG) and the fee constants in base units and USDG. The same answer as GET /v1/version. Check these addresses before approving anything in a wallet.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"title": "IFSO build and contracts",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}ifso_get_payment — IFSO payment status
The current state of one if-so payment, read from the chain: status (OPEN, MET, RELEASED, RETURNED, VOIDED, CANCELLED), amount in USDG, sender, recipient or claim link key, expiry and the condition that unlocks it. Payment ids are large whole numbers (up to 78 digits); pass them as a string.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^#?\\d{1,78}$",
"description": "The payment id as a decimal string, e.g. \"12\" or a 78-digit id."
}
},
"additionalProperties": false
}{
"title": "IFSO payment status",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}ifso_list_conditions — IFSO condition types and limits
The kinds of condition an if-so payment can wait for (a date, a price at or by a deadline, a football league result, a Polymarket question, both people tapping OK, or a named referee), with example commands, the price tickers, the timing rules and the amount limits read from the contract. Use the example command format with ifso_prepare_payment.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"title": "IFSO condition types and limits",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}ifso_prepare_payment — Prepare an IFSO payment (unsigned)
Turns a command like "/ifso 0x... 20 on 2026-12-01" into a plain preview and the UNSIGNED data to create that if-so payment from the sender's own wallet: two transactions (USDG approve, then create) or one gasless authorization to sign. This server never signs, never holds a key and never sends anything; the sender reviews and signs in their own wallet. Same checks as the site's build step.
{
"type": "object",
"required": [
"text",
"sender"
],
"properties": {
"text": {
"type": "string",
"maxLength": 300,
"minLength": 3,
"description": "The command, e.g. \"/ifso 0x... 20 on 2026-12-01\" or \"/challenge 0x... 10 if nvda closes above 200 by friday\". See ifso_list_conditions."
},
"sender": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "The wallet that sends the USDG and signs."
},
"linkKey": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "For a claim link: the address derived from the link secret. Keep the secret yourself; never send it."
},
"referee": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Referee wallet for a referee condition, when not typed in the command."
},
"recipient": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Recipient, when the command says link and you want a fixed recipient instead."
},
"altRefundTo": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Second refund address, used if the sender cannot receive USDG."
},
"cancellable": {
"type": "boolean",
"description": "Let the sender cancel before anything happens (default false)."
},
"tzOffsetMin": {
"type": "integer",
"maximum": 840,
"minimum": -720,
"description": "The person's UTC offset in minutes for dates (e.g. 240 for UTC+4). Stock deadlines always use New York time."
}
},
"additionalProperties": false
}{
"title": "Prepare an IFSO payment (unsigned)",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}ifso_list_payments — IFSO payments for an address
The if-so payments where an address is the sender or the recipient, newest first, 20 at a time (the same list as the web dashboard, from the IFSO index of the chain, up to the newest 100). Each item has the id, status, amount, the other side and the expiry. Pass nextCursor back as cursor for the next page. For the live chain state of one payment use ifso_get_payment.
{
"type": "object",
"required": [
"address"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many payments to return (default and most 20)."
},
"cursor": {
"type": "string",
"pattern": "^#?\\d{1,78}$",
"description": "The nextCursor of the previous answer: the list continues after that payment."
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "The wallet address to look up (sender or recipient)."
}
},
"additionalProperties": false
}{
"title": "IFSO payments for an address",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}ifso_quote_fees — IFSO fees for a payment
The fee for an if-so payment of one condition kind (TIME, PRICE, SPORTS, MARKET, APPROVE_PARTIES or APPROVE_REFEREE): the flat creation fee, plus the flat result fee for SPORTS and MARKET, read from the contract (the same numbers as ifso_version). With an amount, also the total the sender approves and whether the amount is inside the contract's limits. Fees are flat and never a share of the amount.
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"TIME",
"PRICE",
"SPORTS",
"MARKET",
"APPROVE_PARTIES",
"APPROVE_REFEREE"
],
"type": "string",
"description": "The condition kind, as in ifso_list_conditions."
},
"amount": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,6})?$",
"description": "Optional amount in USDG, e.g. \"20\" or \"20.5\"."
}
},
"additionalProperties": false
}{
"title": "IFSO fees for a payment",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}ifso_explain_payment — Explain an IFSO payment
One if-so payment in plain words, from the same chain read as ifso_get_payment: what it waits for, the deadline, who can do what next (claim, accept, tap OK, decide, settle, send back, cancel) and when and where it comes back if nothing happens. Payment ids are large whole numbers; pass them as a string.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^#?\\d{1,78}$",
"description": "The payment id as a decimal string, e.g. \"12\" or a 78-digit id."
}
},
"additionalProperties": false
}{
"title": "Explain an IFSO payment",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-09: 1 of 1 checks answered
- 2026-11-10: 2 of 2 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 317 ms
- 95th percentile latency
- 317 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 317 ms · metadata changed · 7 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http ifso-mcp https://api.ifso.tech/mcpCodex
codex mcp add ifso-mcp --url https://api.ifso.tech/mcpCursor
{
"mcpServers": {
"ifso-mcp": {
"url": "https://api.ifso.tech/mcp"
}
}
}Cline
{
"mcpServers": {
"ifso-mcp": {
"type": "streamableHttp",
"url": "https://api.ifso.tech/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"ifso-mcp": {
"type": "http",
"url": "https://api.ifso.tech/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http ifso-mcp https://api.ifso.tech/mcpClaude Desktop
https://api.ifso.tech/mcpWindsurf
{
"mcpServers": {
"ifso-mcp": {
"serverUrl": "https://api.ifso.tech/mcp"
}
}
}Let your agent find its tools
Find servers like IFSO MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.