Skip to content

Linear integration

Liminal connects to Linear through hosted OAuth on vireondynamics.com — users never create their own Linear OAuth app.

Harness integration only — not website account login.

Connect

  1. Settings → Integrations → Linear → Connect.
  2. Complete Linear consent in the browser tab.
  3. Tokens persist under ~/.liminal/oauth/linear/.

Or: connect_provider({ provider: "linear" }).

Read vs write

  • Read + write: list/search/get issues, users, labels, cycles, projects; create/update issues, comments, labels, projects; archive/delete (writes are approval-gated).
  • Read only: teams, issues, issue details, search.

Agent tools

ToolPurpose
linear_get_viewerConnected user (id, email, organization)
linear_list_teamsTeams in the workspace
linear_list_usersWorkspace members
linear_list_team_membersMembers of one team (team_key or team_id)
linear_list_workflow_statesWorkflow states — use before status changes
linear_list_labelsIssue labels (optional team_key)
linear_list_cyclesSprints/cycles (optional team_key, active_only)
linear_list_projectsProjects (optional team_id)
linear_list_issuesIssue list; filter by team, state_name, assignee_email
linear_list_my_issuesIssues assigned to the connected user
linear_search_issuesFull-text search (query or q)
linear_get_issueFull issue detail by uuid or ENG-42 (labels, cycle, parent, sub-issues)
linear_list_commentsComments on an issue

Issues (writes — approval required)

ToolPurpose
linear_create_issueCreate; team_key or team_id, labels, cycle, parent, project, estimate, due date
linear_update_issuePatch title, description, state, priority, project, cycle, parent, labels, estimate, due date
linear_assign_issueAssign by id, email, or name; empty assignee_id unassigns
linear_add_commentComment on uuid or ENG-42
linear_set_issue_labelsReplace all labels (label_names or label_ids)
linear_add_issue_labelsAdd labels without removing existing
linear_set_issue_cycleAdd issue to sprint/cycle
linear_link_sub_issueSet parent issue (sub-task)
linear_archive_issueArchive (soft delete)
linear_delete_issuePermanent delete
linear_attach_urlLink external URL to issue

Projects & labels (writes — approval required)

ToolPurpose
linear_create_labelNew label on a team
linear_create_projectNew project
linear_update_projectRename or update project state / target date

Agent tips

  • Args are flexible: issue, issue_id, and identifier are interchangeable (e.g. VIP-1). team / team_key work instead of team_id. status maps to state_name. priority is 0–4 (urgent=1).
  • Run linear_list_teams first to get team_key (e.g. VIP) for linear_create_issue.
  • Use state_name (e.g. Done, In Progress) instead of hunting UUIDs — run linear_list_workflow_states first if unsure.
  • Issue identifiers (ENG-42) work anywhere issue or issue_id is accepted.
  • Use linear_get_viewer + linear_list_my_issues for “my tickets”.
  • Prefer linear_archive_issue over linear_delete_issue unless the user explicitly wants permanent deletion.

With lazy loading: activate_tool_family({ family: "linear" }).

Disable with AGENT_LINEAR_REST=0.

Operator setup (Vireon — one time)

  1. Linear Settings → API → OAuth applicationsNew OAuth application.

  2. Callback URL:

    https://www.vireondynamics.com/connect/linear/callback
  3. Scopes: read, write, issues:create, comments:create (read-only mode requests read only).

  4. Vercel env: LINEAR_OAUTH_CLIENT_ID, LINEAR_OAUTH_CLIENT_SECRET.

Liminal AI · Beta docs (v0.1.2) · Marketing: vireondynamics.com/liminal · Compare: vireondynamics.com/liminal/compare