excalidraw-mcp-server
Server Quality Checklist
Latest release: v2.0.0
- Disambiguation4/5
Most tools have distinct purposes, such as create_element vs. update_element vs. delete_element for element lifecycle, and align_elements vs. distribute_elements for layout. However, some overlap exists between lock_elements/unlock_elements and group_elements/ungroup_elements, which could cause minor confusion as they both manage element states, but descriptions clarify their specific actions.
Naming Consistency5/5Tool names follow a consistent verb_noun pattern throughout, such as create_element, delete_element, align_elements, and export_scene. All tools use snake_case, and verbs are clear and predictable, making the set easy to navigate and understand.
Tool Count4/5With 16 tools, the count is slightly high but reasonable for a diagramming server covering creation, manipulation, querying, and export. It includes core operations without being overly bloated, though it could be streamlined by merging some related tools like lock/unlock or group/ungroup.
Completeness5/5The tool set provides comprehensive coverage for Excalidraw diagramming: full CRUD for elements (create, read via query_elements/get_resource, update, delete), layout tools (align, distribute), grouping and locking, import from Mermaid, export to PNG/SVG, and a reference guide. No obvious gaps exist for the domain.
Average 3/5 across 16 of 16 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- 0 of 1 community issues answered or closed 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 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.
This repository includes a glama.json configuration file.
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?
No annotations are provided, so the description carries the full burden. It mentions 'allow modification', which hints at a state change, but doesn't disclose behavioral traits such as permissions required, whether unlocking is reversible, side effects, or error conditions. This is inadequate 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, clearly stating the core action 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 of a mutation tool with no annotations, 0% schema coverage, and no output schema, the description is incomplete. It lacks details on behavior, parameters, and expected outcomes, making it insufficient for an agent to use the tool effectively without additional 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?
Schema description coverage is 0%, and the description adds no information about the 'elementIds' parameter beyond what the schema provides (an array of strings). It doesn't explain what element IDs are, their format, or how to obtain them, failing to compensate for the coverage gap.
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 'Unlock elements to allow modification' states the verb ('unlock') and resource ('elements'), but it's vague about what 'elements' are and doesn't distinguish from sibling tools like 'lock_elements' or 'update_element'. It provides a basic purpose but lacks specificity about the domain or system 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 on when to use this tool versus alternatives like 'lock_elements' or 'update_element'. The description implies usage for enabling modifications but doesn't specify prerequisites, conditions, or exclusions, leaving the agent to infer context from sibling tool names 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?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states the action but doesn't disclose critical traits like whether grouping is reversible, requires permissions, affects element properties, or has side effects. The description doesn't contradict annotations (none exist), but it fails to compensate for their absence.
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, front-loaded sentence that directly states the tool's purpose. There is zero wasted verbiage, and it efficiently communicates the core action without unnecessary details.
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 or output schema), the description is incomplete. It lacks information about what grouping means in this context, the result of the operation, error conditions, or how it interacts with sibling tools. The description alone is insufficient for an agent to use the tool effectively without additional context.
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?
The description adds no parameter semantics beyond what the input schema provides. Schema description coverage is 0%, but the single parameter 'elementIds' is self-explanatory from its name and schema constraints (array of strings, min 2, max 500). Since there's only one parameter, the baseline is 4, but the description doesn't enhance understanding (e.g., explain what element IDs are or how to obtain them), so it scores slightly lower.
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 'Group multiple elements together' clearly states the action (group) and target (elements), but it's somewhat vague about what grouping entails and doesn't differentiate from sibling tools like 'align_elements' or 'distribute_elements' which also manipulate multiple elements. It avoids tautology by not just restating the name.
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 related tools like 'ungroup_elements' or 'batch_create_elements'. Usage is implied only by the tool name.
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 'Update' implies a mutation, but doesn't describe what happens if the ID doesn't exist, whether changes are reversible, permission requirements, or response format. For a mutation tool with 18 parameters and no 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 directly states the tool's core function without unnecessary words. It's appropriately sized and front-loaded, 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 (18 parameters, mutation operation, no annotations, no output schema), the description is incomplete. It doesn't explain what fields can be updated, how partial updates work, error conditions, or return values, making it inadequate for safe and effective use by an AI agent.
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 description coverage is 0%, meaning none of the 18 parameters are documented in the schema. The description adds no information about parameters beyond implying an 'id' is required, failing to compensate for the coverage gap. This leaves most parameters (e.g., 'type', 'x', 'backgroundColor') semantically unexplained.
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 ('Update') and resource ('an existing Excalidraw element by ID'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from siblings like 'create_element' or 'batch_create_elements', which would require mentioning that this modifies existing elements rather than creating new ones.
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., needing an existing element ID), exclusions, or comparisons to siblings like 'create_element' for new elements or 'delete_element' for removal, leaving the agent without contextual usage cues.
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. 'Create' implies a write/mutation operation, but the description doesn't disclose any behavioral traits: no information about permissions needed, whether creation is reversible (can elements be deleted?), what happens on failure, or any side effects. For a mutation tool with 17 parameters and no annotation coverage, 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 extremely concise at just 7 words, with zero wasted language. It's front-loaded with the core action ('Create') and resource ('Excalidraw element'), making it immediately understandable. Every word earns its place in this minimal description.
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 complex creation tool with 17 parameters, no annotations, no output schema, and 0% schema description coverage, the description is completely inadequate. It doesn't explain what gets created, how parameters interact, what the tool returns, or any behavioral characteristics. The agent would struggle to use this tool correctly without significant trial and error.
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 for 17 parameters, the description provides no parameter information whatsoever. It doesn't explain what 'type', 'x', 'y', or any other parameters mean, nor does it clarify which parameters are required vs. optional. The description doesn't compensate for the complete lack of schema documentation, leaving the agent with no semantic understanding of the 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 verb 'create' and the resource 'a single Excalidraw element on the canvas', which is specific and unambiguous. It distinguishes this from batch operations (vs. batch_create_elements) and from other creation methods (vs. create_from_mermaid). However, it doesn't explicitly differentiate from update_element or create_view, which would be needed for 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. It doesn't mention when to choose create_element over batch_create_elements for multiple elements, or when to use update_element instead for modifications. There's no context about prerequisites, dependencies, or typical use cases.
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 conversion action but doesn't describe what happens during conversion (e.g., error handling for invalid diagrams, performance characteristics, or output format). For a transformation 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 directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to understand at a glance. Every part of the sentence earns its place by conveying essential 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?
Given the complexity (2 parameters with nested objects, no annotations, no output schema), the description is incomplete. It doesn't address behavioral aspects like error handling or output format, and with 0% schema coverage, parameter details are missing. For a conversion tool with configurable options, more context is needed to use it 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%, meaning parameters are undocumented in the schema. The description adds no information about parameters beyond what the schema provides (e.g., it doesn't explain what 'mermaidDiagram' should contain or how 'config' affects conversion). With 2 parameters (one required, one optional with nested objects) and low coverage, the description fails to compensate for the schema's lack of documentation.
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's purpose: converting Mermaid diagrams to Excalidraw elements. It uses specific verbs ('convert') and identifies the resource ('Mermaid diagram') and target ('Excalidraw elements'). However, it doesn't explicitly differentiate from sibling tools like 'create_element' or 'batch_create_elements', which might also create elements but from different sources.
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., needing a valid Mermaid diagram), exclusions (e.g., what types of diagrams are supported), or comparisons to siblings like 'create_element' (which might create elements manually). Usage is implied from the purpose 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?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states the export function but doesn't disclose critical traits: whether this is a read-only operation, if it requires specific permissions, potential rate limits, file size constraints, or what happens if elementIds are invalid. For a tool with 4 parameters and no annotation coverage, 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 extremely concise with a single, front-loaded sentence: 'Export the canvas as PNG or SVG'. Every word earns its place, clearly stating the core function without redundancy. It's appropriately sized for a straightforward export 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?
Given the tool's complexity (4 parameters, no annotations, no output schema), the description is incomplete. It lacks details on behavioral aspects (e.g., side effects, error handling), parameter meanings, and usage context. Without annotations or output schema, the description should provide more comprehensive guidance but falls short, leaving gaps for effective tool 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?
Schema description coverage is 0%, so the description must compensate but adds no parameter details. It mentions 'PNG or SVG' which aligns with the 'format' enum, but doesn't explain 'elementIds', 'background', or 'padding' parameters. For a tool with 4 parameters (1 required, 3 optional) and low schema coverage, the description provides insufficient semantic context beyond the basic format hint.
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 ('Export') and resource ('the canvas'), specifying output formats (PNG or SVG). It distinguishes from siblings like 'create_element' or 'update_element' by focusing on export rather than creation or modification. However, it doesn't explicitly differentiate from potential similar tools like 'export_document' if they existed.
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 on when to use this tool versus alternatives is provided. The description doesn't mention prerequisites (e.g., needing an existing canvas), exclusions (e.g., not for real-time previews), or comparisons with siblings like 'get_resource' which might retrieve resources differently. Usage is implied by the action but not explicitly contextualized.
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 full burden but only states the action without behavioral details. It doesn't disclose if this is a mutation (likely yes), what permissions are needed, whether it's reversible, or any side effects (e.g., changes element positions). The description adds minimal context beyond the basic function.
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?
Extremely concise and front-loaded: a single phrase that directly states the tool's function and key parameter options. Every word earns its place with no redundancy or fluff.
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 mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on what 'elements' are, the effect of alignment (e.g., relative to what), error conditions, or return values. Given the context of sibling tools like 'lock_elements', more guidance on interactions would be helpful.
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 description coverage is 0%, but the description compensates by explaining the 'alignment' parameter with its enum values (left, center, right, top, middle, bottom). It doesn't explain 'elementIds' (e.g., what they are, format), but with only 2 parameters and one well-documented, it adds significant value over 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 states the action ('align') and the resource ('elements'), but it's vague about what elements are (likely UI/diagram elements) and doesn't distinguish from siblings like 'distribute_elements' or 'group_elements'. It specifies alignment options but lacks context about the 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 on when to use this tool versus alternatives like 'distribute_elements' or 'group_elements'. It implies usage for aligning multiple elements but doesn't mention prerequisites (e.g., elements must exist) or exclusions (e.g., cannot align locked 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?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool deletes an element, implying a destructive mutation, but doesn't clarify if deletion is permanent, requires specific permissions, affects related data, or has side effects (e.g., on grouped elements). This leaves significant gaps for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words, front-loading the key action and resource. It efficiently communicates the core purpose without unnecessary elaboration, making it easy for an agent 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 tool's destructive nature, no annotations, no output schema, and low schema coverage, the description is insufficiently complete. It doesn't address critical aspects like error handling, confirmation requirements, or what happens post-deletion (e.g., if the element is grouped or locked), leaving the agent with incomplete operational context.
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?
The description adds minimal semantic context beyond the input schema, which has 0% description coverage. It specifies that the 'id' parameter refers to an 'Excalidraw element', but doesn't explain format, sourcing (e.g., from 'query_elements'), or constraints. With one parameter and low schema coverage, this provides baseline clarification but lacks depth.
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 ('Delete') and the resource ('an Excalidraw element by ID'), making the purpose immediately understandable. It distinguishes from siblings like 'update_element' or 'create_element' by specifying deletion, though it doesn't explicitly contrast with alternatives like 'batch_create_elements' or 'query_elements'.
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., needing an existing element ID), exclusions (e.g., not for batch operations), or direct comparisons to siblings like 'update_element' or 'batch_create_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 mentions the action ('distribute evenly') but doesn't clarify side effects (e.g., whether it modifies element positions permanently, requires specific permissions, or has rate limits). 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 that front-loads the core action ('distribute elements evenly') and adds essential detail ('horizontal or vertical'). There is no wasted text, and it's appropriately sized for a tool with 2 parameters and no complex output schema.
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 2 parameters with 0% schema coverage, no annotations, and no output schema, the description is incomplete. It covers the basic purpose but lacks details on behavioral traits, parameter nuances (e.g., what 'elementIds' represent), and expected outcomes. For a mutation tool in a context with many siblings, this leaves significant gaps for an agent to infer correct usage.
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 by explaining that 'direction' controls horizontal or vertical distribution, which aligns with the enum in the schema. However, it doesn't clarify 'elementIds' beyond implying multiple elements, and with 2 parameters total, the description provides partial but incomplete semantic context beyond the bare schema.
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 ('distribute') and target ('elements'), specifying the distribution method ('evenly') and orientation options ('horizontal or vertical'). It distinguishes from siblings like 'align_elements' or 'group_elements' by focusing on spacing rather than alignment or grouping. However, it doesn't explicitly mention the resource context (e.g., UI elements, graphical objects), leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'align_elements' or 'group_elements'. The description implies usage for spacing elements but doesn't specify prerequisites, such as needing multiple selected elements, or exclusions, such as not working on locked elements. This lack of context makes it harder for an agent to choose appropriately among siblings.
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 implies a read-only operation ('Get'), but doesn't specify whether this requires authentication, has rate limits, returns paginated results, or what the output format looks like. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
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—a single phrase that front-loads the key information without any wasted words. Every part of the sentence directly contributes to understanding the tool's purpose and parameters, 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 complexity of retrieving multiple resource types, lack of annotations, no output schema, and low schema description coverage, the description is insufficient. It doesn't explain the differences between resource types, potential side effects, or return values, leaving the agent with incomplete information for proper tool invocation.
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?
The description lists the possible values for the 'resource' parameter (scene, elements, theme, library), which adds meaning beyond the schema's enum. However, with 0% schema description coverage, it doesn't fully compensate by explaining what each resource type entails or how the parameter affects the retrieval. The baseline is adjusted due to the low coverage, but the description provides some useful context.
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 'Get' and specifies the resources that can be retrieved (scene state, elements, theme, or library), making the purpose evident. However, it doesn't differentiate this read operation from other sibling tools like 'query_elements' or 'export_scene', which might have overlapping functionality, so it doesn't reach the highest 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 'query_elements' or 'export_scene', nor does it mention any prerequisites or exclusions. It simply lists what can be retrieved without context, leaving the agent to infer usage from the tool name and parameters 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?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'prevent modification' implies a write/mutation operation with side effects, it doesn't specify what 'lock' entails (e.g., whether it's reversible only via 'unlock_elements', permission requirements, or if it affects other operations). This leaves significant gaps for a tool that modifies state.
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 at just 5 words, front-loading the core purpose with zero wasted words. Every part of the sentence directly contributes to understanding the tool's 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?
For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is inadequate. It doesn't cover behavioral aspects like reversibility, error conditions, or what happens when elements are already locked, leaving the agent with insufficient context to use it safely.
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?
The schema has 0% description coverage, so the description must compensate. It mentions 'elements' which relates to the 'elementIds' parameter, but doesn't explain what element IDs are, their format, or the implications of locking multiple elements. This provides minimal semantic value beyond the schema's structural constraints.
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 ('Lock elements') and the purpose ('to prevent modification'), which is a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from its sibling 'unlock_elements' beyond the obvious opposite action, missing an opportunity for clearer differentiation.
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., needing element IDs), when not to use it, or how it relates to sibling tools like 'update_element' or 'unlock_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?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool searches but doesn't describe what 'search' entails—e.g., whether it returns all matches, supports pagination, requires permissions, or has 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.
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 purpose ('Search for elements') and immediately specifies the criteria, making it easy to parse. Every word earns its place.
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 3 parameters with 0% schema coverage, no annotations, and no output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral details like search scope. For a query tool with moderate complexity, this leaves the agent under-informed.
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 lists the three parameters (type, locked, groupId) and gives basic meaning (search by type, locked status, or group ID), adding value beyond the bare schema. However, it doesn't explain parameter interactions (e.g., if multiple params are used) or provide examples, leaving gaps.
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's purpose with the verb 'Search' and resource 'elements', specifying search criteria (type, locked status, group ID). It distinguishes from siblings like 'create_element' or 'delete_element' by focusing on retrieval rather than modification. However, it doesn't explicitly differentiate from potential similar search tools (none listed in siblings).
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, context for searching elements, or compare with other query/read operations (though no obvious query siblings exist). The agent must infer usage from the purpose 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. 'Remove elements from a group' implies a mutation operation, but it doesn't specify whether this is destructive (e.g., deletes elements or just ungroups them), what permissions are required, or what happens to the ungrouped elements. This leaves significant gaps for a tool that likely modifies data.
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 zero waste. It's front-loaded with the core action and resource, making it highly efficient and easy 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?
Given the complexity (a mutation tool with no annotations and no output schema), the description is incomplete. It lacks details on behavioral traits (e.g., whether removal is reversible), parameter context, and expected outcomes, making it inadequate for safe and effective use by an agent.
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 mentions 'by group ID', which aligns with the single parameter 'groupId', adding meaning beyond the schema's type constraints. However, it doesn't explain what a group ID is, its format, or where to find it, leaving some ambiguity.
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 ('Remove elements from a group') and the resource ('by group ID'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'delete_element' or 'ungroup_elements' (if that were a sibling), though the context suggests it's distinct from deletion operations.
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., needing a group to exist), exclusions, or compare to siblings like 'delete_element' or 'group_elements', leaving the agent to infer usage 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 full burden for behavioral disclosure. It only mentions the batch size limit (max 100), but fails to describe critical aspects: whether this is a write operation (implied by 'Create'), what happens on partial failures, authentication requirements, rate limits, or what the return value contains. For a batch creation tool with zero annotation coverage, this is 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 extremely concise (7 words) and front-loaded with the core purpose. Every word earns its place: 'Create' (action), 'multiple elements' (resource/scope), 'at once' (batch nature), '(max 100)' (key constraint). No wasted words or 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 (batch creation with a nested object array parameter), absence of annotations, and no output schema, the description is insufficient. It doesn't cover behavioral traits, error handling, return values, or detailed parameter semantics. For a tool that creates multiple graphical elements with many configurable properties, this leaves too much unexplained.
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?
The description mentions 'elements' and the batch size constraint ('max 100'), which aligns with the 'elements' array parameter in the schema. However, with 0% schema description coverage and 1 parameter (a complex array of objects), the description doesn't explain what an 'element' consists of, the required properties, or the meaning of nested fields like 'type', 'x', 'y', etc. The schema does heavy lifting, but the description adds minimal value beyond the obvious.
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 ('Create multiple elements at once') and resource ('elements'), which is specific and distinguishes it from single-element creation tools like 'create_element'. However, it doesn't explicitly differentiate from other element-creation tools like 'create_from_mermaid' or 'create_view', which slightly limits sibling differentiation.
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 context through 'at once (max 100)', suggesting this tool is for batch operations rather than single creations. However, it doesn't provide explicit guidance on when to use this versus 'create_element' or other element-creation siblings, nor does it mention prerequisites or exclusions.
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?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals important behavioral traits: the diagram 'streams in progressively as elements are generated' and the tool creates an 'interactive inline diagram.' However, it doesn't address whether this is a read-only or write operation, what permissions might be needed, or any rate limits or error conditions.
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 perfectly concise with three sentences that each serve distinct purposes: stating the core function, describing parameter usage, and providing prerequisite guidance. There's no wasted language, and the information is front-loaded with the most important details first.
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?
For a tool with 3 parameters, no annotations, no output schema, and 0% schema description coverage, the description provides adequate but incomplete context. It explains the main purpose and gives some parameter guidance but doesn't fully compensate for the missing structured information about behavior, output format, or all parameters.
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?
The description mentions the 'elements' parameter ('Pass an array of elements with type, x, y coordinates and optional styling') which adds some context beyond the schema's 0% description coverage. However, with 3 total parameters and only 1 mentioned in the description, it doesn't fully compensate for the schema's lack of parameter descriptions. The baseline is appropriate given the partial coverage.
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's purpose with specific verbs ('Render Excalidraw elements as an interactive inline diagram') and distinguishes it from siblings by specifying it creates a view rather than individual elements or other operations. It identifies the resource (Excalidraw elements) and output format (interactive inline diagram).
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 description provides clear context for when to use this tool ('Render Excalidraw elements as an interactive inline diagram') and includes a helpful prerequisite ('Use read_me first to see available element types and color palettes'). However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools.
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 states this is a 'Get' operation which implies read-only behavior, but doesn't disclose other behavioral traits like rate limits, authentication requirements, or what format the reference information is returned in. The description adds some context about timing but lacks comprehensive 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 perfectly concise with just two sentences that each earn their place. The first sentence states what the tool does, and the second provides crucial usage guidance. No wasted words or redundant information.
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?
For a zero-parameter tool with no output schema, the description provides adequate purpose and usage guidance. However, without annotations or output schema, it doesn't fully describe what the reference information looks like or how it's structured. It's complete enough for basic understanding but lacks detail about the return format.
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 tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, and instead focuses on the tool's purpose and usage context.
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's purpose with specific verbs ('Get') and resources ('Excalidraw element reference'), listing the exact information it provides (types, colors, sizing, and tips). It distinguishes itself from siblings like create_element or update_element by focusing on reference information rather than diagram manipulation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'Call this before creating diagrams.' This clearly positions it as a prerequisite or preparatory step for diagram creation tools, offering clear alternatives (use this first, then use creation tools).
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/debu-sinha/excalidraw-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server