Overview
How to connect to the MCP server, how an agent authenticates, and what the 19 tool categories cover.
The Putty API hosts a Model Context Protocol server on the same process that serves the HTTP API. Any MCP client — Claude Code, Cursor, the MCP CLI, a custom integration — connects to it and calls the tools the server exposes.
Connecting
The server is reached on a dedicated subdomain. The transport lives at /mcp on
https://mcp.putty.wtf, and it is Streamable HTTP: send a POST with a JSON-RPC
body and an Accept header listing both application/json and
text/event-stream.
POST https://mcp.putty.wtf/mcp
Authorization: Bearer sk-…
Content-Type: application/json
Accept: application/json, text/event-stream
{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}The same origin serves the REST view of the same list at GET /mcp/tools, which
returns every tool with its full input and output schema, plus a categories
array and a subcategories array in first-registration order.
Authentication
Send your sk- key as the bearer. It is the same key the HTTP API uses: mint one
from the dashboard at putty.wtf/app/api-keys,
or over the API at POST /account/api-keys. The full flow is on the
Quick start page.
Two caller flavours are accepted, and the tool set does not change between them:
- A Privy access token from a dashboard session.
- An
sk-API key minted from one.
Some tools need more than an API key. Anything scoped to a wallet resolves a
Privy DID first, so a caller holding only an sk- key gets a clear refusal
rather than a call against nobody's wallet.
The server is stateless
There is no session to establish: a client that only needs to discover or call
tools can skip the initialize round-trip. A fresh server and transport are
built per request, so two concurrent callers cannot cross responses — including
two clients that both start at JSON-RPC id 1.
The 19 categories
| Category | Tools | What it is |
|---|---|---|
| Agent | 2 | list the caller's agents, report what they spent |
| Blockchain | 18 | read an EVM chain (RPC) and plan a trade against it (DeFi) |
| Brand | 4 | draft, save, read, and apply a brand kit |
| Catalog | 3 | search for a reusable block before writing one, install it, list what is installed |
| Community | 1 | check a wallet against a community's token |
| Contracts | 1 | the contract studio's preset catalogue |
| Creator | 4 | list, read, create, and patch a drop |
| Dexscreener | 11 | pair listings and discovery from the Dexscreener REST API |
| Hooks | 2 | the Uniswap v4 hook catalogue, and the unsigned draft of a deployment |
| Launch | 2 | start a Launch Kit as ten linked runs; write a token launch into a project's onchain seam |
| Media | 8 | generate, edit, and compose brand assets as tracked jobs |
| Onchain | 2 | simulate a transaction, read a signing request's status |
| Privy | 13 | the caller's own user, wallets, wallet actions, and transactions |
| Project | 9 | read, write, run, verify, and export a project's sandbox |
| Research | 6 | asynchronous web and social research, read back by job id |
| Scan | 1 | everything a buyer is being scammed by, for one token |
| Social | 6 | connect an account and draft a post — never publish |
| Trust | 1 | a token's trust setup, as a holder reads it |
| Verify | 2 | verify a contract and get one label |
That is 96 tools across 19 categories, in that registration order — the
order GET /mcp/tools returns them in, and the order the sidebar below lists
them.
A category may carry subcategories for a finer grouping, and the categories and
subcategories arrays of GET /mcp/tools are the source of truth. Blockchain
splits into RPC and DeFi; Privy into Users, Wallets, Actions and
Transactions; the rest are one subcategory each.
What a tool will not do
Some things a module can do are not reachable from a tool, and the omission is a decision rather than a gap. Putty's only gate for work that costs money, needs a key, publishes something irreversible, or reads a credential is the run approval path: a step the plan marks as paid does not run until a person says yes. A direct MCP tool call has no run and therefore no approval to ask through, so any operation behind that gate is absent from this registry rather than exposed without a way to ask. The three that come up most:
| Not exposed | Why | Where it really is |
|---|---|---|
| Contract generation | debits credits for the generate, the compile, and the tests together | the deploy path, with an approval |
| Minting an edition | opens a real payment session | POST /creator/drops/{dropId}/mint |
Publishing a drop (status: "live") | makes a mint page publicly reachable, irreversibly | PATCH /creator/drops/{dropId} |
| Running a command in a community chat | sends a message to Discord or Telegram on a user's behalf, with no recall | the Community Kit's bot |
Every tool that IS here is either free or returns unsigned calldata the user still has to sign. A tool that spent without asking would be worse than a missing one.
When a tool fails
A tool that fails comes back as a normal result carrying isError: true and a
message naming what went wrong — not as a JSON-RPC protocol error. An upstream
credential that is missing, a record that belongs to someone else, and a record
that does not exist all read the same way on purpose: a tool is not an id oracle.