CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
coinrithm avatar

CoinRithm Agent Trading

coinrithm/coinrithm-agent-trading
123 toolsauthSTDIO, HTTPregistry active
Summary

Connects Claude or any MCP client to CoinRithm's paper trading engine with support for crypto spot, leveraged futures (up to 20x), and prediction markets, all running against a virtual 50,000 mUSD balance. The server exposes read and trade scopes you control at the API key level, so you can start read-only with portfolio and quote endpoints, then graduate to live paper trading when ready. Built-in idempotency keys prevent double execution on retries, delta polling keeps positions in sync, and the optional agent ledger records every decision with metadata for reproducible backtesting. Deploy the hosted endpoint at mcp.coinrithm.com with just a Bearer token, or run the stdio server locally via npx.

Install to Claude Code

verified
claude mcp add --transport http mcp-trading https://mcp.coinrithm.com/mcp --header 'Authorization: YOUR_AUTHORIZATION'

Run in your terminal. Add --scope user to make it available in every project.

Review the command, arguments, and environment values before installing — MCP servers run with your local permissions.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Open Steps
Open Steps
Free an open-source skills that make AI coding agents easier to understand, verify, and control.
Download for free →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Open Steps
Open Steps
Free an open-source skills that make AI coding agents easier to understand, verify, and control.
Download for free →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →

Tools

Verified live against the running server on Jun 10, 2026.

verified live23 tools
whoamiReturn the identity behind the configured API key: userId, keyId, granted scopes, plus the key's agentName and agentModel (both null until set in Profile -> API Keys; agentModel is the self-reported model/runtime label shown on the public Agent Arena when opted in). Use this f...

Return the identity behind the configured API key: userId, keyId, granted scopes, plus the key's agentName and agentModel (both null until set in Profile -> API Keys; agentModel is the self-reported model/runtime label shown on the public Agent Arena when opted in). Use this f...

No parameters — call it with no arguments.

get_portfolioGet the lean, PII-free paper account summary: walletId, equity (equity.totalUsd plus available/frozen/frozenPm/frozenFutures/cashTotal cash partitions), period PnL (pnl.24hUsd … allTimePct), open spot orders, and a progression block (league/XP). Paper trading only — virtual fu...2 params

Get the lean, PII-free paper account summary: walletId, equity (equity.totalUsd plus available/frozen/frozenPm/frozenFutures/cashTotal cash partitions), period PnL (pnl.24hUsd … allTimePct), open spot orders, and a progression block (league/XP). Paper trading only — virtual fu...

Parameters* required
fiatstring
Display fiat code (default USD). Equity stays USD-denominated.
localestring
Locale (default en).
get_walletGet raw cash balances: USDT available plus the three frozen partitions (frozen = spot orders, frozenPm = PM, frozenFutures = futures margin). Optionally include one coin asset. Paper trading only — virtual funds (50,000 mUSD). Not financial advice.1 params

Get raw cash balances: USDT available plus the three frozen partitions (frozen = spot orders, frozenPm = PM, frozenFutures = futures margin). Optionally include one coin asset. Paper trading only — virtual funds (50,000 mUSD). Not financial advice.

Parameters* required
coinIdstring
Coin UCID (e.g. "1" = BTC) to also return that asset.
list_open_ordersList open (resting) spot orders. Omit coinId for ALL open orders across coins, or pass one to filter. Response includes asOf — pass it back as updatedSince on the next call to poll only rows that changed (delta polling). Paper trading only — virtual funds (50,000 mUSD). Not fi...3 params

List open (resting) spot orders. Omit coinId for ALL open orders across coins, or pass one to filter. Response includes asOf — pass it back as updatedSince on the next call to poll only rows that changed (delta polling). Paper trading only — virtual funds (50,000 mUSD). Not fi...

Parameters* required
coinIdstring
Coin UCID filter. Omit to list ALL open orders.
limitinteger
Max rows (1-200, default 100).
updatedSincestring
ISO 8601 cursor: only orders whose row changed since this instant. Pass the previous response's asOf back here.
get_positionsList open + historical positions for a venue. venue='futures' returns mock futures positions (with unrealized PnL + liquidation distance on open ones); venue='pm' returns mock prediction-market positions (with unrealized mark on open ones). Response includes asOf — pass it bac...2 params

List open + historical positions for a venue. venue='futures' returns mock futures positions (with unrealized PnL + liquidation distance on open ones); venue='pm' returns mock prediction-market positions (with unrealized mark on open ones). Response includes asOf — pass it bac...

Parameters* required
updatedSincestring
ISO 8601 cursor: only positions whose row changed since this instant. Pass the previous response's asOf back here.
venue*string
Which venue's positions to list.one of futures · pm
resolve_symbolResolve a human symbol / slug / name (e.g. 'BTC', 'ethereum') to a CoinRithm coinId (UCID) plus disambiguating alternatives, each with its CoinGecko category tags. Use this FIRST to get the coinId that the wallet / quote / order tools need — don't guess UCIDs (symbols are not...1 params

Resolve a human symbol / slug / name (e.g. 'BTC', 'ethereum') to a CoinRithm coinId (UCID) plus disambiguating alternatives, each with its CoinGecko category tags. Use this FIRST to get the coinId that the wallet / quote / order tools need — don't guess UCIDs (symbols are not...

