Skip to content
Reference

MCP

The Frazer MCP server at https://mcp.frazer.ai gives AI agents the Frazer API as tools. It is the same API the console and the CLI call, with the same permissions and audit, and it is read-only by default: an agent lists and calls read tools until you grant writes, and every write becomes a plan that waits for a person’s approval. The server speaks the Model Context Protocol (revision 2026-07-28) over Streamable HTTP.

Terminal window
curl -fsSL https://get.frazer.ai | sh
frazer login
frazer mcp install

frazer mcp install adds the Frazer MCP server to your agent’s configuration.

The first time the client calls Frazer, it opens Frazer’s sign-in in your browser:

  1. Sign in to Frazer.

  2. Choose the organization. A connection is bound to one organization; to work in another, connect again.

  3. Check what the client asks for. The page shows the client’s name and the host it is published from, where it sends you back, the scopes in words, and how long the connection lasts. Read-only is on. A client that runs only on your computer carries a warning: any app on your computer can use its name.

  4. Choose Allow, or Deny if anything looks wrong.

The client then lists the tools your scopes allow. Frazer asks for consent every time a client authorizes. You find every connection under Account › Connected apps and agents, and you can revoke any of them there.

  • OAuth 2.1 with authorization code and PKCE (S256). Frazer is the authorization server, https://api.frazer.ai.
  • Client IDs are https URLs of a Client ID Metadata Document, which Frazer fetches and checks. Clients hold no secrets, and there is no dynamic client registration.
  • Discovery. A call without a valid token gets 401 with a resource_metadata link to https://mcp.frazer.ai/.well-known/oauth-protected-resource and the scope to ask for.
  • Audience. MCP tokens are minted for https://mcp.frazer.ai only. An API token is refused here, and an MCP token is refused by the API.
  • Lifetimes. Access tokens live 15 minutes; a connection refreshes them for up to 30 days. Clients may bind their tokens to a key with DPoP (ES256).
  • No passthrough. Frazer never forwards your token to another service.
Scope Allows
<service>:read The service’s read and list tools, for example kubernetes:read
<service>:write The service’s write tools, except IAM changes and data access
cloud-platform Everything you may do
offline_access Refresh tokens, so the connection outlives one access token

With Read-only on, Frazer grants <service>:read for each <service>:write asked and drops cloud-platform. If nothing would be left, the authorization fails with READ_ONLY_EMPTY.

A connection never does more than you can. Its rights are your current rights, narrowed by its scopes and its organization:

  • a tool its scopes do not cover answers 403 insufficient_scope with the scope it needs;
  • a call your roles do not allow is denied as it would be in the API;
  • a resource in another organization answers ORG_RESTRICTED.

Write tools are not even listed for a connection without a write scope.

Tools are generated from the API, one per method, and grouped into toolsets: a product’s toolset holds its read tools and its write tools. A connection gets every toolset its scopes allow; the iam toolset is for admins only. Narrow a connection with URL parameters:

https://mcp.frazer.ai/?toolsets=monitoring
https://mcp.frazer.ai/?project=acme-production
  • Hints. Each tool says whether it reads, whether it is destructive and whether it is safe to repeat. Hints help your client; Frazer enforces the rules on the server whatever a hint says.
  • Typed results. Every tool has an output schema and returns structured content.
  • Untrusted text. Text that comes from your organization’s data, such as names, descriptions and log lines, is marked as untrusted in tool output. Secret values are never returned.
  • Tools that change. When an app’s tools are approved, Frazer stores a hash of each tool’s name, description and schema, and compares every tool list the app’s server answers with it. At the first change the server is held: agents keep the approved definitions and the app’s sponsor gets the change to approve or remove.
  • Hidden methods. An API method can be kept from agents; it then has no tool at all.
  • Docs for agents. The docs toolset gives agents these docs. Every docs page also has a Markdown version at its URL plus .md, and https://frazer.ai/llms.txt indexes them.

Frazer’s MCP server offers the Events extension. events/list returns every event type with its argument and payload schemas. Poll with events/poll, hold a stream with events/stream (a heartbeat with the cursor every 15 seconds), or register a callback with events/subscribe. A callback subscription lives as long as you ask, 72 hours if you do not say, and never more than 30 days; refresh it before refreshBefore. Each refresh returns the cursor and the delivery status. Access is checked on every delivery: a principal that loses access gets a terminated notice. Payload fields that hold outside text are marked untrusted. An error that needs a person (exit 13 in the CLI) carries a ready subscription for the outcome, so an agent waits without polling.

