Mint a key, paste one line into Claude Code, Cursor or Claude Desktop, and your agent self-discovers every tool it's authorized for — create a program, invite participants, author a survey, send mail, score, retrieve results. Reads are free; risky writes wait for a human.
// self-discovers tools filtered to your key's scopes { "mcpServers": { "pes": { "command": "npx", "args": ["-y", "mcp-remote", "https://proevaluationsystem.com/_api/mcp/server.php", "--header", "Authorization: Bearer ${PES_API_KEY}"], "env": { "PES_API_KEY": "eak_…" } } } }
The hosted MCP server is self-describing: on connect, tools/list returns exactly the tools your key's scopes allow, each with its input schema. Prefer raw HTTP? Every tool is also a bearer-authed REST endpoint.
# one line — add the connector to Claude Code claude mcp add --transport http pes \ https://proevaluationsystem.com/_api/mcp/server.php \ --header "Authorization: Bearer $PES_API_KEY"
# the dependency-free helper CLI npx pes-agent whoami npx pes-agent tools # list tools with cost / risk npx pes-agent call read_results '{"evaluee_ref":"pes:evaluee/123"}'
# who am I? (free) — every tool is also raw REST curl -s https://proevaluationsystem.com/_api/mcp_whoami.php \ -H "Authorization: Bearer eak_…" # a risky write returns 409 until approved (see Trust model) curl -s https://proevaluationsystem.com/_api/mcp_mail_send_bulk.php \ -H "Authorization: Bearer eak_…" \ -d '{"gameid":1024,"mail_template_id":7,"select_all_participants":true}'
An API key carries only the scopes you grant it, spends transparently in credits, and can never fire a destructive or mass action without a person signing off. Every call is audited.
Reads and status polls are free. Writes cost a few credits; mass actions multiply by recipient count. Accounts start on Free and auto-promote (Tier 1–4) as cumulative spend grows, lifting rate limits and monthly caps.
Guardrails are enforced server-side, not by the agent's good behavior:
e.g. mail_send_bulk. With no token, the server holds it and replies 409 approval_required with an approval_id — the token is never shown to the agent.
The key owner reviews the exact payload in the Approvals inbox — or the emailed magic-link — and approves it, revealing a single-use, payload-bound token.
Re-issue the same call with approval_token. The server verifies the payload hash matches, runs it once, and consumes the token.
All 42 tools, grouped by where they sit in the assessment lifecycle. The MCP tool name is the scope with : → _. Filter to see what's free, what writes, and what needs a human.