Skip to content
Console
Browse documentation
Reference

MCP tool reference

Understand Anectico's MCP tool families and discover the tools available to your key.

On this page

The remote MCP server exposes only the tools allowed by the connected key. Let the MCP client discover the current tool definitions instead of copying a fixed catalog into prompts.

Start with search and fetch

Two tools are the way in, and everything else is where you go next.

  • search takes one query and looks for it across people, issues, log lines, business accounts and Anectico's own documentation in a single call. It returns a compact list of hits — each a ref, a canonical anectico://… reference — plus a per-source report saying which sources were searched and which were skipped and why.
  • fetch takes one of those references and returns the object it names.

Neither adds any search power of its own. search runs each source through that source's own tool and says which one produced every hit; fetch returns exactly what the object's own read tool returns. So the answer always tells you the specialised tool to use when you need its filters — service, severity, window, cursor — and your key needs the same scopes it would have needed to call that tool directly. A source your key cannot read is reported as such and is never queried.

A ref is also what every tool's evidence array carries — but a citation is not automatically fetchable, and the two are worth keeping apart. fetch resolves exactly seven kinds: person, error_group (an issue), trace, incident, agent_run, account and doc (a documentation page). Every search hit carries fetchable, so check the flag rather than the presence of a ref. Note the singular: the search report calls the source docs and the reference kind is doc.

Three cited kinds are deliberately not fetchable, and each refusal names the way through:

Cited kind Why not What to do instead
log A log line has no single-object read Find it with search_logs, or fetch the trace its citation carries
session A recording is reached by its own panel get_session_signals with the session id
query It is a re-runnable query, not an object Re-run the tool the citation names

Traces are deliberately not a search source. Traces are found by filter rather than by text (search_traces takes service, operation, person, minimum duration and errors-only), and by pivot: a log hit carries its trace reference, which fetch resolves.

The reference is fetch's only argument. It already carries the project when the object needs one, so there is nothing else to pass — and holding a reference grants nothing on its own: every fetch is authorized against your key exactly as the original read was.

Focus the tool list with a profile

Add ?profile=<name> to the MCP endpoint URL to narrow what your client is offered:

https://app.anectico.com/mcp?profile=incident
Profile What it leaves visible
investigate The read-only debugging surface: people, issues, logs, traces, metrics, service health, timelines, cohorts, product events, feature-flag decisions, agent runs, and this documentation. No mutations at all.
incident Everything in investigate, plus the incident and alert lifecycle: who is paged, what fired, what was delivered, what was filed, and the writes that respond to it.
agent-observability AI-agent operations: agent runs, their transcripts, what they cost, and the evaluation loop.
admin Organization administration: keys, members, projects, connections, plan usage — and this documentation, since configuring a scope or an alert is where looking one up matters most.

Three things are worth being exact about:

  • A profile can only ever subtract, never reveal. What it subtracts, it subtracts for the whole connection: a tool a profile excludes is not listed and cannot be called, even by a key that holds its scope. Your key's scopes are unchanged, and reconnecting without the parameter gives you the full surface again — which is why this is a focus control rather than a permission. If you want a genuinely narrower credential, mint one: anectico apikey create --scope-profile investigate materializes the same bundle into actual scopes.
  • Omitting the parameter changes nothing. Without ?profile=, you get everything your key is scoped for, exactly as before.
  • An unrecognized profile is refused with 400 and the list of valid names, rather than being ignored. A typo that silently served the whole surface would look like the filter working.

Because a profile only ever subtracts, search and fetch disappear under a profile that admits none of the tools they route to, and they disappear independently. Today search is absent under agent-observability, which names none of its sources; fetch survives there and resolves agent_run references alone, refusing the other kinds by naming the tool that would answer for them. Under admin both are served but route to the documentation only. Connect without the parameter, or use a profile whose sources you need.

Which client can use the endpoint at all, and how large a tool list each key produces, is in MCP client compatibility.

How the surface is organized

MCP hosts have a practical limit on how many tools they handle well, and none of them publishes it: the overflow simply stops being offered to the model inside your client, with nothing reported. Anectico therefore budgets against two deliberately pessimistic design targets — 40, past which we assume a host may silently drop tools, and 50, past which we assume selection accuracy degrades — keeps the tool list small on purpose, and reaches the rest through gateways:

  • First-class tools are the investigation core, the reads you use constantly while debugging: Issues and affected customers, logs, traces, metrics, service health, customer and account timelines, incidents, alerts, anomalies, session replay, cohorts, product events and feature-flag decisions, and agent runs.
  • list_read_actions / execute_read_action reach the administrative reads: on-call schedules and rotation resolution, notification delivery receipts, external ticket links, saved findings, B2B account lookup, product and export definitions, plan/quota usage, and LLM cost.
  • list_write_actions discovers the less common mutations, alongside a few daily write actions promoted to first-class tools. Running one uses execute_internal_action or execute_external_action — see below.

Nothing is unavailable behind a gateway, and an action your key is not scoped for is neither listed nor runnable. Scopes are per action, not per gateway.

Two doors for writes, and the three properties every mutation declares

There are two tools that run a discovered mutation, not one, and which of them accepts an action is decided by how far that action's effect reaches:

  • execute_internal_action runs an action whose effect stops inside your organization — creating, updating or deleting Anectico's own records. An internal action may still contact an outside provider while it runs, such as to validate a connection credential; the distinction is that it leaves no lasting effect there.
  • execute_external_action runs an action that also causes something Anectico cannot retract: a message delivered, an email sent, an issue filed or closed in your own tracker. Deleting the Anectico-side record afterwards does not unsend it.

Every action belongs to exactly one of the two. Calling the other door is refused with the same answer an unknown action id gets, so the pair cannot be used to probe what your key can reach.

Your arguments are checked against the action's published schema before anything runs. Send a field the action does not declare, or the wrong type for one it does, and the call is refused and names the field. A mistyped argument is never quietly ignored or read as an empty value, so a typo cannot turn into a write against a blank id or an empty filter. Two keys are accepted on every action whether or not its schema lists them, because they belong to the call rather than to the action: idempotency_key, and confirm_token on an approval-gated action.

list_write_actions reports three independent properties for every action, and none of them implies another:

Property Question it answers Values
effect_scope How far can this reach? internal, external
destructive Does it remove state a key holding only this action's scope cannot put back? true, false
approval Does it require preview-and-confirm before it applies? confirm, none

approval is about the protocol, not about a person. confirm means the action will not apply on the first call: it previews, hands back a confirm_token, and applies only on an identical second call carrying that token — once. "Identical" includes any idempotency_key you sent with the preview. Once spent, the token cannot authorize another application.

After a successful apply, an identical retry with the same idempotency_key returns the saved receipt with outcome: "replayed" while the token is still valid and the result is available in the retry window; it does not apply the action again. Without a saved result to replay, repeating a spent token is refused. A confirmation that cannot be claimed refuses the write and changes nothing.

Confirmation does not mean a human saw the preview — nothing in the server can tell someone pressing approve from an agent immediately calling again with the token. Whether a human is in the loop is a property of your MCP host's approval settings, and yours to verify.

An action can be external and non-destructive (filing a ticket creates something rather than removing it), internal and destructive (deleting a dashboard), or any other combination. Each entry also carries execute_with, naming the door that will accept it.

Because the three are independent, destructive is not a door — it spans both. Pass it as a filter to get the complete set: list_write_actions accepts effect_scope, destructive and approval alongside domain and query, and an unfiltered call is never truncated.

Every successful write call returns structured content, beside the sentence you read — there is no action that answers with prose alone. A receipt names what the write was about, what the change committed to, when the change was recorded as happening, and whether anything actually moved; where the platform cannot tell, the field is null rather than a plausible guess. Every action publishes the schema in its list_write_actions drill-in, so you can code against the shape before you call it, and the server checks each result against that schema before serving it.

Read the outcome field to tell the three successful stages apart:

  • applied — the state you asked for now holds, because of this call. That includes the idempotent case: a delete addressed at something already gone asked for "this is not here", and that is now true. It is deliberately not a claim that a row was written, because a receipt that distinguished "removed something" from "there was nothing to remove" would answer the existence question the next paragraph explains is not on offer.
  • preview — nothing happened. This is the first call of an action whose approval is confirm. The summary carries the confirm_token and the instructions for applying, so you can drive the whole confirm flow from the structured half without parsing prose.
  • replayed — an earlier identical call did this; you are seeing its result again. You get this when you retry with the same idempotency_key and arguments inside the retry window. The receipt is the one that call produced, so it is safe to treat as the answer to your retry.

If an identical call carrying the same idempotency_key is still running, you get an error telling you to retry shortly — not a receipt. Nothing has been lost: the first call is still going, and its result becomes replayable once it finishes.

A delete succeeds when there was nothing to delete. Deleting an id that does not exist returns an ordinary receipt rather than an error, and that receipt is identical to the one you get for an id that was really removed — it names the id you addressed and says in its warnings that it makes no claim about whether that object existed beforehand. This is deliberate, and it has two consequences worth coding against. A delete is safe to retry: an error means the call did not land and you should try again, a receipt means you can stop, and the two never blur. And a receipt is not confirmation that the object was there — if you need to know that, read it back before you delete, or check the error the read gives you. The reason for the rule is that a delete is not a way to ask what exists: a key holding only a delete scope would otherwise learn which ids were real by watching which calls failed, without being scoped to list them.

The exception is a delete that takes an expected_version. Those refuse an unknown id and refuse a stale version as two different errors, because they cannot report a verified version for a row they did not compare against, and because a version conflict is a signal you need — it means somebody else changed the object and you should look again before deleting it.

Telling those two errors apart does reveal whether the object exists, so every one of them requires the matching read scope as well as its delete scope — delete_dashboard and delete_widget need dashboard:read, and delete_account_segment needs account_segments:read. That is the price of keeping the version conflict visible, and the tables below list it. An earlier version of this page argued the requirement was unnecessary because "you already need a current version to call them, so you have already read the object". That was wrong: nothing checks where your version came from, so a deliberately wrong number returns the same two errors and answers the same question without deleting anything.

delete_cohort requires analytics:read for the same reason, arrived at from the other direction: removing a cohort does extra work that only happens when the cohort is really there, so while that work is failing the two cases stop looking alike. Requiring the scope that can list cohorts means the difference tells you nothing you could not simply have asked for.

A committed write's receipt carries effect_scope and destructive too, so a record of what you did says how far it went without re-reading the catalog. Product definitions and exports are separate actions with their natural scopes: list_projects requires projects:read, list_flags requires flags:read, the dashboard actions require dashboard:read, export job list/detail requires export:read, and get_export_download requires export:download plus continued access to the exported source data. Neither tool listings nor action listings report scopes; the tables below are where you look up what each action requires.

Every tool and action

The endpoint serves 634 capabilities: 38 first-class read tools, 313 read actions behind the read gateway, 7 write tools promoted out of the write gateway, and 276 write actions behind it. The five gateway tools themselves — list_read_actions, execute_read_action, list_write_actions, execute_internal_action and execute_external_action — are the doors onto those actions rather than capabilities of their own.

Scopes

Every capability is gated twice, and both gates must pass:

  1. the umbrella scope for that side of the endpoint — mcp:read for every read, mcp:write for every write;
  2. the domain scope in the capability's own row below.

A key minted with mcp:read and nothing else is served an empty tool list. Mint the key with the domain scopes the agent's job needs, and expect a tool to disappear when one of them is missing.

The search and fetch entry points are the only rows whose scope cell reads differently, and they are still not an exception to that: each routes your call to one of the tools named in its cell, checks that tool's own scope before it runs, and is not offered at all to a key that holds none of them.

Both halves of the gate are real: a capability your key is not scoped for is never listed, and calling it by name is refused with the same answer an unknown name gets — so the surface cannot be used to enumerate what your key is missing.

The scopes in a row are the minimum, and five capabilities need more. A capability whose work reaches another area is checked again where that work happens:

  • create_export_job and export_logs also require the exported signal's own read scope — logs:read for a logs export, traces:read for traces, and so on. Without it the export is refused, so export:write alone cannot commission an export of data the key may not read.
  • retry_export_job re-checks the same requirement against the job it is re-running, so a key that has since lost the signal's read scope cannot regenerate the file.
  • get_export_download also requires the read scopes the job's rows came from, re-checked against the caller's CURRENT scopes at the moment of the request, and it is limited to whoever created the job or to an owner or admin.
  • set_issue_status additionally requires members:read only when assigning to a non-empty member. Resolve, ignore, unresolve, unassign, and its other actions need only the scopes shown in the row.

Everything else is gated exactly as its row says.

The Area column groups related capabilities. For a read action it is exactly the domain filter: pass it to list_read_actions to drill into that area and get its actions' argument schemas. The write gateway browses under display names — dashboards, cohorts and a few others differ from the Area shown here — but its domain filter accepts either form, so the Area value below always drills in.

First-class read tools

Registered as their own MCP tools, so an agent can select one directly without a discovery hop.

Tool Area Required scopes What it answers
get_account_timeline accounts mcp:read + groups:read. A complete answer also needs agents:content:read Get one business account's merged newest-first timeline across every person in it, optionally restricted to one signal or window.
list_agent_fleet agent_fleet mcp:read + agents:read List the project's agent fleet with 24-hour run and failure counts, open review signals, containment metadata when authorized, and explicit unattributed activity.
get_agent_run agent_runs mcp:read + agents:content:read Get one AI agent run: its status, steps, tokens and cost, plus its transcript's first two and last four available messages from at most the earliest 1,000 spans by start time. Reports partial and returned/total span counts; the whole-run transcript is unknown on partial reads.
list_agent_runs agent_runs mcp:read + agents:read List AI agent runs newest-first with their outcome, step and tool counts, model providers, cost and release coverage, filtered by agent, person, account, environment, release, status, provider or free text over a relative or exact window; cursor-paged over the exact window each page echoes.
get_active_alerts alerts mcp:read + alerts:read List the currently-firing alerts with severity, state, start time and the identifiers the acknowledge and resolve actions consume.
list_alert_rules alerts mcp:read + alerts:read. A complete answer also needs api_key:read, members:read List the configured alert rules with their severity and active state, plus the silences currently in effect and their windows.
get_analytics_result analytics mcp:read + analytics:read + persons:read History refusals carry the current earliest_available_start and failure_message. Read an immutable product result under current source authority; optional include_image requests a bounded PNG alongside evidence and viewer metadata; preserves definition, charts, value states and coverage without rerunning it. A pending or running execution reports status and result id with no payload; wait_millis (default 0, max 25000) polls this endpoint locally for a terminal status before returning.
list_event_names analytics mcp:read + analytics:read List one project's captured product-event names with their counts, optionally narrowed by name prefix or an exact event property.
list_event_triggerers analytics mcp:read + analytics:read Page the people who triggered one product event in one project over an exact window, optionally narrowed by an exact event property.
list_anomaly_findings anomalies mcp:read + anomalies:read List detected statistical anomalies with their signal, metric, severity, score, detection time and a plain-English explanation, optionally filtered by status. sort chooses the order: newest first by default, or actionability to put the findings a ranking model judged most likely to be real faults first and unranked ones last. A ranked finding carries actionability_score (0-3) and likely_real; both orders return the same findings, and an unmarked finding is one the ranking did not promote, never one it called noise.
get_cohort_members cohorts mcp:read + analytics:read Page every person in one cohort, optionally as of one retained historical generation rather than the current one. Requires the generation's source scopes: persons:profile:read and/or agents:content:read when applicable.
list_cohort_generations cohorts mcp:read + analytics:read List one cohort's materialization history newest-first: member counts and deltas, why each was built, whether its members are retained, and its mirror status. Counts require the selected and preceding generations' source scopes (persons:profile:read and/or agents:content:read); membership_withheld identifies unavailable counts, whose zero is not a measured empty cohort. Original content-erasure evidence must remain valid.
list_cohorts cohorts mcp:read + analytics:read List one project's cohorts with their kind, member count and current generation, or get one cohort's full definition, version and mirror state. Counts require the sources' scopes (persons:profile:read and/or agents:content:read); membership_withheld identifies unavailable counts, whose zero is not a measured empty cohort. Original content-erasure evidence must remain valid.
preview_cohort cohorts mcp:read + analytics:read Evaluate a candidate cohort definition and return its exact size plus a deterministic sample, without saving it or changing any existing membership. Profile predicates require persons:profile:read; declared or nested content event filters require agents:content:read and allowing current policy. Preview refuses expired history, changed policy/declarations, missing source evidence or exceeded source limits; no partial audience is returned.
get_affected_users errors mcp:read + errors:read. A complete answer also needs groups:business:read, groups:read Get an error issue's blast radius: the people it hit with their first and last occurrence, the accounts they belong to, and the totals behind both.
get_issue errors mcp:read + errors:read. A complete answer also needs agents:content:read Get one error issue's root-cause payload: status and counts, the latest occurrence with captured and resolved stack positions, per-frame symbolication state, resolution counts, artifact coverage and breadcrumbs, the suspect commit (at most one, with its date and the blamed file and line) and recent occurrences, plus the needs-attention marker and suggested area when the platform set them — an affirmative hint that never changes the issue's priority, status or notifications.
list_issues errors mcp:read + errors:read List error issues with their event and affected-people counts inside a fixed window, filtered by status, service, release, environment, platform, mechanism or occurrence text. Sort by last_seen (default) or attention. Count is this page; total is present only when matches were counted. Follow cursor with unchanged selections. An issue the platform marked as needing attention says so, with the part of the application it looks like it comes from; no marker means only that nothing promoted it, never that it is fine. The optional attention order puts marked issues first and hides nothing.
search_issues errors mcp:read + errors:read Find error occurrences whose message or type matches a search term, optionally narrowed by service, severity and look-back window. Each row is one occurrence with the id of its issue. Matching occurrences and distinct issues are counted separately.
get_experiment_result experiments mcp:read + experiments:read Read a product experiment's fixed-horizon result: descriptive per-arm counts until it is final; then the immutable snapshot, rates and, for a valid run that met the floor, the score-test difference, p, 95% interval, sample-ratio check and decision.
decide_feature_flags flags mcp:read + flags:read Evaluate one project's feature flags for one person, returning each flag's decision and payload given the supplied person properties and account memberships.
get_incident incidents mcp:read + incidents:read Get one incident's case file: version, ordered timeline, evidence, linked signals. Delivery receipts are available separately through the CLI incident view with channels:read.
list_incidents incidents mcp:read + incidents:read List one project's incidents, optionally filtered by lifecycle status, with the current version each lifecycle write has to quote.
get_log_patterns logs mcp:read + logs:read Cluster a window's logs into recurring templates with counts — each carrying a suggested category and an attention flag once it has been labeled, and neither until then — or, with a group-by field, return that window's log counts grouped by it. Returned patterns and groups are bounded selections, not full populations. Pattern total and group total are unknown; grouped percentages and returned_group_logs cover only the service's returned groups.
search_logs logs mcp:read + logs:read Search log lines by text with optional service, severity, trace, person, look-back and typed field filters (AND, OR, NOT, comparisons, contains, RE2 matches, exists), returning each line with its canonical log ID, owning project ID and trace/span correlation.
query_metrics metrics mcp:read + metrics:read. A complete answer also needs agents:content:read Query one native metric as a bucketed time series over a window, or — with no metric name — list a bounded catalog with type, unit, aggregation_temporality, source_kind and query_tool. Log-derived entries include log_metric_rule_id: use query_log_metric through execute_read_action with that rule_id. catalog_truncated marks an incomplete catalog; name_total is absent then. match filters only the returned catalog and cannot recover omitted names. Named reads accept exact project, environment, service, dimension filters/grouping and since/until (or window). include_exemplars requires one project; exemplar_limit is 1–100 (default 20). Results disclose effective selection, retention coverage, selected-scope completeness and attribute omissions. These are selected observations in native units, not the percentile observation or an exhaustive upstream population. Sensitive attributes need agents:content:read and an allowing policy; following a returned trace reference separately needs traces:read. Reducers: sum, avg, max, min, count, p50, p95, p99, stddev, variance (default avg). Scalar percentiles use sample quantiles over temporality-normalized effective values. Histogram percentiles use observation-weighted bucket upper bounds, not exact observations within buckets. A terminal +Inf bucket returns the largest explicit bound as a lower-bound clamp, or zero without explicit bounds; never an exact latency. Summary quantiles cannot be merged across points, streams or buckets; distribution reducers are refused (only sum, avg, count). stddev and variance describe the population of effective point values (histogram point sums), not a histogram observation distribution. An interval percentile is not the full-window percentile: do not average interval percentiles or infer causation.
find_silent_people persons mcp:read + persons:read. A complete answer also needs agents:content:read, analytics:query, analytics:read, errors:read, insights:read, metrics:read, persons:profile:read, surveys:read, traces:read List the known people who hit a failure in one project and one window (default 24h, at most 7d) and have no matching report in the report sources Anectico holds, including selectively agent-recorded technical complaints with incomplete external coverage, with what was observed of each afterwards. Says which sources were checked and which were not, who did report, and the failures and reports tied to nobody. Never returns report text and never judges whether a person will leave.
find_struggling_people persons mcp:read + persons:read. A complete answer also needs agents:content:read, analytics:query, analytics:read, errors:read, insights:read, metrics:read, persons:profile:read, traces:read Find the known people having a bad time in one project and one window (default 24h, at most 7d), ranked, each with the evidence: errors, slow traces, click friction and poor Web Vitals, every threshold a parameter. Says who qualified and why, the population, what was not measured and what could not be given to a person.
get_person_profile persons mcp:read + persons:profile:read Get one person's identity card: canonical id, identified flag, top profile properties, first and last seen, and per-signal activity counts. A property value that reads [REDACTED] was replaced before storage, and no scope reveals it.
get_person_timeline persons mcp:read + persons:read. A complete answer also needs agents:content:read Get one person's merged newest-first timeline across product events, errors, traces, logs, agent runs and sessions, optionally restricted to one signal or window. A value that reads [REDACTED] was replaced before storage; a field withheld from the credential is named in the result. A picture contains only the returned page; counting and further paging stay explicit.
resolve_person persons mcp:read + persons:read Collapse any identity key — a person id or a raw distinct id — to the one canonical person and its distinct-id aliases. Identifiers are returned as the application sent them and are never redacted.
search_persons persons mcp:read + persons:read. A complete answer also needs persons:profile:read Find people by the identifiers the application sent and by profile properties stored in the clear, and return each one's canonical person id, identified flag and distinct-id aliases. Returns one page: count is the rows shown, total is the backend's matching count when counted, and pagination.next_cursor continues the same search as cursor. An email in a profile is stored redacted and is not matched; an email that matches nothing returns a hint instead of proof of absence.
get_session_signals replay mcp:read + replay:content:read Get the cross-signal panel for one session recording: the errors and product events captured during it, and the person it belongs to. Requires a current active project; project verification outages fail the read.
list_recordings replay mcp:read + replay:read List a person's session recordings newest-first with each session's start, end, duration, explicit format and version. Supported browser and native structural recordings carry a read-only playback link; metadata alone is not playback evidence. Only current active projects are included; project verification outages fail the read.
fetch search mcp:read + the scope of the tool it routes to (get_account_timeline, get_agent_run, get_doc, get_incident, get_issue, get_trace, resolve_person) Resolve one citation reference — the anectico:// value a search hit or an evidence citation carries — to the object it names, returning exactly what that object's own read returns.
search search mcp:read + the scope of the tool it routes to (search_accounts, search_docs, search_issues, search_logs, search_persons) Find people, issues, log lines, business accounts and documentation pages matching one query. Each hit states fetchable: only supported references can be resolved by fetch; log references use search_logs or get_log_entry. Org-wide unless a project is supplied or the credential is project-scoped.
get_service_health services mcp:read + services:read Get a top list of per-service health, request count, activity rate, error rate and latency ordered over every measured service in a window (sort_by, sort_order, limit 1-200, default 50, health_filter and service_match chosen over every measured service before the limit, with eligible, matched and omitted counts), a single service's bucketed series, or a bounded long poll that returns on a health change. Qualified snapshots include a read-only picture; include_image requests or suppresses its bounded PNG. Activity is entry spans per second, errors are fractions and snapshot percentiles are milliseconds. Series without retained-window qualification and wait pictures are unavailable; ordinary evidence remains usable.
get_trace traces mcp:read + traces:read. A complete answer also needs agents:content:read Get one distributed trace by id: at most 40 spans selected from the earliest 1,000 by start time, prioritizing errors then slowest remaining spans. Reports partial and returned/total span counts. Linked consumer discovery is capped at 64; an overflow leaves the matching total unknown. Shown spans keep their owning trace IDs. Unknown whole-trace summaries are absent on partial reads. Errors may be omitted.
search_traces traces mcp:read + traces:read Find distributed traces by service, operation, person, minimum duration, error presence or exact span attributes over a window. Canonical person_id requires persons:read and one project, excludes raw distinct_id, and resolves the complete identity (maximum 1000 aliases). Continuation freezes the window and refuses changed identity or filters. Returns exact project/trace keys, coverage and each trace's root operation and id. Orders the whole matching set before paging, newest first by default (sort=start_time).

