linear-mcp-lean
Provides tools for interacting with Linear's API, enabling AI agents to manage issues, projects, teams, documents, attachments, and other Linear resources programmatically.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@linear-mcp-leanlist my open issues in the Engineering team"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
linear-mcp-lean
A self-hosted MCP server for Linear that controls the response shape: field-selected, flattened reads and minimal write acks instead of the fat full-object payloads the hosted Linear MCP returns. Run it locally over stdio (npx linear-mcp-lean) or as a shared HTTP deploy.
Built for LLM agents (Claude Code, or any MCP client) that call Linear tools hundreds of times per session: every byte a tool returns is a token your model pays to read. This wrapper serves the same tool names as the hosted Linear MCP, so it's a drop-in replacement — but a default list_issues row is ~0.3× the hosted ~1.2 KB/issue, and a save_issue ack is ~160 bytes with no full-object echo.
In plain words
Your agent talks to Linear through this server instead of Linear's own MCP server. Same tool names, same behavior — nothing in your prompts or workflows changes.
The difference is what comes back: only the fields agents actually use, not the whole object. A typical issue row is ~340 bytes here vs ~1.2 KB from the hosted server; a write returns a tiny receipt (
{id, identifier, state, url}) instead of echoing the full issue back.Fewer bytes returned = fewer tokens your model reads = cheaper, faster agent sessions — the savings compound over hundreds of calls.
Need more sometimes? Pass
full: trueon that one call, or drop to raw GraphQL withlinear_graphql. Lean by default, never a dead end.You don't have to take the savings on faith: every call is logged, and
GET /statsshows the trim ratio measured on your own traffic.It authenticates with a plain Linear API key — no OAuth dance — so it works headless: CI, cron, background agents, multiple machines sharing one deploy.
Related MCP server: Context Guardian
Measured savings vs the hosted MCP
Measured 2026-07-07 against a live deploy — identical requests to this wrapper and to the hosted Linear MCP, response bytes compared per call (per row for lists). The probe-vs-hosted workflow re-measures weekly and fails on regression:
tool w.bytes h.bytes w.rows h.rows save%call save%/row
--------------------------------------------------------------------------------
get_issue 1422 2138 0 0 33.5% —
get_project 311 1100 0 0 71.7% —
get_team 83 148 1 1 43.9% —
list_teams 618 1256 8 8 50.8% 50.8%
list_projects 270 2025 2 2 86.7% 86.7%
list_issues 2788 9402 6 6 70.3% 70.3%
list_issue_statuses 697 571 7 7 -22.1% -22.1%
--------------------------------------------------------------------------------
TOTAL wrapper=6189B (~1768 tok) hosted=16640B (~4754 tok) aggregate save=62.8%How it compares
vs Linear's hosted MCP (mcp.linear.app) — identical tool names, so it's a drop-in swap; but reads are field-trimmed to roughly a third of the size and writes return minimal acks instead of full-object echoes. Static API key instead of per-user OAuth, which is what makes headless use possible. The 5 tools Linear's public GraphQL can't back are proxied to the hosted server, so nothing is lost in the swap.
vs community SDK wrappers (cline/linear-mcp, tacticlaunch/mcp-linear, dvcrn/mcp-server-linear, …) — those expose plain CRUD with untrimmed SDK payloads. This serves field-trimmed responses — response size is the entire point of its design — over the same convenient stdio transport (
npx linear-mcp-lean), plus an HTTP mode one deploy can share across machines and agents.vs linear-toon-mcp — same motivation (the hosted MCP burns context), different mechanism: TOON re-encodes all the data in a more compact text format (~40–60% claimed). This server instead selects fields server-side, so unneeded data never crosses the wire at all, stays plain JSON (no extra format for the model to parse), keeps the hosted server's tool names for drop-in compatibility, and proves its savings from live traffic via
/stats.
How it works
MCP client ──stdio (npx linear-mcp-lean)──────────────▶ this server
or ──POST /mcp (Bearer MCP_BEARER_TOKEN)──────▶ │
│
hand-written minimal GraphQL ├──▶ api.linear.app/graphql (LINEAR_API_KEY)
verbatim proxy (5 tools) └──▶ mcp.linear.app/mcp (LINEAR_API_KEY)Two transports, one tool set — stdio (local child process of your MCP client, one command, no server to run) and stateless Streamable HTTP behind a bearer gate (one deploy shared across machines, plus the
/statsbyte-log). Both serve the samebuildServer()registrations.Trimmed GraphQL tools — each read is a hand-written minimal GraphQL query flattened into a closed object (never a spread of the raw response, so no field sneaks in); each write returns a minimal ack (
save_issue→{id, identifier, state, url}).Server-side name→id resolution — filter and write args accept names (
state: "In Progress",project: "My Project",assignee: "me", team key/name case-insensitively); an unresolved name throws a loud error, never a silent empty result.Hosted-MCP proxy fallback — 5 tools Linear's public GraphQL cannot back (
search_documentation,extract_images,get_diff,get_diff_threads,list_diffs) are forwarded verbatim to the hosted Linear MCP.linear_graphqlescape hatch — run an arbitrary GraphQL document and get the raw, untrimmed result, for the rare need the lean defaults don't cover.Byte-savings observability — every call appends one JSONL record (upstream bytes vs bytes returned);
GET /statsaggregates per-tool trim ratios from real traffic.
Stack
@modelcontextprotocol/sdk (McpServer + stateless StreamableHTTPServerTransport) behind Express POST /mcp; graphql-request for the hand-written queries; zero database.
Quick start
Requires Node 20+ and a Linear Personal API key (Settings → Security & access → Personal API keys).
Local (stdio) — no server to run
# with LINEAR_API_KEY exported in your shell:
claude mcp add linear -e LINEAR_API_KEY=${LINEAR_API_KEY} -- npx -y linear-mcp-leanor in .mcp.json / ~/.claude.json mcpServers (any MCP client with stdio support):
{
"mcpServers": {
"linear": {
"command": "npx",
"args": ["-y", "linear-mcp-lean"],
"env": { "LINEAR_API_KEY": "${LINEAR_API_KEY}" }
}
}
}(${LINEAR_API_KEY} is expanded from the client's environment at session start.) No bearer token here: a stdio server is a local child process of your MCP client, so the only credential is the outbound LINEAR_API_KEY. The byte log is off in stdio mode unless you set BYTE_LOG_PATH explicitly.
Hosted (HTTP) — one deploy shared across machines and agents
npm install
cp .env.example .env # fill in MCP_BEARER_TOKEN + LINEAR_API_KEY
npm run build
npm start # listens on :$PORT (default 8080), MCP at POST /mcpMCP_BEARER_TOKEN— inbound auth: the token your MCP clients must send. Generate one:openssl rand -hex 32.LINEAR_API_KEY— outbound auth: the same Personal API key as above.
Smoke test:
source .env
curl -s http://localhost:8080/health # {"ok":true} — liveness, no Linear call
curl -s -H "Authorization: Bearer $MCP_BEARER_TOKEN" \
http://localhost:8080/ready # proves the LINEAR_API_KEY actually reaches Linear
curl -s -X POST http://localhost:8080/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H "Authorization: Bearer $MCP_BEARER_TOKEN" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_issue","arguments":{"id":"ENG-123"}}}'Connect an MCP client
Register under the server name linear so tool names (mcp__linear__* in Claude Code) match the hosted Linear MCP exactly — existing prompts and call sites keep working unchanged. For the stdio form see Quick start; connecting to a hosted deploy:
Claude Code (CLI):
claude mcp add --transport http linear https://linear-mcp.example.com/mcp \
--header "Authorization: Bearer ${MCP_BEARER_TOKEN}"or in .mcp.json / ~/.claude.json mcpServers:
{
"mcpServers": {
"linear": {
"type": "http",
"url": "https://linear-mcp.example.com/mcp",
"headers": { "Authorization": "Bearer ${MCP_BEARER_TOKEN}" }
}
}
}(${MCP_BEARER_TOKEN} is expanded from the client's environment at session start.)
For local experimentation, point at http://localhost:8080/mcp instead.
Tools
Same names and semantics as the hosted Linear MCP (36 tools total):
Group | Tools |
Issues |
|
Projects |
|
Teams & users |
|
Labels & states |
|
Documents |
|
Attachments |
|
Status updates |
|
Proxied to hosted MCP |
|
Escape hatch |
|
Field contract — lean default, broaden on demand
Reads are lean by default, broaden on demand. The full per-tool field map lives in FIELDS.md; the contract in brief:
full: true(opt-in onget_issue,list_issues,list_projects,get_project) → a documented richer superset (assignee, lifecycle timestamps, state type, parent, estimate, due date, …). Absent → the minimal contract. You only pay the extra bytes when you ask.list_issuesreturns a pagination envelope matching the hosted MCP shape:{ "issues": [ … ], "hasNextPage": true, "cursor": "<opaque token>" }To page: pass the returned
cursorback as thecursorarg untilhasNextPageis false.list_issuesis the only paginated tool (seeFIELDS.mdfor why the other lists stay bare arrays).linear_graphql({query, variables})— arbitrary GraphQL againsthttps://api.linear.app/graphqlvia the same server-side client, raw untrimmed result. Bearer-gated like every tool; errors surface, never swallowed.// request { "name": "linear_graphql", "arguments": { "query": "query($id:String!){ issue(id:$id){ identifier subscribers{ nodes{ name } } } }", "variables": { "id": "ENG-123" } } }
Endpoints
Endpoint | Auth | Purpose |
| Bearer | The MCP endpoint (stateless Streamable HTTP) |
| none | Liveness — process up, deliberately no Linear call |
| Bearer | Readiness — fresh |
| Bearer | Per-tool + overall upstream/downstream byte totals and trim ratios, plus byte-log write-health |
Tests and verification probes
Unit tests cover the flatteners and name→id resolvers with fetch mocked at the GraphQL seam — no Linear workspace, key, or network needed (they run on fork PRs):
npm testLive invariants are covered by encoded, runnable probes:
npm run build
npm run probe:auth # missing/invalid bearer -> 401; valid -> non-401 (key-free)
npm run probe:tools # tools/list serves every promised tool name (key-free)
npm run probe:bytelog # dead byte-log sink is distinguishable from idle on /stats (key-free)
npm run probe:secrets # no secret tracked in the repo (offline)
npm run probe:status # no deprecated GraphQL field selected (needs LINEAR_API_KEY)
npm run probe:proxy # hosted MCP accepts the PAK bearer (needs LINEAR_API_KEY)
npm run probe:vs-hosted # byte-savings comparison vs the hosted MCP (needs a deploy; see file header)CI runs the type-check, build, unit tests, and the four key-free probes (auth, tools, bytelog, secrets) on every PR and push to main. The probe-vs-hosted workflow re-measures the savings weekly and fails when the aggregate drops below its floor; refresh the committed table with scripts/update-readme-savings.mjs when the numbers meaningfully change.
Deploy
deploy/ has a complete runbook (deploy/README.md) for a small Linux VPS: systemd unit (hardened: ProtectSystem=strict, dedicated no-login user, root-owned chmod 600 env file) + Caddy for automatic HTTPS.
Security notes
Single-tenant by design. The server holds ONE Linear API key; every client presenting the bearer token acts as that Linear user, with that user's full workspace access. Don't share the bearer across trust boundaries — this is a personal/team-internal service, not a multi-tenant gateway.
The bearer gate runs before the MCP transport and compares tokens with a timing-safe equality; a missing
MCP_BEARER_TOKENfails closed (500), never open./readyand/statsare bearer-gated too — they expose the viewer id and traffic shape.Secrets come only from the environment (
.envlocally, a root-owned env file under systemd). Only.env.exampleis committed;npm run probe:secretsasserts nothing secret is tracked.
License
MIT — see LICENSE.
Available Tools
36 toolscreate_attachmentCreate attachmentB
Link an external URL to an issue as an attachment → {id, title, url}. issue accepts an identifier or id.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to attach | |
| issue | Yes | Issue identifier or id | |
| title | Yes | Attachment title | |
| subtitle | No | Attachment subtitle |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description mentions output shape and parameter behavior but fails to disclose mutation details, error cases, or prerequisites for a creation action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with clear action and output arrow; concise but could benefit from structured format for parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output schema and usage context; partially addresses return shape but omits error handling, prerequisites, and example scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; description adds value by clarifying that 'issue' accepts an identifier or id and showing output fields, but does not fully compensate for missing parameter details like 'subtitle'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool links an external URL to an issue as an attachment, distinguishing it from the sibling 'create_attachment_from_upload' which handles file uploads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'create_attachment_from_upload'; context about external URL usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_attachment_from_uploadCreate attachment from uploadA
Finalize an upload: link an already-uploaded assetUrl to an issue → {id, title, url}. Call after prepare_attachment_upload + the client-side byte PUT.
| Name | Required | Description | Default |
|---|---|---|---|
| issue | Yes | Issue identifier or id | |
| title | No | Attachment title (defaults to the asset URL) | |
| assetUrl | Yes | assetUrl returned by prepare_attachment_upload | |
| subtitle | No | Attachment subtitle |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the return value but does not disclose side effects (e.g., whether it's destructive) or auth requirements. Adequate but could be more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key information, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description fully explains the purpose, workflow position, and expected output. No obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds value by explaining the assetUrl origin and title default behavior, which goes beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb (finalize/link), resource (attachment), and context (after upload). It distinguishes it from prepare_attachment_upload by positioning it as the next step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Call after prepare_attachment_upload + the client-side byte PUT,' providing clear when-to-use guidance. Does not mention alternatives or when not to use, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_issue_labelCreate issue labelA
Create an issue label → {id, name, color}. team (name or id) scopes it to a team; omit for a workspace label.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Label name | |
| team | No | Team name or id (omit for a workspace label) | |
| color | No | Hex color, e.g. #bec2c8 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It fails to disclose important behaviors such as idempotency, permission requirements, or whether duplicate names are allowed. The description is too minimal for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with an example and immediate clarification of optional behavior. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with 3 parameters and no output schema, the description covers the return format and team scoping adequately. However, it lacks behavioral details (e.g., duplicates, permissions) and usage guidance, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by clarifying the `team` parameter (name or id, omit for workspace label) and providing an example color format. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create), the resource (issue label), and the return format ({id, name, color}). It distinguishes from sibling tools like list_issue_labels by focusing on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating labels at workspace or team level via the `team` parameter, but does not explicitly state when to use versus alternative creation tools like create_attachment. However, the context is clear for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_imagesExtract imagesA
Extract and fetch images from markdown content. Proxied to the hosted Linear MCP (content helper, no GraphQL backing).
| Name | Required | Description | Default |
|---|---|---|---|
| markdown | Yes | Markdown containing image references |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description reveals it is proxied and lacks GraphQL backing, but does not explain behavioral traits like network calls, error handling, or permissions. Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences covering purpose and a key implementation detail. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple extraction tool with one parameter and no output schema, the description provides enough context. Could mention output format or failure behavior, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter. Description adds no extra meaning beyond the schema's description. Baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Extract and fetch images' and resource 'from markdown content'. Unambiguous and distinct from sibling tools like create_attachment or get_attachment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage: when markdown contains images. No explicit when-to-use or when-not-to-use, and no alternatives mentioned. Siblings don't compete for same task, but guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attachmentGet attachmentA
Get one attachment → {id, title, subtitle, url, sourceType}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Attachment id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behaviors. It implies a read operation without side effects but does not explicitly confirm idempotency, auth requirements, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence and an arrow indicating output, containing no wasted words and front-loading the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-get tool with 100% schema coverage, the description is adequate but lacks details on error handling, use case context, or behavioral confirmation, making it only moderately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter 'id' described as 'Attachment id'. The description adds no additional meaning beyond the schema, so it earns the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get one attachment' with a specific verb and resource, and distinguishes from siblings like 'get_document' and 'get_issue' by listing the output fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as when to use get_attachment vs. get_document, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_diffGet diffA
Exact lookup for a Linear diff (review URL, PR URL/ID, slug, or full identifier). Proxied to the hosted Linear MCP (no public GraphQL backing).
| Name | Required | Description | Default |
|---|---|---|---|
| urlOrId | Yes | Review URL, diff slug, PR id, identifier, or GitHub PR URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions being proxied to hosted MCP, but does not disclose whether it is read-only, error behavior, idempotency, or auth requirements. Adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose and inputs, second provides implementation context. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with one parameter and no output schema, the description covers purpose and backend, but lacks return format and error handling. Adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, so the description adds little beyond rephrasing the parameter's description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool does an 'exact lookup' for a Linear diff, specifying the multiple identifier forms accepted. The verb 'lookup' and resource 'Linear diff' are specific, and it distinguishes from sibling tools like list_diffs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use when you have a specific identifier for an exact lookup. Siblings like list_diffs and get_diff_threads indicate alternative uses, but no explicit when-not-to-use or prerequisite guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_diff_threadsGet diff threadsC
Exact lookup for diff review threads. Proxied to the hosted Linear MCP (no public GraphQL backing).
| Name | Required | Description | Default |
|---|---|---|---|
| orderBy | No | Sort order | |
| urlOrId | Yes | Review URL, diff slug, PR id, identifier, or GitHub PR URL | |
| resolved | No | Filter by resolved state | |
| threadId | No | Top-level thread/comment id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It mentions being proxied (useful context) but omits key behaviors like idempotency, safety, or error handling. For a read operation, more transparency would help.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise with two sentences. The purpose is front-loaded and the second sentence adds valuable context about the backend. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and no output schema, the description is too sparse. It lacks details on return format, pagination, or practical use cases. A more complete description would improve usability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond what the parameter descriptions already provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it performs an 'exact lookup for diff review threads', identifying the verb and resource. However, it doesn't explicitly differentiate from sibling tools like get_diff or list_comments, which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs. alternatives. With many sibling tools such as list_comments or get_diff, the lack of explicit usage context is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentGet documentA
Get one document → {id, title, content, slugId, updatedAt, project{id}}. id accepts a document id or slug.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document id or slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It adds that 'id accepts a document id or slug', which is helpful. However, it omits side effects, permissions, or error behavior. Acceptable for a read tool but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with one parameter and no output schema, the description provides the return field list and parameter flexibility. Missing info on not-found case, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description repeats the schema's parameter info ('Document id or slug') without adding new meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get one document' and lists the returned fields. This distinguishes it from sibling tools like list_documents (list) and save_document (write).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or not use this tool vs alternatives. The purpose implies it's for fetching a single document, but no exclusions or comparisons are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issueGet issueA
Retrieve a Linear issue by ID. Default → a minimal flattened field set; full:true → a documented richer superset (assignee, lifecycle timestamps, state type, parent, estimate, dueDate).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Issue ID or identifier, e.g. ENG-123 | |
| full | No | Return the richer documented superset instead of the lean default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behavioral traits. It mentions the two output modes (default minimal vs full richer set) and lists fields returned in full mode. However, it does not state that the tool is read-only, lacks permission or rate limit info, or describe error handling. This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with two clear parts, no redundant words, and front-loads the core action. Every earned its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple endpoint with two parameters and no output schema, the description covers the main behavior and parameter meaning. It does not mention error cases, but the context is sufficient for an AI agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with descriptions for both id and full parameters. The description enhances the full parameter by listing specific fields returned (assignee, lifecycle timestamps, etc.), adding practical context beyond the schema's generic statement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Retrieve a Linear issue by ID' with a specific verb and resource, and distinguishes between default minimal fields and full richer superset. This differentiates it clearly from siblings like list_issues, save_issue, or get_issue_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a single issue by ID, with an optional full parameter for more detail. It does not explicitly state when not to use it or mention alternatives, but the context is clear and sufficient for most agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issue_statusGet issue statusA
Get one workflow state → {id, name, type, color}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Workflow state id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Describes return shape but does not state non-destructiveness or behavior on invalid id. For a read operation, interpretation is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence with arrow indicating return. No wasted words, easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, description covers purpose and return shape. Lacks error handling info but is sufficient for basic selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'id', with description 'Workflow state id'. Description adds no extra meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states action ('Get one workflow state') and specifies return fields ({id, name, type, color}). Distinct from sibling 'list_issue_statuses' which retrieves all statuses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when/when-not guidance. However, the context of sibling 'list_issue_statuses' implies this is for single retrieval. Lacks alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_milestoneGet milestoneB
Get one project milestone (id, name, description).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Milestone id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It merely states 'Get' implying read-only, but does not mention permissions, error handling, or what happens if the milestone is not found. This is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is efficient, though could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with one parameter and no output schema, the description lists returned fields but omits context like the milestone's parent project or any related resources. It is minimally complete but lacks important contextual details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'id', which is described as 'Milestone id'. The description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'one project milestone', and lists the returned fields (id, name, description). This distinguishes it from sibling tools like list_milestones or save_milestone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as list_milestones (to retrieve all milestones) or save_milestone (to modify). The description is too brief to help an agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectGet projectA
Get one project. Default → id, name, description, labels[name]; full:true adds status{name,type}, dates, lead, initiatives.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project id | |
| full | No | Return the richer documented superset instead of the lean default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description does not explicitly state that the tool is read-only and non-destructive, though 'Get one project' implies a safe operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the purpose and efficiently conveys all essential information without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and complete schema, the description adequately explains return values and parameter effects; missing details like error handling are not critical for a low-risk read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds meaning by detailing the default response fields and explaining the effect of the 'full' parameter beyond the schema's generic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a single project, specifies default and extended fields, and distinguishes from sibling tools like list_projects and save_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching a specific project by ID, but lacks explicit guidance on when not to use it compared to list_projects or other retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_status_updatesGet status updatesB
Get one status update by id, or list a project's/initiative's updates → [{id, body, health, createdAt, url, authorName}]. type selects project vs initiative.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Status update id — returns just that one | |
| type | Yes | Status update type | |
| limit | No | Max rows when listing (default 50) | |
| project | No | Project name or id (when type=project) | |
| initiative | No | Initiative name or id (when type=initiative) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only discloses the return structure. It fails to mention any behavioral aspects such as side effects, authentication needs, rate limits, or whether it is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loads the verb and resource, and provides the return structure concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main use cases and return format, but it does not clarify that `type` is always required (even with `id`), nor does it explain conditional requirements for `project` or `initiative` when listing. The `limit` parameter is also not mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant context beyond the schema, clarifying the dual mode (get by id vs list by type) and the return format. It explains how `type` and `id` relate, which the schema alone does not fully convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves status updates either by id or lists for a project/initiative, specifying the return format. It distinguishes from siblings implicitly by focusing on status updates, but doesn't explicitly contrast with other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool for fetching or listing, but does not provide guidance on when not to use it (e.g., for creating or updating) or mention alternative tools like save_status_update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_teamGet teamA
Get one team by id, key, or name → {id, name, key}.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Team UUID, key (e.g. ENG), or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description partially covers behavioral traits by indicating it returns a team object with selected fields. However, it does not mention error conditions, rate limits, or data freshness, leaving some transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys purpose, inputs, and output without waste. Every word is necessary and effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter retrieval tool without an output schema, the description gives essential information. Minor improvement could be clarifying that the team is returned uniquely, but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description restates the parameter 'query' as used for id, key, or name. No additional semantic value is added beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Get'), resource ('one team'), input options ('by id, key, or name'), and output structure ('{id, name, key}'). It effectively distinguishes from the sibling 'list_teams' by indicating it returns a single team.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a specific team by identifier, but does not explicitly state when to use this tool versus alternatives like 'list_teams' or what to avoid. No context on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userGet userA
Get one user by id, "me", or name → {id, name, displayName, email, active}.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | User id, name, or "me" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description provides the return value structure but lacks details on error handling (e.g., when user not found) or permissions. The output format is helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no wasted words. The description is front-loaded and efficiently conveys all necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers input and output adequately. Missing error handling for non-existent users, but still sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given 100% schema coverage, the baseline is 3. The description repeats the schema's parameter description without adding extra details like formatting or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'user', and specifies the input types ('by id, "me", or name') and the output fields. It effectively distinguishes from sibling tools like list_users.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving a single user by identifier, contrasting with list_users for multiple users. However, it does not explicitly state when not to use it or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_graphqlLinear GraphQL (escape hatch)A
Run an arbitrary GraphQL query or mutation against Linear's API (https://api.linear.app/graphql) and return the raw result. For the rare need neither the lean default nor full:true covers. Example: linear_graphql({query: "query($id:String!){ issue(id:$id){ identifier subscribers{ nodes{ name } } } }", variables: {id: "ENG-123"}}). Bearer-gated like every tool; errors surface, never swallowed.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A GraphQL document (query or mutation) | |
| variables | No | Variables object for the document |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool can run both queries and mutations, returns raw result, is bearer-gated like other tools, and errors are surfaced. This provides good transparency, though it could mention potential side effects of mutations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with three sentences plus an example. Information is front-loaded with purpose first. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity as a GraphQL escape hatch, the description covers purpose, usage, example, and error handling. It does not specify output format, but that is implicit in 'raw result'. Could mention that mutations can modify data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds an example usage but does not provide additional semantic meaning beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool runs arbitrary GraphQL queries/mutations against Linear's API and returns raw results. It distinguishes itself from sibling tools by noting it's for rare needs not covered by default or full:true.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description gives context for when to use: 'for the rare need neither the lean default nor full:true covers.' This implies it's an escape hatch. However, it does not explicitly list alternatives or state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commentsList commentsA
List an issue's comments (id, body, authorName, createdAt). issue accepts an identifier (e.g. ENG-123) or id.
| Name | Required | Description | Default |
|---|---|---|---|
| issue | Yes | Issue identifier or id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It only mentions the parameter type and returned fields, but lacks details on pagination, sorting, ordering, rate limits, or any side effects. This is minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The first sentence states the action and output, the second clarifies the parameter. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose and parameter but is missing typical list behavior details such as pagination, sorting, or limits. With no output schema, the agent might need more context on how to handle large result sets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the `issue` parameter as 'Issue identifier or id'. The description adds value by providing an example (ENG-123) and explicitly stating it accepts both identifier and id, which clarifies usage beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists an issue's comments and specifies the returned fields (id, body, authorName, createdAt). It distinguishes this from sibling tools like get_issue or list_issues by focusing on comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving comments on a given issue but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cyclesList cyclesA
List cycles → [{id, number, name, startsAt, endsAt}]. Optional team (name or id) scope.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team name or id to scope to | |
| limit | No | Max rows (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the output structure and optional team scoping but lacks details on pagination, sorting, default limit, or whether the operation is read-only. It is adequate but not rich in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence that front-loads the purpose and adds essential optional scope. Every word earns its place, with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two optional parameters and no output schema, the description covers the core functionality and team filtering. It could mention the limit parameter's default or ordering, but the schema provides that detail, making the description reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters have clear descriptions. The tool description adds little beyond the schema (only restating team scope). Baseline 3 is appropriate since the schema already documents both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'cycles', and the output format (array of objects with id, number, name, startsAt, endsAt). It distinguishes from sibling list tools like list_issues or list_diffs by specifying the exact resource and output fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the optional 'team' scope, giving context on when to use that parameter. However, it does not provide guidance on when not to use this tool or compare it to alternative tools like search or filter functions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_diffsList diffsB
List Linear diff pull requests. Proxied to the hosted Linear MCP (no public GraphQL backing).
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Filter by repo name | |
| limit | No | Max results (default 50) | |
| owner | No | Filter by repo owner | |
| query | No | Search by title, branch, PR number, or slug | |
| cursor | No | Next page cursor | |
| status | No | Filter by PR status | |
| orderBy | No | Sort order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fails to disclose behavioral traits such as read-only nature, authentication requirements, rate limits, or side effects. The proxy note hints at limitations but is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, front-loading the core purpose. Every sentence adds value, and there is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 7 parameters and lack of output schema, the description is too minimal. It omits details on return format, pagination behavior, or how to use filters effectively, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are adequately documented in the schema. The description adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Linear diff pull requests, using a specific verb and resource. It distinguishes from sibling 'get_diff' which retrieves a single diff, and adds implementation context about proxying.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'get_diff' or filtering strategies. The description implies it is for listing, but does not set expectations or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsList documentsA
List documents as lean rows → [{id, title, slugId, updatedAt}] (no content).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It indicates a read operation with lean output, but does not disclose ordering, pagination behavior beyond the limit parameter, or authorization needs. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using a single sentence to convey the action and result format. No redundant words; every part adds value. Front-loads the key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description fairly explains the return format and the lean nature. However, it lacks guidance on ordering, pagination beyond limit, and when to choose this over get_document, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'limit', already well-documented. The tool description adds no additional meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'List', the resource 'documents', and the output format as lean rows with specific fields. It distinguishes from sibling tools like get_document by noting it returns no content, and from save_document by being a read operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives (e.g., get_document for full details). The usage is implied through the output description, but no direct guidance on when-not to use or which sibling to choose instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_issue_labelsList issue labelsA
List issue labels → [{id, name, color, isGroup}]. Optional name filter.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by exact label name | |
| limit | No | Max rows (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations available. The description only lists output fields and mentions an optional filter. It does not disclose pagination behavior, ordering, or whether it returns all or paginated results, leaving gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one sentence plus an output hint. No wasted words; every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides inline output structure, which compensates for missing output schema. However, does not explain the `limit` parameter behavior or pagination; simple tool but could be slightly more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds no new meaning beyond 'Optional `name` filter', which repeats the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List), resource (issue labels), and output format ([{id, name, color, isGroup}]), differentiating from siblings like list_project_labels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives provided. The optional `name` filter is noted, but no guidance on when this tool is preferred over others like list_issue_statuses or list_project_labels.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_issuesList issuesA
List issues as a {issues, hasNextPage, cursor} envelope. Lean rows by default (identifier, title, state, statusType, priority, createdAt, blockedBy, labels, project{id}, projectMilestone{id}, gitBranchName); full:true adds description, url, assignee, milestone name, updatedAt per row. query is a case-insensitive title/description text search (find an existing ticket without raw graphql). Page forward by passing the returned cursor back. Filter names (state/project/label/assignee/team) resolve server-side; an unresolved name errors loudly. Narrow server-side with team and includeCompleted:false (excludes completed/canceled/duplicate) to cut row count before it reaches you.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Return the richer documented per-row superset instead of the lean default | |
| team | No | Team name, key, or id — narrows to that team's issues server-side | |
| label | No | Issue label name or id | |
| limit | No | Max rows (default 50) | |
| query | No | Case-insensitive text search over title OR description (AND-ed with the other filters) | |
| state | No | Workflow state name or id (e.g. In Progress) | |
| cursor | No | Next-page cursor from a prior response | |
| project | No | Project name or id | |
| assignee | No | User name or id, or "me" | |
| includeCompleted | No | Default true. false + no explicit state excludes completed/canceled/duplicate issues server-side |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: default lean rows vs full:true, cursor-based pagination, server-side name resolution with error behavior, and filtering with team/includeCompleted to reduce row count. This provides thorough transparency for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) and front-loads the key purpose and output format. However, it packs dense information without visual structure (e.g., bullet lists for parameters), which could be improved for readability while maintaining brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, no output schema, and no annotations, the description covers all essential aspects: pagination, filtering, default/rich output, server-side name resolution, error behavior, and performance tips. It is complete for an agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 100%, the description adds significant semantic meaning beyond the schema: explaining full as a toggle for richer rows, query as case-insensitive search, cursor for pagination, and the effect of includeCompleted on filtering. This enhances parameter understanding beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'List issues as a {issues, hasNextPage, cursor} envelope', clearly defining the action (list) and resource (issues). It is specific about the output structure and distinguishes itself from sibling tools like get_issue, list_comments, etc., by focusing on listing multiple issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage guidance for key features: using query for text search, cursor for pagination, server-side resolution of filter names, and team/includeCompleted for performance. However, it lacks explicit instructions on when not to use this tool versus alternatives like search_documentation or get_issue, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_issue_statusesList issue statusesA
List workflow states → [{id, name, type, color}]. Optional team (name or id) scope.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team name or id to scope to | |
| limit | No | Max rows (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose any behavioral traits (e.g., is it read-only? any side effects?). Minimal but accurate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one sentence plus a map hint. No fluff, information front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only 2 parameters and no output schema, the description fully explains what the tool returns and the optional scoping. Adequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 100%, description adds value by clarifying that 'team' parameter accepts name or id, not just id. No other parameter details needed beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'List' with resource 'workflow states' and explicit output format. Distinguishes from sibling 'get_issue_status' by indicating it returns a list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States optional team scope, but no explicit guidance on when to use this tool vs alternatives like get_issue_status or list_issues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_milestonesList milestonesA
List a project's milestones (id, name). project accepts a name or id.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Project name or id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool lists milestones and returns id and name, but does not mention any behavioral traits such as pagination, sorting, or whether it only returns open milestones. The safety profile (read-only) is not implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a single sentence plus a one-sentence clarification. It is front-loaded with the core purpose and avoids unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description provides minimal information about return values (id, name). It does not address pagination, filtering, or scope of milestones. However, for a simple list tool with one parameter, it is marginally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3. The description adds marginal value by reiterating that 'project' accepts a name or id, which is already stated in the schema. It does not add new semantic information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List a project's milestones', specifying the verb (list), resource (milestones), and scope (project's). It also mentions the return fields (id, name), effectively distinguishing it from sibling tools like get_milestone or list_cycles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only gives a parameter hint ('project accepts a name or id'), but does not provide guidance on when to use this tool versus alternatives. No explicit when/when-not or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_labelsList project labelsA
List project labels → [{id, name, color, isGroup}]. Optional name filter.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by exact label name | |
| limit | No | Max rows (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It only states listing and optional filter, with no mention of read-only nature, authentication, rate limits, or pagination. Output format is given but insufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence with output shorthand. No fluff, front-loaded with purpose. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with few parameters and no required fields. Description covers purpose, optional filter, and output format. Lacks mention of limit default (in schema but not description) but still adequate for a straightforward list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters (name and limit) with descriptions. The description adds value by showing the output shape and confirming the filter is optional. Because schema coverage is 100%, baseline is 3, but the output structure info raises it to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list', the resource 'project labels', and the output format as an array of objects with id, name, color, isGroup. This distinguishes it from siblings like list_issue_labels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like list_issue_labels or when not to use it. The optional name filter is mentioned but no context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList projectsA
List projects as lean rows (id, name, status{name,type}) by default; full:true adds description, dates, lead, labels, initiatives. Optional state (lifecycle string), label (project label name), and team filters; includeCompleted:false excludes completed/canceled projects server-side.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Return the richer documented superset instead of the lean default | |
| team | No | Team name, key, or id — narrows to that team's projects server-side | |
| label | No | Project label name | |
| limit | No | Max rows (default 50) | |
| state | No | Project lifecycle state (e.g. started, completed) | |
| includeCompleted | No | Default true. false excludes completed/canceled projects server-side |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It discloses default output, effect of 'full:true', and server-side filtering for 'includeCompleted'. It doesn't mention pagination or permissions, but for a read-only listing tool it's fairly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and each clause adds meaningful information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description explains the return format for both default and full modes. It covers filters and default limits. Missing: error conditions or pagination details, but overall sufficient for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds extra context like the exact fields returned by 'full:true' and the default behavior of 'includeCompleted', providing value beyond schema comments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists projects with lean rows by default and optional full details. It distinguishes from siblings like 'get_project' which retrieves a single project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (listing projects) and details on filters and options. It lacks explicit 'when not to use' but the context is clear given sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_teamsList teamsA
List teams → [{id, name, key}]. query filters by name/key substring.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 50) | |
| query | No | Filter by team name/key substring |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only gives return format and default limit but does not disclose read-only nature, pagination, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and return format, no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple list tool with 2 parameters, describes return structure. Lacks behavioral details but overall functional.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes both parameters and default limit. Description adds minimal value by reiterating query filter purpose, but baseline 3 applies due to 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists teams and specifies the return format [{id, name, key}], distinguishing it from sibling tools like get_team or list_issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use when needing a list of teams with optional substring filtering. No explicit alternatives or when-not-to-use, but context with siblings makes usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersList usersA
List users → [{id, name, displayName, email, active}]. query filters by name/displayName/email substring.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 50) | |
| query | No | Filter by name/displayName/email substring |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It correctly implies a read operation and shows output fields, but lacks details on pagination, sorting, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with return format, no superfluous words. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description compensates by listing return fields. Missing details like default limit and sorting order, but sufficient for a simple list tool with 2 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions, and the tool's description adds value by specifying the filter behavior ('substring match on name/displayName/email') and the return fields, enhancing understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists users and specifies the exact fields returned (id, name, displayName, email, active). Distinguishes from sibling list tools by naming the resource and showing output format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: list users with optional query filter. Does not explicitly state when not to use or name alternatives, but the description is sufficient for most use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_attachment_uploadPrepare attachment uploadA
Get a presigned direct-upload URL (fileUpload) → {assetUrl, uploadUrl, headers, issue}. PUT raw bytes to uploadUrl with headers verbatim (client-side), then call create_attachment_from_upload.
| Name | Required | Description | Default |
|---|---|---|---|
| size | Yes | Exact file size in bytes | |
| issue | Yes | Issue identifier or id (for the finalize step) | |
| title | No | Suggested attachment title for finalize | |
| filename | Yes | Filename, e.g. screenshot.png | |
| subtitle | No | Suggested attachment subtitle for finalize | |
| contentType | Yes | MIME type, e.g. image/png |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the protocol (returns URL and headers, requires client-side PUT) and includes the 'issue' field for finalization. Lacks details on auth, rate limits, or error handling, but adequately describes the two-step process.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with two sentences. Front-loaded with the main purpose and structured to describe input->output->next step. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description lists return fields ({assetUrl, uploadUrl, headers, issue}) and explains the client's next action. Lacks details like size limits or error handling, but sufficient for a presigned URL tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds value by explaining that the 'issue' parameter is used in the finalize step and that the tool returns a presigned URL, providing context beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool gets a presigned URL for upload, with a specific verb 'Get', and outlines the subsequent steps (PUT then call create_attachment_from_upload). Differentiates from sibling tools like create_attachment and create_attachment_from_upload by describing the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides step-by-step instructions on how to use the tool: get URL, upload bytes, then call create_attachment_from_upload. Implicitly tells when to use (when needing to upload a file) but does not explicitly state when not to use or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_commentSave commentA
Add a comment to an issue. Returns only {id, url}. issue accepts an identifier or id.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Comment body (Markdown) | |
| issue | Yes | Issue identifier or id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses return format is only {id, url}, which is useful. Doesn't mention permissions or side effects, but for a simple creation tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose. Each sentence adds value without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers core aspects: purpose, parameters, and return value. Lacks guidance on error handling or prerequisites but sufficient for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. Description adds value by specifying that issue accepts identifier or id, going beyond schema. No additional context for body.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool adds a comment to an issue. Distinguishes from sibling tools like list_comments (read) and save_issue (different resource). Also specifies return value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for adding comments but lacks explicit when-to-use vs alternatives or when-not-to-use context. Sibling list includes other creation tools but no differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_documentSave documentA
Create (no id) or update (id) a document → {id, title, slugId}. Create requires title; project (name or id) resolves server-side.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Document id to UPDATE; omit to create | |
| title | No | Title (required on create) | |
| content | No | Markdown content | |
| project | No | Project name or id to attach the doc to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains create/update behavior and return values, but lacks details on partial update behavior (e.g., whether omitted fields are preserved), idempotency, or error handling for invalid ids. Adequate but with notable gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences with no extraneous information. Every sentence serves a purpose: the first defines the operation and return, the second clarifies parameter conditions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description covers the main operational modes (create/update), required fields, and return format. It does not specify partial update semantics or error states, but is mostly complete for typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by clarifying that id is used for updates, title is required on create, and project resolves server-side—details not fully captured in the schema. Content is not elaborated beyond schema, but overall adds meaningful context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs create or update operations on documents, distinguishes between the two paths based on the presence of an id, and specifies the return value. It is specific to documents and differentiates from sibling save_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use create vs update (based on id), and notes that title is required on create and project resolves server-side. It does not explicitly state when not to use this tool or list alternatives, but the usage is well-defined for a save operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_issueSave issueA
Create (no id) or update (id) an issue. Returns only {id, identifier, state, url} — no full-object echo. id-or-name args (state/assignee/project/milestone/labels) resolve server-side; blockedBy takes issue identifiers; create requires title + team.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Issue id or identifier to UPDATE; omit to create | |
| team | No | Team name or id (required on create) | |
| state | No | Workflow state name or id (e.g. In Progress) | |
| title | No | Issue title (required on create) | |
| labels | No | Label names or ids | |
| project | No | Project name or id | |
| assignee | No | User name or id, or "me" | |
| priority | No | 0=None,1=Urgent,2=High,3=Medium,4=Low | |
| blockedBy | No | Issue identifiers/ids that block this issue | |
| milestone | No | Milestone name (needs project) or id | |
| description | No | Markdown body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It discloses limited return fields (`{id, identifier, state, url}`) and server-side resolution of id-or-name arguments. However, it lacks details on permissions, side effects, or reversibility of the mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core create/update behavior and return format. The second sentence efficiently covers parameter resolution and requirements. Every sentence adds essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters with 100% schema coverage and no output schema, the description covers the key logic (create/update, return fields, id-or-name resolution, required on create). It lacks details on error cases or defaults, but is sufficient for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining create vs update logic, required parameters on create (`title`, `team`), and server-side resolution for id-or-name arguments. This clarifies parameter interaction beyond the schema's individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create (no `id`) or update (`id`) an issue', using a specific verb and resource. It distinguishes the tool from sibling CRUD tools by describing a combined create/update operation for issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to create vs update based on the `id` parameter. It also notes that create requires `title` and `team`. However, it does not explicitly mention when not to use this tool or suggest alternative tools for listing or reading issues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_milestoneSave milestoneA
Create (no id) or update (id) a project milestone. Returns only {id, name}. Create requires name + project (name or id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Milestone id to UPDATE; omit to create | |
| name | No | Milestone name (required on create) | |
| project | No | Project name or id (required on create) | |
| description | No | Milestone description (Markdown) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns only {id, name}, which is important for an agent to know. However, it does not explain update semantics (e.g., partial vs full replacement) or any side effects, such as whether other fields like description are updated on successful call. The description adds some behavioral context but leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, concise and front-loaded with the most important behavior (create/update). Every sentence adds necessary information. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description mentions the return value {id, name}, which is helpful. The four parameters are fully covered in the schema, and the description adds conditional requiredness. However, for a mutation tool, it lacks details on error cases or idempotency of updates. Overall, it provides adequate context for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters have basic descriptions. The description adds value by clarifying that 'id' distinguishes create vs update, and that 'name' and 'project' are required on create. It also notes that 'project' accepts name or id. This goes beyond the schema, which only lists property types and names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create (no id) or update (id) a project milestone.' It distinguishes between create and update based on the presence of the 'id' parameter, and the resource (milestone) is specific. Sibling tools like save_issue or save_project are for different resources, so differentiation is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use create (omit 'id') vs update (provide 'id'), and states that create requires 'name' and 'project'. However, it does not explicitly mention when not to use this tool or suggest alternatives like get_milestone or list_milestones. The guidance is present but could be more comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_projectSave projectA
Create (no id) or update (id) a project. Returns only {id, name, url}. Create requires name + team; addInitiatives (names or ids) are attached after create.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Project id to UPDATE; omit to create | |
| name | No | Project name (required on create) | |
| team | No | Team name or id (required on create) | |
| description | No | Markdown body | |
| addInitiatives | No | Initiative names or ids to attach |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that returns only {id, name, url} and that addInitiatives are attached after create. However, it does not clarify update behavior (e.g., field overwrites, partial updates), permissions required, rate limits, or error cases like updating a non-existent project.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the key create/update distinction, and includes all needed information without redundancy. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and no annotations, the description covers the create workflow well but leaves gaps about update behavior (e.g., whether addInitiatives works on update, whether description is only for updates, and field mutability). It is adequate but not fully complete for a tool with conditional upsert behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant value: it explains that id determines create vs update, that name and team are required on create despite schema showing required[], that addInitiatives is only relevant after create, and clarifies the return subset. This provides conditional logic and process context that the schema alone does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create (no id) or update (id) a project,' which distinguishes the two modes of operation. It is specific about the resource and action, and it aligns with the tool name. However, it does not explicitly differentiate from other save_* tools, though they operate on different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool with or without an id, and mentions that create requires name+team and that addInitiatives are attached after create. It does not provide explicit alternatives or context for when not to use this tool, nor does it mention exclusions or failure scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_status_updateSave status updateA
Create (no id) or update (id) a project/initiative status update → {id, url, health}. Create requires the matching parent (project or initiative).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Status update id to UPDATE; omit to create | |
| body | No | Update body (Markdown) | |
| type | Yes | Status update type | |
| health | No | Health | |
| project | No | Project name or id (when type=project, on create) | |
| initiative | No | Initiative name or id (when type=initiative, on create) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that create requires a parent field, and that the output includes id, url, health. It does not cover error cases or side effects, but for a CRUD operation it is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the core behavior and constraints. Every element serves a purpose, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, CRUD semantics, and no output schema, the description covers the essential aspects: create vs update, parent requirement, and output fields. It is complete enough for an agent to use the tool correctly, though additional details about error handling or idempotency could be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions, so baseline is 3. The description adds value by explaining the role of `id` (create vs update) and the conditional requirement of `project`/`initiative` based on `type`. This additional context justifies a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool creates or updates a status update, with a specific resource ('project/initiative status update') and the fields returned ({id, url, health}). It distinguishes between create (no id) and update (with id), which is a key differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use create (no id) vs update (with id), and that create requires a matching parent (project or initiative). It does not explicitly state when not to use this tool or mention alternatives, but the guidance is clear for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_documentationSearch documentationB
Search Linear's help-center documentation. Proxied to the hosted Linear MCP (no public GraphQL backing).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 0) | |
| query | Yes | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It notes the proxy to hosted MCP but omits details about authentication, rate limits, result format, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the action, followed by implementation detail. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description fails to explain what the search returns (e.g., list of documents, excerpts). Incomplete for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for 'query' and 'page'. The description adds no extra parameter context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search Linear's help-center documentation', specifying the verb and resource. It distinguishes from sibling tools, none of which perform documentation search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_document. The description does not mention context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
36 tool updates
v0.1.0- First observed
create_attachment - First observed
create_attachment_from_upload - First observed
create_issue_label - First observed
extract_images - First observed
get_attachment - First observed
get_diff - First observed
get_diff_threads - First observed
get_document - First observed
get_issue - First observed
get_issue_status - First observed
get_milestone - First observed
get_project - First observed
get_status_updates - First observed
get_team - First observed
get_user - First observed
linear_graphql - First observed
list_comments - First observed
list_cycles - First observed
list_diffs - First observed
list_documents - First observed
list_issue_labels - First observed
list_issue_statuses - First observed
list_issues - First observed
list_milestones - First observed
list_project_labels - First observed
list_projects - First observed
list_teams - First observed
list_users - First observed
prepare_attachment_upload - First observed
save_comment - First observed
save_document - First observed
save_issue - First observed
save_milestone - First observed
save_project - First observed
save_status_update - First observed
search_documentation
TDQS
Each tool targets a distinct operation on a specific entity (issue, project, document, etc.). Even similar pairs like create_attachment vs create_attachment_from_upload are clearly differentiated by their parameters and process. The raw GraphQL tool is explicitly a fallback, avoiding ambiguity.
Tool names consistently follow a verb_noun pattern (e.g., create_issue_label, list_issues, save_issue). The only deviation is linear_graphql, but that is a special-purpose tool, and the pattern holds for all others. Naming is predictable and uniform.
With 36 tools, the server is comprehensive but slightly heavy. It covers many Linear entities, but the count is above the typical well-scoped range (3–15). Some tools like extract_images and search_documentation are auxiliary, and the diff-related tools add redundancy. Still, the count is reasonable given the domain's complexity.
The tool surface lacks delete operations for issues, projects, documents, attachments, comments, milestones, and labels. There are no update operations for labels or comments (save_comment only creates, not updates). These gaps force agents to rely on the raw graphql tool for basic lifecycle management, which is a significant shortcoming.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Linear project management and issue tracking
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Linear MCP — wraps the Linear GraphQL API (OAuth)
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server that reduces token consumption in AI coding assistants by up to 90% via structural reads, PreToolUse hooks, and tp-\* subagents.256875MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that cuts cloud LLM costs 36-42% by indexing context locally and giving agents precision retrieval tools instead of raw context dumps.157MIT
- FlicenseNot gradedqualityDmaintenanceSelf-hosted MCP server with 83+ tools for AI workflows. Features 80%+ token reduction through 5 optimization layers.-
- AlicenseNot gradedqualityDmaintenanceMCP server that reduces AI agent token usage by up to 90% through intelligent context compression. Enables efficient code exploration, multi-file refactoring, and debugging by providing tools for smart reading, searching, and managing code context.4MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/wiklob/linear-mcp-lean'
If you have feedback or need assistance with the MCP directory API, please join our Discord server