{"service": "fleet-air-traffic-control", "provider": "TextForAgents LLC", "version": "1.1.0", "description": "Framework-neutral fleet air-traffic control for agents: resource-scoped leases (quota consume-on-release, exclusive file, human-attention queue with priority + aging and agent-visible position) and cross-framework task-fingerprint duplicate suppression with a discriminating-param veto. Any framework's agents coordinate through plain HTTP JSON; no SDK is required.", "features": ["POST /clearance \u2014 request a lease for a resource; identical in-flight work from another agent/framework is suppressed as DUPLICATE (Team tier and above)", "Resource queues with promotion on release/expiry; poll a queued fingerprint with POST /poll", "Human-attention as a schedulable lease (Team tier and above): one agent holds the human's attention, others queue with a visible position and holder", "Quota resources with consume-on-release accounting (POST /register_quota)", "Owner-only validate/release/heartbeat; fail-closed on foreign or expired leases", "Per-account isolation: your leases, fingerprints, quotas and audit chain are invisible to every other account", "Hash-chained audit log (GET /audit verifies the chain)"], "tiers": {"solo": {"price": "$5/mo", "price_atomic_usdc": 5000000, "term_days": 30, "concurrent_agents": 10, "human_attention_queue": false, "duplicate_suppression": false, "priority_classes": false, "contention_reports": false}, "team": {"price": "$15/mo", "price_atomic_usdc": 15000000, "term_days": 30, "concurrent_agents": 50, "human_attention_queue": true, "duplicate_suppression": true, "priority_classes": false, "contention_reports": false}, "fleet": {"price": "$39/mo", "price_atomic_usdc": 39000000, "term_days": 30, "concurrent_agents": 250, "human_attention_queue": true, "duplicate_suppression": true, "priority_classes": true, "contention_reports": true}}, "trial": "One-time free trial: first month of Solo free, once per operator account \u2014 one grant per account AND per payer wallet, enforced server-side. Claim via POST /register then POST /trial.", "how_to_start": ["1. POST /register {account_name, payer_wallet} -> {account_id, claim_token, payment_instructions}", "2a. Free trial: POST /trial {account_id, claim_token} -> owner token (Solo, 30 days). The token is shown once; only its SHA-256 hash is stored.", "2b. Or pay: POST /subscribe {account_id, tier} with an x402 X-PAYMENT header (Base USDC, EIP-3009) at the tier price -> owner token, 30-day term. Renewal is another /subscribe payment; the term extends from the later of now / current expiry and the token rotates.", "3. Call the API with Authorization: Bearer <token>.", "Lost-token recovery is a manual step via support@textforagents.com \u2014 the only human step; it is a recovery path, not the front door."], "auth": {"scheme": "Bearer token (opaque, >=32 bytes entropy, SHA-256 at rest, shown once at issuance)", "public_routes": ["GET /", "GET /health", "GET /openapi.json", "GET /llms.txt", "GET /.well-known/x402", "GET /docs", "POST /register", "POST /trial", "POST /subscribe"], "protected_routes": ["POST /clearance", "POST /poll", "POST /validate", "POST /release", "POST /heartbeat", "POST /register_quota", "POST /tokens/revoke", "GET /status", "GET /audit"], "lapsed_token": "401 with a body naming POST /subscribe as the renewal path", "revoke": "POST /tokens/revoke \u2014 a token revokes itself; the account owner revokes any token under its account by token_sha256"}, "payment": {"rail": "x402 (exact scheme, EIP-3009 transferWithAuthorization)", "network": "base", "asset": "USDC", "asset_contract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "payTo": "0xAc2E243a075fEe442e4c6864DcF880eb4e3A3862", "payto_ens": "textforagents.base.eth", "terms": "/.well-known/x402", "verification": "Payments are verified, never trusted from the header: local EIP-3009 checks, signer recovery (signer == authorization.from), facilitator /verify, atomic nonce burn, /settle \u2014 then the token is issued."}, "limits": ["Concurrent-agent caps per tier: Solo 10, Team 50, Fleet 250 (distinct agent identities holding or queueing for leases).", "Human-attention queue and duplicate suppression require Team or Fleet; priority classes and contention reports require Fleet.", "Request bodies over 4 MB are rejected with a structured JSON 413.", "A queue entry lives only queue_wait_s; when it lapses the poll result is QUEUE_TIMEOUT, the entry is dropped, and you must re-request clearance.", "Plain HTTP JSON API \u2014 there is no MCP endpoint.", "Single-host service; state persists across restarts."], "routes": ["POST /register", "POST /trial", "POST /subscribe", "POST /tokens/revoke", "POST /clearance", "POST /poll", "POST /validate", "POST /release", "POST /heartbeat", "POST /register_quota", "GET /status", "GET /audit", "GET /health", "GET /openapi.json", "GET /llms.txt", "GET /.well-known/x402"], "support": "support@textforagents.com", "health": "/health"}