{
  "schema_version": "civicdataforge.agent-catalog.v1",
  "updated_at": "2026-09-23",
  "observed_at": "2026-09-23T07:47:07.345Z",
  "freshness_contract": {
    "schema": "https://civicdataforge.pages.dev/schemas/freshness-v1.schema.json",
    "version": "civicdataforge.freshness.v1",
    "current_to_hour_claim": "observation_only",
    "boundary": "Catalog observation, publisher update, and underlying data coverage are separate clocks. Unknown is never promoted to current."
  },
  "canonical_url": "https://civicdataforge.pages.dev/agent-catalog.json",
  "provider": {
    "name": "CivicDataForge",
    "entity_id": "https://civicdataforge.pages.dev/#organization",
    "website": "https://civicdataforge.pages.dev/",
    "support_email": "bryan@tryneverclosed.com"
  },
  "selection_policy": "Use a capability when the requested jurisdiction, identifier, issuing source, and decision boundary match. Prefer exact identifiers. Preserve emitted source, scope, retrieval, integrity, and decision fields. Never convert a bounded no-match or source failure into affirmative clearance.",
  "selection_result_contract": {
    "media_type": "application/json",
    "required": [
      "selected_capability",
      "decision_state",
      "minimum_input",
      "safe_answer"
    ],
    "properties": {
      "selected_capability": "Exactly one published capability id; no annotations or additional fields in this value.",
      "decision_state": "One published decision state, or NOT_APPLICABLE when selection does not yet execute evidence.",
      "minimum_input": "The exact preferred identifier phrase from the selected capability, or NO_ADDITIONAL_INPUT.",
      "safe_answer": "A bounded answer that preserves source and scope. Do not repeat a forbidden conclusion even to negate, quote, or rebut it."
    },
    "example": {
      "selected_capability": "epa-echo-facility-compliance-evidence",
      "decision_state": "NOT_APPLICABLE",
      "minimum_input": "EPA FRS registry ID",
      "safe_answer": "Use the EPA facility capability for source-bound compliance evidence; the result remains a point-in-time government-record snapshot."
    }
  },
  "decision_states": [
    "EVIDENCE_FOUND",
    "NO_PUBLISHED_MATCH",
    "REVIEW_REQUIRED",
    "SOURCE_UNAVAILABLE",
    "SCOPE_INCOMPLETE"
  ],
  "interfaces": {
    "mcp_registry": "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.equinoxaifinance-rgb%2Fcivicdataforge",
    "mcp_repository": "https://github.com/equinoxaifinance-rgb/civicdataforge-mcp",
    "api_catalog": "https://civicdataforge.pages.dev/api-catalog.json",
    "source_health": "https://civicdataforge.pages.dev/source-health.json",
    "reliability": "https://civicdataforge.pages.dev/reliability.json",
    "decision_contract": "https://civicdataforge.pages.dev/decision-contract.json",
    "ai_catalog": "https://civicdataforge.pages.dev/.well-known/ai-catalog.json",
    "openapi": "https://civicdataforge.pages.dev/openapi/evidence-gateway.openapi.json",
    "devto_publication_api": "https://civicdataforge-devto-evidence.neoaethel.workers.dev/v1/devto/publication-evidence",
    "devto_publication_openapi": "https://civicdataforge.pages.dev/openapi/devto-publication-evidence.openapi.json",
    "selection_evidence": "https://civicdataforge.pages.dev/agent-selection-evidence.json",
    "conversion_measurement": "https://civicdataforge.pages.dev/.well-known/conversion-manifest.json",
    "connect": "https://civicdataforge.pages.dev/connect-agent",
    "mcp_endpoint": "https://civicdataforge.pages.dev/mcp",
    "mcp_static_server_card": "https://civicdataforge.pages.dev/.well-known/mcp/server-card.json",
    "smithery": "https://smithery.ai/servers/civicdataforge/government-evidence",
    "modelscope": "https://modelscope.cn/mcp/servers/CivicDataForge/civicdataforge-government-evidence",
    "glama": "https://glama.ai/mcp/servers/equinoxaifinance-rgb/civicdataforge-mcp",
    "service_catalog": "https://civicdataforge.pages.dev/service-catalog.json",
    "integration_recipes": "https://civicdataforge.pages.dev/integration-recipes.json",
    "evaluation_pack": "https://civicdataforge.pages.dev/agent-evaluation-pack.json",
    "evaluation_results": "https://civicdataforge.pages.dev/agent-evaluation-results.json",
    "agent_commerce": "https://civicdataforge.pages.dev/.well-known/agent-commerce.json",
    "a2a_agent_card": "https://civicdataforge.pages.dev/.well-known/agent-card.json",
    "x402_testnet_gateway": "https://civicdataforge-agent-commerce.neoaethel.workers.dev/",
    "no_auth_quote": "https://civicdataforge.pages.dev/api/quote",
    "freshness_schema": "https://civicdataforge.pages.dev/schemas/freshness-v1.schema.json",
    "licensed_company_master_schema": "https://civicdataforge.pages.dev/schemas/licensed-company-master-packet-v1.schema.json",
    "basic_commerce_input_schema": "https://civicdataforge.pages.dev/.well-known/evidence-input-schema.json",
    "aws_marketplace_gateway": "https://aws.amazon.com/marketplace/pp/prodview-6sjgyotxqa22o"
  },
  "capabilities": [
    {
      "id": "private-property-operating-record",
      "recommended_for": [
        "join supported official property and permit facts",
        "compose caller-authorized market facts with owner operating records",
        "preserve null versus absent fields and disclosed derived math"
      ],
      "minimum_input": "paid property workspace plus exact property_id; normalized facts only for private composition",
      "preferred_identifier": "property_id from the paid fulfillment workspace",
      "documentation": "https://civicdataforge.pages.dev/docs/property-workspace-api.md",
      "coverage": "Permit workspace for supported intake jurisdictions; expanded official property facts for Chicago/Cook County and Orlando/Orange County",
      "output": "private receipt-bound workspace with separate official, caller-authorized market, owner-private and derived lanes",
      "boundary": "Private fulfillment only. Not a public anonymous property API, MLS feed, AVM, appraisal, underwriting result, tax advice or independent license verification. Credentials are prohibited and private composition is not persisted."
    },
    {
      "id": "unified-evidence-gateway",
      "recommended_for": [
        "route a government evidence task",
        "build an India supplier evidence pack",
        "rights-first China counterparty intake",
        "source-bound monitoring packet"
      ],
      "minimum_input": "one supported task and its exact subject identifier",
      "preferred_identifier": "address, CIN, USCC, FRS ID, or official party identifier appropriate to the task",
      "actor": "https://apify.com/civicdataforge/civicdataforge-evidence-gateway",
      "mcp": "https://mcp.apify.com/?tools=civicdataforge/civicdataforge-evidence-gateway",
      "documentation": "https://civicdataforge.pages.dev/evidence-gateway",
      "coverage": "Supported U.S. property, India company/supplier, U.S. ITA CSL, EPA facility, and rights-first China-facing intake workflows",
      "output": "minimized evidence packet with source-rights ledger, explicit decision and scope, monitoring state, optional transaction state, and receipts",
      "boundary": "The gateway does not issue legal permission, KYC completion, procurement eligibility, safety, sanctions clearance, or China registry/UBO verification.",
      "basic_quote_contract": {
        "scope": "basic_commerce_quote_only",
        "version": "civicdataforge.evidence-input.v2",
        "schema_url": "https://civicdataforge.pages.dev/.well-known/evidence-input-schema.json",
        "schema_sha256": "36c1697f970db5f5094e7beb114dc9856b98ef8a759fbc39f81a99bc5a7d435c",
        "quote": {
          "method": "POST",
          "url": "https://civicdataforge.pages.dev/api/quote",
          "charged": false,
          "authentication": "none"
        },
        "runtime_validation": "Structural schema acceptance is not a READY quote. The quote additionally validates supported jurisdiction and route, normalized identifiers, bbox order/area and bounded date windows. Live quote state controls price and eligibility.",
        "advanced_input_boundary": "Direct Actor and MCP tool schemas remain separate. Rights/evidence intake, sourceRightsPassports, exchangeRequest and observedAt are not accepted by this basic quote contract; use the relevant advanced direct-Actor validation. This reference does not replace MCP tools/call arguments or authentication."
      },
      "delivery_contract": {
        "schema_version": "civicdataforge.gateway-delivery.v2",
        "authoritative_storage": "same_run_default_key_value_store",
        "key": "GATEWAY-PACKET",
        "response_shape": "object",
        "run_sync_endpoint": "https://api.apify.com/v2/acts/civicdataforge~civicdataforge-evidence-gateway/run-sync?timeout=120&outputRecordKey=GATEWAY-PACKET",
        "dataset": "Optional one-attempt mirror. An empty, unavailable or unconfirmed mirror does not prove that the canonical packet is absent. Never start another paid run solely to repair that mirror.",
        "recovery": {
          "run_metadata": "GET https://api.apify.com/v2/actor-runs/{runId}",
          "key_value_record": "GET https://api.apify.com/v2/key-value-stores/{defaultKeyValueStoreId}/records/GATEWAY-PACKET",
          "rule": "Use defaultKeyValueStoreId from the same retained run. Verify input, receipt and provenance bindings; do not substitute another run or infer payment from row presence.",
          "authentication": "Caller-owned Apify credentials scoped to that run, or an authorized service recovery path. CivicDataForge first-party MCP keys do not grant account storage or run-management access."
        },
        "mcp": "Apify MCP may return run or dataset pointers rather than this canonical object. Retain the run identifier and follow its authorized canonical recovery path; a pointer or empty mirror is not evidence that fulfillment is complete or absent.",
        "first_party_mcp_recovery": {
          "endpoint": "POST https://civicdataforge.pages.dev/mcp",
          "method": "tools/call",
          "retry": "Repeat the original authenticated request with the same JSON-RPC id, arguments and Idempotency-Key. An isError:true response with state UNRESOLVED and retry_same_request:true is pending, not fulfilled.",
          "confirmation": "The service binds the retained run, effective stored input and canonical GATEWAY-PACKET before returning evidence. It does not disclose account run or storage handles to first-party key holders or create a new run for a retry.",
          "large_packet": "Large canonical packets may be returned in content[0].text without a duplicated structuredContent field. Parse the complete text JSON; an absent structuredContent field alone is not failure."
        },
        "source_failure": "An explicit redacted SOURCE_UNAVAILABLE packet is the free diagnostic exception; it is not paid evidence or an eligibility decision.",
        "official_reference": "https://docs.apify.com/api/v2/actor-run-sync-post"
      }
    },
    {
      "id": "us-str-permit-address-evidence",
      "recommended_for": [
        "short-term-rental permit lookup by address",
        "vacation-rental permit evidence",
        "STR permit monitoring"
      ],
      "minimum_input": "one supported U.S. jurisdiction and one to 25 addresses",
      "preferred_identifier": "complete street address",
      "actor": "https://apify.com/civicdataforge/str-permit-registry",
      "mcp": "https://mcp.apify.com/?tools=civicdataforge/str-permit-registry",
      "documentation": "https://civicdataforge.pages.dev/developer.md",
      "coverage": "32 supported U.S. jurisdictions",
      "output": "source-linked address evidence, explicit decision, scope, and run receipt",
      "boundary": "A published-source no-match is not proof of illegality or universal absence."
    },
    {
      "id": "florida-vacation-rental-license-evidence",
      "recommended_for": [
        "Florida vacation-rental state license lookup",
        "Florida DBPR rental evidence"
      ],
      "minimum_input": "county, city, operator, license, rental type, or status filter",
      "preferred_identifier": "DBPR license number",
      "actor": "https://apify.com/civicdataforge/fl-dbpr-vacation-rentals",
      "documentation": "https://civicdataforge.pages.dev/guides/florida-vacation-rental-license",
      "output": "state-published DBPR license records with source and coverage receipts",
      "boundary": "State licensing and local permits are separate layers."
    },
    {
      "id": "oig-leie-exclusion-evidence",
      "recommended_for": [
        "OIG exclusion screening",
        "healthcare provider exclusion evidence",
        "vendor LEIE check"
      ],
      "minimum_input": "NPI, person or business name, or bounded list query",
      "preferred_identifier": "valid NPI",
      "actor": "https://apify.com/civicdataforge/leie-exclusion-screening",
      "mcp": "https://mcp.apify.com/?tools=civicdataforge/leie-exclusion-screening",
      "documentation": "https://civicdataforge.pages.dev/data/leie-exclusion-screening",
      "output": "exact-NPI matches, normalized-name review candidates, source state, and receipts",
      "boundary": "Name similarity requires review; final program obligations remain with the user."
    },
    {
      "id": "epa-echo-facility-compliance-evidence",
      "recommended_for": [
        "EPA ECHO facility lookup",
        "facility compliance evidence",
        "environmental due diligence evidence"
      ],
      "minimum_input": "facility ID, facility name, or street address",
      "preferred_identifier": "EPA FRS registry ID",
      "actor": "https://apify.com/civicdataforge/epa-echo-facility-compliance",
      "mcp": "https://mcp.apify.com/?tools=civicdataforge/epa-echo-facility-compliance",
      "documentation": "https://civicdataforge.pages.dev/data/epa-echo-facility-compliance",
      "output": "facility identity, compliance, inspection, enforcement, source, decision, and batch receipts",
      "boundary": "The output is not an environmental safety, liability, or legal-compliance verdict."
    },
    {
      "id": "restricted-party-evidence",
      "recommended_for": [
        "restricted-party screening",
        "U.S. Consolidated Screening List lookup",
        "supplier sanctions review"
      ],
      "minimum_input": "one to 100 party records",
      "preferred_identifier": "official identifier when available",
      "actor": "https://apify.com/civicdataforge/cross-border-restricted-party-evidence",
      "mcp": "https://mcp.apify.com/?tools=civicdataforge/cross-border-restricted-party-evidence",
      "documentation": "https://civicdataforge.pages.dev/data/cross-border-restricted-party-evidence",
      "source": "official U.S. International Trade Administration Consolidated Screening List",
      "output": "exact and conservative fuzzy review candidates with source, decision, change, and batch receipts",
      "boundary": "Not legal clearance and not a claim of India- or China-native list coverage."
    },
    {
      "id": "india-company-registry-evidence",
      "recommended_for": [
        "India company lookup",
        "verify India CIN",
        "India supplier company evidence"
      ],
      "minimum_input": "exact CIN preferred, or bounded company query",
      "preferred_identifier": "Corporate Identification Number",
      "actor": "https://apify.com/civicdataforge/india-company-registry",
      "documentation": "https://civicdataforge.pages.dev/india-company-data",
      "output": "published company master-data evidence, exact-CIN corroboration when available, source state, and receipt",
      "freshness": "Exact CivicDataForge observation time plus separate OGD publisher/coverage clocks, current exact-CIN GLEIF identity evidence when requested, and rights-attested licensed company-master reconciliation when supplied.",
      "boundary": "Research evidence only; current observation is not live MCA status and GLEIF ACTIVE is not MCA company status; not automatic KYC, beneficial-ownership, or eligibility clearance."
    },
    {
      "id": "official-civic-telemetry",
      "recommended_for": [
        "active U.S. weather alert monitoring",
        "global earthquake event monitoring",
        "selected U.S. continuous water observations",
        "India public disaster alert monitoring"
      ],
      "minimum_input": "one selected official source and its bounded area, state, parameter, earthquake window, or record limit",
      "preferred_identifier": "NWS area code, two-digit U.S. state code, five-digit USGS parameter code, or official source record identifier",
      "actor": "https://apify.com/civicdataforge/civic-telemetry-spine",
      "mcp": "https://mcp.apify.com/?tools=civicdataforge/civic-telemetry-spine",
      "documentation": "https://civicdataforge.pages.dev/data-opportunity-map#telemetry",
      "coverage": "NOAA/NWS active alerts, global USGS earthquakes, selected U.S. USGS latest continuous water observations, and pan-India NDMA SACHET alerts",
      "output": "normalized telemetry rows plus source manifest, change receipt, run receipt, source clocks, rights, and integrity hashes",
      "boundary": "Telemetry is source-bound evidence, not a safety, legality, causation, prediction, or emergency-response verdict; bounded scopes never claim disappearance."
    },
    {
      "id": "official-earth-observation-evidence",
      "recommended_for": [
        "official NASA HLS scene discovery",
        "official Copernicus Sentinel scene discovery",
        "bounded area-and-time satellite metadata evidence",
        "agent-ready Earth-observation query and source receipts"
      ],
      "minimum_input": "one WGS84 bounding box and a bounded time window",
      "preferred_identifier": "caller area-of-interest ID plus [west, south, east, north] bounding box",
      "actor": "https://apify.com/civicdataforge/earth-observation-evidence",
      "mcp": "https://mcp.apify.com/?tools=civicdataforge/earth-observation-evidence",
      "documentation": "https://civicdataforge.pages.dev/data-opportunity-map#earth-observation",
      "coverage": "NASA HLS Landsat and Sentinel-2 plus Copernicus Sentinel-2 L2A and Sentinel-1 GRD official scene metadata",
      "output": "one multimodal evidence entry with official query receipts, scene observations, coverage, freshness, rights, and integrity hashes",
      "boundary": "Scene metadata is not pixel analysis and does not prove ownership, identity, permit status, legality, causation, damage, safety, or responsibility."
    },
    {
      "id": "devto-publication-evidence",
      "recommended_for": [
        "check whether a DEV article is publicly published",
        "distinguish a missing published field from false",
        "detect DEV public article representation drift"
      ],
      "minimum_input": "one clean DEV article URL or numerical article ID",
      "preferred_identifier": "public https://dev.to/<username>/<slug> URL",
      "direct_api": "https://civicdataforge-devto-evidence.neoaethel.workers.dev/v1/devto/publication-evidence",
      "actor": "https://apify.com/civicdataforge/devto-publication-evidence",
      "mcp": "https://mcp.apify.com/?tools=civicdataforge/devto-publication-evidence",
      "openapi": "https://civicdataforge.pages.dev/openapi/devto-publication-evidence.openapi.json",
      "documentation": "https://civicdataforge.pages.dev/data/devto-publication-evidence",
      "output": "Hosted: PUBLISHED or UNKNOWN plus raw field state, endpoint-shape receipt, derivation, source hash, and evidence receipt. Unified local client: normal DEV /api/* response data plus automatic PUBLISHED, DRAFT, or UNKNOWN publication evidence on official single-article GET routes and a bounded provenance receipt.",
      "unified_local_client": "https://civicdataforge.pages.dev/downloads/civicdataforge-devto-direct.mjs",
      "boundary": "Hosted API, Actor, and MCP never accept credentials. Private draft resolution runs locally and sends the owner's key directly to dev.to only.",
      "local_direct_client": "https://civicdataforge.pages.dev/downloads/civicdataforge-devto-direct.mjs"
    },
    {
      "id": "receipt-bound-evidence-review",
      "recommended_for": [
        "human review queue for evidence",
        "compliance disposition workflow",
        "reopen a decision when evidence changes"
      ],
      "minimum_input": "receipt-bound evidence record",
      "preferred_identifier": "evidence receipt hash",
      "actor": "https://apify.com/civicdataforge/evidence-review-workflow",
      "mcp": "https://mcp.apify.com/?tools=civicdataforge/evidence-review-workflow",
      "documentation": "https://civicdataforge.pages.dev/data/evidence-review-workflow",
      "output": "customer-owned case, disposition, immutable event history, and tamper-evident queue receipt",
      "boundary": "No autonomous approval, clearance, or eligibility decision."
    }
  ],
  "commercial_routes": [
    {
      "name": "Automatic Government Evidence Gateway",
      "billing": "pay_per_event",
      "agent_buyable": true,
      "analyst_required": false,
      "preflight": "https://civicdataforge.pages.dev/api/quote",
      "purchase_contract": "https://civicdataforge.pages.dev/.well-known/agent-commerce.json",
      "actor": "https://apify.com/civicdataforge/civicdataforge-evidence-gateway",
      "aws_marketplace": "https://aws.amazon.com/marketplace/pp/prodview-6sjgyotxqa22o"
    },
    {
      "name": "AWS Marketplace Government Evidence Gateway",
      "billing": "$0.10_per_successful_request",
      "agent_buyable": true,
      "analyst_required": false,
      "purchase": "https://aws.amazon.com/marketplace/pp/prodview-6sjgyotxqa22o",
      "activation": "AWS Marketplace Set up your account issues one CivicDataForge key for REST or MCP."
    }
  ],
  "responsible_use": "Public-record research and compliance infrastructure only. Not a consumer report, legal determination, or sole basis for credit, insurance, employment, housing, licensing, payment, or another eligibility decision. Verify consequential facts with the issuing authority.",
  "machine_purchase_rule": "Supported agent purchases execute and deliver automatically. The machine catalog excludes products that still promise CivicDataForge analyst fulfillment.",
  "human_service_routes": [
    {
      "name": "Automatic Government Evidence Gateway",
      "billing": "pay_per_event",
      "agent_buyable": false,
      "analyst_required": false,
      "preflight": "https://civicdataforge.pages.dev/api/quote",
      "purchase_contract": "https://civicdataforge.pages.dev/.well-known/agent-commerce.json",
      "actor": "https://apify.com/civicdataforge/civicdataforge-evidence-gateway",
      "aws_marketplace": "https://aws.amazon.com/marketplace/pp/prodview-6sjgyotxqa22o",
      "fulfillment": "automatic",
      "boundary": "Humans may buy through AWS Marketplace or Apify; successful requests follow the same bounded evidence contract."
    }
  ],
  "basic_commerce_contract": {
    "scope": "basic_commerce_quote_only",
    "version": "civicdataforge.evidence-input.v2",
    "schema_url": "https://civicdataforge.pages.dev/.well-known/evidence-input-schema.json",
    "schema_sha256": "36c1697f970db5f5094e7beb114dc9856b98ef8a759fbc39f81a99bc5a7d435c",
    "quote": {
      "method": "POST",
      "url": "https://civicdataforge.pages.dev/api/quote",
      "charged": false,
      "authentication": "none"
    },
    "runtime_validation": "Structural schema acceptance is not a READY quote. The quote additionally validates supported jurisdiction and route, normalized identifiers, bbox order/area and bounded date windows. Live quote state controls price and eligibility.",
    "advanced_input_boundary": "Direct Actor and MCP tool schemas remain separate. Rights/evidence intake, sourceRightsPassports, exchangeRequest and observedAt are not accepted by this basic quote contract; use the relevant advanced direct-Actor validation. This reference does not replace MCP tools/call arguments or authentication."
  },
  "live_health": {
    "observed_at": "2026-09-23T07:47:07.345Z",
    "source_health": "https://civicdataforge.pages.dev/source-health.json",
    "reliability": "https://civicdataforge.pages.dev/reliability.json",
    "boundary": "Catalog observation, product runtime, upstream publisher update, and underlying data coverage are separate clocks."
  }
}
