Skip to main content
Glama
alshyra

Sherlock's second brain

sherlock-second-brain

PyPI - Version CI

Named after the famous detective of Baker Street who inspired this project: the same way, we run rigorous investigations (symptoms, clues, hypotheses, evidence, conclusion) to debug, analyze code, and remember what we learn across multiple projects.

MCP server + skill for Sherlock's second brain: validated knowledge lives in MD fiches and skills; everything not yet validated lives in cases (JSON investigation files for debugging and troubleshooting). Standalone notes worth remembering without an investigation live in memories (MD + YAML frontmatter). A resolved case is promoted into a fiche or a skill through the MCP; a memory can also be promoted into a fiche.

source of truth (files)                      derived index (rebuildable)
────────────────────────────────────             ────────────────────────────
<data_dir>/
  cases/<case-id>/case.json          ──→   vector/ (chromadb, gitignored)
  cases/<case-id>/evidence/*.log           hybrid search: vector (Chroma)
  memories/<id>.md                           + lexical (RRF)
  fiches/*.md
  skills/<slug>/SKILL.md

Stack

  • Python 3.12+, uv

  • FastMCP (stdio)

  • ChromaDB + fastembed (vector index, multilingual MiniLM-L12 model)

  • jsonschema (case validation)

  • jinja2 (rendering of promoted fiches / skills)

  • PyYAML (memory frontmatter)

  • Hexagonal architecture: domain/ (pure pydantic) · application/ (use cases + ports) · adapters/ (filesystem, chroma, lexical, hybrid RRF, MCP DTO, templates)

Related MCP server: brain-mcp

Installation (in a project)

uv init
uv add sherlock-second-brain

Or from the repo:

cd sherlock-second-brain
uv sync

Two ways to run it

Your data (cases, fiches, skills, vector index) always lives on the machine where the server process runs. The server is local-first (stdio), so you choose where that machine is:

A. Self-hosted (data stays on your machine)

Install the package and run the stdio server locally — no third party ever touches your data. Configure SHERLOCK_BRAIN_DATA_DIR to choose where the files live (default ~/sherlock-second-brain-data).

B. Managed on Glama (opt-in)

Deploy your own instance on Glama's hosting from the Glama listing: Glama builds the image, wraps the stdio transport into Streamable HTTP, and mounts a persistent volume at /data. Set SHERLOCK_BRAIN_DATA_DIR=/data so your knowledge survives redeploys. This is a paid managed option — the code itself is free and open source (MIT).

Configuration

Variable

Role

Default

SHERLOCK_BRAIN_DATA_DIR

Root data directory (cases + memories + kb + vector)

~/sherlock-second-brain-data

Wire the MCP server into opencode

Add to ~/.config/opencode/opencode.json:

{
  "mcp": {
    "sherlock-second-brain": {
      "type": "local",
      "command": ["/opt/sherlock-second-brain/.venv/bin/python", "-m", "sherlock_second_brain.server"],
      "enabled": true,
      "environment": {
        "SHERLOCK_BRAIN_DATA_DIR": "/opt/infra/kb"
      }
    }
  }
}

Install the agent globally

The agent is versioned in this repo (agent/sherlock-second-brain.md). To make it available to all opencode agents:

ln -s /opt/sherlock-second-brain/agent/sherlock-second-brain.md ~/.config/opencode/agent/sherlock-second-brain.md

On another machine, clone the repo then create the same symlink pointing to the checkout. Restart opencode after installation.

MCP tools

Cases

Tool

Role

case_create

Create an investigation (unvalidated topic)

case_get / case_list

Read / list (status, tag filters)

case_search

Semantic search (cases + KB)

case_update

Add findings / steps / hypotheses / conclusion / hypothesis result

case_add_evidence

Attach evidence (log, output, note)

case_set_status

open / in_progress / resolved / abandoned

case_delete

Delete a case and its evidence

case_promote

Promote a resolved case → fiche or skill

Memories

Tool

Role

memory_add

Add a standalone note to remember (no case)

memory_get / memory_list

Read / list memories (tag filter)

memory_search

Semantic search restricted to memories (hydrated)

memory_update

Update summary / content / tags / references / source

memory_delete

Delete a memory

memory_promote

Promote a memory → validated fiche

KB

Tool

Role

fiche_list / fiche_read / fiche_write / fiche_delete

CRUD validated fiches

skill_list / skill_read / skill_write / skill_delete

CRUD validated skills

index_rebuild

Rebuild the vector index from source files

case_search (and memory_search) combines two engines via Reciprocal Rank Fusion (adapters/hybrid.py) over four sources: fiches, cases, skills and memories.

  • Vector (adapters/chroma.py): multilingual embeddings (MiniLM-L12, ~0.22GB, French included), persistent collection in vector/, rebuildable via index_rebuild.

  • Lexical (adapters/lexical.py): token overlap, zero dependency — a doc relevant for an exact term but missed by the vector engine still surfaces.

RRF fusion: score(d) = 1/(k + vector_rank) + 1/(k + lexical_rank), k = 60. The first index_rebuild downloads the model.

Memories

A memory is a low-friction capture ("remember that the NAS runs Fedora 44"), with no case workflow. It is stored as memories/<id>.md with YAML frontmatter (metadata) and a free-form markdown body. Memories are indexed on every mutation (create included) so they are immediately searchable. A memory is not validated; promote it with memory_promote once it becomes validated knowledge.

Case schema

Defined in src/sherlock_second_brain/schema/case.schema.json — source of truth, shipped inside the package. Every case written through the MCP is validated against this schema (works from PyPI installs too).

Tests

uv run ruff check src/ tests/        # lint
uv run ty check                      # type checking
uv run pytest tests/ -v              # tests

Available Tools

14 tools
case_add_evidenceC

Attach a piece of evidence (log excerpt, output, note) to a case.

ParametersJSON Schema
NameRequiredDescriptionDefault
case_idYes
contentYes
summaryYes
filenameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only states the mutation action ('Attach') without revealing side effects, permissions, idempotency, or how the evidence is stored/associated. This is insufficient for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no redundant words. It is efficient and front-loaded, though it could be slightly expanded without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is too thin for a mutation tool with 4 parameters and no annotations. Although an output schema exists, it does not compensate for missing parameter semantics, usage guidance, or behavioral context, making the tool description incomplete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It gives examples of what 'content' might be (log excerpt, output, note) but does not explain the roles of case_id, summary, or filename, leaving agents to guess their meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Attach' with the resource 'evidence' and target 'a case', clearly distinguishing it from siblings like case_create or case_update. The parenthetical examples (log excerpt, output, note) add useful specificity without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not state when to use this tool versus alternatives like case_update or case_create, nor does it offer any context about prerequisites, complementary tools, or when adding evidence is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

case_createA

Create an investigation case. Use this when a topic is not yet validated.

tags and references are comma-separated strings.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYes
tagsNo
titleYes
contextNo
referencesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for behavioral disclosure. It only mentions the parameter format and the 'not yet validated' condition, but omits details about creation side effects, return values, permissions, or default state. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no fluff. The first sentence states the core purpose, and the second provides a targeted parameter hint. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 does not provide adequate context for a create operation with 5 parameters and no annotations. It lacks prerequisites, expected outcomes, error handling, or any indication of the case lifecycle beyond the 'not yet validated' usage hint. The description is too sparse to be complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only adds meaning for 'tags' and 'references' by clarifying they are comma-separated strings, while leaving 'title,' 'goal,' and 'context' entirely to inference. This partial coverage is insufficient given the low schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create an investigation case,' which is a specific verb and resource. This distinguishes it from sibling tools like case_update and case_promote, and the phrase 'investigation case' adds domain specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides a usage condition: 'Use this when a topic is not yet validated.' This gives clear context for when to invoke the tool, but it does not explicitly mention alternatives or when-not-to-use scenarios, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

case_getA

Read a case by its id (e.g. case-2026-08-07-001).

ParametersJSON Schema
NameRequiredDescriptionDefault
case_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the disclosure burden. The verb 'Read' clearly indicates a non-destructive operation, and the example ID provides context about the resource. However, it omits details like error handling (e.g., not found) or authorization, but for a simple getter this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with a helpful example. It is front-loaded with the action ('Read') and resource ('case'), and every word earns its place. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (1 parameter, output schema exists), the description is adequately complete. It identifies the exact use case (fetching by ID) and provides an example. Missing explicit comparison to sibling tools, but the overall context is sufficient for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds value by providing an example ID format ('case-2026-08-07-001') which clarifies the expected string structure. However, it doesn't elaborate on the semantics beyond that, leaving some ambiguity about whether the ID is the full path or a simple key.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Read a case by its id' with a concrete example ID format ('case-2026-08-07-001'). This distinguishes it from sibling tools like case_list (listing) and case_search (searching), 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you have a specific case ID, which is clear context. It doesn't explicitly name alternatives (e.g., 'use case_search to find cases by criteria'), but the phrase 'by its id' effectively communicates that this is the direct-fetch tool, distinct from list/search variants.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

case_listA

List cases, optionally filtered by status (open/in_progress/resolved/abandoned) and tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation via 'List' and documents the filter options, but it does not mention any other behavioral traits such as pagination, ordering, rate limits, or scope constraints. The description is adequately transparent for a simple list operation, but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the core action ('List cases') and immediately adds the filtering options. Every word earns its place, and there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has a simple two-parameter schema, an existing output schema (so return values need not be described), and a clear list operation, the description is nearly complete. It could be improved by mentioning ordering or pagination behavior, or by contrasting with case_search, but for its simplicity, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides no descriptions for the parameters (0% schema coverage), so the description must compensate. It clearly explains that both parameters are optional filters, and it enumerates the valid values for status (open/in_progress/resolved/abandoned). The tag parameter is described as a filter, which adds meaning beyond the raw schema, though it does not specify matching semantics (e.g., exact vs. partial).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'List cases' which is a specific verb+resource, clearly indicating it returns a collection of cases. It also mentions optional filters, which adds specificity. However, it does not explicitly distinguish itself from sibling tools like case_search or case_get, though the naming and phrasing make the purpose reasonably clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: to list cases with optional filtering by status and tag. However, it provides no explicit guidance on when to use this tool versus alternatives like case_search or case_get. There are no stated exclusions or alternative recommendations, so while the context is clear, the guidance is limited to implied usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

case_promoteA

Promote a resolved case into validated KB: target = fiche or skill.

Generates the MD/SKILL.md from the case, writes it to the KB and marks the case.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
case_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the disclosure burden. It reveals side effects: writes MD/SKILL.md, writes to KB, and marks the case. This goes beyond a simple 'promote' and gives useful behavioral context, though it doesn't mention overwrite behavior or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main purpose and followed by specific actions. Every sentence is essential with no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core behavior thoroughly for a simple tool. It explains what it generates, where it writes, and that it marks the case. It doesn't detail return values or error cases, but given the output schema exists (not shown) and the tool's moderate complexity, this is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description explains 'target = fiche or skill', clarifying the valid values for the target parameter. case_id is not explicitly described but is self-explanatory. This adds some meaning beyond schema, but lacks detail on the 'marks the case' effect or any parameter constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Promote a resolved case into validated KB' with specific actions 'Generates the MD/SKILL.md from the case, writes it to the KB and marks the case.' It distinguishes from siblings like case_set_status or fiche_write by describing the promotion workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a case is 'resolved' and you want to validate it into the KB, with 'target = fiche or skill' indicating the KB entry type. It doesn't explicitly mention alternatives like fiche_write, but the context is clear enough for most agents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

case_set_statusA

Change a case status: open / in_progress / resolved / abandoned.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
case_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action 'Change' and the allowed statuses, but does not mention permissions, validation behavior, side effects, whether the change is reversible, or how errors are handled. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words. It conveys the core purpose and the allowed values efficiently, earning a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (2 required params, output schema present, no nesting), the description covers the core functionality and enumerates status options. However, it fails to address when to use this vs. the overlapping sibling case_update, and it provides no context about edge cases or expected behavior. It is minimally complete but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does by explicitly enumerating the valid status values, which is essential information missing from the schema. The case_id parameter is self-explanatory from its name and the context. Little else is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Change') and the resource ('case status'), and lists the allowed values (open/in_progress/resolved/abandoned). This makes the tool's specific purpose unambiguous and distinguishes it from the broader case_update sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given about when to use this tool versus alternatives. While the name and scope imply it is for status changes only, there is no mention of exclusions or when to prefer case_update over this tool. The usage context is only weakly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

case_updateA

Append to a case.

fields supports:

  • finding (str): append to findings

  • step_action (str): append a step (with optional step_result)

  • step_result (str): result for the step being appended

  • conclusion (str): set conclusion

  • hypothesis_statement / hypothesis_test: append a hypothesis

  • tags (list[str]) / references (list[str]): replace lists

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYes
case_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose important field-level behavior (append vs. set vs. replace lists). It omits permission requirements, error behavior, and response details, leaving clear gaps for a mutating tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a one-line action and followed by a tight, well-organized bullet list of field behaviors. Every line provides distinct information and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all supported field modes and field relationships (step_action/step_result pair) and correctly leaves return details to the existing output schema. It lacks explicit prerequisites and error conditions, but is otherwise complete for a field-update tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is opaque for fields (additionalProperties true, 0% description coverage), so the description’s enumerated list of supported fields with their value types and semantics is essential. It gives the agent concrete, actionable meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action as 'Append to a case' and lists the supported field categories, which gives a specific verb and resource. However, it does not explicitly differentiate itself from sibling tools like case_add_evidence or case_set_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as case_add_evidence or case_set_status. It only describes what fields can be updated, leaving the choice of tool implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fiche_listA

List validated fiches (slugs).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the 'validated' filter and the output format 'slugs', which is useful behavioral context beyond the tool name. However, with no annotations provided, it does not explain what 'validated' means, whether pagination exists, or any ordering behavior. This is adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the action and resource. Every word is informative; there is no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has no parameters and an output schema exists, the description covers the essential behavior (listing validated fiches) and hints at the output format. It is sufficiently complete for a simple list operation, though it lacks any caveats or usage scenarios beyond the bare description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there are no parameter semantics to clarify. The description mentions 'slugs' as output, not input. According to the baseline for zero-param tools, a score of 4 is appropriate since no additional parameter explanation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and the resource ('validated fiches'), and specifies the output type as 'slugs'. This distinguishes it from sibling tools like fiche_read and fiche_write, which involve reading or writing individual fiches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives. There is no mention of context, exclusions, or relationships to sibling tools like case_list or fiche_read. It merely states what it does, leaving usage entirely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fiche_readC

Read a validated fiche by slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are available, and the description offers no behavioral details such as what happens for invalid or unvalidated slugs, authentication requirements, or return value characteristics. The term 'validated' is ambiguous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence and is concise, but it may be under-specified. It does include the qualifier 'validated' which adds some meaning, though not enough.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 not required in the description, but there is no context about what a fiche is, what 'validated' means, or error behavior. It lacks completeness for a tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'slug' is undocumented in the schema, and the description only mentions 'by slug' without explaining the format, source, or validation constraints. With 0% schema coverage, the description fails to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads a fiche by slug, using a specific verb and resource. However, it does not explicitly differentiate from sibling tools like fiche_list or case_get, though the resource type is distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as fiche_list or case_get. The implied usage is when a specific validated fiche slug is known, but no exclusions or comparison are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fiche_writeA

Create or overwrite a fiche. Prefer case_promote for validated knowledge.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of disclosing behavioral traits. It explicitly mentions the 'overwrite' capability, which is a key destructive behavior. Yet it omits other important details such as required permissions, irreversibility, or response behavior, so the disclosure is only partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with the first sentence front-loading the action and resource, and the second providing a useful pointer to an alternative. It is free of redundant words and every clause serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core purpose and directs users away from the tool for validated knowledge, which is helpful. However, for a write tool with no annotations and minimal parameter guidance, it would benefit from explaining the nature of the content and the implications of overwriting. It is adequate but leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides only type information for 'slug' and 'content' with 0% schema description coverage, and the description does not explain these parameters further. While the names are somewhat self-explanatory, no context is given for content format, slug uniqueness, or overwrite semantics, so the description adds little value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with specific verbs 'create' and 'overwrite' targeting the 'fiche' resource. The note 'Prefer case_promote for validated knowledge' distinguishes it from a sibling tool by indicating when a different tool is more appropriate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance to prefer 'case_promote' for validated knowledge, effectively stating a when-not-to-use condition and naming an alternative. However, it does not elaborate on specific scenarios where 'fiche_write' is the right choice, leaving some room for interpretation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

index_rebuildA

Rebuild the vector index from all source files. Returns doc count.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits itself. It mentions 'Rebuild' and 'from all source files', but does not explain potential side effects like whether the existing index is replaced, if the operation is time-consuming, or if it can run concurrently with other operations. The return value is disclosed, but safety and impact traits are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence that front-loads the action and scope. It contains no filler words or redundant information, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the operation is potentially heavy (full index rebuild) and no annotations or detailed output schema are available, the description could provide more context about operational impact, prerequisites, or caution. However, the input is simple (no params) and the return value is stated, making it minimally complete but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description does not need to explain any parameter semantics. The schema already accurately reflects this, and the rubric sets a baseline of 4 for zero-parameter tools, which is appropriate here since the description adds no unnecessary details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Rebuild') and the resource ('vector index') with explicit scope ('from all source files'), making it specific and distinguishing it from sibling tools focused on case, fiche, and skill data. It also mentions the return value ('Returns doc count'), further clarifying its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, such as when a rebuild is necessary (e.g., after updating source files) or any caution about running it during production. The description simply states what it does without context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skill_listB

List validated skills (slugs).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden for behavioral disclosure. It adds some context by introducing 'validated' and 'slugs', but it doesn't state whether the operation is read-only, how the list is ordered or paginated, or any other behavioral traits like authentication requirements. This is a minimal addition beyond the tool name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is direct and front-loaded with the action and resource. It contains no fluff or redundant information, and every part of the sentence adds value by specifying 'validated' and 'slugs'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, output schema present), the description is mostly adequate. However, it lacks usage context relative to sibling tools and doesn't clarify the meaning of 'validated' or whether the list is complete or paginated. This leaves some gaps for an agent invoking the tool in a complex workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. There is no need for parameter explanations in the description, and the empty input schema fully documents the absence of inputs, making the description sufficient in this dimension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists validated skills and specifies that the output consists of slugs. The verb 'List' and resource 'skills' are specific, and the qualifier 'validated' adds a distinct scope. However, it doesn't explicitly distinguish itself from the sibling skill_read tool, relying on the verb to imply a list vs. read distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, such as skill_read or case_list. The description simply states what it does without providing context on typical use cases or exclusions, leaving the agent to infer usage from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skill_readA

Read a validated skill by slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavior. It states 'Read' implying a safe operation, but adds no detail about permissions, validation rules, return behavior, or error handling. The qualifier 'validated' is ambiguous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, seven words, immediately front-loaded with verb and resource. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with a single parameter and an output schema. The description gives the core purpose and identifier. Minor ambiguity around 'validated' could be clarified, but overall sufficient for a straightforward read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has one string parameter 'slug' with 0% description coverage. The description references it directly ('by slug'), giving it contextual meaning, but does not specify format or values beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Read' and identifies the resource 'skill' with a required identifier 'slug', clearly distinguishing from sibling tools like skill_list or fiche_read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The phrase 'by slug' implies the tool is for known identifiers, but no exclusions or alternative comparisons are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.6/5.0
Disambiguation4/5

Tools are mostly distinct, but case_update and case_add_evidence both append to a case, and case_promote vs fiche_write both create fiches, which could cause some confusion. The descriptions clarify the intended use, but the boundaries are not perfectly sharp.

Naming Consistency5/5

All tools follow a consistent pattern of domain prefix (case_, fiche_, skill_, index_) followed by an action verb (get, list, search, update, promote, etc.). The naming is uniform and predictable across the entire set.

Tool Count5/5

14 tools is within the ideal range for a specialized knowledge management server. Each tool covers a distinct aspect of the workflow, and the count feels neither sparse nor bloated.

Completeness4/5

The case lifecycle is well covered (create, read, list, search, update, add evidence, set status, promote), and the fiche/skill read/list operations support retrieval. However, there are no delete operations for cases or knowledge artifacts, and skills lack a direct write/update tool, which are minor but notable gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    An MCP server that enables interaction with Markdown knowledge bases, allowing users to search and retrieve content by tags, text, URL, or date range from their local markdown files.
    7
    92
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server for managing Obsidian-style note vaults, providing tools for full-text search, note creation, and backlink tracking. It enables users to navigate, structure, and update their personal knowledge base through natural language.
    9
    MIT
  • F
    license
    C
    quality
    D
    maintenance
    Git-backed MCP server for creating and maintaining an Obsidian-style markdown knowledge base with full CRUD, search, and git sync.
    7

Latest Blog Posts

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/alshyra/sherlock-second-brain'

If you have feedback or need assistance with the MCP directory API, please join our Discord server