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.
Point the client at the resource URL
Use
https://breakoutscanner.com/mcp. Do not configure the Supabase issuer as the MCP server URL.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, andprofile.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.
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.
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.
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.
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-scannerIf the project’s client-registration strategy needs an explicit choice, retry login with DCR:
codex mcp login breakout-scanner \
--oauth-client-registration dcr \
--scopes email,openid,profileCodex also supports a checked-in config shape. Keep approval settings deliberate and local to the client:
[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.
- Open Customize → Connectors → Add custom connector.
- Enter the resource URL, connect, and complete the Breakout Scanner consent screen.
- 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.
claude mcp add-json -s local breakout-scanner-sandbox \
'{"type":"http","url":"https://breakoutscanner.com/mcp/sandbox"}'
claude mcp get breakout-scanner-sandboxAny 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.
curl -fsS \
https://breakoutscanner.com/.well-known/oauth-protected-resource/mcpSpeak 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.
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, profileconst 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 negotiationShow a token-safe HTTP initialize check
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_TOKENRead 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 schemaWrite tools
5 proposal toolsWrite 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.
Each client revokes separately
Remove the local Codex connection
codex mcp logout breakout-scanner
codex mcp remove breakout-scannerCodex 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