Buy and sell fully backed crypto index tokens and trade prediction markets on Base, in USDC.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Buy an index with USDC alone: one transaction buys every basket token on KyberSwap and mints the shares, reverting below the quoted minimum. Unspent USDC is refunded.
the index's token address
the agent's wallet address — the one that will sign and send the calls
USDC to spend at most, as a decimal string, e.g. "25" or "0.5"
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http indexfy https://api.indexfy.xyz/mcp
Buy an index with USDC alone: one transaction buys every basket token on KyberSwap and mints the shares, reverting below the quoted minimum. Unspent USDC is refunded.
| Argument | Type | Description |
|---|---|---|
| index* | any | the index's token address |
| wallet* | string | the agent's wallet address — the one that will sign and send the calls |
| usdcAmount* | string | USDC to spend at most, as a decimal string, e.g. "25" or "0.5" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"wallet",
"index",
"usdcAmount"
],
"properties": {
"index": {
"$ref": "#/properties/wallet",
"description": "the index's token address"
},
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "the agent's wallet address — the one that will sign and send the calls"
},
"usdcAmount": {
"type": "string",
"description": "USDC to spend at most, as a decimal string, e.g. \"25\" or \"0.5\""
}
},
"additionalProperties": false
}Launch a new index fund: the wallet seeds it with the exact amount of each basket token (it must hold them) and receives `initialShares` shares. The seed amounts set the weights. Returns the approvals and the factory deployment call, plus the new index's predicted address.
| Argument | Type | Description |
|---|---|---|
| name* | string | e.g. "AI Agents Index" |
| assets* | array | |
| symbol* | string | ticker, 1–12 letters/digits, e.g. "AGENT5" |
| wallet* | string | the agent's wallet address — the one that will sign and send the calls |
| mandate | string | the index's investment mandate, shown to buyers |
| proposer | any | who may propose rebalances (default: wallet) |
| tvlFeePct | number | management fee in % per year (max 0.2) |
| mintFeePct | number | fee on each mint, in % (max 0.5) |
| feeRecipient | any | who receives the fees (default: wallet) |
| initialShares | string | shares minted for the seed, as a decimal string, e.g. "25" or "0.5" |
| auctionMinutes | integer | rebalance auction length |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"wallet",
"name",
"symbol",
"assets"
],
"properties": {
"name": {
"type": "string",
"description": "e.g. \"AI Agents Index\""
},
"assets": {
"type": "array",
"items": {
"type": "object",
"required": [
"token",
"amount"
],
"properties": {
"token": {
"$ref": "#/properties/wallet",
"description": "basket token on Base"
},
"amount": {
"type": "string",
"description": "amount of the token to seed, in whole tokens, as a decimal string, e.g. \"25\" or \"0.5\""
}
},
"additionalProperties": false
},
"maxItems": 20,
"minItems": 1
},
"symbol": {
"type": "string",
"description": "ticker, 1–12 letters/digits, e.g. \"AGENT5\""
},
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "the agent's wallet address — the one that will sign and send the calls"
},
"mandate": {
"type": "string",
"maxLength": 500,
"description": "the index's investment mandate, shown to buyers"
},
"proposer": {
"$ref": "#/properties/wallet",
"description": "who may propose rebalances (default: wallet)"
},
"tvlFeePct": {
"type": "number",
"default": 0.2,
"maximum": 0.2,
"minimum": 0,
"description": "management fee in % per year (max 0.2)"
},
"mintFeePct": {
"type": "number",
"default": 0.3,
"maximum": 0.5,
"minimum": 0,
"description": "fee on each mint, in % (max 0.5)"
},
"feeRecipient": {
"$ref": "#/properties/proposer",
"description": "who receives the fees (default: wallet)"
},
"initialShares": {
"type": "string",
"default": "100",
"description": "shares minted for the seed, as a decimal string, e.g. \"25\" or \"0.5\""
},
"auctionMinutes": {
"type": "integer",
"default": 30,
"maximum": 10080,
"minimum": 1,
"description": "rebalance auction length"
}
},
"additionalProperties": false
}Open a YES/NO market. The wallet seeds it with USDC liquidity (minimum 100) and names a solver — a different address that alone resolves it and stakes 1% as a bond. Trading runs until closeTime; the solver proposes after resolveAfter.
| Argument | Type | Description |
|---|---|---|
| sector* | string | |
| solver* | any | the address that will resolve the market (not the wallet) |
| wallet* | string | the agent's wallet address — the one that will sign and send the calls |
| question* | string | a clear YES/NO question with its resolution source and time, e.g. "Will BTC close above $100,000 on Coinbase on Dec 31, 2026 (UTC)?" |
| closeTime* | string | ISO 8601 time trading stops, e.g. 2026-12-31T00:00:00Z |
| resolveAfter* | string | ISO 8601 earliest time the solver may propose the outcome (≥ closeTime) |
| liquidityUsdc* | string | USDC liquidity to seed (minimum 100), as a decimal string, e.g. "25" or "0.5" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"wallet",
"question",
"sector",
"closeTime",
"resolveAfter",
"solver",
"liquidityUsdc"
],
"properties": {
"sector": {
"enum": [
"crypto",
"politics",
"sports",
"economy",
"tech",
"culture",
"other"
],
"type": "string"
},
"solver": {
"$ref": "#/properties/wallet",
"description": "the address that will resolve the market (not the wallet)"
},
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "the agent's wallet address — the one that will sign and send the calls"
},
"question": {
"type": "string",
"description": "a clear YES/NO question with its resolution source and time, e.g. \"Will BTC close above $100,000 on Coinbase on Dec 31, 2026 (UTC)?\""
},
"closeTime": {
"type": "string",
"description": "ISO 8601 time trading stops, e.g. 2026-12-31T00:00:00Z"
},
"resolveAfter": {
"type": "string",
"description": "ISO 8601 earliest time the solver may propose the outcome (≥ closeTime)"
},
"liquidityUsdc": {
"type": "string",
"description": "USDC liquidity to seed (minimum 100), as a decimal string, e.g. \"25\" or \"0.5\""
}
},
"additionalProperties": false
}Deposit or withdraw solver stake (backs the 1% bonds of your proposals), or withdraw your balance (dispute winnings and returned bonds).
| Argument | Type | Description |
|---|---|---|
| action* | string | |
| wallet* | string | the agent's wallet address — the one that will sign and send the calls |
| amountUsdc | string | USDC, for deposit_stake / withdraw_stake, as a decimal string, e.g. "25" or "0.5" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"wallet",
"action"
],
"properties": {
"action": {
"enum": [
"deposit_stake",
"withdraw_stake",
"withdraw_balance"
],
"type": "string"
},
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "the agent's wallet address — the one that will sign and send the calls"
},
"amountUsdc": {
"type": "string",
"description": "USDC, for deposit_stake / withdraw_stake, as a decimal string, e.g. \"25\" or \"0.5\""
}
},
"additionalProperties": false
}After trading: propose (the solver; deposits any missing stake first), dispute (anyone but the solver, posting the same bond, during the 24h window), finalize (anyone, once the window passes), redeem (holders, after settlement) or withdraw_liquidity (the creator, after settlement).
| Argument | Type | Description |
|---|---|---|
| id* | integer | prediction market id |
| action* | string | |
| wallet* | string | the agent's wallet address — the one that will sign and send the calls |
| outcome | string | required for propose |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"wallet",
"id",
"action"
],
"properties": {
"id": {
"type": "integer",
"description": "prediction market id",
"exclusiveMinimum": 0
},
"action": {
"enum": [
"propose",
"dispute",
"finalize",
"redeem",
"withdraw_liquidity"
],
"type": "string"
},
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "the agent's wallet address — the one that will sign and send the calls"
},
"outcome": {
"enum": [
"YES",
"NO",
"INVALID"
],
"type": "string",
"description": "required for propose"
}
},
"additionalProperties": false
}Buy YES/NO shares with USDC, or sell shares back for USDC before the market closes. Includes the USDC approval when needed and a minimum-output guard.
| Argument | Type | Description |
|---|---|---|
| id* | integer | prediction market id |
| side* | string | |
| action* | string | |
| amount* | string | USDC to spend (buy) or shares to sell (sell), as a decimal string, e.g. "25" or "0.5" |
| wallet* | string | the agent's wallet address — the one that will sign and send the calls |
| slippageBps | integer | max price movement, in basis points (100 = 1%) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"wallet",
"id",
"side",
"action",
"amount"
],
"properties": {
"id": {
"type": "integer",
"description": "prediction market id",
"exclusiveMinimum": 0
},
"side": {
"enum": [
"YES",
"NO"
],
"type": "string"
},
"action": {
"enum": [
"buy",
"sell"
],
"type": "string"
},
"amount": {
"type": "string",
"description": "USDC to spend (buy) or shares to sell (sell), as a decimal string, e.g. \"25\" or \"0.5\""
},
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "the agent's wallet address — the one that will sign and send the calls"
},
"slippageBps": {
"type": "integer",
"default": 100,
"maximum": 1000,
"minimum": 1,
"description": "max price movement, in basis points (100 = 1%)"
}
},
"additionalProperties": false
}Sell index shares for USDC: one transaction redeems the shares for the basket and sells each token on KyberSwap, reverting below the quoted minimum.
| Argument | Type | Description |
|---|---|---|
| index* | any | the index's token address |
| shares* | string | index shares to sell (18 decimals), as a decimal string, e.g. "25" or "0.5" |
| wallet* | string | the agent's wallet address — the one that will sign and send the calls |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"wallet",
"index",
"shares"
],
"properties": {
"index": {
"$ref": "#/properties/wallet",
"description": "the index's token address"
},
"shares": {
"type": "string",
"description": "index shares to sell (18 decimals), as a decimal string, e.g. \"25\" or \"0.5\""
},
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "the agent's wallet address — the one that will sign and send the calls"
}
},
"additionalProperties": false
}One index's stats, mandate and current holdings (each basket token's amount, USD value and weight).
| Argument | Type | Description |
|---|---|---|
| address* | string | the index's token address |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "the index's token address"
}
},
"additionalProperties": false
}One market's live state: prices, phase and what can be done next, deadlines, proposal/dispute. With `wallet`, also its shares, redeemable USDC and solver stake.
| Argument | Type | Description |
|---|---|---|
| id* | integer | prediction market id |
| wallet | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "prediction market id",
"exclusiveMinimum": 0
},
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$"
}
},
"additionalProperties": false
}A wallet's Indexfy index holdings with value and profit/loss, plus its Indexfy points.
| Argument | Type | Description |
|---|---|---|
| wallet* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"wallet"
],
"properties": {
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$"
}
},
"additionalProperties": false
}Indexfy index funds on Base with price, TVL and 24h / 7d performance. Each index is an ERC-20 fully backed by its basket of tokens.
| Argument | Type | Description |
|---|---|---|
| sort | string | |
| limit | integer | |
| creator | string | only indexes launched by this address |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"tvl",
"newest"
],
"type": "string",
"default": "tvl"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1
},
"creator": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "only indexes launched by this address"
}
},
"additionalProperties": false
}Prediction markets on Indexfy with live YES/NO prices (= implied probability), money in the market, phase and deadlines.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| search | string | words in the question |
| sector | string | |
| status | string | open = still trading; closed = trading ended |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1
},
"search": {
"type": "string",
"maxLength": 100,
"description": "words in the question"
},
"sector": {
"enum": [
"crypto",
"politics",
"sports",
"economy",
"tech",
"culture",
"other"
],
"type": "string"
},
"status": {
"enum": [
"open",
"closed"
],
"type": "string",
"description": "open = still trading; closed = trading ended"
}
},
"additionalProperties": false
}Exact quote from the market maker: shares for a USDC buy, or USDC for a share sell, fees included.
| Argument | Type | Description |
|---|---|---|
| id* | integer | prediction market id |
| side* | string | |
| action* | string | |
| amount* | string | USDC to spend (buy) or shares to sell (sell), as a decimal string, e.g. "25" or "0.5" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"side",
"action",
"amount"
],
"properties": {
"id": {
"type": "integer",
"description": "prediction market id",
"exclusiveMinimum": 0
},
"side": {
"enum": [
"YES",
"NO"
],
"type": "string"
},
"action": {
"enum": [
"buy",
"sell"
],
"type": "string"
},
"amount": {
"type": "string",
"description": "USDC to spend (buy) or shares to sell (sell), as a decimal string, e.g. \"25\" or \"0.5\""
}
},
"additionalProperties": false
}Lists a newly created index on indexfy.xyz right away. Call with the deployFolio transaction hash once it's mined.
| Argument | Type | Description |
|---|---|---|
| txHash* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"txHash"
],
"properties": {
"txHash": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$"
}
},
"additionalProperties": false
}Lists a newly created market on indexfy.xyz under its sector. Call with the createMarket transaction hash once mined, within 1 hour.
| Argument | Type | Description |
|---|---|---|
| sector* | string | |
| txHash* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"txHash",
"sector"
],
"properties": {
"sector": {
"enum": [
"crypto",
"politics",
"sports",
"economy",
"tech",
"culture",
"other"
],
"type": "string"
},
"txHash": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 10, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.