{
  "tool_id": "art-704-ai-token-spend",
  "tool_version": "1.0.0",
  "display_name": "AI Token Spend",
  "mcp_name": "estimate_ai_token_spend",
  "mandate_type": "compliance_control",
  "wave": 122,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-704-ai-token-spend.html",
  "description": "Monthly AI token spend estimator and cross-model comparator. The caller supplies an as_of date (the node never reads a clock), a usage profile (requests per month, input tokens per request, a cached-input share in basis points, cache-write tokens with a 5-minute or 1-hour TTL, output tokens per request, a batch share and a long-context share), a dated price_table whose entries carry tier, effective_from/effective_through bounds and integer USD micros per million tokens, and the model names to compare. A price entry applies at as_of when effective_from <= as_of <= effective_through; two applicable entries for a compared model are an AMBIGUOUS_PRICE refusal, never a silent pick, and none is NO_PRICE_FOR_DATE. Each component's tokens are split into disjoint plain, batch and long-context slices priced from the matching block; a slice needing a combined batch+long-context block the entry does not list is NO_PRICE_FOR_COMBINATION, and a missing component price is a refusal naming the model and the component. The cost of T tokens at price P is floor(T/1e6)*P + floor((T mod 1e6)*P/1e6), overflow-safe for the validated caps (monthly tokens per component at most 1e12, refused above; prices at most 1e9). Output carries per-model monthly and per-request cost in integer micros, the four-component breakdown, a cheapest-first ranking with ties broken by the model string, per-model refusals, the snapshot age in days, and a scope note: no taxes or regional uplift, no image, audio or video tokens, no tool-use surcharges, no tiered volume discounts, and no subscription or committed-spend deals. Prices are an input, never kernel constants: the default snapshot is a dated capture of the official provider price pages, inlined in the page and manifest, and refreshing it never changes kernel bytes.",
  "input_schema_ref": "chaingraph/art-704-ai-token-spend.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [{"system":"sha256-source","image_id":"sha256:1c2518f6e01085420d06609b2ae4d1354d5832d04729e000d4cf0bfba9460b15","valid_from":"2026-10-04"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-10-06"}],
  "export_capability": ["json"],
  "standards_basis": "not_applicable",
  "cited_clause_digest": [],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "DPQphUnDnw9d9zKku1kzpbIzKPcbvN8fN9+MLlsRap4O5ER4pyz8XU/BFm5arVpJ3nxbNXijROS+62xQgOsuPxLK4WB1CjBdzitVRC52699e+ZkzxwLkvc3dXr1CBPi2JJ1AVNipOzafiMMe3snvBF/0DIF15VneCGIKs1KDJkMnoI0ZXJ7EYYKyAGYAJ2ZY6IAU/I69blF5228IaorwTyfb5VIP53JUxyq5zBrVDE8/4n3bzhe0Clfpx5yJ8b9oDEbsECiC96wQpZro/4LRoKg2nPuml9wYOz05Zl0tqmAEBDslpe6R7zRkEdNq1mOeuLNwzX8kyScujlPdCq/qeg==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:1c2518f6e01085420d06609b2ae4d1354d5832d04729e000d4cf0bfba9460b15",
      "output": {
        "as_of": "2026-10-01",
        "cheapest": "claude-haiku-4-5",
        "domain_errors": [],
        "ranking": [
          "claude-haiku-4-5"
        ],
        "refusal_reason": null,
        "refusals": [],
        "results": [
          {
            "components": {
              "cache_write": 0,
              "cached_input": 0,
              "input": 300000000,
              "output": 300000000
            },
            "model": "claude-haiku-4-5",
            "monthly_micros": 600000000,
            "per_request_micros": 6000,
            "price_entry_source_sha256": "0101010101010101010101010101010101010101010101010101010101010101",
            "provider": "anthropic",
            "tier": "standard"
          }
        ],
        "scope_note": "No taxes or regional uplift; no image, audio or video tokens; no tool-use surcharges; no tiered volume discounts; and no subscription or committed-spend deals. Prices come from the dated price_table input — the default snapshot is a capture of the official provider price pages verified on its own snapshot_verified_on date, never a live quote.",
        "snapshot_age_days": 0,
        "snapshot_verified_on": "2026-10-01"
      }
    }
  }
}