Every write through MCP waits for a person. Nothing changes until someone approves.

  1. The agent calls a write tool. Frazer plans the call (validate_only): the same checks as the real call, with quota impact, policy violations and cost, and no change.

  2. A built-in rule holds the call and creates an approval pinned to the plan’s hash and the target’s current version.

  3. The tool answers input_required with a link to the approval in the console, https://console.frazer.ai/approvals/…. Your client shows you the full link.

  4. A person approves in the console or with frazer approvals approve, with a passkey or second factor from the last 10 minutes. Outside production, the person the agent acts for may confirm; in a production project a second person must approve.

  5. The client repeats the call. While the approval is pending it gets input_required again; once Frazer has applied the change, it gets the result. A rejected, expired, invalidated, canceled or failed approval answers a tool error with the reason.

  • Exactly the plan. Frazer applies the call once, as you, and only if the target has not changed; otherwise the approval fails and the agent plans again.
  • Clients without URL elicitation get a tool error APPROVAL_REQUIRED with the approval’s name, state, expiry and page; the plan is in _meta["frazer.ai/plan"]. If you dismiss the link in your client, the call answers APPROVAL_PENDING and the approval stays open.
  • Previews. An agent that asks for validate_only itself gets the plan back as a normal result.
  • IAM changes through MCP need someone who may set IAM policy on the target, and always a second person.
  • Following up. approvals_get and approvals_list read approvals; approvals_get returns the applied change. approvals_begin_batch and approvals_submit_batch group up to 100 held calls into one approval.
  • Agents never approve. No tool votes, cancels an approval or breaks glass.

Pending approvals expire after 24 hours by default. See Identity and access for approval rules.

  • Audit. Every call is recorded with the person, the client, the approval and the result, and the console filters actions by agents.
  • Ceilings. Organization admins see every connection under Organization › IAM › Agents and MCP and can cap what agents may do with a ceiling role.
  • Kill switch. Suspend all agents on the same page stops every agent token on its next call. You can also suspend one agent.

Agents on Frazer Agents have an MCP endpoint of their own, with tools to send a message, list sessions and get status.

Every error names the next call to make. A failed call is a tool error (isError) that carries the reason, the domain and the metadata of the API error. Its _meta holds frazer.ai/decisionId, the decision ID you can replay to see why a call was denied, and frazer.ai/error, the full error.

Each product’s toolsets and named tools, one per row, from its page. Read tools need the service’s read scope; write tools need its write scope and always wait for approval.

Kubernetes

ToolWhat it does
kubernetes_versions_listList the Kubernetes versions of each channel with their end-of-support dates.
kubernetes_clusters_upgrade_planPlan an upgrade with its steps, preflight results, risk to each workload, duration and slot.
kubernetes_clusters_rehearse_upgradeRehearse an upgrade on a clone of the cluster's state and report what would break.
maintenance_events_listList planned maintenance events.
maintenance_insights_listList insights, such as deprecated API calls that block an upgrade.

Serverless

ToolWhat it does
serverless_detectRead a repository and list the data it needs (Postgres, Valkey, a bucket, an LLM gateway route).
serverless_services_deploy_planPlan a deploy, Kubernetes or serverless, with the detected resources, bindings and cost. Writes become a plan that waits for approval.
serverless_services_getShow a service's state, revisions and traffic.
serverless_logs_listRead a service's logs.
serverless_traffic_update_planPlan a traffic change or a rollback. Writes become a plan that waits for approval.
serverless_stacks_create_planPlan a new stack or a change to one. Writes become a plan that waits for approval.

GitHub runners

ToolWhat it does
frazer.runners.v1Read pools, jobs, phases, tests, insights and a lane's remaining budget; plan pool changes. Writes become a plan that waits for approval.

Cache

ToolWhat it does
frazer.cache.v1Read caches, namespaces and policies, test what a writer may do, and plan a purge. Writes become a plan that waits for approval.

Registry

ToolWhat it does
registryRead repositories, images, versions, scan results and where each digest runs. Pushing stays with CI.

Templates and previews

ToolWhat it does
previewsRead previews and preview policies, so agents see the same previews as people.

LLM gateway

ToolWhat it does
llm_usage_getRead gateway usage and cost.
llm_routes_listList the project's routes and their steps.
llm_keys_createPropose a key change for a person to apply. Writes become a plan that waits for approval.

Knowledge

ToolWhat it does
knowledge_bases_searchSearch a knowledge base and return the chunks the caller may see.
knowledge_bases_askAnswer a question with citations, or decline with a reason.
knowledge_documents_getRead one document the caller may open.
knowledge_sources_listList the sources of a knowledge base.
knowledge_feedback_createGrade an answer (good, weak, wrong, uncited, wrongful decline or correct decline).
knowledge_proposals_createPropose a document for the knowledge base; a person or a passing check accepts it. Writes become a plan that waits for approval.

Frazer Agents

ToolWhat it does
send_messageOn an agent's own MCP endpoint, send the agent a message.
list_sessionsOn an agent's own MCP endpoint, list the sessions you may see.
get_statusOn an agent's own MCP endpoint, read the agent's state.
improvements_listList an agent's improvement steps and their states.
improvements_getRead one improvement step with its tests, its gain and its canary.
improvement_kinds_listList the kinds of change a scope's policy approves and the kinds that wait for a person.
revisions_explainExplain an agent revision. Approving a revision is a person's step; there is no MCP tool for agents to do it.

Frazer Browsers