Read actions

Reached with execute_read_action after finding them through list_read_actions. Each enforces exactly the scope its own tool would; the discovery hop is what buys back the tool slots the host limit is measured in.

export_account_business_inputs through preview_product_query

Action Area Required scopes What it answers
export_account_business_inputs accounts mcp:read + groups:business:read + groups:read Export one bounded current declaration page with provenance. Every page independently requires current READ and EXPORT allowance as well as financial grants. No global snapshot or account proof page.
get_account_business_inputs accounts mcp:read + groups:business:read + groups:read Read one exact current account declaration, with state, business revision and observation time. Missing money is not zero; labels are untrusted.
get_account_business_write_result accounts mcp:read + groups:business:read + groups:read Recover the original actor-bound write outcome by operation ID or retry key. A missing receipt leaves the outcome unknown; redacted or expired binding cannot authorize replay.
get_account_profile accounts mcp:read + groups:read. A complete answer also needs groups:business:read Read one exact account profile with a lossless stored revision, bounded untrusted properties and owning policy availability. Optionally read retained product-event activity; unavailable statistics have no count.
get_account_reliability accounts mcp:read + agents:content:read + groups:read + traces:read Read completed observed server attempts, exact counts and approximate latency with full population and evidence boundaries for accounts in one selected project and service; account reads require current account and content authority.
list_account_business_inputs accounts mcp:read + groups:business:read + groups:read List a bounded current declaration page using exact filters; pages are separate observations, never a global snapshot.
list_account_members accounts mcp:read + groups:read List declared member identifiers of one B2B account, including unresolved identifiers and optionally removed memberships; cursor-paged. This is not a count of resolved people.
list_account_segments accounts mcp:read + account_segments:read The account segments defined in a project, with their filters.
list_api_key_scopes accounts mcp:read + api_key:read Read one page of grantable API key scopes grouped by resource; follow next_cursor unchanged.
list_members accounts mcp:read + members:read The organization's members and their roles.
preview_account_reliability accounts mcp:read + agents:content:read + groups:read + traces:read Advisory metadata preview that reserves nothing and estimates no source size for accounts in one selected project and service; account reads require current account and content authority.
preview_account_segment accounts mcp:read + account_segments:read + groups:read The accounts one segment currently matches.
rank_account_latency accounts mcp:read + agents:content:read + groups:read + traces:read Read completed observed server attempts, exact counts and approximate latency with full population and evidence boundaries for accounts in one selected project and service; account reads require current account and content authority.
search_accounts accounts mcp:read + groups:read. A complete answer also needs groups:business:read Find business accounts by key or name, returning the account type and key the account-anchored reads need. An empty query lists recent accounts in the selected project; account types are hints only when no accounts match.
list_agent_activity agent_activity mcp:read + activity:read. A complete answer also needs audit:read List what agents did in Anectico, newest first: every call an API key or an OAuth connection made (MCP, CLI and REST, reads included) with its outcome, duration and the objects it named; cursor-paged and kept for your plan's audit history. You see your own calls; with audit:read as well, every agent in the workspace.
summarize_agent_activity agent_activity mcp:read + activity:read. A complete answer also needs audit:read Count what each agent did in Anectico over a window (default 24h): calls, refusals, errors, write-class calls, calls whose end is unknown, reads that could not be recorded, and last seen; also the skill reports the CLI made (installed, upgraded, removed). You see your own calls; with audit:read as well, every agent in the workspace.
summarize_proof_link_opens agent_activity mcp:read + activity:read. A complete answer also needs audit:read Count which read-only proof pages people opened in the Console, by kind and by day, list the most opened objects and compare them with the objects your agents' answered MCP calls returned: how many were opened afterwards and how many never were. Counts name nobody; with audit:read as well, who opened. Counts objects, not links followed; sees opens in the Console only.
get_agent_budget agent_budget mcp:read + activity:read. A complete answer also needs audit:read Read own accepted operation counts and remaining allowance in the current UTC hour and day, and the request-rate allowance (requests per second and burst) resolved under the plan, with the requests left in the key's and the workspace's bucket; unavailable counts are unknown, never zero. Owners with audit:read may read other agents and workspace policy.
get_agent_usage agent_budget mcp:read + activity:read. A complete answer also needs audit:read Read one credential's accepted usage by UTC hour/day, with explicit bounds and a conclusion. Asynchronous history can undercount; missing buckets are not zero. Own: activity:read; other credentials: audit:read.
get_agent_delivery agent_destinations mcp:read + event_destinations:read Read owned event destination metadata, bounded retained delivery receipts or recorded attempts. Receipt pages include queued and terminal dispositions and finite retention; they are not lifetime totals. Signing secrets and receiver content are never returned.
get_agent_destination agent_destinations mcp:read + event_destinations:read Read owned event destination metadata, bounded retained delivery receipts or recorded attempts. Receipt pages include queued and terminal dispositions and finite retention; they are not lifetime totals. Signing secrets and receiver content are never returned.
list_agent_deliveries agent_destinations mcp:read + event_destinations:read Read owned event destination metadata, bounded retained delivery receipts or recorded attempts. Receipt pages include queued and terminal dispositions and finite retention; they are not lifetime totals. Signing secrets and receiver content are never returned.
list_agent_delivery_attempts agent_destinations mcp:read + event_destinations:read Read owned event destination metadata, bounded retained delivery receipts or recorded attempts. Receipt pages include queued and terminal dispositions and finite retention; they are not lifetime totals. Signing secrets and receiver content are never returned.
list_agent_destinations agent_destinations mcp:read + event_destinations:read Read owned event destination metadata, bounded retained delivery receipts or recorded attempts. Receipt pages include queued and terminal dispositions and finite retention; they are not lifetime totals. Signing secrets and receiver content are never returned.
get_abom_manifest agent_governance mcp:read + agents:read Read one signed agent bill of materials with exact canonical_form.value, digest, body and stored-field agreement and Ed25519 verification under a published key. An unavailable key or failed verification names its defect and returns status=error. The signed body owns the environment; there is no read override.
get_agent_asset agent_governance mcp:read + agents:read Read one agent asset with environment, reviewer, classifier, shadow state and every saved driver setting; connection_secret is withheld and named.
get_agent_deployment agent_governance mcp:read + agents:read Read the complete saved deployment declaration by id or its scoped natural key.
get_agent_session_replay agent_governance mcp:read + agents:read Read one recorded-session replay's status, counts and per-turn comparison; turn text needs content access.
get_config_snapshot agent_governance mcp:read + agents:read Read the complete configuration behind one hash and one page of current and superseded deployment bindings. Follow pagination.next_cursor.
get_drive_attempt agent_governance mcp:read + agents:read Read one drive attempt's audit record by attempt id or by your request_id, with no chance of sending again.
get_memory_item_label agent_governance mcp:read + agents:read Read the trust label currently recorded for one agent memory item.
get_memory_item_propagation agent_governance mcp:read + agents:read Show where one memory item was observed flowing across sessions and runs, with the label in force at each point.
list_agent_asset_versions agent_governance mcp:read + agents:read Read one page of observed or declared asset versions and which is current; follow next_cursor.
list_agent_assets agent_governance mcp:read + agents:read List the agent inventory — declared and shadow assets — with owner, lifecycle, approval, risk and data classification, filtered by any of them; cursor-paged.
list_agent_review_signals agent_governance mcp:read + agents:read List the agent governance review queue by asset, kind, status and severity; cursor-paged.
list_authority_edges agent_governance mcp:read + agents:read List declared and observed delegations of authority between principals, with purpose, approver and revocation; cursor-paged.
list_memory_item_labels agent_governance mcp:read + agents:read List memory-item trust label revisions, for one item or by label; cursor-paged.
resolve_agent_asset_attribution agent_governance mcp:read + agents:read Map telemetry observation keys, or one asset, to registry assets and the credentials each was seen using.
get_agent_run_graph agent_runs mcp:read + agents:read Get one agent run's execution structure — every step, its parent, category, duration, and the outcome it declared with the error type when it failed, plus the count of non-span evidence attached to it and the action receipts it produced (approver, delegation chain, policy, lifecycle state, whether the effect was verified, and whether it was later compensated or rolled back).
list_context_events agent_runs mcp:read + agents:read List one agent run's accepted context assembly, compaction, and cache events, optionally narrowed to events whose assembly names one context source id.
list_agent_sessions agent_sessions mcp:read + agents:read List AI agent conversations newest-activity-first with their turn and run counts, participating agents, tokens and cost, optionally filtered by person, agent or time window.
list_agent_turns agent_sessions mcp:read + agents:read List the exchanges within one agent conversation newest-first: each turn's position, the agent that answered, its timing, the run ids it produced, tokens and cost.
get_agent_spend_budget agent_spend_budget mcp:read + one of activity:read, audit:read (the selected subject determines which) Read covered typed-decision policy and current settled, reserved and uncertain exposure as exact nano-USD strings. Own credential requires activity:read; another credential or workspace requires audit:read. USD, billing_effect none; no customer model invoice. Positive guaranteed enforcement remains unsupported without qualified provider bounds.
get_agent_spend_usage agent_spend_budget mcp:read + one of activity:read, audit:read (the selected subject determines which) Read typed-decision expenditure by explicit UTC hour or day window, at most 200 filter-bound buckets. Missing history is unknown, never zero. Own credential requires activity:read; another credential or workspace requires audit:read. Hour and day represent the same cost.
get_telemetry_completeness agent_telemetry mcp:read + agents:read Report exact agent-telemetry row counts per normalizer version and source schema, newest normalizer first, so partially-stale data is visible instead of averaged away. Each bucket carries a resolution naming which of its fields no longer mean what the current normalizer means and which were never read for those rows, so older rows are flagged rather than silently reinterpreted.
get_agent_session agents mcp:read + agents:read One agent session: person, turns, runs, agents, tokens and cost.
get_account_objective_alert_evidence alerts mcp:read + agents:content:read + alerts:read + groups:read + traces:read Read immutable original account objective trigger evidence under current source permissions, policy, privacy and lifetime gates. Withheld evidence preserves permitted receipts without account measurements. No fresh count or aggregate proof page.
get_account_slo_burn alerts mcp:read + agents:content:read + alerts:read + groups:read + traces:read Read the actual account objective policy, same-revision controls and exact observed counts with nullable burn decisions and current source authority. API keys and authenticated member sessions are supported; unsupported source actors refuse. No alert transition or notification.
get_alert_rule alerts mcp:read + alerts:rules:read. A complete answer also needs api_key:read, members:read One alert rule in full: query, conditions, timing, routing and evaluator status.
get_silence alerts mcp:read + silences:read Read one alert silence: matchers, window and whether it is active.
get_slo_burn alerts mcp:read + alerts:read Get an SLO rule's error-budget burn rate: the budget in failing-run events, how much remains, and the burn rate per window, with a window holding no evaluations reported as not measured rather than as a burn of zero.
get_watch_event alerts mcp:read + alerts:rules:read. A complete answer also needs agents:content:read, alerts:read, analytics:read, errors:read, groups:read, insights:read, logs:read, persons:profile:read, persons:read, traces:read Read immutable watch occurrences under current source permissions, without executing a measurement. Use the received watch subject UUID. Metric and person evidence have separate source requirements; unavailable evidence is never zero. Pages cover retained authorized events without a lifetime total.
list_alert_acknowledgments alerts mcp:read + alerts:read Who acknowledged one alert, when and with what note.
list_watch_events alerts mcp:read + alerts:rules:read. A complete answer also needs agents:content:read, alerts:read, analytics:read, errors:read, groups:read, insights:read, logs:read, persons:profile:read, persons:read, traces:read Read immutable watch occurrences under current source permissions, without executing a measurement. Use the received watch subject UUID. Metric and person evidence have separate source requirements; unavailable evidence is never zero. Pages cover retained authorized events without a lifetime total.
search_alert_history alerts mcp:read + alerts:read Alerts in every state, resolved included, by alert, rule, state, severity and window.
test_alert_rule alerts mcp:read + alerts:rules:write + evals:read Test a saved rule by rule.id, or validate a full unsaved definition. A saved metric watch checks its exact revision, units and current source access without a threshold sample or notification; success does not prove scheduler execution or delivery. Optional project_id narrows the saved lookup. Read valid, query_valid and message separately; invalid returns status=error and summary=invalid: reason.
compare_analytics_results analytics mcp:read + analytics:read + persons:read Read original and later exact results under current source permissions, preserving separate windows, identity, coverage and populations. Requires the prepared question and exact audience generation; no causal or completeness claims.
compare_coverage analytics mcp:read + projects:read + tracking_plans:read. A complete answer also needs agents:content:read, analytics:read, query:read, traces:read Compare one code-derived expected-surface revision with services, route templates and screens observed in an exact window, at most seven days. Keys withheld by erasure and ambiguous observations are not determined; they prove neither missing telemetry nor undeclared observations. Missing scopes, scan limits and failed sources are also undetermined. Never proves deployment, traffic or capture completeness. No comparison proof page.
execute_analytics_sql analytics mcp:read + analytics:read + analytics:sql + persons:read Run one read-only SQL SELECT over a single table, events, holding one project's own product events inside a required window (at most 92 days). Returns typed columns and JSON-safe rows (64-bit integers and decimals as strings, timestamps as RFC 3339), a truncated flag, and statistics. Only a single SELECT or WITH ... SELECT; no SETTINGS, FORMAT or INTO OUTFILE, no table other than events, no functions that read outside the statement. The properties column needs agents:content:read; without it the table has no such column and the answer says so. A refused or failed statement answers with a typed error code, a sentence and, for a syntax error, a position. Bounded in rows loaded, rows returned, time, memory, concurrency and rate; every execution is audited. Read get_analytics_sql_capabilities for the schema and the limits.
get_analytics_audience analytics mcp:read + analytics:read + persons:read Read one exact retained derived audience generation under current source authority. Metadata, count and lifetime only; no private receipts or members. Expired/pruned generations remain unavailable.
get_analytics_contribution analytics mcp:read + analytics:read + persons:read Read one exact funnel participant event chain and first-entry reference under current source and identity authority; frozen attribution and maturity facts, no live event search. Occurrences with a session id carry a typed replay reference — available, none_recorded or withheld — and available ones a session-replay link.
get_analytics_remeasurement_source analytics mcp:read + analytics:read + persons:read Prepare an explicit absolute-window remeasurement template from an original result and optional exact saved audience generation. No query execution or saved-insight edit; expired original metrics remain unavailable.
get_analytics_sql_capabilities analytics mcp:read + analytics:read Read the contract of read-only SQL over product events: whether it is available on this deployment, the SQL dialect, the events table's columns with their types and the scope each needs, every bound (window, rows loaded, rows and bytes returned, statement size, time, memory, concurrency, rate), the function families that work, what a statement may not use, and the error codes. A server-wide contract: no tenant data and no execution grant.
get_browser_traffic analytics mcp:read + analytics:read + persons:read Count every observed browser page view and session in an explicit retained window of at most seven days, by application-declared route template and service. Lists the largest groups and reports the omitted remainder.
get_capture_quality analytics mcp:read + analytics:read Inspect retained capture-attempt counts for an exact project/window, separating pending, queued, uncertain, not attempted and refused positions. Source completeness remains unknown; queued is not consumed and zero does not prove absence of loss.
get_coverage_declaration analytics mcp:read + projects:read + tracking_plans:read Read the latest or an exact historical expected-surface revision for one project, environment and application release, including withdrawal tombstones. Person erasure can redact matched keys and notes; report the returned erasure provenance.
get_event_catalog analytics mcp:read + analytics:read Discover event names, window-local occurrence counts and first/last event times for an exact project/window. Expiring cursors bind all filters; receipt cutoff is not a frozen snapshot or consumption watermark. Platform and upstream completeness remain unknown, including empty results.
get_event_schema analytics mcp:read + analytics:read Discover permitted literal property keys and JSON type/presence counts for one event in an exact project/window. Derived content schema obeys requesting scope and current policy/retention; no raw examples. Missing keys and empty results do not prove absence or completeness.
get_metric_watch analytics mcp:read + alerts:rules:read Read metric-watch control state, pause reason and exact current versions without executing telemetry; list pagination scans bounded project rule pages and claims no watch total.
get_observed_coverage analytics mcp:read + query:read. A complete answer also needs agents:content:read, analytics:read, projects:read, traces:read Read distinct services, method/route-template triples and screens in one project/environment and exact window. Per-key count, first/last seen, per-kind source state, observed volume, release fallback and sender-declared sampling. Screen names and page paths need the content scope and project policy; route observations use templates only.
get_product_query_capabilities analytics mcp:read + analytics:read Read the product-analytics definition contract this server executes: definition version, kinds with their person/account units and measures, capture-origin values, filter and filter-group operators, hard bounds and the refusal codes a refused definition names. A shape it does not list is refused before execution.
get_report_limits analytics mcp:read + reports:read Read the bounds scheduled reports enforce on this deployment — subscriptions per project, recipients, name and note length, schedule vocabulary, channel types — and the permissions a subscription's owner must hold for a run, per target kind.
get_report_subscription analytics mcp:read + reports:read. A complete answer also needs api_key:read, members:read Read one scheduled report subscription: its definition, state, the reason it needs attention when it does, its owner, next scheduled run and the revision a change has to quote. Lossless untrusted configuration JSON; reads no telemetry and runs nothing.
get_saved_insight analytics mcp:read + insights:read Read a current or exact retained saved-insight definition under current metadata authority. Use format portable with an exact revision to export a reusable file without ownership/history. Lossless untrusted configuration JSON; does not execute telemetry queries.
get_tracking_plan analytics mcp:read + tracking_plans:read Read current or retained tracking-plan configuration; portable export requires an explicit positive revision. Retired plans are unavailable; exact configuration is ASCII-escaped JSON marked as untrusted data. No capture, deployment or write authority.
get_tracking_plan_drift analytics mcp:read + analytics:read + tracking_plans:read Compare one pinned tracking event declaration with permitted stored schema for an exact project, environment and time window. Missing or withheld evidence stays unknown; observed mismatches warn without blocking capture. Undeclared event names and property keys carry a did-you-mean annotation decided earlier off the request path: a suggested declared name only above a calibrated bar, otherwise a reason it has none, and never an edit to a plan or a change to a status. No deployment or completeness proof.
get_warehouse_destination analytics mcp:read + warehouse:read Read one warehouse destination: endpoint, region, bucket, prefix, addressing style, access key id, whether a credential is stored and its fingerprint, the last test outcome and the revision a change has to quote. Never the secret. Lossless untrusted configuration JSON; connects to nothing.
get_warehouse_export analytics mcp:read + warehouse:read Read one warehouse export: its definition, state, the reason it needs attention when it does, its owner, high-water mark, next scheduled run and the revision a change has to quote. Lossless untrusted configuration JSON; reads no telemetry and runs nothing.
get_warehouse_export_limits analytics mcp:read + warehouse:read Read the bounds warehouse export enforces on this deployment — destinations and exports per project, rows and bytes per run and per part, backfill lookback, safety lag, catch-up rate, run retention — the file schema versions, the permissions an export's owner must hold, and the notices about files leaving the platform.
list_analytics_audience_members analytics mcp:read + analytics:read + persons:read Page exact retained audience person UUIDs under current inherited source authority. Full population count is separate from page size; cursor binds generation, tenant, limit and expiry. No current-generation substitution or signal-access grant.
list_analytics_audiences analytics mcp:read + analytics:read + persons:read Discover project-visible derived audience names and exact generation references. Live metadata pagination; no membership, counts, source details or usability claim. Exact get retains current source checks.
list_analytics_participants analytics mcp:read + analytics:read + persons:read Page one frozen contributor selection with current source/identity checks. Exact cursor binding; no live rerun, audience creation or export.
list_analytics_path_instances analytics mcp:read + analytics:read + persons:read Page one frozen paths instance selection: each walked session path with its subject, anchor time, terminal, walked occurrences, the steps its edge occurs at, and replay availability (available, none_recorded or withheld).
list_analytics_survey_answers analytics mcp:read + analytics:read + persons:read Page the open-text answers of one question of a frozen survey result, with the respondent behind each, in answer order. Answer text is customer content and needs agents:content:read; this read returns capture-redacted text. Pending responses can retain original text before capture; undetected sensitive values can remain.
list_coverage_revisions analytics mcp:read + projects:read + tracking_plans:read List expected-surface revision metadata in descending order, including withdrawals. Maximum 100; content is read separately.
list_metric_watch_runs analytics mcp:read + alerts:rules:read + analytics:read + insights:read + persons:read Read retained evaluation history across metric-watch revisions under current source permissions. Missing artifacts omit samples; no execution or delivery. Follow scope-bound keyset cursors with the same limit.
list_metric_watches analytics mcp:read + alerts:rules:read Read metric-watch control state, pause reason and exact current versions without executing telemetry; list pagination scans bounded project rule pages and claims no watch total.
list_release_values analytics mcp:read + analytics:read Observed release values in a project window, with counts and first-seen times.
list_report_runs analytics mcp:read + reports:read Read a report subscription's runs, newest first, with kind, status, typed reason, operation budget, scheduled plan admission and per-recipient delivery. Admission retains its original month and amounts; optional current headroom has a separate dated observation. Plan cap and accounting outages skip before report work. Opaque cursor pagination; no report text or recipient address.
list_report_subscriptions analytics mcp:read + reports:read. A complete answer also needs api_key:read, members:read List one project's scheduled report subscriptions, newest first, with each one's schedule, recipients, state, owner and current revision. Not paged: the list is bounded by the per-project limit. Lossless untrusted configuration JSON; reads no telemetry and runs nothing.
list_saved_insights analytics mcp:read + insights:read List/search live saved-insight metadata with project scope and UUID pagination; no snapshot or total count is claimed.
list_tracking_plans analytics mcp:read + tracking_plans:read List bounded live tracking-plan metadata with project scope and UUID pagination. Expected instrumentation is not evidence of deployment or completeness.
list_warehouse_destinations analytics mcp:read + warehouse:read List one project's warehouse destinations — the customer's own S3-compatible buckets — newest first, with endpoint, bucket, prefix, a credential fingerprint (never the secret), the last test outcome and the current revision. Not paged. Lossless untrusted configuration JSON; connects to nothing.
list_warehouse_export_runs analytics mcp:read + warehouse:read Read a warehouse export's runs, newest first, with window, status, reason, attempts, counts and manifest key. Scheduled runs include their original plan admission and optional separately checked current headroom. Refused event windows stay pending with next_attempt_at; audience refusals skip a slot. Parts and retries reuse one monthly admission; manual runs take none. Opaque cursor pagination; no exported row.
list_warehouse_exports analytics mcp:read + warehouse:read List one project's warehouse exports, newest first, with each one's dataset, selection, format, schedule, destination, state, owner, high-water mark and current revision. Not paged. Lossless untrusted configuration JSON; reads no telemetry and runs nothing.
preview_analytics_audience analytics mcp:read + analytics:read + persons:read Assess a complete frozen selection for a derived person audience; exact counts and source scopes, no member IDs, mutation or publication grant. Unresolved people, account selections and selections over the member limit remain distinct. A non-eligible selection returns status=error.
preview_metric_watch analytics mcp:read + analytics:query + analytics:read + insights:read + persons:read Preview a native closed-period scalar and threshold from an exact saved insight revision under current source permissions. Explicit execution key and as_of freeze scalar arguments; no watch, schedule or notification changes. Missing evidence remains null with a reason.
preview_product_query analytics mcp:read + analytics:query + analytics:read + persons:read. A complete answer also needs governance:read, insights:read Describe, without running it, what query_product_analytics would do with the same document: the window as the server resolves it in UTC, the data it reads, the limits that apply and what happens when each is reached, and every refusal already knowable (an invalid definition, a window over the longest allowed, a missing scope, a window before the project's readable history, a project at its ceiling of running executions). Advisory: it reserves nothing, spends no execution key, reads no event data and estimates no volume. With governance:read it checks current declared-content policy for direct sources; otherwise that check stays not evaluated, and a document it finds no fault with can still be refused or fail when run.

query_product_analytics through get_source_operation

Action Area Required scopes What it answers
query_product_analytics analytics mcp:read + analytics:query + analytics:read + persons:read History refusals carry earliest_available_start and failure_message; windows are never shortened. Execute a bounded trend, ordered funnel, calendar retention query (exact-period or bounded on-or-after returns), person engagement query (rolling 7/30-day active people, days-active frequency or lifecycle states), session paths query, funnel correlation (which other events, or entry-event property values, separate converted from dropped entrants; an observational association, never a cause) web analytics query (visitors, sessions, page views, bounce, visible time and scroll depth from page views and page leaves — as totals, a daily, weekly or monthly series, or by page, entry page, exit page, referrer, channel or campaign parameter, each row leading to the people behind it) or revenue query (gross, refunds and net as exact decimal strings per currency — currencies are never added or converted — with transactions, paying people or accounts, a per-payer distribution, a daily, weekly or monthly series or a breakdown by one event property, and a ranked top-payers selection; reads the amount and currency from $revenue and $currency or the properties the definition names, and needs agents:content:read) or survey query (one launched in-product survey: shown, responded and dismissed, and per question the responses and respondents of every option, every rating value with the promoter, passive and detractor groups of a 0-10 scale, and the open-text answer count; counts only, each leading to the people behind it; needs agents:content:read) or heatmap query (one page by its route template: a bounded grid of click positions, the most clicked elements by CSS selector, or how many views reached each scroll depth band; every cell, element and band leads to the people behind it; positions and elements in the measurement; optional sanitized page copies are stored separately and read with replay:content:read — and clicks without a position, clicks from other viewport widths and views without a scroll depth are counted and disclosed, never dropped; needs agents:content:read). Supply exactly one inline definition or saved_insight with an exact positive decimal-string revision; the saved form also requires insights:read. An explicit retry key freezes result and selection references under current source permissions. wait_millis (default 20000, max 25000) blocks for a terminal execution status; a non-ready answer reports status, result id and failure reason with no payload. Poll get_analytics_result only for pending or running. POLICY_DENIED, POLICY_CHANGED and PERMISSION_DENIED are terminal: review policy or access, preview again and use a new execution key; a wider credential cannot override policy. An optional breakdown segments by an event, person or account property; a person/account source needs persons:profile:read or groups:read and freezes the subject's current value at execution time, not event time. Unknown coverage cannot prove drop-off or mature retention. No saved insight or audience is created.
validate_coverage_declaration analytics mcp:read + projects:read + tracking_plans:read Validate the code-derived service, route-template and screen inventory without saving a declaration. Returns the exact proposed content/verified actor, next revision and every refusal; commit time is assigned only on write.
validate_saved_insight analytics mcp:read + insights:read Validate a portable saved-insight document and current references in its target project; no query, mutation or future approval. Import via create_saved_insight with document and preview/confirmation.
validate_tracking_plan analytics mcp:read + tracking_plans:read Validate a portable tracking document in the current target project without mutation, capture query or approval. Expected declarations do not transfer effective sensitivity history.
verify_flag_integration analytics mcp:read + analytics:read + flags:read. A complete answer also needs agents:content:read, persons:read Verify up to 20 $feature_flag_called exposures a controlled application test recorded (message ID, admitting source) within one hour against the expected value, exact definition version, mode, test case, status, fallback and input context, and whether exactly one local and one remote exposure per test case are comparable under equal sender-declared explicit inputs. Recorded values are never returned. Identity and recorded fields need persons:read and agents:content:read and are withheld without them. An exposure is application-reported use, not visual delivery. No proof page.
verify_integration_events analytics mcp:read + analytics:read. A complete answer also needs agents:content:read, persons:read, tracking_plans:read Verify up to 20 exact product events a controlled application test sent (event, message ID, admitting source) within one hour: declared identity, optional session, canonical identity and a pinned tracking-plan revision or explicit property checks. Per-check states; limits and history cuts are undetermined, never not_observed. Plan, person and property checks need tracking_plans:read, persons:read and agents:content:read and are withheld without them. No proof page.
get_anomaly_finding anomalies mcp:read + anomalies:read Read one anomaly finding whole, with missing bands and ranks reported as missing rather than zero.
get_api_key api_keys mcp:read + api_key:read Read one credential's current metadata, purpose/source and lifecycle inside the caller's organization/project. Never returns the secret.
list_api_keys api_keys mcp:read + api_key:read List bounded, cursor-paginated credential metadata visible to the current organization/project authority. Includes native purpose/source and lifecycle; never returns key material.
list_app_view_grants app_view_grants mcp:read + api_key:read + app_views:share Read one native cursor page of exact project aggregate-sharing grants, parent metadata, versions, origins, projections and last use. Usage/budgets are explicitly unknown here; no tokens, secrets or invented total. Owner/admin people or explicitly delegated management builders only.
list_audit_events audit_events mcp:read + audit:read List the organization audit trail newest first — actor, target credential, event, action and result — filtered by target key, event type, resource, action or result; cursor-paged. Project-bound credentials see their project only.
get_billing_change_preview billing mcp:read + billing:write + usage:read Read immutable pricing beside current family retention choices; the plan ceiling does not extend a shorter chosen history.
get_billing_subscription billing mcp:read + billing:read Read organization billing information and immutable change previews. USD before tax; calendar-month usage allowances.
list_billing_plans billing mcp:read + billing:read Read organization billing information and immutable change previews. USD before tax; calendar-month usage allowances.
get_capture_settings capture_settings mcp:read + ingestion:pipelines:read Read a project's server-controlled SDK capture settings: whether browser autocapture is allowed (the kill switch), DOM events, text masking, mask and block selectors, pointer capture and per-minute limits, with the revision an update compares on. Revision 0 means none were stored and autocapture is off. Also returns the independent default-off native_replay section and exact revision; it does not establish consent or a qualified native recorder.
get_effective_notification_template channels mcp:read + channels:read Say which template a channel type's deliveries render through: the custom one or the built-in default.
get_notification_channel channels mcp:read + channels:read Read one notification channel with the same secret-safe routing view.
get_notification_template channels mcp:read + channels:read Read one notification template with the version an update must be fenced on.
list_notification_channels channels mcp:read + channels:read List a page of notification channels with a secret-safe routing view and a delivery-target fingerprint; webhook URLs, header values and vault credentials are never returned.
list_notification_templates channels mcp:read + channels:read List a page of the organization's custom notification templates, optionally for one channel type.
get_connection connections mcp:read + connections:read Read one connection by identifier, including the current version a credential rotation must quote; call it immediately before rotating so the version quoted is the freshest one.
get_incoming_alert_source connections mcp:read + connections:read One incoming-alert source's provider, routing and state.
get_oauth_handoff connections mcp:read + connections:read Check whether a person finished an OAuth handoff, and which connection it produced.
list_connections connections mcp:read + connections:read List the organization's third-party connections with each one's identifier, provider, kind, status, whether a credential is stored, and the current version a credential rotation must quote.
list_identity_mappings connections mcp:read + connections:read + members:read List which Anectico member each Slack user acts as on one connection.
list_incoming_alert_deliveries connections mcp:read + connections:read List a page of an incoming-alert source's last 100 delivery outcomes (accepted, duplicate, stale, unknown_service, bad_signature, revoked and more); no payload is kept.
list_incoming_alert_sources connections mcp:read + connections:read List a page of incoming-alert sources (signed generic JSON or Alertmanager) with project, status, fallback service key and last delivery; never a secret.
get_dashboard dashboard mcp:read + dashboard:read Read the full dashboard definition and complete widget queries and visualization; widget_cursor continues pages of 30 widgets at one version.
get_saved_insight_widget_status dashboard mcp:read + dashboard:read + insights:read Read one saved widget's exact pin, owning revision and confirmation state. A newer source revision is informational only; missing and retired sources are unavailable. Requires current dashboard and saved-insight metadata access.
list_dashboards dashboard mcp:read + dashboard:read List the dashboards visible to the credential with each dashboard's id, current version and widget count.
query_saved_insight_widget dashboard mcp:read + analytics:query + analytics:read + dashboard:read + insights:read + persons:read Execute one confirmed saved widget at the exact owning revision with an explicit retry key. Current credential and all source permissions are rechecked. Editing/removing the widget refuses the old execution; no latest-revision substitution or dashboard time override.
get_doc docs mcp:read + docs:read Read one documentation page as markdown, with its H2-H6 heading outline; pass a heading to get just that section, which is how to read one endpoint out of a reference page without paging the whole thing.
get_rest_contract docs mcp:read + docs:read Read the REST contract this deployment serves: its build, contract revision, master digest, the published artifacts with their digests and addresses, which operations this deployment mounted, and the proof-page coordinates. Pass up to 100 operation_ids to get exactly those operations' declarations and the shared schemas they reference as a valid OpenAPI document with its source digest, or expected_revision to refuse an answer from another revision. An answer larger than 1 MiB is refused, never cut; anectico api spec writes the whole contract to a file. Experimental until the first supported release: pin the digest you tested.
search_docs docs mcp:read + docs:read Search Anectico's product documentation and get back the matching pages with their titles, sections, public URLs, and a ranking score — the same pages, and the same ranking, as the published documentation site.
get_account_value_impact errors mcp:read + errors:read + groups:business:read + groups:read + persons:read Measure declared value affected over the complete observed issue or explicit issue-union population, with exact separate buckets, denominators, current owner snapshots and live proof for a single issue.
get_error_impact errors mcp:read + errors:read. A complete answer also needs groups:business:read, groups:read, persons:read The people and accounts errors reached over an exact window, for a project, service or issue. Optional support contacts require persons:read and report selective agent-recorded technical complaints across all affected people; same person and contact time does not establish complaint subject, causation or severity. Use paired absolute RFC3339Nano since and until for a historical read; repeat both bounds and every selector on continuation. Clock tolerance defaults to 5s, explicit 0s disables it and 60s is the maximum. Unknown support counts stay null.
get_fix_outcome errors mcp:read + agents:content:read + analytics:read + errors:read. A complete answer also needs persons:read Read release-bound recovery evidence for a declared fix. Counts-only without persons:read; declarations do not close issues.
get_github_config errors mcp:read + github_config:read The GitHub repository configuration used to link stack frames to source.
get_issue_commits_between errors mcp:read + errors:read The commits between two versions of the connected repository that touched the code an issue fails in: which in-app stack frame matched which changed file (and how), and which commits touched those files. Evidence, not a verdict. Only the connected repository can be compared, and only with the workspace's own GitHub App credential; commit ids are hexadecimal. A failure the caller can act on (nothing connected, no access, unknown commit, range too large, rate limit) is an answer with a reason. Says what a limit cut. Author e-mail addresses are never returned.
get_issue_occurrences errors mcp:read + errors:read An issue's received-occurrence count series, selected by native error_id (issue group or representative occurrence id) and exact window/interval. Unsent or expired activity is not measured.
get_issue_releases errors mcp:read + releases:read An issue's release context and its events and affected people per release.
get_issue_reproduction errors mcp:read + errors:read. A complete answer also needs agents:content:read, analytics:read, releases:read, replay:content:read, replay:read, traces:read One chosen occurrence's recorded request, trace, release, session steps and observed flag exposures, each with its state and gaps. Latest by default. No reproduction artifact is saved, and reproduction is not guaranteed. Optional scopes widen the answer; typed inputs are placeholders and request bodies cannot be tied to the occurrence.
get_problem_report errors mcp:read + agents:content:read + errors:read Read a redacted customer report and its caller-supplied correlation context; identifiers are not proof of a causal link.
get_release errors mcp:read + releases:read One deploy release: commit, adoption, new and regressed issues, people and accounts affected.
get_release_by_id errors mcp:read + releases:read Read project-owned release metadata by catalog UUID, with immutable detection and mutable observation chronology. Caller-declared lifecycle evidence does not attest SDK origin or deployment.
list_fix_history errors mcp:read + analytics:read + errors:read Read the immutable counts-only observation series, retained 90 days and at most 256 rows; privacy may remove past answers.
list_issue_lifecycle_history errors mcp:read + errors:read An issue's status transitions with who changed them and when.
list_issues_by_account_value errors mcp:read + errors:read + groups:business:read + groups:read + persons:read Rank the complete eligible issue population by one exact currency and payment period before limiting. Per-issue values overlap; no sum across the returned rows is a union.
list_merged_sources errors mcp:read + errors:read The issues merged into a canonical issue, and who merged them when.
list_problem_reports errors mcp:read + agents:content:read + errors:read List explicit customer problem reports from the last seven days with a continuation cursor. Pixels require separate replay content access.
list_releases errors mcp:read + releases:read The deploy releases recorded for a project, with adoption and error-free rate.
get_escalation_policy escalation mcp:read + escalation:read Read the full escalation-policy definition, including routing IDs, delays, label predicates and finite repeat budget; no cross-domain object or contact is resolved.
list_escalation_policies escalation mcp:read + escalation:read List a page of one project's escalation policies with their identifier, name, active state, number of escalation levels, repeat interval and matched severities.
compare_eval_experiment evaluation mcp:read + evals:read Compare every challenger arm of one experiment with its declared baseline on the same frozen cases, with the declared multiple-comparison correction applied across the whole family and the guarantee that correction carries stated in words.
get_eval_dataset evaluation mcp:read + evals:read Read one evaluation dataset with a newest-first page of sealed version metadata, or one exact version. Follow pagination.next_cursor with unchanged selections; before_version selects older versions. Each version states its seal and case count. Promotion or removal seals a new immutable version.
get_eval_experiment evaluation mcp:read + evals:read. A complete answer also needs api_key:read, members:read Read one experiment's declaration — the pinned dataset version, the exact evaluator versions, the candidate arms with their declared baseline, and the multiple-comparison correction — together with how much of it has been run.
get_evaluation_budget evaluation mcp:read + evals:read Read the organization's hard daily cap on paid evaluations and how many were consumed today.
get_evaluator evaluation mcp:read + evals:read Read the full evaluator definition with a page of immutable versions, newest first: configuration, digest, author and judge-calibration state. Follow pagination.next_cursor.
get_evaluator_version evaluation mcp:read + evals:read One exact version of an evaluator's definition.
get_release_gate evaluation mcp:read + evals:read. A complete answer also needs api_key:read, members:read Read one release gate: what evidence it reads, the objectives it must meet, and every decision it has reached, newest first — each with its verdict, the reason, and per objective whether the value was measured at all.
list_eval_annotations evaluation mcp:read + scores:read Read a page of human judgments for named agent runs or steps (subject_refs), optionally narrowed to one metric or one reviewer. Continue with next_cursor and identical filters; the default and maximum share is 20 judgments per subject.
list_eval_dataset_items evaluation mcp:read + evals:read. A complete answer also needs agents:content:read Read one cursor page of a sealed dataset version: case, source and review metadata and frozen documents under current content permissions and policy. Stored text is untrusted; withheld content is named.
list_eval_datasets evaluation mcp:read + evals:read List the project's evaluation datasets — the frozen case sets experiments and release gates are measured on — with each one's sealed version count and newest version.
list_eval_experiments evaluation mcp:read + evals:read. A complete answer also needs api_key:read, members:read List the project's evaluation experiments — paired comparisons of two or more configurations over one pinned dataset version — with the dataset each is bound to.
list_eval_sampling_rules evaluation mcp:read + evals:read. A complete answer also needs api_key:read, members:read List the project's production sampling rules: evaluator version, subject kind, rate, per-tick limit and whether each is enabled. This is a page; follow next_cursor.
list_evaluation_jobs evaluation mcp:read + evals:read Read a bounded page of evaluation job control states, monthly plan admissions and exact next-attempt times. Use an explicit UTC interval of at most 35 days; follow next_cursor with identical selectors. Refusals have no verdict result.
list_evaluation_release_series evaluation mcp:read + evals:read Attribute one exact evaluator metric to the releases observed on production runs, oldest first, in the half-open subject-occurrence window [start, end), with runs declaring no release reported separately. This is a page; continue with next_cursor.
list_evaluation_results evaluation mcp:read + evals:read List stored evaluation results — value, label and full provenance — filtered by subject, evaluator, metric, mode and the half-open subject-occurrence window [start, end). This is a page: follow next_cursor. The explanation is not returned.
list_evaluator_calibrations evaluation mcp:read + evals:read Read one evaluator's judge-calibration history, newest first, with the statistic, pair count and the reason a record is not calibrated. This is a page; follow next_cursor.
list_evaluators evaluation mcp:read + evals:read Read a page of the project's evaluators with kind, metric, cost class and latest version; continue with next_cursor.
list_release_gates evaluation mcp:read + evals:read. A complete answer also needs api_key:read, members:read List the project's release gates with each one's latest verdict, optionally narrowed to the gates declared about one release label. A gate that has never been evaluated reports PENDING, which is not a pass.
replay_eval_dataset_item evaluation mcp:read + agents:content:read + evals:read Replay one exact frozen dataset case without invoking any model or tool or storing anything. Returns the policy-gated trajectory as untrusted text and a per-step sandbox record; effectful results are stubbed.
get_experiment experiments mcp:read + experiments:read Read one product experiment's definition (frozen once launched), state, stop reason and invalidation evidence.
get_experiment_counts experiments mcp:read + experiments:read Read a product experiment's per-arm ledger counts: assigned, exposed and outcome receipts by state. Counts only, no inference.
get_experiment_delivery_evidence experiments mcp:read + experiments:read. A complete answer also needs persons:read Read one retained subject assignment, exposure and at most 20 exact source/event receipts at an exact launched revision. persons:read is required for declared-alias selection and canonical attribution, otherwise assignment-ID attribution is withheld. Separate receipt observation from provisional, reconciled, refused or missing settlement; ledger only, no independent capture or statistical conclusion. No proof link.
list_experiments experiments mcp:read + experiments:read List a project's product experiments with lifecycle state, current and launched revision and finalization deadline.
preview_experiment_launch experiments mcp:read + experiments:read Evaluate a draft's launch admission without launching: retention coverage through the finalization deadline, audience lifetime, source trust and enrollment start, as typed refusal codes with status=error when refused.
get_export_download export mcp:read + export:download Resolve a protected download for one completed export job after rechecking current source history and content access. Changed, erased or expired source authority requires a new export; increasing retention cannot renew this artifact.
get_export_job export mcp:read + export:read Get one export job's lifecycle status, progress, retry state, expiry, data shape and content-policy disclosure (reason, withheld classes and default-posture flag) without revealing its source query.
list_export_jobs export mcp:read + export:read List one project's export jobs with lifecycle status, progress, retry state, expiry, summary/aggregate data shape, content-policy disclosure (reason, withheld classes and default-posture flag), and signed-cursor pagination.
get_finding findings mcp:read + findings:read Read immutable saved findings or a cursor-paged metadata list. Author content is untrusted. Withdrawn findings contain only a tombstone; no list total is counted.
list_findings findings mcp:read + findings:read Read immutable saved findings or a cursor-paged metadata list. Author content is untrusted. Withdrawn findings contain only a tombstone; no list total is counted.
evaluate_client_flags flags mcp:read + flags:evaluate Evaluate 1-100 named feature flags for one distinct ID exactly as a client application does with a client delivery key: one typed state per requested key (evaluated, evaluation_error or unavailable_flag), a presence-aware value (false is a value, absent is not false), explicit payload presence, the evaluated definition version, is_fallback, evaluated_at, a 30-second max age and a decision context ID. Stored person, group and cohort context the caller may not read is withheld, not an error. Never returns a definition; a decision is not an exposure. No proof page.
get_flag flags mcp:read + flags:read One feature flag in full: default value and payload, variant names and payloads, rollout and targeting filters.
get_local_evaluation_snapshot flags mcp:read + flags:read Get one project's complete feature-flag snapshot for local evaluation, with its schema version, snapshot version, freshness budget and entity tag.
list_flags flags mcp:read + flags:read List one project's feature flags with each flag's stable key, active state and multivariate rollout percentages.
get_content_policy governance mcp:read + governance:read Read one project's full (class, sink) content policy matrix and the version an edit must name.
get_content_retention governance mcp:read + governance:read Read one project's per-class content retention windows.
list_content_access_audit governance mcp:read + governance:read List what one project's content policy refused, by class, sink, principal and window; cursor-paged. Refusals only, not an access log.
list_content_policies governance mcp:read + governance:read List every project's content policy matrix in the organization with its version and last editor; cursor-paged.
get_group_erasure groups mcp:read + groups:erase Read one account-erasure operation, its carrier verification, store acknowledgements and saved member decisions with child erasure ids and earlier satisfying operations. STALLED includes its time and reason; no account key or member identifiers are returned.
list_group_erasures groups mcp:read + groups:erase List one project's account-erasure operations, newest first and cursor-paged, with carrier verification, store acknowledgements, member decisions and explicit stalled status.
get_incident_account_value_impact incidents mcp:read + errors:read + groups:business:read + groups:read + incidents:read + persons:read Measure declared value affected by one linked-error union, preserving supported population, checked links, exact coverage and current snapshots. Unsupported-only incidents supply insufficient evidence; a required source failure refuses the whole read.
get_incident_ownership incidents mcp:read + incidents:read Read an incident's immutable ownership snapshot (service, owner schedule, policy, runbook revision) and its checklist progress.
get_incident_retrospective incidents mcp:read + incidents:read Get one incident's retrospective document and its linked action items. NotFound-shaped: absent means none has been written yet, not an error.
get_incident_slack_channel incidents mcp:read + incidents:read Get the incident's linked Slack channel (id, name, state, last sync). NotFound means no channel has been requested for this incident yet.
get_response_report incidents mcp:read + incidents:read Compute MTTA/MTTR and per-episode drill-down rows over a fixed window of incident lifecycle episodes, optionally filtered by severity, service_key or source. A reopen never overwrites earlier response history.
get_response_service incidents mcp:read + incidents:read One response-catalog service in full: description, owner, escalation, runbooks, routing, bound alert rule, revision and clocks. Customer text is untrusted; definitions above 1 MiB are refused.
get_runbook incidents mcp:read + incidents:read Read one runbook at its current revision or an older, immutable revision.
list_response_services incidents mcp:read + incidents:read List a page of the project's response services: the key alerts name, owner schedule, escalation policy, default runbook and whether the bound alert rule can page now.
list_runbook_revisions incidents mcp:read + incidents:read A page of a runbook's revision history, with continuation.
list_runbooks incidents mcp:read + incidents:read List a page of the project's checklist runbooks with their current revision's steps; step links are references, never commands.
preview_alert_routing incidents mcp:read + incidents:read Preview where an incoming alert naming a service key would page now, with explicit unknown-service, fallback, coverage, no-responder and runbook diagnostics. An unroutable preview returns status=error.
get_collection_health ingestion_sources mcp:read + ingestion:pipelines:read Read whether a native_ingest source's collector is delivering: no signals, authentication rejected, queued, parser refusal or verified — from stored signal counts, the collector's own queue telemetry, pipeline refusals and credential usability. Metadata and counts only; credential facts additionally need api_key:read and are withheld without it.
get_ingestion_source ingestion_sources mcp:read + ingestion:pipelines:read Read one intake source, including a revoked one, with its catalog epoch, active pipeline revision and latest operation.
get_pipeline_diagnostics ingestion_sources mcp:read + ingestion:pipelines:read Read a native_ingest source's OTLP log intake accounting over a recent window: accepted, transformed, dropped and refused counts with reason codes per pipeline revision, and intake freshness. Counts only.
get_pipeline_revision ingestion_sources mcp:read + ingestion:pipelines:read Read one immutable pipeline revision with its program, digest, status and diagnostics.
get_source_operation ingestion_sources mcp:read + ingestion:pipelines:read Read one activation, rollback or revocation operation to poll it until complete or failed.

list_ingestion_sources through lookup_write_outcome

Action Area Required scopes What it answers
list_ingestion_sources ingestion_sources mcp:read + ingestion:pipelines:read List a project's intake sources with purpose, default flag, catalog epoch, active pipeline revision and latest activation/revocation. Revoked sources only on request.
list_pipeline_revisions ingestion_sources mcp:read + ingestion:pipelines:read List a source's immutable pipeline revisions, newest first, with status, program and structural diagnostics.
list_source_operations ingestion_sources mcp:read + ingestion:pipelines:read List a source's activation, rollback and revocation operations, newest first. Complete is reported only after the drain.
preview_pipeline ingestion_sources mcp:read + ingestion:pipelines:read Run up to 10 sample log records through a stored pipeline revision or an unsaved program with the intake runtime, redaction and limits; returns each outcome, reason code and output. An invalid program returns status=error; sample refusals remain individual outcomes. Samples are never stored or logged.
validate_pipeline_program ingestion_sources mcp:read + ingestion:pipelines:read Dry run a pipeline program for a native_ingest source: structural and limit diagnostics only. Invalid returns status=error. Stores and executes nothing.
instrumentation_doctor instrumentation mcp:read + query:read. A complete answer also needs logs:read, persons:profile:read, persons:read, traces:read Use the credential-bound project or an explicit project for an organization credential; contradictory projects are refused. Explain bounded trace and log evidence or verify one identified customer story across browser, backend, error, event and optional replay, preserving permission and evidence limits. Each check reads its signal with your own permissions: without traces:read, logs:read, persons:read or persons:profile:read the checks that need it come back withheld. Optional paired tracking_plan_id/revision for browser/mobile additionally require tracking_plans:read and analytics:read, returning a separate project-event sample without changing journey_verified.
list_diagnostic_captures instrumentation mcp:read + persons:read List all active (non-canceled, unexpired) diagnostic requests; acknowledgment and allocation do not prove delivery.
verify_integration instrumentation mcp:read + query:read. A complete answer also needs agents:content:read, persons:read, tracking_plans:read Verify the one integration job an application test exercised (product_events or flags) within one hour, without requiring unrelated signals: an event job needs no test error, trace, log or replay. Fields of the other job are refused before any read. product_events needs analytics:read; flags needs flags:read and analytics:read. verified_sample only when every required check matched; withheld or limited checks never verify. Identity, plan and recorded content need persons:read, tracking_plans:read and agents:content:read. No proof page.
get_instrumentation_recipe instrumentation_recipe mcp:read + tracking_plans:read Read one instrumentation recipe by its catalog id (e.g. signup): its events, SDK snippets and starter insight definitions.
list_instrumentation_recipes instrumentation_recipe mcp:read + tracking_plans:read List the static server-owned instrumentation-recipe catalog: business-journey events, illustrative SDK snippets and starter insights for signup, activation, invitation and purchase. Not tenant data. Applying a recipe writes ordinary tracking-plan events and saved insights through their existing owner logic; this action itself never mutates anything.
list_invitations invitations mcp:read + members:read List the organization's member invitations with their identifier, invitee, role, lifecycle status and expiry.
get_live_screen_status live mcp:read + live:read. A complete answer also needs api_key:read, members:read Read one live screen's current version, its published revision and the lifecycle state of every viewing link issued for it, including whether the publishing credential still admits the display. Includes the latest cadence plan admission, original month and optional separately dated current headroom; terminal plan skips do no measurement. The read is free and never returns a link or any part of one.
list_live_grants live mcp:read + live:read List a project's viewing links with their names, lifecycle state, expiry and the revision each publishes — including links a paused, expired or narrowed publishing credential has already stopped serving. Never returns a link or any part of one.
list_live_screens live mcp:read + live:read. A complete answer also needs api_key:read, members:read List the live screens in a project with their names, versions and published revisions. Panel definitions and measured values are not included.
list_llm_pricing llm_cost mcp:read + settings:read The organization's LLM price overrides.
llm_account_spend llm_cost mcp:read + groups:business:read + groups:read + llm:read + persons:read Read observed priced model spend allocated to current accounts, exact nano-USD comparisons and explicit unpriced, unshown and unallocated remainders. No profitability claim or account proof page.
llm_cost_series llm_cost mcp:read + llm:read Return model spend over time as a bucketed series, with each bucket's cost, tokens and call count.
llm_cost_summary llm_cost mcp:read + llm:read Summarize model spend, tokens, model-call spans and runs; model and agent partitions include unattributed calls and combined remainders.
llm_cost_top_persons llm_cost mcp:read + llm:read Rank people by model spend over a window, with cost, tokens and model-call spans (including children).
llm_spend_breakdown llm_cost mcp:read + llm:read. A complete answer also needs agents:read, persons:read Say who is spending the model bill and why, for one project and window: people ranked by known cost, and the spend by agent, workflow, model, call kind or entry point for the window and for each person. Unpriced calls and runs with no person are their own lines; cost is an estimate.
get_log_metric log_metrics mcp:read + metrics:read Read one log-derived metric rule with every immutable revision, newest first, and the instant each started applying to received logs.
list_log_metrics log_metrics mcp:read + metrics:read List a project's log-derived metric rules: aggregation (count or sum), unit, bucket width, labels, late cutoff and current revision.
query_log_metric log_metrics mcp:read + metrics:read Read a log-derived metric's published per-bucket series with its watermark, completeness, withheld windows and late-log count. Values are bucket counts or sums, never cumulative counters.
get_log_context logs mcp:read + logs:read The log lines just before and after one exact log.
get_log_entry logs mcp:read + logs:read Read one exact log by canonical log_id, with its attributes and resource labels.
list_log_fields logs mcp:read + logs:read The log fields search_logs can filter on, with sample values.
read_log_tail logs mcp:read + logs:read. A complete answer also needs agents:content:read A bounded, resumable sample of the logs that arrived at one project: waits up to 30 seconds (0 reads once), returns up to 100 records in arrival order with the cursor to resume from, also when nothing arrived, and why it stopped. A sample of the retained, visible logs, not total volume; an empty result is not absence. No proof page.
forecast_metric metrics mcp:read + metrics:read Forecast a metric's expected value and band, or say why no forecast is possible.
get_browser_vitals metrics mcp:read + metrics:read Read observed Web Vitals lifecycle samples with exact nearest-rank quantiles in an explicit retained window of at most seven days, by application-declared route template and service. Missing metrics are not zero measurements.
get_mcp_tool_usage metrics mcp:read + metrics:read Say which tools the callers of an MCP server use most and which fail most, for one project and window: top tools by calls, by server errors, by error rate, by denials and by invalid arguments, each population apart. The default window is 12 hours. Cumulative streams allow at most 12 hours; longer windows return scan_limit without a partial total. A project that receives no MCP server telemetry gets a state saying so and what to send.
list_metric_labels metrics mcp:read + metrics:read A metric's label names and observed values.
query_metric_histogram metrics mcp:read + metrics:read A histogram metric's bucket counts per time step.
rank_metric_groups metrics mcp:read + metrics:read Rank the values of one attribute of a metric over a window: the top groups by the metric's aggregate, with the total over all groups, the number of groups and the remainder. An optional second metric gives a rate per group, with a minimum denominator. The default window is 12 hours. Cumulative streams allow at most 12 hours; longer windows return scan_limit without a partial total. Says when a metric cannot be ranked and why.
get_availability_report monitors mcp:read + monitoring:read Compute duration-weighted availability and coverage over a fixed window for one or more monitors, from their recorded scheduled rounds and maintenance windows (PL-32).
get_maintenance_window monitors mcp:read + monitoring:read Read one maintenance window with its scope, bounds, state and revision.
get_monitor monitors mcp:read + monitoring:read Read one monitor, including a deleted one, with its alert rule's routing coverage, health, response gate and scheduling diagnostics.
list_heartbeat_pings monitors mcp:read + monitoring:read List a heartbeat monitor's received pings, newest first, with run id, duplicate disposition and how its round counted each; never a token.
list_maintenance_windows monitors mcp:read + monitoring:read List maintenance windows with scope, bounds, time zone and state (upcoming, active, completed, canceled).
list_monitor_audit monitors mcp:read + monitoring:read List a monitor's audit entries, newest first.
list_monitor_history monitors mcp:read + monitoring:read List a monitor's scheduled and test jobs, newest first, with state and reason code.
list_monitor_rounds monitors mcp:read + monitoring:read List a monitor's rounds, newest first: majority verdict, regional coverage, response effect and each region's outcome and timing.
list_monitors monitors mcp:read + monitoring:read List external HTTP, TLS, domain and heartbeat monitors with configuration, state, revision, bound alert rule and scheduling diagnostics. Deleted monitors only on request.
list_probe_regions monitors mcp:read + monitoring:read List the probe regions and whether a regional executor is serving each, with worker counts and builds.
get_notification_delivery notifications mcp:read + channels:read Inspect one delivery receipt in full: every attempt and its timing, the retry schedule, the provider correlation ids and the last error.
list_notification_deliveries notifications mcp:read + channels:read List one project's alert and incident delivery receipts with their status, retry state and provider correlation ids, optionally filtered by alert, incident or channel.
get_oncall_schedule oncall mcp:read + members:read + oncall:read + projects:read Get one on-call schedule with its ordered rotation layers, their restrictions and an explicit page of recorded overrides; limit/cursor continue the override history.
list_contact_methods oncall mcp:read + oncall:read List a page of your own paging contact methods with their transport, address, verification state, contact order and identifier.
list_oncall_schedules oncall mcp:read + members:read + oncall:read + projects:read List a page of one project's on-call schedules with their active state, time zone and number of rotation layers.
resolve_oncall oncall mcp:read + members:read + oncall:read + projects:read Answer who is on call for one schedule at a given instant, and explain whether an override or a specific rotation layer selected them.
compare_issue_customers persons mcp:read + analytics:read + errors:read + persons:read Compare affected customers with explicit-success controls in one bounded window. Association, not causation; missing values and partial counts are explicit.
customer_recovery persons mcp:read + analytics:read + errors:read + persons:read Observe explicit workflow success and subsequent issue failures for a bounded live customer cohort; requires errors:read and analytics:read in addition to persons:read.
get_friction_signals persons mcp:read + analytics:read + persons:read Read opt-in click friction with person, operation and replay references in an explicit bounded window. Observations do not prove frustration or churn.
get_person_erasure persons mcp:read + persons:erase Read one person-erasure operation: requester, reason, how many distinct ids it fenced, its state and each store's status. STALLED means required work is overdue or receipt recovery needs attention; states what is already removed and asks to keep the operation id and contact support. Never returns the erased distinct ids.
get_person_export persons mcp:read + persons:export Read one export of a person's data: requester, state (it waits for recently sent data before it is built), and once complete the row count, time range and data boundary of each kind in the archive, what the export waited for, and what it does not hold and why. Never returns a distinct id or a row of the archive.
get_person_export_download persons mcp:read + persons:export Return the authenticated URL a complete export's archive is downloaded from. The URL grants nothing by itself: each download is authorized again.
get_person_reliability persons mcp:read + persons:read + traces:read. A complete answer also needs persons:profile:read Read completed observed server attempts, exact counts and approximate latency with full population and evidence boundaries for persons in one selected project and service; optional profiles require separate permission and current policy.
get_recovery_watch persons mcp:read + analytics:read + errors:read + persons:read Recheck a frozen recovery baseline under current permissions, retention and erasure.
get_release_impact persons mcp:read + analytics:read + errors:read + persons:read + releases:read Compare release customer impact across explicit windows: failures, accounts, operation outcomes, friction and operation-matched recovery. Bounded evidence, not causation.
get_support_story persons mcp:read + persons:read. A complete answer also needs errors:read, replay:read, traces:read Read independent bounded support evidence for one exact requester or complaint, preserving absolute windows, resolved threshold, nullable counts, source limits and exact untrusted identifiers. A verified current identity may include an exact person proof URL. Complaint selection additionally requires errors:read. No provider connection or recording on read.
list_person_erasures persons mcp:read + persons:erase List one project's person-erasure operations, newest first, with state and per-store status; cursor-paged. STALLED explains unfinished required removal, what is already removed and the support remedy.
list_person_exports persons mcp:read + persons:export List one project's exports of a person's data, newest first, optionally of one person; cursor-paged.
list_recent_customers persons mcp:read + persons:read Rank current canonical customers by observed errors, person-linked traces and product events across one entire measured project window. Default last 24 hours/top 25, at most seven days/top 100. Counts are decimal strings, with exact eligible/omitted totals, separate source floors and unattributed/erased signals. A bounded current top list, never an enumerated audience or profile-edit order. Incomplete scans or unavailable full-population identity authority return no ranking. No profile bags or source-read scopes required.
list_recovery_watches persons mcp:read + analytics:read + errors:read + persons:read List durable recovery definitions and background observation timestamps; no cached customer evidence.
preview_identity_correction persons mcp:read + persons:read Inspect recent alias mapping history and preview separation with a revision; existing properties stay on the original person.
preview_person_reliability persons mcp:read + persons:read + traces:read. A complete answer also needs persons:profile:read Advisory metadata preview that reserves nothing and estimates no source size for persons in one selected project and service; optional profiles require separate permission and current policy.
rank_person_latency persons mcp:read + persons:read + traces:read. A complete answer also needs persons:profile:read Read completed observed server attempts, exact counts and approximate latency with full population and evidence boundaries for persons in one selected project and service; optional profiles require separate permission and current policy.
read_people persons mcp:read + persons:read. A complete answer also needs persons:profile:read Read up to 200 people by canonical id in one project; optionally attach allowed display fields, with redactions and untrusted text.
get_project projects mcp:read + projects:read Read one project's settings: slug, active state, retention and sampling.
list_projects projects mcp:read + projects:read Read one page of projects visible to the credential with each project's id, name, slug, active state and retention period.
get_quarantine quarantine mcp:read + quarantine:request Read one containment: its request, the approval grant, each enforcement point's state and each contained credential's outcome.
list_quarantines quarantine mcp:read + quarantine:request List agent containment requests and orders by status, with target, action, requester, approver and per-credential enforcement.
get_browser_session_evidence query mcp:read + query:read Resolve bounded trace, issue and recording references for one session. Each source enforces its own read scope and retention; unavailable, withheld and no visible evidence remain distinct. Replay presence does not grant playback content.
get_action_receipt receipt_chains mcp:read + agents:read One action's folded receipt with every ledger entry.
list_action_receipts receipt_chains mcp:read + agents:read Folded action receipts for one action or chain: authority, end state, policy and verification.
verify_receipt_chain receipt_chains mcp:read + agents:read Verify that this project's action receipt chain is intact — digests, links and sequence — reporting the entry count split into platform-attested and agent-reported, and the head digest. Supply retained_checkpoint to authenticate and compare an independently retained signed checkpoint; a missing tail contradicts it even if the shortened chain is consistent. retained_checkpoint_state states matched, contradicted or outside_retained_range; an invalid chain returns status=error.
find_trace_recording replay mcp:read + replay:read Whether a trace belongs to a session and whether that session has a recording: recorded (with the session and a link), not recorded, or no session.
get_recording replay mcp:read + replay:read One session recording's metadata and replay link.
get_replay_highlights replay mcp:read + replay:content:read Read event-based replay highlights with timestamps and issue/trace references under current recording retention.
get_replay_steps replay mcp:read + replay:read. A complete answer also needs replay:content:read Read declared browser or native structural version 1 formats. Native screen and action declarations are bounded untrusted evidence; format, privacy, missing UI, pause and loss coverage are explicit. Unknown formats are unsupported. Read one recorded session as ordered steps with their positions: page loads, clicks and taps, field changes as placeholders (a typed value is never returned), form submits, scrolls, linked errors and failed requests, and gaps. Counts unsupported events, says what was masked or withheld, and pages long sessions with a cursor.
list_page_backdrops replay mcp:read + replay:read The heatmap page backdrops a project holds, per page and viewport width class: metadata only.
search_recordings replay mcp:read + replay:read Session recordings in a project, optionally matching a search term.
correlate_signals search mcp:read + search:read The logs, error groups and metric series around a query or trace, and the services it spans. Correlated Issues carry their current lifecycle status, including resolved, ignored and ongoing after reopening.
list_filter_values search mcp:read + search:read The observed values of one search filter field.
unified_search search mcp:read + search:read One query across traces, metrics and logs, preserving exact log/project IDs and naming failed sources, even with zero hits.
get_onboarding_setup settings mcp:read + settings:read Read the bounded first-application setup draft for one project. Saved test identifiers and setup choices are not proof of successful instrumentation; verify with instrumentation_doctor.
get_status_page status mcp:read + status:read Read one status page's draft: components (status, association, automatic updates), public incidents with their updates, maintenance, and its publication state.
list_status_pages status mcp:read + status:read List status pages with their slug, public state, live revision, newest publication (pending, published, failed or superseded) and whether the draft has unpublished changes.
list_status_publications status mcp:read + status:read List a status page's publications, newest first, with revision, origin (manual or automatic), state and any renderer refusal.
list_status_subscribers status mcp:read + status:read List a status page's email subscribers with masked addresses, state and components, with counts and uncertain or failed email totals.
preview_status_publication status mcp:read + status:read Return exactly the public document a publish would write for the current draft, with its size against the limit. Nothing is published.
get_support_complaint support_complaints mcp:read + errors:read + persons:read Recover one agent-recorded technical contact by stable UUID, revalidating its current person linkage. Withdrawn outcomes contain only minimal recovery metadata.
list_support_complaints support_complaints mcp:read + errors:read + persons:read Read a bounded revision-validated contact page with exact contact window, retention and incomplete external coverage. Changed identity is unattributed.
get_survey surveys mcp:read + surveys:read Read one in-product survey: its questions with stable ids, its targeting (routes, audience, feature flag, sample, response cap, schedule, cooldown), state and accepted responses. Frozen once launched.
get_survey_delivery_evidence surveys mcp:read + surveys:read. A complete answer also needs agents:content:read, analytics:read, persons:read Read one visitor's retained latest offer, explicit display and outcome at an exact launched revision in a one-hour receipt window. persons:read permits attribution, analytics:read independent events, and agents:content:read with current policy protected IDs and comparisons. Only marked emission bindings yield coordinates. Incomplete subject history or unreadable evidence never proves absence. No answers, visitor delivery or proof link.
get_survey_limits surveys mcp:read + surveys:read Read the bounds every survey definition is held to, the eligibility staleness and the refusal codes a refused survey request starts with.
list_surveys surveys mcp:read + surveys:read List a project's in-product surveys, newest first, with lifecycle state, revision, question count, accepted responses and the full definition including targeting.
get_ticket tickets mcp:read + connections:read + errors:read + tickets:read Get one external ticket link with the connection it is pinned to, its external status and its synchronization state.
list_tickets_for_issue tickets mcp:read + connections:read + errors:read + tickets:read List the external tickets linked to one error issue, with each link's provider, external status and synchronization state.
aggregate_traces traces mcp:read + traces:read Per-service and per-operation span statistics over a window.
get_service_map traces mcp:read + traces:read The service dependency map with its effective time range and narrowing reasons: rates, latency, edges, bottlenecks and cycles.
get_trace_critical_path traces mcp:read + traces:read The latency-critical span path with owning trace IDs; withheld when span or linked-consumer discovery is partial.
get_agent_plan_usage usage mcp:read + usage:read Read authoritative OAuth approval capacity and monthly admitted automated work, current plan revision, reconciliation and unknown limits. No approval owners or proof link.
get_family_policy usage mcp:read + usage:read Read current product/technical retention choices, granted ceilings and exact revisions. An optional project authorizes a mirror; the policy and allowance are organization-wide. Every organization starts with a plan-derived choice that can be changed. Capture and OTLP use independent family admission; allocations are not a hard spending cap.
get_family_usage usage mcp:read + usage:read Read an exact UTC month's durable product/technical admissions, critical-error overage and the current policy. An optional project authorizes a mirror; counts remain organization-wide. Missing measurement is unknown, current policy is not historical policy, and allocations are not a hard spending cap.
get_intake_ledger usage mcp:read + usage:read Read intake dispositions and receipt-time checkpoints for journaled submitted positions by project, trusted source, signal, UTC day and reason. Upstream completeness is unknown; billed units are not metered.
get_org_usage usage mcp:read + usage:read Read per-meter threshold events and admission rules, current family retention choices beside the snapshot's nominal plan ceiling, replay window, quota posture and full event, metric-series and replay-session meters for a billing month.
lookup_write_outcome write_outcomes mcp:read + activity:read Look up your own write by original action, exact arguments and stable idempotency key or request correlation id. Requires activity:read and the original write's current permissions. Owner journals return the immutable first result; correlation and transport-only results have bounded retention. Unknown or expired is not evidence of failure. No confirmation or new write debit.

The daily-driver mutations, registered as their own tools so a host can tell a benign acknowledgement from a destructive delete.

Safety is the blast radius. Destructive destroys data or access you cannot restore with the same key — which includes replacing a value your key may write but may not read, because there is then nothing left to restore it from; reversible changes only state you can change back. Leaves Anectico means the call causes something outside your organization — a message delivered, an email sent, an issue opened or closed in a connected tracker — that undoing the Anectico-side record does not take back; a capability can be both. Previews first means the first call applies nothing and returns a preview plus a confirm_token — repeat the identical call with that token to apply it.

Retry is what happens if you make the SAME call a second time — the question that matters when a response never arrives and you cannot tell whether the first call landed. Safe to retry means the second call leaves the same end state, so you may repeat it freely. Retry duplicates means a second call commits a second effect — another record, another message — so send an idempotency_key with the first call instead of repeating it blind. Retry refused means the second call is rejected rather than applied: nothing is duplicated, but repeating the identical call cannot succeed, so read the object back and decide again. Every write action accepts an optional idempotency_key: reusing the same key with the same arguments replays the first result instead of running the action again.

Tool Area Required scopes Safety Retry What it does
acknowledge_alert alerts mcp:write + alerts:acknowledge Destructive · previews first Safe to retry Acknowledge a firing alert, recording that a responder has taken it, after a preview and confirmation.
resolve_alert alerts mcp:write + alerts:read + alerts:resolve Destructive · leaves Anectico · previews first Retry refused Resolve a firing alert with an optional resolution note, marking the underlying condition handled.
set_issue_status errors mcp:write + errors:write Destructive · leaves Anectico · previews first Retry refused Resolve, ignore, unresolve or assign an error issue at the exact version the caller read, with an optional note, after a preview and confirmation. Assigning to a person additionally requires members:read; every other action does not. A later call reverses the status only — the resolution note, resolver, release baseline and regression state are not restored.
snooze_issue errors mcp:write + errors:write Destructive · previews first Retry refused Snooze an error issue until a condition trips — a timestamp, a count of new occurrences or newly affected people, escalation, or indefinitely — after a preview and confirmation. Snoozing an already-snoozed issue restarts its window and counters.
comment_incident incidents mcp:write + incidents:respond Reversible · previews first Safe to retry Append a comment to an incident's timeline at the version the caller read, with a required retry key so a repeat appends exactly once. Supply expected_version as the exact decimal string from get_incident.
create_incident incidents mcp:write + channels:read + incidents:write. A complete answer also needs incidents:read Reversible · leaves Anectico · previews first Safe to retry Open a new incident with a title, description, severity and an optional response-catalog service (Incidents snapshots that service's owner and runbook), after a preview and confirmation. A stable idempotency_key is required; matching retries recover the original metadata without sending again. Opening one notifies every enabled channel, and those messages cannot be recalled. Use link_incident_signal to attach error or trace evidence.
create_live_screen live mcp:write + live:write Reversible · previews first Safe to retry Compose a new live screen from a closed set of panel kinds — either by sending the panels or by naming a starting template the server composes from what the project contains, under the caller's own permissions. A composed draft is returned unreviewed, with every label the composer discovered. Requires a retry key, so a repeat returns the first screen instead of creating a second, and creating one publishes nothing.

Write actions

Found through list_write_actions and run with ONE of two doors, chosen by how far the action reaches: execute_internal_action for an action whose effect stops inside your organization, execute_external_action for one that also causes something Anectico cannot retract. Each action's execute_with names its door, and calling the other one is refused. The per-action scope and the confirmation rules are the same as a promoted tool's.

batch_set_account_business_inputs through declare_fix

Action Area Required scopes Safety Retry What it does
batch_set_account_business_inputs accounts mcp:write + groups:business:read + groups:business:write + groups:read + mcp:read Reversible · previews first Safe to retry Preview every before and proposed field, then confirm one atomic replacement of 1 to 500 exact accounts under per-row revisions. Maximum 1 MiB input and 4 MiB complete preview; no truncation or independent sub-batches. Any row creating a missing account additionally needs groups:write.
clear_account_business_inputs accounts mcp:write + groups:business:read + groups:business:write + groups:read + mcp:read Reversible · previews first Safe to retry Preview and confirm clearing all typed customer fields while preserving business revision. This reversible management change keeps the account and its memberships. Requires an explicit revision and stable actor-bound retry key.
create_account_segment accounts mcp:write + account_segments:write Reversible · previews first Safe to retry Define an account segment: the accounts of one type matching every filter.
delete_account accounts mcp:write + groups:delete Destructive · previews first Safe to retry Delete a B2B account definition after a preview; refused while it has active members.
delete_account_segment accounts mcp:write + account_segments:delete + account_segments:read Destructive · previews first Safe to retry Delete an account segment no active metric watch targets, after a preview and confirmation.
move_account_member accounts mcp:write + groups:read + groups:write Reversible · previews first Retry refused Move one person from an exact source account to a destination of the same type after a preview.
remove_account_member accounts mcp:write + groups:read + groups:write Destructive · previews first Retry refused Remove one person from one B2B account after a preview; the membership is kept as history.
set_account_business_inputs accounts mcp:write + groups:business:read + groups:business:write + groups:read + mcp:read Reversible · previews first Safe to retry Preview and confirm a complete current declaration replacement under explicit expected revision and stable actor-bound retry key. Explicit account creation additionally needs groups:write and creates no membership. Recover the original owning outcome before retrying.
update_account_segment accounts mcp:write + account_segments:read + account_segments:write Destructive · previews first Retry refused Change a segment's name, account type or filters, after a preview and confirmation.
set_agent_budget agent_budget mcp:write + api_key:write + audit:read Reversible · previews first Retry refused Owner/admin sets operation limits and an optional request_rate (requests per second and burst, within the plan's ceiling) per credential or workspace; null inherits, zero blocks. A connection policy also needs members:write. Changes apply within seven seconds without re-login.
create_agent_destination agent_destinations mcp:write + event_destinations:write. A complete answer also needs agents:content:read, alerts:read, alerts:rules:read, analytics:read, errors:read, groups:read, incidents:read, insights:read, logs:read, persons:profile:read, persons:read, releases:read, traces:read Reversible · leaves Anectico · previews first Safe to retry Preview and create agent destination for the presenting key and one project; confirmation required. A stable idempotency_key is required. Matching retries recover the original metadata; signing secrets are shown once and withheld on replay. Up to eight subscribed bases and bounded exact watch filters are admitted under current source read permissions. Before enqueue and every attempt, current owner, source, policy and privacy authority are rechecked.
delete_agent_destination agent_destinations mcp:write + event_destinations:read + event_destinations:write Destructive · previews first Safe to retry Delete an owned event destination and its delivery history after confirmation. Deletion is permanent.
pause_agent_destination agent_destinations mcp:write + event_destinations:read + event_destinations:write Destructive · previews first Retry refused Pause an owned event destination after confirmation. Attempts that encounter a paused destination stop without transport retries.
resume_agent_destination agent_destinations mcp:write + event_destinations:read + event_destinations:write Destructive · leaves Anectico · previews first Retry refused Re-enable an owned event destination after confirmation, resetting its failure circuit. Stopped deliveries are not replayed.
rotate_agent_destination_secret agent_destinations mcp:write + event_destinations:read + event_destinations:write Destructive · previews first Retry refused Rotate an owned destination’s signing secret after confirmation. Show the new secret once; retain the previous signature for one hour.
test_agent_destination agent_destinations mcp:write + event_destinations:read + event_destinations:write Reversible · leaves Anectico · previews first Retry duplicates Queue a clearly marked signed test document after confirmation. The result distinguishes admitted pending work from a durable capacity refusal. Exhausted receipt storage backpressures without a new receipt. Read the delivery receipt and attempts; neither proves independent receiver verification.
update_agent_destination agent_destinations mcp:write + event_destinations:read + event_destinations:write. A complete answer also needs agents:content:read, alerts:read, alerts:rules:read, analytics:read, errors:read, groups:read, incidents:read, insights:read, logs:read, persons:profile:read, persons:read, releases:read, traces:read Destructive · leaves Anectico · previews first Retry refused Replace the subscriptions of an owned event destination after a readable confirmation preview. Current fixed and watch-filter source scopes are checked against the owner key’s recorded ceiling; unrelated optional sources are not required.
append_action_receipt agent_governance mcp:write + agents:read + agents:write Reversible · previews first Safe to retry Append a reported receipt of your agent's action to the tamper-evident chain; a retry returns the same entry.
configure_agent_driver agent_governance mcp:write + agents:read + agents:write Destructive · previews first Safe to retry Enable or disable outbound driving of one registered agent, binding its endpoint to a saved credential.
drive_agent agent_governance mcp:write + agents:read + agents:write Reversible · leaves Anectico · previews first Safe to retry Send one message to a registered agent outside Anectico; a required request_id makes retries never send twice.
register_agent_asset agent_governance mcp:write + agents:read + agents:write Destructive · previews first Safe to retry Declare a technical agent, workflow, tool or model by its complete observation identity, with exact shadow adoption, state-bound replacement and actor-bound immutable first-result recovery. Requires agents:read for preparation/replay. No execution, approval or deployment is implied.
register_config_snapshot agent_governance mcp:write + agents:read + agents:write Reversible · previews first Safe to retry Register the exact configuration behind an effective_config_hash, optionally moving a deployment onto it.
register_deployment agent_governance mcp:write + agents:read + agents:write Destructive · previews first Safe to retry Declare an asset deployed in an environment under a stable external reference; re-registering updates it.
replay_agent_session agent_governance mcp:write + agents:content:read + agents:read + agents:write Reversible · leaves Anectico · previews first Safe to retry Replay a real recorded session's user turns against a registered agent and compare replies; request_id required.
review_agent_asset agent_governance mcp:write + agents:read + agents:write Reversible · previews first Safe to retry Approve, reject or reset an asset to unreviewed with a reason and explicit risk tier after a preview; approving does not lift a quarantine.
revoke_authority_edge agent_governance mcp:write + agents:read + agents:write Destructive · previews first Safe to retry Withdraw a declared delegation of authority after a preview; it does not disable the credential or stop the agent.
set_agent_asset_data_classification agent_governance mcp:write + agents:read + agents:write Reversible · previews first Safe to retry Classify the data an asset handles, with a reason, after a preview showing the classification replaced.
set_agent_asset_ownership agent_governance mcp:write + agents:read + agents:write Reversible · previews first Safe to retry Replace an asset's owning team and principal after a preview showing the owners replaced.
set_memory_item_label agent_governance mcp:write + agents:read + agents:write Reversible · previews first Retry duplicates Record a new trust label revision on an agent memory item after a preview showing the label in force.
sign_abom_manifest agent_governance mcp:write + agents:read + agents:write Reversible · previews first Safe to retry Have the registry sign a declared agent bill of materials; a retry returns the same signature.
sign_receipt_checkpoint agent_governance mcp:write + agents:read + agents:write Reversible · previews first Safe to retry Preview then sign and retain a checkpoint of the verified chain tail. Its required durable key returns the original signature after chain growth; keep the detached result outside Anectico.
set_agent_spend_budget agent_spend_budget mcp:write + api_key:write + audit:read Reversible · previews first Safe to retry Owner or admin previews and confirms complete typed-decision spend policy with a stable retry key; OAuth policy also requires members:write; previewing the controlling credential itself also needs activity:read; MCP also requires mcp:read. Omission inherits; zero blocks. Positive guaranteed enforcement requires qualified provider bounds. Use lookup_write_outcome with the original action, exact arguments and key after a lost reply. Same-intent replay returns the first owner receipt before another confirmation or write debit; unknown never means failed.
create_alert_rule alerts mcp:write + alerts:rules:write + evals:read Reversible · previews first Safe to retry Create an alert rule from its definition after a validated preview. An exact account objective additionally requires groups:read, traces:read and agents:content:read with current policy; creation is paused and resume is separately approved. An identical retry with the same creation key returns the original result, including after later edits or retirement; changed arguments are refused.
create_silence alerts mcp:write + silences:write Destructive · previews first Safe to retry Silence the alerts matching a set of label matchers for a bounded window, after a preview and confirmation, so they stop notifying until it ends. Pages suppressed while it is active are not delivered later, even if the silence is removed.
delete_alert_rule alerts mcp:write + alerts:read + alerts:rules:delete + alerts:rules:read. A complete answer also needs channels:read, incidents:read Destructive · leaves Anectico · previews first Safe to retry Tombstone an alert rule, stop evaluation, resolve its active alerts and linked incidents, and potentially send recovery notifications. The preview shows the recovery audience; messages cannot be recalled.
delete_silence alerts mcp:write + silences:delete + silences:read Destructive · previews first Safe to retry Remove a silence after a preview and confirmation, so the alerts it was suppressing can fire again.
evaluate_alert_rule alerts mcp:write + alerts:rules:write Destructive · leaves Anectico · previews first Safe to retry Evaluate an alert rule against live data now, as the scheduler would, after a preview and confirmation: breaches fire and notify, cleared alerts resolve. Not a dry run.
unacknowledge_alert alerts mcp:write + alerts:acknowledge Destructive · leaves Anectico · previews first Retry refused Withdraw an alert's acknowledgment after a preview and confirmation; a firing alert notifies its responders again.
update_alert_rule alerts mcp:write + alerts:rules:read + alerts:rules:write Destructive · previews first Retry refused Change an alert rule's fields, compare-and-swap on its version, after a complete state-bound preview. Account objective work edits and resume require groups:read, traces:read and agents:content:read with current policy; pause-only needs no source reads.
update_silence alerts mcp:write + silences:read + silences:write Destructive · previews first Retry refused Change a silence's name, comment, matchers or window after a preview of the silence as it stands. Pages a widened or extended silence suppresses are not delivered later.
cancel_analytics_result analytics mcp:write + analytics:query + analytics:read + persons:read Destructive · previews first Safe to retry Stop a product-analytics execution that is still pending or running, and report the status that stands afterwards. The first call previews what would stop and returns a confirm_token; call again with the same arguments plus that token to apply. Stopping is permanent — a stopped execution publishes no result and cannot be resumed. An execution that already reached a terminal status keeps it: the call reports that status rather than rewriting it, so stopping a result that is already ready, failed or stopped changes nothing.
create_cohort analytics mcp:write + cohorts:write Reversible · previews first Safe to retry Create a person cohort — behavioral, property-based or a static member list — after a complete server preview, with a required idempotency_key. Static membership shows every canonical person and resolution outcome.
delete_cohort analytics mcp:write + analytics:read + cohorts:delete + persons:read Destructive · previews first Safe to retry Delete a cohort after a preview and confirmation. This cannot be undone.
refresh_cohort analytics mcp:write + analytics:read + cohorts:write Reversible · previews first Retry refused Recompute a cohort's membership now rather than waiting for its next scheduled refresh. Incomplete canonical identity evidence refuses the refresh and preserves the previous generation; retry after identity processing recovers.
replace_static_cohort_members analytics mcp:write + analytics:read + cohorts:write + persons:read Reversible · previews first Retry refused Replace a static cohort's entire membership at the exact generation the caller read, after a preview and confirmation; an empty list clears it.
delete_anomaly_finding anomalies mcp:write + anomalies:delete Destructive · previews first Safe to retry Permanently delete an anomaly finding after a preview; resolving keeps the record.
set_anomaly_finding_status anomalies mcp:write + anomalies:write Destructive · previews first Safe to retry Acknowledge, resolve or reopen an anomaly finding after a preview; the first acknowledgment wins.
create_api_key api_keys mcp:write + api_key:write Reversible · previews first Safe to retry Preview and confirm a management, application, client_delivery or replay_upload credential. Replay upload authority is project-bound with only replay:write and requires the issuer to hold that literal grant for the active project; it permits native structural upload only. Specify an exact project or org_wide=true for management. Requires api_key:write and every granted management scope, or experiments:launch for application. Stable idempotency_key required. The complete preview names the actual scopes; the secret is returned once and never retained in receipts, activity or retries.
create_intake_key api_keys mcp:write + api_key:write Reversible · previews first Safe to retry Preview and confirm a browser_capture, mobile_capture, server_capture or native_ingest key for an exact project. Requires the purpose's write scope, api_key:write and a stable retry key. The complete preview includes credential metadata and any default intake source creation. Returns the secret once in response text, never in receipts or replay storage. Identical retries return metadata only; recover a lost secret by revoking that key and creating a new operation.
revoke_api_key api_keys mcp:write + api_key:read + api_key:write Destructive · previews first Safe to retry Preview and permanently revoke one key, including native intake credentials. Requires api_key:read/write. Confirmation binds displayed current key metadata; repeating a completed revocation is harmless. The secret cannot be recovered or restored.
update_api_key api_keys mcp:write + api_key:read + api_key:write Destructive · previews first Safe to retry Preview and rename a credential and/or replace its scopes in place, keeping the same key string. An explicit replace_scopes flag distinguishes keeping scopes from clearing them; scopes you do not hold are refused. Requires api_key:read/write; confirmation binds the displayed current metadata.
create_app_view_grant app_view_grants mcp:write + analytics:read + api_key:read + api_key:write + app_views:share + persons:read Reversible · previews first Safe to retry Preview and confirm an immutable aggregate share. Every ceiling and source scope must also be held. Binds every immutable field and the complete admission digest over the parent key, sharing policy and owner result; changed state requires a new preview. Stable creation key. Copies already displayed cannot be recalled. Explicit publishable_result_id creates a public static credential returned once in response text; anyone holding it can read that aggregate.
revoke_app_view_grant app_view_grants mcp:write + api_key:read + api_key:write + app_views:share Destructive · previews first Safe to retry Preview and confirm permanently stopping one approved share under expected_grant_version. Parent revoke stops every descendant; this stops only this grant. Repeating is safe; downloaded/displayed copies cannot be recalled. Requires sharing and key read/write authority.
clear_billing_change billing mcp:write + billing:read + billing:write Destructive · leaves Anectico · previews first Safe to retry Manage organization billing with complete server previews and confirmation for every write. Hosted payment URLs are secret and returned only once. Keep the same UUID retry key for identical requests.
confirm_billing_change billing mcp:write + billing:read + billing:write + usage:read Destructive · leaves Anectico · previews first Safe to retry Manage organization billing with complete server previews and confirmation for every write. Hosted payment URLs are secret and returned only once. Keep the same UUID retry key for identical requests.
create_billing_checkout billing mcp:write + billing:read + billing:write + usage:read Reversible · leaves Anectico · previews first Safe to retry Manage organization billing with complete server previews and confirmation for every write. Hosted payment URLs are secret and returned only once. Keep the same UUID retry key for identical requests.
create_billing_portal billing mcp:write + billing:read + billing:write Reversible · leaves Anectico · previews first Safe to retry Manage organization billing with complete server previews and confirmation for every write. Hosted payment URLs are secret and returned only once. Keep the same UUID retry key for identical requests.
preview_billing_change billing mcp:write + billing:read + billing:write + usage:read Reversible · previews first Safe to retry Manage organization billing with complete server previews and confirmation for every write. Hosted payment URLs are secret and returned only once. Keep the same UUID retry key for identical requests.
update_capture_settings capture_settings mcp:write + ingestion:pipelines:read + ingestion:pipelines:write Reversible · previews first Retry refused Preview and confirm a change to a project's server-controlled SDK capture settings, compare-and-swap on its revision. Setting enabled to false is the autocapture kill switch: browsers stop autocapture without a redeploy of the site. The settings only narrow what the application configured. Optional native_replay is a complete NR1 section replacement; omission preserves it and unrelated browser choices. Native capture still requires explicit replay-owner consent and native store permission.
create_notification_channel channels mcp:write + channels:write Reversible · previews first Safe to retry Create an organization-wide notification channel — email, chat, pager or webhook — that alerts and incidents can be delivered to.
create_notification_template channels mcp:write + channels:write Reversible · previews first Safe to retry Preview and confirm creating the organization's custom template for one channel type; a second for the same type is refused.
delete_notification_channel channels mcp:write + channels:delete + channels:read Destructive · previews first Safe to retry Delete a notification channel after a preview and confirmation, so alerts routed to it stop delivering. This cannot be undone.
delete_notification_template channels mcp:write + channels:delete + channels:read Destructive · previews first Safe to retry Delete a custom notification template after a preview; its channel type falls back to the built-in default.
test_notification_channel channels mcp:write + channels:read + channels:write Reversible · leaves Anectico · previews first Retry duplicates Send a real test message through a stored notification channel, after a preview and confirmation, to verify its delivery configuration.
update_notification_channel channels mcp:write + channels:read + channels:write Reversible · previews first Retry refused Patch a notification channel after versioned preview and confirmation. Omitted fields are preserved. Webhook credentials are encrypted and withheld; a new URL and complete headers object replace them without retaining old values. Reconfigure a disabled channel before separately approving enable.
update_notification_template channels mcp:write + channels:read + channels:write Reversible · previews first Retry refused Change a notification template's name, subject or body, fenced on its version, after a preview.
create_analytics_audience cohort mcp:write + analytics:read + cohorts:write + mcp:read + persons:read Reversible · previews first Safe to retry Preview and create a derived person audience from a complete result selection. Confirmation and stable UUID key required; replacement uses exact generation CAS. Current inherited source permissions apply. Reuse is supported in product queries and exact-generation flag conditions; members support external-agent investigation. Generic cohort editors and mirrors remain separate.
replace_analytics_audience cohort mcp:write + analytics:read + cohorts:write + mcp:read + persons:read Destructive · previews first Safe to retry Preview and replace a derived person audience from a complete result selection. Confirmation and stable UUID key required; replacement uses exact generation CAS. Current inherited source permissions apply. Reuse is supported in product queries and exact-generation flag conditions; members support external-agent investigation. Generic cohort editors and mirrors remain separate.
update_cohort cohorts mcp:write + analytics:read + cohorts:write Destructive · previews first Retry refused Preview and confirm a cohort name, description or definition at expected_updated_at. Replacing a dynamic definition also requires expected_definition_version and expected_generation, and shows both complete canonical member sets.
create_connection connections mcp:write + connections:read + connections:write Reversible · previews first Safe to retry Store a third-party connection — an API token, webhook secret or basic credential — in the organization's vault, encrypted and never returned.
create_incoming_alert_source connections mcp:write + connections:read + connections:write Reversible · previews first Safe to retry Add a signed incoming-alert source for Alertmanager or your own sender; server preview and stable key required. Its signing secret is shown once and withheld on durable replay.
delete_connection connections mcp:write + connections:delete + connections:read Destructive · previews first Safe to retry Delete a stored connection and its credential after a preview and confirmation, breaking anything that delivers through it. This cannot be undone.
map_external_identity connections mcp:write + connections:read + connections:write + members:read Reversible · previews first Safe to retry Map a Slack user to an Anectico member so their interactive-message clicks act as that member.
request_oauth_handoff connections mcp:write + connections:read + connections:write Reversible · previews first Safe to retry Ask a person to connect a provider: returns an Anectico handoff link they open to consent in their own browser.
revoke_incoming_alert_source connections mcp:write + connections:delete + connections:read Destructive · previews first Safe to retry Revoke an incoming-alert source so every later delivery is refused. Stored signing credentials are destroyed; audit identity and delivery history remain. This cannot be undone.
rotate_incoming_alert_secret connections mcp:write + connections:read + connections:write Destructive · previews first Retry refused Replace an incoming-alert source's signing secret; the old one stops verifying and the new one is shown once; current positive version and complete server preview required.
unmap_external_identity connections mcp:write + connections:read + connections:write + members:read Reversible · previews first Safe to retry Remove a Slack user's identity mapping so their interactive-message clicks are refused.
update_connection connections mcp:write + connections:read + connections:write Destructive · previews first Retry refused Change a stored connection's label, status, non-secret configuration, or rotate its credential, after a preview and confirmation; anything left out is unchanged, the secret is never returned by reads, and a supplied credential replaces the previous one.
update_incoming_alert_source connections mcp:write + connections:read + connections:write Reversible · previews first Retry refused Change an incoming-alert source's name, fallback service key or service label with the current positive version and a complete server preview.
declare_coverage coverage_declaration mcp:write + mcp:read + projects:read + tracking_plans:read + tracking_plans:write Reversible · previews first Safe to retry Preview then confirm a new expected-surface revision or withdrawal for one project, environment and release, with exact revision CAS and actor/key idempotency. Person erasure may redact matched fields in any revision. Does not deploy, run customer code or change capture.
withdraw_coverage coverage_declaration mcp:write + mcp:read + projects:read + tracking_plans:delete + tracking_plans:read Destructive · previews first Safe to retry Preview then confirm a new expected-surface revision or withdrawal for one project, environment and release, with exact revision CAS and actor/key idempotency. Person erasure may redact matched fields in any revision. Does not deploy, run customer code or change capture.
add_widget dashboard mcp:write + dashboard:read + dashboard:write Reversible · previews first Safe to retry Add a chart to a dashboard at the exact version the caller read, described by structured query targets, expressions and display settings. Native saved_insight uses an exact decimal-string recipe revision, requires insights:read, accepts no query/display overrides and waits for dependency confirmation before execution.
clone_dashboard dashboard mcp:write + dashboard:read + dashboard:write Reversible · previews first Safe to retry Copy an existing dashboard, with all of its widgets, into a new dashboard owned by the caller.
create_dashboard dashboard mcp:write + dashboard:write Reversible · previews first Safe to retry Preview and confirm a dashboard in the credential project (or an explicit project for an organization key), owned by the caller, with layout, tags, variables and up to 50 initial widgets. A required idempotency_key returns the first creation on identical retries.
delete_dashboard dashboard mcp:write + dashboard:delete + dashboard:read Destructive · previews first Retry refused Delete a dashboard at the exact version the caller read, after a preview and confirmation. This cannot be undone.
delete_widget dashboard mcp:write + dashboard:delete + dashboard:read Destructive · previews first Retry refused Remove a widget from a dashboard at the exact version the caller read, after a preview and confirmation. This cannot be undone.
update_dashboard dashboard mcp:write + dashboard:read + dashboard:write Reversible · previews first Retry refused Preview and confirm dashboard metadata, including layout and variables, at expected_version. update_mask selects fields; without it name, description, tags and variables are replaced. The full before/proposed definition includes unchanged widgets.
update_widget dashboard mcp:write + dashboard:read + dashboard:write Reversible · previews first Retry refused Replace a widget's type, title, structured query and display settings at the exact dashboard version the caller read, after a preview and confirmation. A new saved_insight pin requires insights:read and preserves the recipe's native result and window.
create_recovery_watch errors mcp:write + analytics:read + errors:read + errors:write + persons:read Reversible · previews first Safe to retry Save a bounded recovery watch with a caller-owned UUID and fixed baseline references; confirmation required.
declare_fix errors mcp:write + agents:content:read + analytics:read + errors:read + errors:write + persons:read Reversible · previews first Safe to retry Confirm a release fix declaration or observation. Does not resolve the issue. Notes and release labels are untrusted evidence. Person erasure may redact matched notes in any declaration; note redaction does not change outcome counts.

delete_error_group through update_member_role

Action Area Required scopes Safety Retry What it does
delete_error_group errors mcp:write + errors:delete Destructive · previews first Safe to retry Permanently delete every occurrence of one issue from the project the calling credential is signed for, after a preview and confirmation.
delete_person_errors errors mcp:write + errors:delete + persons:read Destructive · previews first Safe to retry Erase one person's error occurrences — under every identity of the person — from the project the calling credential is signed for, after a preview showing the erasure's reach.
delete_problem_report errors mcp:write + errors:delete Destructive · previews first Safe to retry Delete one problem report. Replay screenshots remain governed by the recording's separate deletion control; confirmation required.
delete_recovery_watch errors mcp:write + analytics:read + errors:read + errors:write + persons:read Destructive · previews first Safe to retry Permanently delete a time-window recovery definition and its frozen baseline references; release fix declarations must be withdrawn. Confirmation required.
merge_issues errors mcp:write + alerts:read + errors:read + errors:write Destructive · leaves Anectico · previews first Retry refused Merge one or more source error issues into a canonical issue after a preview and confirmation, hiding the sources and attributing their events to the survivor.
record_fix_outcome errors mcp:write + agents:content:read + analytics:read + errors:read + errors:write Reversible · previews first Retry duplicates Explicitly store this caller's live fix outcome as a counts-only observation. Each confirmation appends one row; plain reads save no observations.
submit_problem_report errors mcp:write + ingest:write Reversible · previews first Safe to retry Submit an explicit problem report with a stable UUID, bounded description and correlation context. Ingest scope grants no report reads; confirmation required.
supersede_fix errors mcp:write + agents:content:read + analytics:read + errors:read + errors:write + persons:read Destructive · previews first Safe to retry Confirm a release fix declaration or observation. Does not resolve the issue. Notes and release labels are untrusted evidence. Person erasure may redact matched notes in any declaration; note redaction does not change outcome counts.
unmerge_issue errors mcp:write + errors:read + errors:write Reversible · previews first Safe to retry Split a previously merged error issue back out into its own standalone issue, after a preview and confirmation.
withdraw_fix errors mcp:write + analytics:read + errors:read + errors:write Destructive · previews first Safe to retry Confirm a release fix declaration or observation. Does not resolve the issue. Notes and release labels are untrusted evidence. Person erasure may redact matched notes in any declaration; note redaction does not change outcome counts.
create_escalation_policy escalation mcp:write + escalation:write Reversible · previews first Safe to retry Create an escalation policy: ordered levels that notify channels, users and on-call schedules after their delays, with optional severity and label matching.
delete_escalation_policy escalation mcp:write + escalation:delete + escalation:read Destructive · previews first Safe to retry Delete an escalation policy after a preview and confirmation, so alerts stop escalating through it. This cannot be undone.
update_escalation_policy escalation mcp:write + escalation:read + escalation:write Reversible · previews first Retry refused Replace an escalation policy's definition — matching, repeat behavior, active state and its complete ordered level set — after a preview and confirmation. A level left out is deleted; a name or description left out keeps the stored value.
calibrate_evaluator evaluation mcp:write + evals:read + evals:write + scores:read Reversible · previews first Safe to retry Measure one judge version's agreement with human labels and store it on that version. Spends nothing; unchanged evidence returns the stored record.
create_eval_dataset evaluation mcp:write + evals:read + evals:write Reversible · previews first Safe to retry Create an empty evaluation dataset under a caller-chosen id; cases enter only by promotion.
create_eval_experiment evaluation mcp:write + evals:read + evals:write Reversible · previews first Safe to retry Declare an immutable paired comparison: an exact dataset version, evaluators at exact versions, arms with one baseline and the multiple-comparison correction.
create_evaluator evaluation mcp:write + evals:read + evals:write Reversible · previews first Safe to retry Register an evaluator under a caller-chosen id together with its immutable version 1. A retry returns the first result for the same idempotency key.
create_evaluator_version evaluation mcp:write + evals:read + evals:write Reversible · previews first Safe to retry Preview and append one immutable evaluator version. Identical retry keys return the first version.
create_release_gate evaluation mcp:write + evals:read + evals:write Destructive · previews first Safe to retry Declare one immutable release gate under a caller-supplied gate id. The same idempotency key and arguments return the original creation result with a pending verdict, even after later decisions; changed arguments are refused. There is no delete, void, or correction path.
delete_eval_sampling_rule evaluation mcp:write + evals:read + evals:write Destructive · previews first Safe to retry Remove one production sampling rule after a preview. Stored results are kept; removing an absent rule answers the same way.
evaluate_release_gate evaluation mcp:write + evals:read + evals:write Destructive · previews first Safe to retry Permanently decide one release gate. Reusing its required idempotency key returns the existing evidence snapshot; use a new key to evaluate newly arrived evidence.
evaluate_subject evaluation mcp:write + evals:read + evals:write Reversible · previews first Safe to retry Run one exact evaluator version against one subject now, after a preview, and store the result. Refusals release the subject for an explicit retry; a completed subject returns its stored result without spending.
exclude_dataset_items evaluation mcp:write + agents:content:read + evals:read + evals:write Reversible · previews first Safe to retry Seal a new dataset version without the named cases. Earlier versions keep every case, so stored results stay reproducible. With no cases named it re-cuts a dataset whose current version was retired, over the cases that remain.
promote_to_dataset evaluation mcp:write + agents:content:read + agents:read + evals:read + evals:write + scores:read Reversible · previews first Safe to retry Freeze reviewed production runs into a new sealed dataset version. Each run cites the human judgment that reviewed it. The same retry key returns its first sealed version.
run_eval_experiment evaluation mcp:write + evals:read + evals:write Reversible · previews first Safe to retry Evaluate an experiment's outstanding work, a bounded amount per call, after a preview. Resumable: finished work is never redone. Paid evaluators spend the daily budget.
set_evaluation_budget evaluation mcp:write + evals:read + evals:write Reversible · previews first Safe to retry Set the organization's hard daily cap on paid evaluations, after a preview showing the current cap and today's consumption.
set_experiment_trials evaluation mcp:write + evals:read + evals:write Reversible · previews first Safe to retry Record which recorded run realizes each dataset case under each experiment arm, after a preview. Re-binding a pair replaces its run.
submit_annotation evaluation mcp:write + scores:read + scores:write Reversible · previews first Safe to retry Record or edit your own human quality judgment of one agent run — a metric name, an optional number, an optional label and a rationale — only a directly signed-in person, never an API key or delegated agent even when associated with a user, after a preview and confirmation. Re-judging the same run and metric replaces your previous judgment and nobody else's.
upsert_eval_sampling_rule evaluation mcp:write + evals:read + evals:write Reversible · previews first Safe to retry Create or replace one production sampling rule by a caller-supplied id, after a preview that shows the settings it replaces. An enabled rule on a paid evaluator spends continuously.
create_experiment experiments mcp:write + experiments:read + experiments:write Reversible · previews first Safe to retry Preview and confirm a product experiment draft with a required idempotency_key. Identical retries return the first draft. A draft assigns nobody; launching is a separate confirmed action.
launch_experiment experiments mcp:write + experiments:launch + experiments:read Destructive · previews first Retry refused Preview and confirm launching a product experiment draft: the definition freezes and the application server may start assigning identified people.
stop_experiment experiments mcp:write + experiments:launch + experiments:read Destructive · previews first Safe to retry Preview and confirm stopping a product experiment: it becomes canceled, assignment, exposure and outcome recording stop, and it never yields a result.
update_experiment_draft experiments mcp:write + experiments:read + experiments:write Reversible · previews first Retry refused Replace a product experiment draft's definition at its current revision. A launched experiment is frozen.
cancel_export_job export mcp:write + export:read + export:write Destructive · previews first Retry refused Cancel a pending, running or retrying export job after a preview and confirmation. A canceled job cannot be resumed.
create_analytics_export export mcp:write + analytics:read + export:write + persons:read Reversible · previews first Safe to retry Preview and enqueue a frozen analytics measurement or full participant selection as CSV, JSON or Parquet. Preview reads source availability, inherited scopes and the complete normalized job, columns and format options without writing or consuming quota. Confirmation and stable idempotency key required; current source authority and expiry apply. Poll the export job before downloading.
create_export_job export mcp:write + export:write Reversible · previews first Safe to retry Enqueue a durable export of one signal — logs, traces, metrics, errors or unified search — over a window and filter set, returning the job id to poll. Traces and unified search contain trace summaries and refuse the spans column; metrics contain aggregates. Omitted times freeze the last 24 hours. The source-erasure revision and source window must remain valid, and the window readable under current technical retention, through execution, retry and download. Recorded content keeps its source-based deadline and original content-retention configuration.
export_logs export mcp:write + export:write Reversible · previews first Safe to retry Enqueue a durable logs export with a standard column set, narrowed by service, level, environment, people or free-text search. Omitted times freeze the last 24 hours; execution, retry and download recheck the original source-erasure revision and that the source window is still readable under current technical retention. Recorded content cannot outlive its original source-based retention deadline.
retry_export_job export mcp:write + export:write Destructive · previews first Retry refused Re-run a permanently failed export job with its original, unchangeable scope, query, columns and format, after a preview and confirmation. The recorded failure reason, progress and timings are cleared and cannot be recovered. Current authority must still match the original source binding; changed, erased or expired history requires a new export.
update_family_policy family_policy mcp:write + settings:write + usage:read Destructive · previews first Safe to retry Preview and confirm complete product/technical choices within granted ceilings and the existing pool. Shortening retention can irreversibly expire telemetry; increasing it later cannot restore expired data. Requires organization-wide authority, both exact revisions and a stable retry key. The preview includes every current/proposed policy field and states commit-clock, expiry-floor and physical-retention version rules. New windows apply to reads immediately; returns the owner's original complete committed policy snapshot. Does not grant additional capacity.
create_finding findings mcp:write + findings:read + findings:write + projects:read. A complete answer also needs agents:read, analytics:read, dashboard:read, errors:read, incidents:read, persons:read, releases:read, replay:read, traces:read Reversible · previews first Safe to retry Preview and confirm a caller-authored finding, immutable revision or permanent withdrawal. Save only when the person asks or agrees; measurements are stated by the author. Every supported reference is captured by its owner with the caller's token.
revise_finding findings mcp:write + findings:read + findings:write + projects:read. A complete answer also needs agents:read, analytics:read, dashboard:read, errors:read, incidents:read, persons:read, releases:read, replay:read, traces:read Reversible · previews first Safe to retry Preview and confirm a caller-authored finding, immutable revision or permanent withdrawal. Save only when the person asks or agrees; measurements are stated by the author. Every supported reference is captured by its owner with the caller's token.
withdraw_finding findings mcp:write + findings:read + findings:write Destructive · previews first Safe to retry Preview and confirm a caller-authored finding, immutable revision or permanent withdrawal. Save only when the person asks or agrees; measurements are stated by the author. Every supported reference is captured by its owner with the caller's token.
create_flag flags mcp:write + flags:write Reversible · previews first Safe to retry Create a feature flag — boolean or multivariate — with its fallback decision, variants and targeting rules after a complete server preview and confirmation. Requires idempotency_key; identical retries return the first flag.
delete_flag flags mcp:write + flags:delete + flags:read Destructive · previews first Safe to retry Delete a feature flag after a preview and confirmation. This cannot be undone.
set_flag_active flags mcp:write + flags:read + flags:write Reversible · previews first Retry refused Turn a feature flag on or off after a preview and confirmation, leaving its variants and targeting rules untouched.
update_flag flags mcp:write + flags:read + flags:write Reversible · previews first Retry refused Preview and confirm a flag at expected_updated_at, including targeting, variant names, payloads and fallback. update_mask selects fields; without it the entire mutable definition is replaced and omitted values clear.
delete_content governance mcp:write + governance:write Destructive · previews first Safe to retry Permanently erase one subject's content of one class after a preview, with a required reason and a caller-minted operation id that makes a retry return the original decision.
set_content_policy governance mcp:write + governance:write Destructive · previews first Retry refused Replace one project's content policy matrix, fenced on the version read, including 0 to initialize. The preview shows complete current and proposed matrices, including implicit denies and assigned audit fields. Requires governance:read and governance:write.
set_content_retention governance mcp:write + governance:write Destructive · previews first Safe to retry Replace one project's executable per-class retention windows, 1..365 days, after a complete current/proposed preview. Person and group property windows run bounded purges; memory_item is refused. Missing windows use platform retention. Requires governance:read and governance:write.
erase_group groups mcp:write + groups:erase Destructive · previews first Safe to retry Permanently erase one account after confirmation: remove its profile and memberships, strip its key from product events and exact account stamps from collected traces, logs, error occurrences, agent events and error issues, and withdraw affected account measurements. People stay by default. with_members additionally requires persons:erase and snapshots active members at request time; shared members of another account of the same type are skipped unless explicitly included. More than 256 active membership edges refuses the whole request. Administrative filters and historical receipts remain. Type and key are exact JSON values, including dots and slashes. The key cannot be reused; COMPLETE requires every store and unskipped child; STALLED reports work past its 30-minute limit. Reuse operation_id only to retry the same request.
add_incident_evidence incidents mcp:write + incidents:respond Reversible · previews first Safe to retry Attach a note, link, log, trace, metric, replay, screenshot or document to an incident's case file, with a required retry key so a repeat attaches it exactly once.
assign_incident incidents mcp:write + incidents:respond. A complete answer also needs incidents:read, members:read Destructive · leaves Anectico · previews first Retry refused Assign or clear the responder at an exact incident version, after a complete state-bound preview and confirmation. Needs incidents:read to prepare; a nonempty target or prior responder also needs members:read. A linked external responder channel may be updated. A hidden prior assignment refuses preparation; a departed target or changed state requires a new preview. Read back get_incident. Receipt recovery rechecks current incident read and member disclosure authority. The stored change and queued event do not prove external delivery. A cached original receipt is recovery; a consumed version without that receipt is a conflict, not proof the earlier call failed.
create_incident_slack_channel incidents mcp:write + incidents:respond Reversible · leaves Anectico · previews first Safe to retry Open (or link an existing) Slack channel for an incident, then post and pin a summary message with acknowledge, resolve and assign-to-me buttons, after a preview and confirmation. incident_id is the idempotency key: calling this again for the same incident returns the already-linked channel rather than creating a second one, unless the link failed (missing or permission_lost), in which case the call retries it.
create_response_service incidents mcp:write + alerts:rules:write + incidents:read + incidents:write Reversible · previews first Safe to retry Add a service to the response catalog, with the alert routing that pages through it.
create_runbook incidents mcp:write + incidents:read + incidents:write Reversible · previews first Safe to retry Create a runbook: an ordered list of response steps.
delete_incident incidents mcp:write + incidents:delete Destructive · previews first Safe to retry Delete an incident and its entire timeline after a preview and confirmation. This cannot be undone.
delete_response_service incidents mcp:write + alerts:rules:delete + alerts:rules:read + incidents:delete + incidents:read Destructive · leaves Anectico · previews first Retry refused Remove a service and release its alert rule: active alerts resolve, linked incidents close and recovery messages can be sent. Omit expected_revision only for a deleted service's unfinished cleanup; live deletion requires its revision.
delete_runbook incidents mcp:write + incidents:delete + incidents:read Destructive · previews first Retry refused Delete a runbook no live service defaults to, compare-and-swap on its revision. Already-deleted runbooks are refused.
link_incident_signal incidents mcp:write + incidents:respond Reversible · previews first Safe to retry Link an alert, error group or anomaly finding to an incident; an existing link is returned as is.
manage_retrospective_action incidents mcp:write + incidents:write Destructive · previews first Retry refused Create, complete, reopen or delete one action item linked to an incident's retrospective, after a preview and confirmation. Deleting cannot be undone.
revise_runbook incidents mcp:write + incidents:read + incidents:write Reversible · previews first Retry refused Publish a new runbook revision, compare-and-swap on the current one.
set_incident_checklist_step incidents mcp:write + incidents:read + incidents:respond Reversible · previews first Retry refused Mark one step of an incident's runbook checklist done or not done; the change is recorded on the timeline with its actor, and repeating the current state records nothing.
set_incident_status incidents mcp:write + incidents:respond Destructive · leaves Anectico · previews first Safe to retry Acknowledge, resolve or reopen an incident at the exact version the caller read, after a preview and confirmation, with a required retry key so a repeat applies once. Supply expected_version as the exact decimal string from get_incident. On an incident opened from an alert, acknowledge and resolve apply to that alert and show as pending until it commits them.
unlink_incident_signal incidents mcp:write + incidents:delete Destructive · previews first Safe to retry Remove a signal's link from an incident, after a preview and confirmation.
update_incident incidents mcp:write + incidents:write Destructive · previews first Retry refused Change an incident's title, description or severity after a preview and confirmation; fields left out keep their current values. Supply expected_version as the exact decimal string from get_incident.
update_incident_retrospective incidents mcp:write + incidents:read + incidents:write Reversible · previews first Retry refused Edit an incident's retrospective document under compare-and-swap on expected_revision, after a preview naming the fields that change; omitted fields keep their current values. Also needs incidents:read (it reads the document first). Drafts are readable by incident readers too; publishing marks the document final.
update_response_service incidents mcp:write + incidents:read + incidents:write Reversible · previews first Retry refused Change a catalog service's fields, compare-and-swap on its revision.
activate_pipeline_revision ingestion_sources mcp:write + ingestion:pipelines:read + ingestion:pipelines:write Destructive · previews first Safe to retry Preview and confirm the pipeline revision every later admission through a native_ingest source uses; an earlier revision is a rollback, 0 removes the pipeline. Compare-and-swaps on the catalog epoch and returns a draining operation that completes only after old-epoch admissions drain.
create_ingestion_source ingestion_sources mcp:write + ingestion:pipelines:read + ingestion:pipelines:write Reversible · previews first Safe to retry Preview and confirm a new intake source for an exact project and purpose; the purpose and project never change. Previews the complete normalized source and checks project capacity without reserving it. Requires a stable retry key; an identical retry returns the first source. No key is created.
create_pipeline_revision ingestion_sources mcp:write + ingestion:pipelines:read + ingestion:pipelines:write Reversible · previews first Safe to retry Preview and confirm an immutable pipeline revision for a native_ingest source. A refused program is stored as a non-activatable draft; an identical program returns the existing revision. Previews the complete canonical program, diagnostics and current source; new revision numbers and timestamps are explicitly allocated at commit. Does not activate.
revoke_ingestion_source ingestion_sources mcp:write + ingestion:pipelines:read + ingestion:pipelines:write Destructive · previews first Safe to retry Preview and permanently revoke a source: every later admission through a key bound to it is refused with an explicit revoked reason. Returns a draining operation. Repeating a completed revocation is harmless; a revoked source cannot be restored.
update_ingestion_source ingestion_sources mcp:write + ingestion:pipelines:read + ingestion:pipelines:write Reversible · previews first Retry refused Preview and confirm a source's name and description, compare-and-swap on its metadata revision. Purpose, project and bound keys are unchanged.
apply_instrumentation_recipes instrumentation_recipe mcp:write + insights:read + insights:write + mcp:read + tracking_plans:read + tracking_plans:write Reversible · previews first Safe to retry Merge one or more instrumentation recipes into the project's single "Recipes" tracking plan (creating it if absent; recipe events replace same-named events, every other event is kept) and apply one saved insight per selected starter insight. Confirmation required. Re-applying an identical selection with nothing else changed writes nothing — a state check above the write returns the existing plan/insight revisions untouched.
create_invitation invitations mcp:write + members:write Reversible · leaves Anectico · previews first Safe to retry Invite someone into the organization by email address with the role they will hold once they accept, after a preview and confirmation. The invitation email cannot be recalled once sent.
revoke_invitation invitations mcp:write + members:read + members:write Destructive · previews first Safe to retry Revoke a pending invitation after a preview and confirmation, so it can no longer be accepted.
delete_live_screen live mcp:write + live:read + live:write Destructive · previews first Retry refused Delete a live screen at the exact version the caller read, after a preview and confirmation. Every viewing link of that screen is revoked permanently and this cannot be undone.
pause_live_grant live mcp:write + live:publish + live:read Reversible · previews first Safe to retry Stop a live display without destroying its link: every viewer is denied at its next read and the same link works again after resume.
preview_live_screen live mcp:write + live:read + live:write Reversible · previews first Retry duplicates Run the draft screen through the same projection a display receives and return the result, so what a link would show can be read before anyone is given one. Panels the calling credential may not read come back denied rather than omitted.
publish_live_screen live mcp:write + live:publish + live:read Destructive · previews first Safe to retry Freeze a live screen at the version the caller read and mint its viewing link, after a preview naming every panel that will be disclosed. The link is shown ONCE, in the response text, and no later read returns it.
resume_live_grant live mcp:write + live:publish + live:read Reversible · previews first Safe to retry Re-open a paused live display on its existing link. Viewers that were cut off reconnect by themselves; sessions from before the pause are not revived.
revoke_live_grant live mcp:write + live:publish + live:read Destructive · previews first Safe to retry End a live display's link permanently after a preview and confirmation. Every viewer is denied at its next read and the link can never be re-enabled; publish the screen again to hand out a new one.
rotate_live_grant live mcp:write + live:publish + live:read Destructive · previews first Safe to retry Issue a new viewing link for an existing live display after a preview and confirmation. The previous link stops working immediately and cannot be recovered; the new one is shown ONCE, in the response text.
update_live_screen live mcp:write + live:read + live:write Reversible · previews first Retry refused Replace a live screen's name and its entire panel composition at the exact version the caller read, after a preview and confirmation. Panels left out are removed, and a published screen keeps serving its published revision until it is published again.
create_log_metric log_metrics mcp:write + ingestion:pipelines:write + metrics:read Reversible · previews first Safe to retry Preview and confirm a log-derived metric rule that counts matching logs or sums one numeric field into fixed buckets, with an explicit unit, bounded labels and a late cutoff. Applies to logs received after it takes effect.
delete_log_metric log_metrics mcp:write + ingestion:pipelines:write + metrics:read Destructive · previews first Retry refused Preview and confirm deleting a log metric rule: nothing more is derived and its series stop being readable. Cannot be undone.
revise_log_metric log_metrics mcp:write + ingestion:pipelines:write + metrics:read Reversible · previews first Retry refused Preview and confirm a new immutable revision of a log metric rule, an edit or a rollback to an earlier revision, compare-and-swap on expected_revision. Earlier logs keep the revision they were counted under.
delete_log logs mcp:write + logs:delete Destructive · previews first Safe to retry Permanently delete one exact log record from the project the calling credential is signed for, after a preview and confirmation. Its correlated trace is kept.
remove_member members mcp:write + members:read + members:write Destructive · previews first Safe to retry Remove a member from the organization after a preview and confirmation, revoking their access, and wait until the roster reflects it.
update_member_role members mcp:write + members:read + members:write Reversible · previews first Retry duplicates Change an organization member's role, and with it every capability their credentials are minted with, after a preview and confirmation.

create_metric_watch through create_warehouse_destination

Action Area Required scopes Safety Retry What it does
create_metric_watch metric_watch mcp:write + alerts:rules:read + alerts:rules:write + analytics:query + analytics:read + insights:read + mcp:read + persons:read. A complete answer also needs channels:read Reversible · previews first Safe to retry Preview concrete name, series, condition, window, state and notification channels, then create a project metric watch with confirmation. Create starts paused; edits and resume re-admit current source authority and channels:read when channels are configured. Pause preserves the admitted actor and needs no source access. Delete needs no source access; active alerts and linked incidents resolve and can send recovery notifications. Source validation does not compute a scalar or prove delivery. Create requires a stable key and recovers its original committed result; authority loss records an automatic pause and workspace control notice, never an automatic resume.
delete_metric_watch metric_watch mcp:write + alerts:rules:delete + alerts:rules:read + mcp:read Destructive · leaves Anectico · previews first Retry refused Preview concrete name, series, condition, window, state and notification channels, then delete a project metric watch with confirmation. Create starts paused; edits and resume re-admit current source authority and channels:read when channels are configured. Pause preserves the admitted actor and needs no source access. Delete needs no source access; active alerts and linked incidents resolve and can send recovery notifications. Source validation does not compute a scalar or prove delivery. Create requires a stable key and recovers its original committed result; authority loss records an automatic pause and workspace control notice, never an automatic resume.
pause_metric_watch metric_watch mcp:write + alerts:rules:read + alerts:rules:write + mcp:read Destructive · previews first Retry refused Preview concrete name, series, condition, window, state and notification channels, then pause a project metric watch with confirmation. Create starts paused; edits and resume re-admit current source authority and channels:read when channels are configured. Pause preserves the admitted actor and needs no source access. Delete needs no source access; active alerts and linked incidents resolve and can send recovery notifications. Source validation does not compute a scalar or prove delivery. Create requires a stable key and recovers its original committed result; authority loss records an automatic pause and workspace control notice, never an automatic resume.
resume_metric_watch metric_watch mcp:write + alerts:rules:read + alerts:rules:write + analytics:query + analytics:read + insights:read + mcp:read + persons:read. A complete answer also needs channels:read Destructive · leaves Anectico · previews first Retry refused Preview concrete name, series, condition, window, state and notification channels, then resume a project metric watch with confirmation. Create starts paused; edits and resume re-admit current source authority and channels:read when channels are configured. Pause preserves the admitted actor and needs no source access. Delete needs no source access; active alerts and linked incidents resolve and can send recovery notifications. Source validation does not compute a scalar or prove delivery. Create requires a stable key and recovers its original committed result; authority loss records an automatic pause and workspace control notice, never an automatic resume.
update_metric_watch metric_watch mcp:write + alerts:rules:read + alerts:rules:write + analytics:query + analytics:read + insights:read + mcp:read + persons:read. A complete answer also needs channels:read Destructive · leaves Anectico · previews first Retry refused Preview concrete name, series, condition, window, state and notification channels, then update a project metric watch with confirmation. Create starts paused; edits and resume re-admit current source authority and channels:read when channels are configured. Pause preserves the admitted actor and needs no source access. Delete needs no source access; active alerts and linked incidents resolve and can send recovery notifications. Source validation does not compute a scalar or prove delivery. Create requires a stable key and recovers its original committed result; authority loss records an automatic pause and workspace control notice, never an automatic resume.
delete_metric metrics mcp:write + metrics:delete Destructive · previews first Safe to retry Permanently delete every series of one metric from the project the calling credential is signed for, after a preview and confirmation.
create_maintenance_window monitors mcp:write + monitoring:read + monitoring:write Reversible · previews first Safe to retry Preview and confirm a maintenance window: scoped monitors keep checking but open no new alert while it is active, and still-failing monitors page when it ends.
create_monitor monitors mcp:write + alerts:rules:write + monitoring:read + monitoring:write Reversible · leaves Anectico · previews first Safe to retry Preview and confirm a new external monitor that pages through its own alert rule or, with service_key, through the response-catalog service that owns it; an active monitor is refused unless that route can page.
delete_monitor monitors mcp:write + alerts:rules:delete + alerts:rules:read + monitoring:delete + monitoring:read Destructive · leaves Anectico · previews first Safe to retry Preview and confirm deleting a monitor at its current revision and its alert rule; active alerts resolve, linked incidents close and recovery notifications can be sent. History is kept. This cannot be undone.
end_maintenance_window monitors mcp:write + monitoring:read + monitoring:write Destructive · leaves Anectico · previews first Retry refused Preview and confirm canceling an upcoming maintenance window or ending an active one now; still-failing monitors in scope page. This cannot be undone.
pause_monitor monitors mcp:write + monitoring:read + monitoring:write Reversible · previews first Safe to retry Preview and confirm pausing a monitor: no new rounds, open scheduled jobs fenced.
rearm_monitor monitors mcp:write + monitoring:read + monitoring:write Destructive · leaves Anectico · previews first Retry refused Preview and confirm re-arming paging after a responder resolved a still-failing monitor's alert; the next failed round pages once under a new occurrence.
resume_monitor monitors mcp:write + alerts:rules:write + monitoring:read + monitoring:write Reversible · leaves Anectico · previews first Safe to retry Preview and confirm resuming a monitor; activation re-validates its alert rule's routing coverage.
rotate_heartbeat_token monitors mcp:write + monitoring:read + monitoring:write Destructive · previews first Retry refused Preview and confirm replacing a heartbeat's ping token; the old token stops working and the new one is shown once.
test_monitor monitors mcp:write + monitoring:read + monitoring:write Reversible · leaves Anectico · previews first Safe to retry Preview and confirm one bounded test round at the current revision and durable idempotency_key; page defaults false and explicit true permits a real page, run by the regional executors.
update_maintenance_window monitors mcp:write + monitoring:read + monitoring:write Reversible · leaves Anectico · previews first Retry refused Preview and confirm changing a maintenance window at its current revision: any field while upcoming, only name and end while active.
update_monitor monitors mcp:write + monitoring:read + monitoring:write Reversible · leaves Anectico · previews first Retry refused Preview and confirm a monitor's name, configuration, routing or owning service at its current revision; a configuration change fences jobs of the old revision.
create_contact_method oncall mcp:write + oncall:contacts:write Reversible · previews first Safe to retry Add a contact method — email, SMS, chat DM — for yourself so escalations can reach them, with a rank deciding which is tried first.
create_oncall_override oncall mcp:write + members:read + oncall:read + oncall:write + projects:read Reversible · previews first Safe to retry Put a specific user on call for a schedule over a fixed window, taking precedence over the rotation for that window.
create_oncall_schedule oncall mcp:write + members:read + oncall:write + projects:read Reversible · previews first Safe to retry Create an on-call schedule with its ordered rotation layers, their rotation length and any on-call-window restrictions.
delete_contact_method oncall mcp:write + oncall:contacts:write + oncall:read Destructive · previews first Safe to retry Delete a contact method after a preview and confirmation, so escalations stop delivering to it.
delete_oncall_override oncall mcp:write + members:read + oncall:delete + oncall:read + projects:read Destructive · previews first Safe to retry Delete an on-call override after a preview and confirmation, restoring the normal rotation for its window.
delete_oncall_schedule oncall mcp:write + members:read + oncall:delete + oncall:read + projects:read Destructive · previews first Safe to retry Delete an on-call schedule and its overrides after a preview and confirmation. This cannot be undone.
update_contact_method oncall mcp:write + oncall:contacts:write + oncall:read Reversible · previews first Retry refused Update a contact method's transport, address, label and rank, after a preview and confirmation; a transport, address or label left out keeps its stored value.
update_oncall_schedule oncall mcp:write + members:read + oncall:read + oncall:write + projects:read Reversible · previews first Retry refused Replace an on-call schedule's definition — name, description, time zone, active state and its complete ordered layer set — after a preview and confirmation. A layer left out is deleted, and with it whoever it rotated on call.
correct_identity persons mcp:write + persons:correct Destructive · previews first Retry refused Separate an alias into a new merge-protected person after preview and confirmation, recording the operator and reason. A stale revision conflicts.
erase_person persons mcp:write + persons:erase + persons:read Destructive · previews first Safe to retry Permanently erase one person's profile and identity under every distinct id and fence those ids, after a preview showing the erasure's reach, with a required reason and a caller-minted operation id. The person's product events, errors, logs, traces, agent events, session recordings, diagnostic capture requests, problem reports, recorded agent session replays, account memberships, cohort and experiment membership and survey records are removed too, with their agent runs whole and the quality scores and review notes about those runs, and the analytics results that counted them are withdrawn. An evaluation dataset version that held one of their runs is retired and the experiments over it are invalidated. Action receipts that name them are redacted rather than removed: each entry of the tamper-evident ledger stays, with who performed the action, and what it said about the person is deleted. A few kinds of record are not removed: records that carry none of their identifiers, an action receipt that names them only in free text, the rest of an agent run that also names somebody else, numbers derived from their logs, the records of earlier deletions made for them and exported files.
request_person_export persons mcp:write + persons:export + persons:read Reversible · previews first Safe to retry Request an export of everything held about one person, after a preview showing whose data it covers, with a caller-minted export id: their profile and identifiers, product events, errors, logs, trace spans, agent events, cohort and experiment membership, session recordings and account memberships, as one zip of NDJSON files with a manifest that says how fresh the archive is and lists what is not included and why. Built in the background after a short wait for recently sent data; the archive is deleted after its retention period and at once if the person is erased. Requires every permission that reads the person's data.
create_project projects mcp:write + projects:write Reversible · previews first Safe to retry Create a project in the organization with a name, slug and ingest sampling rate; its retention follows the organization's plan rather than being set here. Preview and confirm first; keep the durable actor-bound idempotency key unchanged on retries.
delete_project projects mcp:write + projects:delete + projects:read Destructive · previews first Retry refused Permanently delete a project and its data after the server previews its complete current state and consequences; project credentials and viewing links are fenced.
update_project projects mcp:write + projects:read + projects:write Reversible · previews first Safe to retry Change a project's name, description, active state or ingest sampling rate after a preview and confirmation; fields left out keep their current values.
approve_quarantine quarantine mcp:write + quarantine:approve Destructive · previews first Retry refused Approve a pending containment as a different person from the requester, after a preview, enforcing it on production credentials. Revoke and kill cannot be undone.
lift_quarantine quarantine mcp:write + quarantine:approve Destructive · previews first Retry refused Lift an active containment after a preview, restoring frozen credentials; the per-credential outcome says what was actually restored.
reenforce_quarantine quarantine mcp:write + quarantine:approve Reversible · previews first Safe to retry Re-apply an active containment's already-approved enforcement after a preview; it authorizes nothing new.
request_quarantine quarantine mcp:write + quarantine:request Reversible · previews first Safe to retry Ask for an agent, a telemetry identity or one credential to be contained. The request enforces nothing until a different person approves it; a retry with the same request_id returns it.
withdraw_quarantine quarantine mcp:write + quarantine:request Destructive · previews first Retry refused Withdraw a pending containment request after a preview: your own with quarantine:request, somebody else's with quarantine:approve. A withdrawn request can never be approved.
upsert_release releases mcp:write + releases:write Destructive · previews first Safe to retry Register or update a release for regression tracking, with its deploy time, commit, ref, author and a link to the deploy, after a preview and confirmation. Any of those details you leave out is cleared rather than kept.
delete_page_backdrop replay mcp:write + replay:delete + replay:read Destructive · previews first Safe to retry Permanently delete one heatmap page backdrop and its stored copy of the page, after a preview and confirmation.
delete_recording replay mcp:write + replay:delete + replay:read Destructive · previews first Safe to retry Permanently delete one session recording and its stored chunks, after a preview and confirmation.
create_report_subscription report_subscription mcp:write + reports:write Reversible · leaves Anectico · previews first Safe to retry Preview and create a scheduled report of a saved insight or a saved dashboard, delivered daily, weekly or monthly at a local time in an IANA time zone to notification channels or organization members; confirmation required. Starts active. Durable replay on the required UUID idempotency_key. The caller becomes the subscription's owner and must currently hold insights:read, analytics:read, analytics:query and persons:read (and dashboard:read for a saved dashboard target); scheduled runs use the admitted scope ceiling and current workspace/source safety checks. A revoked origin moves new runs to workspace scheduled work.
delete_report_subscription report_subscription mcp:write + reports:read + reports:write Destructive · previews first Retry refused Preview and delete a scheduled report at an exact revision, with its run and delivery history; confirmation required; it cannot be undone.
pause_report_subscription report_subscription mcp:write + reports:read + reports:write Destructive · previews first Retry refused Preview and pause a scheduled report at an exact revision; confirmation required. Scheduled runs stop until it is resumed, and slots missed while paused are not sent later.
resume_report_subscription report_subscription mcp:write + reports:read + reports:write Destructive · leaves Anectico · previews first Retry refused Preview and resume a paused or needs-attention scheduled report at an exact revision; confirmation required. Scheduled delivery starts again from the next slot. The caller becomes the subscription's owner and must currently hold insights:read, analytics:read, analytics:query and persons:read (and dashboard:read for a saved dashboard target); scheduled runs use the admitted scope ceiling and current workspace/source safety checks. A revoked origin moves new runs to workspace scheduled work.
run_report_now report_subscription mcp:write + reports:read + reports:write Reversible · leaves Anectico · previews first Safe to retry Preview and queue one run of a scheduled report immediately, to its recipients or (preview) to the calling member only, without moving the schedule; confirmation required. A worker executes it: read the outcome with list_report_runs. Requires expected_revision and an idempotency_key; identical retries return the first queued run.
unsubscribe_from_report report_subscription mcp:write + reports:read Destructive · previews first Retry refused Preview and remove the calling organization member from one scheduled report's recipients; confirmation required. Removes only the caller, never another recipient. Adding them back needs reports:write. A report left with no recipient stops and needs attention.
update_report_subscription report_subscription mcp:write + reports:read + reports:write Destructive · leaves Anectico · previews first Retry refused Preview and replace a scheduled report's whole definition at an exact revision; confirmation required. Omitted fields are cleared, not kept. Returns a needs-attention subscription to active. The caller becomes the subscription's owner and must currently hold insights:read, analytics:read, analytics:query and persons:read (and dashboard:read for a saved dashboard target); scheduled runs use the admitted scope ceiling and current workspace/source safety checks. A revoked origin moves new runs to workspace scheduled work.
create_saved_insight saved_insight mcp:write + insights:read + insights:write + mcp:read Reversible · previews first Safe to retry Preview and create a project saved-insight recipe with exact revision checks and durable UUID idempotency; confirmation required. Does not execute telemetry. Retirement permanently hides all revisions and is blocked by active dependents.
delete_saved_insight saved_insight mcp:write + insights:delete + insights:read + mcp:read Destructive · previews first Safe to retry Preview and delete a project saved-insight recipe with exact revision checks and durable UUID idempotency; confirmation required. Does not execute telemetry. Retirement permanently hides all revisions and is blocked by active dependents.
update_saved_insight saved_insight mcp:write + insights:read + insights:write + mcp:read Reversible · previews first Safe to retry Preview and update a project saved-insight recipe with exact revision checks and durable UUID idempotency; confirmation required. Does not execute telemetry. Retirement permanently hides all revisions and is blocked by active dependents.
cancel_diagnostic_capture settings mcp:write + persons:read + settings:write Destructive · previews first Safe to retry Stop new diagnostic allocations; existing acknowledged grants expire within 30 seconds. Confirmation required.
create_diagnostic_capture settings mcp:write + persons:read + settings:write Reversible · previews first Safe to retry Request opt-in diagnostic sampling for one identifier and environment with a finite budget and expiry. Caller-owned UUID; confirmation required.
delete_llm_pricing settings mcp:write + settings:delete + settings:read Destructive · previews first Safe to retry Remove the organization's price override for one model after a preview and confirmation, returning its cost attribution to the platform default.
set_github_config settings mcp:write + github_config:write Destructive · previews first Safe to retry Point the organization at the source repository used to suggest which commits likely caused an error, and enable or disable that resolution, after a preview and confirmation. A source-root prefix left out is cleared.
update_onboarding_setup settings mcp:write + settings:read + settings:write Reversible · previews first Safe to retry Save a project's first-application setup draft — host, stack, step and test identifiers — after a preview and confirmation. The draft replaces the saved one entirely. A saved draft is not proof of successful instrumentation.
upsert_llm_pricing settings mcp:write + settings:read + settings:write Reversible · previews first Safe to retry Set the organization's own per-token prices for one model — input, output and cache reads and writes — overriding the default used for cost attribution, after a preview and confirmation. All four prices are replaced together, so one left out is set to zero.
claim_status_domain status mcp:write + status:read + status:write Reversible · leaves Anectico · previews first Safe to retry Preview and confirm serving a status page on your own subdomain; the result names the DNS records to add.
create_status_incident status mcp:write + status:read + status:write Reversible · previews first Safe to retry Open a public incident with its first public update in a status page's draft. Nothing is public until the page is published.
create_status_maintenance status mcp:write + status:read + status:write Reversible · previews first Safe to retry Announce scheduled maintenance in a status page's draft. Nothing is public until the page is published.
create_status_page status mcp:write + status:read + status:write Reversible · previews first Safe to retry Create a status page as an empty draft under a public slug. Nothing is public until the page is published.
define_status_component status mcp:write + status:read + status:write Reversible · previews first Retry refused Add a component to a status page's draft or replace its definition, preserving omitted manual status or setting an explicit manual status.
delete_status_component status mcp:write + status:read + status:write Destructive · previews first Retry refused Preview and confirm removing a component from a status page's draft.
delete_status_incident status mcp:write + status:read + status:write Destructive · previews first Retry refused Preview and confirm removing a public incident opened by mistake, with its updates, from a status page's draft.
delete_status_maintenance status mcp:write + status:read + status:write Destructive · previews first Retry refused Preview and confirm removing a scheduled maintenance from a status page's draft.
delete_status_page status mcp:write + status:publish + status:read + status:write Destructive · leaves Anectico · previews first Retry refused Preview and confirm deleting a status page; a public page is taken down and its custom domain released. This cannot be undone.
publish_status_page status mcp:write + status:publish + status:read Destructive · leaves Anectico · previews first Safe to retry Preview and confirm publishing a status page's draft at its current revision: a sanitized public document is queued for the public renderer and shown pending until it confirms.
remove_status_domain status mcp:write + status:read + status:write Destructive · leaves Anectico · previews first Retry refused Preview and confirm releasing a status page's custom domain; the page stops being served there.
remove_status_subscriber status mcp:write + status:read + status:write Destructive · previews first Safe to retry Preview and confirm removing one email subscriber from a status page. This cannot be undone.
set_status_component_status status mcp:write + status:read + status:write Reversible · previews first Retry refused Set one component's manual status in a status page's draft at its current revision. Nothing is public until the page is published.
unpublish_status_page status mcp:write + status:publish + status:read Destructive · leaves Anectico · previews first Safe to retry Preview and confirm taking a status page off the public renderer; publishing again makes the current draft public under a new revision.
update_status_incident status mcp:write + status:read + status:write Destructive · previews first Retry refused Preview and confirm editing a public incident or posting a public update (resolved resolves it) in a status page's draft. Nothing is public until the page is published.
update_status_maintenance status mcp:write + status:read + status:write Reversible · previews first Retry refused Replace a scheduled maintenance's title, body, components and window in a status page's draft.
update_status_page status mcp:write + status:read + status:write Reversible · previews first Retry refused Change a status page's title or description in its draft at its current revision.
verify_status_domain status mcp:write + status:read + status:write Reversible · leaves Anectico · previews first Retry refused Re-check a status page's custom domain now, after adding its DNS records.
record_support_complaint support_complaints mcp:write + errors:read + errors:write + mcp:read + persons:read Reversible · previews first Safe to retry Preview all metadata and current identity, then confirm one technical contact. Requires both read grants. Stable UUID recovery preserves original lifetime and counts one effect.
withdraw_support_complaint support_complaints mcp:write + errors:delete + errors:read + mcp:read + persons:read Destructive · previews first Safe to retry Preview and confirm clearing every personal contact field. Stable UUID retries recover only the minimal terminal outcome until its original expiry.
create_survey surveys mcp:write + surveys:read + surveys:write Reversible · previews first Safe to retry Preview and confirm an in-product survey draft with a required idempotency_key; identical retries return the first draft. A draft is offered to nobody; launching is a separate confirmed action.
delete_survey surveys mcp:write + surveys:read + surveys:write Destructive · previews first Retry refused Preview and confirm deleting a draft or stopped survey with its receipts. Its recorded events stay, but its results can no longer be computed; it cannot be undone.
duplicate_survey surveys mcp:write + surveys:read + surveys:write Reversible · previews first Safe to retry Preview and confirm copying a survey at expected_revision into a new draft with a required idempotency_key; identical retries return the first copy, keeping question and option ids and clearing its schedule. The way to run a stopped survey again.
launch_survey surveys mcp:write + surveys:read + surveys:write Destructive · previews first Retry refused Preview and confirm launching a survey draft: it becomes active, its questions freeze and the SDK starts offering it to the visitors its targeting admits.
stop_survey surveys mcp:write + surveys:read + surveys:write Destructive · previews first Safe to retry Preview and confirm stopping an active survey: it is never offered again and cannot be reactivated. What it recorded stays measurable.
update_survey surveys mcp:write + surveys:read + surveys:write Reversible · previews first Retry refused Replace a survey draft's whole definition at its current revision. An active or stopped survey is frozen.
create_ticket tickets mcp:write + connections:read + errors:read + tickets:write Reversible · leaves Anectico · previews first Safe to retry File a real ticket in a connected issue tracker for an error issue and link it back, after a preview and confirmation.
unlink_ticket tickets mcp:write + tickets:delete Destructive · previews first Safe to retry Remove the link between an error issue and its external ticket after a preview and confirmation; the external ticket itself is left in place.
delete_trace traces mcp:write + traces:delete Destructive · previews first Safe to retry Permanently delete every span of one exact trace from the project the calling credential is signed for, after a preview and confirmation. Correlated logs are kept.
create_tracking_plan tracking_plan mcp:write + mcp:read + tracking_plans:read + tracking_plans:write Reversible · previews first Safe to retry Validate, preview and create a versioned tracking plan with exact revision and durable UUID idempotency; confirmation required. No SDK deployment or capture rejection. Sensitive declarations survive edits/deletion.
delete_tracking_plan tracking_plan mcp:write + mcp:read + tracking_plans:delete + tracking_plans:read Destructive · previews first Safe to retry Validate, preview and delete a versioned tracking plan with exact revision and durable UUID idempotency; confirmation required. No SDK deployment or capture rejection. Sensitive declarations survive edits/deletion.
update_tracking_plan tracking_plan mcp:write + mcp:read + tracking_plans:read + tracking_plans:write Reversible · previews first Safe to retry Validate, preview and update a versioned tracking plan with exact revision and durable UUID idempotency; confirmation required. No SDK deployment or capture rejection. Sensitive declarations survive edits/deletion.
create_warehouse_destination warehouse_destination mcp:write + warehouse:read + warehouse:write Reversible · previews first Safe to retry Preview and store a warehouse destination — the customer's own S3-compatible bucket, with its write-only credential; confirmation required. An endpoint that is or resolves to a private or metadata address is refused. Connects to nothing: test it next.

delete_warehouse_destination through update_warehouse_export

Action Area Required scopes Safety Retry What it does
delete_warehouse_destination warehouse_destination mcp:write + warehouse:read + warehouse:write Destructive · previews first Retry refused Preview and delete a warehouse destination and its stored credential at an exact revision; confirmation required; it cannot be undone. Refused while an export writes to it. No object in the bucket is touched.
test_warehouse_destination warehouse_destination mcp:write + warehouse:read + warehouse:write Reversible · leaves Anectico · previews first Retry duplicates Preview and test a warehouse destination: write, read back and delete a marker object under its prefix with the stored credential; confirmation required. Answers a typed outcome naming which step the destination refused.
update_warehouse_destination warehouse_destination mcp:write + warehouse:read + warehouse:write Destructive · leaves Anectico · previews first Retry refused Preview and replace a warehouse destination at an exact revision; confirmation required. An omitted secret keeps the stored one only when nothing in s3 changes; changing where the destination connects requires the secret again and stops the exports that write to it until they are resumed. Every export writing to it uses the replacement from its next run.
create_warehouse_export warehouse_export mcp:write + warehouse:read + warehouse:write Reversible · leaves Anectico · previews first Safe to retry Preview and create a warehouse export of product events (hourly or daily, incremental by ingestion time) or of a cohort's members (daily snapshot) to a warehouse destination as Parquet or gzip NDJSON; confirmation required. Starts active. Files leave the platform and are never deleted by it. The caller becomes the export's owner and must currently hold analytics:read and persons:read (agents:content:read to export properties; the cohort's source permissions for an audience export); every run re-checks the owner.
delete_warehouse_export warehouse_export mcp:write + warehouse:read + warehouse:write Destructive · previews first Retry refused Preview and delete a warehouse export at an exact revision, with its run history and high-water mark; confirmation required; it cannot be undone. Files already written stay in the bucket.
pause_warehouse_export warehouse_export mcp:write + warehouse:read + warehouse:write Destructive · previews first Retry refused Preview and pause a warehouse export at an exact revision; confirmation required. Scheduled runs stop until it is resumed; the high-water mark is kept, so nothing is skipped.
resume_warehouse_export warehouse_export mcp:write + warehouse:read + warehouse:write Destructive · leaves Anectico · previews first Retry refused Preview and resume a paused or needs-attention warehouse export at an exact revision; confirmation required. An events export catches up every missed window, in order. The caller becomes the export's owner and must currently hold analytics:read and persons:read (agents:content:read to export properties; the cohort's source permissions for an audience export); every run re-checks the owner.
run_warehouse_export_now warehouse_export mcp:write + warehouse:read + warehouse:write Reversible · leaves Anectico · previews first Safe to retry Preview and queue one run of a warehouse export immediately; confirmation required. A worker executes it: read the outcome with list_warehouse_export_runs. A repeated call queues another run.
update_warehouse_export warehouse_export mcp:write + warehouse:read + warehouse:write Destructive · leaves Anectico · previews first Retry refused Preview and replace a warehouse export's whole definition at an exact revision; confirmation required. It continues from its high-water mark. Returns a needs-attention export to active. The caller becomes the export's owner and must currently hold analytics:read and persons:read (agents:content:read to export properties; the cohort's source permissions for an audience export); every run re-checks the owner.

Conclusion reads

These reads answer a whole question in one call. Each result carries a conclusion block: one claim built from counted values, its population, its window in UTC, its certainty and what is missing. The Conclusions guide explains how to read and repeat one.

Read Reached as
compare_coverage a read action, with execute_read_action
compare_issue_customers a read action, with execute_read_action
customer_recovery a read action, with execute_read_action
find_silent_people its own tool
find_struggling_people its own tool
get_account_timeline its own tool
get_account_value_impact a read action, with execute_read_action
get_agent_usage a read action, with execute_read_action
get_error_impact a read action, with execute_read_action
get_finding a read action, with execute_read_action
get_fix_outcome a read action, with execute_read_action
get_incident_account_value_impact a read action, with execute_read_action
get_issue_reproduction a read action, with execute_read_action
get_mcp_tool_usage a read action, with execute_read_action
get_metric_watch a read action, with execute_read_action
get_person_timeline its own tool
get_recovery_watch a read action, with execute_read_action
get_release_impact a read action, with execute_read_action
get_support_story a read action, with execute_read_action
list_issues_by_account_value a read action, with execute_read_action
llm_account_spend a read action, with execute_read_action
llm_spend_breakdown a read action, with execute_read_action
rank_metric_groups a read action, with execute_read_action
summarize_proof_link_opens a read action, with execute_read_action

When a tool fails

A failed call returns an error result whose text always tells you two things: what went wrong, and whether calling again can change the answer. That second part is the one worth coding against — an agent that retries a permanent refusal loops, and an agent that gives up on a transient one loses an answer it could have had.

There are two kinds of failure and they behave differently on purpose.

Something about your call. A wrong id, an argument the tool will not accept, a scope your key does not carry, a conflicting write, a rate limit. The message names the problem and keeps the specific detail — which field, which id, which limit — because that detail is how you correct the call. These are the failures you can act on directly.

Something on our side. The message says an internal error occurred and that repeating the identical call is unlikely to help; it deliberately carries no further detail. This is not an oversight and it is not something a different argument will unlock: when the fault is ours, the specifics describe our systems rather than your request, so they stay in our logs. Try a different tool or a narrower question, and report it if it persists. Two failures worth distinguishing get their own wording: a temporary unavailability or a timeout says to retry, and an operation that is simply not served says not to.

An action that cannot be accounted for is not performed. A mutation whose effect reaches outside your organization, or that removes state your key cannot restore, is written into a tamper-evident action log before it runs. On the rare occasion that record cannot be written, the call is refused and nothing happens — the message says so and tells you to retry shortly. Treat it as transient: it is a deliberate refusal rather than a failure of the action itself, and the retry runs the action exactly once.

Those records name the rule they were decided under: every entry this surface writes — the authorization, its outcome, and a refusal — carries policy_id: mcp:write_gateway_authorization with its version, so a refused destructive call is readable as a decision rather than as a gap. Read them through GET /api/v1/action-receipts.

Error text is bounded. Characters that a terminal or a transcript would read as formatting rather than as content — escape sequences, line breaks, direction overrides, invisible characters — are replaced with � before the message reaches you, and the message is capped in length. Nothing a tool legitimately reports is affected by either. If you are building on this surface, treat the replacement character in an error as a signal that the original text contained something that does not belong in a one-line diagnostic.

search reports each source separately

search fans your query out across several sources, and any one of them can fail while the others answer. When that happens you still get a successful result: the sources that answered contribute their hits, the result is marked partial, and the per-source report names the one that did not and why. What is present is true; what is missing is known to be missing.

If no source answered, search fails rather than returning an empty result. The distinction matters: "nothing matched your query" and "nothing ran" look identical if you only read the hit count, and only one of them is worth retrying with a wider window.

Read contract details

Entity results include a link when there is a specific object to inspect. The link opens a read-only proof page in the Console. It names the object's own project, so it is present whether or not your credential is tied to one project: an organization-level key and an agent connected through OAuth get the same links a project-scoped key does. A result that cannot name one project carries no link, never a link into a default project. That is the case for an identity key that matches no person when it is read without a project, and for a trace ID that was recorded in more than one project and is read without a project.

Reaching an administrative read

Call list_read_actions with no arguments to browse: it returns every read action your key can run, grouped by domain, with a one-line summary each. Pass a domain (for example oncall, tickets, coverage_declaration, usage, llm_cost, accounts, saved_insight, notifications, docs) or a free-text query to drill in and get each matching action's full argument schema. Then call execute_read_action with action set to the id and arguments set to an object matching that schema.

Both tools are read-only and change nothing, so a host may run them without prompting. An action id your key is not authorized for is refused with the same message an unknown id gets, and nothing runs. The organization always comes from your API key and can never be supplied in arguments.

Reading the documentation from the endpoint

search_docs and get_doc serve this documentation over the same connection, so an agent can look up a scope name, an alert expression, a metric name or an SDK call instead of guessing one. Both are read actions reached with execute_read_action, and both need docs:read — a scope every role holds, and the only one on this surface that discloses nothing about your organization. The search and fetch pair covers the same ground for a client that only knows those two: the source is docs and the reference kind is doc.

search_docs takes a query and an optional limit (1–20, default 8). Every word in the query has to appear somewhere in a page's title, description, section or body, and the ranking is the published documentation site's own — the same words return the same page in both places. Each hit carries the page's slug, title, description, section, public url, raw markdown_url, and a stable ref that can be passed to fetch.

get_doc takes that slug and returns the page as markdown. Two things about the response are worth planning for:

  • The whole page is capped at 48 KiB. Two reference pages are well past that. When the cap applies, truncated is true, the markdown is an exact prefix of the real page (never a summary), ending at a complete line outside a fenced code block. The envelope records the cut.
  • outline is always the page's complete H2–H6 outline, even when the markdown is one section or a truncated prefix. Every entry includes heading, anchor, depth, and the unambiguous parent_anchor when it is nested. Pass a heading or anchor back as heading to get exactly that nested section. Prefer the anchor when visible text repeats. A heading that is not on the page answers not_found with the outline, so the next call is informed rather than another guess.

The returned markdown body is byte-identical to the source body published at https://anectico.com/docs; repository frontmatter is not included. Every hit and page carries its public URL, so a citation remains checkable.

For retrieval without MCP, every page also has a raw Markdown address and the website publishes a versioned page manifest. See Machine-readable documentation.

Reading the REST contract from the endpoint

get_rest_contract returns the REST contract the deployment you are connected to serves, so a program your agent writes is built against that deployment and not against the documentation site's latest. It is a read action reached with execute_read_action, needs docs:read like the two documentation actions, spends no tool slot and needs no confirmation. An ordinary runtime key that only calls the API does not need it.

With no arguments it returns the manifest: the build, contract_revision, the digest of the master contract, the published contracts with their own digests, sizes and immutable addresses, which operations the deployment mounted, and the proof-page coordinates. With operation_ids (1 to 100 unique stable IDs of 1 to 128 bytes, taken from active_operation_ids) it returns exactly those operations and the shared schemas they reference as one valid OpenAPI 3.1 document, with selected_count, complete, the source_digest of the artifact it was cut from, the selected_output_digest over the exact document bytes, and an availability entry per operation. partition chooses the source: customer (default), apps or protocol. expected_revision refuses an answer from any other revision.

A selection larger than one MiB is not cut: it is refused with selection_too_large, complete: false and selected_count: 0. The other typed refusals are invalid_selection, unknown_operation, operation_not_active and revision_mismatch; none returns a document. To write the whole contract to a file, use anectico api spec. The explanation of the revision, the three digests and the published copies is Pin the contract your app is built on.

Bounded service-health waits

get_service_health normally returns the same immediate all-service snapshot or service RED series as before. For a cancelable health-state watch, add wait_seconds from 5 through 60 and optionally poll_interval_ms from 1000 through 5000 (default 1000). Wait mode takes a real service-health baseline, emits the standard MCP progress notification service-health-wait-armed, and then polls only for a change in the selected service's health state—or any service when service is omitted. The progress notification echoes the client's MCP progress token, so clients must supply a bounded string progress token before using wait mode.

A state change returns the current truthful snapshot immediately. Reaching the deadline returns a normal result that explicitly says no health-state change was observed within the requested duration. The highest-cost supported call, 60 seconds at a one-second cadence, is one baseline read plus at most 60 further reads; it remains a single rate-limited MCP request and never mutates telemetry or configuration.

Cancellation depends on your protocol revision. On 2026-07-28, cancelling the request stops the wait and the lookup it is in the middle of. On the earlier revisions there is no request-cancellation signal to act on, so disconnecting ends your side of the exchange and leaves the wait to reach its own deadline. Either way it is bounded by wait_seconds, which is why the ceiling is 60.

Waits are admitted rather than queued: each API key may hold at most two concurrently, and the endpoint admits at most 64 at a time overall. Ordinary immediate get_service_health reads consume neither. A key at its limit, or an endpoint at its limit, gets a definite error before any health lookup runs, and can retry once another wait exits. Treat the 64 as an availability property rather than a promise about a single number — the request-rate limit that applies to every call also bounds how fast waits can be started.

Agent-run list and detail reads always resolve to one project. Supply project_id when using an organization-level credential. A project-scoped key may omit it; if it supplies another value, Anectico ignores that value and keeps the read pinned to the key's signed project. Omitted scope from an organization-level key fails before a query runs, and foreign or random project/run identifiers do not reveal whether the target exists.

get_incident returns one incident's whole case file — current version, ordered timeline, immutable evidence, linked signals and delivery receipts — as a single all-or-error result: you get the complete picture or an error, never a partial one. list_oncall_schedules, get_oncall_schedule, and resolve_oncall are read actions reached through execute_read_action and require oncall:read. resolve_oncall answers with who is on call right now and explains why — which override or rotation layer produced that answer. create_contact_method, update_contact_method, and delete_contact_method require oncall:contacts:write — not the schedule-administration scopes — and only ever affect the contact methods of the member the key acts as. list_notification_deliveries and get_notification_delivery are read actions reached through execute_read_action; they require channels:read, support project-pinned receipt inspection and opaque pagination, and never render stored notification payloads or credential secrets.

get_org_usage is a read action reached through execute_read_action, listed only when the key has both mcp:read and usage:read. Omit period for the current UTC billing month or supply one exact YYYY-MM value. The organization is always taken from the authenticated key; the action has no organization argument. It returns the same plan tier, retention window, OK/WARN/DEGRADE posture, pooled events and error breakdown, active metric-series meter, replay-session meter, and computation time exposed by the Console, REST API, and CLI. A new organization with no computed snapshot returns a normal empty-state message rather than invented zero usage.

get_family_policy and get_family_usage use the same read gateway and scope pair. Their optional project_id selects an authorized mirror; counts and allowances still cover the organization. Family usage includes the current policy, a selected month's measurement when available, separate pooled corrections and both measurement timestamps. Missing measurement is not zero; the current policy is not a historical policy for the selected month.

update_family_policy uses execute_internal_action with mcp:write, usage:read and organization-wide settings:write. Send both exact decimal revisions, all four choices and a stable retry key. The first call previews the change; the second includes its confirm_token. The owner returns a durable operation receipt and rejects stale revisions. No customer action grants entitlements. Current family choices are recorded configuration; the existing pooled admission and retention controls remain active. See usage and policy settings for complete examples.

list_tickets_for_issue and get_ticket are read actions reached through execute_read_action and require tickets:read. They are pinned to one effective project and expose the provider link, pinned connection_id, current external status, sync state, attempt count, last sync time, and safe retry error without exposing credentials. create_ticket requires an absolute issue_url (the url that get_issue, list_issues or search_issues returned for the Issue) and a stable idempotency_key; retries must reuse that key only for the exact same request.

Filing a ticket touches a system outside Anectico, so create_ticket has one outcome that is neither success nor failure: the ticket was created in your tracker and Anectico could not record the link. It reports this as already exists, and the message names the provider ticket id, its URL, and the one safe next step — retry with the same idempotency_key, which adopts the existing ticket rather than filing a second one. Never mint a new key in response to it, and never treat it as a create that did not happen. Anectico will never report a ticket it created as a call that had no effect.

There is a second outcome in the same family: your tracker accepted the request but never returned a usable answer, so nobody — including Anectico — knows yet whether a ticket exists. This is reported as unavailable, with the same remedy: retry with the same idempotency_key. Anectico briefly holds the request while your tracker's own search catches up, so a retry during that window is answered "already in progress" rather than filing a second ticket; keep retrying the unchanged call with the same key and it resolves to the ticket that exists, or files one if none does. A request your tracker explicitly rejected is a failed precondition and is not held — nothing was filed, so repair the authorization, permissions or target before sending it again. Repeating it unchanged cannot help.

A create that already reached your tracker stays bound to the connection and destination it reached, so a retry goes there and nowhere else — a connection that has since become the active one for that provider is not substituted. If that destination is gone or has been repointed, the retry is refused as a failed precondition naming the destination it is waiting for. Do not mint a new key in response: a ticket may already exist where the first attempt went. Restore the connection to that target and retry with the same key.

idempotency_key is scoped to one project. The same key used in two projects is two separate creates and files two tickets, which is what you want: an issue in one project is not an issue in another.

Organization-level credentials must supply project_id. Project-scoped credentials may omit it or repeat their exact signed project; any explicit different value receives the same generic not-found denial for real, foreign, and unknown projects — and it arrives before anything is read, previewed, confirmed or written, so the denial reveals nothing about whether that project exists. This contract applies to list, get, create, and unlink.

Paginated MCP reads return an opaque next_cursor. Pass that value back unchanged as cursor to continue logs, traces, person or account timelines, affected-customer results, and notification delivery receipts. Anectico rejects a malformed non-empty cursor instead of silently restarting at the first page, so an agent cannot mistake duplicated first-page rows for a valid continuation.

The canonical cohort read tools are list_cohorts, preview_cohort, list_cohort_generations, and get_cohort_members; they appear only with both mcp:read and analytics:read. These are discovery permissions; reading computed membership also requires its source scopes: persons:profile:read for profile predicates, and agents:content:read for content event-property filters. Current sensitive-property declarations can also restrict stored generations. Preview and member-page calls fail when their required source scopes are missing. Cohort list/detail and history retain metadata but mask protected counts to zero; those zeros do not prove an empty cohort. History counts require the scopes of both the selected and preceding generation. Pass cohort_id to list_cohorts for exact detail mode; detail mode cannot be combined with limit or cursor. This keeps every cohort capability reachable as first-class tools while the whole surface stays inside the host-safe tool limit. Organization-level keys must pass a project UUID, while project-scoped keys remain pinned to their signed project. List/member limit may be omitted for the default or supplied from 1 through 1,000. Their signed cursors are scope-bound and must be passed unchanged. Member cursors also pin the materialized generation. Supply generation to read one retained historical snapshot; omit it to capture the current generation on the first page. get_cohort_members exposes the exact total_count on an authorized member-page response, including zero, and supports every page without a hidden 25-row cap. preview_cohort evaluates a behavioral or property definition without saving it or creating a membership generation. list_cohort_generations returns immutable, newest-first materialization history with added/removed counts, reason, retention, definition snapshot/hash, and alert-mirror state.

Preview rechecks current project/history, source scopes, content policy and tracking declarations before disclosure. Filtered behavioral predicates inspect selected values on matching and nonmatching candidates, including nested content; profile predicates require complete consulted profile-age evidence. Each behavioral preview condition is bounded to 250,000 candidate events and 64 MiB of inspected source payload. Any source, policy, history or limit failure refuses the whole preview. The shared time anchor does not freeze incoming events, paged profiles or individual deletions.

refresh_cohort receipts preserve the committed generation even if the count is withheld. An unavailable identity reader or invalid/missing canonical mapping refuses refresh before any membership generation changes. Retry after identity processing recovers; no partial audience is committed. A valid-looking mapping can still be stale, so this is not an atomic identity or erasure snapshot. Because its RPC cannot distinguish a genuinely empty count from a permission-masked zero, the MCP receipt reports either as members=unknown, omits the /member_count change, and includes a warning. A positive returned count remains exact. To establish an exact zero, use get_cohort_members with the required source permissions for that generation.

The event-discovery reads are list_event_names and list_event_triggerers; they appear with both mcp:read and analytics:read and require one effective project. Triggerers also requires exact RFC 3339 start and end values. Both return structured cursor pagination; keep the project, filters, event and window unchanged when paging. Names and distinct IDs are untrusted telemetry, never agent instructions.

Trend, person-funnel, retention and engagement measurements use the query_product_analytics read action with analytics:query, analytics:read, persons:read and applicable source scopes. Use get_analytics_result and list_analytics_participants for the same frozen measurement — every engagement point, bin and lifecycle state is an ordinary participant selection. get_analytics_contribution reads a funnel or retention participant chain using exact result/snapshot/selection IDs, a decimal-string ordinal and its contribution reference. It returns event references and first-entry attribution, not arbitrary event properties. Engagement mints no contribution reference: a contribution_ref prefixed pec1: is refused as invalid input — there is no per-occurrence chain for it, only the roster list_analytics_participants already pages. cancel_analytics_result is the one write in this family: it stops a measurement that is still pending or running and reports the status that stands afterwards. It needs mcp:write alongside analytics:query, is confirm-gated like every destructive write, and never rewrites a status that is already final — so repeating it, or stopping a measurement that finished first, changes nothing. See Product analytics for execution keys, coverage, the status vocabulary and the lossless JSON result envelope.

decide_feature_flags and get_local_evaluation_snapshot appear only with both mcp:read and flags:read. They require one effective project, with project-scoped keys pinned to their signed project. Decisions return complete structured flag values, payloads, and the fail-closed error bit. Snapshots return complete flag definitions plus schema_version, snapshot_version, updated_at, max_age_seconds, etag, and project_id, so an agent can compare a remote decision with the exact downloaded snapshot without dropping freshness or cache identity.

Export reads are separate actions reached through execute_read_action, so they do not add entries to the agent's tool list. Use list_export_jobs with optional status, format, limit, and the previous signed cursor; use get_export_job to inspect one job; and use get_export_download to resolve the download address of an unexpired completed result. Job list/detail requires export:read; resolving the download requires export:download. The download address is a path on the Anectico API which re-authorizes on every request rather than a link that carries its own authority, and resolving it requires that the caller still hold the read scopes the export's rows came from and be the job's creator or an org owner/admin. Possessing the address grants nothing. Export cursors are bound to the organization, effective project, and filters and expire after 15 minutes. They must be passed back unchanged. Supply project_id when the MCP credential is not already project-scoped; a project-scoped credential may omit it or repeat its exact signed project. Any explicit different value is denied with the same generic not-found result without checking whether that project exists. This applies to export list, detail, download, create, cancel, and retry tools.

Write tools

A write-enabled key can perform selected daily actions directly and discover less common actions through the write gateway. Each action requires mcp:write and its own domain scope.

Whether an action previews first is stated per row in the Safety column above, as previews first. Every destructive action previews, without exception, and a few more preview because of their blast radius rather than because they remove anything — opening an incident, inviting a person, filing a ticket, sending a test message. So previews first is now the wider of the two labels: reading it as "this destroys something" over-reads it, and reading destructive as "this will ask me first" is correct. Every action that applies on the first call creates or appends; none of them replaces a stored value. Writes that do not preview are audited and budgeted exactly like the ones that do. The budget, the idempotency_key namespace and the confirmation token are all scoped to the individual caller, so two people working in the same organization never share a budget, replay each other's retries, or apply each other's confirmations.

Two costs are worth knowing before you design a retry loop. A preview is free — the first, tokenless call of a confirm-gated action does not draw down the mutation budget, and neither does a rejected or expired token, so previewing widely to decide is safe. A replayed retry is not: a call that returns its earlier result rather than re-executing still costs one unit, so a client cannot spin the budget by retrying.

Every incident write — create, update, status, comment, and delete — is addressed within one project. Supply project_id when the MCP credential is not already project-scoped; a project-scoped credential may omit it. Project ids come from the list_projects read action.

acknowledge_alert is approval-gated and requires a stable idempotency_key. Incident lifecycle and comment writes require both the latest expected_version and a stable idempotency_key. Their discovered MCP input schemas mark idempotency_key as required, while tools such as create_incident and resolve_alert continue to advertise it as an optional retry safeguard. Duplicate-sensitive writes fail closed when duplicate protection cannot be guaranteed: nothing is attempted at all, so a retry is safe once the error stops. For incident acknowledge, resolve, and reopen, the key is remembered for the life of the incident rather than for a few minutes, so an exact retry keeps returning the original success indefinitely — while reusing that key with different transition fields, or from a different API key, is rejected.

Dashboard update/delete and widget add/update/delete tools require expected_version from the latest dashboard definition. Dashboard definitions include version; successful widget writes return the new dashboard version. A stale mutation is rejected, so read again, reconcile the changed dashboard, and request a new confirmation token where required.

create_export_job and export_logs require a stable idempotency_key; this key is persisted durably alongside the export job, so an exact retry remains safe across restarts. The key must be 1–128 ASCII letters, digits, ., _, :, or -; it is never whitespace-trimmed or Unicode- normalized. Formats are limited to csv, json, and parquet, and time bounds must be exact RFC 3339 values with start before end. cancel_export_job is confirmation-gated for pending, running, or retrying jobs. Its job_id must be the exact lowercase canonical hyphenated UUID returned by creation. Malformed, control/Unicode-contaminated, and oversized IDs are rejected before preview and never receive a confirm_token. Preview enrichment is best-effort so export:write remains sufficient to cancel; export:read is not required, and the confirmed mutation is still fully validated server-side. retry_export_job re-enqueues only a terminally failed job with its original immutable scope and query, and it is confirmation-gated for a reason worth reading before you confirm: re-running a job CLEARS the recorded failure reason and code, the progress and row counts, the partial result and every timestamp. Nothing restores them at any scope, so read what you need from the preview — it is the last place that diagnosis exists. cancel_export_job and retry_export_job accept project_id for an unpinned credential; their target preview and mutation use the same effective project. For a project-pinned credential, omitting project_id or sending the exact signed project succeeds; an explicit different value is denied before either the preview read or mutation is attempted. After create_export_job returns a job ID, MCP clients poll it with execute_read_action using action get_export_job and arguments project_id=<id> job_id=<job-id>, then call get_export_download with the same identifiers when the job completes. Polling requires export:read; resolving the download requires export:download plus the export's own source read scopes. A key with only export:write can create a job but cannot poll or download it.

create_cohort requires an explicit kind — behavioral, property, or static. There is no default. A behavioral or property cohort also requires a definition predicate and rejects a members list; a static cohort requires 1–5000 members and takes no definition.

replace_static_cohort_members is a cohorts:write gateway action that replaces the complete membership of a static cohort. It requires the latest expected_generation and an explicit members array; an empty array intentionally clears membership. Because replacement is destructive, the first call only previews. Its confirmation token binds the cohort, project, expected generation, and full ordered member input. The confirmed result reports resolved, duplicate, and unresolved input counts plus the committed generation and alert-mirror state.

Exact telemetry deletion

Project-scoped MCP keys can discover two destructive gateway actions when they carry the matching domain scope:

  • delete_trace requires mcp:write plus traces:delete and deletes every span of one exact trace;
  • delete_log requires mcp:write plus logs:delete and accepts only a canonical 32-character uppercase hexadecimal log ID.

Neither action accepts an organization or project argument. The project comes only from the API key's signed project binding, so an agent cannot override it. An organization-wide key does not see these actions; create a narrowly scoped project key for this workflow. The first call only previews the exact project and target. The second identical call with its confirm_token applies the durable deletion. Deleting a trace does not delete correlated logs, and deleting a log does not delete its trace. Repeating a confirmed deletion is harmless; idempotency_key additionally prevents a transport retry from re-running the action.

A confirmed deletion is durable rather than a filter: the target stops appearing in searches, timelines, dashboards and exports, a late or retried copy from an SDK stays hidden instead of reappearing, and alert rules honour it too, so deleted telemetry cannot fire an alert.

Discover the current surface

Use your MCP client's tool inspector, ask the agent to list its Anectico tools, or run:

anectico mcp verify
anectico docs

Tool definitions include their arguments and descriptions. If a tool is absent, check the key's scopes before assuming the server does not support the operation.

For connection instructions, see Connect an AI agent with MCP.