TokenBank — tokenized real-world assets

4,168 tokenized real-world assets: yield, risk, and who is actually allowed to buy each one

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
87%
命名质量
94%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~3,323token 数(工具定义)
~2.3 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 2.60%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "tokenbank": {
      "url": "https://mcp.tokenbank.world"
    }
  }
}

远程端点

https://mcp.tokenbank.worldstreamable-http

它能做什么

工具清单

工具(10)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢search_yield_products(query, pillar, max_risk, min_yield_pct, tier, ...)

Search and filter TokenBank's instruments for earning yield with crypto. Searches the CURATED tier by default (the rows that state a yield, minimum and risk); pass tier to reach the imported issuer-catalogue rows (tokenized treasuries, yield stablecoins, gold, real estate, tokenized stocks, staking, DeFi/CeFi earn, alternative funds). Returns compact records; use get_product_details for the full record.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Free-text match on name, ticker, issuer or type"
    },
    "pillar": {
      "type": "string",
      "enum": [
        "Fixed Income",
        "Real Assets",
        "Market Tokens",
        "Staking"
      ],
      "description": "Limit to one category pillar"
    },
    "max_risk": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5,
      "description": "Maximum risk on a 1-5 scale (1=very low, 3=medium, 5=high)"
    },
    "min_yield_pct": {
      "type": "number",
      "description": "Minimum headline yield in percent"
    },
    "tier": {
      "type": "string",
      "enum": [
        "curated",
        "imported",
        "all"
      ],
      "description": "Which tier to search. Default \"curated\": the instruments that state a yield, minimum and risk — the only ones that can answer \"what does this pay\". \"imported\" and \"all\" reach the issuer-catalogue rows, which carry identity and classification only. Use them for identity questions (\"is X tokenized\"), never for yield rankings."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Skip this many matches before returning. Use the nextOffset from the previous answer to walk the whole set; its absence means you reached the end."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Max results (default 20)"
    }
  }
}

输出模式

{
  "type": "object",
  "properties": {
    "nextOffset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent when there is no more"
    },
    "count": {
      "type": "integer",
      "description": "Rows returned"
    },
    "totalMatching": {
      "type": "integer",
      "description": "Rows that matched before the limit"
    },
    "tier": {
      "type": "string"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "required": [
    "count",
    "totalMatching",
    "results"
  ]
}
🟢get_product_details(ticker)

Full record for one instrument by ticker (case-insensitive): yield, risk, custody, availability, how to buy, source link, verification date.

输入模式

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string",
      "description": "e.g. USDY, stETH, PAXG"
    }
  },
  "required": [
    "ticker"
  ]
}

输出模式

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "tier": {
      "type": "string"
    }
  },
  "required": [
    "ticker"
  ]
}
🟢compare_with_savings_account(bank_rate_pct)

Compare low-risk, instant-access crypto savings instruments against a typical bank savings account rate. Returns the honest trade-offs, not just the bigger number.

输入模式

{
  "type": "object",
  "properties": {
    "bank_rate_pct": {
      "type": "number",
      "description": "Your bank's rate in percent (default 2.0)"
    }
  }
}

输出模式

{
  "type": "object",
  "properties": {
    "bankRatePct": {
      "type": "number"
    },
    "instruments": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "honestTradeoffs": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "bankRatePct",
    "instruments"
  ]
}
🟢find_permissionless_assets(pillar, min_yield_pct, include_unverified, offset, limit)

Instruments whose secondary market needs no KYC and which a self-custody wallet holds itself — a property of how the token works, read from hand-verified gates. For real-world assets the gate to MINT and the gate to trade on a secondary market routinely differ, so a fund can be permissioned at the issuer while its token trades freely. Strict by design — an instrument whose gate is merely unverified is excluded. This says nothing about who may buy it: the issuer's terms and local law decide that.

输入模式

{
  "type": "object",
  "properties": {
    "pillar": {
      "type": "string",
      "enum": [
        "Fixed Income",
        "Real Assets",
        "Market Tokens",
        "Staking"
      ],
      "description": "Limit to one category pillar"
    },
    "min_yield_pct": {
      "type": "number",
      "description": "Minimum comparable yield in percent"
    },
    "include_unverified": {
      "type": "boolean",
      "description": "Default false. When true, also returns instruments whose secondary-market gate is unknown — clearly flagged. Use only when the user asked what MIGHT be open, never to answer what IS open."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Skip this many matches before returning. Use the nextOffset from the previous answer to walk the whole set; its absence means you reached the end."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Max results (default 20)"
    }
  }
}

