{
  "answer": {
    "line": "Can it do that, did it happen, and if it broke, here's the fix.",
    "what": "Curbi helps developers and AI agents check agent claims against configured rules, verify signed records offline, and replay integration failures. Public tools check explicit rules; receipt examples use test keys.",
    "check": {
      "endpoint": "https://api.curbi.io/v1/check",
      "method": "POST",
      "version": "2026-11-01",
      "openapi": "https://curbi.io/developers/check-api.openapi.json",
      "auth": "API key optional for rate-limited public checks; Authorization: Bearer <key> for managed metered access"
    },
    "mcp": {
      "endpoint": "https://api.curbi.io/mcp",
      "transport": "streamable-http",
      "protocolVersion": "2025-06-18",
      "tools": [
        "policy_check",
        "validate_policy",
        "search",
        "export_regression",
        "verify_bundle",
        "fetch"
      ],
      "readOnly": true
    },
    "verify": {
      "spec": "https://curbi.io/proof/",
      "verifier": "https://curbi.io/downloads/curbi-proof-v0.1.zip",
      "browser": "https://curbi.io/verify/",
      "keys": "https://curbi.io/.well-known/curbi-receipt-keys.json",
      "vectors": "https://curbi.io/proof/cases.json",
      "format": "curbi.proof/0.1"
    },
    "status": {
      "checkApi": "available",
      "mcp": "read_only",
      "receipts": "test_keys_only_production_signing_off",
      "authorization": "a passing check is not authorization to act"
    },
    "managedAccess": {
      "endpoint": "https://api.curbi.io/v1/check",
      "availability": "https://api.curbi.io/v1/billing/status",
      "setup": "https://curbi.io/connect/#paid-access",
      "currency": "USD",
      "pricePerCheckedReply": "0.001",
      "billingPeriod": "month",
      "meter": "checked_reply",
      "batch": "each reply counts separately",
      "authentication": "Authorization: Bearer <key>",
      "idempotency": "Idempotency-Key: <stable-check-id>",
      "defaultMonthlyReplyLimitPerKey": 100000,
      "limitScope": "UTC calendar-month checked-reply ceilings per key and shared billing customer. A runtime key can only lower its own persistent ceiling. This is not an account-wide spend cap: taxes, invoice adjustments and separate billing customers are excluded.",
      "localChecks": "free",
      "publicMcp": "six read-only tools, free",
      "dataBoundary": "Paid usage accounting is separate from reply checking. A billed check grants no execution authority and proves no provider outcome.",
      "pricePer1000CheckedReplies": "1.00",
      "usageEndpoint": "https://api.curbi.io/v1/usage",
      "budgetEndpoint": "https://api.curbi.io/v1/budget",
      "usagePage": "https://curbi.io/usage/#managed-usage",
      "checkRecordsEndpoint": "https://api.curbi.io/v1/check-records",
      "checkRecordsScope": "Authenticated current-key completed-check metadata, captured from rollout onward. Paginated snapshot; unsigned, no raw replies or policies, and no backfilled history. Not an authorization or provider-completion receipt.",
      "defaultMonthlyReplyLimitPerCustomer": 100000,
      "usageScope": "Current key only, three UTC monthly summaries, with shared customer remaining allowance. Reserved, completed, pending meter delivery, accepted and review states are distinct. No raw replies.",
      "budgetScope": "POST monthlyBudget as a non-negative integer of checked replies. Lowering only; zero stops new reservations. Does not erase completed usage or cancel existing reservations.",
      "priceScope": "Calculated check charges before tax and invoice adjustments. Meter acceptance is not a finalized invoice."
    }
  },
  "schemaVersion": 1,
  "name": "Curbi Policy Check",
  "status": "available",
  "updated": "2026-11-03",
  "description": "Deterministic checks of AI replies against explicit policy and supplied records.",
  "documentation": "https://curbi.io/agents/",
  "openapi": "https://curbi.io/developers/check-api.openapi.json",
  "policySchema": "https://curbi.io/developers/policy.v1.schema.json",
  "tools": [
    {
      "name": "check_reply",
      "method": "POST",
      "url": "https://api.curbi.io/v1/check",
      "contentType": "application/json",
      "authentication": "optional_public_access; bearer_required_for_managed_access",
      "apiVersion": "2026-11-01",
      "requestSchemaRef": "https://curbi.io/developers/check-api.openapi.json#/components/schemas/CheckRequest",
      "sideEffects": "no_external_writes",
      "requestBodyPersistence": "none_in_checker",
      "limits": {
        "bodyBytes": 65536,
        "cases": 50,
        "replyChars": 4000
      },
      "onRateLimit": "Respect Retry-After; exponential backoff with jitter.",
      "example": {
        "version": "2026-11-01",
        "policy": {
          "prices": [
            {
              "item": "Pro",
              "amount": 49
            }
          ]
        },
        "reply": "Pro is $39."
      }
    }
  ],
  "trust": {
    "callerRecords": "unverified",
    "passingCheckGrantsAuthority": false,
    "productionSigningEnabled": false,
    "localLabReceipts": "temporary_test_keys_not_trusted_by_public_API",
    "proofLimits": "Pattern checks, not general truth or compliance certification."
  },
  "unavailable": [
    "hosted_execution_gate",
    "public_signing_endpoint",
    "provider_writes"
  ],
  "discovery": {
    "llms": "https://curbi.io/llms.txt",
    "sitemap": "https://curbi.io/sitemap.xml"
  },
  "documentationCatalog": "https://curbi.io/docs/catalog.json",
  "reference": "https://curbi.io/answers/",
  "releaseEvidence": "https://curbi.io/release.json",
  "developerStarter": {
    "url": "https://curbi.io/downloads/curbi-policy-starter-v1.zip",
    "license": "MIT",
    "scope": "New starter examples only; not private engine or company data",
    "challenge": "https://curbi.io/build/"
  },
  "accountEntry": {
    "url": "https://curbi.io/signin/",
    "apiAccountRequired": false,
    "unifiedSsoPasskeyGithub": "not_connected"
  },
  "developerExperience": {
    "studio": "https://curbi.io/studio/",
    "course": "https://curbi.io/developer/course.v24.json",
    "localProgress": "browser_only",
    "projectsApi": "https://curbi.io/api/v1/projects",
    "auth": "email_signup_confirmation_required",
    "googleGithubPasskey": "not_connected"
  },
  "ecosystem": {
    "templates": "https://curbi.io/templates/index.json",
    "traces": "https://curbi.io/traces/index.json",
    "connectors": "https://curbi.io/connectors/index.json",
    "runtimeBoundaries": "https://curbi.io/developer/runtime-contract.json",
    "scope": "published_framework_packages_and_labeled_synthetic_examples; no_general_execution_authority",
    "trustCatalog": "https://curbi.io/developer/trust-catalog.json"
  },
  "actionLab": {
    "url": "https://curbi.io/action-lab/",
    "scope": "interactive_simulation",
    "noAccountRequired": true,
    "realProviderConnected": false,
    "competitorComparison": "not_tested"
  },
  "developerHub": {
    "api": "https://curbi.io/api/",
    "mcp": "https://curbi.io/mcp/",
    "explore": "https://curbi.io/explore/",
    "repairLab": "https://curbi.io/repair-lab/",
    "chaos": "https://curbi.io/chaos/",
    "promises": "https://curbi.io/promises/",
    "changelog": "https://curbi.io/changelog/",
    "connectors": "https://curbi.io/connectors/",
    "mcpConsole": "https://curbi.io/mcp/#console",
    "siteIndex": "https://curbi.io/site-index.json"
  },
  "remoteMcp": {
    "url": "https://api.curbi.io/mcp",
    "transport": "streamable_http_json",
    "scope": "read_only_public_checks_and_catalog",
    "tools": [
      "policy_check",
      "validate_policy",
      "search",
      "export_regression",
      "verify_bundle",
      "fetch"
    ],
    "authentication": "none_for_free_rate_limited_public_tools",
    "privateProjects": false,
    "executionAuthority": false,
    "clientValidation": "documented_client_compatibility"
  },
  "releaseStatus": "https://curbi.io/status.json",
  "definition": "https://curbi.io/what-is-curbi.json",
  "regressionStarter": "https://github.com/Curbi-Inc/curbi-regression-template",
  "sandbox": "https://curbi.io/sandbox/",
  "sandboxManifest": "https://curbi.io/sandbox.json",
  "reproducedFailure": "https://curbi.io/stories/49k/",
  "auditBoundary": "Separate configured-rule check of supplied text and records; not provider observation, execution authority or a model/provider traffic proxy.",
  "proofProtocol": {
    "name": "Proof of Action Protocol (PAP)",
    "wireFormat": "curbi.proof/0.1",
    "spec": "https://curbi.io/proof/",
    "productionSigning": "off"
  },
  "managedAccess": {
    "endpoint": "https://api.curbi.io/v1/check",
    "availability": "https://api.curbi.io/v1/billing/status",
    "setup": "https://curbi.io/connect/#paid-access",
    "currency": "USD",
    "pricePerCheckedReply": "0.001",
    "billingPeriod": "month",
    "meter": "checked_reply",
    "batch": "each reply counts separately",
    "authentication": "Authorization: Bearer <key>",
    "idempotency": "Idempotency-Key: <stable-check-id>",
    "defaultMonthlyReplyLimitPerKey": 100000,
    "limitScope": "UTC calendar-month checked-reply ceilings per key and shared billing customer. A runtime key can only lower its own persistent ceiling. This is not an account-wide spend cap: taxes, invoice adjustments and separate billing customers are excluded.",
    "localChecks": "free",
    "publicMcp": "six read-only tools, free",
    "dataBoundary": "Paid usage accounting is separate from reply checking. A billed check grants no execution authority and proves no provider outcome.",
    "pricePer1000CheckedReplies": "1.00",
    "usageEndpoint": "https://api.curbi.io/v1/usage",
    "budgetEndpoint": "https://api.curbi.io/v1/budget",
    "usagePage": "https://curbi.io/usage/#managed-usage",
    "checkRecordsEndpoint": "https://api.curbi.io/v1/check-records",
    "checkRecordsScope": "Authenticated current-key completed-check metadata, captured from rollout onward. Paginated snapshot; unsigned, no raw replies or policies, and no backfilled history. Not an authorization or provider-completion receipt.",
    "defaultMonthlyReplyLimitPerCustomer": 100000,
    "usageScope": "Current key only, three UTC monthly summaries, with shared customer remaining allowance. Reserved, completed, pending meter delivery, accepted and review states are distinct. No raw replies.",
    "budgetScope": "POST monthlyBudget as a non-negative integer of checked replies. Lowering only; zero stops new reservations. Does not erase completed usage or cancel existing reservations.",
    "priceScope": "Calculated check charges before tax and invoice adjustments. Meter acceptance is not a finalized invoice."
  },
  "frameworkPackages": [
    {
      "name": "Vercel AI SDK",
      "package": "@curbi/vercel",
      "registry": "npm",
      "install": "npm install @curbi/vercel ai",
      "url": "https://www.npmjs.com/package/@curbi/vercel",
      "docs": "https://curbi.io/connect/#vercel"
    },
    {
      "name": "LangChain",
      "package": "curbi-langchain",
      "registry": "PyPI",
      "install": "pip install curbi-langchain",
      "url": "https://pypi.org/project/curbi-langchain/",
      "docs": "https://curbi.io/connect/#langchain"
    },
    {
      "name": "LlamaIndex",
      "package": "curbi-llamaindex",
      "registry": "PyPI",
      "install": "pip install curbi-llamaindex",
      "url": "https://pypi.org/project/curbi-llamaindex/",
      "docs": "https://curbi.io/connect/#llamaindex"
    }
  ],
  "policyTemplates": {
    "url": "https://curbi.io/policies/",
    "catalog": "https://curbi.io/policies/index.json",
    "scope": "Working synthetic examples; review rules for your application."
  },
  "policyProfiles": {
    "url": "https://curbi.io/policies/#profiles",
    "catalog": "https://curbi.io/policies/profiles.json",
    "storage": "Explicit opt-in on this browser; policy and name only, no saved replies or records.",
    "scope": "Example rules, not business authorization or provider proof."
  }
}
