linear
Server Details
MCP server for Linear project management and issue tracking
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Score is being calculated. Check back soon.
Available Tools
31 toolscreate_attachmentCreate attachmentInspect
Create a new attachment on a specific Linear issue by uploading base64-encoded content.
| Name | Required | Description | Default |
|---|---|---|---|
| issue | Yes | Issue ID or identifier (e.g., LIN-123) | |
| title | No | Optional title for the attachment | |
| filename | Yes | Filename for the upload (e.g., 'screenshot.png') | |
| subtitle | No | Optional subtitle for the attachment | |
| contentType | Yes | MIME type for the upload (e.g., 'image/png', 'application/pdf') | |
| base64Content | Yes | Base64-encoded file content to upload |
create_documentCreate documentInspect
Create a new document in Linear
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | Icon emoji | |
| color | No | Hex color | |
| issue | No | Issue ID or identifier (e.g., LIN-123) | |
| title | Yes | Document title | |
| content | No | Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences | |
| project | No | Project name, ID, or slug |
create_issue_labelCreate issue labelInspect
Create a new Linear issue label
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Label name | |
| color | No | Hex color code | |
| parent | No | Parent label group name | |
| teamId | No | Team UUID (omit for workspace label) | |
| isGroup | No | Is label group (not directly applicable) | |
| description | No | Label description |
delete_attachmentDelete attachmentDestructiveInspect
Delete an attachment by ID
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Attachment ID |
delete_commentDelete commentBDestructiveInspect
Delete a comment from a Linear issue
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Comment ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations correctly mark this as destructive and non-idempotent, the description adds no context beyond the name. It fails to disclose that deletion is likely permanent (no recovery), that calling twice will error (non-idempotent), or what authorization is required to delete another user's comment.
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, efficient sentence of seven words that front-loads the action verb. No redundancy or filler content; every word is essential to understanding the tool's function.
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 single-parameter destructive operation with complete schema annotations, the description is minimally adequate. However, given the destructive and non-idempotent nature (per annotations), it lacks critical behavioral context that would help an agent handle failures or confirm deletion intent.
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 description coverage, the baseline is met. The parameter 'id' is documented as 'Comment ID' in the schema, and the description adds no additional semantic value such as ID format (UUID), how to obtain it (from 'list_comments'), or that it must be an existing comment ID.
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 uses a specific verb ('Delete') and resource ('comment') and adds context by specifying 'from a Linear issue,' which clearly identifies the domain. However, it does not explicitly distinguish from the sibling tool 'save_comment' (which likely updates/creates comments) or clarify when to use this versus 'list_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 provides no guidance on when to use this tool versus alternatives like 'save_comment', nor does it mention prerequisites such as requiring admin permissions on the Linear issue or confirming the comment belongs to the correct issue before deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_imagesExtract imagesRead-onlyIdempotentInspect
Extract and fetch images from markdown content. Use this to view screenshots, diagrams, or other images embedded in Linear issues, comments, or documents. Pass the markdown content (e.g., issue description) and receive the images as viewable data.
| Name | Required | Description | Default |
|---|---|---|---|
| markdown | Yes | Markdown content containing image references (e.g., issue description, comment body) |
get_attachmentGet attachmentRead-onlyIdempotentInspect
Retrieve an attachment's content by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Attachment ID |
get_documentGet documentRead-onlyIdempotentInspect
Retrieve a Linear document by ID or slug
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document ID or slug |
get_issueGet issueRead-onlyIdempotentInspect
Retrieve detailed information about an issue by ID, including attachments and git branch name
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Issue ID or identifier (e.g., LIN-123) | |
| includeRelations | No | Include blocking/related/duplicate relations | |
| includeCustomerNeeds | No | Include associated customer needs |
get_issue_statusGet issue statusRead-onlyIdempotentInspect
Retrieve detailed information about an issue status in Linear by name or ID
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Status ID | |
| name | Yes | Status name | |
| team | Yes | Team name or ID |
get_milestoneGet milestoneRead-onlyIdempotentInspect
Retrieve details of a specific milestone by ID or name
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Milestone name or ID | |
| project | Yes | Project name, ID, or slug |
get_projectGet projectRead-onlyIdempotentInspect
Retrieve details of a specific project in Linear
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Project name, ID, or slug | |
| includeMembers | No | Include project members | |
| includeResources | No | Include resources (documents, links, attachments) | |
| includeMilestones | No | Include milestones |
get_teamGet teamRead-onlyIdempotentInspect
Retrieve details of a specific Linear team
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Team UUID, key, or name |
get_userGet userRead-onlyIdempotentInspect
Retrieve details of a specific Linear user
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | User ID, name, email, or "me" |
list_commentsList commentsRead-onlyIdempotentInspect
List comments for a specific Linear issue
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50, max 250) | |
| cursor | No | Next page cursor | |
| issueId | Yes | Issue ID or identifier (e.g., LIN-123) | |
| orderBy | No | Sort: createdAt | updatedAt | updatedAt |
list_cyclesList cyclesRead-onlyIdempotentInspect
Retrieve cycles for a specific Linear team
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter: current, previous, next, or all | |
| teamId | Yes | Team ID |
list_documentsList documentsRead-onlyIdempotentInspect
List documents in the user's Linear workspace
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50, max 250) | |
| query | No | Search query | |
| cursor | No | Next page cursor | |
| orderBy | No | Sort: createdAt | updatedAt | updatedAt |
| createdAt | No | Created after: ISO-8601 date/duration (e.g., -P1D) | |
| creatorId | No | Filter by creator ID | |
| projectId | No | Filter by project ID | |
| updatedAt | No | Updated after: ISO-8601 date/duration (e.g., -P1D) | |
| initiativeId | No | Filter by initiative ID | |
| includeArchived | No | Include archived items |
list_issue_labelsList issue labelsRead-onlyIdempotentInspect
List available issue labels in a Linear workspace or team
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by name | |
| team | No | Team name or ID | |
| limit | No | Max results (default 50, max 250) | |
| cursor | No | Next page cursor | |
| orderBy | No | Sort: createdAt | updatedAt | updatedAt |
list_issuesList issuesRead-onlyIdempotentInspect
List issues in the user's Linear workspace. For my issues, use "me" as the assignee. Use "null" for no assignee.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team name or ID | |
| cycle | No | Cycle name, number, or ID | |
| label | No | Label name or ID | |
| limit | No | Max results (default 50, max 250) | |
| query | No | Search issue title or description | |
| state | No | State type, name, or ID | |
| cursor | No | Next page cursor | |
| orderBy | No | Sort: createdAt | updatedAt | updatedAt |
| project | No | Project name, ID, or slug | |
| assignee | No | User ID, name, email, or "me" | |
| delegate | No | Agent name or ID | |
| parentId | No | Parent issue ID or identifier (e.g., LIN-123) | |
| priority | No | 0=None, 1=Urgent, 2=High, 3=Normal, 4=Low | |
| createdAt | No | Created after: ISO-8601 date/duration (e.g., -P1D) | |
| updatedAt | No | Updated after: ISO-8601 date/duration (e.g., -P1D) | |
| includeArchived | No | Include archived items |
list_issue_statusesList issue statusesRead-onlyIdempotentInspect
List available issue statuses in a Linear team
| Name | Required | Description | Default |
|---|---|---|---|
| team | Yes | Team name or ID |
list_milestonesList project milestonesRead-onlyIdempotentInspect
List all milestones in a Linear project
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Project name, ID, or slug |
list_project_labelsList project labelsRead-onlyIdempotentInspect
List available project labels in the Linear workspace
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by name | |
| limit | No | Max results (default 50, max 250) | |
| cursor | No | Next page cursor | |
| orderBy | No | Sort: createdAt | updatedAt | updatedAt |
list_projectsList projectsRead-onlyIdempotentInspect
List projects in the user's Linear workspace
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team name or ID | |
| label | No | Label name or ID | |
| limit | No | Max results (default 50, max 250) | |
| query | No | Search project name | |
| state | No | State type, name, or ID | |
| cursor | No | Next page cursor | |
| member | No | User ID, name, email, or "me" | |
| orderBy | No | Sort: createdAt | updatedAt | updatedAt |
| createdAt | No | Created after: ISO-8601 date/duration (e.g., -P1D) | |
| updatedAt | No | Updated after: ISO-8601 date/duration (e.g., -P1D) | |
| initiative | No | Initiative name or ID | |
| includeMembers | No | Include project members | |
| includeArchived | No | Include archived items | |
| includeMilestones | No | Include milestones |
list_teamsList teamsRead-onlyIdempotentInspect
List teams in the user's Linear workspace
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50, max 250) | |
| query | No | Search query | |
| cursor | No | Next page cursor | |
| orderBy | No | Sort: createdAt | updatedAt | updatedAt |
| createdAt | No | Created after: ISO-8601 date/duration (e.g., -P1D) | |
| updatedAt | No | Updated after: ISO-8601 date/duration (e.g., -P1D) | |
| includeArchived | No | Include archived items |
list_usersList usersRead-onlyIdempotentInspect
Retrieve users in the Linear workspace
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team name or ID | |
| limit | No | Max results (default 50, max 250) | |
| query | No | Filter by name or email | |
| cursor | No | Next page cursor | |
| orderBy | No | Sort: createdAt | updatedAt | updatedAt |
save_commentSave commentADestructiveInspect
Create or update a comment on a Linear issue. If id is provided, updates the existing comment; otherwise creates a new one. When creating, issueId and body are required.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Comment ID. If provided, updates the existing comment | |
| body | Yes | Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences | |
| issueId | No | Issue ID or identifier (e.g., LIN-123) (required when creating) | |
| parentId | No | Parent comment ID (for replies, only when creating) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false; the description adds valuable behavioral context about the upsert pattern (create vs update based on id presence) and conditional requirements, without contradicting the safety annotations.
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 tightly constructed sentences: purpose statement first, followed by conditional logic, then requirements. Zero redundancy, appropriate use of backticks for parameter references.
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 4-parameter upsert operation with destructive annotations but no output schema, the description adequately covers the primary behavioral contract (create vs update logic) and parameter requirements, though it omits failure modes or side effects.
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, baseline is 3. Description adds crucial semantic value by documenting that issueId is required when creating (business logic not captured in JSON schema required array) and explaining the id parameter's role in determining the operation mode.
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 states specific verbs ('Create or update') + resource ('comment on a Linear issue'), clearly distinguishing from sibling tools like delete_comment and list_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?
Provides explicit conditional logic ('If id is provided, updates... otherwise creates') and clarifies requirements ('When creating, issueId and body are required'), though it does not explicitly name sibling alternatives like delete_comment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_issueSave issueADestructiveInspect
Create or update a Linear issue. If id is provided, updates the existing issue; otherwise creates a new one. When creating, title and team are required. Note: use assignee (not assigneeId) to set the assignee — it accepts a user ID, name, email, or "me".
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Only for updating an existing issue. Pass the issue ID or identifier (e.g., LIN-123). Do NOT pass this parameter when creating a new issue. | |
| team | No | Team name or ID (required when creating) | |
| cycle | No | Cycle name, number, or ID | |
| links | No | Link attachments to add [{url, title}]. Append-only; existing links are never removed | |
| state | No | State type, name, or ID | |
| title | No | Issue title (required when creating) | |
| blocks | No | Issue IDs/identifiers this blocks. Append-only; existing relations are never removed | |
| labels | No | Label names or IDs | |
| dueDate | No | Due date (ISO format) | |
| project | No | Project name, ID, or slug | |
| assignee | No | User ID, name, email, or "me". Null to remove | |
| delegate | No | Agent name or ID. Null to remove | |
| estimate | No | Issue estimate value | |
| parentId | No | Parent issue ID or identifier (e.g., LIN-123). Null to remove | |
| priority | No | 0=None, 1=Urgent, 2=High, 3=Normal, 4=Low | |
| blockedBy | No | Issue IDs/identifiers blocking this. Append-only; existing relations are never removed | |
| milestone | No | Milestone name or ID | |
| relatedTo | No | Related issue IDs/identifiers. Append-only; existing relations are never removed | |
| description | No | Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences | |
| duplicateOf | No | Duplicate of issue ID/identifier. Null to remove | |
| removeBlocks | No | Issue IDs/identifiers to stop blocking | |
| removeBlockedBy | No | Issue IDs/identifiers to remove as blockers of this issue | |
| removeRelatedTo | No | Related issue IDs/identifiers to remove |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false. Description adds value by explaining the upsert behavior and assignee polymorphism ('accepts user ID, name, email, or me'), but does not mention the append-only nature of relationship fields (links, blocks) described in the schema.
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 tight sentences with zero waste. Front-loaded with create/update verb, conditional logic in second sentence, and parameter-specific note in third. Every sentence conveys unique semantic information not inferable from schema alone.
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?
Appropriate for 23-parameter tool with 100% schema coverage. Description covers the upsert contract, conditional validation rules, and polymorphic parameter handling. No output schema exists but description appropriately focuses on input 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 has 100% coverage (baseline 3). Description adds critical semantic constraints: conditional requirements ('title and team are required when creating') and crucial field usage guidance (use `assignee` not `assigneeId`, polymorphic input formats). This compensates for schema's lack of conditional validation rules.
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 'Create or update a Linear issue' with explicit conditional logic (if id provided, updates; otherwise creates). This distinguishes it from sibling tools like get_issue (read-only) and specific create_ 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?
Provides clear usage conditions: 'If `id` is provided, updates... otherwise creates' and prerequisites 'When creating, `title` and `team` are required'. Lacks explicit 'when not to use' alternatives but effectively guides the upsert decision pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_milestoneSave milestoneADestructiveInspect
Create or update a milestone in a Linear project. If id is provided, updates the existing milestone; otherwise creates a new one. When creating, name is required.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Milestone name or ID | |
| name | No | Milestone name (required when creating) | |
| project | Yes | Project name, ID, or slug | |
| targetDate | No | Target completion date (ISO format, null to remove) | |
| description | No | Milestone description |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, establishing safety profile. Description adds valuable upsert behavioral context (create vs update branching logic) but omits details about partial vs full updates, side effects, or authentication requirements.
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 tightly-written sentences with zero redundancy. Front-loaded with primary purpose, followed by conditional logic, then parameter requirement. Every sentence 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?
Adequate for a 5-parameter destructive upsert tool with no output schema. Covers the critical upsert contract and parameter constraints. Could benefit from noting what fields are preserved vs overwritten during updates, but completeness is solid given annotations handle safety signaling.
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?
Despite 100% schema coverage, the description adds synthesized semantic value by explaining the inter-parameter dependency: `id` triggers update mode, and `name` is conditionally required in create mode. This relational logic helps the agent construct valid requests.
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?
Excellent specificity: verbs 'Create or update', resource 'milestone in a Linear project', and clear upsert logic. Distinguishes from read-only siblings like get_milestone and list_milestones by describing mutation behavior.
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?
Clear conditional logic for when to provide `id` (update) vs omitting it (create), and conditional requirement for `name`. Lacks explicit guidance on when to prefer over alternatives like get_milestone for reads, but the upsert logic is well-documented.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_projectSave projectADestructiveInspect
Create or update a Linear project. If id is provided, updates the existing project; otherwise creates a new one. When creating, name and at least one team (via addTeams or setTeams) are required.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Project ID. If provided, updates the existing project | |
| icon | No | Icon emoji (e.g., :eagle:) | |
| lead | No | User ID, name, email, or "me". Null to remove | |
| name | No | Project name (required when creating) | |
| color | No | Hex color | |
| state | No | Project state | |
| labels | No | Label names or IDs | |
| summary | No | Short summary (max 255 chars) | |
| addTeams | No | Team name or ID to add | |
| priority | No | 0=None, 1=Urgent, 2=High, 3=Medium, 4=Low | |
| setTeams | No | Replace all teams with these. Cannot combine with addTeams/removeTeams | |
| startDate | No | Start date (ISO format) | |
| targetDate | No | Target date (ISO format) | |
| description | No | Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences | |
| removeTeams | No | Team name or ID to remove | |
| addInitiatives | No | Initiative names/IDs to add | |
| setInitiatives | No | Replace all initiatives with these. Cannot combine with addInitiatives/removeInitiatives | |
| removeInitiatives | No | Initiative names/IDs to remove |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, establishing the safety profile. The description adds the upsert behavioral logic (conditional create/update) but omits details on error conditions, conflict resolution, or data loss risks during updates.
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 with zero waste: first establishes dual purpose and conditional behavior, second specifies validation rules. Perfectly front-loaded and appropriately sized for the tool's complexity.
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?
Complete for an 18-parameter upsert tool: covers the essential business logic (create vs update modes), key constraints, and leverages the comprehensive schema descriptions. Minor gap regarding output behavior or error scenarios, but sufficient given the structured schema coverage.
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 (baseline 3), the description adds critical business logic: it clarifies that id drives the create/update decision logic, and explicitly states which fields are conditionally required (name and team for creation) despite zero required parameters in the JSON 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?
Excellent specificity: 'Create or update a Linear project' provides clear verb+resource, and the description distinguishes from sibling read operations (get_project, list_projects) by explicitly stating the write intent.
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 conditional logic for mode selection (id presence determines update vs create) and explicit prerequisites for creation (name + team required). Lacks explicit guidance on when to prefer over other mutation tools or prerequisites like checking existence first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_documentationSearch documentationRead-onlyIdempotentInspect
Search Linear's documentation to learn about features and usage
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| query | Yes | Search query |
update_documentUpdate documentDestructiveInspect
Update an existing Linear document
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document ID or slug | |
| icon | No | Icon emoji | |
| color | No | Hex color | |
| title | No | Document title | |
| content | No | Content as Markdown. Do not escape the string — use literal newlines and special characters, not escape sequences | |
| project | No | Project name, ID, or slug |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail — every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control — enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management — store and rotate API keys and OAuth tokens in one place
Change alerts — get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption — public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics — see which tools are being used most, helping you prioritize development and documentation
Direct user feedback — users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!