输出模式

{
  "type": "object",
  "properties": {
    "nextOffset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent when there is no more"
    },
    "count": {
      "type": "integer"
    },
    "totalMatching": {
      "type": "integer"
    },
    "confirmedOpen": {
      "type": "integer",
      "description": "Secondary-market gate verified as no KYC"
    },
    "unverified": {
      "type": "integer",
      "description": "Possibly open, not confirmed — excluded from results"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "required": [
    "count",
    "results"
  ]
}
🟢compare_assets(tickers)

Put two or more instruments side by side on the fields that decide between them: yield, risk, minimum, custody, the three KYC gates, target/area, issuer and verification date. Use for "X vs Y" questions instead of calling get_product_details repeatedly.

输入模式

{
  "type": "object",
  "properties": {
    "tickers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2,
      "maxItems": 6,
      "description": "e.g. [\"USDY\", \"OUSG\", \"BUIDL\"]"
    }
  },
  "required": [
    "tickers"
  ]
}

输出模式

{
  "type": "object",
  "properties": {
    "compared": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "notFound": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "readThis": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "compared"
  ]
}
🟢get_market_stats

Shape of the dataset: how many instruments, split by pillar, category and risk, how many need no KYC on the secondary market, and how fresh the figures are. Use to ground a claim about coverage before making one.

输入模式

{
  "type": "object",
  "properties": {}
}

输出模式

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer",
      "description": "Every instrument, both tiers"
    },
    "byTier": {
      "type": "object",
      "properties": {
        "curated": {
          "type": "integer"
        },
        "imported": {
          "type": "integer"
        }
      }
    }
  },
  "required": [
    "total",
    "byTier"
  ]
}
🟢get_market_coverage(country, readable_only)

Which countries this dataset can see into, which it cannot, and why — the question "what is tokenized in Japan / Korea / Brazil / India" answers from here rather than from a general search. This matters because the honest answer is uncomfortable: roughly $9bn of tokenized securities sits in markets NO Western aggregator indexes, this one included. Japan holds over ¥1tn on a permissioned consortium chain run by eighteen banks. Korea issued $2.2bn in 2026 under regulatory sandbox exemptions, with legal recognition phased in from 4 February 2027 and retail capped by amount PER VENUE. India, Vietnam, Indonesia and Thailand have no stablecoin in their own currency at all. Call this before stating what a market holds, or before quoting any total as if it were the world. Omit `country` for every market.

输入模式

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "description": "Country slug or name, e.g. japan, korea, brazil, india, switzerland. Omit to list all."
    },
    "readable_only": {
      "type": "boolean",
      "description": "Only markets whose instruments we can actually read (default false — the closed ones are the point)"
    }
  }
}

输出模式

{
  "type": "object",
  "properties": {
    "markets": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "summary": {
      "type": "object"
    }
  },
  "required": [
    "markets"
  ]
}
🟢search_realt_properties(city, min_yield_pct, max_token_price_usd, rented_only, sort, ...)

Drill into the RealT portfolio: the individual tokenized US rental properties behind the REALT entry, each with its own net rental yield (computed as annual net rent / tokenized property value), token price, monthly rent and occupancy. Use this when someone asks which specific tokenized property to buy, or for the yield/price spread within one issuer.

输入模式

{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "description": "City name, e.g. Detroit, Cleveland, Chicago"
    },
    "min_yield_pct": {
      "type": "number",
      "description": "Minimum net rental yield in percent"
    },
    "max_token_price_usd": {
      "type": "number",
      "description": "Maximum price per token in USD"
    },
    "rented_only": {
      "type": "boolean",
      "description": "Only properties with at least one rented unit (default true)"
    },
    "sort": {
      "type": "string",
      "enum": [
        "yield",
        "price",
        "rent"
      ],
      "description": "Sort by net yield (default), token price (cheapest first) or monthly rent"
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Skip this many matches before returning. Use the nextOffset from the previous answer to walk the whole set; its absence means you reached the end."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Max results (default 20)"
    }
  }
}

