Connect
By URL
No install. Add a connector that points at the server.POST and every
answer is one JSON body; nothing streams. The server keeps no session, so
2025 clients and 2026-07-28 clients both work against the same URL.
From source, over stdio
The package is@basestonk/mcp and its binary is basestonk-mcp. It is
not on npm. To run it locally, clone the repository and point the client
at the source file with Bun:
bun run --filter @basestonk/mcp build writes dist/cli.js, which runs
under Node 18 or later. The stdio server serves the same tools as the URL.
Read tools
Every tool is annotated read-only, non-destructive and idempotent, and returns typedstructuredContent beside its text, checked against a
declared output schema. chain is base (the default), robinhood or
arc wherever it appears.
token is an address or a ticker such as BSTONK or $GROK. An address
is exact. A ticker that several launches share is not picked for you:
the tool answers with the candidates, marks the official one and any
flagged as impersonating, and asks to be called again by address.
draft_trade’s amount is in units of the pair token, not dollars,
unless the pair is a stablecoin. Fifty on a wtCOIN pair is fifty wtCOIN.
draft_launch refuses a pair that check_pair would refuse, and sends
the pair to the create page as an address, never a ticker. A pair is
permanent after launch. With template, the preset sets the pair and the
taxes; do not pass pair as well.
How to read the answers
- Market caps are fully diluted: price times the whole supply.
null, or “not known” in the text, means unknown. Never read it as zero.- Token amounts carry
raw,decimals,wholeandsymbol. Do arithmetic onrawanddecimals. - Fees are nested and stated as the contract stores them:
burnBpsOfCreatorShareandliquidityBpsOfCreatorShareare shares of the creator’s cut,rewardsBpsOfRemaindera share of what is left. - Dividends are paid in kind, as a basket of other assets.
basestonk://guide/honesty resource holds these rules in full.
The draft loop
A chat app cannot sign. The read server hands the signing to the person and then checks what happened.bsi1_ and carries the draft itself, so nothing is
stored server side. It stops being checked seven days after the draft.
Cards
In a host that renders MCP Apps, three tools draw a card fromui://basestonk/app.html. A host that does not ignores it and reads the
text.
The card loads nothing from the network. Its content security policy
lists no domains; every number arrives in the tool result.
Prompts and resources
Each prompt attaches the honesty guide before its instructions.
The server sends cache hints: the tool, prompt and resource lists for ten
minutes, a resource read for ten seconds. On the agent tier the tool list
is marked private, because it names your wallet.
The agent tier
/mcp/agent is the read server plus three tools that act for one wallet.
chainId is 8453 (Base, the default) or 4663 (Robinhood Chain). The
inputs are the ones the prepare endpoints
take; in the OpenAPI document each of those operations names the tool that
calls it under x-mcp-tools.
A prepare tool answers with:
Sign in
A host that supports MCP authorization, such as Claude or ChatGPT, signs in with a button.- Add
https://api.basestonk.io/mcp/agentas a connector. - The host sends you to
basestonk.io/connect-agent, which names the app and where it will return you. - Connect your wallet and approve. The wallet signs
agent:oauthover that app and that one request. Nothing else can spend the signature. - You return to the app, which now holds a token for your wallet.
{"scopes":["read","prepare"]} at POST /api/v1/agent/session
(how), or through
Sign-In with Ethereum with
the prepare scope named in the message, and send it as
Authorization: Bearer <token>.
What the agent can and cannot do
How long it lasts
For client developers
A client identifies itself one of two ways. A Client ID Metadata
Document:
client_id is a plain https URL on a public host whose JSON
names itself as client_id and lists redirect_uris, fetched within five
seconds and ten kilobytes. Or dynamic registration at /oauth/register
with 1 to 5 redirect_uris, each https or loopback http, no fragment.
An authorization code is single use and lasts 60 seconds. The redirect
carries code, your state, and iss.
Signing what an agent prepared
signUrl opens https://basestonk.io/sign#… with the transaction in the
URL fragment, so no server sees or stores it. The page:
- refuses anything not addressed to a launcher or router the site itself uses
- shows the call decoded from the bytes, never the agent’s description of it
- simulates the first step from the prepared-for wallet before you sign
- refuses to send from any other wallet, or after
expiresAtBlock - sends the approval first, then the transaction, and links the new token after a launch
Limits and errors
The reads a tool makes underneath spend your own API budget,
not a shared one.
prepare_launch and prepare_trade cost 10 units each.
A refused request reaches the model as a tool error, never as an empty
answer:
At the HTTP layer:

