Skip to content
Build / MCP server

MCP server

Beta

Connect an AI agent to NoFomo over the Model Context Protocol: read markets and clusters, and build transactions it signs itself.

Remote or local

Remote: POST /api/mcp

Your agent

Claude, or any MCP client

NoFomo MCP (stateless)

reads + transaction builders

Your wallet signs

the server never sees a key

Local: nofomo-mcp (stdio)

Your agent

spawns the package on your machine

nofomo-mcp

calls the same API, checks your spend limits

Robinhood Chain

the key never leaves your machine

FigureEither way, NoFomo never holds a key. Remote returns unsigned transactions; local signs on your machine, inside limits you set.
RemoteLocal
EndpointPOST /api/mcp, Streamable HTTP, statelessnofomo-mcp over stdio
Writes returnA PreparedTx for a wallet to signA sent transaction hash, signed locally
KeysNoneNOFOMO_AGENT_KEY, only on your machine
Best forResearch, monitoring, agents that hand transactions to a human or a walletAgents that act on their own, inside a spend limit

Connect

Terminal
claude mcp add --transport http nofomo https://nofomoagent.com/api/mcp

Use a fresh wallet as the agent key, funded with only what the agent should be able to spend. Never paste a main wallet's key into a config file.

Tools

Amounts are decimal ETH strings like "0.01", ids look like current-3, and results use the same shapes as the API.

Read

  • find_markets

    Search stock and Pons markets by symbol, name or address; filter by kind.

    kind?, query?, sort?, limit?

  • get_market

    One market: price, reserve, capacity per ceiling, open cluster.

    market

  • list_clusters

    Clusters, newest first, filtered by status, market or wallet.

    status?, market?, wallet?, limit?

  • get_cluster

    One cluster with its participants and, once cleared, its result.

    id

  • get_execution

    One mandate execution with its per-allocator fills.

    id

  • get_stats

    Network totals: clusters cleared and forming, capital, wallets, mandates.

    no arguments

Transaction builders

On the remote server these return a PreparedTx: { chainId: 4663, to, data, value, description }. The description is written for the signer and always notes that the contracts are unaudited. Builders validate against live chain state, so a transaction that comes back is one the contract would accept at that moment.

  • submit_intent

    Join the open cluster for a market, or open one if none is forming.

    market, amountEth, windowSec?, ceilingBps?

  • join_cluster

    Join a specific forming cluster.

    clusterId, amountEth

  • cancel_intent

    Leave a cluster before it closes, for a full refund.

    clusterId

  • clear_cluster

    Crank a closed cluster. Permissionless; costs only gas (send the suggested gas).

    clusterId

  • claim

    Claim tokens and any refund; retrieves parked stock tokens; forWallet pushes another's claim.

    clusterId, wallet?, forWallet?

  • arm_mandate

    Arm a mandate behind an originator with caps, ceiling, expiry and V2 scope.

    originator, amountEth, perExecEth, dailyCapEth, ceilingBps, expiry?, market?, maxSpotEth?

  • revoke_mandate

    Revoke a mandate and return its balance.

    mandateId

Local signer and spend limits

The local package calls the same public API, then signs and sends with NOFOMO_AGENT_KEY. Before signing, it checks two limits you set:

VariableMeaning
NOFOMO_AGENT_KEYPrivate key of the agent wallet. Never sent anywhere.
NOFOMO_MAX_ETH_PER_TXLargest ETH value the agent may send in one transaction.
NOFOMO_MAX_ETH_PER_DAYTotal ETH the agent may send per day.

These are local safety rails on top of the onchain ones (a cluster's ceiling, a mandate's caps). For an agent that spends someone else's capital, prefer a mandate: its limits are enforced by the contract, not by software on one machine.

A typical session

  1. find_markets with tradable: true to see what can be cleared, and get_market for capacity at the ceiling you want.
  2. submit_intent with a market and an amount. It joins the forming cluster, or opens one.
  3. get_cluster to follow it. Change your mind before close with cancel_intent.
  4. After close, clear_cluster if nobody has yet, then claim.

Cookie settings

Choose what we may store on this device. You can change this at any time from the footer.

  • Strictly necessary

    Needed for the site to work and to remember your choices here, and to keep a wallet connection you started. These can't be switched off.

  • Preferences

    Remember interface choices such as dismissed hints and layout settings. We don't set any preference storage today; this switch covers it if we add some.

  • Analytics

    Aggregate, privacy-respecting measurement of how pages are used, so we can improve them. No analytics run today, and none will run unless you allow them here.

Full list of every cookie and storage key: cookie policy.