Skip to main content
Glama
arclabs-studio

ARCLinearGitHub-MCP

ARCLinearGitHub-MCP

Swift Platforms MCP License Status

Native Swift Model Context Protocol (MCP) server that bridges Linear (issue tracking) and GitHub (repository management), enforces ARC Labs naming conventions, and exposes 21 tools to Claude Code over stdio.

  • Multi-workspace — talk to several Linear workspaces from one binary via LINEAR_WORKSPACES.

  • Convention enforcement — branch, commit and PR validators with byte-compatible regex ported from the Python reference implementation.

  • Composite workflowsworkflow_start_feature creates the Linear issue and the GitHub branch in a single round-trip.

  • Swift 6 + strict concurrency — every public type is Sendable, the data layer uses actors, no force-unwraps and no nonisolated(unsafe).

This is the Swift rewrite of the original Python LinearGitHub-MCP. The wire format is identical (same tool names, same request/response shape), so existing Claude Code configurations only need a binary-path swap.


Overview

ARCLinearGitHub-MCP is a Swift Package laid out following the microapps SPM pattern (Majid Jabrayilov) and ARC Clean Architecture:

Sources/
├── ARCMCPModels         Foundation — entities + error types
├── ARCMCPNetworking     Foundation — URLSession HTTP + retry policy
├── ARCMCPValidators     Foundation — branch + commit validators
├── ARCMCPLinear         Data       — GraphQL client + workspace registry
├── ARCMCPGitHub         Data       — REST client
├── ARCMCPCore           Orchestration — AppDependencies + MCP tools
├── ARCMCPMocks          Tests      — StubURLProtocol + AppDependencies.mock
└── arc-mcp              Executable — stdio MCP server

The 21 MCP tools live in ARCMCPCore/Tools/. Each handler decodes its arguments via ArgumentAccess, calls one or more closures on AppDependencies, then maps the entities back into the Python-compatible {success: bool, ...} envelope via Mappers.

Related MCP server: ARC Config MCP Server

Requirements

  • macOS 14 Sonoma or later

  • Swift 6.0 toolchain (Xcode 16+)

  • Linear API token and GitHub Personal Access Token

Installation

git clone https://github.com/arclabs-studio/ARCLinearGitHub-MCP.git
cd ARCLinearGitHub-MCP
make build-release

The binary lands at .build/release/arc-mcp.

Configuration

Every setting is read from the process environment.

export GITHUB_TOKEN=ghp_xxx
export GITHUB_ORG=arclabs-studio
export DEFAULT_PROJECT=PLAT
export DEFAULT_REPO=MyApp

# single-workspace
export LINEAR_API_KEY=lin_api_xxx

# or multi-workspace
export LINEAR_WORKSPACES='{"ios":"lin_api_a","backend":"lin_api_b"}'

Optional overrides: LINEAR_API_URL, GITHUB_API_URL, REQUEST_TIMEOUT.

Usage

Claude Code

Add the binary to ~/.claude/mcp-servers.json:

{
  "mcpServers": {
    "arc-linear-github": {
      "command": "/abs/path/.build/release/arc-mcp"
    }
  }
}

Restart Claude Code. /mcp lists 21 tools under arc-linear-github.

Programmatic embedding

import ARCMCPCore
import MCP

let settings = try Settings.fromEnvironment()
let server = Server(name: "my-mcp", version: "1.0.0",
                    capabilities: .init(tools: .init(listChanged: false)))
await ToolRegistry.register(on: server, dependencies: .production(settings: settings))
try await server.start(transport: StdioTransport())
await server.waitUntilCompleted()

Development

make lint        # SwiftLint
make format      # SwiftFormat (dry-run)
make fix         # Apply SwiftFormat
make build       # debug build
make test        # swift test --no-parallel (StubURLProtocol uses shared state)
make coverage    # tests with code coverage
make docs        # DocC archive for ARCMCPCore
make run         # build-release && exec arc-mcp

Project layout

Target

Purpose

ARCMCPModels

Codable Sendable Linear and GitHub entities + MCPDomainError

ARCMCPNetworking

HTTPClient actor, RetryPolicy, HTTPError

ARCMCPValidators

Pure branch + commit validators with ARC regex

ARCMCPLinear

GraphQL client + multi-workspace registry

ARCMCPGitHub

REST client + endpoint enum

ARCMCPCore

