InkyPump ships a Model Context Protocol server so that an LLM client (Claude Code, Codex CLI, Cursor, etc.) can create tokens, preview launch economics, and read live launch state through structured tools — without leaving the editor.Documentation Index
Fetch the complete documentation index at: https://docs.inkyswap.com/llms.txt
Use this file to discover all available pages before exploring further.
The MCP signs
createLaunch transactions with a hot wallet whose private key the operator supplies. Always load a burner wallet with only enough ETH for prebuys + gas. Writes are off by default — you must opt in explicitly per environment.Tools
| Tool | Purpose |
|---|---|
launch_token | Broadcasts createLaunch / createLaunchWithReferral on the InkyPump V2 hook. Requires explicit confirm + writes opt-in. |
preview_launch | Dry-run: resolves on-chain params and reports expected creator-fee economics. No transaction. |
wallet_info | Returns the MCP signer address and its current Ink ETH balance. |
recent_launches | Fetches recent V2 launches. Returns a sanitized, allowlisted field set. |
launch_status | Reads getLaunchState(launchId) and reports funding progress. |
Install
The MCP is published to npm as@inkyswap/pump-mcp; source lives at InkySwap/pump-mcp. npx handles the install and update for you — no clone or build required.
Stash the burner key in a 0600 file
Environment
| Variable | Default | Required | Purpose |
|---|---|---|---|
INKYPUMP_MCP_PRIVATE_KEY_FILE | — | one of these two | Path to a chmod 600 file containing the hex private key. Preferred. |
INKYPUMP_MCP_PRIVATE_KEY | — | one of these two | Raw hex private key. Stored plaintext in your MCP config — only use if that config is encrypted. |
INKYPUMP_MCP_ENABLE_WRITES | false | yes for launch_token | Must be true / 1 / yes to permit broadcasting transactions. |
INKYPUMP_MCP_MAX_PREBUY_ETH | 0.1 | no | Per-call cap on prebuyEth. Operator hard limit. |
INKYPUMP_MCP_MAX_RAISE_ETH | 5 | no | Per-call cap on targetRaiseEth. Defaults to the contract max. |
INKYPUMP_MCP_RPC_URL | https://rpc-gel.inkonchain.com | no | Override the Ink RPC endpoint. Rejected if it contains userinfo, query, or fragment. |
INKYPUMP_BASE_URL | https://inkypump.com | no | Origin used to build trade URLs and call /api/tokens/recent-v2. Must be an origin (no path). |
Safety model
The MCP signs on-chain transactions, so it’s treated as a hot-wallet boundary. Defense in depth, in order:Writes opt-in
launch_token refuses unless INKYPUMP_MCP_ENABLE_WRITES=true. The read-only tools always work.Explicit confirm
Every
launch_token call requires confirm: "YES". The LLM must include it deliberately — hallucinated calls fail closed.Operator spend caps
MAX_PREBUY_ETH and MAX_RAISE_ETH clamp every call regardless of what the LLM passes.Error sanitizing
Tool errors are stripped of long hex blobs (signed-tx payloads) and URL credentials before being returned to the model.
Untrusted input handling
recent_launches allowlists fields, clips strings, and tells the model the data is creator-controlled.URL validation
Image / social URLs must be
https://, must not point at localhost, *.local, or private IPv4 / IPv6. Once on-chain these fields are permanent.Example session
launch_token parameters
Token display name (1-48 chars).
Ticker symbol without
$ (1-12 chars).Short pitch (1-500 chars).
Public square image.
localhost, *.local, private IPs, and non-https are rejected.1-5 ETH. Bounded further by
INKYPUMP_MCP_MAX_RAISE_ETH.Must be the literal string
"YES". This is the final-write gate.Optional. Empty string disables.
Optional. Empty string disables.
Optional. Empty string disables.
End/start price ratio. 1 = fair launch, 21 = contract max.
Creator share of variable fee in bps. 5000 = 50/50 with burn, 10000 = all creator.
Anti-snipe duration. 0 disables.
Unix start timestamp. 0 = launch immediately.
Creator prebuy. Must be ≤
targetRaiseEth and ≤ INKYPUMP_MCP_MAX_PREBUY_ETH.Optional. Alphanumeric (with
- / _), 1-64 chars.Contract surface
launch_token calls these functions on the InkyPumpHook contract:
createLaunch(CreateLaunchParams)whenreferralCodeis emptycreateLaunchWithReferral(CreateLaunchParams, string)otherwise