Skip to content

CLI Commands

The Roster CLI is a thin MCP client. Branded commands serialize flags to the snake_case input keys exposed by MCP tools. Use roster call when you need a raw tool invocation that does not yet have a branded command.

FlagPurpose
--config-dir <path>Override ROSTER_HOME / ~/.roster.
--profile <profile>Select an OAuth profile alias, MCP URL, or profile key.
--mcp-url <url>MCP endpoint URL.
--api-key <token>Bearer API key. Not persisted.
--jsonEmit a snake_case JSON envelope.
--timeout <ms>MCP request timeout. Defaults to 30000.
--non-interactiveFail instead of starting interactive auth flows.
--debugPrint extra failure detail.

See CLI Authentication for OAuth profile storage, API-key behavior, auth precedence, and scope guidance.

Terminal window
roster login https://roster.example.com/mcp --name prod
roster login https://roster.example.com/mcp --scope-preset read --scope mcp:custom:read
roster login https://roster.example.com/mcp --no-open --callback-port 48217
OptionPurpose
--name <alias>Save a human-friendly alias for the OAuth profile.
--scope-preset <preset>Request one of resolve, read, or manage. Defaults to resolve.
--scope <scope...>Add extra OAuth scopes to the selected preset.
--no-openPrint the authorization URL instead of opening the browser.
--callback-port <port>Use a specific loopback OAuth callback port.

roster login starts a loopback OAuth callback listener, opens the browser unless --no-open is set, uses PKCE, exchanges the authorization code, stores the OAuth profile, and selects it as the current profile.

Terminal window
roster auth status
roster --profile prod auth status

auth status shows which auth source the CLI would use for the current command. Its JSON output includes auth_mode, api_key_configured, mcp_url, selected_profile_key, and profile_alias.

Terminal window
roster auth profiles

auth profiles lists saved OAuth profiles, aliases, granted scopes, selected profile state, refresh-token presence, and update timestamps.

Terminal window
roster auth use prod

After this, commands can omit --profile prod:

Terminal window
roster projects list --limit 3
roster resolve "Who should approve the Helios renewal?"

The selector can be an alias, an MCP URL, or a profile key.

Terminal window
roster auth logout
roster auth logout prod
roster auth logout prod --remove

Without --remove, auth logout removes OAuth tokens but keeps the saved profile. Use --remove to delete the whole profile and any aliases that point to it.

Terminal window
roster auth alias set production prod
roster auth alias rm production

Aliases must start with a letter or number and may contain letters, numbers, dots, underscores, or dashes. They cannot be URLs.

PresetScope set
resolveopenid profile email offline_access mcp:resolve mcp:resolve-requests:read mcp:projects:read mcp:participants:read
readresolve plus mcp:labels:read mcp:delegations:read
manageall supported MCP read and write scopes
Terminal window
roster tools
roster call list_projects limit=10 query=helios
roster resolve "Who should approve the Helios vendor renewal?"
roster resolve --explain "Who should approve the Helios vendor renewal?"
roster resolve --mode test --project-id proj_... "Who should approve the draft renewal?"
roster projects list --query helios --limit 10
roster projects get proj_...
roster projects create "Helios Renewal" --description "Vendor renewal workspace"
roster projects update proj_... --status live
roster projects delete proj_...
roster participants list --project-id proj_... --label Finance --metadata approval_limit_eur:gte:125000
roster participants get part_...
roster participants create proj_... "Finance Approvers" --label-id lbl_... --metadata approval_limit_eur=125000
roster participants update part_... --new-label Procurement
roster participants delete part_...
roster participants members list part_...
roster participants members add part_... drec_...
roster participants members remove part_... drec_...
roster directory-records search "Ethan Wright" --type user
roster labels list --query finance
roster labels get lbl_...
roster labels create Finance --color "#3B82F6"
roster labels update lbl_... --name "Finance Review"
roster labels delete lbl_...
roster delegations list --status active --project-id proj_...
roster delegations get del_...
roster delegations create --scope participant --participant-id part_... --delegate-user-id drec_...
roster delegations update del_... --scope all_participants --delegate-user-id drec_...
roster delegations revoke del_...
roster resolve-requests list --project-id proj_... --resolution-status success
roster resolve-requests get rrq_...
CLI commandMCP toolRequired scope
roster resolveresolvemcp:resolve
roster toolstools/listany valid MCP auth
roster call <tool>selected toolselected tool scope
roster resolve-requests listlist_resolve_requestsmcp:resolve-requests:read
roster resolve-requests getget_resolve_requestmcp:resolve-requests:read
roster projects listlist_projectsmcp:projects:read
roster projects getget_projectmcp:projects:read
roster projects createcreate_projectmcp:projects:write
roster projects updateupdate_projectmcp:projects:write
roster projects deletedelete_projectmcp:projects:write
roster participants listlist_participantsmcp:participants:read
roster participants getget_participantmcp:participants:read
roster participants createcreate_participantmcp:participants:write
roster participants updateupdate_participantmcp:participants:write
roster participants deletedelete_participantmcp:participants:write
roster participants members listlist_participant_membersmcp:participants:read
roster participants members addadd_participant_membermcp:participants:write
roster participants members removeremove_participant_membermcp:participants:write
roster directory-records searchsearch_directory_recordsmcp:participants:read
roster labels listlist_labelsmcp:labels:read
roster labels getget_labelmcp:labels:read
roster labels createcreate_labelmcp:labels:write
roster labels updateupdate_labelmcp:labels:write
roster labels deletedelete_labelmcp:labels:write
roster delegations listlist_delegationsmcp:delegations:read
roster delegations getget_delegationmcp:delegations:read
roster delegations createcreate_delegationmcp:delegations:write
roster delegations updateupdate_delegationmcp:delegations:write
roster delegations revokerevoke_delegationmcp:delegations:write

roster resolve renders the nested MCP result.answer, selected participants, users, and caveats in human mode. Add --explain to include extra lookup details, including the labels, participants, and users considered during resolution. --explain is a CLI rendering option only; it is not sent to the MCP resolve tool.

Human output is the default and renders common Roster resources as concise terminal summaries. Add --json for automation:

{
"ok": true,
"command": "projects list",
"tool": "list_projects",
"mcp_url": "https://roster.example.com/mcp",
"request": {
"limit": 10
},
"structured_content": {
"projects": []
}
}

Errors use the same snake_case envelope:

{
"ok": false,
"command": "projects list",
"error": {
"error_code": "missing_auth",
"message": "No OAuth profile is available. Run roster login or pass --api-key/ROSTER_API_KEY."
}
}

MCP JSON-RPC errors use mcp_<code> error codes, for example mcp_32001 for a request timeout. HTTP transport errors keep http_<status> codes and include status only for real HTTP status values.

Commander parse errors, such as unknown options or invalid enum choices, are also wrapped when --json is set:

{
"ok": false,
"command": "--json --bad",
"error": {
"error_code": "commander_unknown_option",
"message": "unknown option '--bad'"
}
}

Mutation metadata values are sent as strings because the MCP create/update participant schemas store metadata entries as key=value text. Metadata filters on list commands still support typed values and operators.