Connect an agent to Breakout Scanner

Use Claude, Codex, or another compatible MCP client with your Breakout Scanner workspace. Each client connects through OAuth and receives its own grants, approval mode, and revocation.

Available on Pro. Remote MCP access requires OAuth 2.1 + PKCE and user-approved grants.

Need access? Contact support

Connect once per client

The endpoint is one address, but authorization is per client. Repeat this flow for every assistant or application you want to use at the same time.

  1. Point the client at the resource URL

    Use https://breakoutscanner.com/mcp. Do not configure the Supabase issuer as the MCP server URL.

  2. Let the client discover OAuth and open the browser

    The client follows protected-resource metadata, uses Authorization Code + PKCE, and requests the standard identity scopes email, openid, and profile.

  3. Review the Breakout Scanner consent screen

    Choose the grant groups this connection needs. New connections use connected-client approval by default; identity scopes prove the user, while the application grant record is the fine-grained authorization decision.

  4. Keep the connection visible in Agent connections

    Every call rechecks the live account, entitlement, token claims, connection status, current generation, and grants. A connection can be changed or revoked without replacing another client.

Identity, grants, and the smallest useful access

OAuth is the front door, not a blanket workspace permission. The consent record stores application grants, and unknown permission strings never become access by accident.

Consent grant groups
Breakout Scanner MCP consent grant groups
Consent groupDefaultAllows
Market researchOnScreen markets, inspect signals, compare companies, and run backtests. Grants: market.read, strategy.read, screen.read, backtest.read.
Read your workspaceOnRead owner-scoped account resources, saved screeners, portfolio, watchlists, briefings, and stored knowledge through the registered read tools.
Allow workspace changesOffPermit bounded write proposals for the registered screener, watchlist, portfolio, alert, and briefing tools.
Allow deletes and closuresOffThe separate workspace.destructive grant, in addition to the relevant write grant, is required for deletes and closing tracked positions.

A connection with no active grants can authenticate but cannot call a tool. Umbrella grants such as workspace.read and workspace.write are explicit choices, not hidden defaults; a grant that is not mapped to a registered capability does not create a tool. Every request also requires an eligible Pro account and the relevant feature to be enabled.

How connected-agent writes work

Reads return owner-scoped, bounded results. Connected clients approve writes by default, while Breakout Scanner still enforces grants and records every mutation through one immutable journal.

MCP write approval modes
MCP write approval modes
ModeWhat happensUse it when
Approve in connected MCP client DefaultThe connection proceeds after the client supplies its approval decision. The same server grant checks, immutable bundle hash, one-time claim, domain journal, terminal result, and idempotent replay always apply.Normal Claude, Codex, and compatible-client use.
Legacy Breakout Scanner reviewExisting integrations may retain the web-inbox mode through authenticated, agent-only APIs. The human Connections page does not expose proposal, role, handoff, or webhook detail.Compatibility for an existing integration while it moves to connected-client approval.

Choose the client-side approval behavior that suits your workflow. Breakout Scanner does not rely on that setting for authorization: the connection’s grants, destructive-operation grant, owner scope, usage limits, and immutable journal remain enforced on every call. The legacy proposal and integration detail APIs remain agent-only; they are not rendered as human Connections-page controls.

Claude, Codex, and other clients

There is no Breakout Scanner-specific desktop extension hidden behind these examples. Use the remote MCP connector in a client that supports OAuth and Streamable HTTP.

Codex CLI

Add the resource URL, then let Codex open browser OAuth. Credentials stay in Codex’s configured credential store; nothing below is a secret.

shellAdd, sign in, and inspect
codex mcp add breakout-scanner \
  --url https://breakoutscanner.com/mcp \
  --oauth-resource https://breakoutscanner.com/mcp
codex mcp login breakout-scanner --scopes email,openid,profile
codex mcp list
codex mcp get breakout-scanner

If the project’s client-registration strategy needs an explicit choice, retry login with DCR:

shellOptional registration fallback
codex mcp login breakout-scanner \
  --oauth-client-registration dcr \
  --scopes email,openid,profile

Codex also supports a checked-in config shape. Keep approval settings deliberate and local to the client:

tomlCodex config.toml
[mcp_servers.breakout-scanner]
url = "https://breakoutscanner.com/mcp"
default_tools_approval_mode = "prompt"

For the current command and config reference, see the Codex MCP guide.

Claude remote connector

