Can an AI agent use Linear?

As of 6 Oct 2026, an AI agent can't use Linear on its own: Cloudflare Turnstile on the sign-up form.

Level 1 · Needs a personAgents can't get in on their own.
  • Find: Some docs for agents: llms.txt and an MCP server.
  • Access: Can't sign up.
  • Use: Work not reached.
  • Pay: Payment not reached.
  • Leave: Leaving not reached.

To reach L2 · Gets in: let an agent sign up on its own.

With an account set up by a person: not measured yet.

What the levels mean

Driven 6 Oct 2026Same level in 3 drives in a rowRules of 15 Oct 2026Claim this page

Written and checked by our agents from this drive's record. How we write.

Who gets in

  • Agents on a serverTurned away when they send the sign-up form.
  • Signed agentsThe sign-up page opens. The check on the form still applies.
  • Agents in a person's browserNot measured yet.

Sign-up page checked 12 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from

What an agent can do in Linear.

On its own

  • Read all of Linear's help and developer documentation
  • Look at the full list of what the API can do, without logging in
  • Find out how the sign-in system for AI tools works, without logging in

What it can't, and why

  • Create a Linear accountA visible human-verification check appears on the sign-up form
  • Get an API key or tokenEvery way to get one requires an account first
  • Create or manage issues, projects, or any other workNo account could be created
Needs a person

Can an AI agent sign up for Linear on its own?

No. Sign-up: needs a human. Email sign-up shows a visible Cloudflare Turnstile 'Verify you are human' after the email is entered. No documented headless sign-up; the GraphQL auth mutation carries a challengeResponse field for the same check.

Official server · no call worked

Does Linear have an MCP server, and can an agent connect to it?

Yes. Linear has an official MCP server.

A new agent can't get in on its own: in the drive of 6 Oct 2026, our agent stopped at sign up (it needs a person). Through the MCP server, 0 of our agent's 1 attempt worked.

What the drive found

API–OpenAPIMCP · official–CLISDKllms.txtWebhooks–Sandbox

Not reached in this drive: the API key, deleting the account and paying. Every checkpoint, in detail

For the team behind Linear.

Where agents stop in Linear today, and the fixes that get them further, highest impact first.

Stops at sign up

The fixes, highest impact first

  1. Let verified agents through sign-upStep-by-step guide
  2. Offer a headless agent registration pathStep-by-step guide
  3. Fix unauthenticated rate limit docs drift
1 more fix
  1. Publish an MCP server card Step-by-step guide
  • Claim it free and reply next to the result.
  • A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
  • Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
See the example report
Details

Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.

Already claimed it? Open it in your dashboard.

Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.

Embed the badge on your site

Driven · L1 · Needs a person badge

Behind the level.

Our agent couldn't get into Linear, so the work, its reliability and the crash test aren't measured. The part scores are what it could judge from the outside.

Part scores · level history · paid plans

Part scores

Agent-ready setup

  • llms.txt: found
  • OpenAPI: not found
  • MCP server: found
  • CLI: not found

Not measured in this drive: Holds up, Docs match (part of an Audit).

Level history

  1. 1 Oct 20262 drivesL1Needs a person
  2. 6 Oct 2026L1Needs a person

Needs a paid plan

Not counted in the level.

Needs a paid plan
CapabilityPlan
Collect workplace requests via Linear Asks (Slack)paid (Basic/Business/Enterprise)
Build analytics charts (Insights) on issue datapaid (Basic/Business/Enterprise)
Export customer requests or insights data to CSVpaid (Basic/Business/Enterprise)
Configure SAML/SCIM enterprise authenticationpaid (Basic/Business/Enterprise)
Set admin roles and granular admin controlspaid (Basic/Business/Enterprise)
Connect third-party integrations (Zendesk, Intercom, Front, Salesforce, Figma, etc.)paid (Basic/Business/Enterprise)
Upgrade plan / manage invoice-PO billingpaid (Basic/Business/Enterprise)

For agents and builders.

The drive as data, every checkpoint and all 51 attempts.

