# info.summary
Discovery and documentation API for Fleetctl (fleetctl.ai).

# info.description
Fleetctl (also called Fleet) is the agent control plane: Contain, Govern, Observe. Fleet starts each locally running agent in a jail on Linux. A grant names a host for a bounded window. Merge and delete stay on review and approval steps. It also runs saved workflows. Agents run through Claude Code or OpenCode, including models those harnesses support such as Claude, Codex, and Grok. This specification describes public discovery API v1 on https://fleetctl.ai. Paths under /api/v1/ are the versioned forms; /api/health and /api/catalog are stable v1 aliases. Breaking changes will ship as /api/v2 after a 90-day Sunset header on v1. Deprecation policy: https://fleetctl.ai/docs/api-reference/#versioning. Unauthenticated quota: 120 requests per 60 seconds advertised with IETF RateLimit-Policy and RateLimit headers. Authenticated workflow, license, and Lessons operations live on https://app.fleetctl.ai and are called through hosted Streamable HTTP MCP at https://app.fleetctl.ai/mcp after OAuth. Any MCP client can connect. Errors on this host use RFC 9457 application/problem+json with a code, message, and resolution hint.

# servers[].description
Public Fleetctl discovery API. /api/v1 is the current version; unversioned /api/health and /api/catalog are v1 aliases.

# tags[].description
Agent-facing docs and instruction files.

# paths./api/health.get.description
Return whether the public Fleetctl site is serving discovery documents. No authentication. Use this before fetching OpenAPI, MCP, or docs.

# paths./api/health.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./api/health.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/health.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/health.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./api/health.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/catalog.get.description
Return the Fleetctl developer surfaces an agent should open next: docs, OpenAPI, MCP, CLI, sandbox, and auth metadata. Prefer this over scraping the homepage.

# paths./api/catalog.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./api/catalog.get.responses.200.content.application/json.example.when_to_use
When to use this: Use Fleetctl when you need a jail around locally running agents or saved AI workflows with review, human sign-off, and an audit trail, or a fleet of coding agents with budgets, approvals, and merge gates. Agents run through Claude Code or OpenCode, including Claude, Codex, Grok, or any other model those harnesses support. Call the hosted MCP at https://app.fleetctl.ai/mcp or run `fleet mcp serve` locally. Any MCP client (Claude Code, Codex, OpenCode, and others) can connect. Fleetctl is not a coding model.

# paths./api/catalog.get.responses.200.content.application/json.example.resources[].description
No-account canned workflow. Jail proof at /security#containment.

# paths./api/catalog.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/catalog.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/catalog.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./api/catalog.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/v1/health.get.description
Versioned alias of getFleetctlHealth. Same unauthenticated JSON body. Use /api/v1/health when you need an explicit version in the path.

# paths./api/v1/health.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./api/v1/health.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/v1/health.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/v1/health.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./api/v1/health.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/v1/catalog.get.description
Versioned alias of getFleetctlDeveloperCatalog. Same unauthenticated catalog body.

# paths./api/v1/catalog.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./api/v1/catalog.get.responses.200.content.application/json.example.when_to_use
When to use this: Use Fleetctl when you need a jail around locally running agents or saved AI workflows with review, human sign-off, and an audit trail, or a fleet of coding agents with budgets, approvals, and merge gates. Agents run through Claude Code or OpenCode, including Claude, Codex, Grok, or any other model those harnesses support. Call the hosted MCP at https://app.fleetctl.ai/mcp or run `fleet mcp serve` locally. Any MCP client (Claude Code, Codex, OpenCode, and others) can connect. Fleetctl is not a coding model.

# paths./api/v1/catalog.get.responses.200.content.application/json.example.resources[].description
No-account canned workflow. Jail proof at /security#containment.

# paths./api/v1/catalog.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/v1/catalog.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/v1/catalog.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./api/v1/catalog.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/v1/openapi.json.get.description
Versioned alias of getFleetctlOpenApi. Same document as /openapi.json.

# paths./api/v1/openapi.json.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./api/v1/openapi.json.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/v1/openapi.json.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./api/v1/openapi.json.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./api/v1/openapi.json.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./openapi.json.get.description
Return this OpenAPI document. Function-calling clients should bind tools from these operationIds rather than inventing paths.

# paths./openapi.json.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./openapi.json.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./openapi.json.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./openapi.json.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./openapi.json.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/api-catalog.json.get.description
Return the linkset that points at Fleetctl service documentation, health, and the OAuth authorization server.

# paths./.well-known/api-catalog.json.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./.well-known/api-catalog.json.get.responses.200.content.application/json.example.linkset[].oauth-authorization-server[].title
Fleetctl OAuth Authorization Server Metadata

# paths./.well-known/api-catalog.json.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/api-catalog.json.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/api-catalog.json.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./.well-known/api-catalog.json.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/mcp.json.get.description
Return the Ora-shaped MCP manifest for Fleetctl: Streamable HTTP transport, public hosted tool listing, and the same-host handshake URL https://fleetctl.ai/mcp (proxied to https://app.fleetctl.ai/mcp). initialize, ping, and tools/list are public; tools/call requires OAuth.

