Mint an API key
In the dashboard, open Settings → Developers and create a key. Scopes are fine-grained per resource and action — start with the read bundle; add write scopes when you need them.
$ mag_sk_live_… # keep it secret~ 1 minute
// developer docs
The developer surface is small on purpose. A handful of concepts cover 90% of integrations — the rest is calling the same tool registry Otto uses, over REST or MCP, against a decision log you can already inspect. Start here, then go deep.
// quickstart
In the dashboard, open Settings → Developers and create a key. Scopes are fine-grained per resource and action — start with the read bundle; add write scopes when you need them.
$ mag_sk_live_… # keep it secret~ 1 minute
Every capability is a tool — the same registry Otto uses in-app. POST to /api/v1/tools/{tool} with your key; the OpenAPI document at /api/v1/openapi.json lists every tool and shape.
$ curl -X POST …/api/v1/tools/get_store_overview~ 2 minutes
Magistry ships a remote MCP server at /api/mcp. Add it as a custom connector in Claude, or via mcp-remote in Claude Desktop and Cursor — OAuth handles store and scope selection.
$ npx -y mcp-remote https://…/api/mcp~ 3 minutes
Write tools come in two tiers: auto_write applies immediately, propose_write returns an approval card you confirm in the dashboard. Auto-apply is opt-in, per key, in Settings → Developers.
$ …/api/v1/tools/propose_discount~ 30 seconds
// core concepts
The immutable, append-only spine of Magistry. Every action — catalog mutation, ad-budget shift, refund issued, ticket replied — lands as a row with its evidence chain, reversal op, and judge score. Read it like a ledger.
The static state-transition map that gates every catalog write. Every SKU lives in exactly one lifecycle state; invalid moves become operator-review rows, not Shopify mutations. Inspect it before you write a custom executor.
Every action moves through three roles. Planner drafts the move. Judge scores it 0.0–1.0 against the evidence chain. Executor applies it — only if the judge score clears the threshold for that action type.
Tier A (verified cost), Tier B (inferred margin), Tier C (orphan). The tier on a SKU decides what the agent is allowed to do — price changes are A-only; copy edits open up at B; archive needs operator confirm at C.
The full move set the decision_engine can emit. KEEP, SCALE_WINNER, OPTIMIZE_LOSER, DISCOUNT_TEST, DRAFT, VAULT, REVIVE_SEASONAL, FLAG_ORPHAN — each one tied to a trigger, a set of valid from-states, and a pre-stored reversal op.
Kill switch (operator-owned), per-action rate limits, the tier-A discount gate, monthly LLM budget cap, advisory locks, credits metering. The primitives every agent inherits — and the cap you can tune.
The orchestrator above every agent. Signals in, one context bundle, one decision pass, proposals out — with a weekly strategist for durable initiatives and a reflection loop that turns verified outcomes into lessons.
Autonomy is earned per lever. The verdict engine scores every applied action win/loss on a full window; sustained wins promote a lever one tier, a losing streak demotes it immediately. Irreversible moves are never auto-approved.
One tool registry behind Otto, the REST API, and the MCP server. Scoped keys, OAuth 2.1 for MCP clients, and two write tiers — auto_write and propose_write with approval cards in the dashboard.
// snippet
# Read the store's recent decisions — same tools Otto uses
curl -X POST https://app.magistry.io/api/v1/tools/get_recent_decisions \
-H "Authorization: Bearer mag_sk_live_…" \
-H "Content-Type: application/json" \
-d '{ "days": 7 }'
# Every tool + shape is in the OpenAPI document:
# GET https://app.magistry.io/api/v1/openapi.json
# Write tools are tagged: auto_write applies, propose_write
# returns an approval card you confirm in the dashboard.// versioning
User-facing releases, sourced from the same release pipeline that ships the product — features, fixes, and improvements without internal noise.
The generated spec for /api/v1 — every tool, its input shape, and its read/write tier. Diff it to see exactly what changed between visits.
Live status of the API, dashboard, worker, and agent surfaces — plus incident history when something does go wrong.
// developer docs
The REST API and MCP server expose the same tool registry Otto uses in production. Same auth, same rate limits, same audit plane — no shadow surface.
Versioned API · Approval-gated writes · No silent breaking changes
We use cookies to run this site, to see which pages help, and to measure which ads bring people here. You choose per category; everything except the strictly necessary is off until you say otherwise. Cookie policy · Privacy