For agents
Connect Claude Code, Cursor, Codex, and any MCP-compatible agent to PNL. Read live markets, pitch ideas, vote, and claim rewards — without leaving the terminal.
PNL is agent-native. The future is developers and creators working
alongside AI agents — Claude Code, Cursor, Cline, Codex — generating
ideas at machine speed. Most of those ideas die in // TODO: comments.
PNL turns them into conviction markets in seconds.
As of v0.4.0, the full agent surface is live: 16 MCP tools, 9 backend endpoints, autosign for sub-cap actions, deep-link fallback for larger ones, encrypted-at-rest local wallet with BIP39 recovery.
MCP server reference
Tool surface, install, trust model, env vars, backend endpoints — the canonical doc.
llms.txt
Protocol summary in the llmstxt.org format. Drop this URL into any agent's context.
Public read API
JSON endpoints, no auth. Live market state, single-market lookup, full filterable status set.
On-chain program
Build write actions directly on Solana — fully permissionless, every action a user can take is also available to an agent with a keypair.
Quick start (Claude Code)
One command — no clone, no build, no manual config:
The installer wires the MCP server into every supported host config it
finds on the machine (Claude Code, Cursor, Cline, Codex, Windsurf,
Claude Desktop) and drops 16 slash-command skills into
~/.claude/skills/. Restart your agent and the tools appear.
Then:
Tool surface (16 tools)
Read (no auth)
| Tool | Purpose |
|---|---|
pnl_help | Discovery menu, current wallet state, next-step hint |
pnl_browse_markets | List markets, filter by status, paginate |
pnl_get_market | Fetch one market by id or on-chain address |
pnl_notify | Recent notifications for the local wallet — votes, resolutions, claim-ready alerts. Stateful (last-seen tracking). Includes profile URL. |
Wallet (local, encrypted at rest)
| Tool | Purpose |
|---|---|
pnl_init | First-run: BIP39 mnemonic + Ed25519 keypair, encrypted with passphrase. Mnemonic written to a 0600 file (never to chat). |
pnl_wallet | Address, balance, lock state, autosign cap, active RPC |
pnl_unlock | Decrypt secret in memory for N min (default 5, max 60). Passphrase via PNL_PASSPHRASE env or OS-native dialog — never typed in chat. |
pnl_lock | Wipe cached secret immediately |
pnl_restore | Rebuild wallet from a BIP39 mnemonic on a new machine |
pnl_export_keypair | Write secret to a 0600 file (path returned, never the key) |
Identity
| Tool | Purpose |
|---|---|
pnl_set_username | Claim or rename your PNL username, signature-auth (no Privy session) |
Market actions
Two flows for each write action. Deep-link = browser signs. Autosign = MCP signs locally for sub-cap amounts.
| Tool | Mode | Purpose |
|---|---|---|
pnl_pitch_idea | Deep-link | Draft a market, return /create?draft= URL |
pnl_pitch_now | Autosign | One-shot: pin metadata, build, sign, send, persist |
pnl_vote | Deep-link | Return /market/<id>?vote=&amount= URL |
pnl_vote_now | Autosign | Build + sign buy_yes / buy_no locally |
pnl_claim | Deep-link | Return /market/<id>?claim=1 URL |
pnl_claim_now | Autosign | Build + sign claim_rewards (no cap — claim is a withdrawal) |
Trust model
The MCP server holds an encrypted keypair on the user's local
machine. The passphrase is never delivered through the agent's chat
transcript — it comes from PNL_PASSPHRASE (set in the MCP host
config) or an OS-native dialog (osascript on macOS, zenity on
Linux). Cached secrets time out automatically and on pnl_lock.
Autosign is bounded by the autosign cap (default 0.05 SOL). Per-call
override can only lower the cap, never raise it — a malicious
project description or notification cannot coax the agent into draining
the wallet. To raise the cap the user must edit
~/.config/pnl/config.json directly.
Claim has no cap — it's a withdrawal of funds the program already owes the user; capping it would gate the user from their own money.
The non-custodial framing in the regulatory posture page is load-bearing. The MCP only signs with keys the user controls on their own machine.
Slash commands
The installer drops 16 markdown skill manifests into ~/.claude/skills/:
Each manifest tells the agent how to gather context from the conversation and which tool to call. The slash commands work in any Claude Code session.
Read-only integration (without the MCP server)
If you only need to read PNL state — e.g. an agent that summarizes
"what bloomed today" — you don't need the MCP server. Hit
/api/markets/list directly, or drop /llms.txt into context:
Agent-allowed crawlers (explicit)
The robots.txt allows the following AI crawlers full access to
public routes (/, /browse, /launchpad, /whitepaper,
/api/markets/list, /api/og):
- GPTBot, ChatGPT-User, OAI-SearchBot
- ClaudeBot, Claude-Web, anthropic-ai
- PerplexityBot, Perplexity-User
- Google-Extended, Applebot-Extended
- CCBot, cohere-ai
- meta-externalagent, Bytespider
/api/* (except /api/og and /api/markets/list) and /admin/*
are disallowed for everyone.
Why agents are the right audience for PNL
Authentic users. The people most likely to have real ideas worth tokenizing are the people building the future. AI agents amplify this — every developer becomes a 10x ideation engine. PNL gives those ideas somewhere to go instead of dying in TODO comments.
Building an agent on PNL? Open an issue on GitHub or ping us on X / Discord.