输出模式

{
  "type": "object",
  "properties": {
    "nextOffset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent when there is no more"
    },
    "issuer": {
      "type": "string"
    },
    "snapshotDate": {
      "type": "string"
    },
    "totalMatching": {
      "type": "integer"
    },
    "portfolioTotal": {
      "type": "integer"
    },
    "medianNetYieldPct": {
      "type": [
        "number",
        "null"
      ]
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "portfolioUrl": {
      "type": "string"
    }
  },
  "required": [
    "issuer",
    "totalMatching"
  ]
}
🟢find_tokenized_security(query, issuer, line, include_halted, offset, ...)

Does a tokenized version of a given company, ETF or bond exist, and from which issuer? Searches the whole imported tier by company name, ticker or ISIN: Backed / xStocks, Ondo Global Markets, Swiss SME share registers from Aktionariat, tokenized property from Binaryx, and an aggregated tier covering Dinari, Coinbase, Robinhood Chain, bStocks, Anchored Finance and others. Use this BEFORE saying a stock is not available on-chain. THREE THINGS MATTER IN THE ANSWER: (1) many companies are issued SEVERAL times over — Apple exists as seven different tokens — and those are not duplicates. They differ in issuer, legal form, holder rights, chain and the market each issuer aims them at (targetArea). Report the issuer, not just that the token exists. (2) Sources differ in AUTHORITY. Issuer catalogues state what that issuer issued. The aggregated rows only observe that a token exists: they carry no KYC gate and no custody claim. targetArea is a description of the issuer's stated audience, never an eligibility check. (3) This is identity data: the source states no yield, no minimum and no risk grade, so those fields are absent rather than zero. For instruments that do carry a comparable rate, use search_yield_products instead.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Company name, ticker or ISIN — e.g. \"Apple\", \"AAPL\", \"US0378331005\", \"Silver Trust\""
    },
    "issuer": {
      "type": "string",
      "enum": [
        "backed",
        "ondo"
      ],
      "description": "Restrict to one issuer. Omit to search both, which is usually what you want — the comparison between them is the useful part."
    },
    "line": {
      "type": "string",
      "enum": [
        "xstocks",
        "btokens"
      ],
      "description": "Backed only. xstocks = the xStocks line; btokens = the older bToken DeFi line."
    },
    "include_halted": {
      "type": "boolean",
      "description": "Include instruments Backed has flagged as trading-halted. Default false."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Skip this many matches before returning. Use the nextOffset from the previous answer to walk the whole set; its absence means you reached the end."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Max results (default 20)"
    }
  },
  "required": [
    "query"
  ]
}

输出模式

{
  "type": "object",
  "properties": {
    "nextOffset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent when there is no more"
    },
    "matched": {
      "type": "integer"
    },
    "instruments": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "issuedByMoreThanOneIssuer": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "catalogues": {
      "type": "object"
    },
    "readThis": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "matched",
    "instruments"
  ]
}
🟢compare_tokenized_access(query, offset, limit)

For a security tokenized by more than one issuer, compare every token on it side by side — issuer, structure, KYC gates, custody, chain, and the target/area each issuer states. The right tool for "which tokenized versions of Apple exist?": the tokens share a price driver and differ in almost everything else. Hundreds of securities here are tokenized more than once — Apple exists as seven separate tokens; the response carries the exact counts, do not quote a figure from this description. targetArea describes who each issuer aims the product at and where; it is not an eligibility check — who may buy is set by the issuer. Omit `query` to list every such security.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Company name, underlying ticker or ISIN — e.g. \"Apple\", \"AAPL\", \"US0378331005\". Omit to list all."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Skip this many matches before returning. Use the nextOffset from the previous answer to walk the whole set; its absence means you reached the end."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Max results (default 10)"
    }
  }
}

输出模式

{
  "type": "object",
  "properties": {
    "nextOffset": {
      "type": "integer",
      "description": "Pass as offset to fetch the next page; absent when there is no more"
    },
    "matched": {
      "type": "integer"
    },
    "underlyings": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "required": [
    "matched",
    "underlyings"
  ]
}

社区

评价此服务器

证据

最近观测

已验证未记录版本10 个工具
已验证未记录版本10 个工具
已验证未记录版本10 个工具