Skip to content

PumpView — Solana Trading & Live Data

by pumpview.fun · remote · no sign-in to list tools · v1.2.3 · published by fun.pumpview

Solana swaps with local signing, confirmed receipts, trading volume and filtered live trade data.

Deletes · 1Final · 2Changes · 3

14 tools: 1 can delete or cancel things, 2 do something that can't be undone, 3 change things and 8 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http trading https://api.pumpview.fun/mcp/ --header 'Authorization: <your-authorization>'

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "get_recent_trades" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "get_recent_trades" says "get": a word for reading.

    What this check looks for
  • The server marks "prepare_invoice_payment" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "prepare_invoice_payment" says "payment": a word that usually means money moves, which cannot be taken back.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

14 tools

Deletes or cancels 1Claude Code: deny
  • submit_swapBroadcast the wallet-approved, signed build through Kolibrio.No findings

    Why it is in this group

    • The name "submit_swap" says "submit": a word for a change.
    • The description's first verb is "broadcast": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Broadcast the wallet-approved, signed build through Kolibrio. This can spend funds. Requires a Bearer key for the account that built the swap. Only the exact build_swap message is accepted; the wallet must already have reviewed and authorized its amounts and costs. Returns the swap ID, signature and current status; submitted is not confirmation. Repeating the same ID and signed bytes cannot create a different trade. After a timeout or uncertain delivery, poll get_swap_status; never automatically build a replacement or change its blockhash.

    Annotations the server declares

    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: false
Can't be undone 2Claude Code: ask
  • confirm_invoice_paymentVerify an already-broadcast invoice payment and activate the purchased data package.No findings

    Why it is in this group

    • The name "confirm_invoice_payment" says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    Verify an already-broadcast invoice payment and activate the purchased data package. Bearer key for the invoice owner required; no data credits consumed. Reads Solana at finalized and validates payer, recipient, USDC amount, memo and payment window. It never broadcasts a payment. Returns paid=true and invoice_id on settlement. Repeating the same invoice/signature is safe and never grants access twice. 409 may mean payment not finalized: retry this confirmation with backoff, not the payment. 400 means transaction mismatch; 404 means missing/foreign invoice; 503 means RPC unavailable. After success, use get_access_status, then get_recent_trades or get_stream_connection.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: false
  • prepare_invoice_paymentPrepare an unsigned USDC payment for an existing unpaid, unexpired invoice.1 finding

    Why it is in this group

    • The name "prepare_invoice_payment" says "payment": a word that usually means money moves, which cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "prepare_invoice_payment" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "prepare_invoice_payment" says "payment": a word that usually means money moves, which cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Prepare an unsigned USDC payment for an existing unpaid, unexpired invoice. Bearer key required; no package or data credits needed. Returns a base64 legacy Solana transaction and last_valid_block_height. Review it against get_invoice_status: payer, recipient, mint, amount and pumpview:<id> memo. Your authorized wallet signs and broadcasts locally, using USDC plus SOL for network fees and possible token-account rent. PumpView never receives the private key. This tool does not sign, submit or activate the package. Next call confirm_invoice_payment with the wallet's broadcast signature. A 409 means expired/paid invoice. On blockhash expiry, check the old signature before preparing a replacement for the same invoice; never pay twice.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: true
Changes things 3Claude Code: ask
  • build_swapBuild and simulate an unsigned ExactIn swap, without spending funds.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Build and simulate an unsigned ExactIn swap, without spending funds. Requires a Bearer API key and its linked wallet, but no data subscription or credits. Check get_trading_config first. At least one leg must be SOL/WSOL or USDC; minimum value is $5 unless Unlimited is active. Execution costs 0.5% plus tips and network fees. Returns id, unsigned transaction_base64, expiry, expected/minimum output and cost breakdown. Review them, sign locally, then call submit_swap. Persist request_id; retry the identical intent after a build timeout. A 409 means conflicting intent; 410 means expired build and requires an explicit decision to create a new intent. Never silently increase slippage.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: false
  • get_payment_instructionsCreate a new unpaid USDC invoice for a live-data package; this spends no funds.No findings

    Why it is in this group

    • The name "get_payment_instructions" says "get": a word for reading.
    • The description's first verb is "create": a word for a change.
    Description, as the server wrote it
    Create a new unpaid USDC invoice for a live-data package; this spends no funds. Call only after choosing a current plan with list_data_plans and checking get_access_status. Trading alone needs no data subscription. Requires a Bearer key and linked Solana wallet; missing wallet returns 409, unknown plan 404, disabled sales 503. Returns invoice id, payer, recipient, mint, atomic amount, memo and Unix expiry. Each call creates another invoice, so retain its ID rather than retry blindly. Next use prepare_invoice_payment, review/sign/broadcast with your wallet, then confirm_invoice_payment with the transaction signature. get_invoice_status checks settlement. submit_swap is for swaps, not invoice payments. Never pay an expired invoice or repeat a payment while confirmation is pending.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • get_recent_tradesRead filtered market swap summaries from PumpView's supported SOL-pair feed.1 finding

    Why it is in this group

    • The name "get_recent_trades" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "get_recent_trades" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "get_recent_trades" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Read filtered market swap summaries from PumpView's supported SOL-pair feed. Use for recent market activity, not your submitted swap receipt (get_swap_status). Requires a Bearer key, active data grant and sufficient key budget. Each call consumes max(1, returned event count) credits; repeated reads also count. Unlimited has no package event cap, but an explicit key budget still applies. Returns events in feed order, a cursor and health. Filtering follows batch scanning, so advance using the returned cursor even for an empty batch. On 409 cursor_expired restart without after and record a gap; 402 means access or budget exhausted, 503 means unavailable source. Use get_stream_connection for continuous WSS delivery. Amounts are decoder floats, not full transaction accounting.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