ToolWhat it does
browser_openOpen a browser and return its first snapshot.
browser_snapshotRead the page as compact text with refs.
browser_runRun a script of many steps, with a receipt per step.
browser_checkCheck the UI or the state behind it.
browser_reproReproduce an issue and return the recording and the exported test.
browser_handoffAsk a person for a sign-in, a challenge or a payment; a sign-in card on an allowed outside origin.
browser_policy_getThe project's browser policy.
desktop_screenshotA screenshot of a desktop, for what the accessibility tree misses.

Frazer Skills

ToolWhat it does
skills_listList the skills in the registry and the skill sets.
skills_getRead a skill version, its checks and its use.
skills_searchSearch the registry and the public skill index by task.
skills_usesRead which sessions used a skill and what came of them.
skills_importOpen an import as a pull request on the mirror repository. Writes become a plan that waits for approval.
skills_suggestOpen a suggestion for a skill, with its evidence. Writes become a plan that waits for approval.

Harnesses

ToolWhat it does
harnesses_listList the harness catalog.
harnesses_explainExplain which profile a session ran on and why.
harnesses_assignments_setAssign a profile to a use. Writes become a plan that waits for approval.
harnesses_simulateStart a simulation of your tasks across profiles, with its estimate first. Writes become a plan that waits for approval.
harnesses_postmortems_listThe Frazer harness's postmortems, as data.

Squads and campaigns

ToolWhat it does
campaigns_createCreate a campaign; with validate_only, return its estimate and whether the starter's policy allows it. Writes become a plan that waits for approval.
campaigns_getA campaign's count line, states and exceptions.
campaigns_explainWhy a task is waiting or did not run.
campaigns_simulateSimulate a campaign before it starts.
campaigns_scanThe recipe scan's data table.
campaigns_landedThe landed share and the burndown.
campaigns_sessions_listA campaign's sessions, by state and reason.

Frazer Reviewer

ToolWhat it does
reviews_requestRequest a review of a diff, a directory or a file, of a kind, the estimate first. Writes become a plan that waits for approval.
reviews_loopStart a review loop on a target, with its budget and turns. Writes become a plan that waits for approval.
findings_listList the findings of reviews.
findings_resolveResolve a finding with a fix, an answer or a contest with evidence. Writes become a plan that waits for approval.
rules_listList the review rules that apply, so a coding agent sees them before it opens a pull request.
rules_proposePropose a rule draft. Writes become a plan that waits for approval.

Lanes, verdicts and outcomes

ToolWhat it does
reviews_verdictThe verdict for a pull request version, with its lanes, independent evidence and independence.
lanes_listList the lanes in scope.
lanes_testBacktest a lane.
reviewer_runs_getA review run as recorded.
items_listThe items of a review run and their results.
reviewer_outcomes_listOutcome links for a change, an incident or a lane.
misses_getA miss analysis with its remedies.
lanes_validateCheck a lane file against the lane contract.
lanes_exportExport a lane as lane JSON, a skill or SARIF rules.
lanes_importTurn a REVIEW.md, an AGENTS.md or a skill into lane drafts (a dry run returns them).
reviewer_coverage_getWhat one review run covered.
headlines_searchSearch finding headlines across the repository's life.
reviewer_quality_getThe Reviewer's measured quality, per lane and period.

Databases

ToolWhat it does
database_instances_listList database instances.
database_instances_getDescribe an instance.
databases_queryRun a read-only query.
databases_explainExplain a query's plan.
databases_insights_topList an instance's top queries.
databases_recommendations_listList index and tuning recommendations.
databases_backups_createTake an on-demand backup. Writes become a plan that waits for approval.

In-memory store

ToolWhat it does
keyvalue_instances_listList instances.
keyvalue_instances_getDescribe an instance.
keyvalue_instances_get_metricsRead an instance's metrics.
keyvalue_insights_big_keysList the biggest keys.
keyvalue_insights_command_logRead the command log of slow and large commands.
keyvalue_instances_scanScan keys read-only, with value previews capped at 1 KiB.
keyvalue_instances_createPlan a change, failover, flush or delete. Writes become a plan that waits for approval.

VPC and firewall

ToolWhat it does
connectivityTests.runRun a connectivity test and return every hop with the rule that allowed or dropped the traffic.

Security Center

ToolWhat it does
list_findingsList findings with their priority reasons.
get_findingGet one finding with its evidence and fix.
list_threatsList runtime, account, agent and network detections.
list_controlsList controls with their mode, owner and status.
explain_pathExplain the attack path behind an exposure finding.

Identity and access

ToolWhat it does
iam_troubleshoot_accessExplain a decision by its ID, or a principal's access to a resource.
approvals_listList approvals, such as the ones an agent's writes are waiting on.
approvals_getGet an approval and, once applied, the result of the change.
approvals_begin_batchStart a batch, so up to 100 held writes become one approval.
approvals_submit_batchSubmit a batch of held writes for one approval.

Billing and budgets

ToolWhat it does
usage_digest_chain_getGet the head of a project's chain of signed usage digests.
  • API: the methods behind the tools
  • CLI: frazer mcp install and approvals from the terminal
  • Identity and access: roles, ceilings, approvals and the kill switch
  • Frazer Agents: agents that run on Frazer
  • Errors: reasons and decision IDs