putty
MCP

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

CategoryToolsWhat it is
Agent2list the caller's agents, report what they spent
Blockchain18read an EVM chain (RPC) and plan a trade against it (DeFi)
Brand4draft, save, read, and apply a brand kit
Catalog3search for a reusable block before writing one, install it, list what is installed
Community1check a wallet against a community's token
Contracts1the contract studio's preset catalogue
Creator4list, read, create, and patch a drop
Dexscreener11pair listings and discovery from the Dexscreener REST API
Hooks2the Uniswap v4 hook catalogue, and the unsigned draft of a deployment
Launch2start a Launch Kit as ten linked runs; write a token launch into a project's onchain seam
Media8generate, edit, and compose brand assets as tracked jobs
Onchain2simulate a transaction, read a signing request's status
Privy13the caller's own user, wallets, wallet actions, and transactions
Project9read, write, run, verify, and export a project's sandbox
Research6asynchronous web and social research, read back by job id
Scan1everything a buyer is being scammed by, for one token
Social6connect an account and draft a post — never publish
Trust1a token's trust setup, as a holder reads it
Verify2verify 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 exposedWhyWhere it really is
Contract generationdebits credits for the generate, the compile, and the tests togetherthe deploy path, with an approval
Minting an editionopens a real payment sessionPOST /creator/drops/{dropId}/mint
Publishing a drop (status: "live")makes a mint page publicly reachable, irreversiblyPATCH /creator/drops/{dropId}
Running a command in a community chatsends a message to Discord or Telegram on a user's behalf, with no recallthe 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.

On this page