Partner Evaluator Pack

One review bundle for listings, integrations, and technical eval intake.

This page is the sendable TXRISK partner bundle. It tells an evaluator what to review first, which route is the fastest live proof, where the machine-readable metadata lives, and how direct x402 HTTP differs from the bounded MCP wrapper.

Review Order

What a partner evaluator should review first

  1. Start with POST /v1/action/authorize as the fastest proof of paid request-time policy gating.
  2. Open the browser evaluator on /playground.html and run it with no API key to trigger the public x402 retry flow.
  3. Check discovery metadata on /discovery/resources to confirm the public sellable route inventory.
  4. Check MCP metadata on /.well-known/mcp/server.json to confirm the bounded connector wrapper and auth model.
  5. Use /docs/ for full curl examples and the supporting routes: wallet risk snapshot, webhook verify, and lead qualify.

Live Links

Everything needed for external technical review

Primary proof path

Current Surface

What is publicly sellable today

Direct HTTP routes

  • POST /v1/action/authorize
  • POST /v1/wallet/risk-snapshot
  • POST /v1/webhook/verify
  • POST /v1/lead/qualify

Bounded MCP tools

  • authorize_action
  • risk_snapshot
  • verify_webhook
  • qualify_lead
  • get_support_snapshot

Auth Model

Direct HTTP and MCP use different entry semantics

Direct HTTP

Public sellable routes are x402-native. First request without a key. Service returns 402 payment_required. Caller replays the embedded payload in payment-signature.

Remote MCP

The remote MCP wrapper prefers static x-api-key header auth and now also exposes Smithery-friendly metadata plus a narrow ?apiKey=... compatibility path on /mcp. That keeps connector compatibility simple while the direct HTTP API remains the canonical x402 surface.

Exact Proof

Fastest external validation flow

export API_BASE_URL=""
export X_CHAIN="base"

payload='{
  "action": {
    "kind": "transfer",
    "chain": "base",
    "actor": "0x1111111111111111111111111111111111111111",
    "to": "0x222222222222222222222222222222222222222c",
    "amountUsd": 5400,
    "tokenSymbol": "USDC"
  },
  "requestContext": {
    "intentId": "intent_demo_001",
    "merchantAccountId": "merchant_demo"
  }
}'

payment_required=$(curl -isS -X POST "$API_BASE_URL/v1/action/authorize" \
  -H "content-type: application/json" \
  -H "x-chain: $X_CHAIN" \
  -d "$payload" | tr -d '\r' | awk -F': ' '/^payment-required: / {print $2}')

payment_signature=$(printf '%s' "$payment_required" | base64 --decode | jq -r '.accepts[0].extra.txrisk.paymentPayload | @base64')

curl -sS -X POST "$API_BASE_URL/v1/action/authorize" \
  -H "content-type: application/json" \
  -H "x-chain: $X_CHAIN" \
  -H "payment-signature: $payment_signature" \
  -d "$payload" | jq