Developers

Built to be scripted.

Everything in Radial is reachable from the terminal — by you, by CI, or by your agents. The web app is just one client.

$ npm i -g radial.build && radial auth

The CLI

One command for everything in the product, and they all speak--json. Hand the whole tracker to a script, your CI, or an agent.

Issues
radial create <title>Open an issue. -p priority, -l label, -a assignee, -t team, -s status
radial listList and filter: --status, --assignee, --label, --team, --priority, --all
radial show RAD-219Full detail (fields, comments, relations) as text or --json
radial update RAD-219Edit any field; pipe a long body with --description-file or --stdin
radial move RAD-219 DESIGNMove to another team; the id re-keys and old links redirect
radial close RAD-219Close with an optional -m message; links PRs automatically
radial delete RAD-219Permanently delete an issue
radial search <query>The same instant index the app uses, in your terminal
radial triageStep through the triage queue with single-key actions
Comments & links
radial comment RAD-219 <body>Comment, or --reply-to a thread; pipe with --stdin
radial link RAD-1 blocks RAD-2Relate issues: blocks, blocked-by, related, duplicate-of
radial unlink RAD-1 blocks RAD-2Remove a relation
Organize
radial projectProjects: list · create · update · archive · delete
radial labelLabels: list · create · update · delete (team-scoped or global)
radial cycleCycles: list · create · update · delete
Inbox
radial inboxYour notifications: assignments, mentions, comments; --unread
radial activity RAD-219An issue's full activity history
Workspace
radial whoamiThe current credential: workspace, scope, agent
radial workspaceValid teams, labels, statuses, members; what writes accept
radial keysMint, list, and revoke API keys (owner/admin)
Data
radial importBring everything from Linear or Jira: --from linear | jira
radial exportFull workspace export as JSON or CSV
Session
radial authSign in with the device flow (or set RADIAL_KEY)
radial mcpServe the MCP tools over stdio for any agent
radial logoutForget stored credentials

The MCP server

One line in your agent's config: the URL. Your client opens a browser, you approve, done. No keys to paste. It hands an agent 31 tools across the whole product: issues, relations, comments, inbox, labels, cycles, projects. Works with Claude Code, Codex, and anything that speaks MCP; or run radial mcp for the same tools over stdio.

.mcp.json
{
  "mcpServers": {
    "radial": {
      "url": "https://mcp.radial.build"
    }
  }
}
Scoped by design

Every connection is read-only, triage-only, or full access. Authorize with OAuth, nothing to paste, and revoke any connection in one click without touching the others.

31 tools across the product
Issues
create_issueget_issueupdate_issuelist_issuessearch_issuesclose_issuedelete_issuebulk_update_issuesmove_issuetriage_queue
Relations
add_relationremove_relationlist_relations
Comments
commentlist_comments
Inbox
list_notificationsmark_notification_readget_issue_activity
Projects
list_projectscreate_projectupdate_projectdelete_project
Labels
list_labelscreate_labelupdate_labeldelete_label
Cycles
list_cyclescreate_cycleupdate_cycledelete_cycle
Workspace
get_workspace

The API

Plain REST. JSON in, JSON out. No GraphQL schema to spelunk, no SDK required, no deprecation roulette. Every resource is here: issues, relations, comments, notifications, labels, cycles, projects, API keys, all in the reference below. Rate limited to 1 request per second.

curl
$ curl -H "Authorization: Bearer $RADIAL_KEY" https://api.radial.build/v1/issues?status=open

{ "issues": [ { "id": "RAD-241", "title": "Search results flash empty state", ... } ] }

Migrate from Linear or Jira

Export your data from Linear or Jira, then run one command. The CLI normalizes the export and the server rebuilds the whole graph (issues, labels, projects, parents, relations, and comments), preserving the original timestamps.

by hand
# 1. dry run: resolves everything, writes nothing
radial import --from linear export.json --team ENG --dry-run

# 2. looks right? import it once
radial import --from linear export.json --team ENG
or hand this prompt to your agent
You are migrating my issues into Radial with the radial CLI (already authenticated).

Source: Linear   Export file: ./linear-export.json   Target team: ENG
(For Jira, use --from jira and your Jira export instead.)

Migrate carefully:
1. Dry run first and show me the summary. This writes nothing:
   radial import --from linear ./linear-export.json --team ENG --dry-run
2. Review the warnings. Call out unknown assignees, unmapped statuses, or skipped
   labels. If the issue count looks off, stop and ask me before importing.
3. If it looks right, run the real import EXACTLY ONCE. Re-running duplicates
   everything (the import is not idempotent):
   radial import --from linear ./linear-export.json --team ENG
4. Report created and failed counts, plus relations, comments, and new labels. If
   some issues failed, show their warnings. Do NOT re-run the whole file to fix them.

Constraints: max 5000 issues per file (split larger exports); the target team must
already exist; imported issues are attributed to me, and assignees are matched by email.
Always dry-run first: it resolves everything and reports what would be created, without writing.
Not idempotent: run the import once. Re-running the same file creates duplicates.
You supply the export file; Radial never pulls from Linear or Jira directly.
Up to 5000 issues per file. Split larger exports and import each one once.
Best-effort: unknown assignees, labels, or statuses become warnings, not failures.
Needs a write-scoped session (radial auth) or API key, and the target team must already exist.