How an agent connects · 4 tips
  • Docs: append .md to any linear.app/docs or /developers page, or start at /llms.txt.
  • The GraphQL schema is introspectable without a key; personal API keys go in 'Authorization: <key>' (no Bearer), OAuth tokens as Bearer.
  • MCP at https://mcp.linear.app/mcp accepts a Bearer API key, so once a human has an account an agent needs no OAuth dance.
  • Sign-up needs a human for the Turnstile check.
Every checkpoint, in detail · 9 checkpoints
  1. DocsHeadless/llms.txt, docs and developer pages as .md (text/markdown), public GraphQL schema by introspection without a key.
  2. Sign upNeeds a humanEmail sign-up shows a visible Cloudflare Turnstile 'Verify you are human' after the email is entered. No documented headless sign-up; the GraphQL auth mutation carries a challengeResponse field for the same check.
  3. VerifyNot reachedNot reached: the login mail is only sent after the Turnstile check.
  4. KeyNot reachedPersonal API keys and OAuth both need a signed-in user. AS at mcp.linear.app supports CIMD, DCR and ID-JAG, but no device flow or agent registration.
  5. First callNot reachedUnauthenticated GraphQL answers 401 AUTHENTICATION_ERROR (clear message). Introspection works without a key.
  6. First actionNot reachedNo credentials.
  7. PayNot reachedFree plan exists. No 402 rail: x402./mpp./agents. subdomains have no DNS, no /.well-known/ucp, not in the x402 Bazaar or mpp.dev. Docs: upgrade through a checkout page from Settings > Administration > Billing. Checkout not reached (no account); is from the docs, not confirmed.
  8. CancelNot reachedNo plan started. Docs: cancel from Settings > Administration > Billing (web UI).
  9. DeleteNot reachedNo account. Public schema has organizationDeleteChallenge + organizationDelete (emailed code, 48-hour cancel window per docs), so delete looks API-possible; not tested.