AppDependencies, MCP tool registry, mappers

ARCMCPMocks

StubURLProtocol + AppDependencies.mock for tests

arc-mcp

@main stdio executable

Testing

Swift Testing. Run serially because StubURLProtocol keeps its handler in static OSAllocatedUnfairLock state:

swift test --no-parallel

Tests are organised per target:

  • ARCMCPModelsTests — Codable round-trip for every entity.

  • ARCMCPNetworkingTests — retry semantics with stubbed URLSession.

  • ARCMCPValidatorsTests — every case ported from tests/test_validators/.

  • ARCMCPLinearTests / ARCMCPGitHubTestsURLProtocol stubs + fixture JSON.

  • ARCMCPCoreTestsSettings env parsing + tool registry dispatch.

Architecture

  • Clean Architecture — Domain (ARCMCPModels, *Validators), Data (*Linear, *GitHub), Orchestration (ARCMCPCore).

  • Microapps SPM — one library target per concern, layered by build dependency.

  • Closure-based DI — every capability is a @Sendable async closure on AppDependencies. production(settings:) wires real actors; .mock (in ARCMCPMocks) returns canned values.

  • Strict concurrency — Swift 6 .v6 language mode across every target.

Conventions

  • Branches: <type>/<issue-id>-<description>

  • Commits: <type>(<scope>): <subject>

  • PRs: <Type>/<Issue-ID>: <Title>

Full reference: workflow_get_conventions tool, or ARCMCPValidators.NamingStandards.

License

MIT. See LICENSE.


Available Tools

19 tools
github_create_branchA

Create a branch following naming conventions.

Args: branch_type: Type of branch (feature, bugfix, hotfix, docs, spike, release) description: Short description for the branch name issue_id: Optional Linear issue ID (e.g., 'PROJ-123') repo: Repository name (defaults to configured default repo) base_branch: Base branch to create from (defaults to repo default branch)

Returns: Dictionary with created branch details or error

Example branch names: - feature/PROJ-123-user-authentication - bugfix/PROJ-456-login-crash - docs/update-readme

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNo
issue_idNo
base_branchNo
branch_typeYes
descriptionYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full behavioral transparency. It states the return format (dictionary with details or error) and shows naming convention examples. However, it does not disclose potential side effects (e.g., whether the branch is fetched from remote), permissions needed, or rate limits. For a creation tool, this is moderately transparent but lacks full disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (under 120 words) and well-structured with clear sections (Args, Returns, Example). Every sentence adds value, and the information is front-loaded with the main purpose. No redundant or vague statements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters (2 required) and no output schema, the description covers all parameters, defaults, and return type. It includes examples to clarify usage. Minor gaps include lack of error handling details and explicit mention of whether base_branch is local or remote, but overall it is sufficiently complete for a branch creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must add meaning. It explains each parameter (branch_type, description, issue_id, repo, base_branch) with defaults and examples, significantly compensating for the schema's lack of descriptions. The examples illustrate how parameters combine to form branch names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create a branch') and the resource ('branch'), with a specific context ('following naming conventions'). It distinguishes from sibling tools like github_create_pr (which creates PRs) and workflow_generate_branch_name (which only generates names). Examples further clarify purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists parameters and defaults but provides no explicit guidance on when to use this tool versus alternatives like workflow_start_feature or workflow_generate_branch_name. Usage context is implied (creating a branch with naming conventions), but no when-not-to-use or sibling differentiation is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_create_prA

Create a pull request with proper naming.

Args: branch: Head branch name title: PR title (will be formatted with issue_id if provided) body: PR description (optional) issue_id: Linear issue ID to link (e.g., 'PROJ-123') repo: Repository name (defaults to configured default repo) base_branch: Base branch (defaults to repo default branch) draft: Create as draft PR

Returns: Dictionary with created PR details or error

The PR title will be formatted as: '/: ' Example: 'Feature/PROJ-123: User Authentication'

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
repoNo
draftNo
titleYes
branchYes
issue_idNo
base_branchNo

TDQS

