Closed beta · run Worlds on your machineBrowse worlds →
Docs menu · Linear API

Worlds / Eng and it ops

Linear API

A local Linear workspace with teams, issues, workflow states, cycles, projects and labels. Test the agent that triages incoming issues, sets priority and plans cycles.

Base path
/graphql
Auth
API key or OAuth bearer token, the world key
Endpoints
14
Status
Active today

This reference previews the surface the Linear world serves in the closed beta. Paths mirror the public Linear API; the exact subset is confirmed when your workflow is scoped.

Connect

The run gives your agent these bindings. Keep your SDK; change only where it sends requests.

bindingmeaning
WORLDS_LINEAR_URLThis world's origin followed by /graphql
WORLDS_API_KEYThe world key, accepted wherever Linear expects a credential
WORLDS_WORLD_IDThe isolated world's identity
js · @linear/sdk
import { LinearClient } from "@linear/sdk";

const linear = new LinearClient({
  apiKey: process.env.WORLDS_API_KEY,
  apiUrl: process.env.WORLDS_LINEAR_URL + "/graphql",
});

const issues = await linear.issues({ first: 20 });

API reference

Issues

Work items with state, priority, assignee and labels.

  • POST/graphql/graphql · issuesList issues
  • POST/graphql/graphql · issueGet an issue
  • POST/graphql/graphql · issueCreateCreate an issue
  • POST/graphql/graphql · issueUpdateUpdate an issue
  • POST/graphql/graphql · commentCreateComment on an issue
Fields · 6
idIDIssue id
identifierStringKey such as ENG-42
titleStringTitle
stateWorkflowStateWorkflow state
priorityInt0 none through 4 low
assigneeUserAssignee

Teams

Teams that own issues, cycles and workflow states.

  • POST/graphql/graphql · teamsList teams
  • POST/graphql/graphql · teamGet a team
  • POST/graphql/graphql · workflowStatesList workflow states
Fields · 4
idIDTeam id
keyStringTeam key
nameStringTeam name
statesConnectionWorkflow states

Projects

Projects that group issues toward a goal.

  • POST/graphql/graphql · projectsList projects
  • POST/graphql/graphql · projectCreateCreate a project
  • POST/graphql/graphql · projectUpdateUpdate a project
Fields · 5
idIDProject id
nameStringName
stateStringplanned, started, completed and more
targetDateDateTarget date
leadUserProject lead

Cycles

Time boxed sprints for a team.

  • POST/graphql/graphql · cyclesList cycles
  • POST/graphql/graphql · cycleGet a cycle
  • POST/graphql/graphql · cycleCreateCreate a cycle
Fields · 5
idIDCycle id
numberFloatCycle number
startsAtDateTimeStart
endsAtDateTimeEnd
progressFloatShare of scope completed

Test workflow

  1. Prepare. Select the Linear setup for your workflow and review its starting records, including issues, teams, projects.
  2. Connect. Configure your agent with this world's URL and key using the SDK example. Check that it reaches the intended API before running a test.
  3. Define. Describe the task, expected final changes and records that must stay untouched. Keep expected outcomes separate from the agent's instructions.
  4. Run and inspect. Use the dashboard or your workflow's generated CLI setup. Review final records and changes, then rerun from the same starting setup with the relevant failure conditions. Use Deployment and CI to automate the same workflow.

What to verify

  • ENG-1402 in Todo with priority High
  • ENG-1405 marked duplicate of ENG-1402
  • ENG-1407 still in Triage or accepted
  • Customer labels unchanged
  • Current cycle scope grows by one issue

Test file

A task file names the jobs, the policy your agent is given and what the grader reads back from the world's final state. The agent never sees the expected outcomes.

yaml · worlds/tasks.yaml
# worlds/tasks.yaml · Linear
version: 2
connector: linear
seed: linear-starter
mode: isolated
policy: >
  Clear ENG Triage. Accept real bugs into Todo with priority, mark true
  duplicates as duplicates of the original, and never cancel anything labeled
  Customer and Urgent.
tasks:
  - id: accept-or-decline-issues-in-triage
    prompt: Accept or decline issues in Triage
  - id: mark-duplicates-and-merge-context
    prompt: Mark duplicates and merge context
  - id: assign-issues-to-the-current-cycle-by-priority
    prompt: Assign issues to the current cycle by priority
expected:
  - ENG-1402 in Todo with priority High
  - ENG-1405 marked duplicate of ENG-1402
  - ENG-1407 still in Triage or accepted
  - Customer labels unchanged
  - Current cycle scope grows by one issue
scenarios:
  - rate-limited
  - complexity-limit
  - key-revoked

See Tasks and outcomes for every field, and Deployment and CI to run the file on every pull request.

Failure conditions

Each one fires before the handler, at the same step on every run.

conditionwhat the agent sees
rate-limitedGraphQL returns a RATELIMITED error
complexity-limitA large query exceeds the complexity budget
key-revokedThe API key is revoked and requests fail authentication
webhook-twiceThe Issue update webhook arrives two times

Starting data

Start each run from the same records and relationships. The overview below describes the Linear starter; use the setup supplied for your workflow when preparing your own snapshot.

RecordsStarting setup
teamsENG and DES with their own workflow states
issues180 across Triage, Backlog, Todo, In Progress and Done
cyclesCurrent and next cycle with scope
projects4 projects with leads and target dates
labelsBug, Feature, Customer and area labels

The record shapes below reuse this world's API field definitions. They show illustrative values and placeholders, not an importable seed. API responses and seed input can differ; include all required records and references in the accepted import format for your workflow.

Issues records

Issues

Work items with state, priority, assignee and labels.

FieldTypeMeaning / relationship
idIDIssue id
identifierStringKey such as ENG-42
titleStringTitle
stateWorkflowStateWorkflow state
priorityInt0 none through 4 low
assigneeUserAssignee
json · illustrative record shape
{
  "id": "<Issue id>",
  "identifier": "<Key such as ENG-42>",
  "title": "<Title>",
  "state": "<Workflow state>",
  "priority": 1,
  "assignee": "<Assignee>"
}

See issues operations

Teams records

Teams

Teams that own issues, cycles and workflow states.

FieldTypeMeaning / relationship
idIDTeam id
keyStringTeam key
nameStringTeam name
statesConnectionWorkflow states
json · illustrative record shape
{
  "id": "<Team id>",
  "key": "<Team key>",
  "name": "<Team name>",
  "states": "<Workflow states>"
}

See teams operations

Projects records

Projects

Projects that group issues toward a goal.

FieldTypeMeaning / relationship
idIDProject id
nameStringName
stateStringplanned, started, completed and more
targetDateDateTarget date
leadUserProject lead
json · illustrative record shape
{
  "id": "<Project id>",
  "name": "<Name>",
  "state": "<planned, started, completed and more>",
  "targetDate": "<Target date>",
  "lead": "<Project lead>"
}

See projects operations

Cycles records

Cycles

Time boxed sprints for a team.

FieldTypeMeaning / relationship
idIDCycle id
numberFloatCycle number
startsAtDateTimeStart
endsAtDateTimeEnd
progressFloatShare of scope completed
json · illustrative record shape
{
  "id": "<Cycle id>",
  "number": 1,
  "startsAt": "<Start>",
  "endsAt": "<End>",
  "progress": 1
}

See cycles operations

See the Linear world in the catalog