CapacitiesMCP
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., "@CapacitiesMCPsearch for objects titled 'Q4 Goals'"
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.
╔═╗┌─┐┌─┐┌─┐┌─┐┬┌┬┐┬┌─┐┌─┐
║ ├─┤├─┘├─┤│ │ │ │├┤ └─┐
╚═╝┴ ┴┴ ┴ ┴└─┘┴ ┴ ┴└─┘└─┘
╔╦╗╔═╗╔═╗
║║║║ ╠═╝
╩ ╩╚═╝╩MCP Server for Capacities.io
Important Limitations
The Capacities API does not support reading object content.
This MCP server can:
Search for objects by title (returns IDs and titles only)
Create new objects of any type
Write to daily notes and save weblinks
This MCP server cannot:
Read the actual content/body of any object
Retrieve notes, documents, or page contents
Export or analyze existing data
This is a limitation of the Capacities API, not this server. The API is in beta and Capacities may add read endpoints in the future.
Related MCP server: Anytype MCP Server
What is this?
CapacitiesMCP is a Model Context Protocol server that connects AI assistants to Capacities.io for searching and creating content.
┌─────────────────────────────────────────────────────────────────┐
│ Your AI Assistant │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ CapacitiesMCP Server │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ REST API │ X-Callback URLs │ │
│ │ • Search by title │ • Create objects │ │
│ │ • List spaces │ • Open in app │ │
│ │ • Save weblinks │ • Get current object info │ │
│ │ • Add to daily note │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ [!] NO READ ACCESS TO OBJECT CONTENT (API limitation) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Capacities.io │
└─────────────────────────────────────────────────────────────────┘What You Can Actually Do
Feature | Works? | Requires Desktop App | Details |
List your spaces | Yes | No | Get space IDs and titles |
Search by title | Yes | No | Find objects, get IDs (not content) |
Get object types | Yes | No | See available structures in a space |
Create objects | Yes | Yes | Create Books, People, Meetings, custom types |
Save weblinks | Yes | No | Clip URLs with tags and notes |
Add to daily note | Yes | No | Append markdown to today's note |
Open objects | Yes | Yes | Deep-link into the desktop app |
Get current object | Yes | Yes | Get info about open object |
Read object content | NO | - | Not possible - API limitation |
Export data | NO | - | Not possible - API limitation |
Get page/note body | NO | - | Not possible - API limitation |
Installation
Prerequisites
Node.js 18+
Capacities.io Pro subscription (required for API access)
Capacities desktop app must be running (required for creating objects, opening objects, and getting current object info)
Quick Start
# Clone the repository
git clone https://github.com/ajokunu/capacities-mcp.git
cd capacities-mcp
# Install dependencies
npm install
# Build
npm run buildConfiguration
1. Get Your API Key
Note: API access requires a Capacities Pro subscription.
Open Capacities desktop app
Go to Settings → Capacities API
Generate and copy your API key
2. Configure Your MCP Client
Add to ~/.claude/settings.json:
{
"mcpServers": {
"capacities": {
"command": "node",
"args": ["/path/to/capacities-mcp/dist/index.js"],
"env": {
"CAPACITIES_API_KEY": "your_api_key_here"
}
}
}
}Add to claude_desktop_config.json:
{
"mcpServers": {
"capacities": {
"command": "node",
"args": ["/path/to/capacities-mcp/dist/index.js"],
"env": {
"CAPACITIES_API_KEY": "your_api_key_here"
}
}
}
}Environment Variables
Variable | Required | Description |
| Yes | Your Capacities API key |
| No | Default space for operations |
| No | Port for x-callback responses (0 = auto) |
Available Tools
Search & Discovery
capacities_list_spaces
List all spaces you have access to.
capacities_search
Search for objects by title. Returns IDs and titles only, not content.
{
"spaceId": "uuid-of-your-space",
"searchTerm": "meeting notes"
}capacities_get_space_info
Get info about a space including available structures.
capacities_get_object_types
List all object types (structures) available in a space.
Create & Write
capacities_create_object
Create any object type. Requires Capacities desktop app running.
{
"type": "Book",
"title": "Atomic Habits",
"content": "Key insights from the book...",
"tags": ["productivity", "habits"]
}capacities_save_weblink
Save a URL with metadata.
{
"spaceId": "uuid",
"url": "https://example.com/article",
"title": "Great Article",
"tags": ["research"]
}capacities_add_to_daily_note
Append content to today's daily note.
{
"spaceId": "uuid",
"content": "## Meeting Summary\n- Discussed roadmap"
}Utility
capacities_get_current_object
Get info (URL, title) about the currently open object. Does not return content.
capacities_open_object
Open a specific object by its URL in the desktop app.
Usage Examples
Things you can ask your AI assistant:
"List all my Capacities spaces"
"Search for 'project planning' in my work space"
"Create a new Book called 'Deep Work' with notes about focus"
"Save this URL to my research space"
"Add a summary to today's daily note"
Things you cannot do:
"Read my meeting notes from last week"
"Summarize my research documents"
"Export all my notes about X topic"
Rate Limits
Endpoint | Limit |
| 5 req/60s |
| 120 req/60s |
| 10 req/60s |
| 5 req/60s |
Why No Read Access?
The Capacities API is in early beta. From their docs:
"The Capacities API is in a very early stage. Many endpoints you'd expect for a REST API are not yet available."
There is no /get-object or similar endpoint. The x-callback URL scheme also only returns metadata (URL, title), not content.
If you want this feature, request it from Capacities directly.
Development
npm run dev # Watch mode
npm run typecheck # Type checking
npm run build # BuildLicense
MIT
Available Tools
9 toolscapacities_add_to_daily_noteB
Add markdown content to today's daily note in Capacities.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Markdown content to add to the daily note | |
| spaceId | No | The UUID of the space. Uses default space if configured and not provided. | |
| noTimestamp | No | If true, do not prepend a timestamp to the content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It only states the action and does not disclose side effects like whether content is appended or overwrites existing content, the default timestamp behavior, or whether permissions are required. The noTimestamp parameter hints at timestamp prepending but the description does not confirm this behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded and free of filler. It effectively communicates the core purpose without unnecessary detail.
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 mutation tool with no annotations and no output schema, the description is too thin. It does not explain return values, failure modes, or what happens if the daily note is missing. The implications of spaceId and noTimestamp are left entirely to the schema, leaving the agent without sufficient context to handle edge cases.
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 additional parameter semantics beyond the schema, which already describes content, spaceId, and noTimestamp. The description's mention of 'markdown content' is redundant with the content parameter description.
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 markdown content to today's daily note in Capacities.' It identifies the specific resource (daily note) and distinguishes it from siblings like create_object and save_weblink, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool instead of alternatives, or when it should be avoided. It lacks context about prerequisites, such as whether a daily note must already exist, and does not mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capacities_create_objectA
Create a new object of any type in Capacities. Requires the Capacities desktop app to be running. Can create Books, People, Meetings, or any custom object type defined in the space.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags to apply to the object (will be added as hashtags in the content) | |
| type | Yes | The object type name (e.g., "Book", "Meeting", "Person"). Must match the exact singular name of a structure in the space. | |
| title | Yes | The title of the new object | |
| content | No | Markdown content to add to the object's notes section | |
| spaceId | No | The UUID of the space. Optional - uses active space if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It adds a key prerequisite: 'Requires the Capacities desktop app to be running.' It also clarifies that any custom object type defined in the space can be created. However, it does not mention response format, error handling, or side effects beyond the obvious 'create' 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?
The description is two sentences with no fluff. It front-loads the primary purpose, then adds a critical prerequisite, and finally gives concrete examples. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema provides rich parameter documentation, and the description adds the crucial desktop app prerequisite and type scope. There is no output schema, but for a straightforward create operation, the context is largely sufficient. It could improve by noting what the tool returns or how invalid types are handled, but it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's mention of 'Books, People, Meetings, or any custom object type' reinforces the 'type' parameter but does not add substantial meaning beyond the schema's detailed parameter 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 uses a specific verb and resource: 'Create a new object of any type in Capacities.' It clearly distinguishes this from sibling tools like capacities_add_to_daily_note and capacities_save_weblink by emphasizing it creates standalone objects of any custom type.
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 gives context: 'Requires the Capacities desktop app to be running' and lists possible object types. However, it does not explicitly state when to use this tool versus alternatives (e.g., save_weblink or add_to_daily_note), nor does it provide exclusions. Usage is implied rather than explicitly contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capacities_get_current_objectA
Get information about the currently open object in Capacities desktop app. Returns the object's URL, title, and name. Requires desktop app to be running.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the key dependency (desktop app running), the scope (currently open object), and the specific return fields (URL, title, name). It does not mention error cases like no object being open, but for a read-only info tool this is reasonable.
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 two sentences, front-loaded with the purpose, and contains no redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low complexity with no parameters, no output schema, and no annotations. The description covers what it returns and the key external prerequisite (desktop app running), which is sufficient for this simple 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?
The tool has zero parameters, and the baseline is 4. The description adds no parameter details, but none are needed. The schema already confirms no parameters, so this 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 uses a specific verb ('Get information') and identifies the resource ('currently open object in Capacities desktop app'). It clearly distinguishes from sibling tools like capacities_get_space_info and capacities_get_object_types by focusing on the current object in the desktop app 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 states the tool is for the currently open object in the desktop app and explicitly says 'Requires desktop app to be running,' which is a clear usage prerequisite. It does not mention alternative tools or exclusions, but the context is sufficiently clear for this simple getter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capacities_get_object_typesA
Get all available object types (structures) for a space. Useful for knowing what types of objects can be created.
| Name | Required | Description | Default |
|---|---|---|---|
| spaceId | Yes | The UUID of the space |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral transparency burden. It only states the get operation, without disclosing side-effect-free behavior, error handling, or return format. 'Get' implies read-only but adds no explicit behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences convey both the tool's action and its usefulness. No filler or redundancy, and the main action is front-loaded.
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 single-parameter read tool, the description covers the core function and purpose. However, with no output schema, it omits details about the response structure or possible errors, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter spaceId is fully described in the schema ('The UUID of the space') with 100% coverage. The description's mention of 'for a space' adds no extra 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 specific function: 'Get all available object types (structures) for a space,' which distinguishes it from sibling tools like search or create. The added context 'Useful for knowing what types of objects can be created' reinforces its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It identifies the use case ('Useful for knowing what types of objects can be created') but does not explicitly mention alternatives or when not to use it. This provides clear context without exclusion criteria, meriting a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capacities_get_space_infoA
Get detailed information about a Capacities space including available object types (structures), collections, and property definitions.
| Name | Required | Description | Default |
|---|---|---|---|
| spaceId | Yes | The UUID of the space to get info for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the scope of the returned information, but it does not explicitly state that this is a read-only operation, mention permission requirements, or discuss potential errors. The name 'get' implies safety, but explicit disclosure would improve 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, focused sentence that conveys the purpose and key contents without any fluff. Every word earns its place, and it is appropriately front-loaded with the primary action 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?
Since there is no output schema, the description compensates by listing what the returned info includes (object types, collections, property definitions). For a simple one-parameter tool, this is sufficiently complete. However, it could mention error behavior or required permissions for full 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 description coverage is 100% for the single parameter (spaceId), and the schema already documents it as 'The UUID of the space to get info for'. The description adds minimal extra meaning beyond the schema, so a 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 uses a specific verb ('Get') and clearly identifies the resource ('detailed information about a Capacities space') along with its contents (object types, collections, property definitions). This distinguishes it from sibling tools like list_spaces and get_object_types, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need detailed info about a specific space. It provides clear context but does not explicitly mention alternatives or exclusions. While it doesn't name sibling tools, the purpose is self-evident enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capacities_list_spacesA
List all Capacities spaces the user has access to. Returns space IDs, titles, and icons.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It explicitly states this is a read-only 'List' operation and discloses the return contents (space IDs, titles, icons). This is sufficient for a simple query tool, though it omits details like ordering or pagination, which are likely irrelevant for a list of spaces.
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 exactly two sentences, front-loaded with the action ('List'), and every word contributes meaning. There is no redundancy or fluff.
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 parameterless list tool with no output schema, the description fully covers the purpose, scope, and return fields. It provides all essential context an agent needs to use it 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?
The tool has zero parameters, so the baseline is 4. The schema is empty, and the description does not need to explain parameters. The description adds value by explaining what the tool returns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and identifies the exact resource ('all Capacities spaces the user has access to'). It clearly distinguishes this from sibling tools like capacities_get_space_info, which likely targets a single space, and capacities_search, which searches content.
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 clearly implies when to use this tool: when an overview of all spaces is needed. It does not explicitly mention alternatives or exclusions, but the context is clear enough for an agent to select it over siblings for listing all spaces.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capacities_open_objectA
Open a specific object in Capacities by its URL/deeplink.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The Capacities URL/deeplink to open (e.g., capacities://...) |
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 of behavioral disclosure. It only says 'open' without explaining what happens to the user (e.g., launches the app, returns no data) or any side effects. This is a significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that communicates the core purpose without any wasted words. It is concise and front-loaded.
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 is simple with one parameter and no output schema, but the lack of annotations means the description should clarify behavioral expectations, such as whether it returns data or just triggers an action. It doesn't, leaving some ambiguity about the tool's 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?
The input schema already fully describes the url parameter with an example (capacities://...), and the description adds no additional meaning beyond 'specific object'. With 100% schema description coverage, the 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 action (open), the resource (a specific object in Capacities), and the mechanism (URL/deeplink). This distinguishes it from siblings like capacities_search or capacities_create_object, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for opening an existing object when you have its URL/deeplink, giving clear context. However, it does not explicitly mention when not to use it or mention alternatives, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capacities_save_weblinkB
Save a URL/weblink to Capacities with optional metadata, tags, and notes.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to save | |
| tags | No | Tags to apply to the weblink | |
| title | No | Optional title for the weblink | |
| content | No | Markdown notes to add to the weblink | |
| spaceId | Yes | The UUID of the space to save the weblink to | |
| description | No | Optional description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the action ('save') but does not mention side effects, required permissions, idempotency, or what happens on duplicates. The lack of behavioral context for a write operation is a significant gap.
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 that immediately conveys the tool's purpose and optional capabilities. There is no wasted wording or redundancy.
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 mutation tool with no annotations and no output schema, the description is minimal. It explains the basic action but lacks return value details, prerequisite context, or guidance on when to use it relative to siblings. The description leaves the agent under-informed for 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 well-documented. The description adds a high-level summary ('optional metadata, tags, and notes') that maps to the schema but does not provide additional meaning beyond what the schema already states. 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 ('Save a URL/weblink') and the destination ('to Capacities'), with a specific verb and resource. It distinguishes itself from sibling tools like capacities_create_object or capacities_add_to_daily_note by focusing on weblinks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for saving weblinks with optional metadata, tags, and notes, but does not explicitly state when to use this tool over alternatives like capacities_create_object. There are no exclusions or alternative suggestions, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capacities_searchA
Search for objects by title in a Capacities space. Returns matching objects with their IDs, structure types, and titles.
| Name | Required | Description | Default |
|---|---|---|---|
| spaceId | Yes | The UUID of the space to search in | |
| searchTerm | Yes | The search term to look for in object titles |
TDQS
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 discloses the return fields (IDs, structure types, titles) but does not mention permissions, no-match behavior, search semantics (e.g., partial vs exact match), or potential side effects. This is acceptable for a simple read-only search but leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence plus a return clause, front-loaded with the main action ('Search for objects by title'). It contains no redundant or filler wording.
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 tool with two well-documented parameters, the description covers the purpose and the return values, which is sufficient given the lack of an output schema. It could mention edge cases like empty results or pagination, but for the complexity level it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning both parameters (spaceId, searchTerm) are already well documented. The description adds no new parameter-specific semantics beyond reinforcing that search is by title, so a 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 it searches for objects by title within a Capacities space and specifies the returned fields (IDs, structure types, titles). This distinguishes it from sibling tools like listing spaces, creating objects, or getting current object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when searching objects by title, but it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. It provides clear context but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have clearly distinct purposes (listing spaces, searching, creating objects, saving weblinks, etc.), but capacities_get_space_info and capacities_get_object_types both return object type information, creating potential confusion. Otherwise, the boundaries are clear.
All tools follow a consistent 'capacities_<verb>_<noun>' snake_case pattern with verbs like list, get, create, save, add, and open. The naming is uniform and predictable.
Nine tools is well within the ideal range for a domain-specific server, covering core operations without unnecessary bloat. Each tool serves a recognizable function.
The server provides creation, search, and navigation features, but lacks update/delete operations and a direct get-object-by-ID method (get_current_object only returns limited info). These are notable gaps for full lifecycle management.
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
Securely search, create, and organize your Mem notes and collections from AI assistants.
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Personal wiki and memory layer for AI assistants. Persistent, structured memory across sessions.
Search your knowledge bases from any AI assistant using hybrid RAG.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to interact with Obsidian vaults, providing tools for reading, creating, editing and managing notes and tags.4,785729MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to interact with Anytype data through the local API, allowing search, creation, modification, and export of objects, spaces, and lists.1824
- 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
- AlicenseAqualityCmaintenanceEnables AI assistants to search, read, and traverse Markdown note vaults (Obsidian-compatible) with full-text search, backlinks, knowledge graphs, and a persistent memory system for cross-session context.16172MIT
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/ajokunu/capacities-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server