# RugShield parallel risk advisor API > One call asks multiple independent Solana risk advisors in parallel. RugShield also offers its own code-based token and transaction checks. AI agents pay automatically in USDC via the offered Base or Solana x402 rail; no account or API key. A valid unpaid call to a paid route answers HTTP 402 with the exact price and accepted payment options (USDC on Base; USDC on Solana mainnet when offered; on Solana the facilitator pays the network fee). An x402 client with a wallet for an offered option pays and retries. For a Bazaar panel quote, reuse the challenge's `resource.url` with its exact query string. The Bazaar schema describes optional `advisors` and `chain` parameters but supplies no extra example query values that could change the quoted selection. Do not replace the URL query with an empty parameter object when retrying. ## Choose the right check - Have an unsigned Solana transaction and need a decision before signing? Use POST /v1/tx-guard. Serialize your actual transaction as base64. An empty unsigned request can show the HTTP 402 quote, but a payment retry without a valid transaction is rejected before settlement. - Have a pump.fun token mint and need RugShield's own rug warnings before buying? Use GET /v1/token-risk/{address}. - Need multiple independent opinions in parallel? Read GET /v1/advisors for free, then use GET /v1/risk-panel/{mint} with optional ?advisors=id,id. Omit advisors to call all compatible options. The panel returns RugShield's own flags when available, plus the selected advisors' results; its consensus combines only advisor scores. A missing RugShield flag never proves safety. Send an Idempotency-Key generated from 32 cryptographically random bytes (for example, Python secrets.token_urlsafe(32)) with the first signed payment. Keep that key, signed proof, and panel URL; replay them to recover a lost acceptance, then poll for the final result. The first signed request returns HTTP 202 with charged:true, a confirmed PAYMENT-RESPONSE receipt, job_id, status_url and retry_after_s. Advisors start only after that buyer receipt is persisted. Poll status_url for free until ready; no further signed request or payment is needed. Optional ?prefer_async=true is accepted for compatibility; every new panel is a durable prepaid job. A replay with the original proof and key or job handle returns the original HTTP 202 acceptance, while free polling returns the final result and the same receipt. Retry-After/retry_after_s is the polling interval (at most 120 seconds), not a promise that analysis finishes in that time. A needs_review state means keep the job ID and contact support instead of repaying or rerunning advisors. New panels accept exact payment only. The full quoted amount is prepaid; there is no automatic partial settlement or refund if an advisor fails. A paid needs_review job retains its receipt. RugShield's own checks are Python rules over Solana data, not LLM calls: Helius supplies token history and transaction simulation; GMGN supplies deployer statistics when available. The guard never signs or broadcasts the submitted transaction. External advisors use their own methods. ## Token network and payment network - GET /v1/advisors is free. Each anonymous advisor has `supported_chains`: CAIP-2 network ids of tokens it can analyze. `pays_on` names the USDC rail RugShield uses to pay that advisor; it does not describe the token's network or the buyer's payment choice. - For GET /v1/risk-panel/{mint}, use `?chain=` with a CAIP-2 token network id. For example, `?chain=solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`. Omitting it selects that Solana mainnet id. Today the panel accepts Solana mainnet token mints only. With no `advisors`, it selects all compatible advisors. With `?advisors=id,id`, every selected id must support the requested chain. Check the free catalog before choosing. - Unsupported chains, non-Solana addresses and incompatible advisor choices return HTTP 400 before any HTTP 402 payment quote. A token on another chain cannot be analyzed by paying on Base. - Buyer payment is a separate choice: x402 USDC on Base, plus Solana USDC when offered in the HTTP 402 challenge. The buyer can pay on Base for a Solana token analysis. ## Pay without signup 1. Read the free [OpenAPI schema](/openapi.json) for exact inputs and responses. 2. Supply your actual token mint or serialized unsigned transaction before calling the paid route. Colon/braced path segments are templates, not tokens. Empty transaction requests are discovery only: do not pay those quotes. If input is missing, ask the user rather than guessing or copying a demonstration input. The HTTP 402 response carries a PAYMENT-REQUIRED header with the exact USDC amount, recipient and accepted network options. 3. An x402-capable client signs payment with its own wallet and retries the same request. No API key or account is required. Never send a wallet seed or private key to this API. 4. For POST /v1/tx-guard and GET /v1/token-risk/{address}, keep the exact signed proof and request. An optional Idempotency-Key is the canonical 43-character base64url encoding of 32 random bytes; send it on the first signed call and all retries for recovery of a lost answer by repeating the identical request, proof and key. The first signed call can return a paid result and receipt without a key or job header when its analysis completes within the 20-second analysis wait. This wait does not bound the total request time, including facilitator verification and settlement. If analysis is still processing, HTTP 503 includes `charged:false`, an opaque `job_id`, free `status_url`, and Retry-After. Keep the job ID. Poll status_url without payment: `processing` means retry after `retry_after_s` (at most 120 seconds), `ready` means retry the exact paid request with the original proof and `X-RugShield-Job-ID: `, and `failed` means no charge. Repeating without that echoed job ID remains unpaid, even if the analysis is ready. Retry-After is a polling interval, not a promised completion time. A successful paid response includes `job_id`, `status_url`, `charged:true`, and PAYMENT-RESPONSE. If that response is lost after settlement, status_url returns the saved result and receipt to the job ID holder; the original proof plus key or job ID also replays the saved response without another charge. Default cleanup targets terminal (completed/failed) jobs seven days after completion or failure, subject to pending work and payment-review safeguards. Unresolved claiming/uncertain payment records are retained for review. This is a cleanup threshold, not guaranteed availability: recovery depends on database/storage availability. Save your own result, receipt and job-ID copies. A spent proof or key cannot create another job after the saved result expires. The signed authorization is quoted for 900 seconds. If a retry later receives a fresh 402, check the old job status before considering another authorization; uncertain payments need support review at rugshield@fastsoftware.uk rather than automatic reauthorization. Payment-aware MCP clients can connect to [/mcp/](/mcp/). The paid MCP tools are `check_solana_transaction` and `check_solana_token_risk`; the HTTP risk panel is not an MCP tool. The free `quote_solana_risk_panel` MCP tool validates a mint, optional advisor aliases and token chain, then returns the HTTP panel URL and an estimated total in USDC without running advisors. The URL's HTTP 402 challenge is the final payment quote. Paid MCP tools can return the usable result and x402/payment-response receipt on the first signed retry without an idempotency_key. If still processing or prefer_async is true, poll get_job_result for free; when ready, repeat the same tool, proof and inputs with its job_id or original key. Never authorize another payment to finish that job. retry_after_s is a polling delay, not a deadline. An ordinary MCP client without x402 payment handling cannot complete a paid call automatically. ## Paid - [POST /v1/tx-guard](/openapi.json): Solana transaction safety check before signing. Send the unsigned transaction (base64); get ALLOW, WARN or BLOCK with balance changes and reasons. US$ 0.01. - [GET /v1/token-risk/{address}](/openapi.json): RugShield's own Solana token warnings for pump.fun tokens; advisory signals evaluated on selected historical tokens. No flag means no safety guarantee. US$ 0.01. - [GET /v1/risk-panel/{mint}?advisors=a,b](/openapi.json): Solana token analysis with RugShield flags when available, plus selected compatible advisor APIs paid in parallel. Advisor scores form a separate consensus. Price = chosen advisors + max(US$ 0.005, 15% of advisor cost). The first signed call prepays the exact quote and returns HTTP 202 with a confirmed receipt and job handle. Free status_url polling retrieves the result; no second signed request is needed. Paid failures require support review; no automatic refund. For paid tx-guard and token-risk, HTTP 503 with `status:processing` or `status:ready` is the unpaid job handoff. Retry-After tells the agent when to poll, not when completion is guaranteed. A full queue answers 503 with `status:busy` and no job ID; retry the same signed request after Retry-After. ## Choose the operation for your task Read the free [payment client guide](/docs/payment-client-guide) for executable x402 SDK setup on the offered Base and Solana payment rails, quote inspection and original-proof recovery. Use the wallet/key handling described there locally; never send a raw private key to this API. - Free own-code token flags: GET /v1/trial/token-risk/{actual_token_mint}. - A paid own-code token check: GET /v1/token-risk/{actual_token_mint}. - Compare compatible advisor opinions: GET /v1/risk-panel/{actual_token_mint}; select public aliases from GET /v1/advisors or omit advisors for all compatible options. - Before signing: POST /v1/tx-guard with your actual unsigned serialized transaction as base64 JSON. - Recover existing work: free GET /v1/jobs/{job_id} with the returned job ID; never pay again just to poll. Failed paid token/transaction jobs can have one free POST /v1/jobs/{job_id}/retry; panel failures require support review and do not have that free retry contract. All braces above are non-executable templates. Supply actual task input before requesting payment. Small JSON analysis and error responses may include agent_guidance with code, next_action, payment_status and instructions. This is additive guidance, not a payment receipt. Read the original status, charged and payment_status fields and the x402 headers. An HTTP status alone is not proof of settlement or a successful analysis. Examples marked executable:false are shape descriptions, never inputs to pay unchanged. No guidance requires sending secrets, proofs or private keys to support. New guidance separates agent_guidance.payment.status from agent_guidance.analysis.status, each with an explanation. A settled payment can coexist with failed analysis or analysis needing review. The legacy charged:null field is retained for compatibility; it means the charge outcome is unconfirmed, not that no charge occurred. Read agent_guidance.payment.legacy_charged_note. confirmation_pending is a recorded attempt with no confirmed final outcome. reconciliation_required needs support review. There is no background reconciliation service; poll the saved job for free and contact rugshield@fastsoftware.uk if pending state persists. Never authorize another payment to resolve it. Every fresh agent_guidance.request_example explains the recommended next action using type, executable, explanation, effects.payment, effects.analysis, payment_proof_required and new_authorization_allowed. HTTP examples provide method and a safe URL, or a url_template and requires when actual input is missing. original_request references your locally saved request and proof; returning an example never signs or pays. A signed original-request recovery can settle the ORIGINAL authorization; it is not a second authorization and is not promised to be zero-cost. manual and none examples prescribe no automatic API call. Keep original proofs locally, never email them. Immutable historical replies retain their original bytes; free polling provides current guidance. Operation examples below are templates unless the path contains no braces: - GET /health: free liveness/configuration metadata, no analysis or payment; does not audit databases. - GET /v1/advisors: free public options, supported analysis chains, upstream rails and prices; no advisor calls. - GET /v1/trial/token-risk/{actual_token_mint}: free own-code analysis or cached data, subject to quota. - GET /v1/token-risk/{actual_token_mint}: initial unpaid quote; its authorized exact retry can settle payment and analyze. - GET /v1/risk-panel/{actual_token_mint}: initial unpaid quote; authorized retry prepays once and enqueues advisors. - POST /v1/tx-guard: JSON transaction must be your actual unsigned base64 serialization. Quote first; the authorized retry may settle and simulate, never sign or broadcast. - GET /v1/jobs/{server_returned_job_id}: free status/result retrieval, no analysis restart or settlement. - POST /v1/jobs/{server_returned_job_id}/retry: one eligible failed token/transaction-job retry, free and server-enforced; not available for panels, not a refund. Base or Solana in PAYMENT-REQUIRED identifies how the buyer can pay; analysis remains Solana mainnet. ## Free - [GET /v1/trial/token-risk/{mint}](/openapi.json): recurring free own-code Solana token analysis, no account and no paid advisor calls. Default 10 calls per 60 seconds per temporary connection identity, including repeated cache hits. JSON quota includes used, remaining and reset_after_s; 429 includes Retry-After. Shared token results may be cached for 120 seconds; freshness includes observed_at, cache_age_s and cached. NO_FLAGS does not mean safe. Only fixed aggregate trial counts are stored: no trial IP, client hash, user-agent, token input or payment proof history. Quota/cache reset on restart and apply per process, not per unique agent. Global fresh-work and concurrency limits may reject requests even with client quota remaining. Paid URLs in upgrade are optional: request their unpaid HTTP 402 quote before any payment authorization. - `quote_solana_risk_panel` on [/mcp/](/mcp/): free panel URL and USDC estimate; use an x402-capable HTTP client for the paid panel. - [GET /v1/advisors](/v1/advisors): anonymous advisor options, prices, supported token chains and upstream payment rails; individual performance is private. - [GET /v1/jobs/{job_id}](/openapi.json): free processing/ready/failed state. The result and payment receipt become visible to the job ID holder only after confirmed settlement. A failed paid transaction or token check has one free manual retry via POST .../retry; keep its job ID and contact rugshield@fastsoftware.uk if it still fails. - [GET /openapi.json](/openapi.json): OpenAPI schema. - [GET /apis.json](/apis.json): API directory metadata and links to all discovery surfaces. - [GET /.well-known/x402](/.well-known/x402): paid resource discovery.