A4.3/5.0
Behavior4/5

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 the PR title formatting behavior, default values, and that it returns a dictionary with details or error. It does not explicitly mention side effects (e.g., GitHub write operation) or authentication needs, but the core behavior is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-sentence header, an Args list, a return statement, and a formatting explanation. No redundant sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all parameters, return value, and default behaviors. It lacks details on error conditions or prerequisites (e.g., branch must exist), but given the absence of an output schema, it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates fully with an 'Args' section explaining each parameter, including defaults (repo, base_branch, draft) and the formatting rule for title using issue_id. Example provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a pull request with 'proper naming.' It provides specific verb ('Create') and resource ('pull request'), and distinguishes from sibling tools like github_get_pr and github_list_prs 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (to create a PR) but does not explicitly compare it to alternatives like github_create_branch or github_get_pr. It lacks guidance on when not to use it or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_get_default_branchA

Get the default branch for a repository.

Args: repo: Repository name (defaults to configured default repo)

Returns: Dictionary with default branch name

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states it returns a dictionary with the default branch name, implying a read-only operation, but does not explicitly mention safety, authentication needs, or rate limits. Adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with a single purpose sentence and brief Args/Returns section. Every sentence adds value, and it is front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (1 optional param, no output schema, no annotations), the description is complete enough. It explains what the tool does and what it returns, meeting all necessary information for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains the 'repo' parameter as 'Repository name (defaults to configured default repo)', adding meaning beyond the input schema which only defines the parameter structure and default. Schema coverage is 0%, so the description compensates well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the default branch for a repository', using a specific verb and resource. It differentiates from siblings like github_create_branch and github_list_branches by focusing on fetching the default branch only.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 github_list_branches or when not to use it. It lacks explicit context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_get_prB

Get details of a specific pull request.

Args: pr_number: Pull request number repo: Repository name (defaults to configured default repo)

Returns: Dictionary with PR details or error

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNo
pr_numberYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full burden. It only states 'Get details' implying a read operation, but does not disclose idempotency, required permissions, or potential side effects. No mention of rate limits or error handling beyond 'or error'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and structured with Args and Returns sections. Every sentence contributes necessary information without extraneous detail. It could be slightly more concise but is efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, no output schema), the description is minimally complete. It covers purpose, parameters, and return type, but lacks specificity about the structure of the returned dictionary or error cases. More detail would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema description coverage is 0%, the description adds meaning by explaining both parameters: pr_number is the PR number, repo is optional and defaults to a configured default. This compensates minimally for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 'details of a specific pull request'. It effectively distinguishes from sibling tools like github_list_prs (list vs get specific) and github_create_pr (create vs get).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for fetching details of a specific PR by number, but it lacks explicit guidance on when to use this tool vs alternatives like github_list_prs. No mention of prerequisites or contexts where this tool is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_list_branchesA

List branches in a GitHub repository.

Args: repo: Repository name (defaults to configured default repo) limit: Maximum number of branches to return

Returns: Dictionary with list of branches

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNo
limitNo

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states it returns a dictionary. It does not disclose that it is read-only, any required authentication, rate limits, or constraints like pagination 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with one sentence for purpose, two lines for parameters, and one line for returns. No redundant information; every sentence is valuable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 purpose, parameters, and return type. It lacks details on the return structure's fields or potential pagination, but it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful context to the parameters: it clarifies that repo defaults to a configured default repository (not just null) and that limit is the maximum number of branches. This goes beyond the schema's titles and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists branches in a GitHub repository, using a specific verb 'list' and resource 'branches'. It distinguishes from sibling tools like github_create_branch and github_get_default_branch by explicitly indicating the action is listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 github_get_default_branch or github_create_branch. It lacks any usage context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_list_prsA

List pull requests in a repository.

Args: repo: Repository name (defaults to configured default repo) state: PR state filter ('open', 'closed', 'all') limit: Maximum number of PRs to return

Returns: Dictionary with list of pull requests

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNo
limitNo
stateNoopen

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description is the sole source. It explains the return type (dictionary with list of PRs) but lacks details on pagination, sorting, or authentication requirements. Adequate but with gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear Args/Returns structure. Every sentence is useful, no redundancy, and it is front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 0% parameter schema coverage, the description does not fully cover return format details (e.g., PR structure) or behavior like pagination. While functional, it leaves some gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining each parameter: repo (defaults to configured), state (filter values), limit (max count). Adds meaningful context beyond the schema's property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List pull requests in a repository', using a specific verb and resource. It distinguishes from sibling tools like github_get_pr (single PR) and github_create_pr.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions default repo, state filter, and limit, but does not explicitly state when to use this tool versus alternatives like github_get_pr. Usage context is implied by the parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linear_create_issueA

