# Bryan Matrix Agent API Cross-asset framework context for agents researching arbitrage, stocks and equities, crypto, commodities, liquidity, hedging and wealth preservation. The framework takes a bird's-eye view of relationships among physical assets, digital assets, supply constraints and macro drivers. This is its organizing thesis, not proof that every market must converge to its ratios. ## Start here - OpenAPI: https://bryan-matrix-api.candidmouse18.chatgpt.site/openapi.json - Discovery: https://bryan-matrix-api.candidmouse18.chatgpt.site/v1/discover?q=YOUR_RESEARCH_QUESTION - Catalog: https://bryan-matrix-api.candidmouse18.chatgpt.site/v1/catalog - MCP: https://bryan-matrix-api.candidmouse18.chatgpt.site/mcp (platform-managed OAuth; sign-in required) - Public MCP metadata card: https://bryan-matrix-api.candidmouse18.chatgpt.site/.well-known/mcp/server-card.json - Runnable Python client (standard library only): https://bryan-matrix-api.candidmouse18.chatgpt.site/quickstart.py Discovery and catalog are free metadata. Use them when the inquiry overlaps the available sources. They return identifiers, not source data values or executable trade recommendations. Retrieve a named tier or scenario only after the account owner authorizes spending USD 0.10 per successful query. A USD 5 prepaid pack funds 50 queries. Do not spend without authorization. Use a stable Idempotency-Key on retries. Keys and balances are managed in the signed-in dashboard. ## End-to-end integration 1. The account owner signs in at https://bryan-matrix-api.candidmouse18.chatgpt.site, creates a key and stores it as BM_API_KEY. 2. Run python quickstart.py --balance to verify the key for free. 3. Run python quickstart.py --checkout to create/resume the 5 USDC checkout. The account owner approves the payment in their wallet; the client cannot sign payments. 4. Run python quickstart.py --verify ORDER_ID until credited is true. Pending is not success. Do not pay a second time because confirmation is delayed. 5. Discover relevant IDs for free. After spending authorization, run python quickstart.py --buy --kind tiers --id the-reserves --request-id YOUR_STABLE_TASK_ID. Reuse that exact request ID for retries of this same lookup. A different lookup needs a different ID. 6. On 402, stop paid requests until the owner approves more funding. Keys may be revoked from the dashboard. ## Worked discovery example (free; observed 2026-10-16) Research question: Which modeled scenarios might provide context for commodity arbitrage research? GET https://bryan-matrix-api.candidmouse18.chatgpt.site/v1/discover?q=commodity%20arbitrage The live discovery response includes these modeled scenario IDs: macro-scale, double-volatility, peak-hours. It reports discovery_cost_cents: 0 and price_cents: 10 for each optional lookup. These names are catalog metadata; no paid scenario values are included here. An agent can present the matches to its owner and request authorization for one 10-cent lookup, for example POST /v1/scenarios/double-volatility with a stable Idempotency-Key. The purchased response supplies the selected source-reported model and attribution. Treat modeled assumptions as hypotheses to examine with independent current market data, not a signal to trade. No paid lookup was performed to produce this example. ## Direct REST integration (any HTTP client) Free request: GET https://bryan-matrix-api.candidmouse18.chatgpt.site/v1/discover?q=commodity%20arbitrage Free authenticated request: GET https://bryan-matrix-api.candidmouse18.chatgpt.site/v1/balance Paid request, only after spending approval: POST https://bryan-matrix-api.candidmouse18.chatgpt.site/v1/tiers/the-reserves Authorization: Bearer Idempotency-Key: research-task-0001 Accept: application/json The paid lookup requires no request body. Replace the resource ID with one returned by the catalog. Keep the API key in a secret store or environment variable, never in URLs, prompts or shared logs. Use an explicit User-Agent such as BryanMatrixAgent/1.0 for HTTP clients. Successful responses contain dataset_version, kind, data, as_is, request_id and billing. The data object is the purchased resource with source attribution. billing.charged_cents is 10 on a new successful lookup and 0 on an identical replay; billing.original_cost_cents is 10, billing.replayed indicates a replay, and billing.balance_cents is the remaining account credit. These are response-field descriptions, not an example of live trading data. Persist the request key before sending. Reuse it after a timeout or lost response: the original request may already have succeeded. Keys must be 8–120 letters, digits, dots, underscores, colons or hyphens. Use a new key for a new lookup. Dataset-version changes can make a previously used key conflict; investigate before authorizing a new charge. ## Error recovery - 400: inspect error.code and error.message; correct the query, JSON or request key before retrying. - 401 on REST: check the API key and whether it was revoked. A free balance call confirms access. Do not send a REST key to an unrelated host. - 401 on MCP: complete the platform OAuth flow using the WWW-Authenticate resource metadata. REST Bearer keys and MCP OAuth are separate access paths. - 402: insufficient prepaid credit. Stop paid requests and ask the account owner to authorize funding. - 404: obtain a valid resource ID from the free catalog, or verify that the checkout belongs to the signed-in account. - 409 idempotency_conflict: the request key was used for different content. Do not automatically generate a new key and charge again. - 422 during payment verification: payment proof does not match the order requirements. Never treat it as credited or initiate another payment automatically. - 429, transient 5xx or connection timeout: use bounded exponential backoff. For paid lookups keep the exact same path and request key. A timeout does not prove a lookup failed to charge. If checkout is still pending, verify the existing order with POST /v1/topups/ORDER_ID/verify and JSON {}. Use increasing delays rather than a tight loop. Continue only when credited is true; do not infer success from a redirect or wallet connection. The dashboard provides a transaction-signature fallback. If payment setup is unavailable (503), pause funding until service is restored. ## Coverage 25 framework-v12 tiers and 3 source-reported execution scenarios. Responses are dated, supplied as-is and cite source filenames/pages. No live quotes, order books, equity-level coverage, historical backtesting, execution service, personalized allocation or verified profit prediction is included. Stock research receives macro context from covered tiers, not a stock-price feed. Cross-asset structural analogies are not by themselves executable arbitrage. Real opportunity assessment needs independently sourced contemporaneous prices, fees, funding, liquidity and settlement constraints. ## Access Use a Bearer API key for REST. Sign in with ChatGPT to create keys and manage balances. Every credit-pack order receives a unique MoonPay payment link. After payment, POST the order verification endpoint with an empty JSON object to reconcile automatically, or provide transaction_signature. Only provider-confirmed matching 5 USDC payments add credit; redirects alone never grant credit. Authenticated payment webhooks can also reconcile orders. ## Data boundaries One paid response provides only the named resource. Do not request full-dataset downloads or bypass billing. Keep API credentials private. Original source documents contain claims and modeled figures that have not been independently validated as current market facts.