{
  "authentication": {
    "authorization_header": "Authorization: Bearer <token>",
    "machine_agent": {
      "identity": "external_agent service principal",
      "provisioning": "A Space manager creates the service principal, grants the Space, and issues its scoped token.",
      "required_for": [
        "remote MCP",
        "autonomous REST jobs"
      ]
    },
    "scheme": "Bearer",
    "space_header": "X-Colter-Workspace: <space-slug>",
    "user_delegated_agent": {
      "device_authorization": "https://api.colter.ai/api/v2/auth/device",
      "required_for": [
        "master-agent conversations",
        "user-attributed CLI work"
      ],
      "token_exchange": "https://api.colter.ai/api/v2/auth/device/token"
    }
  },
  "contract": "agent-entry",
  "contract_version": "1",
  "description": "Governed pay-per-job agent work: discover a service, receive a bid, authorize it, then collect a checked outcome and receipt.",
  "entrypoints": {
    "agent": "https://colter.ai/agent",
    "api_origin": "https://api.colter.ai",
    "well_known": "https://colter.ai/.well-known/colter"
  },
  "flows": {
    "machine_agent": [
      {
        "method": "GET",
        "required_scope": "services:read",
        "step": "discover",
        "url": "https://api.colter.ai/api/v2/services"
      },
      {
        "method": "POST",
        "required_scope": "quotes:write",
        "step": "request_bid",
        "url": "https://api.colter.ai/api/v2/quotes"
      },
      {
        "method": "POST",
        "required_scope": "quotes:write",
        "step": "authorize",
        "url": "https://api.colter.ai/api/v2/quotes/:quote_key/accept"
      },
      {
        "method": "GET",
        "required_scope": "jobs:read",
        "step": "observe",
        "url": "https://api.colter.ai/api/v2/jobs/:job_key"
      },
      {
        "method": "GET",
        "required_scope": "jobs:read",
        "step": "collect_outcome",
        "url": "https://api.colter.ai/api/v2/jobs/:job_key/outcome"
      }
    ],
    "user_delegated_agent": [
      {
        "method": "POST",
        "required_scope": null,
        "step": "authenticate",
        "url": "https://api.colter.ai/api/v2/auth/device"
      },
      {
        "method": "GET",
        "required_scope": "colter:read",
        "step": "discover_commands",
        "url": "https://api.colter.ai/api/v2/commands"
      },
      {
        "method": "POST",
        "required_scope": "colter:write",
        "step": "open_conversation",
        "url": "https://api.colter.ai/api/v2/colter/conversations"
      }
    ]
  },
  "governance": {
    "authority": "Colter Core owns identity, quotes, approvals, Jobs, Runs, usage, outcomes, and receipts.",
    "delegated_auto_accept": "Allowed only when the machine service principal has sufficient per-job and daily spend authority.",
    "idempotency": "Use Idempotency-Key on mutating transactional requests.",
    "ordinary_quote_request_starts_work": false,
    "work_authorization": "A quote must be explicitly accepted unless a predelegated auto_accept policy permits the request. Machine acceptance is always bounded by the principal's per-job and daily spend limits."
  },
  "interfaces": {
    "mcp": {
      "discovery_method": "tools/list",
      "protocol_version": "2025-06-18",
      "transport": "streamable-http",
      "url": "https://api.colter.ai/mcp"
    },
    "rest": {
      "base_url": "https://api.colter.ai/api/v2",
      "command_discovery": "https://api.colter.ai/api/v2/commands",
      "media_type": "application/json"
    }
  },
  "service": "colter",
  "start": {
    "mcp": {
      "method": "tools/list",
      "url": "https://api.colter.ai/mcp"
    },
    "rest": "https://api.colter.ai/api/v2/services"
  }
}