@noves/canton-mcp
v0.2.3
Published
MCP server for the Noves Canton API — query Canton Network balances, rewards, classified transactions, prices, identity, and the network directory from any AI agent.
Readme
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-mcpOr in one line, passing the key explicitly:
claude mcp add canton --env NOVES_API_KEY=<your-key> -- npx -y @noves/canton-mcpCursor / 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")
| Tool | What 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_transaction | Full 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
hasMorehints to keep agent context lean. get_transactionsreturns 25 rows by default and acceptslimitup to 100; useincludeCountfor the total count in a date window, andget_transactionfor 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.
