Skip to content

Tools ​

Subtext exposes ten tools. Seven read your graph and never change it. Three write to it, and are marked as such to the client so it can show or confirm them.

Every tool acts only on the signed-in person's own graph. With an access key, reads are limited to the key's scope and writes to its write setting; see Other clients.

ToolTitleWhat it doesParametersAccess
briefContext briefA short brief about you: who you are, what you're working on, who and what matters around itnoneRead-only
searchSearch contextFinds pages by meaning, for a fact you can describe but not namequery, limit (default 5)Read-only
scopeScopeA quick size check on a focus area, a thing, or "you", before reading it deeplytargetRead-only
compileCompile contextAssembles a ready-to-use package about a focus area, a thing, or "you"intent, target, depth (default shallow), shape (default narrative), freshness (optional)Read-only
get_pageGet pageReads one page in fullslugRead-only
graph_snapshotGraph snapshotThe whole visible graph as nodes and links, without page bodiesnoneRead-only
traverseTraverseFollows one kind of relationship from a known thingfrom_slug, edge_type (default RELATES_TO), within (optional), limit (default 20)Read-only
edit_page_bodySubmit page updateSubmits new information to the ingestion pipeline, which merges it into your graphslug or new_project, bodyWrite
rename_pageRename pageChanges a page's display titleslug, titleWrite
link_pagesLink pagesRecords that two existing pages are relatedfrom_slug, to_slugWrite

A slug is a page's stable identifier, such as acme-rebrand. It stays the same when a page is renamed. Assistants get slugs from search results, the graph snapshot, or links inside a page, and are told never to guess one.

Every read tool that returns content also returns sources: the pages that content came from, each with its slug, title and type. That's what the assistant's one-line "Subtext supplied context about…" is built from.

Reading ​

brief ​

The starting point. Returns a few paragraphs about you, assembled from your graph, plus the pages it was written from. Assistants are asked to call it once, before their first substantive answer, and to use it as background rather than repeat it. It's cached and only regenerated when your graph changes, so calling it again mid-conversation gains nothing. With an access key, the brief covers only that key's scope. If the key is paused, brief returns a message saying so and how to resume, which the assistant relays.

Semantic search over your pages. The query works best phrased the way the content would be written ("Q3 roadmap priorities") rather than as a question. Returns the nearest matches with a 200-character preview each; the assistant then reads the full page if it needs to. An empty result can mean the fact isn't there, or that it's outside the connection's scope.

scope ​

A cheap size check that makes no model call. For a focus area it counts members and relationships; for a single thing it counts neighbours; it then says in plain language whether a deep compile is sensible. "you" returns an index of your focus areas. Assistants call this before a compile at depth deep on something unfamiliar.

compile ​

Assembles a package about one target instead of the assistant stitching several lookups together.

  • target: a focus area, a single thing, or "you".
  • depth: shallow (the target's own page plus a list of what's under or connected to it), medium (adds each of those pages' content), or deep (adds how they relate to each other, in plain language). "you" is always shallow.
  • shape: narrative (prose), structured (typed fields for members, neighbours and relationships), or summary (a title and one line each). Asking again in a different shape is cheap.
  • intent: a short description of what the assistant is trying to do. It steers the emphasis of a deep narrative.
  • freshness is accepted but not yet applied.

Every item carries a kind: you, focus, person, organisation, project, tool or topic.

get_page and graph_snapshot ​

The two plain lookups. get_page returns one page's full content by slug, or nothing if the slug doesn't exist or is outside scope. graph_snapshot returns every visible page's title and type and every link between them, with no content, for orientation. The server instructions steer assistants towards compile for anything beyond a single flat lookup.

traverse ​

Follows one relationship from a known thing and returns the path itself. edge_type is RELATES_TO (what this is associated with) or IN_CONTEXT (which focus area this is filed under). within limits results to the members of one focus area. The starting point must be a specific thing, never "you". An empty result is a normal answer.

Writing ​

These three tools change your graph. Assistants are told to use them without asking first when you settle something durable, then say plainly what they recorded, and never to use them for passing chatter. Your control is the connection: pause it, narrow it, or make it read-only. In clients that ask you to confirm write actions, you'll also see a confirmation.

edit_page_body write ​

Despite its name, this does not overwrite a page. The text the assistant sends goes through the same ingestion pipeline as a document you upload: Subtext extracts what it says, works out which existing pages it's about, merges it into them, and creates new pages where needed. It may update other pages the text mentions.

That has three consequences:

  • The assistant should send new information as prose ("Decided on 12 March to launch the Harbour pitch in April; Priya is leading"), not an edited copy of the existing page.
  • It can't delete a fact by leaving it out.
  • slug anchors the update near a known page to help Subtext place it; it isn't a strict destination. The assistant reads the result and reports what actually happened.

Pass new_project instead of slug when you are deliberately naming a project you're starting or leading. It becomes a focus area straight away and the text is filed under it.

With an access key, this tool needs Read + write and Full context. It shares a per-minute allowance with your own uploads.

rename_page write ​

Changes a page's display title only: a misspelling, a company's new name, the name someone prefers. The slug and every link to the page stay the same. Returns the updated page.

Records that two pages that already exist are related (a RELATES_TO link). It doesn't create pages, and it isn't for filing something under a focus area; that's done by edit_page_body. Returns ok.

Limits ​

Every tool is rate-limited per person per minute. If an assistant goes too fast it gets "You're going a bit fast — try again in Ns" and should wait and retry once.