PumpView — Solana Trading & Live Data
Server Details
Solana swaps with local signing, confirmed receipts, trading volume and filtered live trade data.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- grinchdev/pumpview-agent-kits
- GitHub Stars
- 0
TDQS
Scored across 14 tools
Each tool targets a distinct resource+phase, and the descriptions explicitly cross-reference siblings (e.g. get_recent_trades 'not your receipt, use get_swap_status'; get_trading_usage 'not market history'). The invoice lifecycle tools (get_payment_instructions, prepare_invoice_payment, confirm_invoice_payment, get_invoice_status) are cleanly separated by action despite sharing a domain.
Uniform snake_case verb_noun pattern throughout: build_swap, submit_swap, get_swap_status, get_trading_config, list_data_plans, prepare_invoice_payment, confirm_invoice_payment, etc. No mixed conventions or vague verbs.
14 tools is well-scoped for a combined trading + live-data server, with each tool earning its place across the swap lifecycle, invoice lifecycle, access checks, and data consumption paths. No redundant or filler tools.
The surface covers the full swap flow (config/build/submit/status/usage), invoice lifecycle, access grants, and both polling and WSS data feeds. Minor gaps: no explicit swap listing/history or cancel path, though these are workaroundable via status polling.
Available Tools
14 toolsbuild_swapAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Exact input amount in atomic units, encoded as a decimal integer string, at most u64. SOL/WSOL has 9 decimals and USDC 6; resolve other token decimals first. Example: 0.06 SOL is "60000000". | |
| wallet | Yes | Base58 public key of the signing wallet linked to this API-key account. Obtain/link it through onboarding; never pass a private key. | |
| input_mint | Yes | Asset to spend: SOL for native balance, WSOL for SPL wrapped balance, USDC, or a base58 token mint. One leg must resolve to SOL/WSOL/USDC. | |
| request_id | Yes | Client-generated idempotency key, persisted before calling. Reuse with identical arguments after a timeout; changing the intent under this ID returns 409. | |
| output_mint | Yes | Asset to receive using the same aliases or a base58 mint. Must differ from the input after alias resolution; SOL-to-WSOL wrapping alone is unsupported. | |
| slippage_bps | Yes | Explicit signer-approved slippage tolerance. 100 basis points = 1%; 10000 allows 100%. Never silently increase it to fix a failed route. | |
| tip_lamports | No | Total acceleration tip in SOL lamports, separate from platform and network fees. 2000000 lamports = 0.002 SOL; charged only if the signed transaction executes. | |
| max_priority_fee_lamports | No | Cap on the compute-unit priority fee in lamports. Excludes the base network fee, tips, token-account rent and platform fee; 1000000 = 0.001 SOL. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | PumpView swap ID (32 lowercase hex characters), passed as swap_id to status and submit tools. |
| tips | No | Total tip and transfer destinations for wallet review, in lamports. |
| error | No | Failure information if present. Preserve the swap ID and inspect status before deciding on any new intent. |
| status | Yes | Lifecycle state: built, submitted, confirmed, finalized, failed, or expired. A send timeout may leave state uncertain; poll this ID. |
| receipt | No | Actual execution details from confirmed onward; null before confirmation or while RPC transaction metadata is pending. |
| signature | No | Solana transaction signature, or null before submission. Not interchangeable with the PumpView swap ID. |
| expires_at | No | Unsigned build expiry as Unix seconds; not proof that a submitted transaction failed. |
| request_id | No | Original client-generated idempotency key for this intent. |
| input_amount | No | Exact input amount as a string of integer atomic units. |
| platform_fee | No | Fee basis points, mint, recipient account and calculation basis. |
| transaction_base64 | No | Unsigned Solana v0 transaction for local wallet signing; only returned for a build still in built state. |
| network_fee_lamports | No | Estimated total network fee for the built message, as an integer string. |
| minimum_output_amount | No | Slippage-protected output threshold in atomic units to review before signing. |
| expected_output_amount | No | Quoted output in atomic units; execution may differ within the slippage bound. |
| last_valid_block_height | No | Last block height accepted by the transaction blockhash. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: auth requirement (Bearer key + linked wallet), cost model (0.5% + tips + network fees), what is returned, timeout/retry behavior, and the meaning of 409 vs 410. The annotations only flag non-read-only/idempotent, so this extra context is genuinely additive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and then proceeds through prerequisites, costs, output, and error handling in a logical order; each sentence carries operational weight. It is dense and run-on in places, which costs a little readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with an output schema, the description still covers auth, funding requirements, cost breakdown, retry/idempotency, and error semantics — everything needed to invoke and follow up correctly. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains every parameter thoroughly; baseline is 3. The description reinforces request_id persistence/409 coupling and the slippage policy, but adds little parameter syntax or meaning not already in the schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('build and simulate an unsigned ExactIn swap') plus scope ('without spending funds'), and names the sibling (submit_swap) that completes the workflow. An agent can immediately distinguish it from get_swap_status and submit_swap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit sequencing: check get_trading_config first, then build, sign locally, and call submit_swap. Adds concrete exclusion conditions (no data subscription/credits needed, min $5 unless Unlimited) and error-code routing for 409/410 plus the 'never silently increase slippage' rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_invoice_paymentAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| signature | Yes | Base58 Solana transaction signature returned by your wallet after broadcasting this invoice payment. Not a signed transaction, wallet-login signature or private key. | |
| invoice_id | Yes | Invoice id returned by get_payment_instructions for this API-key account. Not a swap id or Solana transaction signature. |
Output Schema
| Name | Required | Description |
|---|---|---|
| paid | Yes | True once matching finalized payment is verified and the package has been activated. |
| invoice_id | Yes | Settled invoice ID. Reconfirming the same signature never grants access twice. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only covering readOnly/idempotent/destructive/openWorld, the description adds substantial behavioral context the annotations do not: bearer-key auth requirement, zero data-credit consumption, reads Solana at finalized with specific validation fields, and the explicit assurance it never broadcasts. It also maps 400/404/409/503 to concrete meanings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and no sentence is filler — error codes, idempotency, and next-step routing all carry operational value. Slightly dense as a single run-on block with irregular indentation, but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a confirmation call with an output schema, the description still supplies everything an agent needs: auth, side effects (activates package, no credits), idempotency behavior, the full error taxonomy, and the follow-up tool sequence. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents signature (base58, not a login signature/private key) and invoice_id (from get_payment_instructions, not a swap id). The description adds no parameter-level syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Verify an already-broadcast invoice payment and activate the purchased data package') and explicitly scopes it to payments already broadcast, which cleanly separates it from prepare_invoice_payment and get_invoice_status. An agent can pick this without opening a sibling schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions (payment must already be broadcast, bearer key for the invoice owner), post-success routing ('use get_access_status, then get_recent_trades or get_stream_connection'), and retry guidance tied to a specific status ('409 ... retry this confirmation with backoff, not the payment'). Alternatives and exclusions are named rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_access_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| grants | Yes | Unexpired packages: id, plan, expires (Unix seconds), remaining credits (-1 means unlimited), max_filters and max_connections. Empty means no unexpired grant. |
| source | Yes | Current local feed health: connected/source_connected, last_message_age_seconds, cursor, dropped-event and replay-gap counters. |
| http_rate_limit | Yes | requests_per_second, scope=account, shared_with_mcp=true. The allowance is shared by all keys and HTTP/MCP calls. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations by disclosing auth requirements ('Bearer key required'), cost behavior ('no data credits consumed'), return semantics ('remaining=-1 means Unlimited', 'empty grants list means no unexpired package', a grant can still have zero credits), and an explicit scope exclusion (key-specific budgets are dashboard-managed and not in this response).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, follows with the trigger condition, then the return contract, then sibling routing. Every sentence carries information an agent needs; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't restate return shapes, yet it still adds the interpretive details (unlimited sentinel, empty-list meaning, excluded budgets) that make the response usable. Complete for a no-arg status tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there are no parameter semantics to add, and the description correctly does not invent any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Inspect') and resource ('the authenticated account's live-data grants, rate limit and feed health'), itemizing the three artifacts returned. An agent can distinguish it from sibling status tools like get_swap_status or get_trading_usage without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to call ('before consuming data or after an access error') and routes to three named alternatives with their respective domains (get_trading_usage for swap volume, get_trading_config for swap policy, get_payment_instructions for invoices). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoice_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | Yes | Invoice id returned by get_payment_instructions for this API-key account. Not a swap id or Solana transaction signature. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Invoice ID for prepare_invoice_payment, get_invoice_status and confirm_invoice_payment. |
| memo | Yes | Exact payment memo binding the transaction to this invoice. |
| mint | Yes | Native Solana USDC mint address required for this payment. |
| paid | Yes | Whether the invoice has been settled. A newly created invoice is unpaid. |
| plan | Yes | Selected plan ID from the current public plan catalog. |
| payer | Yes | Linked Solana wallet that must authorize payment. |
| amount | Yes | Exact invoice amount in USDC atomic units; divide by 10^decimals for USDC. |
| created | Yes | Invoice creation time as Unix seconds. |
| expires | Yes | Invoice expiry as Unix seconds; do not pay an expired invoice. |
| network | Yes | Required payment network: solana-mainnet. |
| decimals | Yes | USDC decimals: 6. |
| recipient | Yes | Public payment recipient to verify before signing. |
| payment_protocol | Yes | Payment workflow identifier: pumpview-invoice-v1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, and the description adds substantial context beyond them: bearer key auth requirement, no data credits consumed, the meaning of paid=false (not settled by PumpView, not proof of no on-chain payment), and the 404 behavior. The paid=false caveat is a genuine semantic nuance an agent could otherwise misread.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, and nearly every sentence carries operational value (auth, cost, non-payment warning). Slight deduction because enumerating the returned fields (payer, recipient, amount, memo, expires, paid) partially duplicates the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description supplies exactly the remaining gaps: auth, credit cost, the paid=false interpretation, and the escalation path to confirm_invoice_payment. Nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself carries the important disambiguation ('Not a swap id or Solana transaction signature') plus a regex pattern and example. The description adds nothing further about invoice_id, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one of your account's existing invoices') and immediately scopes it against adjacent operations ('without creating or paying another'), which cleanly separates it from prepare_invoice_payment and confirm_invoice_payment. An agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules are given: if the wallet already broadcast, use confirm_invoice_payment with that signature; do not pay again while waiting. It also names the failure condition (missing or another account's invoice returns 404), so both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_onboarding_instructionsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Paid live-data requirements and URL of the current plan catalog. |
| name | Yes | Service name: PumpView. |
| mcp_url | Yes | Streamable HTTP MCP endpoint. |
| network | Yes | Solana network used by the API: solana-mainnet. |
| trading | Yes | Trading subscription requirements, policy URL, tool names and signing workflow. |
| agent_kit | Yes | Public PumpView examples and installable skill repository. |
| documentation | Yes | Markdown integration guide with HTTP onboarding and payment steps. |
| skill_install | Yes | Command to install the PumpView trading skill. |
| wallet_access | Yes | Ordered HTTP challenge, local message-signing and access-exchange steps; no private key is transmitted. |
| account_access | Yes | Dashboard URL for login, wallet linking and API keys. |
| authentication | Yes | Authorization header template; replace the placeholder with your own secret key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description goes further: it specifies public access with no key or data credits, that it does not create an account, sign, pay, or trade, and that its output includes ordered HTTP wallet-challenge steps. This is meaningful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then permissions, then return content, then sibling routing. Every clause carries information the agent needs; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be spelled out, yet the description still summarizes the payload (URLs, challenge steps, workflows) and covers prerequisites, exclusions, and next steps. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the schema is trivially complete. Baseline 4 applies for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (onboarding/API-key setup and integration instructions) and scopes it temporally ('before your first PumpView call'). It is immediately distinguishable from siblings like get_payment_instructions or get_trading_config, which it names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (before the first call), when it is safe to use (public, no key or credits), and routes the agent afterward: 'use get_trading_config for swap policy or get_access_status for your purchased access.' Both condition and alternative are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_payment_instructionsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | Exact data-package id from list_data_plans. Current ids: day (Day Pass), starter (Starter), builder (Unlimited). Use the id, not the display name; confirm current price and availability first. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Invoice ID for prepare_invoice_payment, get_invoice_status and confirm_invoice_payment. |
| memo | Yes | Exact payment memo binding the transaction to this invoice. |
| mint | Yes | Native Solana USDC mint address required for this payment. |
| paid | Yes | Whether the invoice has been settled. A newly created invoice is unpaid. |
| plan | Yes | Selected plan ID from the current public plan catalog. |
| payer | Yes | Linked Solana wallet that must authorize payment. |
| amount | Yes | Exact invoice amount in USDC atomic units; divide by 10^decimals for USDC. |
| created | Yes | Invoice creation time as Unix seconds. |
| expires | Yes | Invoice expiry as Unix seconds; do not pay an expired invoice. |
| network | Yes | Required payment network: solana-mainnet. |
| decimals | Yes | USDC decimals: 6. |
| recipient | Yes | Public payment recipient to verify before signing. |
| payment_protocol | Yes | Payment workflow identifier: pumpview-invoice-v1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly=false, idempotent=false, destructive=false; the description adds far more: auth requirements (Bearer key, linked Solana wallet), specific failure codes (409 missing wallet, 404 unknown plan, 503 sales disabled), the returned field set, and the non-idempotent warning to retain the invoice ID rather than retry blindly — which directly aligns with idempotentHint=false. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then preconditions, error codes, return shape, and the payment lifecycle; nearly every sentence carries unique operational value. It is long for a one-parameter tool, but the density is justified rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema being present, the description still sketches the return values (invoice id, payer, recipient, mint, atomic amount, memo, expiry) and covers auth, error states, idempotency risk, and the full downstream workflow. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'plan' parameter is already documented in the schema with valid ids and a display-name caveat. The description reinforces that a current plan must be chosen first but adds no new syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'Create a new unpaid USDC invoice for a live-data package', plus the reassurance 'this spends no funds'. It goes further than most by naming several siblings it is not (submit_swap is for swaps, prepare_invoice_payment is the next step), so an agent can place it precisely in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions ('Call only after choosing a current plan with list_data_plans and checking get_access_status'), an exclusion ('Trading alone needs no data subscription'), and the ordered follow-up chain (prepare_invoice_payment -> sign/broadcast -> confirm_invoice_payment). This is textbook when/when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_tradesAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mint | No | Optional exact token mint address in base58. Filters the traded token of the supported SOL-pair feed; omit for all mints. No ticker aliases. | |
| after | No | Opaque cursor returned by the previous batch. Omit for a recent snapshot; supply unchanged to scan subsequent events. Not a timestamp or transaction signature. | |
| limit | No | Maximum accepted events scanned before mint/wallet filters, 1-500; default 100. The number returned can be smaller, including zero. | |
| wallet | No | Optional exact base58 trader public key reported by the decoder. Combined with mint using AND; omit for all wallets. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cursor | Yes | Resume position after the scanned batch, including events removed by filters; use as the next after value. |
| events | Yes | Accepted events after mint/wallet filtering. May be empty even when the cursor advances. |
| health | No | Feed connection status, last-message age, drop/replay-gap counters and price_filter identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations: auth requirements (Bearer key, active data grant, sufficient budget), a precise cost formula (max(1, returned event count) credits, repeated reads billed), package-cap behavior, feed ordering, and per-status-code recovery instructions for 409/402/503 including the 'restart without after and record a gap' action. The credit-charging detail also substantiates the non-idempotent annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, then alternatives, then operational constraints. The dense error-code and credit sentences are load-bearing rather than filler, though the block reads as a wall of prose that could be tightened with list structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return shape needn't be spelled out, yet the description still names the returned cursor and health, which are the fields an agent must act on. Auth, budget, pagination, error recovery, and stream alternative are all covered for a 4-param open-world read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds genuinely non-schema semantics: filtering happens after batch scanning, so an empty batch still requires advancing with the returned cursor, and a 409 requires retrying without 'after'. That clarifies how after/limit/mint/wallet interact rather than restating them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read filtered market swap summaries from PumpView's supported SOL-pair feed') with clear scope, and immediately distinguishes itself from the closest sibling by naming get_swap_status as the receipt tool. An agent can tell this apart from get_stream_connection and get_swap_status without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('recent market activity'), explicit when-not ('not your submitted swap receipt'), and names two alternatives with their selecting conditions: get_swap_status for receipts and get_stream_connection for continuous WSS delivery. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stream_connectionARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | WSS endpoint to open in the caller runtime. |
| resume | Yes | How to resume with the last received cursor. An expired cursor requires a fresh snapshot. |
| first_message | Yes | Initial JSON subscription message. Customize filters.mints/wallets and filters.after as documented. |
| authentication | Yes | Handshake header template. Supply your own API key; the response never echoes the secret. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare read-only/idempotent/no-destruction, and the description still adds substantial operational context beyond them: this lookup consumes no data credits and opens no connection, the runtime must connect and supply its own key, only one concurrent WSS connection exists per account, delivered events do bill credits, and cursors must be persisted with defined expiry behavior. This is exactly the kind of disclosure annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the polling alternative, then packed with operational constraints. Every sentence carries new information, though the single dense paragraph could be broken into bullets for scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description still notes the shape (url, Authorization header template, first_message, cursor-resume steps). Auth requirements, credit implications, concurrency limits, and cursor lifecycle are fully covered for a streaming-setup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters with 100% schema coverage, so there is nothing parametric to document; baseline for a no-parameter tool applies. The description correctly does not invent parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get WSS setup for continuous live trades') and immediately contrasts it with the polling alternative get_recent_trades. An agent can distinguish this from every other sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this 'instead of polling get_recent_trades', names the prerequisite (Bearer key with an active eligible data grant/budget), and gives the failure signal (402 = access unavailable). When-to-use, alternative, and precondition are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_swap_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| swap_id | Yes | PumpView id returned by build_swap for this account, not a Solana signature or request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | PumpView swap ID (32 lowercase hex characters), passed as swap_id to status and submit tools. |
| tips | No | Total tip and transfer destinations for wallet review, in lamports. |
| error | No | Failure information if present. Preserve the swap ID and inspect status before deciding on any new intent. |
| status | Yes | Lifecycle state: built, submitted, confirmed, finalized, failed, or expired. A send timeout may leave state uncertain; poll this ID. |
| receipt | No | Actual execution details from confirmed onward; null before confirmation or while RPC transaction metadata is pending. |
| signature | No | Solana transaction signature, or null before submission. Not interchangeable with the PumpView swap ID. |
| expires_at | No | Unsigned build expiry as Unix seconds; not proof that a submitted transaction failed. |
| request_id | No | Original client-generated idempotency key for this intent. |
| input_amount | No | Exact input amount as a string of integer atomic units. |
| platform_fee | No | Fee basis points, mint, recipient account and calculation basis. |
| transaction_base64 | No | Unsigned Solana v0 transaction for local wallet signing; only returned for a build still in built state. |
| network_fee_lamports | No | Estimated total network fee for the built message, as an integer string. |
| minimum_output_amount | No | Slippage-protected output threshold in atomic units to review before signing. |
| expected_output_amount | No | Quoted output in atomic units; execution may differ within the slippage bound. |
| last_valid_block_height | No | Last block height accepted by the transaction blockhash. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses auth requirements (owning account's Bearer key), cost (no data credits consumed), the status lifecycle, and the caveat that receipts may be null while RPC metadata catches up. It also explicitly bounds behavior: 'never submits, signs or rebuilds a trade' and only refreshes stored status/receipts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and each subsequent sentence carries distinct information (auth, cost, return fields, lifecycle, polling, refresh semantics). It is dense but not padded; the only minor cost is length in the middle section.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only status poller with a full output schema, the description covers everything an agent needs: auth, cost, the meaning of each state, the null-receipt edge case, polling discipline, and the guarantee that no write occurs. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the swap_id field is already documented as a PumpView id rather than a Solana signature or request_id. The description adds no further parameter-level detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Check an existing account swap after submission') and scopes it temporally ('after submission, including after a timeout'). This clearly distinguishes it from build_swap and submit_swap, which are the natural confusable siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to call (after submission, after a timeout), how to call repeatedly ('Poll this ID with backoff within the account rate limit'), and explicitly routes the agent elsewhere for a related need ('use get_trading_usage for aggregate volume'). Exclusions and alternatives are named, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trading_configARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tips | Yes | Minimum tip in lamports and transfer recipients disclosed for review before signing. |
| enabled | Yes | Whether the trading proxy is currently configured and enabled; not a guarantee that a route exists. |
| mint_aliases | Yes | SOL, WSOL and USDC alias-to-mint mapping. SOL spends native balance; WSOL spends SPL balance. |
| slippage_bps | Yes | Whether explicit slippage is required and its inclusive minimum/maximum in basis points. |
| free_minimum_usd | Yes | Minimum swap value in USD without an active Unlimited grant, as a decimal string. |
| platform_fee_bps | Yes | Platform swap fee in basis points; 50 means 0.5%. |
| build_ttl_seconds | Yes | Time window for submitting a newly built transaction before its unsigned intent expires. |
| receipt_commitment | Yes | Earliest commitment at which execution receipts are available: confirmed. |
| required_pair_assets | Yes | At least one swap leg must resolve to an asset in this list; see mint_aliases. |
| subscription_required | Yes | False: building and submitting swaps needs no paid data package. |
| unlimited_minimum_usd | Yes | Minimum swap value in USD with Unlimited, as a decimal string. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, but the description adds meaningful context beyond them: no API key or data credits required (public access), the precise nature of 'enabled' as configuration status rather than a liquidity quote or RPC health check, and the shape of the payload. That negative clarification is exactly the kind of disambiguation annotations cannot express. Slightly short of 5 only because it doesn't mention caching/TTL semantics of the config itself, despite build TTL being a returned field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the reason to call it, then access requirements, then payload contents, then boundary clarifications. Every sentence earns its place and none repeat the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be enumerated, yet the description still names the key fields and, more importantly, defines 'enabled' and separates configuration status from liquidity and RPC health. Combined with the sibling routing, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4 and there is nothing for the description to clarify about inputs. The description instead spends its budget on returned fields, which is appropriate rather than a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Read the current server's swap policy') with the exact downstream purpose ('before choosing build_swap parameters'). It is immediately distinguishable from sibling reads like get_trading_usage and get_access_status. No ambiguity about what is returned versus what this tool is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes: use this before calling build_swap, use get_trading_usage for executed volume, use get_access_status for grants. Both the condition for using this tool and the alternatives for adjacent needs are named, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trading_usageARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| period | No | Aggregation period: all_time. |
| totals | No | All-time executed account volume and count when available. |
| message | No | Explanation when statistics are unavailable. |
| available | Yes | False means statistics are temporarily unavailable, not that volume is zero. |
| by_api_key | No | Per-key volume buckets. An unused key may have no bucket yet. |
| counted_from | No | Earliest counted commitment: confirmed; finalization does not add volume again. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: bearer key requirement, no credit consumption, the once-per-swap counting rule, decimal-string vs build-time-price formatting, the meaning of available=false, and eventual-consistency lag for new receipts. These are exactly the operational details annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by routing guidance, then behavioral caveats. Every sentence carries distinct information; nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return-value detail is not strictly needed, yet the description still summarizes the return shape (available, totals, by_api_key) and covers auth, cost, counting semantics, and edge cases. Complete for an agent to call and interpret correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline is 4. The description correctly does not waste space restating a nonexistent schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: 'Read all-time executed volume for the authenticated account and each API key.' It explicitly distinguishes itself from get_recent_trades (market history) and get_swap_status (one receipt), so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('use for accounting') and names both excluded alternatives with the reason each is wrong for this need. No inference required to pick between the three siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_data_plansARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | Yes | How delivered events and empty queries consume credits. |
| plans | Yes | Currently configured prepaid data packages and exact prices. |
| network | Yes | Payment network, Solana mainnet. |
| base_url | Yes | Public API origin for optional HTTP access. |
| currency | Yes | Payment currency: native Solana USDC, 6 decimals. |
| sales_enabled | Yes | Whether new data-package invoices can currently be created. |
| payment_protocol | Yes | PumpView invoice protocol, no Coinbase dependency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive with openWorldHint=false, so safety is covered. The description adds genuinely new behavioral context: it is public with no key or credits required, and it explains the '-1 credits means Unlimited' sentinel and the sales_enabled gating that determines whether a purchase path exists at all.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then access model, then return fields, then the next action - a logical progression with no filler sentences. It runs longer than strictly necessary given the output schema already enumerates the returned fields, but each sentence still carries operational meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no parameters and a rich output schema, so the description only needs to supply access requirements, sentinel semantics, and workflow routing - and it delivers all three. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The field-level detail it provides (USDC 6-decimal pricing, duration, event allowance, request/connection limits) describes outputs rather than inputs and is partly redundant with the output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List current data packages and prices') and immediately scopes the purpose ('before buying a live-data subscription'). An agent can distinguish it from sibling inventory tools like get_trading_config or get_payment_instructions without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to call it (before buying a subscription), when it is unnecessary ('Trading alone needs no data package'), and what to do next ('choose a plan and call get_payment_instructions with its exact id'). The alternative tool is named by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_invoice_paymentARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | Yes | Invoice id returned by get_payment_instructions for this API-key account. Not a swap id or Solana transaction signature. |
Output Schema
| Name | Required | Description |
|---|---|---|
| transaction_base64 | Yes | Unsigned legacy Solana transaction. Review payer, recipient, exact USDC amount and invoice memo before local wallet signing and broadcast. Never submit through submit_swap. |
| last_valid_block_height | Yes | Block-height expiry of this transaction. Invoice expiry must also be respected. After expiry, check the prior signature before preparing another payment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint/idempotentHint true and destructiveHint false, and the description is consistent with that (it does not sign, submit or activate). Beyond the annotations it discloses auth needs (bearer key), that no package/data credits are needed, the return artifacts (base64 legacy Solana transaction, last_valid_block_height), fee/rent requirements (USDC + SOL), the private-key custody guarantee, and 409/blockhash-expiry semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and then a logical progression of auth, return value, review step, signing/broadcast responsibility, and error handling. It is on the longer side for a single-parameter tool, but nearly every sentence carries operational guidance, so there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, preconditions, auth, return artifacts, the review step, who signs/broadcasts, error semantics, and the follow-up call. Even though an output schema exists, the description supplies the workflow context an agent needs to invoke this costly-to-get-wrong transaction step safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, so the schema already fully documents invoice_id (pattern, example, and 'not a swap id or signature'). The description adds invoice-level preconditions (must be unpaid and unexpired) but no additional syntax or format meaning. Baseline 3 is appropriate when the schema carries the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Prepare) plus resource (unsigned USDC payment for an invoice) and scopes it to 'existing unpaid, unexpired invoice.' It differentiates from siblings by naming get_invoice_status and confirm_invoice_payment and clarifying that it neither signs, submits, nor activates the package.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use and when-not: only for existing unpaid/unexpired invoices, next call confirm_invoice_payment with the broadcast signature, and a 409 means expired/paid. It also routes the agent to get_invoice_status for review and gives a handling rule for blockhash expiry to avoid double payment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_swapADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| swap_id | Yes | PumpView id returned by build_swap for this account, not a Solana signature or request_id. | |
| signed_transaction_base64 | Yes | Standard base64 of the complete serialized Solana v0 transaction from this build, after local wallet signing. Preserve the original message and blockhash. Not a signature string, seed, private key or JSON transaction. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | PumpView swap ID (32 lowercase hex characters), passed as swap_id to status and submit tools. |
| tips | No | Total tip and transfer destinations for wallet review, in lamports. |
| error | No | Failure information if present. Preserve the swap ID and inspect status before deciding on any new intent. |
| status | Yes | Lifecycle state: built, submitted, confirmed, finalized, failed, or expired. A send timeout may leave state uncertain; poll this ID. |
| receipt | No | Actual execution details from confirmed onward; null before confirmation or while RPC transaction metadata is pending. |
| signature | No | Solana transaction signature, or null before submission. Not interchangeable with the PumpView swap ID. |
| expires_at | No | Unsigned build expiry as Unix seconds; not proof that a submitted transaction failed. |
| request_id | No | Original client-generated idempotency key for this intent. |
| input_amount | No | Exact input amount as a string of integer atomic units. |
| platform_fee | No | Fee basis points, mint, recipient account and calculation basis. |
| transaction_base64 | No | Unsigned Solana v0 transaction for local wallet signing; only returned for a build still in built state. |
| network_fee_lamports | No | Estimated total network fee for the built message, as an integer string. |
| minimum_output_amount | No | Slippage-protected output threshold in atomic units to review before signing. |
| expected_output_amount | No | Quoted output in atomic units; execution may differ within the slippage bound. |
| last_valid_block_height | No | Last block height accepted by the transaction blockhash. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructive/openWorld/idempotent, and the description reinforces these with substance rather than repetition: 'This can spend funds', 'submitted is not confirmation', and an explanation of idempotency semantics ('Repeating the same ID and signed bytes cannot create a different trade'). It also discloses the auth requirement (Bearer key) and the retry/timeout policy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the money-spending warning, then prerequisites, then failure handling. Dense but each clause carries operational weight; the line-broken formatting is slightly awkward for a description field but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, authenticated broadcast tool, the description covers purpose, auth, input provenance, idempotency, failure handling, and the distinction between submission and confirmation. An output schema exists, yet the description still briefly notes the return shape (swap ID, signature, status) without over-explaining.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters in detail, establishing a baseline of 3. The description adds cross-tool meaning: 'Only the exact build_swap message is accepted' and the requirement that the wallet must already have authorized its amounts and costs, which clarifies why the signed bytes must be unmodified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Broadcast the wallet-approved, signed build through Kolibrio.' It immediately distinguishes itself from the sibling build_swap by emphasizing that the transaction is already built, signed and approved, and it flags the money-spending nature up front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states prerequisites ('Requires a Bearer key for the account that built the swap', 'Only the exact build_swap message is accepted') and post-conditions with a named alternative: 'After a timeout or uncertain delivery, poll get_swap_status; never automatically build a replacement or change its blockhash.' This is a clear when-to-use / when-not-to-use / what-to-do-instead set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- Added
confirm_invoice_payment - Added
get_invoice_status - Changed
get_payment_instructions2 fields changed- changed
Input schema / properties / plan / descriptionPrevious value: -"Exact data-package id from public GET https://api.pumpview.fun/v1/plans. Current ids: day (Day Pass), starter (Starter), builder (Unlimited). Use the id, not the display name; confirm current price and availability first."New value: +"Exact data-package id from list_data_plans. Current ids: day (Day Pass), starter (Starter), builder (Unlimited). Use the id, not the display name; confirm current price and availability first." - changed
Output schema / properties / id / descriptionPrevious value: -"Invoice ID for HTTP transaction preparation, status and payment confirmation."New value: +"Invoice ID for prepare_invoice_payment, get_invoice_status and confirm_invoice_payment."
- Added
list_data_plans - Added
prepare_invoice_payment
10 tool updates
- First observed
build_swap - First observed
get_access_status - First observed
get_onboarding_instructions - First observed
get_payment_instructions - First observed
get_recent_trades - First observed
get_stream_connection - First observed
get_swap_status - First observed
get_trading_config - First observed
get_trading_usage - First observed
submit_swap
Related MCP Connectors
Swap quotes + unsigned txs on 8 EVM chains, plus Solana data: boards, candles, wallet PnL. No key.
Solana MCP for wallets, trades, markets, PnL, transfers, onchain data, signable swaps and API tools.
Safe Solana swaps for AI agents with risk checks, unsigned transactions, x402, and 3-bp fees.
Full Solana DeFi coverage: launchpads, tokens, trades, and wallets, decoded at scale.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceNon-custodial Solana swap routing with best-price execution, flat 0.25% fee, and built-in on-chain scam checking for token safety.58 npmMIT

trade-router-mcpofficial
AlicenseBqualityCmaintenanceNon-custodial Solana swap & limit order engine for AI agents. 21 tools - swap, limit, trailing, TWAP, DCA, combo orders - across Raydium, PumpSwap, Orca, Meteora. Jito MEV-protected execution. Ed25519-verified server messages. Private key never leaves the process.21101 npm3MIT- FlicenseNot gradedqualityCmaintenanceEnables Solana swaps through ranked quotes, transaction building, broadcasting, and status tracking, with per-request payment in USDC via the x402 protocol using a local keypair.-
- AlicenseCqualityCmaintenanceEnables personal agents to access Solana market data and execute token swaps via the Dritan SDK while maintaining local wallet security. It provides tools for wallet management, real-time token price tracking, and secure transaction signing and broadcasting.4221 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.