Tool catalog
Eighteen tools. Read tools return data immediately. Write tools are two-call: first call returns a diff + signed confirm token; second call commits.
Every tool response pairs a content[] narration block (what you see in chat) with a structuredContent object (what the agent can render as tables/cards/etc).
Session context
Before listing tools, two conveniences that cut repetition: after set_context you can omit scope args on every other tool and they'll default from session.
set_context
Stash default orgSlug / projectSlug / envSlug / lensSlug for this session.
Empty string clears a level. Session-only — nothing persisted server-side.
get_context
Returns the current session defaults. Zero args.
Identity
whoami
Current caller identity. Zero args.
Returns user_card: email, platform-admin flag, orgs with roles, granted scopes.
Always safe to call first — tells the agent what it's allowed to do.
Navigation
get_map
The whole hierarchy in one call.
Returns map: orgs → projects → envs → lenses/sources/keys. RBAC-filtered at every level. get_map is the recommended first call for discovery — cheaper than iterating list_orgs → list_projects → list_envs.
list_lenses
Flat list of lenses with scope filter + substring match.
Returns lens_list. Each entry: { orgSlug, projectSlug, envSlug, name, status, facets }.
describe_lens
Full detail on one lens.
Returns lens_card: current config, declared facets, last-modified metadata, ingest runs. Required before most update_lens_config calls.
Data (read)
All take implicit scope from set_context if args are omitted. Role developer+ on the env gets sk-like access; viewer gets pk-like (rules enforced).
search
Returns search_results. Same ranking as beam.<lens>.search().
similar
Returns search_results ranked by vector similarity.
query
Returns query_results. Declarative filter/order — no free-text.
feed
Returns feed_page: items + cursor + live-update count.
explain_feed
Returns explain: per-scorer breakdown of feed ranking math. Read-only.
status
Returns ingest_status: each lens in the env with its status, recent ingest runs, vector count.
Data (write)
All six tools below are two-call. First call = dry-run (returns diff + confirm_token). Second call = { confirm_token } and commits.
Every write carries destructiveHint: true so MCP clients that honor annotations will surface a confirmation prompt before your first call too.
create_lens
Creates a new lens in the env, paused by default. Call resume_ingest after.
update_lens_config
Server-side merge. Dry-run fetches current config locally to show you what changes.
add_facet
For feed, the config key is { <feedName>: FeedFacetConfig }.
push
Mirrors semilayer push from the CLI. Commit response lists created/updated/deleted/unchanged lenses plus any ingest jobs queued.
pause_ingest
Pauses ingest. Existing vectors stay searchable.
resume_ingest
Resumes ingest on a paused lens.
Structured content kinds
Every response carries a structuredContent.kind that agents can render:
kind | What it is |
|---|---|
user_card | Identity + roles |
context_card | Current session scope defaults |
map | Full hierarchy tree |
lens_list / lens_card | Discovery + detail |
search_results / query_results | Row sets with scoring/metadata |
feed_page / explain | Feed items + ranking math |
ingest_status | Env-wide indexing state |
diff / confirm_token | Dry-run preview + signed commit token |
needs_context | Tool needed scope it didn't have |
Clients that don't understand kind just render the JSON — still readable.
Limits
- Scopes:
mcp:read,mcp:write,mcp:admin. Most tools gate on one; agents request the union of what they intend to use. - Per-tool role requirements: viewer can call all read tools; developer+ required for data tools against rules-enforced lenses (same model as sk/pk). Write tools require developer+ on the target env.
- Rate limits: calls count against your org's existing API quota. No separate MCP meter. Your tier →.
- Response size: tool responses are capped server-side to stay within agent context budgets. Large
get_map/query/searchcalls return a truncated view with a{ truncated: true, remaining: N }hint.
Next
- Setup walkthroughs → — Claude Desktop, Claude Code, Cursor, Inspector
- Examples → — ready prompts