API reference
379 endpoints, read live from the running server on every page load — this page cannot go stale. Base URL https://mcp.optimiseres.com. Click any endpoint for a ready-to-run example; search with Ctrl+K.
Core OAuth endpoints, in detail
The six calls every connecting app makes. Everything else below is discoverable the same way.
GET/.well-known/oauth-authorization-server
RFC 8414 server metadata: every endpoint, scope and capability this server supports. The first thing any client fetches.
curl -s https://mcp.optimiseres.com/.well-known/oauth-authorization-server
{
"issuer": "https://mcp.optimiseres.com/auth",
"authorization_endpoint": "https://mcp.optimiseres.com/auth/authorize",
"token_endpoint": "https://mcp.optimiseres.com/auth/token",
"registration_endpoint": "https://mcp.optimiseres.com/auth/register",
"jwks_uri": "https://mcp.optimiseres.com/auth/.well-known/jwks.json",
"scopes_supported": ["mcp:tools", "mcp:read", "offline_access"],
"code_challenge_methods_supported": ["S256"],
"grant_types_supported": ["authorization_code", "refresh_token"]
}POST/auth/register
RFC 7591 dynamic client registration — an app registers itself on first connect, no admin needed. redirect_uris must be https, http on 127.0.0.1/localhost, or a custom app scheme. token_endpoint_auth_method: none, client_secret_post or client_secret_basic.
curl -s -X POST https://mcp.optimiseres.com/auth/register \
-H "Content-Type: application/json" \
-d '{
"client_name": "My MCP client",
"redirect_uris": ["http://127.0.0.1:33418/callback"],
"token_endpoint_auth_method": "none",
"grant_types": ["authorization_code", "refresh_token"]
}'{
"client_id": "cli_xxxxxxxxxxxxxxxx",
"client_name": "My MCP client",
"redirect_uris": ["http://127.0.0.1:33418/callback"],
"token_endpoint_auth_method": "none",
"grant_types": ["authorization_code", "refresh_token"]
}GET/POST/auth/authorize
The browser step. Opens sign-in + consent; on Approve, redirects back with a one-time code (60s, single use). PKCE S256 is mandatory — no code_challenge, no flow.
https://mcp.optimiseres.com/auth/authorize?response_type=code &client_id=cli_xxxxxxxxxxxxxxxx &redirect_uri=http://127.0.0.1:33418/callback &scope=mcp:tools%20mcp:read%20offline_access &state=RANDOM_STATE &code_challenge=BASE64URL_S256_OF_VERIFIER &code_challenge_method=S256 &resource=https://mcp.optimiseres.com/mcp
http://127.0.0.1:33418/callback?code=AUTH_CODE&state=RANDOM_STATE&iss=https%3A//mcp.optimiseres.com/auth
POST/auth/token
Two grants. authorization_code trades the code (+ PKCE verifier) for tokens; refresh_token rotates — the used refresh token dies and a new one comes back. Form-encoded body, not JSON.
curl -s -X POST https://mcp.optimiseres.com/auth/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d grant_type=authorization_code \ -d code=AUTH_CODE \ -d redirect_uri=http://127.0.0.1:33418/callback \ -d client_id=cli_xxxxxxxxxxxxxxxx \ -d code_verifier=YOUR_PKCE_VERIFIER
{
"access_token": "eyJhbGciOiJSUzI1NiIs...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "rt_xxxxxxxxxxxxxxxx",
"scope": "mcp:tools mcp:read offline_access"
}curl -s -X POST https://mcp.optimiseres.com/auth/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d grant_type=refresh_token \ -d refresh_token=rt_xxxxxxxxxxxxxxxx \ -d client_id=cli_xxxxxxxxxxxxxxxx
{ "error": "invalid_grant", "error_description": "Code expired or already used" }POST/mcp
The MCP endpoint itself (streamable HTTP, JSON-RPC 2.0). Send the Bearer token; your MCP library handles the initialize handshake for you. Also accepts X-Session-Token for CLI session tokens.
curl -s -X POST https://mcp.optimiseres.com/mcp \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIs..." \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": { "name": "get_clients", "arguments": {} }
}'HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer resource_metadata="https://mcp.optimiseres.com/.well-known/oauth-protected-resource"
GET/auth/.well-known/jwks.json
Public RS256 signing keys — verify any access token offline.
curl -s https://mcp.optimiseres.com/auth/.well-known/jwks.json
{ "keys": [ { "kty": "RSA", "use": "sig", "alg": "RS256", "kid": "...", "n": "...", "e": "AQAB" } ] }Every endpoint, live from the server
Discovery 8 · auth: none
Public — no authentication.
GET
/.well-known/jwks.json
curl -s https://mcp.optimiseres.com/.well-known/jwks.json
GET
/.well-known/oauth-authorization-server
curl -s https://mcp.optimiseres.com/.well-known/oauth-authorization-server
GET
/.well-known/oauth-protected-resource
curl -s https://mcp.optimiseres.com/.well-known/oauth-protected-resource
GET
/.well-known/oauth-protected-resource/mcp
curl -s https://mcp.optimiseres.com/.well-known/oauth-protected-resource/mcp
GET
/.well-known/openid-configuration
curl -s https://mcp.optimiseres.com/.well-known/openid-configuration
GET
/auth/.well-known/jwks.json
curl -s https://mcp.optimiseres.com/auth/.well-known/jwks.json
GET
/auth/.well-known/oauth-authorization-server
curl -s https://mcp.optimiseres.com/auth/.well-known/oauth-authorization-server
GET
/auth/.well-known/openid-configuration
curl -s https://mcp.optimiseres.com/auth/.well-known/openid-configuration
OAuth 2.1 8 · auth: varies
Public OAuth machinery; /auth/token authenticates with the grant itself.
BOTH
/auth/authorize
curl -s -X POST https://mcp.optimiseres.com/auth/authorize
POST
/auth/register
RFC 7591 - an app registers itself on first connect. No admin needed.
curl -s -X POST https://mcp.optimiseres.com/auth/register
GET
/auth/signin
curl -s https://mcp.optimiseres.com/auth/signin
POST
/auth/signin
curl -s -X POST https://mcp.optimiseres.com/auth/signin
POST
/auth/signin/totp
curl -s -X POST https://mcp.optimiseres.com/auth/signin/totp
GET
/auth/signout
curl -s https://mcp.optimiseres.com/auth/signout
POST
/auth/token
curl -s -X POST https://mcp.optimiseres.com/auth/token
GET
/auth/verify
Token check. Used by our own MCP process, and available for an nginx
curl -s https://mcp.optimiseres.com/auth/verify
User API 4 · auth: user session
Browser session cookie — sign in at /dashboard first.
GET
/auth/user/api/connections
curl -s https://mcp.optimiseres.com/auth/user/api/connections \ -H "Cookie: user_session=YOUR_SESSION_COOKIE"
GET
/auth/user/api/login-activity
curl -s https://mcp.optimiseres.com/auth/user/api/login-activity \ -H "Cookie: user_session=YOUR_SESSION_COOKIE"
POST
/auth/user/api/revoke-all-mine
curl -s -X POST https://mcp.optimiseres.com/auth/user/api/revoke-all-mine \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/auth/user/api/revoke-connection
curl -s -X POST https://mcp.optimiseres.com/auth/user/api/revoke-connection \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
Admin API 7 · auth: admin session
Admin session cookie — sign in at /admin/login first.
GET
/auth/admin/api/apps
curl -s https://mcp.optimiseres.com/auth/admin/api/apps \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/auth/admin/api/connections
curl -s https://mcp.optimiseres.com/auth/admin/api/connections \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/auth/admin/api/delete-app
curl -s -X POST https://mcp.optimiseres.com/auth/admin/api/delete-app \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/auth/admin/api/login-activity
curl -s https://mcp.optimiseres.com/auth/admin/api/login-activity \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/auth/admin/api/revoke-all
curl -s -X POST https://mcp.optimiseres.com/auth/admin/api/revoke-all \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/auth/admin/api/revoke-connection
curl -s -X POST https://mcp.optimiseres.com/auth/admin/api/revoke-connection \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/auth/admin/api/revoke-user
curl -s -X POST https://mcp.optimiseres.com/auth/admin/api/revoke-user \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
User pages 25 · auth: user session
Browser pages behind the user session cookie.
GET
/dashboard
curl -s https://mcp.optimiseres.com/dashboard \ -H "Cookie: user_session=YOUR_SESSION_COOKIE"
POST
/dashboard/apikey/reveal
Verify the one-time code and show the full API key in-page (never in the URL).
curl -s -X POST https://mcp.optimiseres.com/dashboard/apikey/reveal \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/apikey/send-code
Email the user a one-time code so they can reveal their legacy API key.
curl -s -X POST https://mcp.optimiseres.com/dashboard/apikey/send-code \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/change-password
curl -s -X POST https://mcp.optimiseres.com/dashboard/change-password \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
GET
/dashboard/connections
A user's own approved apps, with a disconnect button on each.
curl -s https://mcp.optimiseres.com/dashboard/connections \ -H "Cookie: user_session=YOUR_SESSION_COOKIE"
GET
/dashboard/download/setup.bat
curl -s https://mcp.optimiseres.com/dashboard/download/setup.bat \ -H "Cookie: user_session=YOUR_SESSION_COOKIE"
GET
/dashboard/download/setup.command
Same script as setup.sh, named so macOS Finder will run it on double
curl -s https://mcp.optimiseres.com/dashboard/download/setup.command \ -H "Cookie: user_session=YOUR_SESSION_COOKIE"
GET
/dashboard/download/setup.sh
curl -s https://mcp.optimiseres.com/dashboard/download/setup.sh \ -H "Cookie: user_session=YOUR_SESSION_COOKIE"
POST
/dashboard/login
curl -s -X POST https://mcp.optimiseres.com/dashboard/login \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/login/totp
curl -s -X POST https://mcp.optimiseres.com/dashboard/login/totp \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
GET
/dashboard/logout
curl -s https://mcp.optimiseres.com/dashboard/logout \ -H "Cookie: user_session=YOUR_SESSION_COOKIE"
POST
/dashboard/notify-prefs
curl -s -X POST https://mcp.optimiseres.com/dashboard/notify-prefs \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/push-log
curl -s -X POST https://mcp.optimiseres.com/dashboard/push-log \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/register
curl -s -X POST https://mcp.optimiseres.com/dashboard/register \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/request-no-logout
User asks (from the dashboard) that their session never auto-logs-out.
curl -s -X POST https://mcp.optimiseres.com/dashboard/request-no-logout \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/resend-code
curl -s -X POST https://mcp.optimiseres.com/dashboard/resend-code \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
GET
/dashboard/session
A user's own session & login settings, including no-logout request.
curl -s https://mcp.optimiseres.com/dashboard/session \ -H "Cookie: user_session=YOUR_SESSION_COOKIE"
GET
/dashboard/skills
curl -s https://mcp.optimiseres.com/dashboard/skills \ -H "Cookie: user_session=YOUR_SESSION_COOKIE"
POST
/dashboard/skills/submit
curl -s -X POST https://mcp.optimiseres.com/dashboard/skills/submit \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/support/followup
v39: the user continues the thread; the request goes back to open.
curl -s -X POST https://mcp.optimiseres.com/dashboard/support/followup \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/support/submit
curl -s -X POST https://mcp.optimiseres.com/dashboard/support/submit \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/totp/disable
curl -s -X POST https://mcp.optimiseres.com/dashboard/totp/disable \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/totp/enable
curl -s -X POST https://mcp.optimiseres.com/dashboard/totp/enable \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/totp/setup
v39 (U26): mint a secret; the user confirms it with a first code on /enable.
curl -s -X POST https://mcp.optimiseres.com/dashboard/totp/setup \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/dashboard/verify-otp
curl -s -X POST https://mcp.optimiseres.com/dashboard/verify-otp \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
Admin pages 111 · auth: admin session
Browser pages behind the admin session cookie.
GET
/admin/activity/export.xlsx
Download the last-7-days usage report as an Excel workbook.
curl -s https://mcp.optimiseres.com/admin/activity/export.xlsx \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/admin/api/accounts
Return available clients and marketplaces from Google Sheet.
curl -s https://mcp.optimiseres.com/admin/api/accounts \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/admin/api/badges
v39 (U20): live nav badges, polled every 30s by admin_base.html.
curl -s https://mcp.optimiseres.com/admin/api/badges \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/admin/api/stats
curl -s https://mcp.optimiseres.com/admin/api/stats \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/admin/api/users
curl -s https://mcp.optimiseres.com/admin/api/users \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/admin/approvals
v70: moved to the Team page in v50 (console_redirects sends people there; this is the fallback).
curl -s https://mcp.optimiseres.com/admin/approvals \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/approve
curl -s -X POST https://mcp.optimiseres.com/admin/approve \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/automation
curl -s https://mcp.optimiseres.com/admin/automation \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/admin/automation/acct
curl -s https://mcp.optimiseres.com/admin/automation/acct \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/automation/approve
curl -s -X POST https://mcp.optimiseres.com/admin/automation/approve \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/automation/lists
curl -s -X POST https://mcp.optimiseres.com/admin/automation/lists \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/automation/mode
curl -s -X POST https://mcp.optimiseres.com/admin/automation/mode \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/automation/reject
curl -s -X POST https://mcp.optimiseres.com/admin/automation/reject \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/automation/run
curl -s -X POST https://mcp.optimiseres.com/admin/automation/run \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/automation/schedule
curl -s -X POST https://mcp.optimiseres.com/admin/automation/schedule \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/automation/settings
curl -s -X POST https://mcp.optimiseres.com/admin/automation/settings \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/budget
curl -s https://mcp.optimiseres.com/admin/budget \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/admin/budget/audit
curl -s https://mcp.optimiseres.com/admin/budget/audit \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/budget/refresh
curl -s -X POST https://mcp.optimiseres.com/admin/budget/refresh \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/budget/sheet/delete
curl -s -X POST https://mcp.optimiseres.com/admin/budget/sheet/delete \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/budget/sheet/save
curl -s -X POST https://mcp.optimiseres.com/admin/budget/sheet/save \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/budget/watch/scan
curl -s -X POST https://mcp.optimiseres.com/admin/budget/watch/scan \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/budgets
curl -s https://mcp.optimiseres.com/admin/budgets \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/admin/budgets/{pid}
curl -s https://mcp.optimiseres.com/admin/budgets/{pid} \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/budgets/{pid}/apply-now
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/apply-now \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/budgets/{pid}/clear-cells
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/clear-cells \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/budgets/{pid}/enforce
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/enforce \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/budgets/{pid}/mode
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/mode \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/budgets/{pid}/notify
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/notify \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/budgets/{pid}/override
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/override \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/budgets/{pid}/override/cancel
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/override/cancel \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/budgets/{pid}/plan
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/plan \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/budgets/{pid}/schedule/add
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/schedule/add \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/budgets/{pid}/schedule/delete
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/schedule/delete \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/budgets/{pid}/schedule/save
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/schedule/save \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
GET
/admin/budgets/{pid}/schedule/{kind}/{target}
curl -s https://mcp.optimiseres.com/admin/budgets/{pid}/schedule/{kind}/{target} \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/budgets/{pid}/sheet
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/sheet \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/budgets/{pid}/update-now
curl -s -X POST https://mcp.optimiseres.com/admin/budgets/{pid}/update-now \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/bulk-action
curl -s -X POST https://mcp.optimiseres.com/admin/bulk-action \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/changesets/delete
curl -s -X POST https://mcp.optimiseres.com/admin/changesets/delete \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/changesets/sweep
curl -s -X POST https://mcp.optimiseres.com/admin/changesets/sweep \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/changesets/upload
curl -s -X POST https://mcp.optimiseres.com/admin/changesets/upload \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/connections
curl -s https://mcp.optimiseres.com/admin/connections \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/create-user
curl -s -X POST https://mcp.optimiseres.com/admin/create-user \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/delete-user
curl -s -X POST https://mcp.optimiseres.com/admin/delete-user \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/deny
curl -s -X POST https://mcp.optimiseres.com/admin/deny \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/login
curl -s https://mcp.optimiseres.com/admin/login \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/login
curl -s -X POST https://mcp.optimiseres.com/admin/login \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/logout
curl -s https://mcp.optimiseres.com/admin/logout \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/onboarding/refresh
curl -s -X POST https://mcp.optimiseres.com/admin/onboarding/refresh \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/opencode-keys
curl -s https://mcp.optimiseres.com/admin/opencode-keys \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/opencode-keys/activate
curl -s -X POST https://mcp.optimiseres.com/admin/opencode-keys/activate \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/opencode-keys/add
curl -s -X POST https://mcp.optimiseres.com/admin/opencode-keys/add \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/opencode-keys/delete
curl -s -X POST https://mcp.optimiseres.com/admin/opencode-keys/delete \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/permissions
curl -s -X POST https://mcp.optimiseres.com/admin/permissions \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/permit-all
Grant a user access to ALL clients and ALL marketplaces.
curl -s -X POST https://mcp.optimiseres.com/admin/permit-all \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/reactivate
curl -s -X POST https://mcp.optimiseres.com/admin/reactivate \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/regenerate-key
curl -s -X POST https://mcp.optimiseres.com/admin/regenerate-key \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/reports
curl -s https://mcp.optimiseres.com/admin/reports \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/admin/reports/{report_id}
curl -s https://mcp.optimiseres.com/admin/reports/{report_id} \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/reports/{report_id}/send
V34: push ONE person's report to the group by hand.
curl -s -X POST https://mcp.optimiseres.com/admin/reports/{report_id}/send \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \
-d "field=value"
POST
/admin/reset-password
curl -s -X POST https://mcp.optimiseres.com/admin/reset-password \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/revoke
curl -s -X POST https://mcp.optimiseres.com/admin/revoke \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/revoke-all-access
Remove ALL client and marketplace access from a user.
curl -s -X POST https://mcp.optimiseres.com/admin/revoke-all-access \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/rules
Every rule on the box, every automation grant, every run still waiting.
curl -s https://mcp.optimiseres.com/admin/rules \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/rules/approve
Approve a waiting run from the admin page. Same tool, same guards.
curl -s -X POST https://mcp.optimiseres.com/admin/rules/approve \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/rules/profile-decide
Approve or reject a method someone wrote. Approving lets every rule that
curl -s -X POST https://mcp.optimiseres.com/admin/rules/profile-decide \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/rules/profile-share
Share a profile with everyone, or take it back. Bumps the profile version.
curl -s -X POST https://mcp.optimiseres.com/admin/rules/profile-share \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/rules/reject
Reject a waiting run from the admin page, and drop its changesets.
curl -s -X POST https://mcp.optimiseres.com/admin/rules/reject \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/rules/revoke
Take automation away. The rule survives, it just has to ask again.
curl -s -X POST https://mcp.optimiseres.com/admin/rules/revoke \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/rules/switch
Flip one switch. Logged with the admin who did it. No restart needed.
curl -s -X POST https://mcp.optimiseres.com/admin/rules/switch \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/rules/toggle
Enable or disable one rule. A disabled rule is never picked up by a run.
curl -s -X POST https://mcp.optimiseres.com/admin/rules/toggle \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/send-daily-report
V33: Manual "Send now" for either report. Uses exactly the same builder
curl -s -X POST https://mcp.optimiseres.com/admin/send-daily-report \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/session-logs/{log_id}
curl -s https://mcp.optimiseres.com/admin/session-logs/{log_id} \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/session-requests/decide
curl -s -X POST https://mcp.optimiseres.com/admin/session-requests/decide \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/sessions/revoke
v39 (U28): sign out ONE terminal session.
curl -s -X POST https://mcp.optimiseres.com/admin/sessions/revoke \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/settings
curl -s https://mcp.optimiseres.com/admin/settings \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/settings/auto-send
V34: choose whose report is pushed to the group the instant they submit it.
curl -s -X POST https://mcp.optimiseres.com/admin/settings/auto-send \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/settings/cli-toggles
curl -s -X POST https://mcp.optimiseres.com/admin/settings/cli-toggles \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/settings/force-relogin
curl -s -X POST https://mcp.optimiseres.com/admin/settings/force-relogin \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/settings/meeting-link
curl -s -X POST https://mcp.optimiseres.com/admin/settings/meeting-link \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/settings/otp-rate-limit
curl -s -X POST https://mcp.optimiseres.com/admin/settings/otp-rate-limit \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/settings/password
curl -s -X POST https://mcp.optimiseres.com/admin/settings/password \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/settings/rate-limit
v39 (U27): the MCP per-user rate limit, read by server._rate_limit_max() within 60s.
curl -s -X POST https://mcp.optimiseres.com/admin/settings/rate-limit \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/settings/report-config
V33: independent enable + time for the MCP report and the full report.
curl -s -X POST https://mcp.optimiseres.com/admin/settings/report-config \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/settings/report-schedule
curl -s -X POST https://mcp.optimiseres.com/admin/settings/report-schedule \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/settings/session-timeout
curl -s -X POST https://mcp.optimiseres.com/admin/settings/session-timeout \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/settings/tool-switch
v65: new change tools ship OFF; an admin switches each one on here (previews always work).
curl -s -X POST https://mcp.optimiseres.com/admin/settings/tool-switch \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/settings/write-cap
v60: daily ceiling on write-tool calls per person (0 = off), read by admin_db.check_access.
curl -s -X POST https://mcp.optimiseres.com/admin/settings/write-cap \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/skills/approve
curl -s -X POST https://mcp.optimiseres.com/admin/skills/approve \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/skills/classify
curl -s -X POST https://mcp.optimiseres.com/admin/skills/classify \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/skills/delete
curl -s -X POST https://mcp.optimiseres.com/admin/skills/delete \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/skills/duplicate
curl -s -X POST https://mcp.optimiseres.com/admin/skills/duplicate \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/skills/edit
curl -s -X POST https://mcp.optimiseres.com/admin/skills/edit \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/skills/edit/{skill_id}
curl -s https://mcp.optimiseres.com/admin/skills/edit/{skill_id} \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/skills/move
curl -s -X POST https://mcp.optimiseres.com/admin/skills/move \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/skills/push-all
Set auto_push=1 on all approved skills.
curl -s -X POST https://mcp.optimiseres.com/admin/skills/push-all \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/skills/reject
curl -s -X POST https://mcp.optimiseres.com/admin/skills/reject \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/skills/seed-experimental
curl -s -X POST https://mcp.optimiseres.com/admin/skills/seed-experimental \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/skills/toggle-live
curl -s -X POST https://mcp.optimiseres.com/admin/skills/toggle-live \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/skills/toggle-push
curl -s -X POST https://mcp.optimiseres.com/admin/skills/toggle-push \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/smtp-health
curl -s https://mcp.optimiseres.com/admin/smtp-health \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/support/close
curl -s -X POST https://mcp.optimiseres.com/admin/support/close \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/support/reopen
curl -s -X POST https://mcp.optimiseres.com/admin/support/reopen \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/support/reply
curl -s -X POST https://mcp.optimiseres.com/admin/support/reply \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
POST
/admin/toggle-raw-logging
curl -s -X POST https://mcp.optimiseres.com/admin/toggle-raw-logging \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
GET
/admin/user/{email}
Everything about one user in one place: access, connections, sign-ins, activity.
curl -s https://mcp.optimiseres.com/admin/user/{email} \
-H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/admin/users
curl -s https://mcp.optimiseres.com/admin/users \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/admin/users/export.csv
curl -s https://mcp.optimiseres.com/admin/users/export.csv \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
GET
/admin/verify
curl -s https://mcp.optimiseres.com/admin/verify \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE"
POST
/admin/verify
curl -s -X POST https://mcp.optimiseres.com/admin/verify \ -H "Cookie: admin_session=YOUR_ADMIN_COOKIE" \ -d "field=value"
Internal API 5 · auth: session
Used by the dashboard and setup files; session cookie or JSON login.
POST
/api/auth/login
Terminal login. Returns an opts_... session token valid 8h.
curl -s -X POST https://mcp.optimiseres.com/api/auth/login \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
POST
/api/auth/logout
Revoke a session token. POST body: {"token": "opts_..."}
curl -s -X POST https://mcp.optimiseres.com/api/auth/logout \ -H "Cookie: user_session=YOUR_SESSION_COOKIE" \ -d "field=value"
GET
/api/auth/whoami
Validate a session token. Used by CLI helpers to check token health.
curl -s https://mcp.optimiseres.com/api/auth/whoami \ -H "Cookie: user_session=YOUR_SESSION_COOKIE"
GET
/api/skills/approved
List approved skills. Open endpoint — content is by design shareable.
curl -s https://mcp.optimiseres.com/api/skills/approved \ -H "Cookie: user_session=YOUR_SESSION_COOKIE"
GET
/api/skills/{skill_id}/download
Download an approved skill as Markdown text.
curl -s https://mcp.optimiseres.com/api/skills/{skill_id}/download \
-H "Cookie: user_session=YOUR_SESSION_COOKIE"Documentation 8 · auth: none
Public.
GET
/docs
Documentation home.
curl -s https://mcp.optimiseres.com/docs
GET
/docs/api
Built from app.routes, so it can never drift from what the server
curl -s https://mcp.optimiseres.com/docs/api
GET
/docs/auth-flow
curl -s https://mcp.optimiseres.com/docs/auth-flow
GET
/docs/errors
Every denial and error message, with the fix.
curl -s https://mcp.optimiseres.com/docs/errors
GET
/docs/limits
Session lifetimes, rate limits, no-logout.
curl -s https://mcp.optimiseres.com/docs/limits
GET
/docs/quickstart
Two-minute connect guide.
curl -s https://mcp.optimiseres.com/docs/quickstart
GET
/docs/scopes
Access levels, client/marketplace scoping and OAuth scopes.
curl -s https://mcp.optimiseres.com/docs/scopes
GET
/docs/tools
Tool reference, parsed live from server.py so it cannot go stale.
curl -s https://mcp.optimiseres.com/docs/tools
Public 203 · auth: none
Public.
GET
/
Public marketing page.
curl -s https://mcp.optimiseres.com/
GET
/automation
curl -s https://mcp.optimiseres.com/automation
GET
/automation/acct
curl -s https://mcp.optimiseres.com/automation/acct
POST
/automation/approve
curl -s -X POST https://mcp.optimiseres.com/automation/approve \ -d "field=value"
POST
/automation/lists
curl -s -X POST https://mcp.optimiseres.com/automation/lists \ -d "field=value"
POST
/automation/mode
curl -s -X POST https://mcp.optimiseres.com/automation/mode \ -d "field=value"
POST
/automation/reject
curl -s -X POST https://mcp.optimiseres.com/automation/reject \ -d "field=value"
POST
/automation/run
curl -s -X POST https://mcp.optimiseres.com/automation/run \ -d "field=value"
POST
/automation/schedule
curl -s -X POST https://mcp.optimiseres.com/automation/schedule \ -d "field=value"
POST
/automation/settings
curl -s -X POST https://mcp.optimiseres.com/automation/settings \ -d "field=value"
GET
/budget
curl -s https://mcp.optimiseres.com/budget
POST
/budget/save
curl -s -X POST https://mcp.optimiseres.com/budget/save \ -d "field=value"
GET
/budgets
curl -s https://mcp.optimiseres.com/budgets
GET
/budgets/{pid}
curl -s https://mcp.optimiseres.com/budgets/{pid}
POST
/budgets/{pid}/apply-now
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/apply-now \
-d "field=value"
POST
/budgets/{pid}/clear-cells
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/clear-cells \
-d "field=value"
POST
/budgets/{pid}/enforce
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/enforce \
-d "field=value"
POST
/budgets/{pid}/mode
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/mode \
-d "field=value"
POST
/budgets/{pid}/notify
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/notify \
-d "field=value"
POST
/budgets/{pid}/override
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/override \
-d "field=value"
POST
/budgets/{pid}/override/cancel
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/override/cancel \
-d "field=value"
POST
/budgets/{pid}/plan
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/plan \
-d "field=value"
POST
/budgets/{pid}/schedule/add
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/schedule/add \
-d "field=value"
POST
/budgets/{pid}/schedule/delete
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/schedule/delete \
-d "field=value"
POST
/budgets/{pid}/schedule/save
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/schedule/save \
-d "field=value"
GET
/budgets/{pid}/schedule/{kind}/{target}
curl -s https://mcp.optimiseres.com/budgets/{pid}/schedule/{kind}/{target}
POST
/budgets/{pid}/sheet
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/sheet \
-d "field=value"
POST
/budgets/{pid}/update-now
curl -s -X POST https://mcp.optimiseres.com/budgets/{pid}/update-now \
-d "field=value"
GET
/contact
curl -s https://mcp.optimiseres.com/contact
POST
/contact
curl -s -X POST https://mcp.optimiseres.com/contact \ -d "field=value"
GET
/forgot-password
curl -s https://mcp.optimiseres.com/forgot-password
POST
/forgot-password
curl -s -X POST https://mcp.optimiseres.com/forgot-password \ -d "field=value"
GET
/health
curl -s https://mcp.optimiseres.com/health
GET
/mcp/.well-known/oauth-protected-resource
curl -s https://mcp.optimiseres.com/mcp/.well-known/oauth-protected-resource
GET
/onboard
Public. Deliberately no login - anyone may start an authorisation.
curl -s https://mcp.optimiseres.com/onboard
GET
/onboard/done
v46: a plain thank-you page the auth servers can send the client to after Allow.
curl -s https://mcp.optimiseres.com/onboard/done
GET
/onboard/go
Forward to whichever auth server handles this platform.
curl -s https://mcp.optimiseres.com/onboard/go
GET
/ops
curl -s https://mcp.optimiseres.com/ops
GET
/ops/
curl -s https://mcp.optimiseres.com/ops/
GET
/ops/accounts
curl -s https://mcp.optimiseres.com/ops/accounts
GET
/ops/accounts/new
curl -s https://mcp.optimiseres.com/ops/accounts/new
POST
/ops/accounts/new
curl -s -X POST https://mcp.optimiseres.com/ops/accounts/new \ -d "field=value"
GET
/ops/accounts/status
curl -s https://mcp.optimiseres.com/ops/accounts/status
POST
/ops/accounts/status/mark
curl -s -X POST https://mcp.optimiseres.com/ops/accounts/status/mark \ -d "field=value"
POST
/ops/accounts/status/offboard_red
Offboard every active account marked red: services off, archived, this marketplace taken off staff logins.
curl -s -X POST https://mcp.optimiseres.com/ops/accounts/status/offboard_red \ -d "field=value"
GET
/ops/accounts/{aid}
curl -s https://mcp.optimiseres.com/ops/accounts/{aid}
POST
/ops/accounts/{aid}/admin
curl -s -X POST https://mcp.optimiseres.com/ops/accounts/{aid}/admin \
-d "field=value"
POST
/ops/accounts/{aid}/alias
curl -s -X POST https://mcp.optimiseres.com/ops/accounts/{aid}/alias \
-d "field=value"
GET
/ops/accounts/{aid}/categories
v80: the account's Category workbooks (daily + weekly reports), editable here instead of in Drive.
curl -s https://mcp.optimiseres.com/ops/accounts/{aid}/categories
POST
/ops/accounts/{aid}/categories
curl -s -X POST https://mcp.optimiseres.com/ops/accounts/{aid}/categories \
-d "field=value"
POST
/ops/accounts/{aid}/edit
curl -s -X POST https://mcp.optimiseres.com/ops/accounts/{aid}/edit \
-d "field=value"
POST
/ops/accounts/{aid}/feature
curl -s -X POST https://mcp.optimiseres.com/ops/accounts/{aid}/feature \
-d "field=value"
POST
/ops/accounts/{aid}/lookup_name
v80 Find name: what Amazon calls this account through its keys. Ids are filled in; the name is offered.
curl -s -X POST https://mcp.optimiseres.com/ops/accounts/{aid}/lookup_name \
-d "field=value"
POST
/ops/accounts/{aid}/merge
curl -s -X POST https://mcp.optimiseres.com/ops/accounts/{aid}/merge \
-d "field=value"
POST
/ops/accounts/{aid}/recipient
curl -s -X POST https://mcp.optimiseres.com/ops/accounts/{aid}/recipient \
-d "field=value"
POST
/ops/accounts/{aid}/use_name
curl -s -X POST https://mcp.optimiseres.com/ops/accounts/{aid}/use_name \
-d "field=value"
GET
/ops/alerts
curl -s https://mcp.optimiseres.com/ops/alerts
POST
/ops/alerts/check
curl -s -X POST https://mcp.optimiseres.com/ops/alerts/check \ -d "field=value"
POST
/ops/alerts/settings
curl -s -X POST https://mcp.optimiseres.com/ops/alerts/settings \ -d "field=value"
POST
/ops/alerts/{aid}/ack
curl -s -X POST https://mcp.optimiseres.com/ops/alerts/{aid}/ack \
-d "field=value"
GET
/ops/amc
curl -s https://mcp.optimiseres.com/ops/amc
GET
/ops/amc/download/{rid}
curl -s https://mcp.optimiseres.com/ops/amc/download/{rid}
POST
/ops/amc/export/{rid}
curl -s -X POST https://mcp.optimiseres.com/ops/amc/export/{rid} \
-d "field=value"
POST
/ops/amc/ids
Enter or find the AMC ids of one account (Find asks Amazon through the official server).
curl -s -X POST https://mcp.optimiseres.com/ops/amc/ids \ -d "field=value"
POST
/ops/amc/query
curl -s -X POST https://mcp.optimiseres.com/ops/amc/query \ -d "field=value"
POST
/ops/amc/run
Run a ready question or a saved query for one account (the console finishes it in the background).
curl -s -X POST https://mcp.optimiseres.com/ops/amc/run \ -d "field=value"
GET
/ops/api/accounts
v71: the account list our take-over jobs (amsjobs.*) work from - active accounts with the service the job
curl -s https://mcp.optimiseres.com/ops/api/accounts
POST
/ops/api/actions
v80: the runner claims the control actions waiting for its box (pause / resume / stop / start / restart).
curl -s -X POST https://mcp.optimiseres.com/ops/api/actions \ -d "field=value"
POST
/ops/api/actions/finish
curl -s -X POST https://mcp.optimiseres.com/ops/api/actions/finish \ -d "field=value"
POST
/ops/api/credentials
Decrypted credentials for ONE account, only to a v45 job that is running right now and
curl -s -X POST https://mcp.optimiseres.com/ops/api/credentials \ -d "field=value"
GET
/ops/api/crontab-plan
curl -s https://mcp.optimiseres.com/ops/api/crontab-plan
POST
/ops/api/due
curl -s -X POST https://mcp.optimiseres.com/ops/api/due \ -d "field=value"
POST
/ops/api/jobs-meta
curl -s -X POST https://mcp.optimiseres.com/ops/api/jobs-meta \ -d "field=value"
POST
/ops/api/observe
The runner reports what it sees. Cron-mode jobs get their 'last activity' from here.
curl -s -X POST https://mcp.optimiseres.com/ops/api/observe \ -d "field=value"
POST
/ops/api/run/finish
curl -s -X POST https://mcp.optimiseres.com/ops/api/run/finish \ -d "field=value"
POST
/ops/api/run/lost
v86.5: the runner could not register a scheduled run (console restarting). Hand the slot back so the next
curl -s -X POST https://mcp.optimiseres.com/ops/api/run/lost \ -d "field=value"
POST
/ops/api/run/start
curl -s -X POST https://mcp.optimiseres.com/ops/api/run/start \ -d "field=value"
POST
/ops/api/runner-started
The runner (re)started: any run it had open is gone - close them as failed, loudly.
curl -s -X POST https://mcp.optimiseres.com/ops/api/runner-started \ -d "field=value"
POST
/ops/api/shadow
v71: shadow scores from amsjobs.compare (one row per compared file).
curl -s -X POST https://mcp.optimiseres.com/ops/api/shadow \ -d "field=value"
GET
/ops/api/sheetfile/{file_id}
A control sheet, generated by the console, for a job running WITHOUT sheets (v45shim).
curl -s https://mcp.optimiseres.com/ops/api/sheetfile/{file_id}
GET
/ops/health
curl -s https://mcp.optimiseres.com/ops/health
POST
/ops/health/check
curl -s -X POST https://mcp.optimiseres.com/ops/health/check \ -d "field=value"
GET
/ops/health/ownership
v77: owners of the Drive files and folders our jobs depend on (from the daily read-only check).
curl -s https://mcp.optimiseres.com/ops/health/ownership
POST
/ops/health/ownership
curl -s -X POST https://mcp.optimiseres.com/ops/health/ownership \ -d "field=value"
GET
/ops/jobs
curl -s https://mcp.optimiseres.com/ops/jobs
GET
/ops/jobs/ams
curl -s https://mcp.optimiseres.com/ops/jobs/ams
POST
/ops/jobs/ams/giveback
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/ams/giveback \ -d "field=value"
POST
/ops/jobs/ams/stream/refresh
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/ams/stream/refresh \ -d "field=value"
POST
/ops/jobs/ams/subs/act
v84: SUBSCRIBE / UNSUBSCRIBE / AUDIT one account. Dry run unless the box is unticked AND the switch is on.
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/ams/subs/act \ -d "field=value"
POST
/ops/jobs/ams/subs/act-many
v85: Audit or Subscribe (always dry run) the ticked accounts - shows the plan per account before any write.
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/ams/subs/act-many \ -d "field=value"
POST
/ops/jobs/ams/subs/audit
v84: read-only audit (Amazon list calls only) for every account or the selected ones.
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/ams/subs/audit \ -d "field=value"
POST
/ops/jobs/ams/subs/stream
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/ams/subs/stream \ -d "field=value"
POST
/ops/jobs/ams/subs/write
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/ams/subs/write \ -d "field=value"
POST
/ops/jobs/ams/takeover
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/ams/takeover \ -d "field=value"
GET
/ops/jobs/shadow
curl -s https://mcp.optimiseres.com/ops/jobs/shadow
POST
/ops/jobs/shadow/import-ams-ids
Read the ADsAPI tab once (read only) and fill accounts.ams_advertiser_id where it is empty.
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/shadow/import-ams-ids \ -d "field=value"
POST
/ops/jobs/shadow/import-folders
v72: fill accounts.etl_folder from the console's copy of the Adsaccounts sheet (no Drive call, no keys).
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/shadow/import-folders \ -d "field=value"
GET
/ops/jobs/{key}
curl -s https://mcp.optimiseres.com/ops/jobs/{key}
POST
/ops/jobs/{key}/action
v80 controls: pause / resume (cron line), stop (running job), start / stop / restart (service, app).
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/{key}/action \
-d "field=value"
POST
/ops/jobs/{key}/mode
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/{key}/mode \
-d "field=value"
POST
/ops/jobs/{key}/note
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/{key}/note \
-d "field=value"
POST
/ops/jobs/{key}/run
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/{key}/run \
-d "field=value"
POST
/ops/jobs/{key}/schedule
curl -s -X POST https://mcp.optimiseres.com/ops/jobs/{key}/schedule \
-d "field=value"
GET
/ops/mis
curl -s https://mcp.optimiseres.com/ops/mis
POST
/ops/mis/direct
v68: build the shadow scoreboard (Athena ad numbers vs the workbook) for one day. Read only.
curl -s -X POST https://mcp.optimiseres.com/ops/mis/direct \ -d "field=value"
POST
/ops/mis/groups
v56: the WhatsApp group list lives here; variableNames.xlsx is written FROM it (Data sources).
curl -s -X POST https://mcp.optimiseres.com/ops/mis/groups \ -d "field=value"
GET
/ops/mis/image/{day}/{name}
curl -s https://mcp.optimiseres.com/ops/mis/image/{day}/{name}
POST
/ops/mis/manual
v80: hand-filled store numbers for vendors (and any account marked hand-filled). MIS role, no approval, audited.
curl -s -X POST https://mcp.optimiseres.com/ops/mis/manual \ -d "field=value"
POST
/ops/mis/map
curl -s -X POST https://mcp.optimiseres.com/ops/mis/map \ -d "field=value"
POST
/ops/mis/month
curl -s -X POST https://mcp.optimiseres.com/ops/mis/month \ -d "field=value"
POST
/ops/mis/owner
v73: who writes the MIS workbook - the legacy final_mis_report job or the console. Typed confirmation.
curl -s -X POST https://mcp.optimiseres.com/ops/mis/owner \ -d "field=value"
POST
/ops/mis/prepare
curl -s -X POST https://mcp.optimiseres.com/ops/mis/prepare \ -d "field=value"
POST
/ops/mis/send
curl -s -X POST https://mcp.optimiseres.com/ops/mis/send \ -d "field=value"
POST
/ops/mis/sender
curl -s -X POST https://mcp.optimiseres.com/ops/mis/sender \ -d "field=value"
POST
/ops/mis/settings
curl -s -X POST https://mcp.optimiseres.com/ops/mis/settings \ -d "field=value"
POST
/ops/mis/write
v73: write OUR rows for one day into the month workbook. Refused unless the console owns the write.
curl -s -X POST https://mcp.optimiseres.com/ops/mis/write \ -d "field=value"
GET
/ops/onboarding
curl -s https://mcp.optimiseres.com/ops/onboarding
POST
/ops/onboarding/client/{aid}/{action}
curl -s -X POST https://mcp.optimiseres.com/ops/onboarding/client/{aid}/{action} \
-d "field=value"
POST
/ops/onboarding/invite/{iid}/{action}
curl -s -X POST https://mcp.optimiseres.com/ops/onboarding/invite/{iid}/{action} \
-d "field=value"
POST
/ops/onboarding/look
curl -s -X POST https://mcp.optimiseres.com/ops/onboarding/look \ -d "field=value"
POST
/ops/onboarding/send
v80: mail the client the connect links and steps; CC the sender; keep the invite.
curl -s -X POST https://mcp.optimiseres.com/ops/onboarding/send \ -d "field=value"
POST
/ops/onboarding/{iid}/{action}
curl -s -X POST https://mcp.optimiseres.com/ops/onboarding/{iid}/{action} \
-d "field=value"
GET
/ops/people
curl -s https://mcp.optimiseres.com/ops/people
POST
/ops/people/role
curl -s -X POST https://mcp.optimiseres.com/ops/people/role \ -d "field=value"
GET
/ops/reports
curl -s https://mcp.optimiseres.com/ops/reports
POST
/ops/reports/backfill
v89: replay the pulls + build for one past day on Contabo (nothing is sent).
curl -s -X POST https://mcp.optimiseres.com/ops/reports/backfill \ -d "field=value"
POST
/ops/reports/backfill-send
v89: send one past day's mail and/or WhatsApp images from the (back-filled) workbooks. Typed SEND, Manager/Admin.
curl -s -X POST https://mcp.optimiseres.com/ops/reports/backfill-send \ -d "field=value"
POST
/ops/reports/daily-build
v73.2: build our daily report workbooks for one day from the raw files our fetch job wrote (shadow).
curl -s -X POST https://mcp.optimiseres.com/ops/reports/daily-build \ -d "field=value"
POST
/ops/reports/daily-compare
curl -s -X POST https://mcp.optimiseres.com/ops/reports/daily-compare \ -d "field=value"
POST
/ops/reports/send-owner
v73.2: who sends the daily client report - the legacy jobs (default) or the console. Typed CONSOLE to switch.
curl -s -X POST https://mcp.optimiseres.com/ops/reports/send-owner \ -d "field=value"
POST
/ops/reports/weekly-build
v73.2: build our weekly report workbooks for the week ending on the given Saturday (default: last full week).
curl -s -X POST https://mcp.optimiseres.com/ops/reports/weekly-build \ -d "field=value"
POST
/ops/reports/weekly-compare
curl -s -X POST https://mcp.optimiseres.com/ops/reports/weekly-compare \ -d "field=value"
POST
/ops/reports/weekly-sync
curl -s -X POST https://mcp.optimiseres.com/ops/reports/weekly-sync \ -d "field=value"
GET
/ops/scorecard
curl -s https://mcp.optimiseres.com/ops/scorecard
POST
/ops/scorecard/account
Add or remove one account from the scorecard (the feature switch, nothing else).
curl -s -X POST https://mcp.optimiseres.com/ops/scorecard/account \ -d "field=value"
POST
/ops/scorecard/build
curl -s -X POST https://mcp.optimiseres.com/ops/scorecard/build \ -d "field=value"
POST
/ops/scorecard/daily
curl -s -X POST https://mcp.optimiseres.com/ops/scorecard/daily \ -d "field=value"
GET
/ops/scorecard/download
curl -s https://mcp.optimiseres.com/ops/scorecard/download
POST
/ops/scorecard/import
curl -s -X POST https://mcp.optimiseres.com/ops/scorecard/import \ -d "field=value"
POST
/ops/scorecard/template
curl -s -X POST https://mcp.optimiseres.com/ops/scorecard/template \ -d "field=value"
GET
/ops/scorecard/template.xlsx
curl -s https://mcp.optimiseres.com/ops/scorecard/template.xlsx
POST
/ops/scorecard/template_v2
v77: re-lay the active template out as the reviewed v2 (Sessions in blue, values on L2W/L4W, Zero Spend SKUs,
curl -s -X POST https://mcp.optimiseres.com/ops/scorecard/template_v2 \ -d "field=value"
GET
/ops/scraper
curl -s https://mcp.optimiseres.com/ops/scraper
POST
/ops/scraper/refresh
curl -s -X POST https://mcp.optimiseres.com/ops/scraper/refresh \ -d "field=value"
GET
/ops/sheets
curl -s https://mcp.optimiseres.com/ops/sheets
POST
/ops/sheets/backup
v80: copy every control file into the backup folder now.
curl -s -X POST https://mcp.optimiseres.com/ops/sheets/backup \ -d "field=value"
POST
/ops/sheets/backup/prune
Admin: move the listed old copies to the Drive bin (recoverable 30 days). Only files shown on the page.
curl -s -X POST https://mcp.optimiseres.com/ops/sheets/backup/prune \ -d "field=value"
POST
/ops/sheets/copy
curl -s -X POST https://mcp.optimiseres.com/ops/sheets/copy \ -d "field=value"
POST
/ops/sheets/file/{fid}/{action}
curl -s -X POST https://mcp.optimiseres.com/ops/sheets/file/{fid}/{action} \
-d "field=value"
POST
/ops/sheets/{key}/publish
curl -s -X POST https://mcp.optimiseres.com/ops/sheets/{key}/publish \
-d "field=value"
GET
/ops/tokens
Access keys: By account (needs vs keys), Keys, Apps, Verify sheets, Export, MCP, Sync.
curl -s https://mcp.optimiseres.com/ops/tokens
POST
/ops/tokens/apps/{app_id}/secret
An Admin enters a rotated app secret; it is tried against one real key before it is stored.
curl -s -X POST https://mcp.optimiseres.com/ops/tokens/apps/{app_id}/secret \
-d "field=value"
POST
/ops/tokens/check
curl -s -X POST https://mcp.optimiseres.com/ops/tokens/check \ -d "field=value"
POST
/ops/tokens/collect
curl -s -X POST https://mcp.optimiseres.com/ops/tokens/collect \ -d "field=value"
POST
/ops/tokens/export
Admin only: every key, decrypted into a workbook, encrypted with a passphrase the person types. Audited.
curl -s -X POST https://mcp.optimiseres.com/ops/tokens/export \ -d "field=value"
GET
/ops/tokens/export.csv
Fingerprints only - no secrets. Anyone who can view keys.
curl -s https://mcp.optimiseres.com/ops/tokens/export.csv
POST
/ops/tokens/push
curl -s -X POST https://mcp.optimiseres.com/ops/tokens/push \ -d "field=value"
POST
/ops/tokens/settings
curl -s -X POST https://mcp.optimiseres.com/ops/tokens/settings \ -d "field=value"
POST
/ops/tokens/verify
Download ONE sheet fresh from Drive and compare it with the vault, row by row (read-only).
curl -s -X POST https://mcp.optimiseres.com/ops/tokens/verify \ -d "field=value"
GET
/ops/tokens/{tid}/accounts
curl -s https://mcp.optimiseres.com/ops/tokens/{tid}/accounts
POST
/ops/tokens/{tid}/check
One key, now, with reach (a few seconds).
curl -s -X POST https://mcp.optimiseres.com/ops/tokens/{tid}/check \
-d "field=value"
GET
/ops/trial
curl -s https://mcp.optimiseres.com/ops/trial
POST
/ops/trial/start
curl -s -X POST https://mcp.optimiseres.com/ops/trial/start \ -d "field=value"
GET
/privacy
curl -s https://mcp.optimiseres.com/privacy
POST
/reset-password
curl -s -X POST https://mcp.optimiseres.com/reset-password \ -d "field=value"
GET
/rules
v70: the user rule pages live under /automation since v52.
curl -s https://mcp.optimiseres.com/rules
POST
/rules/approve
Approve a waiting run and push exactly the rows it planned.
curl -s -X POST https://mcp.optimiseres.com/rules/approve \ -d "field=value"
POST
/rules/delete
Delete one rule, in two steps. The first press only asks; nothing is deleted
curl -s -X POST https://mcp.optimiseres.com/rules/delete \ -d "field=value"
POST
/rules/profile-save
Create or edit a profile the logged-in user owns. Changes nothing on Amazon.
curl -s -X POST https://mcp.optimiseres.com/rules/profile-save \ -d "field=value"
POST
/rules/reject
Reject a waiting run. server.reject_run deletes its stored changesets.
curl -s -X POST https://mcp.optimiseres.com/rules/reject \ -d "field=value"
POST
/rules/run
Build a plan for one rule and push NOTHING.
curl -s -X POST https://mcp.optimiseres.com/rules/run \ -d "field=value"
POST
/rules/save
Save one rule as the logged-in user. The field names come from the chosen
curl -s -X POST https://mcp.optimiseres.com/rules/save \ -d "field=value"
POST
/rules/toggle
Enable or disable one of this person's rules. A disabled rule never runs.
curl -s -X POST https://mcp.optimiseres.com/rules/toggle \ -d "field=value"
GET
/security
curl -s https://mcp.optimiseres.com/security
GET
/setup
Plain-English guide (in the dashboard shell): connect ChatGPT, Claude, Codex or OpenCode.
curl -s https://mcp.optimiseres.com/setup
GET
/system/integrations
curl -s https://mcp.optimiseres.com/system/integrations
POST
/system/integrations/official-check
v62: initialize + tools/list against Amazon's official Ads MCP, one account per region. Reads no
curl -s -X POST https://mcp.optimiseres.com/system/integrations/official-check \ -d "field=value"
GET
/system/security
curl -s https://mcp.optimiseres.com/system/security
GET
/system/skills
curl -s https://mcp.optimiseres.com/system/skills
POST
/system/skills/push
Admin: push an approved skill to every AI client automatically (or stop).
curl -s -X POST https://mcp.optimiseres.com/system/skills/push \ -d "field=value"
POST
/system/skills/review
curl -s -X POST https://mcp.optimiseres.com/system/skills/review \ -d "field=value"
GET
/system/usage
curl -s https://mcp.optimiseres.com/system/usage
GET
/team
curl -s https://mcp.optimiseres.com/team
POST
/team/access
curl -s -X POST https://mcp.optimiseres.com/team/access \ -d "field=value"
GET
/team/activity
v80: everything people did in the console - who, what, which account or page, when.
curl -s https://mcp.optimiseres.com/team/activity
POST
/team/deny
curl -s -X POST https://mcp.optimiseres.com/team/deny \ -d "field=value"
POST
/team/kind
v86.5: pin one person as staff or client against the domain rule (admin only), or go back to the rule.
curl -s -X POST https://mcp.optimiseres.com/team/kind \ -d "field=value"
POST
/team/notify
v83: owner team -> people, extra recipients per category, external contacts of legacy pipelines.
curl -s -X POST https://mcp.optimiseres.com/team/notify \ -d "field=value"
POST
/team/notify/prefs
curl -s -X POST https://mcp.optimiseres.com/team/notify/prefs \ -d "field=value"
POST
/team/notify/test
v83: a real alert addressed to me - bell + mail - so the whole path is proven from the page.
curl -s -X POST https://mcp.optimiseres.com/team/notify/test \ -d "field=value"
POST
/team/role
curl -s -X POST https://mcp.optimiseres.com/team/role \ -d "field=value"
POST
/team/status
Remove (revoke) or bring back a login. Admin only.
curl -s -X POST https://mcp.optimiseres.com/team/status \ -d "field=value"
GET
/team/support
curl -s https://mcp.optimiseres.com/team/support
POST
/team/support/fields
v80: type, priority, owner team, assignee, account, internal notes.
curl -s -X POST https://mcp.optimiseres.com/team/support/fields \ -d "field=value"
POST
/team/support/new
v80: a staff member opens a request from the console (on behalf of a client or for the team).
curl -s -X POST https://mcp.optimiseres.com/team/support/new \ -d "field=value"
POST
/team/support/reply
curl -s -X POST https://mcp.optimiseres.com/team/support/reply \ -d "field=value"
POST
/team/support/settings
curl -s -X POST https://mcp.optimiseres.com/team/support/settings \ -d "field=value"
POST
/team/support/status
curl -s -X POST https://mcp.optimiseres.com/team/support/status \ -d "field=value"
GET
/terms
curl -s https://mcp.optimiseres.com/terms
GET
/ui/badges
v58: sidebar counters for team roles (admin has /admin/api/badges).
curl -s https://mcp.optimiseres.com/ui/badges
GET
/ui/bell
v80: everyone's bell = their own notifications (jobs on my accounts, reports, requests, access, onboarding) and,
curl -s https://mcp.optimiseres.com/ui/bell
POST
/ui/bell/read
v80: mark my notifications read (all, or the ids given).
curl -s -X POST https://mcp.optimiseres.com/ui/bell/read \ -d "field=value"
GET
/ui/search
curl -s https://mcp.optimiseres.com/ui/search
ⓘ
Looking for the MCP tools themselves (get_performance_data, stage_changes, …)? Those live in the Tool reference — this page is the HTTP surface around them.