integration · linear

Claude + Linear — issue tracking, agent-shaped.

Linear's API is GraphQL-only. wmcp.sh wraps the common operations as MCP tools so your agent can file bugs, comment on issues, move things across columns, and query projects without writing GraphQL. Connect Linear once; the worker injects your OAuth token on every call.

Last updated 2026-05-28 · works with Claude, OpenAI, LangChain, and any MCP client

vs. the alternatives

Capability@linear/sdkComposio Linearwmcp.sh
Setup timeInstall SDK + write GraphQLPlatform + per-customer OAuthConnect Linear once
GraphQL exposureFull — you write queriesAbstracted via REST-ish methodsCurated MCP tools (no GraphQL knowledge needed)
AuthPAT or OAuth, you storePlatform managesOAuth vault in wmcp.sh
MCP shapeWrap each query yourselfAuto-mappedNative MCP tools
WebhooksYesPlatform → workflowOut of scope for v0
CostFree SDKPlatform tierFree 100/day + $29/mo Pro

Tools your agent calls

All MCP-shaped — consumed directly by Claude tool_use, OpenAI function-calling, or LangChain.

ToolTypeReturns
issueCreateLive actionNew issue with ID + URL
issueUpdateLive actionUpdated issue
issuesByTeamLive actionFiltered issue list
issueSearchLive actionIssues matching query
commentCreateLive actionNew comment ID
projectsByTeamLive actionProject list
workflowStatesLive actionState machine for a team
myIssuesLive actionIssues assigned to current user

Python — agent files a bug from a deploy log

from wmcp import WmcpClient
from wmcp.anthropic import to_anthropic_tools, execute_tool_use
from anthropic import Anthropic

client = WmcpClient(api_key="webmcp_live_…")
spec   = "https://wmcp.sh/api/v1/curated/linear"   # curated tool list, not raw GraphQL
tools  = client.tools(spec)

anthropic = Anthropic()
msg = anthropic.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    tools=to_anthropic_tools(tools),
    messages=[{"role": "user",
               "content": "File a P1 bug in the BACKEND team: '/u/<hash> 500s on cold cache when seen: metadata missing'."}],
)

for block in msg.content:
    if block.type == "tool_use":
        # Worker injects your connected Linear OAuth token
        result = execute_tool_use(client, spec, block.model_dump())
        print(result)

Frequently asked

Does this support arbitrary GraphQL or curated tools only?
Both. The curated tool list (above) covers ~80% of agent use cases without exposing GraphQL. For anything else, hit Linear's GraphQL endpoint directly via the OpenAPI-style passthrough — wmcp.sh injects auth, you craft the query.
Which OAuth scopes does wmcp.sh request?
read + write — covers all standard CRUD on issues, projects, comments, and labels. Linear doesn't support more granular scoping at the OAuth App level today.
Team / project scoping?
OAuth tokens are workspace-scoped. Within a workspace, the agent can act across any team the OAuth user has access to. Pass teamId in tool args to scope writes to a specific team.
Rate limits?
Linear's API has both per-user and per-IP rate limits (1500 / hour typical). wmcp.sh respects 429 responses. For bulk operations, batch via Linear's native batching where supported.
Webhook support?
Not in v0. wmcp.sh covers the request-side surface. If you need to receive Linear events, set up a separate webhook endpoint and have it call wmcp.sh tools in response.

API agent-readiness

Linear's GraphQL + OAuth is a model for shipping an API agents can drive. See the API-side checklist.

→ /agent-ready/api  ·  cornerstone  ·  done-for-you ($499+)

Need this done for you?

Skip the wiring — we build, deploy, and monitor.

Custom adapter + hosted MCP at mcp.yourbrand.com + verified badge. From $499 one-time setup.

See /managed → Submit (free)