Skip to content
Back to Batcave-X402-Gateway

Card snapshot

batcave-x402-gateway.darriel9.workers.dev · 2026-09-13 19:37:42 UTC · 22fdadd7d4c189ce43b212466e17d7c446d49db723bd7d4e4b4dcafa5f627c74

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "Batcave Agent Services",
  "description": "Four paid agent services: Scenario Council for comparing paths, Detective Basic for auditing an existing conclusion, Evidence Judge for reviewing a proposed action, and Run Python for disposable isolated Python execution.",
  "supportedInterfaces": [
    {
      "url": "https://batcave-x402-gateway.darriel9.workers.dev/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "version": "0.11-beta",
  "documentationUrl": "https://batcave-x402-gateway.darriel9.workers.dev/llms.txt",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "scenario-council",
      "name": "Scenario Council",
      "description": "Compare competing interpretations or paths before the caller has selected a single conclusion or proposed action.",
      "tags": [
        "reasoning",
        "scenarios",
        "decision-support",
        "evidence",
        "deliberation"
      ],
      "examples": [
        "Compare these competing paths using only the evidence I supplied."
      ]
    },
    {
      "id": "detective-basic",
      "name": "Detective Basic",
      "description": "Audit whether an existing conclusion and its claims are supported by caller-supplied evidence.",
      "tags": [
        "audit",
        "claims",
        "evidence",
        "verification",
        "reasoning"
      ],
      "examples": [
        "Audit this conclusion and tell me which claims the evidence actually supports."
      ]
    },
    {
      "id": "evidence-judge",
      "name": "Evidence Judge",
      "description": "Review whether caller-supplied evidence adequately supports a proposed action at the stated risk before execution.",
      "tags": [
        "decision-review",
        "risk",
        "evidence",
        "verification",
        "pre-action"
      ],
      "examples": [
        "Review this proposed action against the evidence before I execute it."
      ]
    },
    {
      "id": "run-python",
      "name": "Run Python",
      "description": "Use when you need to execute untrusted Python code, run tests, reproduce a failure, or collect stdout/stderr and generated artifacts without giving the code network, GPU, or host access.",
      "tags": [
        "python",
        "execution",
        "testing",
        "sandbox",
        "artifacts",
        "evidence"
      ],
      "examples": [
        "Run these Python files in isolation and return stdout, stderr, and artifacts."
      ]
    }
  ],
  "x-batcave": {
    "status": "paid_public",
    "productCatalogVersion": "5",
    "chooseProduct": {
      "question": "What do you need Batcave to do?",
      "options": [
        {
          "if": "I need supplied Python code executed or tested in a disposable isolated environment.",
          "use": "run_python"
        },
        {
          "if": "I am still comparing competing interpretations or possible paths.",
          "use": "scenario_council"
        },
        {
          "if": "I already have a conclusion or claims and need to know whether the supplied evidence supports them.",
          "use": "audit_claims"
        },
        {
          "if": "I already have a proposed action and need an evidence-bound review before acting.",
          "use": "review_decision"
        }
      ]
    },
    "products": {
      "scenario_council": {
        "id": "scenario_council",
        "name": "Scenario Council",
        "purpose": "Compare competing interpretations or paths before the caller has selected a single conclusion or proposed action.",
        "agentSelector": "I am still deciding what to believe or which path is strongest.",
        "exactBehavior": [
          "Runs exactly four fixed roles: Operator, Skeptic, Buyer, and Adversary.",
          "Runs 1 to 3 bounded rounds; the default is 3.",
          "Uses only the caller-supplied question, optional context, and evidence.",
          "Later rounds expose bounded peer positions as arguments, never as evidence.",
          "Requires structured peer challenges in later rounds and at least one falsifier per final role.",
          "Deterministically checks peer-state lineage and returns process_integrity pass/fail with exact violations.",
          "Runs one independent Detective Basic audit of the four final role conclusions against the original caller-supplied evidence."
        ],
        "returns": [
          "history[]: every role position for every round",
          "history[].stance and history[].confidence",
          "history[].evidence_ids_used and history[].evidence_ids_rejected",
          "history[].peer_state_basis",
          "history[].challenges with target_role_id, argument, and basis_evidence_ids",
          "report.belief_changes",
          "report.surviving_disagreements",
          "report.falsifiers",
          "report.consensus, report.consensus_kind, and report.stance_counts",
          "report.process_integrity with status, violation_count, and exact violations",
          "report.independent_audit containing the Detective Basic request and result",
          "usage, usage_breakdown, timing, and elapsed_seconds"
        ],
        "doesNot": [
          "retrieve web pages, APIs, files, databases, or other outside facts",
          "treat peer statements as evidence",
          "treat majority agreement or unanimity as truth",
          "execute, approve, block, purchase, trade, deploy, or otherwise take an external action",
          "run unbounded debate loops or dynamically create extra roles"
        ],
        "inputSummary": {
          "required": [
            "question"
          ],
          "optional": [
            "job_id",
            "context",
            "evidence",
            "rounds"
          ]
        },
        "access": {
          "transport": "rest",
          "rest": "https://batcave-x402-gateway.darriel9.workers.dev/v1/scenario-council",
          "restMethod": "POST",
          "paymentProtocol": "x402-v2",
          "price": "$0.25",
          "mcpAvailable": false,
          "discovery": "x402-bazaar"
        },
        "execution": {
          "model": "qwen3:30b",
          "context_tokens": 16384,
          "fixed_roles": [
            "operator",
            "skeptic",
            "buyer",
            "adversary"
          ],
          "max_rounds": 3,
          "default_full_model_calls": 13,
          "recommended_client_timeout_seconds": 120,
          "readiness_policy": "exact Council model/context must be resident before payment",
          "profile_reservation_seconds": 120,
          "post_run_policy": "restore normal Judge/Detective model profile before returning"
        },
        "details": {
          "capabilities": "https://batcave-x402-gateway.darriel9.workers.dev/capabilities",
          "openapi": "https://batcave-x402-gateway.darriel9.workers.dev/openapi.json",
          "x402": "https://batcave-x402-gateway.darriel9.workers.dev/.well-known/x402"
        }
      },
      "audit_claims": {
        "id": "audit_claims",
        "name": "Detective Basic",
        "purpose": "Audit whether an existing conclusion and its claims are supported by caller-supplied evidence.",
        "agentSelector": "I already have a conclusion. Check whether my evidence earns it.",
        "exactBehavior": [
          "Audits the caller's current conclusion and explicit claims against only the supplied evidence.",
          "Identifies unsupported or partially supported claims, assumptions, contradictions, stale or ambiguous evidence, and task drift.",
          "Returns a recentered question, the narrowest revised conclusion the evidence earns, confidence, and next checks."
        ],
        "returns": [
          "audit_status",
          "claim_findings",
          "assumptions_detected",
          "contradictions",
          "stale_or_ambiguous_evidence",
          "drift_detected",
          "drift_notes",
          "recentered_question",
          "revised_conclusion",
          "confidence",
          "next_checks"
        ],
        "doesNot": [
          "retrieve web pages, APIs, files, databases, or other outside facts",
          "execute, approve, block, purchase, trade, deploy, or otherwise take an external action",
          "treat the caller's reasoning summary as evidence"
        ],
        "inputSummary": {
          "required": [
            "original_task",
            "current_conclusion",
            "claims"
          ],
          "optional": [
            "job_id",
            "task",
            "reasoning_summary",
            "evidence",
            "importance",
            "freshness_expectation"
          ]
        },
        "access": {
          "transport": "rest",
          "rest": "https://batcave-x402-gateway.darriel9.workers.dev/v1/audit-claims",
          "restMethod": "POST",
          "paymentProtocol": "x402-v2",
          "price": "$0.02",
          "mcpAvailable": false,
          "discovery": "x402-bazaar"
        },
        "details": {
          "capabilities": "https://batcave-x402-gateway.darriel9.workers.dev/capabilities",
          "openapi": "https://batcave-x402-gateway.darriel9.workers.dev/openapi.json",
          "x402": "https://batcave-x402-gateway.darriel9.workers.dev/.well-known/x402"
        }
      },
      "review_decision": {
        "id": "review_decision",
        "name": "Evidence Judge",
        "purpose": "Review whether caller-supplied evidence adequately supports a proposed action at the stated risk before execution.",
        "agentSelector": "I already have a proposed action. Check it before I act.",
        "exactBehavior": [
          "Reviews one concrete proposed action against only the caller-supplied evidence and stated risk.",
          "Returns pass, caution, or reject plus supported points, unsupported claims, contradictions, missing evidence, risk flags, and recommended checks."
        ],
        "returns": [
          "verdict",
          "confidence",
          "supported",
          "unsupported_claims",
          "contradictions",
          "missing_evidence",
          "risk_flags",
          "recommended_checks"
        ],
        "doesNot": [
          "retrieve web pages, APIs, files, databases, or other outside facts",
          "execute the proposed action",
          "treat the caller's reasoning summary as evidence"
        ],
        "inputSummary": {
          "required": [
            "proposed_action"
          ],
          "optional": [
            "job_id",
            "task",
            "reasoning_summary",
            "evidence",
            "risk"
          ]
        },
        "access": {
          "transport": "rest",
          "rest": "https://batcave-x402-gateway.darriel9.workers.dev/v1/review-decision",
          "restMethod": "POST",
          "paymentProtocol": "x402-v2",
          "price": "$0.02",
          "mcpAvailable": false,
          "discovery": "x402-bazaar"
        },
        "details": {
          "capabilities": "https://batcave-x402-gateway.darriel9.workers.dev/capabilities",
          "openapi": "https://batcave-x402-gateway.darriel9.workers.dev/openapi.json",
          "x402": "https://batcave-x402-gateway.darriel9.workers.dev/.well-known/x402"
        }
      },
      "run_python": {
        "id": "run_python",
        "name": "Run Python",
        "purpose": "Run supplied Python files in a disposable isolated environment and return execution evidence and requested artifacts.",
        "agentSelector": "Use when you need to execute untrusted Python code, run tests, reproduce a failure, or collect stdout/stderr and generated artifacts without giving the code network, GPU, or host access.",
        "exactBehavior": [
          "Executes caller-supplied Python files in a fresh disposable CPU-only container.",
          "Provides no outbound network, no GPU, and no host filesystem access beyond the disposable workspace.",
          "Returns bounded stdout/stderr, requested artifacts, execution evidence, and Execution Receipt v1."
        ],
        "returns": [
          "result",
          "receipt"
        ],
        "doesNot": [
          "provide outbound network access",
          "provide GPU access",
          "provide host filesystem access outside the disposable workspace",
          "reuse a previous caller's execution environment"
        ],
        "inputSummary": {
          "required": [
            "files"
          ],
          "optional": [
            "job_id",
            "runtime",
            "command",
            "stdin",
            "timeout_seconds",
            "memory_mb",
            "cpus",
            "artifact_paths"
          ]
        },
        "access": {
          "transport": "rest",
          "rest": "https://batcave-x402-gateway.darriel9.workers.dev/v1/run-python",
          "restMethod": "POST",
          "paymentProtocol": "x402-v2",
          "price": "$0.01",
          "mcpAvailable": false,
          "discovery": "x402-bazaar"
        },
        "isolation": {
          "network": "none",
          "gpu": false,
          "host_filesystem": "disposable workspace only",
          "container": "fresh per job"
        },
        "details": {
          "capabilities": "https://batcave-x402-gateway.darriel9.workers.dev/capabilities",
          "openapi": "https://batcave-x402-gateway.darriel9.workers.dev/openapi.json",
          "x402": "https://batcave-x402-gateway.darriel9.workers.dev/.well-known/x402"
        }
      }
    },
    "scenarioCouncil": {
      "id": "scenario_council",
      "name": "Scenario Council",
      "purpose": "Compare competing interpretations or paths before the caller has selected a single conclusion or proposed action.",
      "agentSelector": "I am still deciding what to believe or which path is strongest.",
      "exactBehavior": [
        "Runs exactly four fixed roles: Operator, Skeptic, Buyer, and Adversary.",
        "Runs 1 to 3 bounded rounds; the default is 3.",
        "Uses only the caller-supplied question, optional context, and evidence.",
        "Later rounds expose bounded peer positions as arguments, never as evidence.",
        "Requires structured peer challenges in later rounds and at least one falsifier per final role.",
        "Deterministically checks peer-state lineage and returns process_integrity pass/fail with exact violations.",
        "Runs one independent Detective Basic audit of the four final role conclusions against the original caller-supplied evidence."
      ],
      "returns": [
        "history[]: every role position for every round",
        "history[].stance and history[].confidence",
        "history[].evidence_ids_used and history[].evidence_ids_rejected",
        "history[].peer_state_basis",
        "history[].challenges with target_role_id, argument, and basis_evidence_ids",
        "report.belief_changes",
        "report.surviving_disagreements",
        "report.falsifiers",
        "report.consensus, report.consensus_kind, and report.stance_counts",
        "report.process_integrity with status, violation_count, and exact violations",
        "report.independent_audit containing the Detective Basic request and result",
        "usage, usage_breakdown, timing, and elapsed_seconds"
      ],
      "doesNot": [
        "retrieve web pages, APIs, files, databases, or other outside facts",
        "treat peer statements as evidence",
        "treat majority agreement or unanimity as truth",
        "execute, approve, block, purchase, trade, deploy, or otherwise take an external action",
        "run unbounded debate loops or dynamically create extra roles"
      ],
      "inputSummary": {
        "required": [
          "question"
        ],
        "optional": [
          "job_id",
          "context",
          "evidence",
          "rounds"
        ]
      },
      "access": {
        "transport": "rest",
        "rest": "https://batcave-x402-gateway.darriel9.workers.dev/v1/scenario-council",
        "restMethod": "POST",
        "paymentProtocol": "x402-v2",
        "price": "$0.25",
        "mcpAvailable": false,
        "discovery": "x402-bazaar"
      },
      "execution": {
        "model": "qwen3:30b",
        "context_tokens": 16384,
        "fixed_roles": [
          "operator",
          "skeptic",
          "buyer",
          "adversary"
        ],
        "max_rounds": 3,
        "default_full_model_calls": 13,
        "recommended_client_timeout_seconds": 120,
        "readiness_policy": "exact Council model/context must be resident before payment",
        "profile_reservation_seconds": 120,
        "post_run_policy": "restore normal Judge/Detective model profile before returning"
      },
      "details": {
        "capabilities": "https://batcave-x402-gateway.darriel9.workers.dev/capabilities",
        "openapi": "https://batcave-x402-gateway.darriel9.workers.dev/openapi.json",
        "x402": "https://batcave-x402-gateway.darriel9.workers.dev/.well-known/x402"
      }
    },
    "detective": {
      "id": "audit_claims",
      "name": "Detective Basic",
      "purpose": "Audit whether an existing conclusion and its claims are supported by caller-supplied evidence.",
      "agentSelector": "I already have a conclusion. Check whether my evidence earns it.",
      "exactBehavior": [
        "Audits the caller's current conclusion and explicit claims against only the supplied evidence.",
        "Identifies unsupported or partially supported claims, assumptions, contradictions, stale or ambiguous evidence, and task drift.",
        "Returns a recentered question, the narrowest revised conclusion the evidence earns, confidence, and next checks."
      ],
      "returns": [
        "audit_status",
        "claim_findings",
        "assumptions_detected",
        "contradictions",
        "stale_or_ambiguous_evidence",
        "drift_detected",
        "drift_notes",
        "recentered_question",
        "revised_conclusion",
        "confidence",
        "next_checks"
      ],
      "doesNot": [
        "retrieve web pages, APIs, files, databases, or other outside facts",
        "execute, approve, block, purchase, trade, deploy, or otherwise take an external action",
        "treat the caller's reasoning summary as evidence"
      ],
      "inputSummary": {
        "required": [
          "original_task",
          "current_conclusion",
          "claims"
        ],
        "optional": [
          "job_id",
          "task",
          "reasoning_summary",
          "evidence",
          "importance",
          "freshness_expectation"
        ]
      },
      "access": {
        "transport": "rest",
        "rest": "https://batcave-x402-gateway.darriel9.workers.dev/v1/audit-claims",
        "restMethod": "POST",
        "paymentProtocol": "x402-v2",
        "price": "$0.02",
        "mcpAvailable": false,
        "discovery": "x402-bazaar"
      },
      "details": {
        "capabilities": "https://batcave-x402-gateway.darriel9.workers.dev/capabilities",
        "openapi": "https://batcave-x402-gateway.darriel9.workers.dev/openapi.json",
        "x402": "https://batcave-x402-gateway.darriel9.workers.dev/.well-known/x402"
      }
    },
    "evidenceJudge": {
      "id": "review_decision",
      "name": "Evidence Judge",
      "purpose": "Review whether caller-supplied evidence adequately supports a proposed action at the stated risk before execution.",
      "agentSelector": "I already have a proposed action. Check it before I act.",
      "exactBehavior": [
        "Reviews one concrete proposed action against only the caller-supplied evidence and stated risk.",
        "Returns pass, caution, or reject plus supported points, unsupported claims, contradictions, missing evidence, risk flags, and recommended checks."
      ],
      "returns": [
        "verdict",
        "confidence",
        "supported",
        "unsupported_claims",
        "contradictions",
        "missing_evidence",
        "risk_flags",
        "recommended_checks"
      ],
      "doesNot": [
        "retrieve web pages, APIs, files, databases, or other outside facts",
        "execute the proposed action",
        "treat the caller's reasoning summary as evidence"
      ],
      "inputSummary": {
        "required": [
          "proposed_action"
        ],
        "optional": [
          "job_id",
          "task",
          "reasoning_summary",
          "evidence",
          "risk"
        ]
      },
      "access": {
        "transport": "rest",
        "rest": "https://batcave-x402-gateway.darriel9.workers.dev/v1/review-decision",
        "restMethod": "POST",
        "paymentProtocol": "x402-v2",
        "price": "$0.02",
        "mcpAvailable": false,
        "discovery": "x402-bazaar"
      },
      "details": {
        "capabilities": "https://batcave-x402-gateway.darriel9.workers.dev/capabilities",
        "openapi": "https://batcave-x402-gateway.darriel9.workers.dev/openapi.json",
        "x402": "https://batcave-x402-gateway.darriel9.workers.dev/.well-known/x402"
      }
    },
    "runPython": {
      "id": "run_python",
      "name": "Run Python",
      "purpose": "Run supplied Python files in a disposable isolated environment and return execution evidence and requested artifacts.",
      "agentSelector": "Use when you need to execute untrusted Python code, run tests, reproduce a failure, or collect stdout/stderr and generated artifacts without giving the code network, GPU, or host access.",
      "exactBehavior": [
        "Executes caller-supplied Python files in a fresh disposable CPU-only container.",
        "Provides no outbound network, no GPU, and no host filesystem access beyond the disposable workspace.",
        "Returns bounded stdout/stderr, requested artifacts, execution evidence, and Execution Receipt v1."
      ],
      "returns": [
        "result",
        "receipt"
      ],
      "doesNot": [
        "provide outbound network access",
        "provide GPU access",
        "provide host filesystem access outside the disposable workspace",
        "reuse a previous caller's execution environment"
      ],
      "inputSummary": {
        "required": [
          "files"
        ],
        "optional": [
          "job_id",
          "runtime",
          "command",
          "stdin",
          "timeout_seconds",
          "memory_mb",
          "cpus",
          "artifact_paths"
        ]
      },
      "access": {
        "transport": "rest",
        "rest": "https://batcave-x402-gateway.darriel9.workers.dev/v1/run-python",
        "restMethod": "POST",
        "paymentProtocol": "x402-v2",
        "price": "$0.01",
        "mcpAvailable": false,
        "discovery": "x402-bazaar"
      },
      "isolation": {
        "network": "none",
        "gpu": false,
        "host_filesystem": "disposable workspace only",
        "container": "fresh per job"
      },
      "details": {
        "capabilities": "https://batcave-x402-gateway.darriel9.workers.dev/capabilities",
        "openapi": "https://batcave-x402-gateway.darriel9.workers.dev/openapi.json",
        "x402": "https://batcave-x402-gateway.darriel9.workers.dev/.well-known/x402"
      }
    },
    "directMcp": {
      "available": false,
      "status": "retired",
      "reason": "Batcave direct MCP was a free-beta transport experiment. Paid products are canonical REST/x402 resources discoverable through Bazaar.",
      "registryAction": "deprecate io.github.Bjorn2-sol/batcave-detective v0.1.0"
    },
    "discovery": {
      "openapi": "https://batcave-x402-gateway.darriel9.workers.dev/openapi.json",
      "capabilities": "https://batcave-x402-gateway.darriel9.workers.dev/capabilities",
      "agents": "https://batcave-x402-gateway.darriel9.workers.dev/agents.json",
      "llms": "https://batcave-x402-gateway.darriel9.workers.dev/llms.txt",
      "x402": "https://batcave-x402-gateway.darriel9.workers.dev/.well-known/x402",
      "a2a": "https://batcave-x402-gateway.darriel9.workers.dev/a2a"
    },
    "a2a": {
      "available": true,
      "role": "discovery_and_paid_product_routing",
      "executesProducts": false,
      "url": "https://batcave-x402-gateway.darriel9.workers.dev/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0",
      "paymentBoundary": "paid execution remains canonical REST/x402"
    }
  }
}