Excalidraw MCP Server
Server Quality Checklist
Latest release: v1.0.0
- Disambiguation5/5
Each tool has a clearly distinct purpose targeting specific actions on Excalidraw elements or resources. There is no overlap between creation, deletion, updating, querying, grouping, locking, alignment, distribution, or file operations. The descriptions reinforce these distinct roles, making tool selection unambiguous.
Naming Consistency5/5All tool names follow a consistent verb_noun pattern using snake_case (e.g., create_element, delete_element, group_elements). The naming convention is uniform throughout the set, with verbs clearly indicating actions and nouns specifying targets, making the tools predictable and easy to understand.
Tool Count5/5With 12 tools, the server is well-scoped for managing Excalidraw diagrams, covering essential operations like CRUD for elements, grouping, locking, alignment, distribution, querying, and file saving. Each tool serves a distinct and necessary function, with no redundancy or excessive complexity.
Completeness5/5The tool set provides complete coverage for the Excalidraw domain, including full CRUD lifecycle for elements (create, query, update, delete), grouping/ungrouping, locking/unlocking, alignment/distribution, and scene saving. There are no obvious gaps; agents can perform all core diagram editing and management tasks without dead ends.
Average 2.7/5 across 12 of 12 tools scored. Lowest: 1.8/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 0 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
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
- Behavior1/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but provides almost none. 'Distribute elements evenly' doesn't reveal whether this is a read-only or destructive operation, what permissions might be required, whether it modifies existing elements or creates new ones, or what happens on failure. For a tool that likely performs spatial/visual operations, this lack of behavioral context is severely inadequate.
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 maximally concise at just three words. There's no wasted language or unnecessary elaboration. While this conciseness comes at the cost of completeness, the description itself is perfectly structured as a simple, direct statement of function.
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 complexity implied by spatial distribution operations, 2 parameters with 0% schema coverage, no annotations, and no output schema, the description is completely inadequate. It doesn't explain what 'elements' are in this system, what 'distribute evenly' means operationally, what the tool returns, or any error conditions. For a tool that likely performs non-trivial layout operations, this minimal description leaves the agent with insufficient context.
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?
With 0% schema description coverage and 2 parameters, the description provides no information about parameter meanings beyond what's implied by the tool name. The schema shows 'elementIds' (array of strings) and 'direction' (horizontal/vertical enum), but the description doesn't explain what element IDs refer to, what 'distribute evenly' means in horizontal vs. vertical contexts, or how the distribution algorithm works. The description fails to compensate for the complete lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose2/5Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Distribute elements evenly' is a tautology that essentially restates the tool name 'distribute_elements' without adding meaningful specificity. It mentions 'elements' and 'evenly' but doesn't clarify what type of elements (e.g., UI components, graphical objects) or what distribution means in this context. While it distinguishes from some siblings like 'create_element' or 'delete_element', it doesn't clearly differentiate from 'align_elements' which might have similar visual/spatial functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines1/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides absolutely no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, appropriate contexts, or comparison with sibling tools like 'align_elements' or 'group_elements'. The agent must guess based solely on the tool name and minimal description.
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 full burden for behavioral disclosure. It states it's a query operation with optional filters, implying it's read-only and non-destructive, but doesn't specify authentication needs, rate limits, error conditions, or what happens with invalid filters. For a tool with 2 parameters and no annotation coverage, this leaves significant behavioral gaps.
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 a single, efficient sentence that gets straight to the point without unnecessary words. It's appropriately sized for a basic query tool, though it could be more informative without sacrificing 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 has 2 parameters (one with an enum, one as a nested object), no annotations, and no output schema, the description is insufficient. It doesn't explain the return format, how results are structured, or provide enough context about parameter usage to make the tool fully understandable without external documentation.
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 description mentions 'optional filters' which hints at the 'filter' parameter, but with 0% schema description coverage, it doesn't explain what 'type' does (despite having an enum) or provide details about the filter object's structure or usage. The description adds minimal value beyond the bare schema, failing to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose3/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's purpose as 'Query Excalidraw elements with optional filters', which clearly indicates it retrieves elements with filtering capabilities. However, it doesn't differentiate from sibling tools like 'get_resource' (which might also retrieve data) or specify what makes this query operation unique compared to other read operations in the toolset.
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. It doesn't mention when query_elements is appropriate compared to other tools like 'get_resource' (which might fetch different resources) or 'create_element'/'update_element' for modifications. There's no context about prerequisites, typical use cases, or exclusions.
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 implies a mutation ('align'), but doesn't specify if it requires permissions, is reversible, affects other properties, or has side effects. No rate limits, auth needs, or output format are mentioned, leaving significant gaps for a tool that likely modifies elements.
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, efficient sentence with no wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly, though this conciseness comes at the cost of detail.
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 (mutating elements with two parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral traits, parameter meanings, or usage context, making it inadequate for safe and effective tool invocation by an agent.
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?
Schema description coverage is 0%, so the description must compensate but adds no parameter details. It doesn't explain what 'elementIds' are (e.g., identifiers of elements to align) or clarify 'alignment' beyond the enum values, failing to provide meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose3/5Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Align elements to a specific position' clearly states the verb ('align') and resource ('elements'), but it's vague about what 'elements' are (e.g., UI components, graphics) and doesn't distinguish from siblings like 'distribute_elements' or 'group_elements'. It avoids tautology by not just restating the name, but lacks specificity.
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. The description doesn't mention prerequisites, exclusions, or compare to sibling tools like 'distribute_elements' or 'group_elements', leaving the agent to infer usage from context alone.
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 the action ('group') but doesn't describe what grouping entails (e.g., creates a parent container, applies transformations, affects visibility), whether it's destructive to individual elements, permissions needed, or response format. This is a significant gap for a mutation 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste—it directly states the tool's action without fluff. It's appropriately sized for a simple tool, though this conciseness comes at the cost of detail. Every word earns its place by conveying the core function.
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 (a mutation operation with 1 parameter), lack of annotations, no output schema, and low schema description coverage, the description is incomplete. It doesn't explain the grouping behavior, return values, error conditions, or how it fits with siblings like 'ungroup_elements'. For a tool that likely modifies state, this is inadequate.
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 input schema has 1 parameter with 0% description coverage, so the description must compensate. It mentions 'multiple elements' which hints at the 'elementIds' array parameter, but doesn't explain what element IDs are (e.g., strings, UUIDs), how to obtain them, or constraints (e.g., minimum count, valid IDs). The description adds minimal value beyond the schema's structural definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose3/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('group') and target ('multiple elements'), which provides a basic understanding of purpose. However, it's vague about what 'elements' are in this context (e.g., UI components, graphic objects, data items) and doesn't differentiate from siblings like 'align_elements' or 'distribute_elements' beyond the grouping action. It avoids tautology by not just restating the name, but lacks specificity.
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. It doesn't mention prerequisites (e.g., elements must exist), exclusions (e.g., cannot group locked elements), or compare to siblings like 'ungroup_elements' for reversal. Usage is implied from the action but not explicitly stated, 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.
- 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 behavioral disclosure. It states the tool 'unlock elements to allow modification,' which implies a mutation operation that changes state from locked to unlocked. However, it lacks details on permissions needed, whether unlocking is reversible, side effects, rate limits, or what happens if elements are already unlocked. This is a significant gap for a mutation 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence ('Unlock elements to allow modification'), which is front-loaded and wastes no words. It efficiently states the core action and purpose without unnecessary elaboration, making it easy to parse quickly.
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 complexity of a mutation tool with no annotations, 1 undocumented parameter, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like safety, permissions, or side effects, nor does it explain parameters or return values. For a tool that likely changes system state, this leaves critical gaps for an AI agent to use it correctly.
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 input schema has 1 parameter with 0% description coverage, and the tool description provides no information about parameters. It doesn't explain what 'elementIds' are, their format, or constraints (e.g., valid IDs, maximum array size). For a single required parameter with no schema documentation, the description fails to compensate, leaving the parameter meaning unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose3/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('unlock') and target ('elements'), but it's vague about what 'elements' are in this context and doesn't differentiate from sibling tools like 'lock_elements' or 'update_element'. It specifies the purpose as allowing modification, which is helpful but lacks specificity about the resource domain.
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 'lock_elements' (for opposite action) or 'update_element' (for modification after unlocking). The description implies usage when modification is needed, but it doesn't specify prerequisites, exclusions, or contextual triggers for unlocking elements.
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. It states 'Create' which implies a write operation, but doesn't disclose behavioral traits like whether this requires specific permissions, if it's idempotent, what happens on duplicate creation, or what the response looks like. For a creation tool with zero annotation coverage, this is a significant gap in transparency.
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, efficient sentence that gets straight to the point with zero waste. It's appropriately sized for a basic tool definition and front-loaded with the core action, making it easy to parse quickly.
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 complexity (13 parameters, creation operation) and lack of annotations or output schema, the description is incomplete. It doesn't explain what an 'Excalidraw element' is, provide parameter guidance, describe the return value, or address error conditions. For a tool with many parameters and no structured support, this leaves too much undefined.
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 description adds no meaning beyond what the input schema provides. With 13 parameters and 0% schema description coverage, the schema only defines types and enums without explaining what parameters like 'roughness', 'opacity', or 'fontFamily' do. The description doesn't compensate by explaining any parameters, leaving their semantics entirely undocumented.
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 verb 'Create' and the resource 'Excalidraw element', making the purpose immediately understandable. It distinguishes from siblings like 'update_element' or 'delete_element' by specifying creation. However, it doesn't specify what an 'Excalidraw element' is beyond the name, leaving some ambiguity about the domain context.
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 like 'update_element' for modifying existing elements or 'query_elements' for retrieval. It lacks any context about prerequisites, such as whether a scene must be loaded first, or when creation might fail.
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 behavioral disclosure. 'Update' implies mutation, but it doesn't specify permissions required, whether changes are reversible, error handling, or rate limits. This is a significant gap for a mutation 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, making it easy to parse without unnecessary elaboration.
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 complexity (14 parameters, mutation operation, no annotations, no output schema), the description is incomplete. It lacks parameter details, behavioral context, and usage guidelines, making it inadequate for effective tool selection and invocation.
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 provides no parameter information. It doesn't explain what parameters like 'id', 'type', or 'roughness' mean, their formats, or how they affect the update. With 14 parameters, this leaves the agent guessing.
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 action ('Update') and target ('an existing Excalidraw element'), providing a specific verb+resource. However, it doesn't differentiate from sibling tools like 'create_element' or 'lock_elements' beyond the basic operation type, missing explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/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. It doesn't mention prerequisites (e.g., needing an existing element ID), exclusions, or comparisons to siblings like 'create_element' for new elements or 'lock_elements' for protection.
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. It states the action ('Delete') but lacks critical behavioral details: whether deletion is permanent or reversible, if it requires specific permissions, what happens to related elements (e.g., in groups), or error conditions (e.g., invalid ID). This is inadequate for a destructive operation 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately understandable without unnecessary elaboration.
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?
For a destructive tool with no annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't address behavioral risks, parameter semantics, or usage context, leaving significant gaps that could lead to incorrect agent decisions.
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 input schema has 1 parameter with 0% description coverage, so the schema provides no semantic context. The description doesn't add any parameter information—it doesn't explain what 'id' represents (e.g., element identifier format), where to obtain it, or validation rules. This fails to compensate for the low schema coverage.
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 verb ('Delete') and resource ('an Excalidraw element'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'update_element' or 'lock_elements' in terms of when deletion is appropriate versus modification or state changes.
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. It doesn't mention prerequisites (e.g., element must exist), exclusions (e.g., cannot delete locked elements), or comparisons to siblings like 'update_element' for modifications or 'query_elements' for checking status before deletion.
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 behavioral disclosure. It states the tool prevents modification, implying a mutation that changes element state, but doesn't describe permissions needed, whether locking is reversible, effects on other operations, or error conditions. This leaves significant gaps 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, efficient sentence with zero waste. It's front-loaded with the core action and purpose, making it easy to parse quickly. Every word earns its place without redundancy.
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 complexity of a mutation tool with no annotations, 0% schema coverage, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like side effects, return values, or error handling, leaving the agent with insufficient context to use the tool effectively.
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?
Schema description coverage is 0%, so the description must compensate for the undocumented parameter 'elementIds'. It implies the parameter is for specifying elements to lock, but doesn't explain what element IDs are, their format, or constraints like maximum array size. This adds minimal value beyond the schema's structure.
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 verb ('lock') and resource ('elements') with the purpose to 'prevent modification'. It distinguishes from siblings like 'unlock_elements' and 'update_element' by specifying a protective action. However, it doesn't specify what type of elements or what modification means in this context, keeping it from a perfect score.
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 like 'unlock_elements' for reversing the action, or 'update_element' for modifications. It lacks context about prerequisites, such as whether elements must be unlocked first, or exclusions for certain element types.
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. It only states 'Get', implying a read operation, but doesn't disclose behavioral traits such as authentication needs, rate limits, error handling, or what 'Get' entails (e.g., returns data, metadata, or files). This leaves significant gaps in understanding how the tool behaves.
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 extremely concise with a single sentence, 'Get an Excalidraw resource', which is front-loaded and wastes no words. Every part of the sentence is necessary, making it efficient and well-structured.
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 simplicity (1 parameter, no output schema, no annotations), the description is incomplete. It doesn't explain what 'resource' means, what types of resources are available, or what the tool returns. For a tool with no annotations or output schema, more context is needed to understand its full functionality and use cases.
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?
The description adds minimal meaning beyond the input schema. With 0% schema description coverage and 1 parameter, the description doesn't explain the 'resource' parameter or its enum values. However, since there's only one parameter and the schema defines it clearly with an enum, the baseline is high. The description doesn't compensate for the lack of schema descriptions but doesn't need to heavily due to the simple parameter structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose3/5Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get an Excalidraw resource' states a verb ('Get') and resource ('Excalidraw resource'), but is vague about what 'resource' specifically means. It doesn't distinguish from siblings like 'query_elements' or 'save_scene', which also involve Excalidraw resources. The purpose is understandable but lacks specificity.
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. For example, it doesn't explain if this is for retrieving metadata, configurations, or raw data, or how it differs from siblings like 'query_elements'. The description offers no context for selection among the available tools.
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 full burden. It states the action ('ungroup') but doesn't disclose behavioral traits such as whether this is a destructive operation (e.g., does it delete the group or just dissolve it?), permission requirements, side effects on element properties, or error conditions. The description is minimal and lacks critical context 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 extremely concise with a single sentence ('Ungroup a group of elements'), which is front-loaded and wastes no words. It directly states the purpose without unnecessary elaboration, making it efficient for quick understanding.
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 (a mutation operation with no annotations, 1 parameter at 0% coverage, and no output schema), the description is incomplete. It doesn't explain what 'ungroup' entails (e.g., whether elements retain properties, if the group is deleted), provide usage context, or detail parameter meaning. For a tool that likely modifies state, this is insufficient.
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 implies a 'groupId' parameter but doesn't explain its semantics (e.g., what format it expects, how to obtain it, or what happens if invalid). The description adds minimal value beyond the schema, resulting in a baseline score due to inadequate parameter explanation.
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 action ('ungroup') and target ('a group of elements'), providing a specific verb+resource combination. It distinguishes from siblings like 'group_elements' (opposite operation) and 'delete_element' (different action). However, it doesn't specify what happens to the elements after ungrouping or what 'ungroup' means in this context.
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 about when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing an existing group), exclusions (e.g., what happens if elements aren't grouped), or comparisons to siblings like 'delete_element' (which might remove elements entirely). Usage is implied but not explicitly stated.
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. It mentions saving to a file but doesn't disclose behavioral traits like whether it overwrites existing files, requires write permissions, handles errors, or what happens if no elements exist. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
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, efficient sentence with zero waste. It front-loads the core action and resource, making it easy to parse. Every word earns its place by specifying the tool's purpose clearly without redundancy.
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?
Given the tool's moderate complexity (saving scene state) and lack of annotations or output schema, the description is minimally adequate. It covers the basic purpose but lacks details on behavior, error handling, or output format beyond the file extension. For a mutation tool, more context would be helpful, but it meets the minimum viable threshold.
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 100%, so the schema already documents the single parameter 'filename' with its type, optionality, and default value. The description adds no additional meaning beyond what the schema provides, such as filename constraints or usage examples. Baseline 3 is appropriate when the schema does the heavy lifting.
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 specific action ('Saves') and the resource ('current Excalidraw elements and scene state'), with the output format specified ('.excalidraw file'). It distinguishes from siblings like 'create_element' or 'update_element' by focusing on file export rather than element manipulation.
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. It doesn't mention prerequisites (e.g., needing existing elements to save), exclusions, or comparisons with other tools like 'get_resource' which might retrieve files. The description only states what it does, not when it's appropriate.
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/Abdullah007bajwa/mcp_excalidraw'
If you have feedback or need assistance with the MCP directory API, please join our Discord server