Skip to content

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 <your-roster-public-url>/mcp --name prod
roster login <your-roster-public-url>/mcp --scope-preset read --scope mcp:custom:read
roster login <your-roster-public-url>/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, manage, or admin. 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 mcp:status:read
readresolve plus mcp:labels:read mcp:delegations:read
manageall non-admin Roster MCP read and write scopes
adminmanage plus MCP scopes for team members, AI agents, service accounts, API keys, audit events, model runs, provider connectors, and platform settings
Terminal window
roster tools
roster status
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 test 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_...
roster team-members list --query ada
roster team-members get usr_...
roster team-members create --name "Ada Admin" --email ada@example.com --role admin --password-stdin
roster team-members update usr_... --role project_owner --email-verified
roster team-members disable usr_...
roster team-members enable usr_...
roster team-members delete usr_...
roster ai-agents list --query resolver
roster ai-agents get idn_...
roster ai-agents create "Resolver Agent" --role member --email resolver@example.com
roster ai-agents update idn_... --display-name "Resolver Agent v2"
roster ai-agents disable idn_...
roster ai-agents enable idn_...
roster ai-agents delete idn_...
roster service-accounts list --query sync
roster service-accounts get idn_...
roster service-accounts create "Directory Sync" --role admin
roster service-accounts update idn_... --email sync@example.com
roster service-accounts disable idn_...
roster service-accounts enable idn_...
roster service-accounts delete idn_...
roster api-keys list
roster api-keys get atok_...
roster api-keys create "Automation" --user-id idn_... --scope mcp:projects:read mcp:participants:read
roster api-keys revoke atok_...
roster audit-events list --actor-type user --event-type platform_settings --page-size 50
roster audit-events get aud_...
roster model-runs list
roster model-runs get mrun_...
roster provider-connectors list
roster provider-connectors get pcn_...
roster provider-connectors create --input-file connector.json
roster provider-connectors update pcn_... --input-stdin
roster provider-connectors delete pcn_...
roster platform-settings get
roster platform-settings update --input-file platform-settings.json

Team members, AI agents, service accounts, API keys, provider connectors, and platform settings are admin-only. Audit events and model runs are read-only and also depend on the active product license features. Provider connector create/update payloads use the REST connector JSON shape. Platform settings updates use the REST wrapper shape: { "settings": ... }. Team member passwords must be read from --password-stdin or --password-env <env>; there is no --password flag.

CLI commandMCP toolRequired scope
roster statusget_statusmcp:status:read
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 team-members listlist_team_membersmcp:team-members:read
roster team-members getget_team_membermcp:team-members:read
roster team-members createcreate_team_membermcp:team-members:write
roster team-members updateupdate_team_membermcp:team-members:write
roster team-members deletedelete_team_membermcp:team-members:write
roster team-members enableenable_team_membermcp:team-members:write
roster team-members disabledisable_team_membermcp:team-members:write
roster ai-agents listlist_ai_agentsmcp:ai-agents:read
roster ai-agents getget_ai_agentmcp:ai-agents:read
roster ai-agents createcreate_ai_agentmcp:ai-agents:write
roster ai-agents updateupdate_ai_agentmcp:ai-agents:write
roster ai-agents deletedelete_ai_agentmcp:ai-agents:write
roster ai-agents enableenable_ai_agentmcp:ai-agents:write
roster ai-agents disabledisable_ai_agentmcp:ai-agents:write
roster service-accounts listlist_service_accountsmcp:service-accounts:read
roster service-accounts getget_service_accountmcp:service-accounts:read
roster service-accounts createcreate_service_accountmcp:service-accounts:write
roster service-accounts updateupdate_service_accountmcp:service-accounts:write
roster service-accounts deletedelete_service_accountmcp:service-accounts:write
roster service-accounts enableenable_service_accountmcp:service-accounts:write
roster service-accounts disabledisable_service_accountmcp:service-accounts:write
roster api-keys listlist_api_keysmcp:api-keys:read
roster api-keys getget_api_keymcp:api-keys:read
roster api-keys createcreate_api_keymcp:api-keys:write
roster api-keys revokerevoke_api_keymcp:api-keys:write
roster audit-events listlist_audit_eventsmcp:audit-events:read
roster audit-events getget_audit_eventmcp:audit-events:read
roster model-runs listlist_model_runsmcp:model-runs:read
roster model-runs getget_model_runmcp:model-runs:read
roster provider-connectors listlist_provider_connectorsmcp:provider-connectors:read
roster provider-connectors getget_provider_connectormcp:provider-connectors:read
roster provider-connectors createcreate_provider_connectormcp:provider-connectors:write
roster provider-connectors updateupdate_provider_connectormcp:provider-connectors:write
roster provider-connectors deletedelete_provider_connectormcp:provider-connectors:write
roster platform-settings getget_platform_settingsmcp:platform-settings:read
roster platform-settings updateupdate_platform_settingsmcp:platform-settings: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": "<your-roster-public-url>/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.