Create a new issue in Linear.

Args: title: Issue title description: Optional issue description (supports Markdown) project: Project/team key. Defaults to configured default_project. priority: Priority level (1=Urgent, 2=High, 3=Normal, 4=Low) labels: Optional list of label names to apply

Returns: Dictionary with created issue details or error

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
labelsNo
projectNo
priorityNo
descriptionNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It explains that the tool mutates state by creating an issue, notes the default project, and mentions error returns. However, it lacks details on permissions, rate limits, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a clear structure: summary, Args, Returns. Every sentence adds value, and the key purpose is front-loaded. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema and annotations, the description covers creation behavior well but omits details like return fields beyond 'dictionary with details'. It is adequate but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, but the description adds meaningful explanations for all parameters (e.g., priority mapping, Markdown support, label usage). This compensates for the schema gap and provides clarity beyond type and default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new issue in Linear' using a specific verb and resource. It is distinct from sibling tools like linear_update_issue and linear_get_issue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides parameter details (e.g., project defaults, priority mapping) but does not explicitly state when to use this tool versus alternatives like linear_update_issue. Usage context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linear_get_issueA

Get details of a specific Linear issue.

Args: issue_id: Issue identifier (e.g., 'PROJ-123')

Returns: Dictionary with issue details or error

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It indicates a read operation returning details or error, but does not disclose potential behaviors such as required authentication, issue existence, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with no wasted words, front-loading the purpose and using a structured Args/Returns format that is clear and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and low complexity, the description minimally explains returns ('Dictionary with issue details or error') but lacks specifics on the fields included, leaving some ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description adds value by specifying the format ('PROJ-123') for the issue_id parameter, which is not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 'specific Linear issue', distinguishing it from sibling tools like linear_list_issues (list) and linear_update_issue (write).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the description implies usage for retrieving a single issue, it does not explicitly state when to use this tool over alternatives like linear_list_issues or provide any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linear_list_issuesA

List issues from a Linear project.

Args: project: Project/team key (e.g., 'MYPROJECT'). Defaults to configured default_project. state: Optional state filter (e.g., 'In Progress', 'Todo', 'Done') limit: Maximum number of issues to return (default: 50)

Returns: Dictionary with list of issues and count

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
stateNo
projectNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, but the description discloses the return format (dictionary with issues and count) and mentions default project behavior. It does not cover side effects, rate limits, or authentication needs, so transparency is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is relatively concise, using a bulleted list for parameters. A bit more brevity could be achieved, but it is well-structured and front-loads the tool's action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (3 optional params, no output schema), the description covers all parameters and return value. However, it lacks explanation of how 'configured default_project' is set, leaving a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description adds thorough parameter semantics: explains project key format, default behavior, state filter examples, and limit with default. This compensates fully for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists issues from a Linear project. It distinguishes from sibling tools like linear_create_issue, linear_get_issue, and linear_update_issue by focusing on the listing action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides parameter details and defaults but does not explicitly guide when to use this tool vs alternatives like linear_get_issue or when not to use it. The sibling tools list is present but no comparison is made.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linear_list_labelsA

List available labels for a project.

Args: project: Project/team key. Defaults to configured default_project.

Returns: Dictionary with list of labels

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden of behavioral disclosure. It only states the action (list labels) and return type (dictionary), lacking any details about side effects, authentication needs, rate limits, or behavior when the project is not found. This is insufficient for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences plus an Args/Returns section. Every word adds value, and the main action is front-loaded. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter, no output schema, and no annotations, the description is adequate but lacks completeness. It does not describe the structure of the returned dictionary, potential errors, or any behavioral traits beyond listing. For a simple tool, this is minimally viable but not fully informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'project' has 0% schema description coverage, but the description adds meaning beyond the schema: 'Project/team key. Defaults to configured default_project.' This explains what the parameter represents and its default behavior, which is valuable for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List available labels for a project,' which uses a specific verb ('list') and resource ('labels') with scope ('for a project'). This effectively distinguishes it from sibling tools that operate on GitHub entities or Linear issues/workspaces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used when you need to retrieve labels for a specific project, with the parameter documented as a project/team key. It provides clear context but does not explicitly state when not to use it or mention alternative tools, though the simple purpose makes this less critical.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linear_list_statesA

