XFuel

السجل الرسمي الإنتاجية

Submit AI inference to XFuel, pay per task (USDC via x402 or TFUEL), fetch/verify ZK proofs.

التثبيت

أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: ‏.cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).

NPM package xfuel-mcp
Claude Code
claude mcp add xfuel -e 'XFUEL_API_URL=https://api-testnet.xfuel.app' -e 'XFUEL_API_KEY=<your xfuel_api_key>' -e 'XFUEL_MCP_AUTH_TOKEN=<your xfuel_mcp_auth_token>' -e 'XFUEL_RPC_URL=<XFUEL_RPC_URL>' -e 'ZK_VERIFIER_ADDRESS=<ZK_VERIFIER_ADDRESS>' -e 'XFUEL_PAYER_PRIVATE_KEY=<your xfuel_payer_private_key>' -- npx -y xfuel-mcp@0.1.1
إعداد JSON (Claude Desktop وCursor وVS Code)
{
    "mcpServers": {
        "xfuel": {
            "command": "npx",
            "args": [
                "-y",
                "xfuel-mcp@0.1.1"
            ],
            "env": {
                "XFUEL_API_URL": "https://api-testnet.xfuel.app",
                "XFUEL_API_KEY": "<your xfuel_api_key>",
                "XFUEL_MCP_AUTH_TOKEN": "<your xfuel_mcp_auth_token>",
                "XFUEL_RPC_URL": "<XFUEL_RPC_URL>",
                "ZK_VERIFIER_ADDRESS": "<ZK_VERIFIER_ADDRESS>",
                "XFUEL_PAYER_PRIVATE_KEY": "<your xfuel_payer_private_key>"
            }
        }
    }
}

متغيرات البيئة

  • XFUEL_API_URL XFuel API base URL. Defaults to the hosted testnet demo.
  • XFUEL_API_KEY سري API key sent as X-API-Key. Defaults to the shared public demo key.
  • XFUEL_MCP_AUTH_TOKEN سري Optional bearer token required on the HTTP transport (Authorization: Bearer <token>).
  • XFUEL_RPC_URL Theta RPC URL enabling verify_proof's optional on-chain nullifier read.
  • ZK_VERIFIER_ADDRESS ZKVerifierSP1 contract address (paired with XFUEL_RPC_URL).
  • XFUEL_PAYER_PRIVATE_KEY سري Funded payer private key that enables the pay_with_usdc tool. Moves USDC — keep secret; use a low-balance wallet.

التوثيق

مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.

المحتويات
  1. Chit402
  2. Table of Contents
  3. Setup
  4. Try the paid door
  5. Dual anchoring
  6. Documentation
  7. Security

Chit402

Chit402 is the book. This agent spent Y on this job. You hold hub, model, and amount.

POST /v1/chat/completions returns a signed receipt: hub, model, amount, verify_url. Cost-plus, quoted, receipted — pay USDC on Base or Solana. GET|POST /v1/agents/:agent_id/book is possession-gated last-N collected spend. Signed receipt is table stakes (ES256 issuer signature); SP1 settlement proof is on demand. The issuer signature does not prove USDC moved. The product is the collected row — sidecar + ingest if you already pay a provider; without a collected USDC payment.ref the receipt is client-attested only. Register is fail-closed: a collected HMAC-valid receipt plus a plain EOA (personal_sign), AAWP official, or smart-account agentWallet.

To learn more about the protocol design, read the whitepaper. For live endpoints and what is real vs mock today, see runtime state. Full documentation hub: docs/.

Live app: https://chit402.com
Public API: https://api.chit402.com

Table of Contents

Setup

Prerequisites

Install Node.js 20+ and npm 10+. A Rust toolchain is required if you build CosmWasm, SP1, or zkLLM crates.

Build and test

Clone the repository, install dependencies, compile contracts, and run the test suite:

git clone https://github.com/XFuel-Lab/chit402.git
cd chit402
npm install
npx hardhat compile
npx hardhat test
Agent gateway

The agent-facing API (settlement, payments, proving, receipts) runs from services/gateway:

cd services/gateway
npm install
npm run m2m-server

The gateway listens on http://localhost:3002 by default. Env examples live under services/gateway/. Production layout is documented in deployment.

Website
cd apps/web
npm install
npm run dev

Try the paid door

No account. No API key. A wallet that can pay the 402 is enough. Register is only to hold the book after a collected receipt.

curl.exe -sS -D - -X POST https://api.chit402.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{}'

Unauthenticated /v1 returns HTTP 402 with payment requirements (USDC on Base or Solana). The receipt prices the next call. Working copy: docs/CHAT_COMPLETIONS_GATEWAY.md.

