Priors vs XFuel
A side-by-side look at the Priors and XFuel MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Priors for finance & fintech work over a hosted endpoint; choose XFuel for finance & fintech as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose Priors when
- You need dedicated capabilities in the Finance & Fintech domain.
- You prefer a remote HTTP/SSE transport.
- Its auth model fits you: No auth required.
- You have the keys it needs:
PRIORS_KEY. - You want tools like
pay_url, wallet_balance, credit_status.
Choose XFuel when
- You need dedicated capabilities in the Finance & Fintech domain.
- You prefer a local stdio subprocess transport.
- You want tools like
chat_completions, submit_inference, register_agent.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Finance & Fintech | Finance & Fintech |
| Quality signal | 85/100 · Excellent | 60/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Remote HTTP/SSE | Local subprocess (stdio) |
| Auth | No auth required | Not declared |
| Pricing | Free | Not declared |
| Required env vars | PRIORS_KEY | None listed |
| Verified owner | Verified | Community listing |
| GitHub stars | 5 | 1 |
| Directory activity | 8 views 4 installs 0 upvotes | 3 views 0 installs 0 upvotes |
| Tools | 20 | 17 |
| Full listing | View Priors | View XFuel |
Tools & capabilities
Priors tools 20
pay_urlFetch a URL that may charge per call with x402 (HTTP 402) and pay it in USDG on Robinhood Chain from the configured wallet. Moves real money: confirm the URL and the most you will pay with the user first. Pays only if the price is at or below max_price_usd (default 0.10 USD); a higher price is refused before anything is signed. If the wallet is short, it borrows the gap from the agent's Priors credit line only when max_borrow_usd is given and covers it (the loan must then be repaid with the repay tool before its due date). Returns what was paid and borrowed, and the response body.wallet_balanceShow how much USDG (the dollar the payments and loans use) and native ETH for gas a Robinhood Chain address holds. Defaults to the configured wallet; any address works without a key. Read-only.credit_statusShow a Priors agent's credit line on Robinhood Chain: who backs it, the line, what is drawn and available, its repayment record, score and open loans with due dates, and (for the configured wallet) its Autopay: on or off, the limit per loan, the budget left, the next loan it repays and any shortfall. agent_id defaults to the configured wallet's agent. Read-only.stock_assetsList the Robinhood stock tokens the Priors stock vault accepts as collateral on Robinhood Chain: each token's live Chainlink price, whether the vault lends against it right now (and if not, why: a sharp price move, a multiplier change such as a split, a paused or blocked token), and its loan-to-value. Read-only.stock_positionShow the stock tokens behind a Priors agent's stock line on Robinhood Chain: the token and amount the vault holds, what the vault values them at, the loan-to-value, what the line can draw now, whether new loans wait on a lending hold, and whether the line is closing. agent_id defaults to the configured wallet's agent. Read-only.stock_line_requestWhen the agent's Priors line is too small for a task, ask its owner for a line backed by a Robinhood stock token the owner holds: checks the token takes new lines now (price, holds, caps, the week's room, against the line the deposit opens) and the agent can take one, sizes the deposit to the line asked for at the agent's own loan-to-value (its record bonus included), with room for a 23% fall, states the cost in cents for a day and a week and what a default would keep, and returns a Go mode link that opens the owner's deposit sheet already filled in. Nothing is deposited or signed by this tool. Ask once per task, and only for what the task needs. agent_id defaults to the configured agent (PRIORS_AGENT_ID, or the one identity minted to the configured wallet); when a wallet is configured and its agent can't be told, the call fails and asks for agent_id. Without agent_id and with no wallet configured, the request is for a new agent.score_ofLook up any agent's Priors score (0 to 1000) and repayment record on Robinhood Chain: a public record built from on-chain repayments, plus the open Priors Score v2 and its trust rung when published. Useful before trusting or paying an agent. Read-only.borrowBorrow USDG from the agent's Priors credit line into the configured wallet. Moves real money and opens a loan with a fee that must be repaid (principal + fee) before the due date, or the agent's record is burnt and its backer pays. Always state the amount, term and fee to the user and get their go-ahead first; use dry_run: true to get the fee without borrowing.repayRepay the agent's own Priors loans in full (principal + fee) from the configured wallet's USDG; a loan of another agent, or one opened while someone else held the agent, is refused, and so is every loan when the wallet is neither the agent's owner nor its declared ERC-8004 wallet. Give either loan_id for one loan, or all: true to repay every open loan, earliest due first, as far as the balance covers. Moves real money: state the amounts (credit_status lists them) to the user and get their go-ahead first. The answer ends with share facts for each loan repaid (the amount, on time or late, the agent's record page), also as structured content with a suggested line; this server never posts anything.autopay_onTurn on Autopay for the configured agent: this wallet approves AutoRepay for a USDG budget (4 x the limit per loan) and enrolls, so each Priors loan is repaid from this wallet (then its savings, if chosen) in the 6 hours before it is due, by Priors' keeper or anyone, with no call per loan, while the wallet holds enough. It makes an on-time repayment more likely; it is not a promise. Call it again to change the limit or approve more budget when it runs low. Moves real allowances: state the limit and the budget to the user and get their go-ahead once. Needs ETH for gas.autopay_offTurn off Autopay for the configured agent: AutoRepay stops repaying its loans from this wallet at once. With clear_budget: true, also set this wallet's allowances to AutoRepay to 0. Loans must then be repaid with the repay tool before their due date.savingsShow how much USDG an address has saved in the savings vault (Steakhouse USDG on Morpho by default), what the vault can pay out to it right now, and the USDG in its wallet. Defaults to the configured wallet. Read-only.- +8 more on the listing page
XFuel tools 17
chat_completionsGenerate text via Chit402's OpenAI-compatible POST /v1/chat/completions. This is the first-hour / demo path. With the demo key it is unmetered (rate-limited). It is NOT submit_inference and does NOT spend USDC. Args: - messages (required): OpenAI chat messages, e.g. [{role:"user", content:"Say hello"}] - model (optional): catalog id from list_models (default xfuel/auto) - max_tokens, temperature (optional) Returns the completion plus top-level task_id and verify_url (also under xfuel). proof_outcome may still be pending — use verify_receipt for offline binding checks. Do not wait in this tool.submit_inferenceSubmit a PAID M2M inference task (POST /task-request). Default rail is USDC on Base. Without a payer this returns HTTP 402. This is NOT the unmetered demo path — use chat_completions to generate text with the demo key. Pass messages or input so a live provider is actually called. input_hash/memo alone do not send a prompt to the model. Args: - model (string): live catalog id from list_models - sender (string): 0x address that owns/pays for the task - amount (string): USDC 6 decimals; 2000 = $0.002; minimum 2000 - messages / input (optional): the prompt. Required for live routing. - max_tokens, temperature (optional) Poll get_task_status(task_id). Pay the live $0.01 door at POST /v1/chat/completions from the agent's wallet — MCP does not take a human private key.register_agentPOST /v1/agents/register. Binds an AAWP official or smart-account agentWallet to an integer agent_id using a collected HMAC-valid receipt (task_id from a paid POST /v1/chat/completions). Demo receipts do not qualify. API key is not a wallet. Does not accept a human private key. Returns agent_id (required later by POST /erc8004/validate) and validate_score.get_agent_bookGET|POST /v1/agents/:agent_id/book. Possession-gated last-N collected UsageSettled rows for that agent_id (task_id, payment.ref, rail, amount, collected_at, route). Demo / unmetered rows never appear. Default N=50, max 200. Totals: count, USDC sum, by rail. Response includes caps (budget Y, spent, remaining) when set. Not a public index. API key is not possession. Does not accept a human private key. Pass the session issued by register_agent (or an HMAC over agent_id + window using that session). Unauth or wrong proof returns 401/403 with an empty body.get_bookGET|POST /v1/agents/:agent_id/book. Possession-gated last-N collected UsageSettled rows for that agent_id (task_id, payment.ref, rail, amount, collected_at, route). Demo / unmetered rows never appear. Default N=50, max 200. Totals: count, USDC sum, by rail. Response includes caps (budget Y, spent, remaining) when set. Not a public index. API key is not possession. Does not accept a human private key. Pass the session issued by register_agent (or an HMAC over agent_id + window using that session). Unauth or wrong proof returns 401/403 with an empty body. Alias of get_agent_book for Eliza / Cursor clients.verify_receiptFetch GET /receipt/:task_id?format=json and verify payment binding locally via @xfuel/verify — no trust in HTML, no private keys. This is the default "prove it" path for agents holding hub, model, amount, verify_url. Args: - task_id (preferred) or verify_url — one required - fetch_jwks (default true): load /.well-known/jwks.json for issuer signature check - check_payer (default false): on-chain USDC payer match (Base or Solana RPC) - check_nullifier (default false): SP1 nullifier anchor read (optional Tier-2) Returns { verify_url, receipt, verification: { overall, binding, issuer_signature, … } }. overall is verified | partial | failed. Unmetered demo receipts may be partial (no binding).get_task_statusGet the current status of a Chit402 task, including proof outcome and fee breakdown. Args: - task_id (string): from chat_completions (xfuel.task_id) or submit_inference Returns JSON: { task_id, status, proof_outcome, verify_url, message_type, chain_id, gross_amount, fee_amount, net_amount, fee_bps, payment_rail, payment_ref, result, sp1_proof, created_at, updated_at }. 'verify_url' is a public, no-auth receipt page you can open or share to prove settlement. 'status' reaches a terminal value ('completed' | 'fee_collected' | 'failed'); 'proof_outcome' is one of 'pending' | 'valid' | 'regenerable' | 'invalid'.get_proofFetch the SP1 ZK settlement proof for a settled task. Args: - task_id (string): from chat_completions (xfuel.task_id) or submit_inference Returns JSON: { task_id, status, proof_outcome, verify_url, payment_binding, sp1_proof: { proof, publicInputs, nullifier, provingTimeMs }, fee }. 'verify_url' is a public, no-auth receipt page you can open or share to prove settlement. The proof attests settlement metadata + a commitment to the output hash (NOT inference correctness). To validate it, use verify_proof(task_id). Fails if the task has not settled yet — poll get_task_status until proof_outcome is 'valid'.verify_proofIndependently verify a settled task's proof client-side (the "prove it" flow in one call): 1. a proof is present and proof_outcome === 'valid'; 2. the x402 payment binding (if present) re-derives to the committed value; 3. (optional) the on-chain nullifier's spent state, when check_nullifier=true AND the server was started with XFUEL_RPC_URL + ZK_VERIFIER_ADDRESS. Args: - task_id (string): from chat_completions (xfuel.task_id) or submit_inference - check_nullifier (boolean, optional): also read the on-chain nullifier state (default false) Returns JSON: { ok, checks: { hasProof, proofOutcomeValid, paymentBinding, nullifier }, reasons }. 'ok' is true when the proof is present + valid and any present payment binding is consistent. The nullifier read is informational and does not gate 'ok'.quote_taskPreview per-rail pricing WITHOUT creating a task. Use before submit_inference. Unknown model ids still return the $0.01 USDC floor — the human summary warns when priced_model is null (inference will fail). Args: - model (preferred) or model_id: catalog id to price - amount (optional): USDC 6 decimals for the USDC rail - messages / max_tokens / tools: forecast the request you will submit Unmetered chat_completions does not need this quote.get_healthCheck the connected Chit402 API's health and configuration (fee config, supported chains, message types, demo limits). Useful for discovery/diagnostics. Args: none. Returns JSON: the /health payload (status, server, version, fee_config, chains, message_types, …).get_my_statsFetch usage for the configured API key (GET /stats/me). The public demo key chit402-demo is SHARED — numbers are not this client. Bring your own XFUEL_API_KEY for buyer-scoped stats.- +5 more on the listing page
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
Priors
{
"mcpServers": {
"priors": {
"command": "npx",
"args": [
"-y",
"@priors/mcp"
],
"env": {
"PRIORS_KEY": "YOUR_PRIORS_KEY_HERE"
}
}
}
}
XFuel
{
"mcpServers": {
"xfuel": {
"command": "npx",
"args": [
"-y",
"chit402-mcp"
]
}
}
}
Frequently asked questions
Priors is categorized under Finance & Fintech and uses a remote HTTP/SSE transport. XFuel belongs to Finance & Fintech and uses a local stdio subprocess. Pick Priors for finance & fintech work and XFuel for finance & fintech.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.
Priors is listed as free. Auth: no auth required. XFuel has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add priors and xfuel as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, Priors has a quality signal of 85/100 (Excellent) with 8 views, 4 installs and 5 GitHub stars. XFuel has 60/100 (Good) with 3 views, 0 installs and 1 GitHub stars.