AgenticSystemCore
Enables team boards from Asana to become live boards and to be synced back to Asana.
Enables team boards from GitHub to become live boards and to be synced back to GitHub.
Enables team boards from GitLab to become live boards and to be synced back to GitLab.
Enables team boards from Jira to become live boards and to be synced back to Jira.
Enables team boards from Linear to become live boards and to be synced back to Linear.
Enables team boards from Notion to become live boards and to be synced back to Notion.
Enables team boards from Obsidian to become live boards and to be synced back to Obsidian.
Enables team boards from Trello to become live boards and to be synced back to Trello.
Agentic System Core
A specification for publishing machine-discoverable knowledge bundles — the Agentic Knowledge Web.
What this repository holds is the specification itself — numbered normative rules, three JSON Schemas, an OWL 2 RL ontology and a suite of conformance test vectors — together with the reference engine that implements it, its command line agsc, and the nine independent checkers of AGSC-09-90 — seven validators and two generators — that anyone can run against any distribution of the format (the repository also holds the maintainer's own tools, which do not ship).
Status
Released. This tree states specification 1.0.0. spec/00-overview.md is authoritative, and it is the file to read rather than this line. The packages — agentic-system-core and its short alias agsc-cli on npm, and agentic-system-core on PyPI — carry version 1.0.0 and are published from the release tag; the name-reservation placeholders that preceded them shipped no runtime and are marked deprecated on npm and yanked on PyPI. Install with npm install agentic-system-core, or pip install agentic-system-core. The reference engine claims Level 3 (its claim).
The specification's own site is AgenticSystemCore.com.
Related MCP server: memory-mcp
In three sentences
A Bundle is a folder of Markdown files with a small block of typed fields at the top of each; the specification says how that folder becomes a knowledge node — a static website plus a graph, a search index, text files for agents and a discovery document — with the same bytes from any implementation. People and agents read a node through ordinary web addresses, change it only by proposals that a person ratifies, and compose its items into a starting harness — files an architect or an agent runtime starts from. Nodes find and cite each other with no server in between.
What is different about it
To the author's knowledge, no other system combines discovery through already-registered web mechanisms with an integrity digest on every artefact link of its discovery document, a typed graph with a published ontology, machine artefacts whose bytes are fixed by expected-byte conformance vectors, governance in which every change — human or agent — arrives as a proposal carrying its provenance and a person ratifies it (directly, or by a standing rule a person recorded in the node's configuration), and composition of the same files into a starting harness, with no server required at any point.
This is a claim about the specification's text and its vectors, not a performance claim. Other systems have some of these properties; the dated comparison is in docs/RELATED-WORK.md.
Property | What it means | Where it is stated and proved |
Discovery through registered mechanisms | one link set at a well-known address, found through the registered relation | AGSC-06-07, AGSC-06-25; |
A digest on every artefact link | at Level 2, each link of the discovery document to a file the node builds (the graph files, | AGSC-06-08; the |
A typed graph with an ontology | fourteen typed links, four RDF views, a published OWL 2 RL vocabulary | |
Bytes fixed by vectors | two implementations given one Bundle emit the same machine files | |
Governance with provenance | every change is a proposal with its provenance; a person ratifies; a ledger is derived from the history | spec/08-governance.md (AGSC-08-08, AGSC-08-20) |
Composition into a harness | selected items close over their links and become seven kinds of file an architect or an agent runtime can start from | AGSC-07-12; |
No server | a file format and static files; no protocol, server, database or reasoner is defined |
Beside that combination, and each available elsewhere on its own: six modes of use
(docs/plain/modes.md); seven tools on every item page and on /compose/ for a
browser's own agent, identical to the local tool server (AGSC-09-16);
eight plugin kinds with a forward-compatibility promise (docs/PLUGINS.md,
AGSC-00-24); a content version stamped on every surface
(AGSC-04-25); and federation walked by the client,
never by a node (AGSC-11-06).
What it is best for
For agents
Memory for one agent.
agsc mcpin a Bundle gives an assistant seven tools to search, read, follow links and cite items by address; nothing leaves the machine (Mode 1, use case L1).Shared memory for many agents. Every agent reads the same published files and writes only by proposals a person ratifies (Mode 1, docs/CONNECTORS.md).
A source of skills. Each cluster becomes one skill pack holding its published items — the procedures are the part an agent follows — with a lockfile of their digests, installable into agent tool folders; skills from other repositories come in as procedures (Mode 3, use case L4).
A starting harness. A selection of items becomes a harness — seven kinds of file an architect or a runtime can start from; it is not a running system, and no rendering for a particular runtime ships at 1.0 (Mode 4, use case M5).
A live board for a team of agents. Agents claim and finish tasks on shared boards until they are done; decisions stay with people (Mode 5, use case M1).
Knowledge across nodes. A client reads several nodes' graph dumps and joins them locally, every foreign result marked with its origin; at 1.0 the walk is a library function of the engine, not a command (Mode 1, use case D4).
For people
A wiki that corrects itself. Markdown in, a checked and linked site out, with every change reviewed (Mode 0, use case L5).
A project's living specifications. Decisions, specifications, tasks and gates as one governed memory, and steering files that keep a coding agent on course (Mode 2, use case L3).
A library of patterns. Concepts with sources and provenance, readable without JavaScript, composable into a starting architecture (Mode 4, docs/USE-CASES.md).
A team board. A board from GitHub, GitLab, Jira, Trello, Linear, Asana, Notion, Obsidian or plain Markdown becomes a live board and goes back again (Mode 5, use case M7).
Quick start
From a clone of this repository (Node 22.13 or later):
npm ci # the exact pinned libraries
npm test # the whole suite, offline
REPO=$PWD; cp -r tests/fixtures/minimal /tmp/agsc-try && cd /tmp/agsc-try
SOURCE_DATE_EPOCH=1767225600 node "$REPO/bin/agsc.js" ci # lint, build twice, compare, verify: "ci: pass"On a folder of your own Markdown notes (Node 22.13 or later, git, a POSIX shell):
npm install agentic-system-core # in a working folder
export PATH="$PWD/node_modules/.bin:$PATH" # puts agsc on the PATH
cd my-notes && agsc init # each note gets a header and moves to content/concepts/
mkdir -p .well-known && printf 'Contact: mailto:you@example.org\n' > .well-known/security.txt
git init -q && git add -A && git commit -q -m 'my notes' # the build takes its instant from this commit
agsc ci # ci: pass (warnings are advice, errors stop)
agsc build # the site, the graph and the agent files in www/Without the security contact ci stops with AGSC-E901; without a commit (or
SOURCE_DATE_EPOCH) it stops with AGSC-E204. The
Mode 0 guide
walks through this with the lines each command prints, and five more
guides
do the same for the other modes. To connect an assistant, read
docs/USING-WITH-ASSISTANTS.md.
To teach a coding agent the engine itself, install the agent skill in
skills/agentic-system-core/: npx skills add andreibesleaga/agentic-system-core,
or in Claude Code claude plugin marketplace add andreibesleaga/agentic-system-core
(the marketplace file .claude-plugin/marketplace.json points at the plugin in
plugins/).
Who it is for, what you get, try it
Reader | What you get today | Try it |
A person with a folder of notes | a static site of your notes with search, each page also as Markdown, a graph file and text files for assistants; no model, no server | the quick start above; the Mode 0 guide |
A developer | a local tool server: seven tools over your folder for an assistant; nothing leaves the machine |
|
A team running an agent-assisted development process | decisions, specifications, tasks and gates as checked files; one steering file with the same bytes for every coding assistant; a gate compiled to one required CI check | the Mode 2 guide; |
A team that keeps its procedures as skills | each procedure as an installable skill pack, checked against a lockfile and holding no scripts; skills collections and rule folders imported as procedures, and the packs exported back for five tools | the Mode 3 guide; |
An architect | a selection of items checked against their typed links and written as seven kinds of file (agent instructions, a C4 model, a diagram, an arc42 skeleton, decision records, skill files): a starting point, not a running system | the Mode 4 guide; |
A team of people and agents on a live board | tasks as checked files, and every cluster that holds tasks published as a board; claims and moves as proposals through the tool server, merged by a person; board files to and from eleven project tools | the Mode 5 guide; |
An engineer implementing or checking the format | test cases with expected bytes; checkers that judge any implementation's files; a second checker in Python |
|
A security reviewer | a ledger re-derived from git history and checked offline; an anchor file that |
|
A researcher | a benchmark kit that runs offline with no model and no key; the graph as JSON-LD, Turtle and N-Quads, which hold the same statements; a citation file and a conformance report to cite | docs/BENCHMARKS.md, docs/MEASUREMENTS.md, CITATION.cff; the researcher's scenarios |
A publisher whose content is gated | a node that says it exists while its content stays behind access control: the discovery document stays public, the bundle facts a public node shows are left out, and the checker accepts their absence |
|
A manager deciding whether to depend on it | what you can rely on (open licences, permanent addresses, archived releases, checks by published bytes) and what you cannot (one maintainer, no support promise, no schedule); the state of every outside step; the security policy | read GOVERNANCE.md, SECURITY.md and the status page; look at a live node: https://patterns.agenticsystemcore.com/ |
An agent or its operator reading a node | one discovery document that lists every machine file with its digest; text files, chunks and graph files at fixed addresses |
|
Where to start reading
docs/START-HERE.md sends each kind of reader — someone curious, a person with notes, a developer, a team with coding assistants, an implementer in another language, an architect, a manager, an agent, a standards reviewer or a maintainer — down one path. Agents and coding assistants working in this repository read AGENTS.md first.
Documentation map
The official repository is https://github.com/andreibesleaga/agentic-system-core; the site is https://agenticsystemcore.com.
Topic | Read |
The specification (the standard itself: 343 rule ids, 332 of them active, in twelve chapters) | spec/ — start with spec/00-overview.md; a plain-language edition is in docs/plain/ |
How to read the specification | |
The protocol: discovery document, link set, digests, peers, tool surfaces | |
The Internet-Draft (the well-known link set; an individual Internet-Draft) | |
Schemas and vocabulary (JSON Schemas, OWL 2 RL ontology, JSON-LD context) | |
Architecture | docs/ARCHITECTURE-GUIDE.md, docs/ARCHITECTURE-DDD.md, docs/diagrams/ |
Standards it builds on and related work | |
Conformance: Levels, vectors, how to state a claim | spec/09-conformance.md, spec/10-implementation-profiles.md, tests/vectors/, docs/CONFORMANCE-STATEMENTS.md |
Implementing it in another language | |
Using it: modes, guides, demos, connectors, assistants | docs/plain/modes.md, docs/guides/, docs/DEMOS.md, docs/CONNECTORS.md, docs/USING-WITH-ASSISTANTS.md |
Plugins and extension points | |
Security and threat model | |
Engineering, testing, measurements | docs/ENGINEERING.md, docs/TESTING.md, docs/MEASUREMENTS.md, docs/BENCHMARKS.md |
Requirements and use cases | |
What comes next | |
Governance, trademark, contributing, licences | |
Glossary and the full docs index |
Reference engine
The reference implementation of the specification lives in this repository,
under src/. It claims Level 3, the full engine. A claim of any Level exists
only after a green run of that Level's vector set and is published in the form of
AGSC-09-01 (AGSC-10-05); the engine's claim is kept in
docs/CONFORMANCE-STATEMENTS.md,
with what each part of it rests on, and reads:
agentic-system-core 1.0.0 conforms to AgenticSystemCore 1.0.0, Level 3. Verified against the published conformance vectors on 2026-10-12: 243 of 243 passed in the 20 populated areas (adopt, boards, boundary, build, bundle, chunks, cli, compose, conform, discovery, export, frontmatter, graph, import, jcs, ledger, links, lint, prov, slug), 242 required and 1 optional, the 7 withdrawn cases excluded, with Unicode 17.0. Deployment profile: cloudflare-pages — the reference profile:
_headersand_redirectsasagsc buildwrites them. Surfaces: llms-txt (proved by disc-0013, disc-0014), chunks (proved by chk-0001, chk-0002, chk-0003, chk-0004, chk-0005, chk-0006, chk-0008), webmcp (proved by cli-0003).
All sixteen verbs of AGSC-09-07 are implemented; run and trace are off by
default, as AGSC-09-94 requires. agsc init adopts a folder of Markdown; before the first
build the publisher adds .well-known/security.txt with a Contact: line (RFC
9116) and commits once or sets SOURCE_DATE_EPOCH, as init says on its way out;
agsc ci checks, and agsc build writes the site.
src/README.mdis the engine's own documentation — the bounded contexts, the module map, the verb → module table, how to run the conformance vectors, and the list of specification items this work found and reported rather than worked around.tests/vectors/**is the acceptance test, and it is the part that matters to anyone implementing this format in another language: a port needsspec/,schema/,ontology/and those vectors, and nothing fromsrc/.npm testruns the whole suite, and the conformance runner prints one summary line.docs/PLUGINS.mdis the plugin contract: the eight kinds this format admits (AGSC-00-24), what a plugin of each may read, emit and never do, how the engine finds one, and what is promised not to break within 1.x.examples/plugins/holds one minimal sample per kind; at 1.0 a command loads three of the kinds (a memory adapter, a composition emitter and a deployment profile), and the other five samples are proved by the plugin-contract test only.
The engine's arrangement is one implementation choice, not part of the format. Where this engine and the specification disagree, the specification wins.
What the package promises to keep within 1.x. The command line — the
commands agsc, agsc-host and agentic-system-core, their verbs, flags, exit
codes and output envelopes (AGSC-09-07 to AGSC-09-12) — the plugin contract of
docs/PLUGINS.md (plugin API 1.0.0), the nine checkers run as programs
(node tools/<name>), and the six names require('agentic-system-core') returns:
LINK_RELATION, PROFILE_URI, WELLKNOWN_SUFFIX, run, specVersion and
version. package.json declares no exports map, so every file under src/,
bin/ and tools/ can still be required; none of them is part of the promise,
and their names and signatures may change in any release. The one exception is
run() of bin/agsc.js, the entry the agsc-cli alias package calls.
Upgrading from a release candidate. CHANGELOG.md has one section for each
step: Upgrading from 1.0.0-rc.7, under
1.0.0, and Upgrading from 1.0.0-rc.6, under
1.0.0-rc.7. Each says what a node built with the earlier version may now see
refused, what changes in the built files, and what to do. A node still on
1.0.0-rc.6 reads the second section first, then the first.
Connecting agents and repositories
docs/CONNECTORS.md says, route by route, how an agent or a framework uses a
published Bundle — steering files, skill packs, the MCP server, and the COGX
memory archive (agsc export --to cogx / agsc import --from cogx), the format Cognee
reads and writes and into which it translates Mem0, LangMem, Letta and Zep memories
when they are migrated into Cognee. examples/connectors/ holds the
working examples, and docs/USE-CASES.md walks through twenty-one concrete scenarios
with their commands.
Check a Bundle on every push (GitHub Actions). action.yml at the root of this
repository is a composite action that runs agsc ci with the engine at the same
commit as the action, so the ref you write pins the engine version. Pin it to the
package tag, v1.0.0 (not the specification tag 1.0.0), or to that tag's full commit
SHA, give the job read access only, and fetch the history the ledger reads:
permissions:
contents: read
jobs:
agsc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@<commit-sha>
with:
fetch-depth: 0
- uses: andreibesleaga/agentic-system-core@v1.0.0Lint before every commit (pre-commit). .pre-commit-hooks.yaml offers one hook,
agsc-lint, which runs agsc lint over the whole Bundle whenever an item or the
configuration changed. Pin rev the same way, to the package tag or its full commit
SHA. The hook runs under the system Node, which must be Node 22.13 or later; where the
system Node is older, set language_version for the hook to a newer version:
repos:
- repo: https://github.com/andreibesleaga/agentic-system-core
rev: v1.0.0
hooks:
- id: agsc-lintHow this is made
This work is written and maintained by Andrei N. Besleaga with the help of AI
assistants. A person decides what is written, an assistant drafts and checks it, and a
person reads, edits and approves everything that is published and answers for it. Every
published item records how its text was made and names the person accountable for it.
Written with AI assistance, reviewed and published by a person.
The assistance covered text, code, figures and diagrams alike. The engine itself calls no
AI model and contains no model adapter. The model steps the specification describes are
optional: a live run is made by an agent outside the engine — Claude Code, a script — as a
client of agsc mcp or the page tools, under the lane's declared limits (AGSC-08-28), and
it is the responsibility of the person who runs that agent. What an assistant or agent writes from this
work is its own output, not a statement by the author.
What this does not claim
This is the independent work of one person, published as it is, with no warranty of any kind and no liability for anything that follows from using it. Nothing in it is legal or professional advice. No standards body, foundation, company or institution named in this repository has reviewed, approved or is connected with this work, and it is not a document of the IETF, of the W3C or of any other body. Other product and organisation names are the marks of their owners and are used only to say what is being talked about. Every right not expressly granted by the licences is reserved, and nothing here promises that the work or its addresses will stay available.
Notice
AgenticSystemCore™ is a trademark of Andrei N. Besleaga. Other names belong to their owners.
Licences
What | Licence |
The engine, the command line and the checkers | Apache-2.0 ( |
The JSON Schemas, the ontology, the identifiers and the discovery document | CC0-1.0 |
The agent skill under | CC0-1.0 |
The specification text under | Apache-2.0 |
The conformance vectors under | Apache-2.0 |
The documentation under | Apache-2.0 |
The W3C-format personal draft under | CC-BY-4.0 |
The Internet-Draft under | Apache-2.0; as a posted Internet-Draft also under BCP 78 and the IETF Trust Legal Provisions |
The prose of a published node — item bodies, descriptions and the pages and exports that carry them | the Content Use Terms in |
Outside contributions are signed off under the agreement in CONTRIBUTOR-AGREEMENT, which
the token CA-v1 names; CONTRIBUTING.md says what that means in plain words.
GOVERNANCE.md says who decides and what happens if the maintainer stops,
TRADEMARK-POLICY.md how the project's name may be used,
docs/CONFORMANCE-STATEMENTS.md how to say that an implementation conforms,
CODE_OF_CONDUCT.md how people are expected to behave, and SECURITY.md how to
report a vulnerability privately.
© 2026 Andrei N. Besleaga. Code: Apache-2.0. Schemas, ontology, identifiers and the
discovery document: CC0-1.0. Prose: the Content Use Terms in LICENSE-CONTENT.
Available Tools
7 toolsaskARead-only
Return the descriptions of the best-matching items for a question, citing their item IRIs; no model is called.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it performs no model call (deterministic retrieval, no generation) and returns descriptions with IRIs rather than a synthesized answer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with a clarifying semicolon clause, front-loading the action and following with the key differentiator. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-param read tool with no output schema, the description covers the essentials, but it leaves 'best-matching' undefined and does not clarify how results relate to sibling tools like 'search'. That missing routing context is the main gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but there is only a single parameter literally named 'question', which the description reproduces ('for a question'). It adds no format, length, or interpretation detail, but the param is self-explanatory, so a baseline 3 is fair.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: returns descriptions of best-matching items for a question, citing item IRIs. That is concrete enough to distinguish it from pure retrieval or generation, but it never names or contrasts with the obvious sibling 'search', leaving the ask-vs-search boundary to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no named alternative. The phrase 'no model is called' hints that this is a non-LLM path, but the agent is not told when to prefer 'ask' over 'search' or 'read'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
composeCRead-only
Run the AGSC-07 closure algebra over a selection of item slugs.
| Name | Required | Description | Default |
|---|---|---|---|
| selection | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is declared and not contradicted, but the description adds essentially no behavior beyond it: it does not say what is computed, whether the operation is deterministic or expensive, or what constitutes a valid selection. 'Closure algebra' hints at a non-trivial computation without explaining it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight, front-loaded sentence with no filler. The only cost is that the brevity is achieved by leaning on an undefined acronym rather than by precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations beyond readOnly, the description must explain the operation and its result. It defines neither what the closure algebra produces nor what a slug looks like, which is inadequate for an obscure domain-specific computation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has 0% schema description coverage, so the description carries the burden. It does add meaning by stating the array holds 'item slugs', but gives no slug format, count limits, or ordering semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a distinct operation (run an AGSC-07 closure algebra) and its input (item slugs), so it is not a tautology of the name. However, 'AGSC-07 closure algebra' is undefined jargon with no sibling differentiation against ask/links/propose/read/remember/search, leaving the actual effect opaque.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, when not to, or which sibling it competes with. An agent gets no routing signal at all beyond the tool's existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linksCRead-only
Return the typed Links authored on one item.
| Name | Required | Description | Default |
|---|---|---|---|
| iri | No | ||
| slug | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, but the description adds no behavioral context beyond that: no note on return shape, ordering, pagination, or what happens when neither iri nor slug is supplied. 'Authored on one item' hints at a linkage semantic but is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the resource front-loaded. Terse, but arguably under-specified rather than over-written, and it wastes nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param read tool with no output schema and zero schema coverage, the description should at least identify how the item is addressed and what a Link looks like. As written it leaves both the parameter role and the returned structure unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the param burden, and it does not. It never explains what iri or slug mean, whether one identifies the source item, or what happens when both are omitted (required is empty).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb (Return) and resource (typed Links authored on one item), which is more informative than a bare name. However, it leaves key terms undefined — what a 'typed Link' is, and what 'one item' means given the params are iri/slug — and offers no differentiation from siblings like read or search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as read or search. The agent must guess when this tool is preferable to the other retrieval-oriented siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proposeC
Return the Proposal payload for one item — with task_state, a prepared board move (claim, progress, finish) as a patch; performs no write.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| slug | Yes | ||
| agent | No | ||
| task_state | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description asserts 'performs no write', but the annotation declares readOnlyHint=false, i.e. the tool is not read-only and may affect state. This is a direct conflict about the tool's safety profile, and an agent relying on the description could wrongly treat it as a harmless read. The partial disclosure that it returns a patch rather than applying it does not resolve the conflict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the return action and wastes no words. The em-dash construction is slightly tangled, but the size is well matched to the payload.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and 0% parameter documentation, so the description carries the full burden, which is only partly met. It sketches the returned payload but does not explain what 'at' or 'agent' do, nor what a caller gains from receiving a patch they must apply themselves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all four parameters, so the description must compensate and does not. It names only task_state and gestures at possible move values (claim, progress, finish), leaving at, agent, and how 'one item' is identified (slug) completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Return the Proposal payload for one item' gives a verb and resource, and the second clause hints at the content (task_state, a prepared board move). However, 'Proposal payload' is undefined domain jargon, and nothing distinguishes this from siblings like read, compose, or search, which could plausibly return similar data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or named alternatives are given. The phrase 'performs no write' faintly implies a preview/dry-run role, but the agent is never told when to call propose instead of read, compose, or ask.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
readCRead-only
Return one item by slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=true annotation already establishes this as a safe non-mutating read, lowering the disclosure bar. The description adds the meaningful scoping fact that exactly one item is returned by slug, but says nothing about behavior for a missing/invalid slug or the shape of the returned item.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short front-loaded sentence with no filler, so nothing is wasted. It borders on under-specification for a tool whose resource noun is ambiguous, but as raw conciseness and structure it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 0% parameter coverage, the description should carry more of the burden, yet it never defines what an 'item' is or what the return looks like. Given the generic tool name 'read' and its many siblings, an agent lacks enough context to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single 'slug' parameter carries no format, source, or validity detail in the schema. The description only restates the parameter name ('by slug') and does not compensate with any expected format or example, leaving the meaning thin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (return) and cardinality (one item) plus the lookup key (slug), which is better than a tautology. However, "item" is an undefined resource noun, and nothing distinguishes this from the sibling 'search' tool, so an agent cannot tell exactly what domain object is fetched.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus search or any other sibling. The phrase "by slug" weakly implies exact-key retrieval as opposed to querying, but there are no explicit conditions, exclusions, or alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rememberC
Synthesize a conforming item — a new task on a board (kind task, cluster), a comment on one (about) — and return it as a Proposal payload.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| body | Yes | ||
| kind | Yes | ||
| about | No | ||
| actor | No | ||
| agent | No | ||
| model | No | ||
| title | Yes | ||
| usage | No | ||
| origin | No | ||
| cluster | No | ||
| outcome | No | ||
| sources | No | ||
| operator | No | ||
| severity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the write bar is covered minimally. The description adds that the result is returned as a Proposal payload, but it is ambiguous whether the item is actually persisted or merely staged, and it discloses nothing about permissions, side effects, or actor/agent attribution despite having actor/agent/model params.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler, and the core output is front-loaded. It loses a point only because the dense parenthetical jargon ("conforming item", "Proposal payload") reduces immediate comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter mutation tool with no output schema and only a single annotation, the description is far too thin. It partially substitutes for an output schema by naming the Proposal payload, but the overwhelming majority of parameters and the write semantics remain unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 15 parameters, so the description carries the full burden, yet it explains only kind, cluster, and about. Required fields body and title are never defined, and 12 other params (actor, model, severity, outcome, sources, etc.) are left entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description does name concrete outputs — a new task (kind task, cluster) or a comment (about) — returned as a Proposal payload, so an agent can infer it creates board items. However, the framing verb "Synthesize a conforming item" is opaque jargon, and it gives no signal to distinguish this from siblings like compose or propose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives despite nearby siblings (compose, propose, ask). The agent must guess the intended context from the name and examples alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchCRead-only
Search this memory and return matching items.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the safety profile is covered by annotations. However, the description adds nothing beyond that: no matching semantics, no result limits, no pagination or ordering behavior for what is described as a list-returning tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no padding and the purpose is front-loaded, which is good. But the brevity comes at the cost of specification rather than being efficient density, so it lands at minimum viable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A search tool with no output schema, 0% parameter coverage, and undifferentiated siblings needs more than one generic sentence. Return shape, matching behavior, and the choice between this tool and ask/read are all missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single 'query' parameter is undocumented in both the schema and description. The description does not indicate query syntax, whether it is free text or structured, or how matching is performed, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb (search) and a resource (this memory) with a hint at the result ('matching items'), but 'this memory' is undefined and the definition never distinguishes itself from siblings like ask or read. An agent cannot tell from the description whether this is keyword lookup, semantic retrieval, or a different access pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no when-not-to-use, and no mention of alternatives despite five plausible sibling tools (ask, read, links, propose, remember). The agent is left to infer entirely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
- First observed
ask - First observed
compose - First observed
links - First observed
propose - First observed
read - First observed
remember - First observed
search
TDQS
Scored across 7 tools
Two pairs overlap meaningfully: ask vs search both retrieve items (differing mainly in whether a model/description output is used), and propose vs remember both return Proposal payloads (one retrieves an existing payload, one synthesizes a draft). read/links/compose are clearly distinct, and descriptions do clarify the boundaries, but an agent could still misselect within the retrieval and proposal pairs.
Nearly all tools are single lowercase verbs (ask, compose, propose, read, remember, search), giving a predictable style. The lone outlier is 'links', a noun that names a resource rather than an action, a minor deviation from an otherwise consistent convention.
Seven tools is a well-scoped set for a memory/knowledge core, covering retrieval, traversal, composition, and proposal drafting without redundancy. Each tool has a plausible distinct role in the workflow.
Query and draft coverage is good (read, search, ask, links, compose, remember, propose), but the surface stops at proposals: both propose and remember explicitly perform no write, and there is no apply/commit tool or any update/delete of existing items. Agents can draft but cannot persist changes, a notable lifecycle gap.
Maintenance
Related MCP Connectors
Notes and memory assistant: one Markdown vault that Claude, ChatGPT and any MCP client can share.
Read, write, and conversationally review open-source flashcards through split read/write MCP tools.
Personal knowledge graph as an AI memory layer over MCP - read, save, and link your memories.
Personal knowledge MCP: capture bookmarks, notes & todos by chat; archive pages; search memory.
Related MCP Servers
- AlicenseBqualityDmaintenanceLocal Markdown-backed memory tools for Codex and other MCP-capable agents. Exposes durable agent knowledge via CLI and MCP server.5MIT
- AlicenseNot gradedqualityCmaintenanceEnables reading, writing, and searching a local markdown-based memory store using MCP tools, with safety checks and index consistency.MIT
- AlicenseNot gradedqualityBmaintenanceExposes a living systems memory vault to autonomous agents, letting them search notes with BM25 ranking, read sections within token budgets, extract API/port/schema contracts, compute dependency blast radius, and run machine-verifiable invariant assertions before mutating code. It also supports surgical frontmatter edits, schema linting, wikilink integrity checks, and worklog recording, over stdio MCP.MIT
- AlicenseNot gradedqualityAmaintenanceLocal research vault over stdio: search, read and link the markdown notes a Claude Code or Codex deep-research pipeline collected, list and check sources, and fetch new URLs into the vault.340 PyPI3,864MIT