Repository navigation
0.0.36
Added
-
ekr.node-detail/2, one node bounded for an agent's context (ekr-mcp-fixes-20261015 #1, #10,
#11).ekr.node-detail/1lists every assertion and edge of the node, so a node with thousands
of edges answered megabytes./2answers the record with its type's name;same_name, the
other nodes sharing its name or an alias, compared lowercased; its property values grouped by
property and named, newest first, a String over 2,000 bytes cut on a character boundary and
markedtruncated; and its neighbours grouped by edge type and direction, each group named
and counted, listing at mostlimit(10 by default, up to 500) by degree, each with the newest
Relation assertion between the two.edge_type(an id or a name) andafterpage one edge
type's groups. Anekr.node-detail/2request for a node type or edge type id is refused as
ekr.views.NodeIsAType, naming the type;/1still answersekr.views.NodeNotFoundfor it.
ekr viewserves it at/node/<id>?format=ekr.node-detail/2[&limit=L][&edge_type=E][&after=A]
and the session'sdescribewith--format ekr.node-detail/2; both keep answering/1by
default, byte for byte as before. -
A search format,
ekr.node-matches/2, served byekr view's/searchand the session verb
searchwhen asked for (format=ekr.node-matches/2,--format ekr.node-matches/2) and by the
MCP toolsearchby default. A text of two or more words also matches a name or an alias
holding every word in any order, as the new tierWords(widget routerfinds
Widget-Router); within a tier a node whose whole name or alias is the text comes first (eu
before a busierprod-eu-central-9); every match carriestype_nameand, when the node has
one, its timelinetime.type(a node type's id or name) lists only that type's nodes, an
empty text listing them all, andfromandto(milliseconds orYYYY-MM-DD) only nodes
whose time falls in the window, newest first. Atypenaming no node type is refused as
ekr.views.NodeTypeNotFound.ekr.node-matches/1is unchanged and stays the default of
ekr viewand the session verb; the SDK'sNodeMatcheskeeps reading /1. -
The MCP tool
searchtakestextasqueryorqas well; naming two of them is refused. -
Named formats, so an answer names the types and properties it cites and needs no ontology to
read:ekr.graph-overview/3(eachnode_typesandedge_typesentry with itsname, and
meta.committed_at, when the revision read was committed),ekr.graph-slice/2(each node and
edge with itstype_name),ekr.graph-timeline/2andekr.graph-changes/2(withnames, an
object mapping every node type, edge type and property id the document holds to its name),
ekr.explanation/3(ekr explain's document withnames) andekr.resolution/1(ekr resolve's outcome underoutcome, withnames).ekr viewserves them when asked for
(format=on/overview,/expand,/timelineand/changes), so do the session verbs
(--format),ekr explain --format ekr.explanation/3andekr resolve --format ekr.resolution/1. Without a format each answers what it answered before; the SDK keeps
reading the earlier formats. -
ekr.explanation/3answers the evidence the chain cites, within a whole-answer cap.--scope cited(its default) keeps only theEvidencelinks the chain's assertions and attachments cite
and counts the rest asomitted_evidence, whereekr.explanation/2lists every evidence entry
of the transactions on the chain (247 for an assertion citing one, as measured);--scope all
keeps them all. With--documentsit carries no proposal record and no base64payloadbeside
atext, and the printed answer is at most 48 KiB: the longest evidence text is halved, and
markedtruncatedwithoffsetandrecord_length, until it fits.--scopeneeds--format ekr.explanation/3;ekr explainwithout a format printsekr.explanation/2unchanged. -
The MCP tools take a few arguments under a second name:
describe_node'snodeasidor
node_idand itsedge_typeasedge,expand'sseedsasseed,nodeornodes(and one id where a list was
required),explain'sassertionasidorassertion_id, andtimeline'ssubjectas
node. Each tool'sinputSchemalists them. An alias answers exactly what the argument's own
name answers; naming one argument twice is-32602.ekr viewis unchanged.
Changed
- The MCP tool
describe_nodeanswersekr.node-detail/2by default, byte for byte what
ekr viewserves for the same request with the format named, and takeslimit,edge_type
andafter;full: trueanswers the wholeekr.node-detail/1as before. - The MCP tool
searchanswersekr.node-matches/2unlessformatnames
ekr.node-matches/1: an agent readingtierseesWords, and each match gainstype_name.
For one request with the format named, its answer is byte for byte whatekr viewserves. - The MCP tools
overview,expand,timeline,changes_since,explainandresolveanswer
the named formats unlessformatnames the earlier one (ekr.graph-overview/2,
ekr.graph-slice/1,ekr.graph-timeline/1,ekr.graph-changes/1,ekr.explanation/2,
outcome);explainanswers scopecitedunlessscopenamesall. An agent reading
resolvereads the outcome underoutcome. For one request with the format (and for
explainthe scope) named, each answer is byte for byte whatekr view, the session verb,
ekr explainorekr resolveanswers. - The MCP tools answer smaller default pages, since an agent reads a tool result whole:
expand
takesedgesas 200 (was 5,000) andchanges_sincetakeslimitas 100 (was 500) when the
call names none. The answer is whatekr viewand the session verb answer with that bound
named; their own defaults are unchanged. A page ends at whichever of its limits comes first,
and thedescribe_nodeandexpanddescriptions say how to ask for the next page. changes_since,GET /changesand the session'schangesderive each revision's changes
from its transaction document once while the server keeps its indexes: a second request over
the same revisions parses no transaction document, and one after a commit parses only the
revisions it added. Answers are unchanged.ekr_views::Index::transaction_documents_parsed
counts the documents parsed.ekr mcp-httpanswersinitialize,ping,tools/list, notifications and every transport
refusal on the request's own connection, never behind the store's queue: a client's handshake
no longer waits for another client's tool call or for the store's first open, and is answered
(with the same bytes) before the store is admitted. Onlytools/calland/readyzwait for
the store.