In Claude, add a custom remote connector and enter https://breakoutscanner.com/mcp. Claude’s remote connector uses Anthropic’s cloud infrastructure, so the endpoint must be reachable over public HTTPS; a laptop-local or VPN-only address will not work.

  1. Open Customize → Connectors → Add custom connector.
  2. Enter the resource URL, connect, and complete the Breakout Scanner consent screen.
  3. Start with the two read groups. Add write or destructive groups only for a deliberate, understood test.

Note: do not put this remote URL in claude_desktop_config.json; that file is for local stdio extensions, not Claude’s account-managed remote connectors. See Anthropic’s remote connector guidance for client-side details.

For an anonymous protocol test in Claude Code, add the sandbox as raw HTTP JSON. This avoids OAuth discovery intended for the authenticated endpoint; sandbox data is fixed and stale, and writes are simulated.

shellClaude Code anonymous sandbox
claude mcp add-json -s local breakout-scanner-sandbox \
  '{"type":"http","url":"https://breakoutscanner.com/mcp/sandbox"}'
claude mcp get breakout-scanner-sandbox

Any other compatible MCP client

Configure the same resource URL and let the client follow protected-resource metadata and OAuth Authorization Code + PKCE. Request only email, openid, and profile; Breakout Scanner’s consent groups, not OAuth scope strings, decide product access.

shellInspect protected-resource discovery
curl -fsS \
  https://breakoutscanner.com/.well-known/oauth-protected-resource/mcp

Speak Streamable HTTP directly

The repository includes TypeScript SDK and CLI preview layers over this same authenticated MCP contract. They are not published to npm or generally supported yet, so the examples below show the wire contract directly and remain useful for any compatible client.

typescriptDiscover the resource and OAuth server
const endpoint = new URL("https://breakoutscanner.com/mcp");
const metadataUrl = "https://breakoutscanner.com/.well-known/oauth-protected-resource/mcp";

// OAuth Authorization Code + PKCE belongs to your MCP client.
// Do not put a Supabase token or client secret in source control.
const resourceMetadata = await fetch(metadataUrl).then(async (response) => {
  if (!response.ok) throw new Error("Discovery failed: " + response.status);
  return response.json() as Promise<{
    resource: string;
    authorization_servers?: string[];
    scopes_supported?: string[];
  }>;
});

console.log(resourceMetadata.resource === endpoint.href);
console.log(resourceMetadata.scopes_supported); // email, openid, profile
typescriptCall a read tool after OAuth
const response = await fetch("https://breakoutscanner.com/mcp", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + accessToken, // obtained through OAuth + PKCE
    "Content-Type": "application/json",
    Accept: "application/json, text/event-stream",
    "MCP-Protocol-Version": "2025-06-18",
  },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "tools/call",
    params: {
      name: "breakout_scanner_market_snapshot",
      arguments: { symbols: ["AAPL"], market: "NYSE", limit: 1 },
    },
  }),
});

if (!response.ok) throw new Error("MCP request failed: " + response.status);
const result = await response.text(); // JSON or an SSE stream, per client negotiation
Show a token-safe HTTP initialize check
shellKeep the bearer token out of history and logs
read -r -s MCP_ACCESS_TOKEN
curl -fsS -X POST https://breakoutscanner.com/mcp \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H "Authorization: Bearer ${MCP_ACCESS_TOKEN}" \
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"release-check","version":"1"}}}'
unset MCP_ACCESS_TOKEN

Read responses are owner-scoped and include evidence, an asOf value when applicable, and limitations. A write call returns an approval or terminal journal result—not a generic direct-mutation success.

Registered capabilities

Tool names are stable transport identifiers generated from the canonical capability registry. The capability name and version remain in the tool description and metadata.

Read tools

10 tools · full advertised input schema
Read MCP capabilities
Read MCP capabilities
ToolWhat it doesRequired grant
breakout_scanner_entity_resolveResolve a symbol, company, or account reference.market.read
breakout_scanner_strategy_compileCompile bounded natural-language strategy input.strategy.read
breakout_scanner_screen_evaluateEvaluate a validated strategy against the permitted live universe.screen.read
breakout_scanner_signals_queryQuery stored market signals over a bounded date range.market.read
breakout_scanner_market_snapshotRead an as-of market snapshot for resolved symbols.market.read
breakout_scanner_backtest_runRun the deterministic historical evaluator.backtest.read
breakout_scanner_candidates_rankRank candidates from an immutable candidate artifact.market.read
breakout_scanner_company_compareCompare a bounded set of resolved companies.market.read
breakout_scanner_account_readRead one selected owner-scoped account resource.account.read
breakout_scanner_knowledge_retrieveRetrieve cited excerpts from stored knowledge.knowledge.read