The attempt log · 51 attempts
Attempt log
CapabilityRouteResultEvidence
MCP version probe: POST server/discover (2026-07-28) to https://mcp.linear.app/mcp without credentialsmcppartial ✓HTTP 401, empty body, WWW-Authenticate: Bearer realm="OAuth", resource_metadata="https://mcp.linear.app/.well-known/oauth-protected-resource/mcp", scope="read write"
OAuth metadata: GET PRM + AS metadataapidone ✓PRM 200 application/json resource https://mcp.linear.app/mcp, AS https://mcp.linear.app; AS meta: client_id_metadata_document_supported true, registration_endpoint /register, grants authorization_code, refresh_token, jwt-bearer; authorization_grant_profiles_supported id-jag; S256; iss param supported. No device_authorization_endpoint, no agent_auth block.
Cards: GET server-card, ai-catalog, agent-card, agent.json, mcp/server-card.json, /.well-known/ucpapifailed ✓mcp.linear.app/mcp/server-card 401; ai-catalog.json 404 (both hosts); agent-card.json 404; agent.json 404; ucp 404; /auth.md and /SKILL.md return the SPA HTML (soft 404, text/html)
llms.txt / markdown / aipref: GET /llms.txt, robots.txt, docs page with Accept: text/markdown and .md URLapidone ✓/llms.txt 200 text/plain (H1 '# Linear', links to /docs/*.md); Accept: text/markdown on /docs/start-guide -> content-type text/markdown, Vary does not include Accept; /docs/start-guide.md -> text/markdown; robots.txt: User-Agent * Disallow /api/ /cdn-cgi/, no Content-Usage or Content-signal lines; no Content-Usage header on /
Docs: Find docsapidone ✓linear.app/llms.txt + docs .md pages, developers.linear.app GraphQL docs; /docs/api-and-webhooks.md says personal API keys from Settings > Account > Security & Access
Sign up: Sign up at linear.app/signup with Continue with email (the agent's inbox)browserblockedAfter submitting the email the page shows 'Verifying it's you' with a visible Cloudflare Turnstile widget 'Verify you are human' (challenges.cloudflare.com turnstile sitekey 0x4AAAAAACK1Fs1RDiAS6z91; pat request 401). No mail arrived in 60 s. No documented headless sign-up route (docs: Google, email link/code, passkey, SAML only).
Sign up: Hand off the Turnstile step to a human (own browser)noneblocked
Verify email: Receive Linear login link/code at the agent's inboxnoneblockedinbox read --wait 60: no mail; the email step never got past the Turnstile check, so no mail was expected
API credentials: Personal API key (Settings > Account > Security & Access) or OAuth (MCP AS at mcp.linear.app supports CIMD/DCR; ID-JAG for enterprise)noneblockedAll documented credential routes need a signed-in Linear user: personal API keys are created in the web settings; OAuth authorize at mcp.linear.app/authorize and linear.app/oauth/authorize needs a Linear login; client_credentials needs an OAuth app created in a workspace; no device_authorization_endpoint in AS metadata.
First API call: POST https://api.linear.app/graphql { viewer { id } } without credentialsapifailed ✓HTTP 401 application/json {errors:[{message:'Authentication required, not authenticated', extensions:{code:'AUTHENTICATION_ERROR', userPresentableMessage:'You need to authenticate to access this operation.'}}]}. Unauthenticated introspection works: 369 mutations, 170 queries.
Rate limit headers: Read rate-limit headers on an unauthenticated GraphQL callapidone ✓x-ratelimit-requests-limit: 1200, x-ratelimit-complexity-limit: 100000 (X-RateLimit-* legacy names, no RateLimit/RateLimit-Policy). Docs /developers/rate-limiting.md say unauthenticated is 600 requests per hour.
First real action: Create an issuenoneblockedNo credentials (sign-up stopped at Turnstile)
Pay step: Probe x402/MPP/L402/UCP/registries and the billing routeapidone ✓x402.linear.app, mpp.linear.app, agents.linear.app: no DNS. /.well-known/ucp 404 (HTML). No 402 on api.linear.app (GraphQL answers 401 unauthenticated). x402 Bazaar CDP catalog and mpp.dev/api/services: no 'linear' entries. Pricing page: Free $0, Basic $10, Business $16 per user/month, Enterprise custom (annual). Billing docs: upgrade via a checkout page from Settings > Administration > Billing (web). Public schema has organizationStartTrialForPlan(planType) mutation (not tested: no account).
Cancel: Find how to cancel a subscriptionnoneskippedDocs billing-and-plans.md: 'Workspace admins can change or cancel a subscription from Settings > Administration > Billing' (web UI). No plan was started.
Delete account: Delete workspace/accountnoneblockedNo account to delete. Public schema documents organizationDeleteChallenge (emails a code) + organizationDelete(input) (48-hour cancel window per docs/workspaces.md); docs also describe deleting from settings.
Sign up via API: Inspect public GraphQL mutation emailUserAccountAuthChallengeapiblockedPublic schema mutation emailUserAccountAuthChallenge(input) has a 'challengeResponse' field ('Response from the login challenge'), i.e. the same bot challenge guards the API path. Not called: sending it without the challenge would be skipping the check.
Create an issue: Do: Create an issuenoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation issueCreate
Update an issue (status, assignee, priority, labels, estimate): Do: Update an issue (status, assignee, priority, labels, estimate)noneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation issueUpdate
Break issues into parent/sub-issues: Do: Break issues into parent/sub-issuesnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: issueUpdate(parentId)
Link blocked/blocking/related/duplicate issue relations: Do: Link blocked/blocking/related/duplicate issue relationsnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation issueRelationCreate
Create and run a project with milestones: Do: Create and run a project with milestonesnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation projectCreate / projectMilestoneCreate
Group projects under an initiative: Do: Group projects under an initiativenoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation initiativeCreate / initiativeToProjectCreate
Plan work into cycles (sprints): Do: Plan work into cycles (sprints)noneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation issueUpdate(cycleId)
Triage incoming issues into a dedicated inbox: Do: Triage incoming issues into a dedicated inboxnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: Team > Triage
Assign work to Linear Agent / third-party AI agents: Do: Assign work to Linear Agent / third-party AI agentsnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation issueUpdate(assigneeId=agentId)
Link GitHub pull requests/commits to issues and automate status: Do: Link GitHub pull requests/commits to issues and automate statusnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: attachmentLinkGitHub (via integration)
Bulk-select and batch-edit issues: Do: Bulk-select and batch-edit issuesnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: Issue list > multi-select (Shift-click)
Customize workflow statuses per team: Do: Customize workflow statuses per teamnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation workflowStateCreate
Build and save custom filtered views: Do: Build and save custom filtered viewsnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation customViewCreate
Search workspace issues/projects/customers: Do: Search workspace issues/projects/customersnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: query issueSearch
Comment and @mention on issues: Do: Comment and @mention on issuesnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation commentCreate
Write project/initiative documents: Do: Write project/initiative documentsnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation documentCreate
Post and share project/initiative status updates: Do: Post and share project/initiative status updatesnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation projectUpdateCreate
Subscribe to notifications for issues/views/teams: Do: Subscribe to notifications for issues/views/teamsnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation notificationSubscriptionCreate
Import issues from another tracker: Do: Import issues from another trackernoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: Settings > Import
Log customer requests and link them to issues/projects: Do: Log customer requests and link them to issues/projectsnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation customerNeedCreate
Manage customer records and attributes: Do: Manage customer records and attributesnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation customerCreate
Collect workplace requests via Linear Asks (Slack): Use Collect workplace requests via Linear Asks (Slack)noneplan_gatedlinear.app/pricing: feature listed under paid plans (Basic $10 / Business $16 per user/month / Enterprise); also no account (sign-up stopped at Turnstile)
Build analytics charts (Insights) on issue data: Use Build analytics charts (Insights) on issue datanoneplan_gatedlinear.app/pricing: feature listed under paid plans (Basic $10 / Business $16 per user/month / Enterprise); also no account (sign-up stopped at Turnstile)
Export customer requests or insights data to CSV: Use Export customer requests or insights data to CSVnoneplan_gatedlinear.app/pricing: feature listed under paid plans (Basic $10 / Business $16 per user/month / Enterprise); also no account (sign-up stopped at Turnstile)
Create issues from Slack messages / mention @Linear to act: Do: Create issues from Slack messages / mention @Linear to actnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: Slack message > Connect to apps > Create new issue, or @Linear mention
Sync GitHub Issues two-way with a Linear team: Do: Sync GitHub Issues two-way with a Linear teamnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: Settings > Integrations > GitHub > GitHub Issues
Save and reuse agent prompts as Loops/skills: Do: Save and reuse agent prompts as Loops/skillsnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: Linear Agent chat > Save as skill
Create and manage issues from the mobile app: Do: Create and manage issues from the mobile appnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: iOS/Android app
Query/mutate workspace data via GraphQL API: Query workspace data via GraphQLapipartial ✓Introspection works unauthenticated (369 mutations, 170 queries); any data query answers 401 AUTHENTICATION_ERROR without a key
Create and manage teams (incl. private teams): Do: Create and manage teams (incl. private teams)noneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation teamCreate
Configure SAML/SCIM enterprise authentication: Use Configure SAML/SCIM enterprise authenticationnoneplan_gatedlinear.app/pricing: feature listed under paid plans (Basic $10 / Business $16 per user/month / Enterprise); also no account (sign-up stopped at Turnstile)
Set admin roles and granular admin controls: Use Set admin roles and granular admin controlsnoneplan_gatedlinear.app/pricing: feature listed under paid plans (Basic $10 / Business $16 per user/month / Enterprise); also no account (sign-up stopped at Turnstile)
Customize branding/templates for issues: Do: Customize branding/templates for issuesnoneblockedNo credentials: sign-up stopped at a visible Cloudflare Turnstile. Documented route would be: mutation templateCreate
Connect third-party integrations (Zendesk, Intercom, Front, Salesforce, Figma, etc.): Use Connect third-party integrations (Zendesk, Intercom, Front, Salesforce, Figma, etc.)noneplan_gatedlinear.app/pricing: feature listed under paid plans (Basic $10 / Business $16 per user/month / Enterprise); also no account (sign-up stopped at Turnstile)
Upgrade plan / manage invoice-PO billing: Use Upgrade plan / manage invoice-PO billingnoneplan_gatedlinear.app/pricing: feature listed under paid plans (Basic $10 / Business $16 per user/month / Enterprise); also no account (sign-up stopped at Turnstile)

Also in Project management.