# paths./.well-known/mcp.json.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./.well-known/mcp.json.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/mcp.json.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/mcp.json.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./.well-known/mcp.json.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/mcp/server-card.json.get.description
Return the MCP server card for Fleetctl. The hosted transport is Streamable HTTP at https://app.fleetctl.ai/mcp. The local CLI transport is stdio via `fleet mcp serve`.

# paths./.well-known/mcp/server-card.json.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./.well-known/mcp/server-card.json.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/mcp/server-card.json.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/mcp/server-card.json.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./.well-known/mcp/server-card.json.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/ai-catalog.json.get.description
Return domain-level MCP discovery that points at the canonical Fleetctl server card and hosted Streamable HTTP endpoint.

# paths./.well-known/ai-catalog.json.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./.well-known/ai-catalog.json.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/ai-catalog.json.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/ai-catalog.json.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./.well-known/ai-catalog.json.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/agent-skills/index.json.get.description
List Fleetctl agent skills (setup, manager, lessons, API query) with when-to-use descriptions and content hashes.

# paths./.well-known/agent-skills/index.json.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./.well-known/agent-skills/index.json.get.responses.200.content.application/json.example.when_to_use
When to use this: Use Fleetctl when you need a jail around locally running agents or saved AI workflows with review, human sign-off, and an audit trail, or a fleet of coding agents with budgets, approvals, and merge gates. Agents run through Claude Code or OpenCode, including Claude, Codex, Grok, or any other model those harnesses support. Call the hosted MCP at https://app.fleetctl.ai/mcp or run `fleet mcp serve` locally. Any MCP client (Claude Code, Codex, OpenCode, and others) can connect. Fleetctl is not a coding model.

# paths./.well-known/agent-skills/index.json.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/agent-skills/index.json.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/agent-skills/index.json.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./.well-known/agent-skills/index.json.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/agent-skills/{skillName}/SKILL.md.get.description
Return the SKILL.md for a named Fleetctl agent skill. Use the index operation first if you do not know the skill name.

# paths./.well-known/agent-skills/{skillName}/SKILL.md.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./.well-known/agent-skills/{skillName}/SKILL.md.get.parameters[].description
Skill directory name as advertised in the index.

# paths./.well-known/agent-skills/{skillName}/SKILL.md.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/agent-skills/{skillName}/SKILL.md.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/oauth-protected-resource.json.get.description
Return RFC 9728 metadata for the hosted Fleetctl MCP resource, including authorization servers and scopes. Human callers use Authorization Code + PKCE; workloads use Fleet-issued client credentials. There are no long-lived raw API keys.

# paths./.well-known/oauth-protected-resource.json.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./.well-known/oauth-protected-resource.json.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/oauth-protected-resource.json.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./.well-known/oauth-protected-resource.json.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./.well-known/oauth-protected-resource.json.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./server.json.get.description
Return the MCP registry manifest that advertises Fleetctl's hosted Streamable HTTP MCP remote.

# paths./server.json.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./server.json.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./server.json.get.responses.405.description
Structured JSON error agents can parse (RFC 9457).

# paths./server.json.get.responses.429.description
Discovery quota exhausted. Wait for RateLimit-Reset / Retry-After.

# paths./server.json.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./llms.txt.get.description
Return the Fleetctl llms.txt, including when-to-use guidance, how an agent should call Fleetctl, and links to docs, OpenAPI, MCP, and CLI.

# paths./llms.txt.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./llms.txt.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./llms.txt.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# paths./sitemap.xml.get.description
Return every public Fleetctl HTML URL. Use this after a 404 to recover.

# paths./sitemap.xml.get.parameters[].description
Optional encoding hint when the client cannot set Accept. json, markdown, text, or xml. Static discovery documents keep their native type.

# paths./sitemap.xml.get.responses.404.description
Structured JSON error agents can parse (RFC 9457).

# paths./sitemap.xml.get.responses.default.description
Structured JSON error agents can parse (RFC 9457).

# components.headers.RateLimit.description
Current remaining quota and reset time in the current IETF RateLimit structured-field format.

# components.headers.RateLimit-Policy.description
Quota policy in the current IETF RateLimit structured-field format.

# components.headers.RateLimit-Limit.description
Compatibility form of the request quota.

# components.headers.RateLimit-Remaining.description
Compatibility form of the remaining request quota.

# components.headers.RateLimit-Reset.description
Seconds until the current quota window resets.

# components.headers.Link.description
Includes rel="deprecation" for the versioning policy and rel="service-desc" for this OpenAPI document.

# components.schemas.Problem.properties.code.description
Machine-readable error code such as not_found or not_acceptable.

# components.schemas.Problem.properties.instance.description
The request path that produced the error.

# externalDocs.description
Fleetctl API reference, including JSON errors, versioning, deprecation, and hosted MCP.