linklore
OfficialLinkLore is an AI-native structured memory server for software projects, enabling AI agents to record, recall, and organize decisions, specs, and knowledge with code context attached — all stored locally in a .linklore/ SQLite database. Key capabilities include:
Project Setup & Config:
initto initialize a project,configfor settings/identity/session, anddoctorfor integrity checks.Memory Operations:
add(create lore/docs with tags, levels, checklists, batch),edit(append, section replace, overwrite, supersede),rm(trash/permanent delete),restore(recover trashed items), andlog(history).Linking & Navigation:
link/unlinkfor relationships (related, flow, supersede);doc_flow(flow-chain view),doc_map(network overview), anddoc_rollup(AI-summary draft from linked lore).Query & Dashboard:
show(search by query/tag/status/time),brief(project dashboard, call at session start), andlog(history).Maintenance:
status(detect code-doc drift via git-diff),cleanup(find duplicates),doctor(data integrity repair).Sharing & Collaboration: Openbox-based sharing:
member(manage openboxes/members),send(share items),import(retrieve from openbox).Backup & Sync:
push/pullfor personal server backup/restore.Local Operations:
localto move/copy/show items between local LinkLore projects.Feedback:
reportto send feedback/bugs.
Provides Google login for authentication to enable personal backup or team sharing of project memory.
LinkLore
MCP server for project memory — lets AI agents record decisions, pitfalls, and specs as they work, and recall them next session with code context attached.
Built for agents, not humans: every tool here is designed for usability by an AI, not readability for a person.
Why LinkLore
Every new session, an AI agent starts from zero — decisions get re-litigated, pitfalls get rediscovered, and "why is it done this way?" gets answered by guessing. Markdown notes don't fix this: they're written for people, they drift from the code, and no agent reads them reliably.
LinkLore is structured memory that the agent itself reads and writes through MCP tools:
Two record types — lore (decisions, pitfalls, journal) and doc (specs, plans), bidirectionally linked to each other and to code files.
Local-first — everything lives in a
.linklore/SQLite store inside your project. No account needed to start.Code context — records link to source files; git-diff-based stale detection flags memory that the code has outrun.
Cheap recall — query by meaning, tag, file, status, or period; a session-start
brief()returns open items and hotspots in a few hundred tokens.
Related MCP server: tentra
Quick Start
Runs straight from PyPI — no install or clone (uvx llre).
Claude Code
claude mcp add llre -- uvx llreAny other MCP client (Cursor, Codex, Windsurf, …) — add to the project's MCP config (e.g. .mcp.json):
{
"mcpServers": {
"llre": {
"command": "uvx",
"args": ["llre"]
}
}
}Then initialize, once, in the project root:
uvx llre initOr let your agent do all of it — this is a server meant to be set up by an AI agent rather than typed in by hand. Paste this as your first message to Claude Code, Cursor, Codex, or any other MCP-capable agent:
Set up LinkLore (an MCP server for project memory) in this repo. It's the PyPI package
llre, run viauvx llre— no install or clone needed. Register it as an MCP server for whichever client you are (Claude Code:claude mcp add llre -- uvx llre; otherwise add{"mcpServers": {"llre": {"command": "uvx", "args": ["llre"]}}}to this project's.mcp.json), then runuvx llre inithere. Ask me first before runninguvx llre login— it opens a browser for Google login and is only needed for personal backup or team sharing.
The Loop
How an agent actually uses it, in order:
start a session → brief() open items, recent activity, hotspots
about to touch code → show(file=..., query=…) decisions & pitfalls tied to that area
decided / got burned → add(type='lore', …) record it, linked to the files involved
spec or plan → add(type='doc', …) instead of a standalone .md
something changed → edit(id=..., …) append, replace a section, or supersede
memory getting messy → doctor() · cleanup() integrity check, duplicate detection
back up / share → push() · openbox(…) your server space · invite-only shared boxesAvailable Tools
23 tools. Call any of them with help=True for full usage.
Category | Tool | What it does |
Setup |
| Set up |
Project |
| Session-start dashboard — open items, recent activity, hotspots |
Project |
| Code↔doc sync drift detection (git-diff based) |
Project |
| Project settings, external sources, session pin |
Diagnostics |
| Data integrity check; |
Record |
| Create lore or doc; |
Record |
| Modify an item — append (default), replace a section, overwrite, or supersede |
Record |
| Delete — recoverable trash by default, |
Record |
| Recover from trash; without |
Record |
| Move/copy/view items across sibling local workspaces |
Search |
| Query by id, text, tag, status, file, or period; graph and tag views |
Search |
| Change history |
Link |
| Connect two items (lore↔lore, doc↔doc, doc↔lore) |
Link |
| Disconnect two items |
Doc view |
| Render a doc's flow chain in order |
Doc view |
| Overview of the full doc link network |
Doc view |
| Collect lore linked to a doc into an AI-summary draft |
Cleanup |
| Detect near-duplicate lore/doc candidates |
My server |
| Back up the local store to your own server space |
My server |
| Restore from your own server space |
Openbox |
| All cross-owner sharing behind one gate — push/pull, browse, invite/join, roles |
Feedback |
| Send feedback or a bug report straight to the team |
The full guide ships inside the product, as lore — LinkLore documents itself with itself. After init(), your project carries it as a read-only source:
show(tag='guide')It updates with the package: upgrade llre and brief() tells you what changed.
Repository Layout
mcp/— the readable portion of the MCP server source (PyPI:llre)plugin/— Claude Code plugin wrapper
Source Model
Mostly readable, core compiled. This repository publishes the MCP server's source in the clear — the entry point, i18n catalogs, base utilities, and the onboarding guide — under the Elastic License 2.0. The core modules (search, ranking, contradiction detection, the tool logic) ship as compiled extensions in the published wheel rather than plaintext source, so "read every line and fork it" isn't 100% true — but the majority is readable, and you can run it, self-host it, and use it commercially inside your own org. We'd rather be upfront that the crown-jewel logic is compiled than pretend it's fully open.
This tree is not buildable on its own (the compiled modules are not here) — install the published package instead: uvx llre.
Research
LinkLore is the case study of the paper "When the Agent Is the User: Agent-Driven Evolution of AI-Native Tools" — defining the AI-Native Tools category, where the AI agent is the primary operator.
DOI: 10.5281/zenodo.21216858 · citation: CITATION.cff
License
Elastic License 2.0. Free to install and use; you may not provide the software as a competing managed service, circumvent license-key functionality, or remove licensing notices.
Team sync, cross-project sharing, and cloud backup are provided by the backend service at linklore.io (not part of this repository).
Available Tools
24 toolsaddB
add(type='lore'|'doc', title, msg=) — lore=journal entry/decision, doc=spec/plan. 2 linking args: links=unified (code files·dc/lr id·title auto-classified, flow=True for a doc chain) · push_to=send to a box (not a link). items=['a','b']→checklist(0/N, doc only) · items=[{...}]→batch creation(both lore·doc — use this for bulk, quieter nudges than N single calls). level 1~4(lore): 1=note 2=verified 3=pinned(shown in brief) 4=global(all projects). details help=True
| Name | Required | Description | Default |
|---|---|---|---|
| msg | No | ||
| flow | No | ||
| help | No | ||
| tags | No | ||
| type | No | lore | |
| items | No | ||
| level | No | ||
| links | No | ||
| title | No | ||
| status | No | open | |
| push_to | No | ||
| relates | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description partially covers behavioral traits (e.g., linking behavior, batch nudges, level effects). However, it omits details on parameters like tags, status, and relates, and does not clarify side effects or permission needs.
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?
The description is a single, dense paragraph filled with abbreviations and jargon (e.g., 'dc/lr id', 'box', 'nudges'). It lacks clear structure or front-loading, making it hard to parse quickly.
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?
Given the complexity (12 parameters, no annotations), the description covers core functionality but leaves gaps (tags, status, relates) and relies on domain familiarity. The output schema exists but isn't referenced.
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?
With 0% schema description coverage, the description explains 9 of 12 parameters (type, title, msg, links, push_to, items, level, flow, help), but ignores tags, status, and relates. The explanations are dense and assume prior knowledge.
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 clearly indicates the tool adds 'lore' or 'doc' entries, defining each type (lore=journal entry/decision, doc=spec/plan). However, the phrasing is domain-specific and could be more intuitive for new users.
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?
The description provides context on when to use batch creation over single calls and mentions checklist usage, but does not compare with sibling tools like 'link' or 'doc_map', nor does it specify when NOT to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
briefB
[read-only] project dashboard — call at the start of every session.
external source 🔔 = a new push has arrived. receive it with import(openbox=). options: dismiss(turn off a nudge), undismiss(restore it), help.
| Name | Required | Description | Default |
|---|---|---|---|
| help | No | ||
| dismiss | No | ||
| undismiss | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims '[read-only]' but also mentions options 'dismiss' and 'undismiss' which imply state changes, creating ambiguity. No behavioral traits like permissions, side effects, or limits are disclosed, and annotations are absent.
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?
The description is concise at two lines plus a third for options, with the main purpose front-loaded. Some phrasing is cryptic (e.g., 'import(openbox=)'), but overall 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?
For a dashboard tool with three parameters and no annotations or output schema details, the description leaves many questions unanswered: what the dashboard displays, the nature of nudges, and how to handle the external source. It is insufficient for an agent to fully understand the tool's behavior.
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 description adds meaning to 'dismiss' ('turn off a nudge') and 'undismiss' ('restore it'), but does not explain 'help' or the 'external source' reference. With 0% schema description coverage, the description provides only partial parameter clarity.
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 states it is a 'project dashboard' meant to be called at the start of every session, clearly indicating a read-only overview. However, it does not differentiate from sibling tools like 'status' or 'show', lacking specificity on what the dashboard contains.
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?
Explicitly instructs to 'call at the start of every session', providing a clear usage context. However, it does not mention when not to use it or alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cleanupC
[read-only] cleanup(type='lore'|'doc') threshold(=0.85), status(=open), help - duplicate candidates.
| Name | Required | Description | Default |
|---|---|---|---|
| help | No | ||
| type | No | lore | |
| status | No | open | |
| threshold | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only declares '[read-only]' but does not disclose other behavioral traits such as required permissions, side effects, or what 'duplicate candidates' means.
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?
Extremely concise (one line) but at the cost of clarity. The notation is compact and front-loaded with '[read-only]', but key information is missing.
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?
Given 4 parameters and an output schema, the description is insufficient. It does not explain the purpose, return value, or how this tool fits among 23 siblings. Minimal context provided.
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%, so description must compensate. It lists defaults and hints at allowed values for 'type' (lore|doc), but does not explain the meaning of 'threshold', 'status', or 'help'. Some added value but incomplete.
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 fails to specify a clear action verb. It states 'cleanup - duplicate candidates' but does not indicate whether the tool lists, identifies, or removes duplicates. The '[read-only]' prefix hints at no mutation, contradicting the typical meaning of 'cleanup.'
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 guidance on when to use this tool versus siblings like 'doctor', 'show', or 'status'. The description only lists parameter defaults without any contextual advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configC
Project settings (openbox source options) + identity + session pin.
Sharing lives in separate tools: send/import (openbox) - member (members/subscriptions).
actions: sources/option/sync/forget/whoami/version/pin/unpin/sessions/projects/delete_project. help=true for details.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | No | ||
| help | No | ||
| name | No | ||
| No | |||
| action | No | ||
| handle | No | ||
| revoke | No | ||
| confirm | No | ||
| projects | No | ||
| project_id | No | ||
| auto_search | No | ||
| show_prefix | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It lists actions like 'sources/option/sync/forget/whoami/version/pin/unpin/sessions/projects/delete_project' but does not explain what these actions do, whether they are read or write operations, or what side effects occur.
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?
The description is somewhat fragmented: it starts with a clear purpose sentence, then adds a note about sharing, then lists actions with an instruction about help. It is not overly long but could be more structured and focused.
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?
Given the complexity of 12 parameters and multiple actions, the description is incomplete. It lacks details on how to use the tool, what each action does, and what outputs to expect, despite the presence of an output schema.
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 input schema has 12 parameters with 0% description coverage. The description only mentions the 'help' parameter ('help=true for details') and does not describe the purpose or usage of any other parameter.
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 states that the tool manages 'Project settings (openbox source options) + identity + session pin,' which gives a clear high-level purpose. However, it is not a single concise verb+resource statement, and the list of actions adds some clarity but also complexity.
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?
It provides guidance on when not to use this tool by noting that sharing is handled by separate tools (send/import, member). However, it does not explicitly state when to use this tool versus its siblings, nor does it provide clear use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doc_flowC
[read-only] doc_flow(id) — renders a doc's flowLink chain in order (journey view).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| help | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes '[read-only]' which signals no side effects, and 'renders' implies a read operation. With no annotations provided, this is adequate but minimal. It does not disclose potential error handling, permissions, or rate limits.
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?
The description is a single sentence that is front-loaded with the read-only hint and function signature. It contains no redundant information and is efficient for its length.
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?
Despite having an output schema, the description is too brief to provide sufficient context for an AI agent. It does not explain what a 'flowLink chain' is or how this tool fits among the many sibling tools like link, unlink, and doc_rollup.
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%. The description only implies the 'id' parameter via the function signature but does not explain the 'help' parameter or provide any additional meaning beyond the schema's bare names. This is insufficient for a tool with undocumented parameters.
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 clearly states the verb 'renders' and the resource 'doc's flowLink chain', and specifies it's a journey view. However, it does not explicitly distinguish from sibling tools like doc_map or doc_rollup, which may have overlapping purposes.
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 guidance is provided on when to use this tool versus alternatives. The phrase 'journey view' gives a vague hint, but there are no explicit when-to-use or when-not-to-use instructions, nor are alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doc_mapC
[read-only] doc_map(oneline) — overview of the full doc link network.
| Name | Required | Description | Default |
|---|---|---|---|
| help | No | ||
| oneline | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It only states read-only nature, lacking details on side effects, permissions, or output behavior. This is insufficient for a tool with no annotation safety net.
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?
The description is very concise at one line, front-loading the read-only hint. However, it sacrifices necessary parameter explanations, making it too brief for full understanding.
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?
Given the absence of parameter descriptions in the schema and no annotations, the description fails to provide complete context. The output schema exists but isn't leveraged in the description. The tool's role among 23 siblings requires more detail.
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 description does not explain the 'help' or 'oneline' parameters beyond mentioning 'oneline' in parentheses. No clarity on their effects or valid values is given.
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 clearly states the tool is for an 'overview of the full doc link network' with a verb-like 'doc_map' and indicates it is read-only. However, it does not explicitly differentiate from sibling tools like doc_flow or doc_rollup.
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?
The '[read-only]' prefix implies safe usage for reading, but there is no guidance on when to use this tool versus alternatives such as doc_flow or doc_rollup. No exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doc_rollupB
[read-only] doc_rollup(id) — collects lore linked to a doc into an AI-summary draft.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| help | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description declares the tool as read-only, providing a key behavioral trait. However, it does not explain whether the summary draft is persisted, how AI is invoked, or any side effects, leaving ambiguity.
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?
The description is extremely concise: a single sentence with a function signature. Every part serves a purpose, and there is no redundant information.
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?
Given two parameters and an output schema, the description omits explanation of the 'help' parameter and the nature of 'lore' or 'AI-summary draft'. It is incomplete for a tool with no annotations or further context.
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%. The description only hints at 'id' in the signature but provides no explanation of its meaning or the 'help' parameter. The description adds minimal value beyond the schema.
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 uses a specific verb ('collects') and resource ('lore linked to a doc'), clearly stating the action and result ('AI-summary draft'). The '[read-only]' prefix distinguishes it from sibling tools that may modify 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?
The description lacks any guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doctorA
doctor() - checks project data integrity (oldId/newId, files[] paths, link targets).
doctor() read-only diagnostics (default) doctor(action='fix') automatically repairs any issues found
| Name | Required | Description | Default |
|---|---|---|---|
| help | No | ||
| action | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the read-only vs. repair behavior, but lacks details on what repairs entail, side effects, or reversibility. With no annotations provided, this is adequate but not comprehensive.
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?
The description is concise (two lines), front-loads the purpose, and avoids waste. Every sentence adds value.
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?
Given the tool's diagnostic nature, the description covers key aspects, but it does not mention return values or output, even though an output schema exists. It is minimally complete.
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 description explains the 'action' parameter (default read-only, 'fix' repairs), adding value over the schema. However, the 'help' parameter is not described, and schema coverage is 0%, so the description partially compensates.
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 clearly states the tool checks project data integrity and lists specific aspects (oldId/newId, files[] paths, link targets). It distinguishes between default read-only diagnostics and a fix action, setting it apart from siblings like status or cleanup.
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?
The description explains when to use each mode (default for checks, action='fix' for repairs) but does not explicitly exclude alternatives or mention prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
editA
edit(id, action=, ...) — 4 write modes (action). If action is omitted, defaults to append (msg alone works too).
Write modes (action, tool option = behavior match):
append (default, non-destructive) → edit(id, action='append', msg='new content') # or omit action, msg alone — appends to the end of body, keeps the rest
section (partial edit) → edit(id, action='section', section='heading', msg='new section content') # replaces just that section (existing heading only — errors if missing; to add a new section use append), keeps the rest
overwrite (full replace) → edit(id, action='overwrite', msg='new body' [, tags=[...], ...]) # old body kept in history(recoverable via log). tags/items(doc only)/links are also fully replaced in the same call
supersede (follow-up publish) → edit(id, action='supersede', msg='new conclusion') # creates a new id, old one head=False
(action= is one of append|section|overwrite|supersede. Unspecified('') means append.)
Other:
mark as dropped → edit(id, status='dropped') (still shown in search)
level (lore importance) → edit(id, level=N): 1=note(default) 2=verified 3=pinned(shown in brief) 4=global(all projects)
supersede chain (keep old + new head) → edit(id, action='supersede', ...) (or add(type='lore'|'doc', relates=old_id, ...))
supersede by an existing item (reconcile a contradiction) → link(a=X, b='lr-Y'|'dc-Y', action='supersede') (X→head=False)
permanent delete → rm(id)
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| msg | No | ||
| flow | No | ||
| help | No | ||
| tags | No | ||
| items | No | ||
| level | No | ||
| links | No | ||
| title | No | ||
| action | No | ||
| status | No | ||
| section | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description reveals key behaviors: overwrite keeps old body in history (recoverable via log), supersede creates a new id, and section mode errors if the heading is missing. It also notes that marking as dropped still shows in search. This covers the major behavioral traits, though it omits authorization or rate limit details.
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?
The description is long but well-structured with bullet points and examples, making it easy to parse. It front-loads the core concept ('4 write modes') and then details each. Some redundancy exists (e.g., supersede mentioned twice), but overall it is efficient for the complexity.
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?
Given the tool's complexity (12 params, multiple modes) and the absence of annotations, the description covers the main use cases and behaviors. However, it leaves some nuances unclear, such as how non-action parameters interact with different modes (e.g., are tags ignored when appending?). The presence of an output schema reduces the need to explain return values, but the description could further clarify overall effects.
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 input schema has no descriptions (0% coverage), so the description compensates by explaining most parameters: id, msg, action, section, status, level, tags, items, links. It provides concrete examples for each action. However, 'flow' and 'help' are not explained, and 'title' is only briefly mentioned. The description adds significant meaning beyond the schema.
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 clearly states that 'edit' modifies existing content with four distinct write modes (append, section, overwrite, supersede). Each mode is explicitly described with verb+resource (e.g., 'appends to the end of body'). The tool's purpose is unambiguous, and the modes differentiate it from siblings like 'add' or 'rm'.
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?
The description provides within-tool guidance on which action mode to use for specific edits (e.g., append for adding, section for partial edit, overwrite for full replace). It also mentions alternatives like 'rm' for permanent delete and 'link' for supersede. However, it does not explicitly tell when to use 'edit' versus other sibling tools like 'add', 'config', or 'status', leaving some ambiguity for cross-tool decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
importA
import(id, openbox) — bring an openbox's footprints into the home base (the receiver picks what).
import(openbox='ai-team') refreshes the openbox cache (remote/) only, home base untouched
import(id='lr-x'|'dc-x', openbox='ai-team') refreshes the cache + absorbs into the home base (new local id, provenance metadata) (space= is an alias for openbox= — both work.) ⚠️ moving items between local projects/workspaces is local(), not import()
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| help | No | ||
| space | No | ||
| openbox | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description informs about behavioral traits: it 'refreshes the cache' and 'absorbs into the home base with new local id and provenance metadata'. It also notes the alias. Lacks detail on idempotency or overwrite behavior, but covers core behavioral aspects well.
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?
Description is well-structured with example invocations and a warning. It uses bullet points and code formatting for clarity. Slightly verbose but every sentence adds value. Could be tighter but still effective.
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?
Given 0% schema coverage, no annotations, but output schema exists, the description adequately explains tool behavior and parameters. It covers the two modes of operation and key constraints. Lacks return value details, but output schema presumably covers that. Overall sufficient for an AI agent.
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 description explains `id`, `openbox`, `space` alias with usage examples. It clarifies `space=` is alias for `openbox=`. The `help` parameter is not described, but it's self-explanatory. Overall adds significant meaning beyond schema.
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 clearly states the tool's purpose: 'bring an openbox's footprints into the home base' with two distinct use cases (cache refresh vs full import). It distinguishes from sibling tool `local()` for intra-workspace moves, achieving high specificity.
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?
Provides explicit when-to-use guidance: for cache refresh without home base change, and for full import with provenance. It also tells when not to use: 'moving items between local projects/workspaces is local(), not import()'. This is exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
initB
init(blueprint='') — set up .linklore in this directory (starts local footprint memory).
init() basic setup
init(blueprint='X') apply a blueprint
project_dir: set up .linklore in another folder (creating a boundary is init-only). setting up there doesn't change this session's base project — to keep working there, config(action='pin').
| Name | Required | Description | Default |
|---|---|---|---|
| help | No | ||
| blueprint | No | ||
| project_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It notes that using project_dir does not change the session's base project, which is a behavioral caveat. But it does not disclose side effects, error cases, or resource impact (e.g., file creation).
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?
The description is somewhat unstructured, mixing usage patterns and parameter notes. It is not overly verbose but could be more streamlined. The front-loaded purpose is clear.
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?
Given the presence of an output schema, return values are covered. However, the description lacks completeness on prerequisites, error handling, or how init fits into the larger tool ecosystem. It gives enough for basic use but not full operational context.
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?
With 0% schema description coverage, the description compensates by explaining blueprint (applies a blueprint) and project_dir (sets up in another folder, boundary effect). It omits the help parameter, but the other two are clarified beyond schema defaults.
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 clearly states the tool initializes .linklore and starts local footprint memory. It provides usage patterns (basic and with blueprint). However, it does not explicitly distinguish from sibling tools, but the unique function is evident.
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?
The description mentions that setting up in another folder via project_dir is init-only and that to persist working there one should use config(action='pin'). However, it lacks explicit when-to-use or when-not-to-use guidance relative to siblings like config or doc_setup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkA
link(a, b, action=) — connect two items (dc↔dc / lr↔lr / dc↔lr auto-detected, prefix matching OK). a/b may also be a file path or an existing title — non-id-shaped values are auto-classified (same as links= in add/edit). Undo (inverse) = unlink(a, b) — same arguments.
action has 3 modes (extends the member/config(action=) convention):
action='related' (default, same if omitted) → mutual link (symmetric). Same as link(a, b) — dc↔dc/lr↔lr/dc↔lr
action='flow' → not a mutual link but document order (a→b direction, doc↔doc only): read a, then b.
action='supersede' → "a is replaced by b" — a=old (dropped, head=False/dropped), b=target (alive, must be an existing item — none is created). lore↔lore or doc↔doc only.
| Name | Required | Description | Default |
|---|---|---|---|
| a | No | ||
| b | No | ||
| help | No | ||
| action | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explains symmetric linking, directional flow, and replacement semantics for supersede. It also describes auto-classification of non-id values and the undo behavior. No contradictions with annotations (none provided).
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?
The description is well-structured with bullet-like lines and front-loads the core function. It is somewhat lengthy but every sentence adds value. A slight reduction could improve conciseness, but it is not overly verbose.
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?
Given the complexity (multiple action modes, parameter auto-detection), the description covers most aspects. However, it lacks explanation of the 'help' parameter, default values, output format, and potential error conditions. The existing output schema mitigates some return value ambiguity.
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 schema has 0% description coverage, so the description must explain parameters. It describes 'a' and 'b' as items, file paths, or titles, and details the 'action' parameter's three modes. The 'help' parameter is not mentioned, but it is a minor omission.
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 clearly states the tool's purpose: 'connect two items'. It specifies the types of items (dc↔lr, etc.) and mentions prefix matching and auto-detection. It distinguishes the tool from sibling 'unlink' by explicitly naming it as the inverse operation.
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?
The description explains the three action modes (related, flow, supersede) and provides guidance on when to use each. It also notes that the default action is 'related' and that the inverse is 'unlink'. However, it does not compare to other sibling tools like 'add' or 'edit'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
localA
local(action, id, to='workspace-path', from_dir='') — directly operate on another LinkLore project on the same disk (works on both lore and doc).
action='move' move to another workspace (source deleted; createdAt/files/tags/level/status/body/items preserved) action='copy' copy to another workspace (source kept, same id retained — rejected if the target already has it) action='show' view another workspace's content (read-only, from_dir required — query/tag/type/status passed through) ⚠️ For 2+ items, the default is preview only — use confirm=True to execute (a single item runs immediately). cf. sharing across a server/team is the openbox (send/import) — local() never talks to a backend, it only works within your own disk. ⚠️ only between projects you own — if the target is genuinely someone else's/another team's, don't use local() just because you have filesystem access; go through send() (the recipient must import() — a review gate).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| to | No | ||
| tag | No | ||
| help | No | ||
| type | No | ||
| query | No | ||
| action | No | ||
| status | No | ||
| confirm | No | ||
| from_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses behavioral traits: preview-only for 2+ items, need confirm=True, only between owned projects, no backend communication. No contradictions with annotations.
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?
Description is dense but well-structured with bullet points for actions and cautions. Front-loaded function signature. Could be slightly more concise, but overall effective.
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?
Given 10 parameters, no annotations, and an output schema (not described), the description covers essential constraints, actions, and multi-item behavior. Still missing explanations for a few parameters like 'help'.
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%, so description must compensate. It explains action, id, to, from_dir, confirm, and pass-through parameters, adding meaning beyond schema. However, 'help' parameter is not explained, and default values are implied but not explicit.
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?
Description clearly states it operates directly on another LinkLore project on the same disk, with actions move, copy, show. Distinguishes from sibling tools by specifying it is local-only and not for server/team sharing.
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?
Explicitly states when to use (local disk operations) and when not to use (use send/import for others' projects). Provides clear alternatives and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logD
[read-only] log() id, period('Nh' hours|'Nd' days|'YYYY-MM-DD' UTC), sort=oldest, max, plumbing: help
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| max | No | ||
| help | No | ||
| sort | No | ||
| period | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only behavioral hint is '[read-only]', but without annotations, this is insufficient. No disclosure of side effects, permissions, or output behavior.
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?
Very concise to the point of being cryptic. While brief, it sacrifices clarity for brevity.
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?
Given 5 parameters, 0% schema coverage, and no annotations, the description is severely incomplete. It does not explain the output schema or how to effectively use the tool.
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%, so description must compensate. It provides shorthand syntax for period and sort, but does not explain the meaning or constraints of parameters like id, max, help. Missing semantic context.
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 uses 'log()' without specifying what kind of log (e.g., system log, error log). The parameters list is cryptic and does not clarify the purpose. It fails to differentiate from sibling tools.
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 guidance on when to use 'log' vs alternatives. No context about appropriate scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memberA
member(action) — openbox (shared space) members and permissions. An openbox is a project's shared space (invite-only, not 'public').
member('new', openbox=, display_name=) create an openbox (you = owner)
member('invite', openbox=, role=, kind=) issue an invite code (owner). kind='project' = project member
who= — reissue invite (targets an existing project identity, rotates the session)
member('join', code=, display_name=) join with an invite code (first join)
member('subscribe', openbox=, url=) connect an openbox you're already a member of via URL (authenticates as your identity)
member('list', openbox=) list members
member('role', openbox=, who=, role=) change a member's role (viewer↔member, owner)
member('transfer', openbox=, who=) transfer owner (who=member_id, double confirmation)
member('leave', openbox=) leave yourself (owner gets 409, transfer first) remove: rm(member='', openbox='') delete the whole openbox: rm(openbox='') — owner only, double confirmation (openbox= is an alias for name= — both work.)
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| who | No | ||
| code | No | ||
| help | No | ||
| kind | No | ||
| name | No | ||
| role | No | ||
| action | No | ||
| openbox | No | ||
| expires_h | No | ||
| display_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: owner-only operations, double confirmation for transfer, error on leave for owner (409), and side effects like session rotation on reissue.
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?
The description is long but well-structured with bullet points and clear sections. It could be slightly more concise, but every part adds value for the tool's complexity.
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?
Given the tool's complexity (11 parameters, multiple actions), the description covers all necessary context: openbox concept, action types, parameter usage, error conditions, and alternative tools. Output schema presumably covers return values.
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 input schema has 0% description coverage, but the description defines all parameters via usage examples and explanations (e.g., action, openbox, role, kind, who, code, url). It fully compensates for missing schema descriptions.
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 clearly states the tool handles openbox (shared space) members and permissions, with a one-line summary and detailed action list. It distinguishes the tool's scope from siblings by explicitly mentioning removal via 'rm' tool.
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?
The description provides explicit when-to-use guidance for each action, including when to delegate to the 'rm' tool for deletion, and lists prerequisites (e.g., owner-only for invite, transfer has double confirmation).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pullA
pull(id) — restore the home base from my server (works across devices too). Like git pull: server → local. To bring things from an openbox use import — pull is for my server only. If local is newer/same it's skipped; a real conflict (both sides changed) is shown separately (local kept).
pull() my whole server → home base
pull(id='lr-x'|'dc-x') restore a selection (moving items between local workspaces is local(), not pull())
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| help | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description must compensate. It explains the tool's behavior well: it restores from server to local (like git pull), handles conflicts (skips if local newer, shows conflict otherwise), and works across devices. However, it does not explicitly state whether the operation is destructive or if authentication is required, though the comparison to git pull and conflict handling imply safety mechanisms.
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?
The description is well-structured: opening with purpose, then sibling differentiation, conflict handling, and usage examples. Each sentence adds value. It could be slightly more concise, but overall it is efficient and clear.
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 two parameters, no annotations, and an output schema (not shown), the description covers core functionality, conflict handling, and parameter usage. It explains what happens with different invocations (whole server vs selection). It does not detail return values, but output schema presumably covers that. The description is fairly complete for understanding the tool's behavior.
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 add meaning. It explains the 'id' parameter with examples ('pull(id='lr-x'|'dc-x')'), showing it's optional and can select specific items. The 'help' parameter is not explained, but its meaning is conventional. The description adds significant value beyond the schema's bare types.
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 clearly states the tool's action ('restore the home base from my server') and compares it to 'git pull', which is a familiar concept. It also distinguishes from sibling tools 'import' and 'local', providing specific when-to-use guidance. The verb 'restore' and resource 'home base from server' are precise.
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?
The description explicitly tells when to use this tool vs alternatives: 'To bring things from an openbox use import — pull is for my server only' and 'moving items between local workspaces is local(), not pull()'. It also explains behavior in conflict scenarios ('If local is newer/same it's skipped') and provides usage examples for different arguments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pushA
push(id) — upload the home base to my server (visible to me only). Like git push: local → server. Not for sharing — to share with others use send (push has no target argument by design, so it cannot share).
push() the whole home base → server
push(id='lr-x'|'dc-x') a single item
push(id=['lr-x','dc-y']) a batch Take down (inverse): rm(sent='lr-x'|'dc-x') — removes the server copy only, home base untouched. (moving items between local workspaces is local(), not push())
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| help | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses that the upload is to a personal server only, provides usage patterns, and clarifies limitations like no sharing. However, it does not mention behavior on conflicts or overwrites, which are minor gaps.
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?
The description is concise but uses bullet points and examples effectively. It front-loads the purpose and provides well-structured usage patterns. Minor redundancy could be trimmed, but overall 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?
Given the presence of an output schema, the description does not need to detail return values. It covers purpose, parameters, usage, and differentiation from siblings, making it fairly complete. Lacks only minor details like conflict handling.
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?
With 0% schema description coverage, the description excellently explains the 'id' parameter with concrete examples (single item, batch, whole), compensating fully for the schema's lack of documentation.
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 clearly states it uploads the home base to 'my server' visible only to the user, and explicitly distinguishes itself from 'send' for sharing and 'local' for moving items, making the purpose unambiguous.
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?
The description provides explicit guidance on when to use this tool (push to own server) and when not (for sharing, use 'send'; for moving items, use 'local'), and even mentions the inverse operation 'rm'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reportB
report(msg) — send feedback/a bug straight to the team. Works whether or not you're logged in (if logged in, your identity is attached automatically — never forced).
| Name | Required | Description | Default |
|---|---|---|---|
| msg | No | ||
| help | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description reveals key behavioral traits: works offline, attaches identity when logged in but never forced. This adds value beyond the schema.
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?
Two sentences, no waste, front-loaded with action. Concise and well-structured.
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?
The description is mostly complete for a simple feedback tool, but the omitted parameter semantics for 'help' and lack of return value context (despite output schema existing) leave gaps.
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%, but the description only mentions 'msg' without explaining its purpose. The 'help' boolean parameter is not mentioned at all, leaving its meaning unclear.
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 clearly states the tool sends feedback or a bug to the team. It uses a specific verb and resource, though it does not explicitly differentiate from sibling tools.
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?
The description provides guidance on when to use (anytime, regardless of login) and behavior for logged-in users, but does not mention when not to use or alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restoreB
restore(id) — recover trashed lore/doc. no id lists the trash.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| help | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions recovery and listing trash, but does not cover safety, permissions, side effects (e.g., whether recovery removes from trash), or success/failure responses.
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?
The description is concise with one sentence, front-loading the core purpose. However, it omits the 'help' parameter, so some conciseness is at the cost of completeness.
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?
Given the tool's simplicity and the presence of an output schema, the description covers the main functionality but lacks details on the 'help' parameter and output behavior. It is adequate but not fully complete.
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%. The description adds meaning for the 'id' parameter (optional, lists trash if omitted) but completely ignores the 'help' parameter, leaving its purpose 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?
The description clearly states the verb 'recover' and the resource 'trashed lore/doc', and explains the behavior when no id is provided (lists trash). This distinguishes it from sibling tools like 'rm' (remove) and 'cleanup' (delete trashed).
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?
The description implies usage for recovering trashed items and lists trash when no id is given, but does not explicitly state when to use this tool versus alternatives or provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rmA
rm — unified delete. Target is chosen by argument (action= is an explicit alternative, auto-detected by which argument is present when omitted).
Deleting items (lore/doc) — id is a single value or a list (batch)
trash (recoverable, default) →
rm(id)→ restore(id) to recoverpermanent delete (unrecoverable) →
rm(id, force=True)batch delete →
rm(id=['lr-x','dc-y'], force=True)mark as dropped (stays in search) →
edit(id, status='dropped')supersede (keep old + new head) →
add(type='lore'|'doc', relates=old_id, ...)
Taking down something you sent (reverse of push/send, doesn't touch the source of truth)
rm(sent='lr-x'|'dc-x', openbox='ai-team')take down from an openbox (sender only)rm(sent='lr-x'|'dc-x')take down from my server(or action='sent', sent= is still required — action= is just the explicit form)
Removing a member (openbox owner only)
rm(member='<member_id>', openbox='ai-team')(or action='member')
Deleting an entire openbox (shared space) (owner, unrecoverable → always asks to confirm)
rm(openbox='ai-team')1st call: returns a warning+question (nothing executes)rm(openbox='ai-team')identical 2nd call → that itself is the confirmation, actually deletes (no confirm= param)(space= is an alias for openbox=)
(or action='openbox', openbox= is still required)
⚠️ action='openbox' cannot combine with id= (explicit rejection) — deleting an item and deleting an entire shared space are separate operations. id alone (action unspecified) goes to regular item delete.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| help | No | ||
| sent | No | ||
| force | No | ||
| space | No | ||
| action | No | ||
| member | No | ||
| openbox | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses recoverability of trash, unrecoverability of permanent delete, confirmation flow for openbox deletion, auto-detection of action, and that action='openbox' cannot combine with id=. No contradictions.
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?
Well-structured with headings and bullet points, front-loaded with core purpose. However, somewhat verbose; could be trimmed slightly without losing essential information.
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?
Given the high complexity (8 parameters, multiple operations) and lack of annotations, the description addresses all relevant aspects: use cases, parameter roles, behavioral nuances, and alternatives. Output schema likely covers return values, so omission is acceptable.
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 description thoroughly explains all parameters: id (string or list for batch), force (permanent delete), sent (take down), member (remove member), openbox/space (space alias), action (explicit alternative, auto-detected when omitted), help (likely debug). Adds meaning beyond schema titles.
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 clearly states 'rm — unified delete' and explains multiple deletion contexts (items, sent items, members, openboxes). It distinguishes from sibling tools like edit, add, and restore by specifying when to use those instead.
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?
Provides explicit guidance for each scenario: trash vs permanent delete via force flag, batch delete with list, mark as dropped via edit, supersede via add, take down with sent and openbox parameters, remove member, and delete openbox with two-call confirmation. Also warns against combining action='openbox' with id=.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendA
send(id, openbox) — share a footprint to an openbox (visible to others). Both id and openbox are required.
send(id='lr-x'|'dc-x', openbox='ai-team') share one item
send(id=['lr-x','dc-y'], openbox='ai-team') a batch Not my-server backup — that's
push. The home base is untouched — this copies into the openbox. Take down (inverse): rm(sent='lr-x'|'dc-x', openbox='ai-team') — sender only, home base untouched. (space= is an alias for openbox= — both work)
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| help | No | ||
| space | No | ||
| openbox | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the home base is untouched (copy), visible to others, supports batch, and aliasing. However, it does not mention permissions, rate limits, or error handling.
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?
The description is organized with a summary line, examples, contrasts, and alias note. It is slightly verbose but front-loads key info and uses bullet-point structure effectively.
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?
Given the absence of annotations and an output schema existing, the description adequately covers main use cases, batch mode, and inverse operation. It lacks details on output format and edge cases but is complete enough for typical usage.
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%, so description must compensate. It explains id (with format examples), openbox (with examples), and space as alias. The help parameter is left unexplained, but overall adds significant meaning beyond the schema.
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 states 'share a footprint to an openbox (visible to others)' with verb and resource clearly defined. It also distinguishes from sibling tools like push and rm.
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?
The description provides explicit when-to-use context, contrasts with push for backup, and mentions the inverse rm command. It also gives concrete examples showing both single and batch usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
showB
[read-only] show() — target/scope: query·type·openbox / filters: tag·level·status·file·period('Nh' hours|'Nd' days|'YYYY-MM-DD' UTC)·source_id / result shape: sort·max·oneline·superseded / mode: action / plumbing: help
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | ||
| tag | No | ||
| file | No | ||
| help | No | ||
| sort | No | ||
| type | No | ||
| level | No | ||
| query | No | ||
| action | No | ||
| period | No | ||
| status | No | ||
| oneline | No | ||
| openbox | No | ||
| source_id | No | ||
| superseded | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
States '[read-only]' upfront, indicating no mutation. No annotations are provided, so the description carries the burden. However, it lacks details on authentication, rate limits, or side effects beyond the read-only hint.
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?
Extremely concise, single line, well-structured with delimiters. Every element provides value without repetition.
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?
Given 15 optional parameters and no schema descriptions, the description offers a high-level overview but lacks completeness. An output schema exists, reducing the need to explain return values, but missing parameter details and usage context hurt completeness.
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%; the description groups parameters (target/scope, filters, result shape, mode, plumbing) and adds format hints for 'period'. This compensates partially, but individual parameter meanings (e.g., 'query', 'openbox') remain unclear.
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 clearly indicates a read-only operation for displaying items with filters and options. It specifies targets, filters, and result shape, distinguishing it from sibling tools by its generic listing role.
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 guidance on when to use this tool versus alternatives like 'brief' or 'report'. The description only lists parameters without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusA
status() — detects code↔doc sync drift (git-diff based). Not for reading lore/doc content → use show()/brief().
since, action(''|'ack'|'reset'), ack, reset, help. (2026-07-09: the dead params auto=/sync= and ack_all= were removed — ack='all' does the same job, matching the reset='all' convention)
| Name | Required | Description | Default |
|---|---|---|---|
| ack | No | ||
| help | No | ||
| reset | No | ||
| since | No | ||
| action | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries full burden. Discloses git-diff based detection and parameter behavior changes (removed dead params, ack='all' workaround). Does not mention side effects, auth needs, or granular behavior, but drift detection is understood as read-only.
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 line for purpose, then a list of parameters, and a note about removed params. Front-loaded and relatively concise. The parenthetical note adds necessary context but is slightly cryptic.
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 5 parameters and existence of output schema (per context signal), description gives minimal context beyond purpose and parameter options. Could explain what the tool returns or how to interpret results, but output schema likely covers return values.
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 has 0% description coverage, so description must compensate. Adds meaning for action, ack, reset by listing options and explaining ack='all'. Leaves 'since' and 'help' unexplained. Partially compensates for missing schema descriptions.
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 clearly states it detects code↔doc sync drift using git-diff, distinguishing it from show()/brief() for reading content. Specific verb and resource with sibling differentiation.
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?
Explicitly says not for reading lore/doc content and points to show()/brief() as alternatives. Also mentions action parameter options and ack='all' behavior. Could be more explicit about when to use each action, but provides good context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlinkB
unlink(a, b, action=) — disconnect two items. Symmetric with link() (action='' default|'flow', also accepts file paths the same way).
| Name | Required | Description | Default |
|---|---|---|---|
| a | No | ||
| b | No | ||
| help | No | ||
| action | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description discloses symmetric behavior with link() and file path acceptance. But lacks details on destructiveness, side effects, or error conditions.
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?
Extremely concise: one sentence plus parenthetical. Front-loaded function signature. No wasted words.
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?
Output schema exists, but tool is a mutation with no annotations. Description fails to mention prerequisites, exact behavior, or what 'disconnect' entails. Incomplete for a mutation tool.
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?
With 0% schema coverage, description must compensate. It explains a, b, and action (default, 'flow') but omits 'help' parameter. Adds some meaning but incomplete.
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?
Description states 'disconnect two items' which is a specific verb+resource. However, it does not differentiate from sibling tools like 'rm' or 'cleanup' that might also remove connections.
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?
Mentions symmetry with link() and action defaults, implying when to use versus link. But no explicit exclusions or guidance on alternatives among siblings.
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. Dates show when Glama detected each change.
24 tool updates
- First observed
add - First observed
brief - First observed
cleanup - First observed
config - First observed
doc_flow - First observed
doc_map - First observed
doc_rollup - First observed
doctor - First observed
edit - First observed
import - First observed
init - First observed
link - First observed
local - First observed
log - First observed
member - First observed
pull - First observed
push - First observed
report - First observed
restore - First observed
rm - First observed
send - First observed
show - First observed
status - First observed
unlink
TDQS
Most tools have distinct purposes, but a few overlap conceptually, such as 'doc_flow' vs 'doc_map' for document link viewing, and 'show' vs 'brief' vs 'status' for display. However, detailed descriptions help agents differentiate.
Tool names consistently use snake_case but mix verbs (e.g., push, pull) and nouns (e.g., config, doc_flow). The pattern is not strictly verb_noun, but the naming is readable and predictable given the domain.
With 24 tools, the server covers a broad scope (CRUD, linking, sharing, diagnostics). While this is on the high side, it is justified by the feature set, but could potentially be streamlined.
The tool surface covers most lifecycle operations for lore/documents, linking, sharing, and project management. Minor gaps exist, such as no explicit rename tool, but the core workflows are supported.
Maintenance
Related MCP Connectors
One memory, every AI. A shared, user-owned markdown memory your AI clients read and write over MCP.
shared AI-context layer for teams — persistent memory your agents search and update over MCP
System-of-record notebook for AI coding agents: pages, datastores, tasks, skills over MCP.
The project brain for AI coding agents — memory, decisions, sprints, knowledge base via MCP.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP-native, local-first memory for coding agents that turns real sessions into reusable decisions, gotchas, and domain knowledge.176MIT
- AlicenseBqualityFmaintenanceMemory for AI coding agents. Persistent code graph + AI architecture diagrams. 32 MCP tools32695MIT
- AlicenseAqualityCmaintenanceLocal, searchable project memory for AI coding agents. Markdown source of truth, MCP interface, safe structured updates39Apache 2.0
- FlicenseNot gradedqualityBmaintenanceLocal-first cross-agent memory for AI coding agents. Persistent, shared memory over MCP — what you tell one agent can be recalled by another — with all data stored in a single local SQLite file, no cloud and no API keys.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/linklore/linklore-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server