MCP

20 read tools for agent context.

Telos exposes a curated set of read-only tools over the Model Context Protocol so external agents can ground decisions in your actual product state. Writes stay on the REST surface where they are typed, validated, and audited; this plane is for reading.

Connect

Endpoint & auth

POST /api/mcp speaks the Streamable HTTP MCP transport. Auth is the same bearer token you use for REST: Authorization: Bearer telos_live_…. Rate limits and role-based ACL from the REST API apply here too.

claude desktop
{
  "mcpServers": {
    "telos": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/inspector",
        "--transport=http",
        "--url=https://your-host.telos.app/api/mcp",
        "--header=Authorization: Bearer telos_live_…"
      ]
    }
  }
}
Reference

Tool catalog

Auto-rendered from the source registry. Every input parameter is validated against a Zod schema on the server.

Identity & directory · 3

whoami

Get the identity of the authenticated user.

Input
No parameters.

list_teams

List teams in the organisation.

Input
No parameters.

list_users

List users in the organisation.

Input
No parameters.
Vision · 3

list_visions

List visions in the organisation, most recent first.

Input
No parameters.

get_vision

Get a specific vision by id.

Input
  • id: uuidVision UUID

list_vision_versions

List the version history for a vision.

Input
  • visionId: uuidVision UUID
Objectives · 2

list_objectives

List strategic objectives. Optionally scope to a vision.

Input
  • visionId?: uuidVision UUID filter

get_objective

Get a specific strategic objective by id.

Input
  • id: uuidObjective UUID
Metrics · 2

list_metrics

List metrics tracked by the organisation.

Input
No parameters.

get_metric

Get a specific metric by id.

Input
  • id: uuidMetric UUID
Strategy · 1

list_strategies

List strategies in the organisation. Defaults to active.

Input
  • status: "draft" | "active" | "archived"Strategy status filter
Opportunities · 2

list_opportunities

List opportunities. Optionally filter by lifecycle state (active/completed/rejected) or team.

Input
  • state?: "active" | "completed" | "cancelled"Opportunity lifecycle state filter
  • teamId?: uuidTeam UUID filter

get_opportunity

Get a specific opportunity by id.

Input
  • id: uuidOpportunity UUID
Tasks · 2

list_tasks

List tasks. Optionally filter by opportunity, status, priority, or team.

Input
  • opportunityId?: uuidOpportunity UUID filter
  • status?: "backlog" | "todo" | "in_progress" | "done" | "cancelled"Task status filter
  • priority?: "low" | "medium" | "high" | "urgent"Task priority filter
  • teamId?: uuidTeam UUID filter

get_task

Get a specific task by id.

Input
  • id: uuidTask UUID
Intake · 2

list_intake

List intake items. Optionally filter by status.

Input
  • status?: "new" | "needs_shaping" | "accepted" | "rejected"Intake status filter

get_intake_stats

Get intake queue counts grouped by status and category.

Input
No parameters.
Customers · 2

list_customers

List customers. Optionally filter by status.

Input
  • status?: "active" | "at_risk" | "prospect" | "churned"Customer status filter

get_customer

Get a specific customer by id.

Input
  • id: uuidCustomer UUID
Why split

Where writes live

By design, MCP is read-only. To mutate state from an agent, call the REST API directly. The same bearer key works for both. This split keeps every write typed, validated, and auditable through a single service layer; the read plane stays simple and safe to expand without surfacing destructive operations through a fuzzy tool name.