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.
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.
radial create <title>Open an issue. -p priority, -l label, -a assignee, -t team, -s statusradial listList and filter: --status, --assignee, --label, --team, --priority, --allradial show RAD-219Full detail (fields, comments, relations) as text or --jsonradial update RAD-219Edit any field; pipe a long body with --description-file or --stdinradial move RAD-219 DESIGNMove to another team; the id re-keys and old links redirectradial close RAD-219Close with an optional -m message; links PRs automaticallyradial delete RAD-219Permanently delete an issueradial search <query>The same instant index the app uses, in your terminalradial triageStep through the triage queue with single-key actionsradial comment RAD-219 <body>Comment, or --reply-to a thread; pipe with --stdinradial link RAD-1 blocks RAD-2Relate issues: blocks, blocked-by, related, duplicate-ofradial unlink RAD-1 blocks RAD-2Remove a relationradial projectProjects: list · create · update · archive · deleteradial labelLabels: list · create · update · delete (team-scoped or global)radial cycleCycles: list · create · update · deleteradial inboxYour notifications: assignments, mentions, comments; --unreadradial activity RAD-219An issue's full activity historyradial whoamiThe current credential: workspace, scope, agentradial workspaceValid teams, labels, statuses, members; what writes acceptradial keysMint, list, and revoke API keys (owner/admin)radial importBring everything from Linear or Jira: --from linear | jiraradial exportFull workspace export as JSON or CSVradial authSign in with the device flow (or set RADIAL_KEY)radial mcpServe the MCP tools over stdio for any agentradial logoutForget stored credentialsThe 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.
{
"mcpServers": {
"radial": {
"url": "https://mcp.radial.build"
}
}
}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.
create_issueget_issueupdate_issuelist_issuessearch_issuesclose_issuedelete_issuebulk_update_issuesmove_issuetriage_queueadd_relationremove_relationlist_relationscommentlist_commentslist_notificationsmark_notification_readget_issue_activitylist_projectscreate_projectupdate_projectdelete_projectlist_labelscreate_labelupdate_labeldelete_labellist_cyclescreate_cycleupdate_cycledelete_cycleget_workspaceThe 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 -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.
# 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 ENGYou 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.