pymnifocus
Server Quality Checklist
Latest release: v0.1.2
- Disambiguation5/5
Each tool targets a distinct operation: adding, editing, removing, querying, listing tags/perspectives, etc. The batch variants are clearly separated from single-item operations, and the query/dump tools serve different analytical needs.
Naming Consistency4/5Most tools follow a clear verb_noun pattern such as add_project, remove_item, list_tags. Minor deviations like dump_database and query_omnifocus use different prefixes, but the overall style remains readable and predictable.
Tool Count5/511 tools is well-scoped for an OmniFocus MCP server, covering CRUD operations, batch operations, querying, and viewing perspectives/tags. The count feels balanced and not excessive for the domain.
Completeness4/5Core lifecycle operations are covered (add, edit, remove, batch, query), along with supporting features like tags and perspectives. Minor gaps exist, such as no explicit 'complete task' tool, but these can be handled via edit_item or query filters.
Average 3.1/5 across 11 of 11 tools scored. Lowest: 2.4/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 10 commits in the last 12 weeks
- Last stable release on
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for disclosing behavior. It only says 'Edit' without explaining whether it partially updates or overwrites fields, how items are identified (id vs. name), or what side effects occur. The rich schema suggests complex behavior that is completely unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness3/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, taut sentence that is efficient but under-specifies. It avoids fluff but fails to provide substance beyond the purpose, making it less useful than a structurally complete description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness1/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, no annotations, and 0% schema coverage, the description is severely inadequate. It does not explain update semantics, item selection, or the meaning of the numerous optional fields. An output schema exists but does not compensate for the lack of input guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no parameter meaning. It does not clarify the roles of id/name for identification, nor the meaning of new_* fields for updates. The agent is left to infer everything from parameter names, which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Edit') and resource ('task or project in OmniFocus'), which distinguishes it from sibling tools that add or remove items. However, it does not specify what aspects can be edited (e.g., name, notes, dates), leaving the purpose slightly underspecified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like add_omnifocus_task or remove_item. There is no mention of prerequisites, such as needing an existing item ID or name, nor any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits but only states the action. It does not mention side effects, validation requirements, error behavior, or whether the task is created synchronously. For a mutation tool, this 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is front-loaded with the action and resource, which is ideal for conciseness. However, this brevity comes at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness1/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, mutation, no annotations, 0% schema coverage), the description is severely incomplete. It provides no context about parameter relationships, return values, or operational constraints. Even with an output schema, the description fails to cover essential context for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 11 parameters with 0% description coverage, and the tool description provides no parameter information at all. It does not even mention the required 'name' field or any optional fields, leaving the agent to infer semantics entirely from parameter names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Add a new task to OmniFocus' clearly identifies the action (add) and resource (task in OmniFocus). It is distinct from sibling tools like batch_add_items (batch addition) and add_project (project creation), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as batch_add_items or add_project. No mention of prerequisites like project existence, or whether this tool should be preferred for single-task creation. The description simply states the action without contextual usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action without describing side effects, idempotency, permission requirements, or return values. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler or redundancy. Every word earns its place, and the main action is front-loaded. It is appropriately concise for the amount of information it claims to convey.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness1/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, no annotations, and a single verb phrase, the description is grossly incomplete. It fails to explain the purpose of parameters, any preconditions, or expected outcomes. The presence of an output schema does not compensate for this lack of context, as the tool's behavior and parameter usage remain unclear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no parameter semantics beyond the action. With 9 parameters, the description provides no context for their meaning, formatting, or required options. The description does not compensate for the schema's lack of parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add') and the specific resource ('a new project to OmniFocus'), effectively distinguishing it from sibling tools like 'add_omnifocus_task'. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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 'add_omnifocus_task' or 'batch_add_items'. It only states the basic function, so the agent has no explicit context for choosing this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It only says 'Get the complete current state,' which indicates a read operation but does not disclose whether the tool is read-only, the potential size of the result, performance implications, or any side effects. The description adds minimal behavioral context beyond the verb itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise at two sentences, which is efficient. The phrase 'Best for comprehensive analysis' adds minimal value but is not wasteful. However, the brevity sacrifices critical information, so while it's concise, it could be restructured to include more useful details without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema but no annotations, the description should at least clarify the scope of 'complete state' (e.g., includes tasks, projects, tags) and how the boolean parameters affect output. The description is too sparse for a database dump tool that could produce large results and has filtering options. The output schema exists but is not referenced, and the description does not provide enough context for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention either parameter (hide_completed, hide_recurring_duplicates). The description fails to explain how these booleans affect the output, and the phrase 'complete current state' is actually misleading given that hide_completed defaults to true, meaning the dump is not complete by default. The description provides no added semantic value for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the complete current state of the OmniFocus database, which is a specific verb+resource pairing. The phrase 'complete current state' and 'comprehensive analysis' help distinguish it from sibling tools like query_omnifocus, though it doesn't explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for comprehensive analysis, giving a use case context. However, it does not explicitly mention when to avoid this tool or suggest alternatives like query_omnifocus for targeted queries. The guidance is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure, but it only states the basic 'get' action. It does not mention whether the operation is read-only, how it reacts to an invalid perspective name, or any constraints on returned data such as ordering, limit application, or metadata inclusion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler or repetition. It is front-loaded and every word contributes to the core purpose, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the tool has three parameters, no annotations, and 0% schema description coverage. The description is too sparse to fully contextualize how to invoke the tool correctly; it omits all parameter semantics and usage guidance, leaving a significant completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no explanatory value for any of the three parameters. It does not elaborate on what perspective_name means, how limit is applied, or what include_metadata controls, leaving the agent to rely solely on the schema titles and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and a specific resource ('items visible in a specific OmniFocus perspective'), clearly indicating the tool's function. It is easily distinguished from sibling tools like list_perspectives (which lists perspective names) and add_omnifocus_task (which creates items).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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 alternative querying approaches like query_omnifocus or dump_database. It does not mention prerequisites, such as needing to obtain the perspective name via list_perspectives, nor does it clarify what kind of perspective filtering is intended.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It discloses the resource types and size limit but does not mention irreversibility, partial failure behavior, or any side effects of removing tasks/projects. Since removal is destructive, this lack of warning 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource, includes the key constraint (max 100), and contains no filler. It is appropriately concise for the limited scope of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a destructive batch operation with minimal schema guidance. Although an output schema exists (not shown), the description does not clarify error handling, atomicity, or which fields are expected in items. Given the complexity of batch mutations, the description is insufficient for an agent to use it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter, items, which is an array of arbitrary objects with no property descriptions (schema coverage 0%). The description adds no detail about the required structure of each item (e.g., ID, type). The agent cannot infer how to construct valid item objects, so parameter semantics are almost entirely undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool removes multiple tasks or projects in a single operation, specifying the action (remove), the object (tasks/projects), and scope (multiple, max 100). This distinguishes it from the singular remove_item sibling and the batch_add_items tool, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for batch removals by noting 'multiple tasks or projects' and the 100-item limit, but it does not explicitly state when to use this tool over remove_item or when not to use it (e.g., for single items). No exclusions or alternative guidance is provided, so usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'List all available perspectives' but does not disclose that the include_custom and include_built_in parameters control which perspectives are returned, nor does it mention that listing is a read-only operation (though implied). The description is misleading by saying 'all' when filtering options exist, and lacks detail on side effects or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no fluff or repetition. It is front-loaded with the action and resource, making it highly concise and well-structured for a simple list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (reducing the need to describe return values) and the tool is simple, the description is incomplete because it fails to clarify parameter semantics and usage context. With no annotations and sibling tools like get_perspective_view, the description leaves the agent uncertain about when to use this tool and how to filter perspectives effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description provides no explanation of the include_custom and include_built_in parameters. An agent cannot infer what 'custom' vs 'built-in' perspectives mean or how the defaults behave beyond the schema's basic titles/defaults. The description adds zero value for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and clear resource ('all available perspectives in OmniFocus'), which clearly distinguishes it from sibling tools like get_perspective_view (which focuses on a single perspective's view) and list_tags (which lists tags). The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly suggests use when a list of all perspectives is needed, but it does not explicitly state when to use this tool over alternatives like query_omnifocus or dump_database, nor does it provide exclusions or context about filtering. Usage guidance is implied by the tool's nature but not explicitly articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses only the max limit and batch nature, but omits critical behavior such as partial-failure handling, atomicity, validation rules, or output structure. For a mutation tool, 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.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence, front-loaded with the action, and includes the important max-100 limit. It is efficient and well-structured, though it sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (array of arbitrary objects), a schema with no property definitions, and the absence of annotations, this description is far too sparse. It does not explain the item format, expected fields, or behavioral outcomes, making it insufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter with additionalProperties true and zero property definitions (0% schema coverage). The description only mentions 'tasks or projects' but fails to specify how each item should be structured, what fields are required, or how to differentiate between a task and a project.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Add'), the resource ('multiple tasks or projects'), and a key constraint ('max 100'). It effectively differentiates from singular tools like add_omnifocus_task and add_project, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'in a single operation' implies use when batching multiple items, providing clear context. No explicit alternatives are named, but the sibling tools indicate singular options, so the usage is reasonably clear. However, it lacks explicit 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds the useful detail that tags are returned with their hierarchy, but it does not disclose the behavior of the include_dropped parameter or any other side effects (though read-only is implied by 'list').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that communicates the core purpose without waste. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one optional parameter and an output schema present, the description is adequate for basic use. However, it omits any mention of the include_dropped parameter, which could lead to incorrect invocation when dropped tags are involved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the include_dropped parameter at all. The agent receives no guidance on what this boolean controls, making parameter semantics poor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb (list), a resource (all tags in OmniFocus), and a scope (with hierarchy). This distinguishes it from sibling tools like add_omnifocus_task (write operation) and list_perspectives (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided about when to use this tool versus alternatives like query_omnifocus. The description implies usage for listing tags but does not mention exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states the action but doesn't disclose whether removal is permanent, what happens to subtasks, what occurs if both id and name are provided, or error behavior when the item isn't found. The phrase 'Provide either id or name' is parameter guidance, not 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the purpose, and contains zero redundant or irrelevant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and an output schema exists, so return values don't need to be explained. However, the description lacks differentiation from 'batch_remove_items' and doesn't cover important behavioral details like the required item_type or the mutual exclusivity of id/name. It's adequate for a basic understanding but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and parameters lack descriptions. The description adds meaning by indicating that id and name are alternative identifiers ('Provide either id or name') and that item_type relates to 'task or project'. This clarifies all three parameters beyond what the schema provides, though it doesn't explicitly state enum values or the requirement to provide at least one identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and the resource ('a task or project from OmniFocus'), which is specific and unambiguous. It distinguishes from the sibling 'batch_remove_items' by implying single-item removal, even though it doesn't explicitly say so.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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 'batch_remove_items'. The description doesn't mention exclusions, prerequisites, or scenarios where another 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.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses that completed tasks are excluded by default and require include_completed=true, and explains the date format for completedAfter/completedBefore filters. This adds meaningful behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, front-loaded with the main purpose, and contains no filler. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the tool has 8 parameters and no annotations. The description only covers task completion filters and ignores how to query projects/folders, use fields/sorting/limit, or handle other filter scenarios. A more thorough description is needed for a complex query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning to the 'filters' object by naming completedAfter/completedBefore, and clarifies include_completed. However, other parameters like entity, fields, limit, and sort_by are not described, leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries the OmniFocus database and retrieves specific tasks, projects, or folders. The verb 'query' plus the resource types distinguishes it from sibling tools that add, edit, or remove items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for querying rather than adding/editing/removing, but does not explicitly name alternatives or state when not to use it. It provides filter context but lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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/vdanen/pymnifocus'
If you have feedback or need assistance with the MCP directory API, please join our Discord server