{
  "version": "1",
  "name": "TruCore ATF",
  "product": "Agent Transaction Firewall",
  "description": "Policy-enforced transaction protection for AI agents.",
  "entrypoint": "https://trucore.xyz/agent",
  "builders_url": "https://trucore.xyz/builders",
  "status_url": "https://trucore.xyz/status",
  "api_base_url": "https://api.trucore.xyz",
  "documentation": {
    "docs_sitemap": "https://trucore.xyz/api/docs/sitemap",
    "llms_txt": "https://trucore.xyz/llms.txt",
    "metadata_schema": "https://github.com/trucore-ai/atf-spec/blob/main/docs/metadata-schema.md",
    "getting_started": "https://trucore.xyz/docs/getting-started",
    "spec_repo": "https://github.com/trucore-ai/atf-spec"
  },
  "mcp": {
    "endpoint": "https://api.trucore.xyz/mcp",
    "status": "live",
    "tools": [
      {
        "name": "probe_transaction",
        "purpose": "Lightweight policy pre-check on a candidate intent",
        "advisory": true,
        "authoritative": false
      },
      {
        "name": "simulate_transaction",
        "purpose": "Full simulation against active policies and conditions",
        "advisory": true,
        "authoritative": false
      },
      {
        "name": "protect_transaction",
        "purpose": "Binding policy enforcement decision (approve or deny)",
        "advisory": false,
        "authoritative": true
      },
      {
        "name": "verify_receipt",
        "purpose": "Verify execution receipt hash integrity",
        "advisory": false,
        "authoritative": false
      },
      {
        "name": "explain_decision",
        "purpose": "Human-readable explanation of a decision with reason codes",
        "advisory": true,
        "authoritative": false
      }
    ],
    "canonical_flow": [
      "discover tools",
      "probe_transaction",
      "simulate_transaction",
      "protect_transaction",
      "verify_receipt",
      "explain_decision",
      "stop before signing/submission"
    ],
    "entitlement": "tier-based, tenant-backed",
    "boundaries": {
      "signs_transactions": false,
      "submits_transactions": false,
      "protect_is_authoritative": true,
      "advisory_tools_are_policy_aware": true
    }
  },
  "discovery_keywords": [
    "agent",
    "bot",
    "transaction protection",
    "preflight",
    "quota planning",
    "execute-best",
    "self-upgrade",
    "monetization",
    "MCP",
    "Model Context Protocol",
    "probe_transaction",
    "simulate_transaction",
    "protect_transaction",
    "verify_receipt",
    "explain_decision"
  ],
  "bot_flow": [
    {
      "step": 1,
      "endpoint": "/v1/bot/preflight",
      "purpose": "simulate one intent",
      "state_mutation": false
    },
    {
      "step": 2,
      "endpoint": "/v1/bot/preflight/compare",
      "purpose": "rank multiple candidate intents",
      "state_mutation": false
    },
    {
      "step": 3,
      "endpoint": "/v1/bot/quota/plan",
      "purpose": "estimate safe throughput",
      "state_mutation": false
    },
    {
      "step": 4,
      "endpoint": "/v1/bot/quota/plan-batch",
      "purpose": "estimate safe batch size",
      "state_mutation": false
    },
    {
      "step": 5,
      "endpoint": "/v1/bot/execute-best",
      "purpose": "select and execute the best option",
      "state_mutation": true
    },
    {
      "step": 6,
      "endpoint": "/v1/bot/self-upgrade",
      "purpose": "request free-to-pro self-upgrade when allowed",
      "state_mutation": true
    }
  ],
  "upgrade_signals": {
    "meta_field": "_meta.upgrade",
    "possible_reasons": [
      "quota_near_limit",
      "quota_exceeded",
      "monetization_disabled",
      "self_serve_upgrade_disabled"
    ]
  },
  "policy_notes": {
    "self_upgrade_requires_operator_policy": true,
    "quota_meta_available": true,
    "planning_endpoints_read_only": true
  }
}