Only reads 8Claude Code: allow
  • get_access_statusInspect the authenticated account's live-data grants, rate limit and feed health.No findings

    Why it is in this group

    • The name "get_access_status" says "get": a word for reading.
    Description, as the server wrote it
    Inspect the authenticated account's live-data grants, rate limit and feed health. Call before consuming data or after an access error. Bearer key required; no data credits consumed. Returns unexpired grants (remaining=-1 means Unlimited), http_rate_limit shared across account keys, and source health. An empty grants list means no unexpired package; a grant can still have zero credits. Key-specific budgets are managed in the dashboard and are not in this response. Use get_trading_usage for swap volume, get_trading_config for swap policy, and get_payment_instructions to create a data-package invoice.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_invoice_statusRead one of your account's existing invoices without creating or paying another.No findings

    Why it is in this group

    • The name "get_invoice_status" says "get": a word for reading.
    Description, as the server wrote it
    Read one of your account's existing invoices without creating or paying another. Bearer key required; no package or data credits needed. Returns payer, recipient, exact atomic USDC amount, memo, expires (Unix seconds) and paid. paid=false means not yet settled by PumpView, not proof of no on-chain payment. If your wallet already broadcast, use confirm_invoice_payment with that signature. Do not pay again while waiting. Missing or another account's invoice returns 404.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_onboarding_instructionsGet API-key setup and integration instructions before your first PumpView call.No findings

    Why it is in this group

    • The name "get_onboarding_instructions" says "get": a word for reading.
    Description, as the server wrote it
    Get API-key setup and integration instructions before your first PumpView call. Public: no key or data credits needed. Returns dashboard/Agent Kit/docs URLs, ordered HTTP wallet-challenge steps, and separate trading/data workflows. Does not create an account, sign, pay or trade. Once connected, use get_trading_config for swap policy or get_access_status for your purchased access.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_stream_connectionGet WSS setup for continuous live trades instead of polling get_recent_trades.No findings

    Why it is in this group

    • The name "get_stream_connection" says "get": a word for reading.
    Description, as the server wrote it
    Get WSS setup for continuous live trades instead of polling get_recent_trades. Requires a Bearer key with an active eligible data grant/budget; 402 means access is unavailable. Returns url, an Authorization header template, first_message JSON and cursor-resume instructions. This lookup consumes no data credits and opens no background connection. Your runtime must connect and insert its own key; all keys share one concurrent WSS connection per account. Delivered events consume data credits/budget under the plan. Persist the last cursor to resume; an expired cursor requires a fresh snapshot and gap handling.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_swap_statusCheck an existing account swap after submission, including after a timeout.No findings

    Why it is in this group

    • The name "get_swap_status" says "get": a word for reading.
    Description, as the server wrote it
    Check an existing account swap after submission, including after a timeout. Requires the owning account's Bearer key; no data credits consumed. Returns id, signature, status and receipt. States are built, submitted, confirmed, finalized, failed or expired. Execution receipts start at confirmed and may still be null while RPC metadata catches up. Poll this ID with backoff within the account rate limit; use get_trading_usage for aggregate volume. This call refreshes stored status/receipts but never submits, signs or rebuilds a trade.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: true
  • get_trading_configRead the current server's swap policy before choosing build_swap parameters.No findings

    Why it is in this group

    • The name "get_trading_config" says "get": a word for reading.
    Description, as the server wrote it
    Read the current server's swap policy before choosing build_swap parameters. Public: no API key or data credits needed. Returns enabled, mint aliases, allowed pair assets, fee basis points, USD minimums, tip limits and build TTL. enabled is configuration status, not a liquidity quote or an RPC health check. Use get_trading_usage for executed account volume and get_access_status for grants.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • get_trading_usageRead all-time executed volume for the authenticated account and each API key.No findings

    Why it is in this group

    • The name "get_trading_usage" says "get": a word for reading.
    Description, as the server wrote it
    Read all-time executed volume for the authenticated account and each API key. Use for accounting, not market history (get_recent_trades) or one receipt (get_swap_status). Bearer key required; no data package or credits consumed. Returns available, totals and by_api_key. Successful swaps count once from confirmed; finalization never adds them again. SOL/USDC amounts are decimal strings; USD uses build-time prices. available=false means temporary unavailability, not zero volume. Newly confirmed receipts may appear shortly later.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • list_data_plansList current data packages and prices before buying a live-data subscription.No findings

    Why it is in this group

    • The name "list_data_plans" says "list": a word for reading.
    Description, as the server wrote it
    List current data packages and prices before buying a live-data subscription. Public: no key or credits needed. Returns plan IDs, price in atomic USDC (6 decimals), duration, event allowance, filters, account request/connection limits and sales_enabled. -1 credits means Unlimited. Trading alone needs no data package. If sales are enabled, choose a plan and call get_payment_instructions with its exact id to create an unpaid invoice.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.2.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http trading https://api.pumpview.fun/mcp/ --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__trading__get_onboarding_instructions",
      "mcp__trading__get_trading_config",
      "mcp__trading__get_trading_usage",
      "mcp__trading__get_swap_status",
      "mcp__trading__get_access_status",
      "mcp__trading__list_data_plans",
      "mcp__trading__get_invoice_status",
      "mcp__trading__get_stream_connection"
    ],
    "ask": [
      "mcp__trading__build_swap",
      "mcp__trading__get_recent_trades",
      "mcp__trading__get_payment_instructions",
      "mcp__trading__prepare_invoice_payment",
      "mcp__trading__confirm_invoice_payment"
    ],
    "deny": [
      "mcp__trading__submit_swap"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as trading. Review it before you use it.