Skip to main content

MCP Scopes and Permissions

CrossTrade MCP defines two OAuth scopes: mcp:read and mcp:trade. This page is the canonical reference for which tools require which scope. For a trader-friendly walkthrough, see Use mcp:read vs mcp:trade.

Scope hierarchy

mcp:trade is a superset of mcp:read. A mcp:trade token can call every tool a mcp:read token can call, plus the write tools.

ScopeCapabilities
mcp:readInspection only
mcp:tradeInspection + write

The OAuth scope is enforced at the transport. A mcp:read token cannot call a mcp:trade tool; the server returns 403 insufficient_scope.

Per-tool permission matrix

Discovery and capability

ToolScope
GetMcpCapabilitiesmcp:read
McpSelfTestmcp:read

Account and connection

ToolScope
ListAccountsmcp:read
GetAccountmcp:read
GetAccountSummarymcp:read
GetWatermarksmcp:read
GetConnectionsmcp:read
Connect, Disconnect, EnsureReplayConnectionmcp:trade

Positions

ToolScope
ListPositions, GetAllPositions, GetPositionmcp:read
ClosePosition, Flatten, FlattenEverything, Reverse, ReversePositionmcp:trade

Orders and executions

ToolScope
ListOrders, GetAllOrders, GetOrder, GetOrderStatus, ListExecutions, GetExecution, GetExecutionsByOrderIdmcp:read
PlaceOrder, Change, CancelReplace, Cancel, CancelOrders, CancelAllOrders, CancelAndBracket, FlatPlacemcp:trade

Market data

ToolScope
GetQuote, GetBars, MarketInfo, GetVolumeProfile, GetOrderFlow, GetIndicatorValuemcp:read

Journal and diagnostics

ToolScope
GetJournalTrades, GetSignalHistory, GetActivityLogmcp:read

NinjaScript

ToolScope
GetNinjaScriptHelp, SearchNinjaScriptSymbols, LookupNinjaScriptSymbol, ListNinjaScriptFiles, ReadNinjaScriptFile, ListCompiledSnippetsmcp:read
CompileNinjaScript, WriteNinjaScriptFile, DeleteCompiledSnippetmcp:trade

Backtesting

ToolScope
GetBacktestResult, GetCompileResult, GetMcpJob, ListMcpJobsmcp:read
RunStrategyBacktest, RunBacktest, CancelMcpJobmcp:trade

Strategy lifecycle

ToolScope
ListAllStrategies, ListStrategies, GetStrategy, GetStrategyState, ListDeployedStrategies, GetDeployedStrategyStatemcp:read
DeployStrategy, StartStrategy, StopStrategy, CloseStrategy, EnableStrategy, DisableStrategymcp:trade

Charts, drawings, and workspaces

ToolScope
ListWorkspaces, ListDrawingsmcp:read
OpenChart, SaveWorkspace, LoadWorkspace, AddDrawing, RemoveDrawingmcp:trade

Alerts

ToolScope
ListAlertsmcp:read
EmitMcpAlert, CreateAlert, RemoveAlertmcp:trade

Configuration

ToolScope
UpdateConfigurationmcp:trade

How tools/list is filtered

When a client calls tools/list, CrossTrade only returns tools the token's scope can call. A mcp:read token sees a smaller inventory than a mcp:trade token.

This means the agent does not "know" about write tools when running on a read-only token, which removes a class of accidental write attempts.

How to upgrade scope

Scope upgrade is not supported in place. Revoke the existing token and reauthorize at the new scope. See Revoke AI Client Access.

Why two scopes only

CrossTrade kept the scope set small intentionally. Two scopes are easy to reason about. A larger set with per-tool scopes would let users construct narrower tokens, at the cost of significantly more configuration error. The combination of "binary scope" plus "confirmation gates in the prompt" gives finer-grained control without the configuration surface.