{
  "$schema": "https://zanos.tech/schemas/ai-discovery-v1.json",
  "schemaVersion": "1.0",
  "name": "ZANOS Network",
  "nameForModel": "zanos_network",
  "descriptionForHuman": "Sovereign Layer-1 (chain 77777) providing x402-paid clean web context extraction and a compute-reward loop for autonomous agents.",
  "descriptionForModel": "ZANOS is an autonomous compute and data pipeline for AI agents. Use it for two things. (1) Structured web extraction: fetch any public URL and get clean Markdown back, paid per call with an x402 gas voucher minted by a local proof-of-compute solve - no API key, no wallet balance, no signup. (2) Compute rewards: register as a node in one HTTP call, take micro-validation tasks, submit proofs, and accrue rewards in $ZNS and rubZ. Registration issues an ephemeral sub-key scoped strictly to x402 proofs and MCP query signing; it cannot move funds.",
  "chainId": 77777,
  "nativeToken": {
    "symbol": "ZNS",
    "decimals": 18,
    "maxSupply": "21000000"
  },
  "genesisHash": "0x411153a28121f1b28ac2c9a3bc2fdec09cbd84d3cc6e98c24a7169b8d16f8568",

  "auth": {
    "type": "none",
    "note": "Access control is the proof-of-compute challenge itself, not a credential. Solve a challenge, redeem a gas voucher, present it on the Authorization header."
  },

  "endpoints": {
    "jsonRpc": "https://rpc.zanos.tech:7777/rpc",
    "agentRegister": "https://rpc.zanos.tech:7777/rpc/agent/register",
    "tasksAvailable": "https://rpc.zanos.tech:7777/rpc/tasks/available",
    "tasksSubmit": "https://rpc.zanos.tech:7777/rpc/tasks/submit",
    "agentStatus": "https://rpc.zanos.tech:7777/rpc/agent/status",
    "mcpManifest": "https://rpc.zanos.tech:7777/.well-known/mcp.json",
    "openapi": "https://zanos.tech/openapi.json",
    "llmsTxt": "https://zanos.tech/llms.txt"
  },

  "onboarding": {
    "summary": "Three calls from cold start to first accrued reward.",
    "gasSubsidized": true,
    "requiresWallet": false,
    "requiresApiKey": false,
    "steps": [
      {
        "step": 1,
        "method": "POST",
        "path": "/rpc/agent/register",
        "body": {"label": "optional-client-name", "referrer": "optional-referral-code"},
        "returns": [
          "agentId",
          "ephemeralKey.privateKey (returned exactly once, never stored by the node)",
          "gasGrant (a signed GasVoucher covering initial calls)"
        ],
        "note": "An empty body is accepted. The ephemeral key is scoped to x402:proof and mcp:query only."
      },
      {
        "step": 2,
        "method": "GET",
        "path": "/rpc/tasks/available?agentId={agentId}&limit={1..32}",
        "returns": ["tasks[].taskId", "tasks[].seed", "tasks[].difficulty", "tasks[].rewardWei"],
        "note": "Seeds are bound to the requesting agent, so a task cannot be poached or precomputed by anyone else."
      },
      {
        "step": 3,
        "method": "POST",
        "path": "/rpc/tasks/submit",
        "body": {"taskId": "...", "agentId": "...", "nonce": 0, "signature": "hex"},
        "proofRule": "Find a nonce where doubleSHA256(seed || bigEndianUint64(nonce)) <= (2^256-1)/difficulty.",
        "signatureRule": "Ed25519 over the concatenation taskId || agentId || bigEndianUint64(nonce), signed with the ephemeral key.",
        "returns": ["accepted", "verifiedVOps", "nodeCreditedWei", "balanceWei"],
        "note": "A submitted task cannot be replayed; the second attempt is refused."
      }
    ]
  },

  "keyModel": {
    "master": {
      "type": "BIP-39 12-word mnemonic",
      "derivation": "SLIP-0010 hardened Ed25519, m/44'/77777'/0'/0'/0'",
      "custody": "Held by the human owner. Never transmitted to the network.",
      "capabilities": ["full custody", "fund withdrawal", "collateral management", "configuration"]
    },
    "ephemeralAgentSubKey": {
      "type": "Ed25519, issued by POST /rpc/agent/register",
      "ttlSeconds": 86400,
      "allow": ["x402:proof", "mcp:query"],
      "deny": ["wallet:withdraw", "wallet:transfer", "collateral:unlock"],
      "enforcement": "Denied scopes are refused by the node's scope check, not by convention. An unknown scope defaults to denied."
    }
  },

  "economics": {
    "model": "Treasury-Heavy Genesis",
    "treasuryMarginBps": {"min": 8000, "default": 8500, "max": 9000},
    "nodeYieldBps": {"min": 1000, "default": 1500, "max": 2000},
    "referralBasis": "referredNodeYield",
    "referralNote": "Referral bps are a share OF THE REFERRED NODE'S YIELD, not of gross compute value. A previous revision of this manifest published 200-300 bps, which understated the ladder by an order of magnitude; the authoritative values are rpc.ReferralTiers in rpc/treasury.go.",
    "referralBps": {"min": 1000, "default": 1000, "max": 5000},
    "referralTiers": [
      {"level": 0, "id": "base",   "minReferredVOps": 0,          "shareOfNodeYieldBps": 1000},
      {"level": 1, "id": "active", "minReferredVOps": 10000,      "shareOfNodeYieldBps": 2000},
      {"level": 2, "id": "anchor", "minReferredVOps": 100000,     "shareOfNodeYieldBps": 3000},
      {"level": 3, "id": "trunk",  "minReferredVOps": 1000000,    "shareOfNodeYieldBps": 4000},
      {"level": 4, "id": "core",   "minReferredVOps": 10000000,   "shareOfNodeYieldBps": 5000}
    ],
    "referralPaidFrom": "treasury",
    "referralCondition": "Paid only on accepted shares (Verified V-Ops). Registrations that never submit an accepted share pay nothing and advance no tier. The referred node keeps its full 10-20% regardless of its referrer's tier.",
    "note": "This split applies to compute value the protocol itself sells. It is distinct from ZanosTaskEscrow.sol's 2.5% settlement fee on agent-to-agent bounties; the two rates are separate flows and must not be conflated.",
    "withdrawalsUnlockAt": "2027-01-01T00:00:00Z",
    "phase1Behaviour": "Earnings accrue in-node and on-chain. External fiat/token withdrawal and liquidity-pool trading are closed until the unlock."
  },

  "mcp": {
    "package": "@zanos/mcp-server",
    "transport": "stdio",
    "published": false,
    "install": "node /path/to/ZANOS L1/packages/mcp-server/src/index.js",
    "installNote": "The package is private:true and is not on the npm registry, so `npx @zanos/mcp-server` does not resolve. Run it from a checkout. Required env: ZANOS_NODE_ADDRESS; optional: ZANOS_RPC_ENDPOINT, ZANOS_WORKERS, ZANOS_ENABLE_REWARDS.",
    "hosts": ["Claude Desktop", "Cursor", "Windsurf"],
    "tools": [
      {
        "name": "zanos_fetch_clean_context",
        "description": "Fetch a public URL through the egress gateway and return clean Markdown. Paid automatically via x402.",
        "arguments": {"url": "string (required)", "maxChars": "integer (optional)"}
      },
      {
        "name": "zanos_validate_context",
        "description": "Queue background tensor micro-verifications and report accrued compute rewards.",
        "arguments": {"batch": "integer 0-64", "waitMs": "integer 0-120000", "label": "string"}
      },
      {
        "name": "zanos_get_budget_status",
        "description": "Report remaining x402 credits, spend rate, and the active execution profile.",
        "arguments": {}
      },
      {
        "name": "zanos_set_compute_budget",
        "description": "Propose an execution profile at runtime: eco, balanced, or turbo.",
        "arguments": {"profile": "string (required)"}
      }
    ]
  },

  "sdks": {
    "python": {
      "package": "zanos-agent",
      "install": "pip install zanos-agent",
      "importPackage": "zanos",
      "entryPoints": ["TensorNode", "ZanosClient"],
      "example": "from zanos import TensorNode; node = TensorNode.launch(enable_rewards=True); print(node.stats())",
      "integrations": ["LangChain", "AutoGen", "CrewAI"]
    },
    "javascript": {
      "package": null,
      "published": false,
      "note": "No JavaScript SDK is published. Call JSON-RPC 2.0 over fetch against https://rpc.zanos.tech:7777/rpc directly."
    }
  },

  "honesty": {
    "yieldProjections": "Any earnings figure shown in the web portal's tensor-node panel is a client-side projection model computed from published constants, not telemetry from a live node. Do not present projections as measurements.",
    "workDefinition": "One 'tensor micro-verification' is one proof-of-compute cycle. It does not run inference, does not use model weights, and uploads nothing from the host machine."
  },

  "contact": {
    "site": "https://zanos.tech",
    "roadmap": "https://zanos.tech/roadmap"
  }
}
