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.
searchtakes 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 aref, a canonicalanectico://…reference — plus a per-source report saying which sources were searched and which were skipped and why.fetchtakes 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 investigatematerializes 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
400and 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_actionreach 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_actionsdiscovers the less common mutations, alongside a few daily write actions promoted to first-class tools. Running one usesexecute_internal_actionorexecute_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_actionruns 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_actionruns 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 isconfirm. The summary carries theconfirm_tokenand 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 sameidempotency_keyand 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:
- the umbrella scope for that side of the endpoint —
mcp:readfor every read,mcp:writefor every write; - 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_jobandexport_logsalso require the exported signal's own read scope —logs:readfor a logs export,traces:readfor traces, and so on. Without it the export is refused, soexport:writealone cannot commission an export of data the key may not read.retry_export_jobre-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_downloadalso 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_statusadditionally requiresmembers:readonly 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. |
Promoted write tools
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,
truncatedistrue, 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. outlineis always the page's complete H2–H6 outline, even when the markdown is one section or a truncated prefix. Every entry includesheading,anchor,depth, and the unambiguousparent_anchorwhen it is nested. Pass a heading or anchor back asheadingto get exactly that nested section. Prefer the anchor when visible text repeats. A heading that is not on the page answersnot_foundwith 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_tracerequiresmcp:writeplustraces:deleteand deletes every span of one exact trace;delete_logrequiresmcp:writepluslogs:deleteand 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.