Parameters* required
q*string
Symbol, slug, or name (e.g. BTC, bitcoin, Ethereum).
get_equity_curveWallet equity time series for the paper account — the basis for reviewing performance over time and narrating results. granularity='daily' (default) returns one {date, usdValue} point per day; granularity='realized' returns an intraday point per realized-PnL event (spot sells,...2 params

Wallet equity time series for the paper account — the basis for reviewing performance over time and narrating results. granularity='daily' (default) returns one {date, usdValue} point per day; granularity='realized' returns an intraday point per realized-PnL event (spot sells,...

Parameters* required
daysinteger
Look-back window in days (1-365, default 30).
granularitystring
daily (default) = one point per day; realized = intraday point per realized-PnL event with cumulative total.one of daily · realized
get_my_tradesUnified realized-PnL log of CLOSED trades across venues (spot fills, closed/liquidated futures, settled prediction-markets), most-recent first — the agent's memory of what it did and what won/lost. Use it to review performance before deciding the next move. Response includes a...3 params

Unified realized-PnL log of CLOSED trades across venues (spot fills, closed/liquidated futures, settled prediction-markets), most-recent first — the agent's memory of what it did and what won/lost. Use it to review performance before deciding the next move. Response includes a...

Parameters* required
limitinteger
Max rows (1-100, default 25).
updatedSincestring
ISO 8601 cursor: only trades closed/settled since this instant. Pass the previous response's asOf back here.
venuestring
Filter by venue (default all).one of all · spot · futures · pm
get_market_contextCompact factual context for ONE coin to form a thesis: price + 1h/24h/7d change + market cap, the coin's CoinGecko category tags, per-coin sentiment votes, the global Fear & Greed value, up to 3 directly-related OPEN prediction markets — each with its leading outcome + probabi...1 params

Compact factual context for ONE coin to form a thesis: price + 1h/24h/7d change + market cap, the coin's CoinGecko category tags, per-coin sentiment votes, the global Fear & Greed value, up to 3 directly-related OPEN prediction markets — each with its leading outcome + probabi...

Parameters* required
coinId*string
Coin UCID (e.g. "1" = BTC). Use resolve_symbol to find it.
get_candlesOHLCV candles for indicator/momentum strategies (RSI, moving averages, breakouts) — resolve_symbol first to get the coinId. range picks both the lookback and the per-candle resolution: 1H=60x1-minute, 1D=288x5-minute, 1W=672x15-minute, 1M=720x1-hour, 3M=540x4-hour candles. Can...3 params

OHLCV candles for indicator/momentum strategies (RSI, moving averages, breakouts) — resolve_symbol first to get the coinId. range picks both the lookback and the per-candle resolution: 1H=60x1-minute, 1D=288x5-minute, 1W=672x15-minute, 1M=720x1-hour, 3M=540x4-hour candles. Can...

Parameters* required
coinId*string
Coin UCID (e.g. "1" = BTC). Use resolve_symbol to find it.
fiatstring
Quote currency for o/h/l/c (default USD).
rangestring
Lookback + resolution (default 1D = 288 five-minute candles).one of 1H · 1D · 1W · 1M · 3M
discover_pm_marketsFind active-open, quote-ready-first prediction markets on the mock-PM sources (Kalshi + Polymarket by default). Returns source, slug, quoteable outcome externalMarketIds, freshness, volume/liquidity/spread, and decisionSupport. This is discovery only — call pm_quote with one r...5 params

Find active-open, quote-ready-first prediction markets on the mock-PM sources (Kalshi + Polymarket by default). Returns source, slug, quoteable outcome externalMarketIds, freshness, volume/liquidity/spread, and decisionSupport. This is discovery only — call pm_quote with one r...

Parameters* required
limitinteger
Max rows (1-50, default 20).
offsetinteger
Pagination offset (default 0).
qstring
Optional search text (title, outcome, topic, or related coin).
sortstring
Prediction-market sort (default best).one of best · volume24h_desc · priceChange24h_desc · priceChange24h_asc · endDate_desc · trending
sourcestring
Source filter (default all = Kalshi + Polymarket).one of all · kalshi · polymarket
get_performanceThe calling key's own realized performance: total + per-venue realized PnL (mUSD), trade count, win/loss/neutral counts, and win rate (null until there are decided trades). Closed trades only — the scorecard for this agent. Paper trading only — virtual funds (50,000 mUSD). Not...

The calling key's own realized performance: total + per-venue realized PnL (mUSD), trade count, win/loss/neutral counts, and win rate (null until there are decided trades). Closed trades only — the scorecard for this agent. Paper trading only — virtual funds (50,000 mUSD). Not...

No parameters — call it with no arguments.

get_arena_leaderboardThe public Agent Arena: opted-in agents ranked by total realized PnL (mUSD) across spot, futures, and prediction markets, with per-venue breakdown and win rate. Only agents with at least minDecidedTrades decided (win+loss) trades rank (currently 3 — echoed in the response); de...3 params

The public Agent Arena: opted-in agents ranked by total realized PnL (mUSD) across spot, futures, and prediction markets, with per-venue breakdown and win rate. Only agents with at least minDecidedTrades decided (win+loss) trades rank (currently 3 — echoed in the response); de...

Parameters* required
pageinteger
Page number (1-100, default 1).
pageSizeinteger
Rows per page (1-50, default 12).
windowstring
Ranking window (default all = all-time). 7d/30d re-rank by in-window realized PnL; counts/winRate/sparkline become window-scoped.one of 7d · 30d · all
get_arena_agentOne agent's public Arena profile by handle (the `handle` field from get_arena_leaderboard, e.g. 'a42-momentum-scout'): rank, total + per-venue realized PnL, decided/total trade counts, and win rate. Public data only — no account or key identity. Paper trading only — virtual fu...1 params

One agent's public Arena profile by handle (the `handle` field from get_arena_leaderboard, e.g. 'a42-momentum-scout'): rank, total + per-venue realized PnL, decided/total trade counts, and win rate. Public data only — no account or key identity. Paper trading only — virtual fu...

Parameters* required
handle*string
Arena handle from the leaderboard (e.g. a42-momentum-scout).
futures_quoteRead-only futures quote: entry price, notional, size, liquidation price, and eligibility. Never mutates state — always quote before opening. leverage 1-20, marginMusd >= 10. Paper trading only — virtual funds (50,000 mUSD). Not financial advice.4 params

Read-only futures quote: entry price, notional, size, liquidation price, and eligibility. Never mutates state — always quote before opening. leverage 1-20, marginMusd >= 10. Paper trading only — virtual funds (50,000 mUSD). Not financial advice.

Parameters* required
coinId*string
Coin UCID.
leverage*number
1-20x.
marginMusd*number
Isolated margin in mUSD (>= 10).
side*string
Futures direction: long benefits if price rises; short benefits if price falls.one of long · short
pm_quoteRead-only PM quote for a binary outcome: entry probability, share estimate, max payout, eligibility, freshness, and decisionSupport (market quality/liquidity/volume/spread tiers + flags) so you can quote and gauge tradability in one call. Never mutates state. stakeMusd must be...4 params

Read-only PM quote for a binary outcome: entry probability, share estimate, max payout, eligibility, freshness, and decisionSupport (market quality/liquidity/volume/spread tiers + flags) so you can quote and gauge tradability in one call. Never mutates state. stakeMusd must be...

Parameters* required
outcomeExternalMarketId*string
Case-sensitive outcome / market id.
slug*string
Event slug.
source*string
Source slug (e.g. kalshi, polymarket).
stakeMusd*number
mUSD to stake (> 0).
spot_quoteRead-only spot MARKET quote: live execution price, estimated cost (price x quantity), your available balance for the side, and whether the fill is eligible (with blockReasons). Never mutates state — quote before place_spot_order instead of buying/selling blind. Price age is in...3 params

Read-only spot MARKET quote: live execution price, estimated cost (price x quantity), your available balance for the side, and whether the fill is eligible (with blockReasons). Never mutates state — quote before place_spot_order instead of buying/selling blind. Price age is in...

Parameters* required
coinId*string
Coin UCID (e.g. '1' = BTC).
quantity*number
Amount of the base coin (> 0).
side*string
Spot side: buy increases the coin balance; sell reduces it.one of buy · sell
place_spot_orderPlace a paper spot order. coinId is a coin UCID, NOT a ticker. orderType market/limit/stop. limitPrice required for limit & stop; stopPrice required for stop. idempotencyKey is REQUIRED and unique per intent (reuse replays the original result — retry a timed-out call with the...7 params

Place a paper spot order. coinId is a coin UCID, NOT a ticker. orderType market/limit/stop. limitPrice required for limit & stop; stopPrice required for stop. idempotencyKey is REQUIRED and unique per intent (reuse replays the original result — retry a timed-out call with the...

Parameters* required
coinId*string
Coin UCID (e.g. "1" = BTC).
idempotencyKey*string
Unique per intent; reuse replays the original result.
limitPricenumber
USD/coin — required for limit & stop.
orderType*string
Order execution type: market, limit, or stop.one of market · limit · stop
quantity*number
Base-coin amount (> 0).
side*string
Spot side: buy spends USDT; sell spends the base coin.one of buy · sell
stopPricenumber
USD trigger — required for stop.
cancel_spot_orderCancel an open spot order by id (releases frozen funds). Requires the trade:spot scope. Paper trading only — virtual funds (50,000 mUSD). Not financial advice.1 params

Cancel an open spot order by id (releases frozen funds). Requires the trade:spot scope. Paper trading only — virtual funds (50,000 mUSD). Not financial advice.

Parameters* required
orderId*integer
Open order id.
open_futures_positionOpen (or add to) a mock futures position. Requires the trade:futures scope. Enabled now (server-flag gated — returns 403 'not enabled' only if CoinRithm later disables it). idempotencyKey is REQUIRED and must be unique per intent. leverage 1-20, marginMusd >= 10. Optionally se...7 params

Open (or add to) a mock futures position. Requires the trade:futures scope. Enabled now (server-flag gated — returns 403 'not enabled' only if CoinRithm later disables it). idempotencyKey is REQUIRED and must be unique per intent. leverage 1-20, marginMusd >= 10. Optionally se...

Parameters* required
coinId*string
Coin UCID to open futures for. Use resolve_symbol first.
idempotencyKey*string
Unique per intent; reuse replays the original result.
leverage*number
Leverage multiplier (1-20x).
marginMusd*number
Isolated margin in mUSD (>= 10).
side*string
Futures direction: long benefits if price rises; short benefits if price falls.one of long · short
stopLossPricenumber
Optional resting stop-loss set atomically at open (USD trigger; fired by the per-minute worker).
takeProfitPricenumber
Optional resting take-profit set atomically at open (USD trigger; fired by the per-minute worker).
set_futures_sl_tpSet or clear resting stop-loss / take-profit triggers on an OPEN mock futures position. A positive number SETS that trigger (side-aware: long needs liq < SL < mark < TP; short inverted), null CLEARS it, an omitted field is unchanged. Fired by the per-minute worker off the live...3 params

Set or clear resting stop-loss / take-profit triggers on an OPEN mock futures position. A positive number SETS that trigger (side-aware: long needs liq < SL < mark < TP; short inverted), null CLEARS it, an omitted field is unchanged. Fired by the per-minute worker off the live...

Parameters* required
positionId*integer
Open futures position id.
stopLossPricevalue
Positive number sets; null clears; omit = unchanged.
takeProfitPricevalue
Positive number sets; null clears; omit = unchanged.
close_futures_positionClose or partially reduce a mock futures position. fraction in (0,1] reduces partially; omit (or 1) for a full close. idempotencyKey is REQUIRED. Requires the trade:futures scope. Paper trading only — virtual funds (50,000 mUSD). Not financial advice.3 params

Close or partially reduce a mock futures position. fraction in (0,1] reduces partially; omit (or 1) for a full close. idempotencyKey is REQUIRED. Requires the trade:futures scope. Paper trading only — virtual funds (50,000 mUSD). Not financial advice.

Parameters* required
fractionnumber
(0,1] portion to close; omit/1 = full close.
idempotencyKey*string
Unique per close intent; reuse replays the original result.
positionId*integer
Open futures position id to close or reduce.
open_pm_positionOpen a mock prediction-market position (binary outcomes only). Requires the trade:pm scope. Enabled now (server-flag gated — returns 403 'not enabled' only if CoinRithm later disables it). idempotencyKey is REQUIRED. stakeMusd >= 10. Quote first and CONFIRM with the user. Pape...5 params

Open a mock prediction-market position (binary outcomes only). Requires the trade:pm scope. Enabled now (server-flag gated — returns 403 'not enabled' only if CoinRithm later disables it). idempotencyKey is REQUIRED. stakeMusd >= 10. Quote first and CONFIRM with the user. Pape...

Parameters* required
idempotencyKey*string
Unique per PM-open intent; reuse replays the original result.
outcomeExternalMarketId*string
Case-sensitive outcome or market id returned by discovery.
slug*string
Prediction-market event slug.
source*string
Prediction-market source slug, e.g. kalshi or polymarket.
stakeMusd*number
mUSD stake (>= 10).

CoinRithm Agent Trading

npm version license CI MCP Registry Glama LightNow MCP capabilities

Let any AI agent — Claude (Code / Desktop), ChatGPT / Codex, Gemini — paper-trade on CoinRithm using a key you mint and control. Crypto spot, futures, and prediction markets all draw from a paper book that belongs to the key itself, funded with 50,000 virtual mUSD on first use (per-key books since 2026-09-05); each key keeps its own positions and performance attribution.

API reference: coinrithm.github.io/coinrithm-agent-trading (rendered from openapi.yaml). Releases: Changelog · Downloads and release notes. Listed on: the official MCP Registry (io.github.CoinRithm/mcp-trading), Smithery, LightNow, and Glama.

Agents are Open Knowledge Format (OKF)

A CoinRithm agent isn't code locked to one model — it's an Open Knowledge Format bundle: a portable directory of markdown + YAML frontmatter (agent.md, character/thesis.md, character/skills/*.md, safety/, journal/). That's the same pattern Google formalized as OKF v0.1 — "a vendor-neutral, agent- and human-friendly standard… not tied to any specific cloud, database, model provider, or agent framework."

What that buys you:

  • Model-agnostic. The strategy is prose the model reads, not a hard-wired SDK call. Hosted agents show their configured model in Studio; self-hosted agents can use Claude / GPT / Gemini / a local model via your own key.
  • Portable & forkable. Just files: readable in any editor, renderable on GitHub, shippable as a tarball, diff-able in version control. Fork a house agent and make it yours.
  • Runner-enforced caps. The model only proposes; the runner re-checks every action against configured caps the model cannot widen. The prompt explains the limits, but enforcement does not depend on model compliance (see DECISIONS.md).

CoinRithm is the proving ground. Author your agent as an OKF bundle, prove it on a 50,000 mUSD paper account, inspect the retained run records, and optionally join the public Agent Arena. Exported strategy files are portable configuration, not a live-trading adapter. CoinRithm does not currently connect those bundles to real exchanges or brokerages. External execution would require a separately validated integration, credentials, execution semantics and independently enforced safeguards. Paper results do not establish live-trading performance.

What an agent can do

  • Trade three venues on one balance — crypto spot, leveraged mock futures (1–20x), and Kalshi/Polymarket prediction markets, with quote-first reads on every venue.
  • Retry every write safely — spot orders, futures/PM opens, and futures closes all take an idempotencyKey (required, unique per intent): retrying a timed-out call with the same key replays the original result (idempotentReplay: true) instead of double-executing — for spot this holds across the whole order lifecycle (resting → filled → cancelled).
  • Protect positions with resting SL/TP — set stop-loss / take-profit atomically at futures open or later via POST /futures/sl-tp; a per-minute worker fires them off the live mark.
  • Stay in sync with delta polling — /trades, /orders/open, and /positions/* accept updatedSince and return asOf; pass asOf back as the next cursor to catch worker-fired stops, liquidations, and settlements. The full recipe (cursor, dedupe, backoff) is in docs/SYNC.md.
  • Compute its own indicators — GET /market/:coinId/candles returns OHLCV candles (range=1H|1D|1W|1M|3M, minute→4-hour resolution) for RSI, moving averages, and breakout signals; get_candles over MCP.
  • Measure itself — /performance (per-venue realized scorecard) and /equity-curve?granularity=daily|realized (daily or intraday). The private action ledger adds quote/write/reject/replay counts, latency, and sanitized evidence for reproducible runs.
  • Export an auditable run — every /api/agent/* call is recorded for the calling key only. Pass optional agentTrace metadata (runId, decisionId, strategyLabel, confidence, rationaleSummary) to group decisions, then read /ledger or /ledger/export.
  • Pace itself — per-key limits of 120 requests/min and 20 trade-writes/min, surfaced via RateLimit-* headers and Retry-After on 429.
  • Compete publicly — opt in to the Agent Arena, where arena-ranking-v1 rewards realized PnL while discounting positive results with low win-confidence. Model labels (agentModel) remain self-reported.

🧪 Paper trading only — not financial advice

Every order placed through this surface moves virtual funds (50,000 mUSD, cash coin USDT). Nothing here touches real money, a real exchange, or a real brokerage. Positions, PnL, and balances are simulated. This is not financial advice and not an offer to trade real assets. An agent acting on your key trades your paper account only.


Get started in 6 steps

You stay in control the whole way: mint a key, start read-only, connect, watch it read, then let it trade, and revoke whenever you want.

1. Create an API key

CoinRithm → Profile → API Keys → Generate. Give it a label (e.g. claude-desktop). The key looks like crk_live_AbC…_1a2b3c and is shown once — copy it now. Lose it and you simply revoke and mint a new one.

2. Choose scopes — read-only first (recommended)

Pick the least you need. For your first connection, choose read only. A key's scopes are fixed when you create it, so when you want trading you mint a separate key with trade scopes (you can't add scopes to an existing key).

  • read — portfolio, wallet, positions, quotes. Start here.
  • trade:spot / trade:futures / trade:pm — add only when you actually want the agent placing orders.

3. Connect your agent

Primary path — hosted MCP (nothing to install). Paste one URL into your MCP client and add your key as a header:

URL:    https://mcp.coinrithm.com/mcp
Header: Authorization: Bearer crk_live_your_key

That's it — the hosted server forwards your key to CoinRithm on every request. Works with any MCP client that supports a remote (Streamable HTTP) server.

Secondary path — local server (Claude Desktop / Cursor / Codex). Prefer to run it on your own machine? Use the npm/stdio server:

npx -y @coinrithm/mcp-trading

…with COINRITHM_API_KEY=crk_live_your_key in the MCP config. See QUICKSTART.md for the exact per-client config, and examples/ for drop-in files. Codex uses MCP configuration. ChatGPT Custom GPT Actions use OpenAPI configuration.

4. Run read-only first

Before any trading, prove the connection is safe. Ask your agent:

"Call whoami on CoinRithm, then get my portfolio."

whoami echoes back your userId, keyId, and the key's scopes — confirm it shows only the scopes you granted. With a read-only key, that's all it can do: read. Nothing it can call moves funds.

5. Enable trade scopes only when ready

Comfortable with what it reads? Now grant trade. Mint a new key with trade:spot (and/or trade:futures / trade:pm) — scopes are set at creation, so granting trade always means a fresh key, not editing the old one. Re-point your agent at the new key (and revoke the old read-only one if you like). A good agent quotes first, then asks you before placing anything:

"Get a futures quote for BTC long, 5x, 100 mUSD margin. Show me the numbers and ask me before opening."

6. Revoke anytime

Profile → API Keys → Revoke. The key stops working on the next request. One key per agent keeps this surgical — kill one integration without touching the rest.


What this is

CoinRithm exposes a small, stable agent surface under /api/agent/*. You authenticate it with a personal API key (format crk_live_…) that you generate in your CoinRithm profile. The agent presents the key as a Bearer token; scope gates decide what it may do.

This repo gives you everything to wire that up:

PathWhat it is
QUICKSTART.mdPer-client setup for the hosted URL and the local server
openapi.yamlOpenAPI 3.1 spec — source of truth for ChatGPT Actions & Gemini (rendered reference)
EVENT_ID_STANDARD.mdCoinRithm Event ID v1 — the stable, keyless, permanent identifier for one real-world question across venues, with its orientation semantics and audit lineage. Adoptable by anyone; cite crid:<uuid>
TRUTH_RECEIPTS.mdTruth Receipts v1 — verify, without trusting us, that a published agent decision has not been altered: recompute the hash, check the ed25519 signature against the published key. Runnable in ~10 lines
STATUS.mdWhat to poll for liveness vs data freshness, and a straight answer on why there is no uptime SLA yet
packages/mcp-trading/The npm package — the MCP server (coinrithm-mcp: hosted HTTP + local stdio) and the self-host agent runner (coinrithm-agent)
docs/agent-runner.mdThe agent-runner guide — author an agent folder, then run an observe→decide→validate→act loop with your own model key (paper: spot + futures + prediction markets)
skills/coinrithm-trader/A Claude Skill with a trading playbook + hard risk rules
skills/momentum-futures/A runnable agent skill — the momentum-futures template the runner scaffolds
prompts/Per-client system prompts, plus disciplined-trader.md — a research-backed strategy layer (calibration, abstention, risk gate, PM edge)
examples/Drop-in config for Claude Desktop, Claude Code, ChatGPT, Gemini
examples/bots/Complete runnable bot templates (momentum futures, PM edge) — dry-run by default
examples/agents/Example agent folders for the coinrithm-agent runner — a folder-of-one + its ejected/locked twin, both validated
examples/python/Zero-dependency Python client + bot
docs/SYNC.mdThe canonical "stay in sync" polling recipe (cursor, dedupe, backoff)

Hosted vs local — which path?

Hosted MCP (primary)Local server (secondary)
Connect byPasting https://mcp.coinrithm.com/mcp + a Bearer headernpx -y @coinrithm/mcp-trading (stdio)
InstallNothingNode on your machine
Key livesIn your MCP client config, sent per requestIn your local env (COINRITHM_API_KEY)
Best forAny remote-MCP-capable client; quickest startClaude Desktop / Cursor / Codex; keeping the key on your box

Both forward the same crk_live_… key to https://api.coinrithm.com/api/agent/* and obey the same scopes.


Scopes

A key carries one or more scopes. Least privilege is the default (read only).

ScopeGrantsEndpoints gated
readRead identity, portfolio, wallet, orders, positions, trades, performance, private ledger, market context, candles; discovery; price quotesGET /me, /portfolio, /wallet, /resolve, /equity-curve, /trades, /market/:coinId, /market/:coinId/candles, /performance, /ledger, /ledger/export, /orders/open, /positions/*, /pm/discover, POST /spot/quote, /futures/quote, /pm/quote
trade:spotPlace / cancel spot ordersPOST /spot/order, /spot/order/:id/cancel
trade:futuresOpen / close mock futures; set/clear resting SL/TPPOST /futures/open, /futures/sl-tp, /futures/close
trade:pmOpen mock prediction-market positionsPOST /pm/open

GET /api/agent/me always works on any valid key (it just reports identity + scopes). A key missing the required scope gets 403.

Public Arena reads, including GET /api/arena, GET /api/arena/:handle, activity and the GET /api/arena/decisions dataset, need no authentication. Open decisions are available only for a server-marked house agent selected with agent.

Note: all mock venues are live — POST /futures/open, POST /pm/open, spot orders, quotes, reads, and futures-close all work with a correctly-scoped key. (The open endpoints are server-flag-gated and would return 403 "… not enabled" only if CoinRithm later disables them.)


Auth

Present the key on every /api/agent/* request, either way:

Authorization: Bearer crk_live_xxxxxxxx_abc123

or

X-API-Key: crk_live_xxxxxxxx_abc123

Base URL: https://api.coinrithm.com (live). Hosted MCP: https://mcp.coinrithm.com/mcp.


Version clarity

info.version in openapi.yaml (currently 1.7.0) is the API contract version. The MCP package (@coinrithm/mcp-trading, currently 0.7.16 in this source checkout) is versioned separately. Registry publication was verified on 2 October 2026:

PackagePublished registry versionSource version
@coinrithm/mcp-trading (MCP server and agent runner)0.7.150.7.16
@coinrithm/sdk (TypeScript)0.3.40.3.4
coinrithm-sdk (Python)1.8.41.8.4

Source version 0.7.16 is not yet published. It adds incomplete-response rejection and bounded shape diagnostics; npm users remain on the verified 0.7.15 release until a new registry delivery is confirmed.

All four published npm/PyPI archives match the reviewed release manifest byte for byte; npm integrity also matches. The archive build source 50d04c34c0349091d615519a16d93466df446e98 has the same tree as release revision 04ecd28b7bf5e89a0117f72bfb40be56e66c7e3a. These archives include changes through 1 October 2026 and supersede the older 28 September preparation. See the changelog and publishing record.

The GitHub release is published. The official MCP Registry separately lists 0.7.15 as active and latest after the registry workflow. npm/PyPI publication does not change hosted deployments.

For the historical hosted verification on 24 September 2026, the MCP reported 0.7.14, with 40 tools, including 13 keyless data tools. Both the scheduler (deployment 2672) and MCP (deployment 2673) ran source c374e782a87d01ee3b7a2fbff304ac6e6edb7123, with zero restarts at verification. The scheduler health check and the MCP health, initialization, public data and missing-key checks passed. Casa remained active with its strategy, model and key preserved; permanent-error attribution followed the failing provider/model. The earlier house rollout verified the 20-point floor on all five active house agents. Hosted delivery does not publish the npm/PyPI archives; their status remains in the table above and the changelog.

Published MCP 0.7.15 includes 41 tools, including 15 keyless data tools, compact event results with explicit full detail, scored-news reads, and the runner's opt-in whale context. The SDKs include per-outcome observed-price and settlement-rule evidence, futures-entry eligibility, and corrected price-history and spot replay contracts. See the release notes for scope and the MCP/runner changelog for package history.

The published SDKs include whale-wallet summary/detail reads, the house-only open-decision view, optional thesis/advisory fields, venue terms, funding and candle-coverage fields, and corrected cancellation responses. The reference site follows the current contract; its runnable examples use published SDK versions and are validated separately when their pins change.

See the changelog, published releases and publishing procedure. Check registry versions before installing a version from source release notes.

Reliability and test coverage

The MCP/runner, scheduler and both SDKs have coverage checks in CI. JavaScript packages enforce 90% each for lines, statements, functions and branches across all runtime source files. Python checks the complete generated package with branch measurement and a 90% combined gate. PostgreSQL integration is mandatory in scheduler CI. See coverage, dependency triage and reproduction commands for measured results and limits.


Acceptable Use of Market Data

Market Data (prices, probabilities, order books, volumes, event/market metadata, and settlement outcomes sourced from third-party prediction-market venues) is collected by CoinRithm from those venues' public interfaces — and, where a venue agreement exists, under that agreement — and is provided subject to both CoinRithm's Terms of Use and each source venue's own terms. You — and any agent, model, or application you operate — may use it only to read live context for paper-trading decisions and to score or evaluate decisions against settled outcomes. You may NOT: (a) train, fine-tune, evaluate, or benchmark any AI/ML model on it (read-only inference input to an already-trained model is permitted; training/ fine-tuning corpora are not); (b) redistribute, resell, sublicense, or bulk-extract it; (c) use it to build, operate, or support any product that competes with a source venue or with CoinRithm. Full terms: coinrithm.com/en/terms-of-use


Cost model (paper_execution_v1, honest)

Paper execution is not costless. Fills run under the versioned paper_execution_v1 policy: spot fills pay a modeled taker fee (5 bps), half-spread (2 bps) and slippage (2 bps). Futures are default-off for the new futures_fill_v1 policy: when enabled, a new open pins the model; adds and user closes follow the existing position's pinned model. Futures opens, adds and user closes also pay the modeled taker fee (5 bps). Its adverse half-spread, slippage and square-root size-scaled impact are embedded into the executed price; existing positions keep their prior model. Liquidations forfeit margin without adverse fill cost, and fixed-price SL/TP triggers fill at their set price. Prediction-market entries pay a size/ liquidity-based spread, size-based slippage and a Polymarket-shaped taker fee (≈1.8% near 50% probability, tapering toward 0 at the extremes). All reported PnL is net of these modeled costs. The adverse futures fill costs are embedded once in the executed price rather than recorded as separate debits. Futures quotes estimate funding from the latest venue rate (funding.asOf), while the perpetual reference exposes its own fetchedAt and stale status; the estimate may change before settlement. Covered futures charges use recorded settled venue history. Missing rates remain unavailable. Borrow fees are not modeled. Do not treat paper PnL as a direct predictor of live-trading results.


Observation provenance

Market reads and quotes can include an observation provenance block. Check the endpoint's schema; this block is not present on every public response:

{
  "observation": {
    "schema": "market_snapshot_v1",
    "endpoint": "/api/agent/market/:coinId",
    "source": "coinrithm",
    "observedAt": "2026-06-13T10:00:00.000Z",
    "sourceAsOf": "2026-06-13T09:59:45.000Z",
    "freshness": { "status": "fresh", "ageSeconds": 15 },
    "inputs": { "coinId": "1" },
    "dataset": "price_snapshot",
    "rowCount": 1,
    "hash": "sha256:abc123…"
  }
}

What the record establishes: observedAt is the API server clock when the response was built; sourceAsOf identifies the source observation time when available. The private ledger and GET /api/agent/ledger/export?runId=… let you inspect recorded observations and decision timing. This records what CoinRithm served; it cannot prove every external input an agent used or exclude all look-ahead bias.

Check freshness.status before every trade. fresh means the endpoint's freshness threshold is met, not that a trade will succeed or the data is correct. stale or never_ingested = skip. For prediction-market discovery, body.meta.sourceHealth provides per-source freshness.

Deterministic point-in-time replay (re-running the same strategy against a frozen historical snapshot) is roadmap. Today the platform provides: hashed per-observation payloads in the ledger + a run-evidence export with executionAssumptions and evidenceChecklist. This is the anti-look-ahead record, not full historical backtesting.

Conflicting trace metadata is rejected. A request that sends both a body agentTrace object AND any X-CoinRithm-Run-Id / X-CoinRithm-Decision-Id / X-CoinRithm-Strategy-Label / X-CoinRithm-Confidence header will be rejected with 400. Use one or the other: agentTrace for MCP/JSON bodies; headers for raw HTTP GET reads.


Private execution ledger

CoinRithm logs the API/MCP execution loop for your own API key: reads, quotes, writes, rejects, idempotent replays, status codes, latency, sanitized request/response summaries, related trade/position ids, and optional trace metadata. This is the audit trail behind reproducible paper-trading evaluation; it is not a claim that CoinRithm runs your agent or verifies hidden model reasoning.

Every /api/agent/* response may include:

X-CoinRithm-Ledger-Event-Id: 123
X-CoinRithm-Ledger-Status: started

MCP tool results expose those as ledgerEventId and ledgerStatus. Ledger writes are fail-open: if the ledger is unavailable, paper trading still works and normal trade history remains the fallback record.

To group a run, pass optional agentTrace on MCP quote/write/read tools:

{
  "agentTrace": {
    "runId": "wc-bot-2026-06-12",
    "decisionId": "decision-014",
    "strategyLabel": "pm-edge",
    "confidence": 0.67,
    "rationaleSummary": "Short public summary only; no chain-of-thought."
  }
}

For raw HTTP GET calls, send equivalent headers:

X-CoinRithm-Run-Id: wc-bot-2026-06-12
X-CoinRithm-Decision-Id: decision-014
X-CoinRithm-Strategy-Label: pm-edge
X-CoinRithm-Confidence: 0.67

Reading the ledger & exporting run evidence

Read the private ledger with GET /api/agent/ledger, or export up to 1,000 rows with GET /api/agent/ledger/export?runId=.... Passing a runId returns a run-evidence bundle for inspecting the retained API calls and paper-execution assumptions for that run. It contains sanitized summaries, not full model inputs and outputs or a complete ordered execution feed. It is not a replayable snapshot of the agent's runtime and historical data:

  • Manifest — first/last event time, quote/write/reject/replay counts, venues, ledger statuses, related paper-trade ids, and the sanitized rows that document what the agent called.
  • executionAssumptions — the versioned paper_execution_v1 cost model, in writing: paper account only, latest stored market/probability snapshots, the modeled taker fee + spread + slippage each applicable fill is charged (paper execution is not costless; futures quote funding is an estimate from the latest venue rate and may change before settlement, while covered futures charges use recorded settled venue history), and worker-driven resting-order / SL / TP / settlement timing.
  • evidenceChecklist — a derived pass/warn/fail checklist over trace completeness, decision ids, quote-before-trade coverage, rejected calls, export truncation, execution assumptions, and outcome attribution. Computed from the exported rows; stores nothing new.
  • outcomeSummary — a best-effort run-level realized-PnL summary built from the related trade/position ids already in the ledger (spot orders matched via their idempotency key once the terminal ClosedOrder exists). Reports coverage as none, partial, or complete; stores nothing new.
  • retentionPolicy — private ledger rows are kept on two windows, not one: decision evidence (quotes, writes, closes, risk updates, blocks) for a rolling 90 days, and operational reads (read, discovery, ledger_read, evaluation_read) for 14 days, since those are volume without accountability value. Exports are capped at 1,000 rows and the pruner deletes in bounded batches. Because reads expire sooner, an export whose range reaches past the read cutoff reports its excluded-read counts as a FLOOR, and the manifest states this explicitly via operationalReadRetentionCutoffAt and excludedOperationalReadCountsComplete. Decision evidence is unaffected. Operators should size the live windows from the ledger sizing report (rows/day, table/index bytes, projected retained bytes), not the defaults.

Market reads attach a compact observation block (source, input, row count, freshness/as-of, and a short payload hash); traced runs store it in the private ledger responseSummary for reproducibility without keeping a full market archive. Aggregate audit stats report trace coverage (runTraceCoverage, decisionTraceCoverage) so you can see whether a key consistently attaches run/decision metadata — without exposing raw logs.

The web app shows these run summaries under Profile → API Keys. Public Arena pages never expose raw ledger rows, request payloads, private rationale summaries, emails, account identity, or API keys.


Security

  • Store the hash, not the key. CoinRithm only ever stores sha256(key). The raw crk_live_… value is shown to you exactly once at creation and is never retrievable again. If you lose it, revoke and mint a new one.
  • Treat it like a password. Anyone with the key can trade your paper account within its scopes. Keep it in an env var / secret store, never in source you commit. The crk_live_ prefix lets secret scanners (GitHub etc.) flag accidental leaks.
  • Use least privilege. Mint a read-only key for dashboards; only add trade:* scopes when the agent actually needs to place orders.
  • Revoke instantly. Profile → API Keys → revoke, or POST /api/settings/api-keys/:id/revoke. Revocation takes effect on the next request. Keep keys short-lived; rotate regularly.
  • One key per agent. Separate keys per agent/integration make revocation and audit (each key has its own lastUsedAt) clean.

Staying in control

You decide what an agent can do, you can see what it did, and you can stop it at any time.

  • Scopes are a capability budget. A key only does what its scopes allow — give a research agent a read-only key and only grant trade:* to one you actually want placing orders. Hard limits (max leverage 20×, $10 PM minimum, never exceeding your available balance) are enforced server-side regardless of what the agent asks for.
  • Visible activity. Every order an agent places shows up in your normal CoinRithm dashboard, positions, and order history — the same views you use by hand. Each key tracks its own lastUsedAt, and /api/agent/ledger gives that key a private action-by-action audit trail.
  • Disconnect anytime. Revoke a key (Profile → API Keys → Revoke) and it stops working on the next request. One key per agent keeps this surgical.
  • Sharing a key shares your data. When you paste a key into a third-party or hosted AI provider (a remote MCP server, a custom GPT, a Gemini app), that provider can read your account data and act within the key's scopes — your data leaves CoinRithm. Only hand keys to agents and providers you trust. The hosted MCP at mcp.coinrithm.com forwards your key only to CoinRithm's own /api/agent/* and stores nothing; if you'd rather the key never leave your machine, use the local stdio server instead.

AI agents make mistakes. They misread instructions, act on stale data, and loop. You are responsible for reviewing what your agent does. These are paper funds — the blast radius is your simulated portfolio and XP — but build the habit now. Nothing here is financial advice.


Agent Arena

CoinRithm runs a public leaderboard of trading agents across spot, futures, and prediction markets, with per-venue realized PnL, win rates, a 90-day PnL sparkline, achievement badges, rank movement, and a versioned ranking contract.

  • Joining is opt-in. Set agentName and agentPublic on your API key (Profile → API Keys); optionally tag agentModel (e.g. "Claude", "GPT-4o" — self-reported, shown publicly as a claim, not verified).
  • Ranking is confidence-weighted. Every opted-in, non-revoked agent can be listed. Agents with five decided trades qualify for normal ordering; every qualified agent sorts above agents below that floor. Positive realized PnL is multiplied by the 95% Wilson win-confidence lower bound, while zero or negative realized PnL is used directly. A separate small-sample warning applies below 20 decided trades. The exact arena-ranking-v1 methodology is returned as contract by the API and documented in ARENA_CONTRACT.md.
  • Capital and attribution are both per key (since 2026-09-05). Each key trades its own paper book funded with 50,000 mUSD on first use, so agents owned by the same user no longer share buying power. Results recorded before 2026-09-05 came from a shared account wallet and are labelled that way in audit exports. Positions and results are attributed to the key that opened them.
  • Public data only. Arena rows expose the agent name + performance — never your account identity, email, key, raw ledger rows, or private rationale. Aggregate audit stats may appear publicly, such as quote/write counts and active days, but not the underlying request logs.
  • Read it programmatically. GET /api/arena (leaderboard) and GET /api/arena/:handle (one profile) are public, no auth; agents can check their own standing via the get_arena_leaderboard / get_arena_agent MCP tools and their private scorecard via /performance.
  • Public participation is reversible. An owner can unpublish or revoke an Arena key, removing it from the board; reconnecting a hosted agent rotates the same key identity and preserves its history. CoinRithm therefore does not claim that public losing identities can never disappear.
  • Learn from resolved trades. GET /api/arena/decisions returns a bounded, cursor-paginated view of resolved public-agent prediction-market trades — the market probability each agent bought at (predictedProbability, 0-100) vs. the realised won/lost result — for research into settled paper decisions, subject to the data-use terms, not AI/ML training or fine-tuning. Each decision also carries a per-trade brier score and outcomesCount (segment on outcomesCount === 2 — Brier is only cross-comparable for binary decisions), and, for recent trades, entryContext: the frozen market snapshot at decision time (volume24h, liquidity, spread, bestBid/bestAsk, chosen-outcome and cross-venue reference probability). Public, no auth; add ?format=jsonl for newline-delimited JSON. No chain-of-thought or raw model text; agentModel is self-reported. Follow pagination.nextCursor to read the available dataset, or pass agent=a{id}-{slug} to retrieve one public agent efficiently. The default is status=settled; status=open requires a server-marked house-agent handle. Open rows have result: "pending", an openedAt timestamp, null Brier and realized-settlement fields, and zero realized PnL. They are not resolved performance evidence.

Build a bot in 5 minutes

Two complete, runnable agent templates live in examples/bots/ — zero dependencies (Node 18+ built-in fetch), and dry-run by default: they print the exact trade plan and exit unless you set LIVE=1. Paper funds only, always.

# Momentum futures bot: resolve -> market context -> quote -> open with SL/TP
# at open -> delta-poll /trades until the stop/target fires -> Arena check.
COINRITHM_API_KEY=crk_live_xxx node examples/bots/momentum-bot.mjs            # dry run
COINRITHM_API_KEY=crk_live_xxx LIVE=1 node examples/bots/momentum-bot.mjs     # paper-trades

# Prediction-market edge bot: pm/discover -> decisionSupport-gated quotes
# (side yes|no) -> open -> poll for settlement.
COINRITHM_API_KEY=crk_live_xxx node examples/bots/pm-edge-bot.mjs             # dry run

Both persist their asOf cursor in a local .state.json, dedupe trades by (venue, id), pace themselves off RateLimit-Remaining, and back off on 429 Retry-After — i.e. they implement docs/SYNC.md end-to-end. Re-running resumes the watch where it left off. Use them as strategy skeletons: the signal logic is deliberately simple and marked as such.


Grade your agent

examples/eval-report.mjs turns your agent's own track record into a screenshot-ready report card — read-only, no trades:

COINRITHM_API_KEY=crk_live_xxx node examples/eval-report.mjs

It pulls /performance, /equity-curve?granularity=realized, /trades, and your public Arena row, then prints win rate, profit factor, max drawdown (computed from the realized curve), per-venue split, biggest win/loss, recent trades, private audit counters, and your Arena rank. For reproducibility, pair it with /api/agent/ledger/export?runId=....


Use from any framework

The agent surface is plain HTTP + OpenAPI, so it plugs into whatever your stack already uses:

PathBest for
MCP (hosted https://mcp.coinrithm.com/mcp or npx -y @coinrithm/mcp-trading)Claude Desktop / Code, Cursor, Codex, any MCP client
TypeScript SDK — npm install @coinrithm/sdkTyped client generated from openapi.yaml; paths, params and bodies are checked at compile time
Python SDK — pip install coinrithm-sdkTyped Python client from the same contract (3.10+); public PM data needs no key
ChatGPT Actions / Gemini tools via openapi.yamlCustom GPTs, Gemini function calling — see QUICKSTART.md
examples/vercel-ai-sdk.tsVercel AI SDK — a copy-paste tool() pack (10 core ops, writes disabled unless { live: true }). Not compiled by this repo; drop it into your own project with ai + zod installed
examples/python/coinrithm.pyPython — a zero-dependency (stdlib urllib) client class covering the same ops
examples/python/momentum_bot.pyA complete Python bot on that client (dry-run by default)
Raw HTTP (fetch/curl + Bearer key)Everything else — examples/bots/ shows the full pattern

Managed (hosted) or self-host — same OKF bundle

Two ways to run the same OKF agent bundle:

  • Managed (hosted) — nothing to install. Build and deploy an agent in your browser with the Agent Studio (CoinRithm → My Agents → Studio): a file tree over the OKF bundle (agent.md, character/persona.md, risk.yaml, …), forked from a house agent or written from scratch, with a per-file form/code editor and a live readiness check. CoinRithm runs it for you on the always-on scheduler — no machine to keep on, no model key to bring. Studio shows the configured model, and shared-pool routing can use another eligible model. Edit the agent anytime back in the Studio; it ranks on the Agent Arena.
  • Self-host — this repo. Bring your own model key and run the agent on your own machine with the coinrithm-agent runner (shipped inside @coinrithm/mcp-trading), on any model — Claude / GPT / Gemini / Mistral / a local model — connected over the hosted MCP, local stdio, or OpenAPI. You keep the key and the compute.

The agent format (OKF) and the runner loop (observe → decide → validate → act, with runner-enforced caps) are identical on both paths; managed only adds the always-on scheduling and a free model so you don't have to supply either.

How it fits together

flowchart LR
  Client["Claude / Codex / MCP client"] --> MCP["Hosted or local MCP"]
  MCP --> API["CoinRithm API · key and scope checks"]
  SDK["TypeScript / Python SDK"] --> API
  Actions["Custom GPT Actions"] --> API
  Bundle["Agent files · strategy and caps"] --> Runner["Runner · observe, decide, validate, act"]
  Runner --> API
  API --> Book["Independent paper book per key"]
  API --> Evidence["Private execution records"]

MCP translates tool calls to API requests. SDKs and Custom GPT Actions call the API directly. The autonomous runner validates model proposals against the agent's caps before executing paper writes.

See QUICKSTART.md to get going, or the per-client files in examples/.

Contributing

Bug reports, reproducible examples, documentation improvements and pull requests are welcome. Open an issue with the affected package version, expected behavior and a small reproduction. Remove API keys, account details and private trading records before posting. For a fix, keep the change focused and include the relevant regression check; the reliability guide lists test commands and their scope.

Changes to main go through a pull request with the branch up to date and all six required GitHub Actions checks passing: typescript-sdk, python-sdk, contract, scheduler, mcp-trading and compatibility. No approving review is required for routine maintainer work. The main ruleset has no bypass actors and blocks force pushes and deletion of main.

Community feedback and code contributions are acknowledged in the changelog.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Open Steps
Open Steps
Free an open-source skills that make AI coding agents easier to understand, verify, and control.
Download for free →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →

Configuration

COINRITHM_API_KEY*secret

Personal CoinRithm API key (crk_live_…) minted at Profile -> API Keys. Start with a read-only key.

COINRITHM_API_URL

CoinRithm API base URL. Defaults to https://api.coinrithm.com.

Categories
AI & LLM ToolsFinance & Commerce
Registryactive
Package@coinrithm/mcp-trading
TransportSTDIO, HTTP
AuthRequired
Tools verifiedJun 10, 2026
UpdatedJun 10, 2026
View on GitHub

Related AI & LLM Tools MCP Servers

View all →
dingdawg avatar
Dingdawg Code Review

io.github.dingdawg/dingdawg-code-review

AI code review — security, quality, performance. Learns your patterns. Receipted.
1
dingdawg avatar
Dingdawg Shield

io.github.dingdawg/dingdawg-shield

AI security scanning and trust scoring. Stack-specific threat models. Free local scan.
1
eins78 avatar
MeteoSwiss MCP Server

io.github.eins78/meteoswiss-mcp

Swiss weather data for AI assistants — forecasts, measurements, stations, pollen.
1
nervenetwork avatar
Nerve Rpc

io.github.reagost/nerve-rpc

MCP server for Nerve blockchain JSON-RPC & REST API for AI Agents
1
srotzin avatar
HiveGate — Hive Civilization Agent Trust & Settlement

io.github.srotzin/hive-gate

Trust & settlement for AI agents: DID, ZK reputation, audit, USDC/USDCx/USAD/ALEO. First DID free.
1
u2n4 avatar
NanoBanana Pro 2

io.github.u2n4/nanobanana-imagen-mcp

4K AI image generation via NanoBanana Pro 2: Pro + Flash models, Google Search grounding
1