memory_query: Read the project's Runlog memory. With a query, returns the cells, entities, and artifacts ranked relevant to it, each carrying its ids as provenance; without one, lists cells (units of knowledge) or entities as a windowed dump. Scoped to the project the connection is bound to.
| Field | Type | Required | Description |
|---|
| kind | string | optional | list mode: what to read — 'cells' (default) or 'entities' |
| query | string | optional | natural-language question or task; when present, results come ranked by relevance to it instead of as a paged dump |
| budget | number | optional | query mode: approximate token ceiling the ranked response packs to. Leave it unset unless your context is genuinely smaller than the model window — unset returns every ranked row retrieval found, bounded only by the model's own input window |
| cursor | string | optional | list mode: the nextCursor from a prior dispatch, to continue the window |
| fileIds | string[] | optional | query mode: tether the answer to these ingested files — only knowledge derived from them is returned. Use the fileIds ingestion handed back |
| entities | string[] | optional | query mode: tether the answer to these entity names — each one is seeded into the spine walk alongside the entities the query itself names. Use the entity names ingestion handed back |
| schema | object | optional | query mode: a JSON Schema the answer must conform to. With it, the response carries a `structured` object matching the schema, grounded in the same retrieved rows; without it the response is the retrieved rows alone |
Contract List reads are windowed: a dispatch returns one bounded page of items plus a nextCursor; pass the returned cursor to continue and treat an empty nextCursor as the final page — a single dispatch is never the whole memory.
Contract Query reads are budgeted, not paged: the response packs the most relevant cells, entities, and artifacts into the requested token budget and stops — dispatch again with a refined query rather than a cursor.
Contract A schema never replaces the query: the natural-language query is what decides WHICH knowledge is retrieved, and the schema only decides what SHAPE the answer takes over it. A dispatch carrying a schema and no query is refused rather than answered from an unranked corpus.
Contract Tethers constrain, they do not rank: a fileIds or entities tether narrows the answer to what those files and entities back, so a tether naming nothing the project holds returns an empty result rather than a broader one. Leave both absent to retrieve across the whole project.
Contract Every field of a structured answer is grounded in the returned cells — the rows stay on the response beside the structured object precisely so a caller can check each value against what it was derived from.