{
  "name": "fleetctl",
  "kind": "product",
  "description": "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. Hosted Streamable HTTP MCP. initialize, ping, and tools/list are public. tools/call requires OAuth and returns 401 with WWW-Authenticate resource_metadata when unauthenticated. Canonical resource: https://app.fleetctl.ai/mcp",
  "icon": "https://fleetctl.ai/favicon-96.png",
  "url": "https://fleetctl.ai/mcp",
  "transport": "streamable-http",
  "capabilities": {
    "tools": true,
    "resources": false
  },
  "tools": [
    {
      "name": "briefing.morning",
      "description": "Composite morning briefing: interventions, goals, and degraded blocks.",
      "parameters": {
        "since": {
          "type": "string",
          "description": "ISO timestamp to scope 'since you left' (default: 24h ago)"
        }
      }
    },
    {
      "name": "briefing.interventions",
      "description": "Approval gates, unacknowledged failures, and stuck runs.",
      "parameters": {
        "limit": {
          "type": "number",
          "description": "Max items (default 6, max 200)"
        }
      }
    },
    {
      "name": "briefing.shipLog",
      "description": "Recently delivered workflow runs and their artifacts.",
      "parameters": {}
    },
    {
      "name": "briefing.runningAgents",
      "description": "Currently running agents across the tenant fleet.",
      "parameters": {}
    },
    {
      "name": "briefing.decisions",
      "description": "Human approval decisions on recent runs.",
      "parameters": {}
    },
    {
      "name": "briefing.fleetHealth",
      "description": "Run vitals, instance heartbeat, and agent sessions.",
      "parameters": {}
    },
    {
      "name": "integrations.list",
      "description": "List integration instances without secret values.",
      "parameters": {}
    },
    {
      "name": "integrations.health",
      "description": "Unified health for every integration instance.",
      "parameters": {}
    },
    {
      "name": "integrations.save",
      "description": "Upsert an integration config and optional encrypted secret.",
      "parameters": {
        "provider_type": {
          "type": "string",
          "description": "Integration provider type",
          "required": true
        },
        "provider_id": {
          "type": "string",
          "description": "Provider instance id",
          "required": true
        }
      }
    },
    {
      "name": "integrations.sync",
      "description": "Run one explicit KPI-source sync.",
      "parameters": {
        "provider_type": {
          "type": "string",
          "description": "Integration provider type"
        },
        "provider_id": {
          "type": "string",
          "description": "Provider instance id"
        }
      }
    },
    {
      "name": "integrations.trigger_save",
      "description": "Create or update one trigger rule on an integration.",
      "parameters": {
        "provider_type": {
          "type": "string",
          "description": "Integration provider type",
          "required": true
        },
        "provider_id": {
          "type": "string",
          "description": "Provider instance id",
          "required": true
        }
      }
    },
    {
      "name": "integrations.trigger_delete",
      "description": "Delete one trigger rule from an integration.",
      "parameters": {
        "provider_type": {
          "type": "string",
          "description": "Integration provider type",
          "required": true
        },
        "provider_id": {
          "type": "string",
          "description": "Provider instance id",
          "required": true
        }
      }
    },
    {
      "name": "integrations.trigger_test",
      "description": "Dry-run a sample work item against trigger rules.",
      "parameters": {
        "provider_type": {
          "type": "string",
          "description": "Integration provider type",
          "required": true
        },
        "provider_id": {
          "type": "string",
          "description": "Provider instance id",
          "required": true
        }
      }
    },
    {
      "name": "integrations.delete",
      "description": "Delete an integration and its encrypted secret.",
      "parameters": {
        "provider_type": {
          "type": "string",
          "description": "Integration provider type",
          "required": true
        },
        "provider_id": {
          "type": "string",
          "description": "Provider instance id",
          "required": true
        }
      }
    },
    {
      "name": "kpis.list",
      "description": "List tenant KPI definitions across lifecycle states.",
      "parameters": {
        "query": {
          "type": "string",
          "description": "Optional name filter"
        }
      }
    },
    {
      "name": "kpis.controlTower",
      "description": "Ranked KPI control tower with evidence health and responses.",
      "parameters": {}
    },
    {
      "name": "kpis.catalog",
      "description": "Numeric integration metrics available for KPI mapping.",
      "parameters": {}
    },
    {
      "name": "kpis.history",
      "description": "One KPI definition and its recent evaluation history.",
      "parameters": {
        "kpi_id": {
          "type": "string",
          "description": "KPI id",
          "required": true
        }
      }
    },
    {
      "name": "kpis.saveDraft",
      "description": "Create or update a KPI draft through the governed mapping lifecycle.",
      "parameters": {
        "kpi_id": {
          "type": "string",
          "description": "KPI id"
        }
      }
    },
    {
      "name": "kpis.preview",
      "description": "Evaluate a KPI draft and return the digest required to activate it.",
      "parameters": {
        "kpi_id": {
          "type": "string",
          "description": "KPI id",
          "required": true
        }
      }
    },
    {
      "name": "kpis.activate",
      "description": "Activate a previewed KPI draft at an exact revision and digest.",
      "parameters": {
        "kpi_id": {
          "type": "string",
          "description": "KPI id",
          "required": true
        },
        "draft_revision": {
          "type": "number",
          "description": "Exact draft revision",
          "required": true
        },
        "preview_digest": {
          "type": "string",
          "description": "Preview digest from kpis.preview",
          "required": true
        }
      }
    },
    {
      "name": "fling.kpis",
      "description": "Live Fling KPIs: APNs-accepted push, binds (week + snapshot), approvals tapped.",
      "parameters": {
        "from": {
          "type": "string",
          "description": "Inclusive ISO datetime; omit with to for the current ET Monday week"
        },
        "to": {
          "type": "string",
          "description": "Exclusive ISO datetime; required together with from"
        }
      }
    },
    {
      "name": "workflows.list",
      "description": "List saved workflows for the authenticated tenant.",
      "parameters": {}
    },
    {
      "name": "workflows.get",
      "description": "Get one saved workflow by opaque id.",
      "parameters": {
        "id": {
          "type": "string",
          "description": "Workflow id",
          "required": true
        }
      }
    },
    {
      "name": "workflows.get_revision",
      "description": "Read one immutable saved-workflow revision.",
      "parameters": {
        "id": {
          "type": "string",
          "description": "Workflow id",
          "required": true
        },
        "revision": {
          "type": "number",
          "description": "Revision number",
          "required": true
        }
      }
    },
    {
      "name": "workflows.templates",
      "description": "List Fleetctl canonical starter workflow templates.",
      "parameters": {}
    },
    {
      "name": "workflows.validate",
      "description": "Validate a workflow definition without saving it.",
      "parameters": {
        "definition": {
          "type": "object",
          "description": "Workflow definition object or JSON string",
          "required": true
        }
      }
    },
    {
      "name": "workflows.create",
      "description": "Create a saved workflow from a definition or template.",
      "parameters": {
        "name": {
          "type": "string",
          "description": "Workflow name",
          "required": true
        }
      }
    },
    {
      "name": "workflows.update",
      "description": "Replace a saved workflow using optimistic concurrency.",
      "parameters": {
        "id": {
          "type": "string",
          "description": "Workflow id",
          "required": true
        },
        "expected_revision": {
          "type": "number",
          "description": "Expected revision",
          "required": true
        }
      }
    },
    {
      "name": "workflows.delete",
      "description": "Delete a saved workflow definition using optimistic concurrency.",
      "parameters": {
        "id": {
          "type": "string",
          "description": "Workflow id",
          "required": true
        },
        "expected_revision": {
          "type": "number",
          "description": "Expected revision",
          "required": true
        }
      }
    },
    {
      "name": "workflows.runs.start",
      "description": "Start a saved workflow. Supply a unique idempotency_key.",
      "parameters": {
        "workflow_id": {
          "type": "string",
          "description": "Saved workflow id",
          "required": true
        },
        "idempotency_key": {
          "type": "string",
          "description": "Caller-generated key for one intended start",
          "required": true
        }
      }
    },
    {
      "name": "workflows.runs.list",
      "description": "List recent workflow runs, optionally filtered.",
      "parameters": {}
    },
    {
      "name": "workflows.runs.get",
      "description": "Get one workflow run with steps, outcomes, and artifacts.",
      "parameters": {
        "id": {
          "type": "string",
          "description": "Run id",
          "required": true
        }
      }
    },
    {
      "name": "workflows.runs.awaiting",
      "description": "List workflow runs waiting for a human approval.",
      "parameters": {}
    },
    {
      "name": "workflows.runs.document",
      "description": "Read one run-scoped approval document.",
      "parameters": {
        "run_id": {
          "type": "string",
          "description": "Run id",
          "required": true
        },
        "hash": {
          "type": "string",
          "description": "Document hash",
          "required": true
        }
      }
    },
    {
      "name": "workflows.runs.artifact",
      "description": "Read one published workflow artifact.",
      "parameters": {
        "hash": {
          "type": "string",
          "description": "Artifact hash",
          "required": true
        }
      }
    },
    {
      "name": "workflows.runs.acknowledge",
      "description": "Acknowledge a failed or stuck workflow intervention.",
      "parameters": {
        "id": {
          "type": "string",
          "description": "Run id",
          "required": true
        }
      }
    },
    {
      "name": "workflows.runs.approve",
      "description": "Approve the currently pending workflow gate.",
      "parameters": {
        "id": {
          "type": "string",
          "description": "Run id",
          "required": true
        },
        "gate": {
          "type": "string",
          "description": "Gate id",
          "required": true
        }
      }
    },
    {
      "name": "workflows.runs.reject",
      "description": "Reject the currently pending workflow gate.",
      "parameters": {
        "id": {
          "type": "string",
          "description": "Run id",
          "required": true
        },
        "gate": {
          "type": "string",
          "description": "Gate id",
          "required": true
        }
      }
    },
    {
      "name": "lessons.bootstrap",
      "description": "Discover the Fleet Lessons contract and effective OAuth capabilities.",
      "parameters": {}
    },
    {
      "name": "lessons.capabilities",
      "description": "Read effective Lesson feature controls for this principal.",
      "parameters": {}
    },
    {
      "name": "lessons.proposal_schema",
      "description": "Read the lessons/v1 JSON Schema for complete proposals.",
      "parameters": {}
    },
    {
      "name": "lessons.context",
      "description": "Fetch governed Lesson policy before first inference.",
      "parameters": {}
    },
    {
      "name": "lessons.search",
      "description": "Search a bounded, scope-authorized Lesson candidate set.",
      "parameters": {}
    },
    {
      "name": "lessons.get",
      "description": "Read one Lesson and its lifecycle record by opaque id.",
      "parameters": {
        "lesson_id": {
          "type": "string",
          "description": "Lesson id",
          "required": true
        },
        "contract_version": {
          "type": "string",
          "description": "Lessons contract version",
          "required": true
        }
      }
    },
    {
      "name": "lessons.list",
      "description": "Browse a bounded page of scope-authorized Lessons.",
      "parameters": {}
    },
    {
      "name": "lessons.propose",
      "description": "Submit a complete lessons/v1 proposal.",
      "parameters": {
        "contract_version": {
          "type": "string",
          "description": "Lessons contract version",
          "required": true
        },
        "proposal": {
          "type": "object",
          "description": "Complete lessons/v1 proposal",
          "required": true
        }
      }
    },
    {
      "name": "lessons.evidence.add",
      "description": "Add bounded evidence to an existing Lesson.",
      "parameters": {}
    },
    {
      "name": "lessons.revise",
      "description": "Replace a Lesson proposal while preserving lifecycle controls.",
      "parameters": {}
    },
    {
      "name": "lessons.reject",
      "description": "Record a human-authorized rejection of a proposed Lesson.",
      "parameters": {}
    },
    {
      "name": "lessons.approve",
      "description": "Request or confirm a human approval bound to the exact preview.",
      "parameters": {}
    },
    {
      "name": "lessons.promote",
      "description": "Request or confirm promotion to a different destination scope.",
      "parameters": {}
    },
    {
      "name": "lessons.apply",
      "description": "Apply an already human-approved Lesson after exact re-preview.",
      "parameters": {}
    },
    {
      "name": "lessons.application.fail",
      "description": "Mark one governed-change application as failed.",
      "parameters": {}
    },
    {
      "name": "lessons.application.adopt",
      "description": "Mark one in-progress application as adopted.",
      "parameters": {}
    },
    {
      "name": "lessons.divergence.mark",
      "description": "Mark a Lesson diverged only when verified drift exists.",
      "parameters": {}
    },
    {
      "name": "lessons.revert",
      "description": "Conditionally reverse a previously applied Lesson.",
      "parameters": {}
    },
    {
      "name": "lessons.supersede",
      "description": "Supersede a Lesson with another authorized Lesson.",
      "parameters": {}
    },
    {
      "name": "lessons.retire",
      "description": "Retire a Lesson with a human-authorized reason.",
      "parameters": {}
    },
    {
      "name": "lessons.personal_data.erase",
      "description": "Crypto-shred erasable personal Lesson prose.",
      "parameters": {}
    }
  ]
}