List available workflow states for a project.

Args: project: Project/team key. Defaults to configured default_project.

Returns: Dictionary with list of states

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It mentions a default parameter but lacks details on authentication, side effects, or return format beyond 'Dictionary with list of states'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, with one sentence for the purpose and a clear args section. No extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 optional parameter, the description is mostly complete. It explains the parameter and return type, but could provide more context about what 'states' are or how they relate to projects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The parameter 'project' has no schema description, but the description adds meaning by explaining it is a project/team key and defaults to a configured default_project, adding value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists available workflow states for a project, with a specific verb and resource. It distinguishes from sibling tools like linear_list_issues or linear_list_labels.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as linear_list_issues or linear_get_issue. The description does not mention prerequisites 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.

linear_list_workspacesA

List all configured workspaces and their teams.

Returns: Dictionary with workspace names and their associated teams

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility. It only states the output type (dictionary) but does not disclose whether the operation is read-only, idempotent, or requires authentication. The term 'list' implies a read operation, but safety and side effects are unaddressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise: one sentence for purpose and one line for return format. There is no redundancy, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool with no output schema, the description is mostly complete. It specifies what is returned (workspace names and teams). It could mention that it lists all workspaces without filtering, but the simplicity makes it adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema coverage is 100% (empty). According to guidelines, a baseline of 4 applies here since no parameter documentation is needed beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'configured workspaces', and specifies that it returns their associated teams. This distinguishes it from sibling tools that list other entities like issues or labels.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It does not mention any prerequisites or typical usage context, leaving the agent to infer applicability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linear_update_issueA

Update an existing Linear issue.

Args: issue_id: Issue identifier (e.g., 'PROJ-123') state: New state name (e.g., 'In Progress', 'Done') assignee: Assignee name or email title: New title priority: New priority (1=Urgent, 2=High, 3=Normal, 4=Low)

Returns: Dictionary with updated issue details or error

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNo
titleNo
assigneeNo
issue_idYes
priorityNo

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description discloses it performs an update and returns a dictionary with updated details or error, but lacks detail on side effects, validation, or concurrency behavior. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One-sentence purpose followed by a clear list of arguments and return value. No extraneous text, well-structured, and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description states the return type (dictionary with updated details or error). Missing explicit mention of which fields are required (covered by schema), but overall sufficient for a simple update tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by explaining all 5 parameters with examples for issue_id, state, and priority, adding significant meaning beyond the schema's bare titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states 'Update an existing Linear issue.' Uses a specific verb and resource, clearly distinguishing from siblings like linear_create_issue (create) and linear_get_issue (read).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (to update an existing issue) but does not explicitly exclude scenarios or mention prerequisites like issue existence. Clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workflow_generate_branch_nameA

Generate a valid branch name following naming conventions.

Args: branch_type: Type of branch (feature, bugfix, hotfix, docs, spike, release) description: Short description for the branch issue_id: Optional Linear issue ID (e.g., 'PROJ-123')

Returns: Dictionary with generated branch name

Examples: - branch_type='feature', issue_id='PROJ-123', description='user authentication' -> 'feature/PROJ-123-user-authentication' - branch_type='docs', description='Update README' -> 'docs/update-readme'

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idNo
branch_typeYes
descriptionYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It explains the tool generates a name and returns a dictionary, but does not disclose whether the name is validated against existing branches, what conventions are applied, or if any external calls are made. The 'valid' claim is vague without referencing conventions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured with Args, Returns, and Examples sections. Every sentence adds value, and the overall length is appropriate given the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description must specify the return format. It states 'Dictionary with generated branch name' but does not indicate the key name (e.g., 'branch_name'). Additionally, it does not clarify if the tool is purely computational or if it checks remote branches. This leaves some ambiguity for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It lists all three parameters with explanations: branch_type with allowed values, description as short description, and issue_id with example format. This adds significant meaning beyond the schema's bare types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it generates a valid branch name following naming conventions. The verb 'generate' and resource 'branch name' are specific, and it is distinct from siblings like workflow_validate_branch_name (validation) and github_create_branch (creation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides examples but does not explicitly state when to use this tool over alternatives. It implies use when a branch name is needed before creation, but lacks guidance on when not to use it or how it differs from validate/start features.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workflow_generate_commit_messageB

Generate a valid commit message following Conventional Commits.

