{
  "schema": "ens-tools.agent-pricing/v1",
  "id": "ens-tools-agent-platform-pricing",
  "version": "2.3.0",
  "title": "ENS.Tools agent platform pricing",
  "canonicalPricingApi": "https://ens.tools/api/developers/billing",
  "console": "https://ens.tools/developers/console",
  "web": "https://ens.tools/agents/pricing",
  "purchaseUrls": {
    "operator": "https://ens.tools/developers/console?plan=operator#subscribe",
    "team": "https://ens.tools/developers/console?plan=team#subscribe",
    "scale": "https://ens.tools/developers/console?plan=scale#subscribe"
  },
  "publicBaseline": {
    "price": "0 USDC",
    "authentication": "none",
    "mcp": "https://ens.tools/mcp",
    "includes": [
      "public MCP reads",
      "public evidence",
      "safe unsigned transaction preparation"
    ]
  },
  "plans": {
    "free": {
      "price": "0 USDC",
      "liveCallsPerMonth": 10000,
      "sandboxCallsPerDay": 1000
    },
    "operator": {
      "recurringCharge": "39 USDC",
      "periodDays": 30,
      "liveCallsPerMonth": 100000,
      "sandboxCallsPerDay": 5000,
      "purchaseUrl": "https://ens.tools/developers/console?plan=operator#subscribe"
    },
    "team": {
      "recurringCharge": "149 USDC",
      "periodDays": 30,
      "liveCallsPerMonth": 1000000,
      "sandboxCallsPerDay": 25000,
      "purchaseUrl": "https://ens.tools/developers/console?plan=team#subscribe"
    },
    "scale": {
      "recurringCharge": "499 USDC",
      "periodDays": 30,
      "liveCallsPerMonth": 5000000,
      "sandboxCallsPerDay": 100000,
      "purchaseUrl": "https://ens.tools/developers/console?plan=scale#subscribe"
    }
  },
  "provider": {
    "id": "base-subscription",
    "productionAvailability": "Read providers.base.available from canonicalPricingApi before presenting an approval action.",
    "automaticRenewal": true,
    "network": "Base",
    "chainId": 8453,
    "asset": "USDC",
    "officialUsdc": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "periodDays": 30,
    "subscriptionOwnerSource": "providers.base.subscriptionOwner",
    "recipient": "0xeFcE7f86Fd1efb0359A91C873E6DEE9F98788713",
    "recipientEns": "enstools.eth",
    "requiredConfirmations": 5,
    "disabledPurchaseProviders": [
      "stripe",
      "direct-base",
      "eth"
    ]
  },
  "scopeBoundary": {
    "thisContractCovers": "ENS.Tools authenticated agent-platform capacity subscriptions only.",
    "subscriptionPurchaseMethod": "Recurring official USDC on Base through a Base Account spend permission.",
    "payerOnboarding": {
      "humanRequired": true,
      "wallet": "Base Account is Coinbase's self-custodial smart wallet, not every wallet connected to Base.",
      "existingUser": "Existing Base App or Smart Wallet users can sign in.",
      "newUser": "A human payer can create a Base Account with email or a passkey; a Coinbase exchange account is not required.",
      "funding": "The Base Account must separately hold the selected plan amount in official USDC on Base.",
      "recovery": "If approval completed but linking was interrupted, the human can authenticate the same Base Account and recover only that payer's exact active ENS.Tools permission. Recovery requests no new allowance or payment."
    },
    "separateMoneyFlows": [
      {
        "id": "agent-job-escrow",
        "description": "User-selected ERC-8183-compatible job funding may use allowlisted USDC or WETH on Base or Ethereum. Native ETH must be wrapped to WETH. This does not buy ENS.Tools platform capacity.",
        "instructions": "https://ens.tools/.well-known/agent-skills/commerce.json"
      },
      {
        "id": "ens-and-marketplace",
        "description": "ENS registration, renewal, network gas, and marketplace settlement are separate onchain costs and are not agent-platform subscriptions.",
        "instructions": "https://ens.tools/docs/fees"
      }
    ]
  },
  "workflow": [
    {
      "step": 1,
      "actor": "agent",
      "action": "GET canonicalPricingApi and require providers.base.available=true."
    },
    {
      "step": 2,
      "actor": "wallet",
      "action": "A supervising human signs in to or creates a Coinbase-built Base Account, funds its separate Base USDC balance, then approves the exact plan amount, subscription owner and 30-day period. This is permission, not payment."
    },
    {
      "step": 3,
      "actor": "owner-wallet",
      "action": "Sign the exact developer-account-to-billing-wallet link, then POST register_base_subscription. The account remains Not paid and no charge is queued."
    },
    {
      "step": 4,
      "actor": "human",
      "action": "Review the exact price and explicitly POST pay_base_subscription_now. This requests the first payment but is not payment proof."
    },
    {
      "step": 5,
      "actor": "platform",
      "action": "Only after step 4, re-read the permission, charge the exact amount to enstools.eth, expose the transaction, verify five confirmations, then activate capacity."
    }
  ],
  "operations": {
    "prepareBillingWalletLink": "prepare_base_billing_wallet_link",
    "register": "register_base_subscription",
    "payFirstCharge": "pay_base_subscription_now",
    "refresh": "refresh_base_subscription",
    "resumeRequestedCharge": "resume_base_subscription_charge",
    "retryFailedCharge": "retry_base_subscription_charge",
    "cancel": "cancel_base_subscription"
  },
  "paymentStateContract": {
    "payment_required": "Permission is linked. No payment has been requested or made.",
    "payment_requested": "The explicit payment action was recorded, but no confirmed payment exists.",
    "confirming": "A Base transaction exists and is awaiting five confirmations.",
    "paid": "The exact official-USDC transfer is confirmed and entitlement is active.",
    "failed": "The payment did not complete; retry is available only for this state."
  },
  "purchaseBoundary": {
    "agentMay": [
      "read plans and provider readiness",
      "explain the exact allowance, spender, period, asset, chain and recipient",
      "open the Base Account approval flow after explicit user intent",
      "register the returned permission",
      "show the exact first-payment price and current evidence state",
      "monitor status and receipts"
    ],
    "walletMust": [
      "review the recurring charge, subscription owner and 30-day period",
      "approve or reject the Base spend permission",
      "sign or reject the exact owner-to-billing-wallet link",
      "separately review and explicitly start the first payment"
    ],
    "agentMustNot": [
      "offer Stripe, direct transfers or ETH as a purchase path",
      "request approval while providers.base.available is false",
      "start the first payment merely because permission or identity linking succeeded",
      "treat a permission response, payment request or transaction hash as payment proof",
      "claim capacity before confirmed exact USDC evidence",
      "publish an API key in ENS, prompts, logs or client code"
    ]
  },
  "entitlementRule": "Capacity activates or renews only after a successful Base transaction transfers the exact plan amount in official Base USDC from the registered payer to enstools.eth and reaches five confirmations.",
  "independence": {
    "payToRank": false,
    "payToVerify": false,
    "payToTrust": false,
    "note": "Paid capacity never changes directory rank, identity verification, health evidence, policy authorization, canary evidence, or escrow truth."
  }
}
