Odel
canton mcp

canton mcp

Local
@noves-incTypeScriptMITUpdated 3mo ago

Query Canton Network balances, rewards, transactions, prices, and identity from any AI agent.

Noves

canton-mcp

Ask your AI about the Canton Network.

npm version CI MCP Registry MIT license

An MCP server for the Noves Canton API — balances, rewards, classified transactions, CC prices, identity, and the network directory, queryable from Claude Code, Claude Desktop, Cursor, or any MCP-capable agent.

You: How has the CC price moved over the last 7 days? Chart it.
AI:  → get_price(startDate, endDate, interval: "daily")
     CC closed at $0.1462 today, up 4.2% on the week (low $0.1402, high $0.1521).
     [renders an interactive price chart]

Quick start

Get your free API key at https://app.noves.fi/register/free.

Claude Desktop — one click

Download canton-mcp.mcpb from the latest release, double-click it (or drag into Claude Desktop), and paste your API key in the settings form that appears. The key is stored in your OS keychain. Done.

Claude Code

npx -y @noves/canton-mcp init   # one-time: prompts for your key, validates it, saves it
claude mcp add canton -- npx -y @noves/canton-mcp

Or in one line, passing the key explicitly:

claude mcp add canton --env NOVES_API_KEY=<your-key> -- npx -y @noves/canton-mcp

Cursor / other MCP clients

After npx -y @noves/canton-mcp init, no env var is needed:

{
  "mcpServers": {
    "canton": {
      "command": "npx",
      "args": ["-y", "@noves/canton-mcp"]
    }
  }
}

(Or skip init and add "env": { "NOVES_API_KEY": "<your-key>" }.)

Key resolution order: NOVES_API_KEY env var → --api-key flag → ~/.config/canton-mcp/config.json. The key is sent only to api.canton.noves.fi and never logged.

Tools

Every tool that takes a party accepts an ANS name, a display name, or a raw party ID (name::hash) — resolution is automatic, and ambiguous names return a candidate list to choose from.

Examples:

  • "Who are the super validators on Canton?" → search_directory(orgType: "sv")
  • "What's Noves' current CC balance?" → get_balance(party: "noves.unverified.cns")
  • "Chart Noves' balance over the last 30 days." → get_balance_history(party, startDate, endDate)
  • "Show recent traffic purchases for this validator." → get_transactions(party, txType: "buyTraffic")
ToolWhat it answers
resolve_party"Who is this party?" — canonical party ID, org type, balance, ANS names
search_directory"Who are the super validators?" — browse/filter the network directory
get_balance"What's this party's balance?" — current or at any point in time (date)
get_balance_history"Chart its balance over last month" — daily end-of-day snapshots
get_rewards"What did it earn?" — summary metrics, per-day totals, or individual payouts
get_transactions"Show its recent traffic purchases" — classified history (transfer, buyTraffic, …)
get_transfer_stats"How active is it?" — counts, volumes, unique counterparties
get_price"CC price trend this month?" — spot, historical spot, hourly/daily OHLC
get_transactionFull classified payload of one update by ID

See examples/PROMPTS.md for questions to try.

Notes & limits

  • Read-only. The server only reads data; it can't change anything on the network or in your account.
  • Date inputs accept ISO dates (2026-06-01), ISO datetimes, or unix timestamps.
  • Daily rewards are fetched in ≤30-day windows upstream; the server merges up to 90 days per call.
  • List outputs are capped (default 25 rows) with hasMore hints to keep agent context lean.
  • get_transactions returns 25 rows by default and accepts limit up to 100; use includeCount for the total count in a date window, and get_transaction for one full update.
  • Chains/txTypes (1h), directory & identity lookups (5m), and spot price (60s) are cached in-process, keeping typical agent sessions comfortably inside the free tier.

License

MIT © Noves Inc.