Args: commit_type: Type of commit (feat, fix, docs, etc.) subject: The commit subject/description scope: Optional scope of the commit

Returns: Dictionary with generated commit message

Examples: - commit_type='feat', scope='auth', subject='Add user authentication' -> 'feat(auth): add user authentication' - commit_type='fix', subject='Resolve annotation crash' -> 'fix: resolve annotation crash'

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNo
subjectYes
commit_typeYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist; the description only mentions the return type as a dictionary but does not disclose side effects, idempotency, or other behavioral traits. The description carries the full burden but adds minimal behavioral context beyond the return.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Description, Args, Returns, Examples) and is concise without unnecessary prose. The only minor issue is the inclusion of 'Args:' which is more common in docstrings but still clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains the return format. However, it does not list allowed commit types or validation rules, leaving the agent to infer from examples. The tool's purpose is clear but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must add meaning. It provides brief descriptions for each parameter (e.g., commit_type: 'Type of commit') and examples showing valid values, but does not enumerate allowed commit types or enforce constraints beyond the schema's required fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates a valid commit message following Conventional Commits, distinguishing it from sibling tools like workflow_validate_commit_message (validation) and workflow_generate_branch_name (branch name).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through argument descriptions and examples, but no explicit guidance on when to use this tool vs. alternatives like workflow_validate_commit_message is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workflow_get_conventionsA

Get naming conventions reference.

Returns a reference of all naming conventions used by this MCP server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description communicates that the tool returns a reference, implying no side effects. Without annotations, it provides adequate transparency for a read-only retrieval tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, no unnecessary words, and front-loaded with the action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with no parameters and no output schema, the description provides sufficient context. It could mention the format of the reference, but it is not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the description does not need to add parameter semantics. Schema coverage is 100%, meeting the baseline of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves naming conventions used by the MCP server, with a specific verb and resource. It distinguishes from siblings that perform actions like creating branches or issues.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used to obtain a reference of naming conventions, and there are no conflicting alternatives. However, it does not explicitly state when not to use it, which is acceptable given the tool's simplicity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workflow_start_featureA

Start a new feature workflow: create Linear issue and GitHub branch.

This is a convenience tool that combines:

  1. Creates a new issue in Linear

  2. Creates a properly named branch in GitHub

Args: title: Feature title (used for both issue and branch) description: Optional description for the Linear issue repo: GitHub repository name. Defaults to configured default_repo. project: Linear project/team key. Defaults to configured default_project. priority: Issue priority (1=Urgent, 2=High, 3=Normal, 4=Low) branch_type: Type of branch (default: 'feature')

Returns: Dictionary with created issue and branch details

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNo
titleYes
projectNo
priorityNo
branch_typeNofeature
descriptionNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It correctly states it creates resources but omits details like potential failures (if issue or branch already exists), required permissions, or whether the branch is based on the default branch. It discloses the combined behavior but not all side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise: a one-sentence summary, a two-line combined action overview, and a bullet list of args. It is front-loaded and every sentence adds value. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main purpose, all input parameters, and a high-level return value ('Dictionary with created issue and branch details'). Missing specifics: what exactly is in the return dict (issue ID, branch name, etc.) and whether the branch is created from the default branch. With no output schema, a bit more detail would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description's 'Args' section adds critical meaning. It explains each parameter's purpose (e.g., title for both issue and branch, project as Linear project/team key). Minor omission: no format hints for repo or project keys (e.g., full name or slug).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it 'Start a new feature workflow: create Linear issue and GitHub branch', with a clear verb and resource combination. It distinguishes itself from siblings like linear_create_issue and github_create_branch by being a convenience tool that combines both actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains it is a convenience tool combining three steps (Linear issue creation and GitHub branch creation), which implies when to use it (when both are needed). However, it lacks explicit guidance on when not to use it or alternatives (e.g., using the individual tools separately if only one action is required).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workflow_validate_branch_nameA

Validate a branch name against naming conventions.

Args: branch_name: The branch name to validate

Returns: Dictionary with validation result and details

Valid branch format: /- Types: feature, bugfix, hotfix, docs, spike, release Examples: - feature/PROJ-123-user-authentication - bugfix/PROJ-456-login-crash - docs/update-readme

