Pull your brief by API.
Every paid subscription exposes two interfaces — an MCP server for AI agents and a small REST endpoint for ops tools and dashboards. Both require an active subscription on your account and authenticate against the same studio session cookie used by the web app.
One sign-in. One cookie.
local.intel uses the studio's universal sign-in surface at signin.0p.studio. The cookie it issues is scoped to .0p.studio, so any agent or tool that holds a valid session can call the endpoints below. The bearer-token API for agents is on the roadmap; until it ships, agents should authenticate as a human owner of the subscription they're reading.
POST https://local-intel.0p.studio/api/mcp
Standard Model Context Protocol over HTTP. Speaks the JSON-RPC 2.0 envelope. A GET on the same URL returns a discovery document listing the tools.
Tools
list_subscriptionsList local.intel subscriptions the caller owns. Returns subscription id, tier, status, locked subject, and last/next run timestamps.
get_latest_briefargs: subscription_id (uuid)Return the latest one-page weekly brief for a subscription. Includes praise/complaint themes, rival gaps, velocity deltas, and three actions to take this week.
get_runargs: run_id (uuid)Fetch a specific past run by id. Returns themes, velocity, actions, and the rendered brief markdown.
Example
curl https://local-intel.0p.studio/api/mcp \
--cookie "__Secure-0p.session-token=…" \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_latest_brief",
"arguments": { "subscription_id": "<your-sub-uuid>" }
}
}'GET /api/brief/<subscription_id>
A small read-only endpoint for ops dashboards and Slack notifiers. Same cookie auth as the MCP server. Returns the latest run's structured payload plus the rendered markdown.
curl https://local-intel.0p.studio/api/brief/<subscription_id> \
--cookie "__Secure-0p.session-token=…"
# 200
{
"subscription": {
"id": "…",
"tier": "single",
"status": "active",
"subject": { "name": "…", "category": "…", "city": "…" },
"next_run_at": "…",
"last_run_at": "…"
},
"latest": {
"id": "…",
"ran_at": "…",
"themes": { "subject": {…}, "competitors": [...] },
"velocity": { "subject": {…}, "movers": [...] },
"actions": ["…", "…", "…"],
"brief_md": "# …"
}
}No quotas to count.
You don't pay per call. Reads are free for the active subscription that owns them. Briefs regenerate weekly on the studio cron; the API surface only reads what's already been written.
Coming next.
- Bearer-token auth for agents (no shared cookie required).
- A streaming MCP transport for long-running synthesis.
- Mutating tools to pin/exclude competitors from the agent side.
gap.mapcompanion endpoint for one-time market-saturation reports.