Write tools

5 proposal tools
Write proposal MCP capabilities
Write proposal MCP capabilities
ToolWhat it doesRequired grant
breakout_scanner_screener_savePropose saving a validated strategy as a named screener.screeners.write
breakout_scanner_watchlist_changePropose one bounded watchlist change.watchlists.write
breakout_scanner_portfolio_changePropose a bounded tracked-position lifecycle change.portfolio.write
breakout_scanner_alert_configurePropose enabling or disabling an email alert.alerts.write
breakout_scanner_briefing_schedulePropose creating or changing one briefing.briefings.write

Write tools require the matching *.write grant. Deletes and closures additionally require workspace.destructive.

Current execution coverage: all five write families map to the approval journal when their input is safely representable. The ten read adapters accept every input field advertised by their bounded schemas, including multi-symbol/projected snapshots, exact signal ranges and ordering, strategy refinement, artifact-backed screens and backtests, criteria ranking, company/account resolution, account resources, and scoped Knowledge retrieval. Inline or artifact-backed inputs are supported for screen.evaluate and backtest.run; candidates.rank and company.compare accept their bounded inline or verified-artifact forms. A valid request can still return structured unavailability when the permitted store does not contain the requested history or primitive; Breakout Scanner does not silently replace it with current data or log it as a product gap.

Discovery is descriptive, not an entitlement or an execution guarantee. Account, feature, connection, grant, runtime, and input-shape checks still apply to every call. In first-party Agent chat, relative breakout dates resolve only to a provable, non-stale prior stored trading session; explicit calendar dates remain exact, even when no session is stored.

Developer and integration surface

Build against the same server-owned contract that powers the browser, first-party Agent, and MCP tools. Authenticated MCP is live for eligible Pro accounts; the repository SDK and CLI remain unpublished previews.

Canonical contract

Read the versioned language-neutral capability contract at /api/v1/capabilities; inspect one capability at /api/v1/capabilities/{name}. /openapi.json is generated discovery for the same registry.

TypeScript preview

The repository packages under packages/sdk and packages/cli are thin authenticated MCP clients with structured errors and discover, list, and call commands. They do not duplicate business logic or access the database, and are not npm-published or generally supported.

Signed integrations

Authenticated agent-only integration APIs use finite roles (observer, builder, operator, owner_delegate), owner-scoped handoffs, audit links, and timestamped HMAC-signed webhook events. Secrets are encrypted, delivery is bounded and retry-safe, and outbound destinations pass SSRF and DNS checks. These details are not rendered in the human Connections page.

Safe test path

The anonymous MCP sandbox is a separate stateless protocol-testing surface with fixed stale fixtures. It has no account, live data, model budget, external network, persistence, or workspace mutation; write calls return simulated proposals only. Use it for protocol tests, then connect an eligible Pro account for authenticated workspace behavior.

Public docs MCP

Connect any compatible client to the anonymous read-only public documentation MCP. Its three bounded tools search, list, and read six server-owned Markdown documents; the endpoint has no account, live-data, model, network, persistence, or write access.

Public docs search

Agents can query the bounded NLWeb 0.55 /ask endpoint with GET or POST. It returns Schema.org-linked public product and documentation matches as JSON or SSE without using an AI model, reading an account, or changing a workspace; summarize and generate modes are intentionally unavailable.

Change or revoke one connection

Each client has its own status, grants, approval mode, token generation, and server audit trail. The human Connections page manages access and disconnects; disconnecting one does not revoke the others.

Open Agent connections to see active clients, copy setup instructions, or disconnect an installation. Revocation marks that connection revoked and rejects its old authorization generation on the next request; it does not silently reactivate when the client retries.

Open Agent connections

Each client revokes separately

Remove the local Codex connection

shellRemove local credentials
codex mcp logout breakout-scanner
codex mcp remove breakout-scanner

Codex logout removes or deauthenticates the local client credential; Claude’s connector controls its provider-side grant. Both are separate from the Breakout Scanner owner action, so revoke in the client and here when you want a complete disconnect.

A market workspace, not a trading API

MCP does not expose orders, brokers, execution, shorting, financial advice, or automatic trade tools. Portfolio capabilities only describe and maintain tracked positions. Paper or simulated features, where separately enabled in the first-party product, are not execution. Every workspace write remains bounded, owner-scoped, and journaled.

Need connection help? The support team can help with OAuth, client registration, grants, or revocation.

Contact support