ParametersJSON Schema
NameRequiredDescriptionDefault
branch_nameYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description lacks behavioral details beyond the validation logic. It does not disclose whether the tool is read-only, whether it requires authentication, or what happens on invalid input (e.g., error vs. return message). Since no annotations are provided, the description carries the full burden but only explains the validation format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, starting with the purpose, then listing argument, return, format, and examples. Every sentence adds value with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple validation tool with one parameter and no output schema, the description is fairly complete. It explains the validation rules, format, and examples. However, it does not detail the return structure (e.g., what keys like 'valid' or 'errors' might be present), leaving some ambiguity for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema only defines a single string parameter without description, resulting in 0% schema description coverage. The description adds significant value by explaining the expected format, providing valid types, and including concrete examples, which greatly aids correct usage beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'validate' and the resource 'branch name', and specifies the target of validation is against naming conventions. It is distinct from sibling tools like workflow_generate_branch_name (which creates) and workflow_get_conventions (which retrieves), making purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage in a validation context but does not explicitly state when to use this tool versus alternatives. For example, it does not mention that this tool is for checking an existing name, while workflow_generate_branch_name should be used to create a valid name. No when-not-to-use or alternative guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workflow_validate_commit_messageA

Validate a commit message against Conventional Commits format.

Args: message: The commit message to validate

Returns: Dictionary with validation result and details

Valid commit format: (): Types: feat, fix, docs, style, refactor, perf, test, chore, build, ci, revert Examples: - feat(auth): add user authentication - fix(map): resolve annotation crash - docs(readme): update installation steps

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states it returns a dictionary with validation result and details, but it does not disclose error behavior or side effects. The description is adequate but lacks depth on 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a clear structure: summary line, Args/Returns sections, format explanation, types list, and examples. Every sentence adds value and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description covers the validation format, types, examples, and return type. It is mostly complete but could elaborate on error handling behavior (e.g., what happens on invalid input).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining the 'message' parameter as 'The commit message to validate' and providing format rules, types, and examples. This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool validates a commit message against the Conventional Commits format. It specifies the verb 'Validate' and the resource 'commit message', distinguishing it from sibling tools like workflow_validate_branch_name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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, nor does it provide context for when not to use it. It implies usage for validating commit messages but lacks explicit guidance.

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.

  1. 19 tool updatesv0.1.0
    • First observedgithub_create_branch
    • First observedgithub_create_pr
    • First observedgithub_get_default_branch
    • First observedgithub_get_pr
    • First observedgithub_list_branches
    • First observedgithub_list_prs
    • First observedlinear_create_issue
    • First observedlinear_get_issue
    • First observedlinear_list_issues
    • First observedlinear_list_labels
    • First observedlinear_list_states
    • First observedlinear_list_workspaces
    • First observedlinear_update_issue
    • First observedworkflow_generate_branch_name
    • First observedworkflow_generate_commit_message
    • First observedworkflow_get_conventions
    • First observedworkflow_start_feature
    • First observedworkflow_validate_branch_name
    • First observedworkflow_validate_commit_message

TDQS

A4/5.0

Scored across 19 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: GitHub and Linear operations are separated by prefix, workflow utilities are unique (validation, generation, composite). No two tools have overlapping functionality that would cause confusion.

Naming Consistency5/5

All tool names use consistent snake_case verb_noun pattern with clear prefixes (github_, linear_, workflow_). Conventions are uniform across the entire set, making it easy to predict tool names.

Tool Count4/5

With 19 tools, the server is slightly heavy but still well-scoped for its integration purpose. Each tool serves a distinct need, so the count is justified.

Completeness5/5

The tool surface covers core GitHub and Linear operations (CRUD for issues, branches, PRs) plus workflow enforcements (validation, generation). Missing features like PR reviews are out of scope for this integration server.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • -
    license
    B
    quality
    Not graded
    maintenance
    Enables AI-driven orchestration of GitHub development workflows including automated issue analysis, code generation, code review, and PR creation through multiple specialized agents. Integrates with GitHub Actions to automate the complete development process from issue to pull request.
    7
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language management of GitHub Actions Runner Controller (ARC) in Kubernetes clusters. Supports automated installation, scaling, monitoring, and troubleshooting of GitHub Actions runners through conversational AI commands.
    -
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables comprehensive issue tracking and project management through Linear's GraphQL API. Supports creating and managing issues, organizing projects and sprints, team collaboration, and roadmap planning for modern development workflows.
    -