TheBrain MCP Server
Supports creating, updating, and retrieving rich notes with full Markdown formatting, including embedded content and organizational styling.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TheBrain MCP ServerCreate a new thought called 'Meeting Notes' under 'Project Alpha'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
TheBrain MCP Server
An MCP (Model Context Protocol) server that enables AI assistants to interact with TheBrain's knowledge management system. This server provides comprehensive access to TheBrain's API, focusing on natural language interaction with TheBrain's powerful knowledge management capabilities.
🔧 What's an MCP Server?
MCP (Model Context Protocol) is a standard that lets AI assistants like Claude connect to external tools and services. Think of it as a translator between natural language and software APIs.
How It Works:
You → Claude → MCP Server → TheBrain API → Your BrainYou say: "Create a project with three phases"
Claude understands what you want to accomplish
MCP Server translates this into specific TheBrain API calls
TheBrain API creates the thoughts and connections
Your Brain updates with the new structure
The magic is that you don't need to know any technical details - just describe what you want in plain English!
Related MCP server: Brain MCP Server
🚀 What Actually Works
✅ Core Functionality (Working)
Content Management: Create, update, delete thoughts and notes
File Attachments: Upload images, PDFs, documents to thoughts
Web References: URL attachments with auto-title extraction
Rich Notes: Full Markdown support with embedded content
Relationship Mapping: Connect thoughts with meaningful relationships
Search: Full-text search across thoughts, notes, and attachments
Brain Management: Switch between multiple brains seamlessly
Natural Language Interface: Describe what you want, Claude handles the details
❌ Current Issues & Limitations
🚨 Major Visual Styling Problems
The biggest limitation: Visual properties don't actually apply despite API success responses.
❌ Thought colors: API accepts colors but they don't appear in TheBrain
❌ Link colors: Similar issue - accepted but not applied
❌ Link thickness: API reports success but thickness doesn't change
❌ Visual formatting: All visual styling features are currently non-functional
🐛 Other Known Issues
Intermittent connection problems: "Field required" errors after successful operations
Long notes limitations: Issues with very long markdown content (keep under 10k characters)
File path sensitivity: Requires absolute file paths; relative paths can fail
Connection timing: MCP initialization race condition causing sporadic failures
Memory constraints: Large file attachments can cause timeouts
Search limitations: Complex queries sometimes return incomplete results
📋 API Dependencies & Constraints
Single-user operations: No real-time collaboration features
No bulk operations: Can't import/export large datasets efficiently
API connectivity required: No offline mode available
TheBrain API limitations: Bound by existing API capabilities
Authentication required: Must have valid TheBrain API key
🛠 Current Workarounds
Until visual styling is fixed, use these alternatives:
Emojis for distinction: 🟢🟡🔴⚪🔵 instead of colors
Descriptive names: "🔴 Urgent Task" instead of colored thoughts
Rich markdown notes: Use formatting within notes for visual organization
Hierarchical structure: Rely on parent/child relationships for organization
Installation
Clone this repository:
git clone https://github.com/redmorestudio/thebrain-mcp.git
cd thebrain-mcpInstall dependencies:
npm installCreate a
.envfile with your API key:
THEBRAIN_API_KEY=your_api_key_here
THEBRAIN_DEFAULT_BRAIN_ID=optional_default_brain_idConfiguration
For Claude Desktop
Add to your Claude Desktop configuration:
{
"mcpServers": {
"thebrain": {
"command": "node",
"args": ["/absolute/path/to/thebrain-mcp/index.js"],
"env": {
"THEBRAIN_API_KEY": "your_api_key_here"
}
}
}
}⚠️ Important: Use absolute file paths in the configuration and for file attachments.
Debugging & Troubleshooting
Common Issues & Solutions
"Field required" errors:
Restart Claude Desktop
Verify
.envfile has correct API keyAlways set active brain first: "Set my active brain to [name]"
File upload failures:
Use absolute file paths:
/Users/username/Documents/file.pdfCheck file permissions and existence
Keep file sizes reasonable (< 50MB)
Long note problems:
Keep notes under 10,000 characters
Break large content into multiple thoughts
Use attachments for lengthy documents
Debug mode:
VERBOSE=true node index.jsAvailable Tools (25+ Functions)
Brain Management
list_brains- List all available brainsget_brain- Get brain detailsset_active_brain- Set the active brain for operationsget_brain_stats- Get comprehensive brain statistics
Thought Operations
create_thought- Create thoughts (visual properties don't work)get_thought- Retrieve thought detailsupdate_thought- Update thought propertiesdelete_thought- Delete a thoughtsearch_thoughts- Search across the brainget_thought_graph- Get thought with all connectionsget_types- List all thought typesget_tags- List all tags
Link Operations
create_link- Create links between thoughts (styling doesn't work)update_link- Modify link propertiesget_link- Get link detailsdelete_link- Remove a link
Attachment Operations
add_file_attachment- Attach files/images to thoughts ✅add_url_attachment- Attach web URLs ✅get_attachment- Get attachment metadataget_attachment_content- Download attachment contentdelete_attachment- Remove attachmentslist_attachments- List thought attachments
Note Operations
get_note- Retrieve notes in markdown/html/text ✅create_or_update_note- Create or update notes ✅append_to_note- Append content to existing notes ✅
Advanced Features
get_modifications- View brain modification history
Usage Examples (What Actually Works)
Project Organization
You: "Create a project called 'Kitchen Renovation'"
Claude: Creates central project thought
You: "Add phases for planning, demolition, and installation"
Claude: Creates connected sub-thoughts for each phase
You: "Attach my contractor quotes to the planning phase"
Claude: Uploads files to the planning thought
You: "Add a detailed note about the timeline to the project"
Claude: Creates rich markdown note with your timelineResearch & Knowledge Management
You: "Create a research topic about sustainable energy"
Claude: Sets up main research thought
You: "Add sub-topics for solar, wind, and hydro power"
Claude: Creates organized thought hierarchy
You: "Attach relevant papers and web articles"
Claude: Adds file and URL attachments
You: "Search for everything related to efficiency"
Claude: Finds all relevant thoughts and content🔮 Roadmap & Future Development
Immediate Priorities (v1.2.0)
🚨 Fix visual styling: Investigate why colors/thickness don't apply
🔧 Connection stability: Resolve MCP timing/race condition issues
📝 Long notes support: Better handling of extensive markdown content
🛡️ Error handling: More graceful failures and recovery
Future Enhancements
Bulk operations for large-scale organization
Enhanced templates for common workflows
Performance optimizations for complex brains
Offline capabilities and caching
Technical Architecture
What Makes This Server Special
Natural language interface: No technical knowledge required
Complete API coverage: 25+ tools spanning all TheBrain operations
Robust error handling: Graceful failures and clear error messages
Modular design: Clean, maintainable code architecture
Production ready: Proper logging, testing, and documentation
Current Status
Version: 1.1.0 (June 2025)
Core functionality: ✅ Complete and working
Visual properties: ❌ Major issues need investigation
Stability: 🟡 Generally stable with intermittent connection issues
Contributing
Contributions are welcome! Areas where help is especially needed:
Visual styling investigation: Why don't colors/thickness apply?
Connection stability: Debugging MCP race conditions
Performance optimization: Large brain handling
Documentation: More usage examples and tutorials
Please feel free to submit issues or pull requests.
License
MIT License - see LICENSE file for details.
Support
TheBrain API Documentation: https://api.bra.in
Issues & Bug Reports: https://github.com/redmorestudio/thebrain-mcp/issues
Questions: Open a GitHub discussion
⚠️ Current Recommendation: Use this server for content management and organization with natural language interaction. Don't rely on visual styling features until they're fixed. The core functionality is solid and very useful for managing TheBrain content through conversation!
Available Tools
26 toolsadd_file_attachmentB
Add a file attachment (including images) to a thought
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain | |
| fileName | No | Name for the attachment (optional, uses filename if not provided) | |
| filePath | Yes | Path to the file to attach | |
| thoughtId | Yes | The ID of the thought |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose behavioral traits beyond the basic action. Important details such as file size limits, overwrite behavior, or permissions are omitted.
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, front-loaded sentence with no extraneous words. It is concise and to the point.
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 file attachment operation with 4 parameters and no output schema or annotations, the description is too sparse. It lacks information about return values, error handling, and usage 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 100%, so the parameters are fully documented in the schema. The description adds the note about including images, but this is minor. Baseline 3 applies.
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 adds a file attachment, including images, to a thought. The verb 'add' and resource 'file attachment' are specific, and the mention of images distinguishes it from the sibling 'add_url_attachment'.
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 like 'add_url_attachment' or when not to use it. The description only states what the tool does, with no contextual usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_url_attachmentB
Add a URL attachment to a thought
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to attach | |
| name | No | Name for the URL attachment (auto-fetched from page title if not provided) | |
| brainId | No | The ID of the brain | |
| thoughtId | Yes | The ID of the thought |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description adds no behavioral details beyond the bare action. Does not disclose side effects, authentication needs, 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?
One sentence, no wasted words. Appropriate length for a simple action.
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?
Minimal but adequate. Could mention that the attachment is added to a thought and that 'name' can be auto-fetched, but schema covers that. Missing output guidance.
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 100%, and the schema already describes all parameters, including the auto-fetching behavior of 'name'. The description adds no additional meaning.
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 action (add), resource (URL attachment), and target (thought). It implicitly distinguishes from sibling 'add_file_attachment' by specifying URL versus file.
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 'add_file_attachment' or 'create_link'. No context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
append_to_noteC
Append content to an existing note
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain | |
| markdown | Yes | Markdown content to append | |
| thoughtId | Yes | The ID of the thought |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must convey behavioral traits. It only states 'append content' without specifying whether the note must exist, whether it overwrites or adds, or if it's idempotent. This is insufficient.
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, front-loaded sentence with no superfluous words. It is concise, though some might argue it is too brief.
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 lack of output schema, annotations, and the presence of sibling tools with overlapping functionality, the description is incomplete. It does not clarify behavior when the note is missing or the exact effect of appending.
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 100% with descriptions for all three parameters, so the description adds no extra meaning. Baseline score of 3 is appropriate.
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 the specific verb 'append' and resource 'existing note', which is clear. It distinguishes from siblings like 'create_or_update_note' by implying modification rather than creation, but could be more explicit about the operation's scope.
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 'create_or_update_note' or 'update_thought'. The agent must infer from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_linkB
Create a link between two thoughts with visual properties
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Label for the link | |
| color | No | Link color in hex format (e.g., "#6fbf6f") | |
| typeId | No | ID of link type | |
| brainId | No | The ID of the brain | |
| relation | Yes | Relation type: 1=Child, 2=Parent, 3=Jump, 4=Sibling | |
| direction | No | Direction flags: 1=IsDirected, 2=DirectionBA, 4=OneWay | |
| thickness | No | Link thickness (visual weight) | |
| thoughtIdA | Yes | ID of the first thought | |
| thoughtIdB | Yes | ID of the second thought |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description implies mutation but lacks details about constraints (e.g., duplicate links), side effects, or return behavior. It does not compensate for missing 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?
Single, front-loaded sentence with no wasted words. Efficiently conveys the core purpose.
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 9 parameters, complex enums (relation, direction), and no output schema, the description is too brief. It does not explain how relation/direction flags work or that thoughtIdA and thoughtIdB are required.
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 100%, so the schema already documents all parameters. The description adds minimal value beyond 'with visual properties', so baseline 3 is appropriate.
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 action (create), the resource (a link between two thoughts), and that it includes visual properties. This distinguishes it from sibling tools like delete_link and update_link.
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 (e.g., update_link). No prerequisites or context are provided, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_noteC
Create or update a note with markdown content
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain | |
| markdown | Yes | Markdown content for the note | |
| thoughtId | Yes | The ID of the thought |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as whether it performs an upsert, overwrites existing content, or requires specific permissions. The agent has no insight into side effects.
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 concise sentence with no fluff. However, it could be restructured to include more context without adding 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?
Given no output schema and the presence of sibling tools, the description is incomplete. It does not explain return values or behavior on update vs create, which is necessary for correct tool selection and invocation.
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 100%, so parameters are already documented. The description adds no additional meaning beyond what's in the schema, so baseline score of 3 is appropriate.
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 'Create or update a note with markdown content', specifying verb (create/update), resource (note), and content type (markdown). However, it doesn't differentiate from sibling 'append_to_note', which could be confusing.
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 like 'append_to_note'. There is no mention of prerequisites, conditions for update vs create, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_thoughtC
Create a new thought with optional visual properties
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Kind of thought: 1=Normal, 2=Type, 3=Event, 4=Tag, 5=System | |
| name | Yes | The name of the thought | |
| label | No | Optional label for the thought | |
| acType | No | Access type: 0=Public, 1=Private | |
| typeId | No | ID of the thought type to assign | |
| brainId | No | The ID of the brain (uses active brain if not specified) | |
| relation | No | Relation type if linking: 1=Child, 2=Parent, 3=Jump, 4=Sibling | |
| backgroundColor | No | Background color in hex format (e.g., "#0000ff") | |
| foregroundColor | No | Foreground color in hex format (e.g., "#ff0000") | |
| sourceThoughtId | No | ID of the source thought to link from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states 'Create a new thought with optional visual properties,' omitting critical traits such as whether existing thoughts are overwritten, permission requirements, return values, or side effects. The low behavioral transparency could lead to incorrect invocations.
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, concise sentence that front-loads the core purpose. Every word is informative, with no redundancy. It earns its place by conveying the action, resource, and a distinguishing feature (visual properties) efficiently.
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 tool with 10 parameters and no output schema, the description is too brief. It fails to mention what the tool returns, error scenarios, or dependencies (e.g., brainId default behavior). Important aspects like linking behavior (sourceThoughtId+relation) are not described, leaving gaps for the 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 description coverage is 100%, so the schema already documents all parameters well. The description adds minimal value by referring to 'optional visual properties' (backgroundColor, foregroundColor), but this is already evident from the schema. The description does not explain parameter interdependencies like sourceThoughtId and relation.
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 'Create a new thought with optional visual properties' clearly states the action (create) and resource (thought), and distinguishes from siblings like update_thought by mentioning optional visual properties. However, it does not specify what a 'thought' is in this context, which might be unclear to an agent unfamiliar with the domain.
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 no guidance on when to use this tool versus alternatives like update_thought or create_link. Given the sibling tools, the agent would benefit from explicit conditions (e.g., 'Use this to create a new thought; for linking existing thoughts, use create_link instead'). The absence of such guidance forces the agent to rely on heuristics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_attachmentC
Delete an attachment
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain | |
| attachmentId | Yes | The ID of the attachment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description lacks disclosure of behavioral traits such as irreversibility, permission requirements, or side effects of deletion. This is a critical gap for a destructive operation.
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 extremely concise (three words), but at the cost of missing important context. It is front-loaded but under-specified, so a middle score is appropriate.
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 destructive nature, lack of output schema, and no annotations, the description is woefully incomplete. It provides no return value, effects, or prerequisites, leaving the agent with insufficient information.
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 100%, with both parameters having descriptions. The tool description adds no additional meaning beyond the schema, so baseline 3 applies.
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 (delete) and resource (attachment), making the action unambiguous. However, it does not differentiate from sibling tools that operate on different resources, but the resource type alone is sufficient for basic distinction.
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, no prerequisites mentioned, and no mention of common use cases or exclusions. The agent is left to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_linkC
Delete a link
| Name | Required | Description | Default |
|---|---|---|---|
| linkId | Yes | The ID of the link | |
| brainId | No | The ID of the brain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states the action (delete) but does not mention that deletion is permanent, whether it cascades to related data, or any authorization requirements. This is insufficient for an agent to understand the tool's side effects.
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 (3 words). While brevity is valued, it comes at the cost of missing critical information. It is not verbose but also not adequately informative for the agent. A balanced approach could include a short sentence about effects.
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 simplicity of the tool (2 params, no output schema), the description should at least mention that deletion is irreversible or that the link must exist. It fails to provide any additional context beyond the action, leaving the agent guessing about return values and side 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?
Schema description coverage is 100%, so the schema already documents both parameters (linkId and brainId). The description adds no additional meaning beyond the schema. Baseline of 3 is appropriate since the schema does the heavy lifting.
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 'Delete a link' clearly states the action and resource. It distinguishes from sibling tools like create_link and update_link by explicitly using the verb 'Delete'. However, it lacks additional context that could further clarify the scope, such as whether it deletes all associated data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs. alternatives. There is no mention of prerequisites (e.g., link must exist), no warnings about irreversibility, and no mention of when to prefer delete_link over other deletion tools like delete_attachment or delete_thought.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_thoughtC
Delete a thought
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain | |
| thoughtId | Yes | The ID of the thought |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks any behavioral details beyond the deletion action; no mention of side effects, permanence, or requirements. No annotations are present to supplement.
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 brief (one sentence) but fails to convey important context, making it under-specified rather than appropriately concise.
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 lack of annotations and output schema, the description is far too minimal; it does not cover return values, error conditions, or behavioral implications of deletion.
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 100%, so the schema fully describes parameters. The description adds no additional meaning beyond what the schema provides.
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 action (delete) and resource (thought), but does not differentiate from sibling tools like delete_attachment or delete_link.
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 provided on when to use this tool versus alternatives, nor any prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attachmentC
Get metadata about an attachment
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain | |
| attachmentId | Yes | The ID of the attachment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies read-only by 'get' but does not confirm side effects, error handling, or permission requirements. Minimal behavioral disclosure.
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 single sentence is concise, but it may be too brief, lacking structural elements like examples or context. It is front-loaded but does not earn its place with additional helpful 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?
No output schema, so the description should clarify what metadata is returned. It does not, leaving agents uninformed. Simple tool but incomplete for reliable selection and invocation.
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 100%, so parameters are fully documented structurally. The description adds no extra meaning or context for 'brainId' or 'attachmentId', providing no 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 clearly states the action ('get') and resource ('metadata about an attachment'). It distinguishes from siblings like 'get_attachment_content' and 'delete_attachment', but lacks explicit differentiation from other 'get' siblings like 'get_brain' or 'get_note'.
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. Does not specify prerequisites, exclusions, or context, leaving the agent to infer from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attachment_contentC
Get the binary content of an attachment (e.g., download an image)
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain | |
| saveToPath | No | Optional path to save the file locally | |
| attachmentId | Yes | The ID of the attachment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose return format (binary stream, base64, etc.), authentication needs, or potential side effects. Minimal behavioral info beyond the action.
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?
Single sentence, front-loaded with key action, no superfluous words. Highly concise.
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 tool with 3 parameters and no output schema, the description is too sparse. It lacks details on handling binary data, size limits, or example usage. More context needed for effective use.
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 100%, so the parameter descriptions exist. The tool description adds context about binary content but does not elaborate on parameter semantics 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 the action 'get binary content' and provides an example 'download an image'. It differentiates from sibling tools like 'get_attachment' (likely metadata) by specifying binary content, though not explicitly.
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 'get_attachment' or 'list_attachments'. No prerequisites or when-not-to-use mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_brainC
Get details about a specific brain
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | Yes | The ID of the brain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states 'Get details' but does not mention read-only nature, error scenarios (e.g., invalid brainId), permissions needed, or the response format. This is insufficient for an agent to understand side effects or constraints.
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, highly concise and front-loaded. However, it could include a bit more useful detail without becoming verbose, but overall it is appropriately sized.
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 no output schema and no annotations, the description is incomplete. It does not specify what 'details' are returned, whether the output is a brain object with all fields, or if pagination applies. For a get operation, this lacks critical context for the agent to interpret the result.
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?
Although the schema covers 100% of parameters with a description for brainId ('The ID of the brain'), the description adds no additional meaning such as where to obtain the ID, its format, or constraints. Baseline for full coverage is 3, but lack of added value reduces score.
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 'Get details about a specific brain' clearly states the action (get) and the resource (brain), distinguishing it from siblings like list_brains (which lists all brains) and set_active_brain (which sets active brain).
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 such as list_brains or get_thought. The description does not specify prerequisites, such as requiring a valid brainId obtained from list_brains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_brain_statsC
Get statistics about a brain
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral traits beyond the basic action. It does not indicate whether the tool is read-only, requires a specific brain state, or how statistics are computed. Annotations are absent, so the description carries full burden but fails to address this.
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, concise sentence that front-loads the core purpose. It is efficient with no wasted words, though it could benefit from slight expansion for clarity.
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 lack of output schema and annotations, the description is insufficient. It does not clarify what 'statistics' entails, leaving the agent without understanding of return format or behavior. It is minimally complete for a simple tool but fails to provide needed 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 coverage is 100% for the single parameter, which already describes it as 'The ID of the brain'. The description adds no additional meaning or context beyond the schema, so baseline score of 3 is appropriate.
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 'Get' and the resource 'statistics about a brain', which aligns with the tool name and distinguishes it from siblings like 'get_brain' or 'list_brains'. However, it does not specify what kind of statistics, leaving some ambiguity.
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, such as 'get_brain' or 'get_thought_graph'. There is no mention of prerequisites, context, or conditions for effective use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkB
Get details about a specific link
| Name | Required | Description | Default |
|---|---|---|---|
| linkId | Yes | The ID of the link | |
| brainId | No | The ID of the brain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It only states 'get details' implying read-only, but does not disclose any side effects, authentication needs, or behavior like whether it returns all fields or only a subset. Minimal transparency.
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, efficient sentence with no wasted words. It could be slightly improved by hinting at what 'details' entail, but its brevity is a strength.
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?
Without an output schema, the description should clarify what 'details' are returned (e.g., link properties, associated brain, modification dates). Given the simplicity of a get-by-id operation, more specificity would aid the agent in understanding return value structure.
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 100%, and the description does not add meaning beyond the schema's parameter descriptions (e.g., 'The ID of the link'). Baseline 3 is appropriate as no additional semantic value is provided.
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 'Get details about a specific link' uses a clear verb ('get') and resource ('link'), making the tool's function immediately obvious. It effectively distinguishes itself from sibling tools like create_link, delete_link, and update_link.
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 (e.g., list_links or search tools). There is no mention of prerequisites or context, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_modificationsB
Get modification history for a brain
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain | |
| endTime | No | End time for logs (ISO format) | |
| maxLogs | No | Maximum number of logs to return | |
| startTime | No | Start time for logs (ISO format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only states the function. It does not mention returned data format, pagination, authentication, or any side effects, leaving significant gaps for an agent.
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, concise sentence that front-loads the tool's purpose with no extraneous information. It earns its place efficiently.
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 4 parameters and no output schema, the description does not explain what modification history entails or what the response will look like. Given the lack of annotations and output schema, this is insufficient for complete understanding.
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 100%, so the baseline is 3. The description adds no extra meaning beyond the schema; each parameter's purpose is already described in 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 'Get modification history for a brain' clearly specifies the action (get), the resource (modification history), and the scope (for a brain). It is distinct from sibling tools, as no other tool retrieves modification history.
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. While the purpose is clear, the description does not mention when not to use it or suggest alternative tools for related queries (e.g., get_brain, get_thought).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_noteB
Get the note content for a thought
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format | markdown |
| brainId | No | The ID of the brain | |
| thoughtId | Yes | The ID of the thought |
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 only states 'Get the note content', implying a read-only operation, but lacks details on potential side effects, authentication needs, rate limits, or what happens if the note does not exist.
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, crisp sentence with no wasted words. It is appropriately sized for a simple retrieval tool.
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 low complexity and complete schema, the description is minimally adequate. However, it does not explain what 'note content' includes (e.g., full text, metadata), and there is no output schema to clarify the return format. For a tool with many siblings, slightly more context would improve 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 100% and the description adds no meaningful information beyond what the schema already provides for the parameters. The parameter names and descriptions in the schema are self-explanatory, so the description adds marginal value.
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 'Get' and the resource 'note content for a thought', which is distinct from sibling tools like 'append_to_note' (write) and 'create_or_update_note' (modify). However, it does not explicitly differentiate from 'get_thought', which might also retrieve content, leaving some ambiguity.
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 no guidance on when to use this tool versus alternatives. It does not mention when not to use it, nor does it reference any sibling tools that might be more appropriate in certain contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tagsC
Get all tags in a brain
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden for behavioral disclosure. It only states 'Get all tags in a brain,' implying a read-only operation, but lacks details on side effects, permission requirements, rate limits, or return format. This is insufficient for a tool with no output 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?
The description is concise at five words and front-loads key information. However, it lacks any structural elements like bullet points or additional context that would improve readability without sacrificing 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?
For a simple retrieval tool with one optional parameter, the description is minimally complete. However, the absence of an output schema means the description should hint at the return type (e.g., list of tag strings), which it does not, leaving the agent guessing about the response format.
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 100% with a single parameter 'brainId' described as 'The ID of the brain.' The description adds no further meaning beyond the schema, so it meets the baseline but does not enhance parameter understanding.
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 'Get all tags in a brain' clearly states the verb and resource, distinguishing it from sibling tools that operate on thoughts, notes, or attachments. However, it does not elaborate on what constitutes a tag or how they relate to brains.
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 like 'get_thought' or 'get_note'. There is no mention of prerequisites or exclusions, leaving the agent without contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_thoughtC
Get details about a specific thought
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain | |
| thoughtId | Yes | The ID of the thought |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose behavioral traits such as idempotency, rate limits, error behavior (e.g., what happens if thoughtId does not exist), or authentication requirements.
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, which is concise, but it is under-specified. It could be expanded slightly to include key behavioral or parameter context without becoming 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 no output schema, the description should hint at return values (e.g., metadata, content). It does not. Also, the optional brainId parameter's role is unclear, leaving the agent uncertain about scoping.
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 100%, so the input schema already describes both parameters. The description adds no further meaning, such as the optional nature of brainId or how it might scope the thought retrieval.
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 'Get details about a specific thought,' indicating a read operation on a single resource. It distinguishes from siblings like 'search_thoughts' or 'get_thought_graph', but lacks specificity about what 'details' includes.
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. Does not mention prerequisites (e.g., needing a brain context) or scenarios where a different tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_thought_graphC
Get a thought with all its connections and attachments
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain | |
| thoughtId | Yes | The ID of the thought | |
| includeSiblings | No | Include sibling thoughts in the graph |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist. The description fails to disclose side effects, permissions, or error behavior. It does not clarify whether it reads existing data or triggers mutations, which is risky for a retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no redundancy. It front-loads the core action, though it could be slightly more structured by separating the purpose from the scope.
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?
No output schema exists, yet the description offers no insight into return format (e.g., graph structure, attached entities). Given three parameters, the description is too sparse to ensure correct invocation.
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 100% with clear descriptions for all three parameters. The tool description adds no further meaning beyond the schema, which is adequate but does not enhance understanding of how 'includeSiblings' modifies results.
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 retrieves a thought with its connections and attachments, making it distinct from get_thought which likely returns just the thought. The verb 'get' is generic but the resource scope is specific.
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 over siblings like get_thought or list_attachments. No mention of prerequisites or exclusions, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_typesC
Get all thought types in a brain
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states 'Get', implying a read operation, but fails to mention whether authentication is needed, any side effects, or what the response contains. This is insufficient for a tool with no annotation support.
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 with no wasted words, achieving high conciseness. However, it is too brief to add significant value beyond the definition, preventing a score of 5.
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 low complexity (1 optional parameter, no output schema), the description still lacks crucial context: no usage guidelines, no behavioral traits, and no explanation of return values. This incompleteness hinders an agent's ability to use the tool correctly.
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 100% as the sole parameter 'brainId' has a description in the schema. The tool description adds no additional meaning beyond the schema's 'The ID of the brain'. According to guidelines, baseline is 3 when coverage is high, and the description does not exceed that baseline.
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 action ('Get all thought types') and the resource ('in a brain'). It is specific and distinguishes from siblings like 'get_thought' (single thought) and 'get_tags' (tags as opposed to types). However, the description is slightly vague as 'thought types' could be ambiguous without further context.
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 no guidance on when to use this tool versus alternatives such as 'search_thoughts' or 'get_tags'. There is no mention of prerequisites or when not to use it, leaving the agent without decision context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_attachmentsC
List all attachments for a thought
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain | |
| thoughtId | Yes | The ID of the thought |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the burden. It fails to disclose important behavior such as pagination, ordering, or what happens with invalid inputs. The description is too minimal.
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 with no wasted words. However, it could be improved by adding a bit more context without becoming verbose. It remains 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 simple nature of the tool, the description is incomplete. It does not mention return format, pagination, error behavior, or ordering. For a list operation, these are important for an agent to invoke correctly.
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 100%, so the baseline is 3. The description does not add any meaning beyond the schema, e.g., it doesn't explain that brainId is optional or how it affects the query.
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 'list' and the resource 'attachments for a thought', but it doesn't explicitly distinguish from siblings like 'get_attachment' which retrieves a single attachment. However, the scope is clear.
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 like 'get_attachment' or 'get_attachment_content'. There is no mention of context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_brainsA
List all available brains for the user
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose whether the tool is read-only, requires authentication, or has any side effects. For a list operation, it likely is safe, but the description does not confirm this.
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 concise sentence that immediately conveys the tool's purpose. It is front-loaded and contains no unnecessary 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?
Given the simplicity (no parameters, no output schema), the description is minimally viable. However, it does not mention what information is returned (e.g., brain IDs, names) or any limitations, leaving room for improvement.
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?
There are no parameters, so the description does not need to add parameter meaning. The schema coverage is 100% trivially. Baseline of 4 for zero parameters applies.
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 lists all available brains for the user. It uses a specific verb ('list') and resource ('brains'), and it distinguishes itself from siblings like 'get_brain' which retrieves a single brain.
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 'get_brain' or search-related tools. The description implies it is for listing all brains, but lacks explicit if-then guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_thoughtsC
Search for thoughts in a brain
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | No | The ID of the brain | |
| queryText | Yes | Search query text | |
| maxResults | No | Maximum number of results | |
| onlySearchThoughtNames | No | Only search in thought names (not content) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states 'search for thoughts'. It does not disclose behavioral traits such as default search mode (names vs content), result ranking, or whether it requires text indexing. The schema parameters (e.g., onlySearchThoughtNames) are not mentioned in the description.
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, succinct sentence with no wasted words. However, it is arguably too brief given the tool's complexity; a bit more detail would improve clarity without harming conciseness.
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?
No output schema exists, so the description should clarify return format (e.g., list of thought IDs, objects with content). It fails to specify what the search results contain or how to interpret them, leaving a significant gap for the 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 description coverage is 100%, so baseline is 3. The description adds no parameter details beyond what the schema provides. It does not explain how queryText is used or the purpose of brainId, but the schema descriptions are sufficient.
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 'search' and resource 'thoughts in a brain', distinguishing it from sibling tools like get_thought (single retrieval) or get_thought_graph (graph traversal). However, it lacks specificity about the scope (e.g., content vs. names) and does not differentiate from potential search variants.
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 (e.g., get_thought for by-ID lookup, get_modifications for recent changes). The description does not mention prerequisites, typical use cases, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_active_brainC
Set the active brain for subsequent operations
| Name | Required | Description | Default |
|---|---|---|---|
| brainId | Yes | The ID of the brain to set as active |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose side effects like state mutation or session-level impact. For a tool that changes global state, more transparency is needed.
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 short sentence, which is concise but lacks necessary detail. It earns its place but is too terse to be optimally helpful.
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 tool sets state with no output schema, but the description fails to explain the concept of 'active brain', how to verify it, or its effect on subsequent operations. Incomplete for a state-setting 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 100%, and the description adds no extra meaning beyond the schema's parameter description. Baseline score of 3 is appropriate.
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 sets the active brain for subsequent operations, distinguishing it from sibling tools like list_brains or get_brain. However, it could be more specific about what 'active brain' means and its scope.
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, such as when to set the active brain before other operations or conditions where it might be unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_linkC
Update link properties including visual formatting
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New label for the link | |
| color | No | New link color in hex format (e.g., "#6fbf6f") | |
| linkId | Yes | The ID of the link to update | |
| brainId | No | The ID of the brain | |
| relation | No | New relation type: 1=Child, 2=Parent, 3=Jump, 4=Sibling | |
| direction | No | New direction flags | |
| thickness | No | New link thickness |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description is the sole source of behavioral information. It only states the action (update) and a hint about visual formatting, without disclosing side effects, permission requirements, error conditions, or other critical behavioral traits.
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, concise sentence. It is efficient but lacks structure (e.g., separate sections for purpose, usage, or parameters). The brevity is acceptable but could be better organized.
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 (7 parameters, no output schema, no annotations), the description is far too minimal. It does not explain the update process, required parameters, or any preconditions. The return value is not described, and important context like brainId is omitted.
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 100%, so each parameter already has a description. The tool description adds only the phrase 'including visual formatting', which groups some parameters but does not provide additional semantic context beyond the schema. Hence, baseline 3 is appropriate.
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 the tool updates link properties and specifies that it includes visual formatting, which differentiates it from create or delete link tools. However, it does not enumerate the specific properties covered, and the phrase 'visual formatting' may not fully represent all parameters like relation and direction.
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 no guidance on when to use this tool versus alternatives such as create_link or update_thought. There are no criteria for decision-making or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_thoughtB
Update a thought including its visual properties
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | New kind: 1=Normal, 2=Type, 3=Event, 4=Tag, 5=System | |
| name | No | New name for the thought | |
| label | No | New label for the thought | |
| acType | No | New access type: 0=Public, 1=Private | |
| typeId | No | New type ID to assign | |
| brainId | No | The ID of the brain | |
| thoughtId | Yes | The ID of the thought to update | |
| backgroundColor | No | New background color in hex format (e.g., "#0000ff") | |
| foregroundColor | No | New foreground color in hex format (e.g., "#ff0000") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only says 'update' but does not mention idempotency, authorization needs, or any side effects.
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?
Single sentence with no wasted words; front-loaded with verb and resource.
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 9 parameters and no output schema, the description is too brief. It does not explain return values, prerequisites, or what happens when updating partial fields.
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 100%, so the baseline is 3. The description adds 'visual properties' but this is already covered by the schema's background/foreground color 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 action (update), the resource (thought), and mentions visual properties, which distinguishes it from siblings like create_thought or delete_thought.
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 vs alternatives; for example, when to update versus create a new thought, or which parameters are commonly used together.
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.
26 tool updates
v1.0.0- First observed
add_file_attachment - First observed
add_url_attachment - First observed
append_to_note - First observed
create_link - First observed
create_or_update_note - First observed
create_thought - First observed
delete_attachment - First observed
delete_link - First observed
delete_thought - First observed
get_attachment - First observed
get_attachment_content - First observed
get_brain - First observed
get_brain_stats - First observed
get_link - First observed
get_modifications - First observed
get_note - First observed
get_tags - First observed
get_thought - First observed
get_thought_graph - First observed
get_types - First observed
list_attachments - First observed
list_brains - First observed
search_thoughts - First observed
set_active_brain - First observed
update_link - First observed
update_thought
TDQS
Each tool has a clear, distinct purpose. For example, get_thought retrieves basic thought data while get_thought_graph includes connections and attachments. Even similar actions like append_to_note and create_or_update_note are well-differentiated by their descriptions.
All tools follow a consistent verb_noun pattern with underscores (e.g., create_thought, get_attachment, delete_link). The verbs are uniform and descriptive, making the pattern predictable and easy to follow.
At 26 tools, the set is on the high side but still justified given the complexity of TheBrain's features (thoughts, notes, links, attachments, brains, tags, etc.). Each tool serves a specific operation, and there is minimal redundancy.
The tool surface covers the full lifecycle of thoughts, notes, links, attachments, and brain management. Operations include create, read, update, delete, search, and listing. No obvious gaps are apparent for the stated domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- MindlifyOAuthco.mindlify
Turn AI conversations into visual knowledge maps. Create, connect, search, and organize thoughts.
Search, retrieve, create, and update visual knowledge maps in a user's KnowMapped account.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to read, write, search, and navigate Obsidian vault notes with support for CRUD operations, full-text search, graph navigation, daily notes, and frontmatter management.4,785-
- FlicenseNot gradedqualityDmaintenanceEnables interaction with Brain service for thought management, including saving thoughts with metadata, quick capture with auto-classification, searching, and retrieving entries through natural language.-
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to interact with TheBrain's knowledge management system through natural language for managing thoughts, notes, and attachments. It supports core features like full-text search, relationship mapping, and file uploads to streamline digital brain organization.3Apache 2.0
- FlicenseNot gradedqualityDmaintenanceWraps TheBrain knowledge graph as an MCP server, enabling AI assistants to search, create, and manage thoughts, links, and notes via natural language.5-
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/redmorestudio/thebrain-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server