npm install chit402-sdk
npx chit402-mcp

flagship-demo.ts is the paid /task-request path (402 without a payer). Do not start there.

Windows note: if you use raw HTTP, call curl.exe — PowerShell’s curl is not real curl.

API reference: M2M API · Chat completions: docs here · Payments: x402 adapter.

Dual anchoring

Each UTC day the gateway signs the receipt Merkle root and publishes it in two places. GET /v1/receipts/tree/head returns both under anchors.base and anchors.solana (signature, slot, cluster, memo). A missing key or a failed send leaves that side pending. A day that already has a Solana signature is not posted again. Details: docs/product/receipt-merkle.md.

ChainEnvWhat is posted
BaseRECEIPT_ANCHOR_PRIVATE_KEY, optional RECEIPT_ANCHOR_FROM, BASE_RPC_URL or SETTLEMENT_RPC_URLZero-value transaction, calldata = 32-byte root
SolanaSOLANA_ANCHOR_SECRET_KEY (base58 or JSON array), SOLANA_RPC_URL, optional SOLANA_ANCHOR_CLUSTER (default mainnet-beta; devnet for tests)SPL Memo chit402:root:v1:<book_or_global>:<yyyy-mm-dd>:<root_hex>:<prev_root_hex>

Keys stay in the host environment. They are not read from a file in this repo.

GET /v1/receipts/:task_id/inclusion proves one leaf against a signed head. When that head is not itself anchored and a later anchored signed head contains the leaf, the JSON adds optional covered_by. It names the smallest such head: epoch, tree_size, root, inclusion_url (/v1/receipts/<task_id>/inclusion?tree_size=<N>), and anchors (anchors.base.tx, and anchors.solana.slot / anchors.solana.signature when Solana is present). The field is omitted when the head is itself anchored. A quarantined head is not served and is not used as covered_by. Existing fields stay as they are. Detail: docs/product/receipt-merkle.md.

npx chit402-verify receipt.json inclusion.json head.json --rpc

That checks the inclusion proof, fetches the Solana transaction and requires the memo to contain the root, and checks the Base calldata the same way. It prints what this proves and what it does not prove.

One memo costs the Solana base fee: 5,000 lamports, 0.000005 SOL. No account is created, so there is no rent, and the sender does not add a priority fee. At about $120 per SOL that is under $0.001.

Devnet smoke (export the variables in the shell; the script does not load an env file):

export SOLANA_ANCHOR_SECRET_KEY   # base58 or JSON array, host env only
export SOLANA_ANCHOR_CLUSTER=devnet
export SOLANA_RPC_URL=https://api.devnet.solana.com
node scripts/solana-anchor-smoke

Documentation

DocDescription
WHITEPAPER.mdProtocol design
docs/README.mdDocumentation hub
docs/POSITIONING.mdMessaging
docs/DEPLOYMENT.mdDeployment
docs/TESTING.mdTests
AGENTS.mdAgent / LLM index
CONTRIBUTING.mdContributing

Security

Responsible disclosure (safe harbour; no cash bounty until the first audit): docs/bug-bounty.md.
Reporting policy: SECURITY.md.


Apache-2.0 — see LICENSE.

الأسئلة الشائعة

ما هو XFuel؟

Submit AI inference to XFuel, pay per task (USDC via x402 or TFUEL), fetch/verify ZK proofs.

كيف أثبّت XFuel؟

يعمل على جهازك. في Claude Code: claude mcp add xfuel -e 'XFUEL_API_URL=https://api-testnet.xfuel.app' -e 'XFUEL_API_KEY=<your xfuel_api_key>' -e 'XFUEL_MCP_AUTH_TOKEN=<your xfuel_mcp_auth_token>' -e 'XFUEL_RPC_URL=<XFUEL_RPC_URL>' -e 'ZK_VERIFIER_ADDRESS=<ZK_VERIFIER_ADDRESS>' -e 'XFUEL_PAYER_PRIVATE_KEY=<your xfuel_payer_private_key>' -- npx -y xfuel-mcp@0.1.1. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.

هل يحتاج XFuel إلى مفتاح API؟

نعم. يتطلب XFUEL_API_KEY, XFUEL_MCP_AUTH_TOKEN, XFUEL_PAYER_PRIVATE_KEY، وتضبطها في إعداداته.

هل XFuel مفتوح المصدر؟

نعم. شيفرته متاحة على GitHub بترخيص Apache-2.0.

من يصون XFuel؟

ينشره XFuel-Lab. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.

من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.