A mesh for multi-agent collaboration over a single Markdown folder
37 tools with consistent naming (verb_noun pattern: mesh_note_get, mesh_task_list, etc.) and basic descriptions present. However, descriptions are uniformly terse (15-40 chars), falling below the 50-200 char LLM-optimized baseline. Parameter schemas are visible and typed, but lack depth: no enums for constrained inputs (e.g., 'sort' accepts free-form strings instead of enum [updated|created|title]), no min/max bounds on numeric parameters, no format specifications. Output schemas are not documented in the source. Error handling is minimal, no recovery guidance or actionable error messages visible. Tool composition is sound (single responsibility), but parameter descriptions are generic ('The note ID' vs 'The unique identifier for the note; obtain via mesh_note_list or mesh_search'). No tool annotations (readOnlyHint, destructiveHint) despite clear risk stratification (READ_ONLY vs WRITE). Missing dependency hints and chaining guidance.
Attach an asset to a note or task
Get an asset by ID
List assets with optional filtering and sorting
Build context from related notes and tasks
Query the dependency graph
Check the health and status of the mesh server
Append content to an existing memory
Get a single memory by ID
List memories with optional filtering and sorting
Descriptions uniformly terse (15-40 chars, well below 50-200 char LLM-optimized baseline). Examples: 'Get a single note by ID', 'List notes with optional filtering and sorting'. Lack context for tool selection, prerequisites, and when to use vs similar tools.
No enums for constrained inputs. 'sort' parameter accepts free-form strings ('updated', 'created', 'title') but is typed as string with no enum constraint. LLMs may hallucinate invalid sort keys. Same issue affects 'direction' in mesh_graph, 'kind' in mesh_memory_new.
No output schemas documented. Tools return structured data (notes, tasks, memories) but response format is not visible in source. LLMs cannot plan downstream calls or extract required fields (e.g., does mesh_note_list return 'id' or 'note_id'?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
Create a new memory
Recall memories matching a query
Update memory metadata
Append content to an existing note
Get a single note by ID
List notes with optional filtering and sorting
Create a new note
Update note metadata and tags
Get project information and structure
Get recent activity across the vault
Append content to a scratch file
Get a scratch file by ID
List all scratch files
Set or create a scratch file
Search across notes, tasks, memories, and assets
Initialize a session with context and recent memories
Append content to an existing task
Add a blocking dependency to a task
Cancel a task
Claim a task as the current owner
Mark a task as finished
Get a single task by ID
List tasks with optional filtering and sorting
Create a new task
Get the next available task to work on
Release a claimed task
Remove a blocking dependency from a task
Update task metadata
No tool annotations despite clear risk stratification. 37 tools marked READ_ONLY or WRITE in metadata, but no readOnlyHint or destructiveHint in schema. Agents cannot infer safety/idempotency from tool definitions alone.
No numeric bounds or format specs. 'limit' parameters lack min/max (e.g., mesh_note_list limit could be 1 - 1000?). 'id' parameters lack format hints (UUID, alphanumeric, etc.). Invites invalid input and wasted API calls.