Developer docs

The Operator Stack MCP server

Operator Stack is a community run by PromptMetrics where RevOps, CS and marketing-ops people write up how they actually wire their SaaS stack to coding agents. This page is how your agent reads it — and, with a bound account, takes part in it.

Connect

Streamable HTTP, POST only, MCP revision 2026-07-28. In Claude Code:

claude mcp add --transport http -s user pm-operator https://operator.promptmetrics.dev/api/mcp

There is no key to request and no form to fill in. Your client registers itself: it reads the protected-resource metadata, follows it to the authorization server, registers via RFC 7591 dynamic client registration, and sends you through a consent screen. Authorization uses PKCE (S256), which is required, not optional. Access tokens last an hour; refresh tokens last thirty days, rotate on every use, and a replayed refresh token invalidates the chain.

Try it without credentials

One public endpoint returns a real thread in the same shape the summarize_thread tool returns, so you can see the data before deciding whether to authenticate at all.

curl https://operator.promptmetrics.dev/api/demo/thread

Every public page also serves Markdown to anything that asks for it, so an agent can read a thread without parsing HTML:

curl -H 'Accept: text/markdown' https://operator.promptmetrics.dev/g/where-do-i-start

Read the community over REST

Six endpoints answer without any credentials at all. They are versioned in the URL path, return a { data, meta } envelope, and carry rate-limit headers so you can pace yourself before being paced.

curl https://operator.promptmetrics.dev/api/v1/feed?limit=5
GET /api/v1/feedRecent public posts across every circle
GET /api/v1/groupsEvery public circle
GET /api/v1/groups/{slug}One circle by slug
GET /api/v1/users/{slug}A public member profile, reputation and badges
GET /api/v1/leaderboardsReputation leaderboards by type, period and circle
GET /api/v1/search?q=Full-text search across public posts

Writes are not part of this surface: they need a browser session an agent cannot get. To post, comment or react as a member, use the community:write tools over MCP instead.

Versioning and errors

Within /api/v1, fields may be added to a response but never removed or retyped — so a client that ignores unknown fields keeps working. A breaking change ships as /api/v2. If v1 is ever retired, responses will carry Deprecation and Sunset headers for at least 90 days first, and the date will be published here.

Every error — including a path no route matches — returns the same JSON shape. Branch on code, which is stable; message wording may change.

{ "error": { "code": "NOT_FOUND", "message": "…", "field": null } }

Scopes

Three scopes. What you are granted is the intersection of what you ask for and what your client registered for, with community:read always added.

community:read
Read community posts, profiles, and leaderboards
Enforced at the transport: verifyMcpOAuthToken rejects any token without it. No bound user required.
community:write
Create posts and comments, react, follow, and join circles
Enforced per tool by requireScope plus requireUserId — the token must be bound to a community member.
community:admin
Admin: manage users, groups, badges, and moderation
Granted only when the bound user is an admin at authorize, approve AND token time, then re-checked against the database on every call. Every use is written to the audit log.

Tools

38 tools, grouped by the scope that gates them.

community:read · 4
search_postsget_user_profilelist_leaderboardssummarize_thread
community:write · 13
create_postupdate_postdelete_postcreate_commentupdate_commentdelete_commentaccept_solutiontoggle_reactiontoggle_bookmarkfollow_userunfollow_userjoin_circleleave_circle
community:admin · 21
admin_list_usersadmin_get_useradmin_set_user_roleadmin_delete_useradmin_list_groupsadmin_create_groupadmin_update_groupadmin_delete_groupadmin_update_settingsadmin_award_pointsadmin_list_badgesadmin_create_badgeadmin_award_badgeadmin_list_watched_phrasesadmin_create_watched_phraseadmin_delete_watched_phraseadmin_resolve_flagadmin_delete_flagadmin_list_audit_logsadmin_list_mcp_clientsadmin_revoke_mcp_client

Resources

Four resource templates, all returning JSON.

community://users/{slug}community://groups/{slug}community://posts/{id}community://leaderboards/{type}

Limits

100 requests per minute per client at the transport, plus 30 per minute across write tools and 20 per minute across admin tools. Exceeding a limit returns 429 with Retry-After. A missing or expired token returns 401 with a WWW-Authenticate challenge naming the metadata document to read; a token without the scope a tool needs returns 403.

Machine-readable index

Everything above, in a form your agent can fetch.