cpp-espace-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cpp-espace-mcpshow me all open work orders at PJCC"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
cpp-espace-mcp
MCP server that gives Claude Code access to the eSpace facilities management API — work orders, events, equipment, and maintenance schedules, all callable from within a Claude conversation. Built for Catholic Parishes in Partnership (CPP) staff.
Quick Start
If you just want to get this running on your machine. Pick the section for your platform — the two differ in more than path syntax.
Windows (PowerShell)
# 1. Install Node.js LTS if you don't have it
winget install OpenJS.NodeJS.LTS
# (close and reopen PowerShell)
# 2. Clone and build
mkdir $env:USERPROFILE\code -Force
cd $env:USERPROFILE\code
git clone https://github.com/norm613/cpp-espace-mcp.git
cd cpp-espace-mcp
npm install
npm run build
# 3. Get your personal API key from your eSpace profile (see section below)
# 4. Register with Claude Code (user scope — available in every project)
claude mcp add espace --scope user --env ESPACE_API_KEY=YOUR_KEY_HERE -- cmd /c npx tsx "$env:USERPROFILE\code\cpp-espace-mcp\src\index.ts"
# 5. Verify
claude mcp list
# 'espace' should show: ✓ ConnectedmacOS / Linux
# 1. Install Node.js LTS if you don't have it
brew install node # macOS; on Linux use your package manager or nodesource
# 2. Clone and build
mkdir -p ~/code && cd ~/code
git clone https://github.com/norm613/cpp-espace-mcp.git
cd cpp-espace-mcp
npm install
npm run build
# 3. Get your personal API key from your eSpace profile (see section below)
# 4. Register with Claude Code (user scope — available in every project)
claude mcp add espace --scope user --env ESPACE_API_KEY=YOUR_KEY_HERE -- node ~/code/cpp-espace-mcp/dist/index.js
# 5. Verify
claude mcp list
# 'espace' should show: ✓ ConnectedThree things differ from the Windows command, and they matter:
No
cmd /c. That wrapper is a Windows shell shim. Including it on macOS or Linux fails withspawn cmd ENOENT.Run the compiled
dist/index.jswithnode, notnpx tsx src/index.ts. Step 2 already builtdist/,tsxis frequently not installed, and running compiled output skips a transpile on every server launch. Thetsxform still works if you prefer it —npx tsx ~/code/cpp-espace-mcp/src/index.ts— but it's slower and adds a dependency you don't need.No
MSYS_NO_PATHCONVconcerns. That workaround exists only for Git Bash on Windows mangling/c. Ignore it here.
Then relaunch Claude Code. Ask it something like "check eSpace for any open work orders at PJCC" to confirm it works.
If you don't have the claude CLI (Claude Code desktop app)
The desktop app ships without the CLI, so claude mcp add won't exist. Add the entry to ~/.claude.json by hand instead, under the top-level mcpServers key. Back the file up first — it holds all your other server configs and session state:
cp ~/.claude.json ~/.claude.json.bak"espace": {
"type": "stdio",
"command": "/opt/homebrew/bin/node",
"args": ["/Users/YOUR_USERNAME/code/cpp-espace-mcp/dist/index.js"],
"env": { "ESPACE_API_KEY": "YOUR_KEY_HERE" }
}Use the absolute path to node — /opt/homebrew/bin/node on Apple Silicon, /usr/local/bin/node on Intel Macs or Homebrew-on-Linux. Find yours with which node. A bare "node" can fail because the desktop app's PATH is not your shell's PATH.
args must also be an absolute path; ~ is not expanded here.
Validate before relaunching — a malformed file stops Claude Code from starting:
python3 -c "import json; json.load(open('$HOME/.claude.json')); print('valid')"Related MCP server: Google Workspace MCP
Why Each Person Runs Their Own Instance
The eSpace API key isn't just a password — it's your identity to eSpace. Every API call this server makes is attributed to whoever owns the key. If two people share a key, both show up in the audit trail as the same person.
That's why each CPP staff member who uses Claude with eSpace needs:
Their own API key, generated under their own eSpace profile
Their own clone of this repo on their local machine
Their own Claude Code MCP registration using their own key
There's no shared server, no multi-tenant auth. One key = one person.
Getting Your API Key
Sign in to eSpace on the web as yourself.
Navigate to your user profile / account settings.
Find the API access / tokens section and generate a new personal API key.
Copy the UUID-format string. Store it like a password — anyone with this key can make changes as you.
If you can't find where to generate a key, check with whoever administers your eSpace account.
How the key is actually used
Your API key is not sent on each request. eSpace API v2 is JWT-based, so this server POSTs your key to /api/v2/requesttoken, receives a short-lived JWT, and refreshes it automatically five minutes before it expires. You never handle the JWT — supplying ESPACE_API_KEY is the whole job.
Your key expires. Per eSpace, a key is valid for roughly a year, and is invalidated immediately if the authenticating user changes their email address or password. When that happens the token request starts returning 401 and every tool call fails, with no change on your end to explain it. Generate a new key and update ESPACE_API_KEY.
API v1 was decommissioned 2025-05-01. This server targets v2 only.
Prerequisites Checklist
Before running the install steps, make sure you have:
A supported OS — Windows 10/11 with PowerShell, or macOS, or Linux. Nothing in this server is Windows-specific; only the registration command differs.
Node.js LTS —
node --versionshould return a number. If not:winget install OpenJS.NodeJS.LTS(Windows, then close/reopen PowerShell soPATHupdates) orbrew install node(macOS).Git —
git --versionshould work. If not:winget install Git.Git(Windows); macOS installs it with the Xcode command line tools (xcode-select --install).Claude Code — either the CLI (
claude --versionworks) or the desktop app. The desktop app has no CLI, so use the hand-edited~/.claude.jsonroute in the Quick Start rather thanclaude mcp add.An eSpace API key (see above)
Claude Code Configuration — Details
The command in the Quick Start registers the MCP server at user scope, meaning it's available in every Claude Code project you open (not tied to a specific folder). This is the right scope for eSpace — you'll want it available in Oscar, Robin, or any other vault.
If you need to update the key later (rotation, regenerated key, etc.):
# Windows
claude mcp remove espace --scope user
claude mcp add espace --scope user --env ESPACE_API_KEY=NEW_KEY -- cmd /c npx tsx "$env:USERPROFILE\code\cpp-espace-mcp\src\index.ts"# macOS / Linux
claude mcp remove espace --scope user
claude mcp add espace --scope user --env ESPACE_API_KEY=NEW_KEY -- node ~/code/cpp-espace-mcp/dist/index.jsOn the desktop app (no CLI), edit the ESPACE_API_KEY value in ~/.claude.json directly and relaunch.
To see current status:
claude mcp get espaceVerifying without the CLI
claude mcp list doesn't exist on the desktop app, and relaunching just to find out whether a key works is slow. You can talk to the server directly — pipe two JSON-RPC frames into it over stdio:
cd ~/code/cpp-espace-mcp
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get-locations","arguments":{}}}' \
| ESPACE_API_KEY="YOUR_KEY_HERE" node dist/index.jsA working setup returns the server handshake, then a get-locations payload listing your org's locations.
⚠️ The handshake alone proves nothing about your key. initialize succeeds with a completely invalid key — the server doesn't contact eSpace until the first real tool call. Always verify with an actual call like get-locations, not just a successful startup. This is the single most common way a broken eSpace registration looks healthy.
Data Safety Rules (Read This)
Claude must never create, update, or delete eSpace records without your explicit confirmation first.
eSpace manages real facility work orders, events, equipment, and maintenance schedules. Unauthorized writes can create false work orders, cancel events, or corrupt maintenance records.
Before any write operation (POST / PUT / DELETE), Claude will:
Stop.
Show you exactly what it plans to create, modify, or delete.
Wait for your explicit "yes" before proceeding.
Read-only operations (listing, getting details) are always fine — no confirmation required.
If Claude ever performs a write without asking first, that's a bug — report it.
Available Tools (31 total)
Category | Tools | Typical use |
Work Orders |
| "Show me all open work orders at SPE," "Create a work order for the boiler at PJCC," "What's the cost breakdown on work order 1234?" |
Events |
| "List next week's events at STC," "What spaces are booked for Holy Thursday?" |
Maintenance |
| "Show me all scheduled maintenance coming due," "What PM frequency types are defined?" |
Equipment |
| "List the HVAC equipment at SJD," "What equipment types do we track?" |
Ministry / Org |
| "List all the locations in our eSpace tenant," "Who has editor permissions?" |
Full tool registration list is in src/index.ts.
Troubleshooting
claude mcp list shows eSpace as "Failed to connect"
The mcp list output doesn't include the real error. To see it, run the stdio command by hand:
# Windows
$env:ESPACE_API_KEY = "your-key"
cmd /c npx tsx "$env:USERPROFILE\code\cpp-espace-mcp\src\index.ts"# macOS / Linux
ESPACE_API_KEY="your-key" node ~/code/cpp-espace-mcp/dist/index.jsCommon causes:
Node.js not installed —
node --versionreturns nothing →winget install OpenJS.NodeJS.LTS(Windows) /brew install node(macOS)Node installed but PATH not refreshed — close and reopen PowerShell
Firewall blocking npm —
npm installhung or failed during setup → talk to ITWrong API key — you'll see a 401 from eSpace; generate a new key and re-register
Repo not built —
npm run buildwas skipped; run itFile path has spaces or quotes — the path in the
claude mcp addcommand should be wrapped in double quotes
macOS / Linux specific:
spawn cmd ENOENT— you copied the Windows command with itscmd /cwrapper. Drop it; that shim is Windows-only.Works in your terminal but fails from the app — you registered a bare
"node". The desktop app'sPATHis not your shell's. Use the absolute path fromwhich node.~in the config didn't resolve —~/.claude.jsondoes not expand tildes insideargs. Write the full/Users/you/...path.Starts fine but every call 401s — the key is wrong, not the install.
initializenever contacts eSpace, so a bad key looks like a healthy server until the first real call.
"Add to user config" succeeded but path looks wrong (C:/ instead of /c)
If you ran claude mcp add from Git Bash, path conversion may have mangled the /c flag on cmd /c. Remove and re-add from PowerShell, not Git Bash:
claude mcp remove espace --scope user
claude mcp add espace --scope user --env ESPACE_API_KEY=YOUR_KEY -- cmd /c npx tsx "$env:USERPROFILE\code\cpp-espace-mcp\src\index.ts"The key works for others but not me
Make sure the key is yours — generated under your eSpace profile. Keys are user-specific; another person's key won't authenticate you (and will wrongly attribute your actions).
It worked for months and suddenly every call returns 401
Your API key was almost certainly invalidated. Two causes, and the second catches people out:
The key aged out — eSpace keys are good for roughly a year.
You changed your eSpace email address or password. That invalidates the key immediately, and nothing about the change hints that an integration just broke. If eSpace stopped working right after a password reset, this is why.
Either way the fix is the same: generate a new key under your eSpace profile and update ESPACE_API_KEY. You'll see the failure at the token-request step (eSpace token request failed: 401), not at server startup — the server starts fine with a dead key.
Claude says it did something but eSpace doesn't reflect the change
Did Claude confirm with you first? If no confirmation prompt, the write was likely blocked (safety rule) and Claude only simulated it.
Is your key read-only in eSpace? Check your eSpace profile for write permissions.
I need to update types after an eSpace API change
cd $env:USERPROFILE\code\cpp-espace-mcp
git pull
npm install
npm run generate:types
npm run buildDevelopment
npm run dev # run with tsx (hot reload during development)
npm run build # compile TypeScript to dist/
npm run start # run the compiled output
npm run generate:types # regenerate TS interfaces + Zod schemas from swagger.jsonTypes in src/models/ are auto-generated from swagger.json. Don't edit them manually — regenerate with npm run generate:types.
Architecture is a layered pattern:
MCP Tool Handlers (one tool per API operation)
→ eSpaceProvider (singleton orchestrator)
→ Services (WorkOrderService, EventService, MaintenanceService, etc.)
→ eSpaceClient (JWT token lifecycle)
→ HttpClient (generic HTTP with bearer token injection)Auth flow: POST { apiKey } to /api/v2/requesttoken → receive a JWT (valid ~1 year) → include it as Authorization: Bearer <jwt> on all subsequent requests.
For Claude Sessions Working on This Repo
See CLAUDE.md — it has project-specific instructions for a Claude instance opened inside this repo (safety rules, architecture pointers, type regeneration steps).
License
Private — all rights reserved. See LICENSE.
This repository is published publicly so authorized CPP staff can clone and install it without needing a GitHub account, but the code itself is not open-source. No license is granted to copy, modify, or redistribute.
Available Tools
31 toolsadd-work-order-taskA
Add a task to a work order. ALWAYS confirm with user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| workOrderId | Yes | Work order ID | |
| Description | No | Task description | |
| DueDate | No | Due date (ISO format) | |
| TotalMinutes | No | Estimated minutes | |
| AssignedToUserId | No | Assigned user ID | |
| AssignedToDepartmentId | No | Assigned department ID |
TDQS
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 'Add a task' (mutation) but does not disclose behavioral traits such as idempotency, side effects, permission requirements, or what happens on success/failure. The confirmation instruction is about user interaction, not tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first concisely states purpose, second provides a critical warning. No wasted words; it is appropriately sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the mutation nature and 6 parameters, the description is minimal. It lacks context about return values, required user roles, or what happens after adding (e.g., status updates). The confirmation instruction adds value, but overall completeness is adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents all 6 parameters. The description adds no additional meaning beyond what the schema already provides. Per rubric, baseline is 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a task to a work order', which is a specific verb+resource combination. It distinguishes from siblings like create-work-order (creates a work order) and update-work-order-task (updates an existing task).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes 'ALWAYS confirm with user before calling', which is a strong usage guideline for safety. However, it does not explicitly state when to use this tool versus alternatives like get-work-order-tasks or update-work-order-task, nor does it provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-work-orderA
Create a new work order. Requires description, location, service category, and priority. ALWAYS confirm with user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| FullDescription | Yes | Full description of the work order | |
| LocationId | Yes | Location ID | |
| ServiceCategoryId | Yes | Service category ID | |
| PriorityId | Yes | Priority ID | |
| Eta | No | Requested completion date (ISO format) | |
| AssignedId | No | User ID to assign | |
| VendorAssignedId | No | Vendor ID to assign | |
| AssignedDepartmentId | No | Department ID to assign |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description only says 'Create a new work order,' missing details on side effects, permissions, or what happens upon execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise (two sentences), front-loaded with action, and every sentence serves a purpose; could be slightly more structured but is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks coverage of return values, error conditions, and behavioral details; with 8 parameters and no output schema, the description is insufficient for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3; description merely reiterates required fields without adding deeper meaning for optional parameters like Eta or AssignedId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create a new work order' with specific verb+resource, and distinguishes from siblings like update-work-order and delete-work-order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'ALWAYS confirm with user before calling,' providing clear context for when to invoke, but does not compare to sibling tools like add-work-order-task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete-work-orderA
Delete a work order. ALWAYS confirm with user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| workOrderId | Yes | Work order ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It clearly indicates the destructive nature (delete) and adds the behavioral requirement of user confirmation. This adds value beyond the action itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, minimal and to the point. The action is front-loaded, and the safety instruction follows immediately. Every word is earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with one parameter and no output schema, the description is complete: it states the purpose and provides a critical usage guideline. No additional information is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter (workOrderId) described as 'Work order ID to delete'. The description does not add further semantic meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete a work order' which is a specific verb and resource, making it unambiguous. It distinguishes from sibling tools like create-work-order and update-work-order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes 'ALWAYS confirm with user before calling', which provides a clear usage guideline for safety. It does not mention alternatives or when not to use, but the confirmation instruction is critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-categoriesA
Get all event categories for the ministry/organization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description only says 'get' implying read-only but doesn't explicitly state it has no side effects. It's adequate for a simple retrieval tool but lacks clarity on what 'event categories' entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no filler, perfectly concise. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description is sufficient. It could mention the return format or sorting order for completeness, but not strictly necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema coverage is 100%. Baseline is 4 for no parameters. Description adds no extra meaning beyond the schema, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns event categories. It differentiates from sibling 'get-service-categories' by specifying 'event' categories. However, 'for the ministry/organization' is redundant given the context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus other similar tools like 'get-service-categories' or any conditions. No exclusions or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-editorsB
Get all event editors for the ministry/organization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose behavioral traits such as read-only status, authentication requirements, or any side effects. The minimal description provides no additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundant information, perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool has no parameters, the description lacks clarity on what an 'event editor' is and whether this is a global list or per event. Given sibling tools like get-users, more context would help the agent select appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, the description adds limited meaning beyond the schema. The scope 'for the ministry/organization' is vague but acceptable for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets 'all event editors' for the ministry/organization, specifying the resource and scope. However, it does not distinguish between this tool and sibling tools like get-users, which might also provide editor information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives. The description implies usage for retrieving editors but gives no context on exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-equipmentA
Get details of a specific piece of equipment.
| Name | Required | Description | Default |
|---|---|---|---|
| equipmentId | Yes | The equipment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. Only states 'Get details,' implying a read operation, but no mention of permissions, side effects, or error handling. Lacks sufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no extraneous content. Efficient and appropriate for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description is minimally adequate but lacks details on return values or behavior, which are not covered elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds no extra meaning beyond the parameter name and type. No additional details on format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get details of a specific piece of equipment.' This is a specific verb and resource, and distinguishes from sibling tools like list-equipment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. While sibling tools suggest it's for a single equipment, the description does not contrast with list-equipment or other get-* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-equipment-typesA
Get all available equipment types.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description implies a read-only operation that returns all available types. For a simple param-less fetch, this is adequately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, five words – extremely concise with no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no params, no output schema), the description is nearly complete. It could benefit from specifying the return type (e.g., list of strings or objects), but is adequate for a basic list fetch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description adds no parameter info. Baseline for 0 parameters is 4, as the schema already covers the absence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get all available equipment types' clearly states the action (get) and resource (equipment types). It distinguishes from sibling tools like get-equipment, get-categories, etc. by naming the specific entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or not. However, the tool name and description implicitly indicate it is for retrieving all equipment types, with no obvious alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-eventB
Get details of a specific event. Use include for related Spaces, Resources, Services.
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | The event ID | |
| include | No | Comma-separated related objects to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose any behavioral traits like read-only nature, authorization requirements, or error handling. The verb 'Get' implies reading, but this is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences, no unnecessary words, and gets straight to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description is adequate for a simple get-by-ID tool but missing details like response format, error cases, and when to use alternatives among siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by clarifying that 'include' is for related objects such as Spaces, Resources, Services, which goes beyond the schema description of 'Comma-separated related objects to include.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get details of a specific event' with a specific verb and resource. It also mentions the 'include' parameter for related objects. While it distinguishes from list tools, it does not explicitly differentiate from other get tools like get-event-occurrences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description hints at usage by saying 'Use include for related Spaces, Resources, Services,' but provides no guidance on when to use this tool versus siblings, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-event-occurrencesB
Get occurrences of a recurring event within a date range.
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | The event ID | |
| startDate | No | Start date (ISO format) | |
| endDate | No | End date (ISO format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, leaving the description to carry the full burden. It does not disclose whether the event must be recurring, permissions needed, or the response structure. The schema marks startDate and endDate as optional, yet the description implies they are needed for the date range, creating potential confusion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It is front-loaded and directly communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema or annotations, the description is insufficient. It does not explain return data format, behavior for non-recurring events, or handling of missing dates. More context is needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described (eventId, startDate, endDate). The description adds 'within a date range' but adds little beyond the schema's own descriptions. Baseline of 3 is appropriate given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and resource 'occurrences of a recurring event' with a clear scope 'within a date range'. It distinguishes from sibling tools like get-event or get-event-spaces, as no other tool directly retrieves event occurrences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for recurring events within a date range but provides no explicit guidance on when to use this tool versus alternatives, such as get-event for non-recurring events or list-events for general listing. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-event-spacesA
Get the space tree for an event. Returns all spaces (rooms/areas) with hierarchy, capacity, and scheduling status.
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | The event ID | |
| scheduleId | Yes | The schedule ID for the event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey all behavioral traits. It indicates a read operation ('Get') but does not explicitly state that it is non-destructive, has no side effects, or mention any authentication requirements or rate limits. The returned structure is described adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose, the second details the return value. It is concise with no redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only two parameters and no output schema, the description adequately covers what the tool does and returns. It mentions hierarchy, capacity, and scheduling status. However, it could be slightly more complete by noting that the space tree is nested or by referencing the relevant sibling tool for alternative space queries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds context by explaining what the tool returns (space tree) which indirectly relates to the eventId and scheduleId parameters, but does not provide additional detail about parameter format, constraints, or relationships beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'space tree for an event', and specifies the returned data (hierarchy, capacity, scheduling status). It distinguishes itself from siblings like 'get-event' or 'get-maintenance-spaces' by focusing on event spaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that the tool is used when you need event space information, but it does not explicitly state when to use it versus alternatives like 'get-maintenance-spaces' or provide any exclusion criteria. The usage context is implied but not detailed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-frequency-typesA
Get all available maintenance frequency types (for scheduling recurrence).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the sole source of behavioral info. It states it retrieves all types, which implies a read-only operation, but does not detail auth requirements or return format. Adequate for a simple query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 10 words, front-loaded with the action and resource, with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and a simple resource, the description fully covers the tool's purpose and context (maintenance frequency types for recurrence scheduling).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema coverage is 100%, so the baseline is 4. The description does not need to add parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'all available maintenance frequency types'. It is specific and distinguishes from sibling tools like 'get-categories' or 'get-equipment-types'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description adds context '(for scheduling recurrence)', indicating when to use this tool. However, it does not explicitly exclude alternatives or provide 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-locationsB
Get all locations for the ministry/organization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully convey behavioral traits. It only states 'Get all locations,' implying a read-only operation with no side effects. However, it fails to disclose potential limitations (e.g., pagination, rate limits, or whether the result is a list or a single object). The agent lacks understanding of expected behavior beyond a simple retrieval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of a single seven-word sentence that conveys the core purpose without extraneous information. It is front-loaded and efficient, meeting the criteria for succinctness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no parameters, no output schema), the description is incomplete. It does not specify the return format (e.g., list of location objects, fields included) or any context about the response. An agent cannot fully anticipate the tool's output, which is a gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema coverage is 100%. The description does not need to add parameter semantics since none exist. The baseline score of 4 is appropriate as the tool requires no input, and the description correctly implies no arguments are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves all locations for the ministry/organization, indicating the specific resource and scope. It is distinguishable from sibling tools which focus on different entities (e.g., equipment, users). However, the term 'locations' could be ambiguous without context, and the description could be more explicit about what constitutes a location.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, filtering capabilities, or cases where another tool might be more appropriate. The description solely states what the tool does, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-maintenanceA
Get details of a specific scheduled maintenance item. Use include for related Spaces, Tasks, Attachments, WorkOrders.
| Name | Required | Description | Default |
|---|---|---|---|
| maintenanceId | Yes | The maintenance ID | |
| include | No | Comma-separated: Spaces, Tasks, Attachments, WorkOrders |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It only states the basic action and parameter usage, but does not mention that the tool is read-only, any authorization needs, rate limits, or what the response contains. This is insufficient for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place. The first sentence front-loads the primary purpose, and the second adds a key usage detail. No extraneous words or repetitions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema, no annotations), the description is adequate but could be more complete. It does not describe the return format, error handling, or prerequisites, which are not covered by structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description repeats the schema's info on 'include' ('Comma-separated: Spaces, Tasks, Attachments, WorkOrders') without adding new meaning. For 'maintenanceId', it adds no extra context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get details of a specific scheduled maintenance item' using a specific verb and resource. It differentiates from sibling 'list-maintenance' by implying single-item retrieval and mentions the 'include' parameter for related entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on using the 'include' parameter for related entities, but does not explicitly state when to use this tool versus alternatives like 'list-maintenance' or 'get-maintenance-spaces'. No when-not or exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-maintenance-spacesA
Get the spaces (rooms/areas) associated with a scheduled maintenance item.
| Name | Required | Description | Default |
|---|---|---|---|
| maintenanceId | Yes | The maintenance ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the basic purpose without disclosing behavioral traits like pagination, error handling, permissions, or what happens if the maintenance ID is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It front-loads the verb and resource, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one required parameter, no output schema, no nested objects), the description is mostly complete. However, it lacks any mention of what the response contains or potential error conditions, which would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'maintenanceId' is fully described in the schema as 'The maintenance ID'. The description adds no additional meaning beyond what the schema already provides, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'spaces (rooms/areas)' with context 'associated with a scheduled maintenance item'. This differentiates it from sibling tools like 'get-event-spaces' and 'get-work-order-spaces', which target different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when spaces for a maintenance item are needed, but provides no explicit guidance on when to use this tool versus alternatives, nor any conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-maintenance-typesB
Get all available scheduled maintenance types.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only says 'Get' (implying read-only) but does not disclose any potential side effects, data freshness, or pagination. For a simple retrieval, the lack of annotation is not compensated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It is appropriately sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description is largely complete. However, a brief note about the return format or usage context could enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the schema coverage is 100%. Per guidelines, baseline is 4. The description adds no parameter info, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves all available scheduled maintenance types. It uses a specific verb+resource structure, but does not differentiate from sibling tools like get-equipment-types or get-frequency-types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or context for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-service-categoriesA
Get all service categories (used for work orders and maintenance).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits (e.g., whether results are paginated, ordered, or if there are any side effects). For a simple list, more context would help.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action and resource, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description covers the essential purpose. However, additional context about the result set (e.g., structure) would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100%. The description adds no parameter details, which is acceptable since none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get all') and resource ('service categories'), and specifies their usage context ('for work orders and maintenance'), effectively distinguishing from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on where the categories are used, but lacks explicit guidance on when to use this tool over siblings like 'get-categories' or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-task-templatesA
Get all task templates available in the organization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description carries the full burden. It implies a read-only operation ('Get all') but lacks details on pagination, ordering, permissions, or behavior on empty results. The description is minimally adequate for a simple retrieval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that conveys the entire purpose without any wasted words. It is front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool with no output schema, the description provides sufficient information to understand its function. However, it could mention the expected return type (e.g., array of template objects) to enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema coverage, the description adds no parameter info, which is acceptable. Baseline for 0 params is 4, and the tool functions without parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'all task templates available in the organization', which is specific and distinguishes it from sibling tools like get-categories or get-work-order-tasks that retrieve different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description simply states what it does without context on prerequisites, exclusions, or comparison with siblings like get-work-order-tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-usersB
Get all users for the ministry/organization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states 'Get all users' without mentioning auth requirements, rate limits, data volume, or response format, leaving the agent uninformed about important behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single-sentence description is concise and front-loaded with the key action and resource. However, it could be slightly more informative without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (no parameters, no output schema), the minimal description is somewhat adequate but lacks context about the result set or any filtering logic, which may be needed for effective tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters and schema coverage is 100%, so no additional parameter information is needed. Baseline for 0 parameters is 4, and the description does not add anything beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get all' and the resource 'users' with a scope 'for the ministry/organization'. It distinguishes itself from sibling tools like 'get-editors' by being a general user retrieval tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'get-editors' or other list tools. Lacks context on prerequisites or suitability for specific scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-work-orderA
Get details of a specific work order by ID. Use include to get related Costs, Spaces, Tasks, Attachments.
| Name | Required | Description | Default |
|---|---|---|---|
| workOrderId | Yes | The work order ID | |
| include | No | Comma-separated: Costs, Spaces, Tasks, Attachments |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, rate limits, or error handling. The word 'Get' suggests read-only, but this is not explicitly confirmed, and no other behavioral details are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the purpose (Get details of a specific work order), and includes only essential information without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with 2 parameters and no output schema. The description provides enough context for basic usage (get by ID, include related entities). However, it does not describe the response format or any constraints like pagination, but for a single-object retrieval, this is mostly sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds no new meaning beyond repeating the include parameter's comma-separated list, which is already in the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get details) and resource (specific work order by ID), and distinguishes itself from sibling tools like list-work-orders which list multiple. The mention of 'include' for related entities adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a single work order, but does not explicitly state when not to use it or compare to alternatives like update-work-order or list-work-orders. The guidance on 'include' is helpful for related data but lacks context on when to use other get-* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-work-order-attachmentsB
Get file attachments for a specific work order.
| Name | Required | Description | Default |
|---|---|---|---|
| workOrderId | Yes | The work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides no behavioral traits beyond fetching attachments. Missing details like return format, permissions needed, or whether attachments are binary files or URLs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is concise and front-loaded with the core action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is incomplete for a retrieval tool. It does not clarify if multiple attachments are returned, how they are represented, or any pagination behavior. No output schema is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the parameter described as 'The work order ID'. The description repeats this context but adds no new meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'file attachments' for a specific work order, distinguishing it from other sibling tools that retrieve different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get-work-order or list-work-orders. There is no mention of when not to use it or related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-work-order-costsB
Get costs for a specific work order.
| Name | Required | Description | Default |
|---|---|---|---|
| workOrderId | Yes | The work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'Get costs', implying a read operation, but fails to disclose behavioral traits such as whether costs include labor, materials, or taxes, or the response structure. With no annotations provided, the description carries full burden and is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It is appropriately sized for a simple tool, though it could be more structured with additional context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and the simplicity of the input, the description lacks important details about what costs are retrieved (e.g., breakdown, scope) and the expected response format, leaving the agent with incomplete context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the single parameter (workOrderId) with a description. The tool description adds no additional meaning beyond what the schema provides, so it meets the baseline but does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action (Get costs) and target resource (specific work order), distinguishing it from sibling tools like get-work-order and get-work-order-tasks, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing costs for a specific work order but provides no explicit guidance on when not to use it or alternatives. Since no sibling tool for costs exists, the implied usage is adequate but minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-work-order-prioritiesA
Get all available work order priority levels.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
As a simple read operation with no annotations, the description is transparent about its action but could mention it is non-destructive and returns a static list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, no unnecessary words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless retrieval tool, the description fully covers what it does. No output schema needed as priority levels are straightforward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline is 4 per rules. The description adds no param info, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and a clear resource 'all available work order priority levels', distinguishing it from siblings like get-work-order-statuses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, but its purpose is implied: use when you need the list of priority levels.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-work-order-spacesB
Get the spaces (rooms/areas) associated with a work order.
| Name | Required | Description | Default |
|---|---|---|---|
| workOrderId | Yes | The work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should disclose behavioral traits. It only states 'Get', implying a read operation, but does not explicitly mention that it is read-only, any authentication needs, rate limits, or side effects. The description is insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is clear and to the point. Every word is necessary, and there is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema. The description minimally states what it does but does not explain the return format, whether it returns a list or single item, or any constraints. For a simple tool, it is adequate but lacks completeness in setting expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (workOrderId) with full description coverage. The description adds no additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'spaces (rooms/areas) associated with a work order'. It distinguishes from sibling tools like get-event-spaces and get-maintenance-spaces by specifying the association with a work order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines on when to use this tool versus alternatives such as get-event-spaces or get-maintenance-spaces. The description does not mention prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-work-order-statusesA
Get all available work order status types.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of disclosing behavior. It only states the function, lacking details on side effects (likely none), authentication needs, or what happens in edge cases like no statuses available.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no extraneous words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description provides all necessary information. It is complete and adequate for an AI agent to understand the tool's function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the description does not need to add meaning beyond the schema. The schema coverage is 100%, and the description is sufficient for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'all available work order status types', making the purpose unambiguous. It is specific and differentiates from sibling tools that retrieve other entities like equipment or events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. While the purpose is clear, the description does not specify prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-work-order-tasksB
Get tasks for a specific work order.
| Name | Required | Description | Default |
|---|---|---|---|
| workOrderId | Yes | The work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses it is a read operation ('Get'), but with no annotations, it should provide more behavioral details such as whether it returns all tasks, pagination, or ordering. It does not address these aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of five words, making it very concise. However, it could add useful context without becoming verbose, so it scores slightly above average.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should at least indicate the return type (e.g., a list of tasks). It only states the basic purpose, leaving significant gaps about the response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds 'for a specific work order', which clarifies the parameter's role but largely repeats the schema's description. The added value is minimal, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'tasks for a specific work order', which precisely defines the tool's function. This distinguishes it from sibling tools like 'add-work-order-task' and 'get-work-order'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or context, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-equipmentB
List all equipment with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| locationId | No | Filter by location ID | |
| equipmentTypeId | No | Filter by equipment type ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavior. 'List all equipment' implies a read operation, but lacks details on pagination, ordering, or whether filters are mandatory. It is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 5 words, very concise. However, it could be slightly expanded to include return behavior. Not under-specified enough for a lower score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with 2 optional parameters and no output schema, the description is adequate but not complete. It could mention that it returns all equipment if no filters, and whether pagination is supported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds no additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all equipment with optional filters' clearly states the verb 'List' and the resource 'equipment', and mentions filters. However, it does not differentiate from the sibling tool 'get-equipment' which likely returns a single item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives like 'get-equipment' or other list tools. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-eventsB
List events with optional filters by location, date range, or category.
| Name | Required | Description | Default |
|---|---|---|---|
| locationId | No | Filter by location ID | |
| startDate | No | Filter start date (ISO format) | |
| endDate | No | Filter end date (ISO format) | |
| categoryId | No | Filter by category ID | |
| include | No | Comma-separated related objects to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden of disclosure. It mentions 'list' (implying read) but does not state pagination, response format, ordering, or any side effects. For a list tool with no output schema, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence covering the core functionality with no unnecessary words. Perfectly concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 optional parameters and no output schema, the description covers the basic purpose but omits behavioral details (pagination, response structure) and usage context, leaving the agent with incomplete information for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already well-documented. The description summarizes the filter options (location, date range, category) but adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists events with optional filters. While it does not explicitly differentiate from sibling tools like 'get-event' or 'get-event-occurrences', the plural 'list' and filter options imply a batch retrieval, which is distinct from single-event retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'get-event' for a single event or 'get-event-occurrences' for recurring events. The description lacks any contextual cues about prerequisites 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.
list-maintenanceB
List scheduled maintenance items with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| locationId | No | Filter by location ID | |
| include | No | Comma-separated: Spaces, Tasks, Attachments, WorkOrders |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states 'list', which implies read-only, but does not mention pagination, ordering, or safety guarantees. This is insufficient for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no fluff. However, it could include more detail without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not mention return format or pagination. For a list tool, this is a significant gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds no extra meaning beyond the schema. According to the rule, baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'scheduled maintenance items', and mentions optional filters, distinguishing it from sibling tools like 'get-maintenance' which retrieves a single item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'get-maintenance' or 'list-work-orders'. The description does not provide when-not or explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-work-ordersB
List work orders with optional filters by location, status, priority, assignment, service category, or date range.
| Name | Required | Description | Default |
|---|---|---|---|
| locationId | No | Filter by location ID | |
| statusId | No | Filter by status ID | |
| priorityId | No | Filter by priority ID | |
| assignedId | No | Filter by assigned user ID | |
| serviceCategoryId | No | Filter by service category ID | |
| startDate | No | Filter start date (ISO format) | |
| endDate | No | Filter end date (ISO format) | |
| include | No | Comma-separated: Costs, Spaces, Tasks, Attachments |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It only states 'list' but omits details on pagination, sorting, result size, or side effects, offering minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded, but could be slightly more structured by mentioning the return type or behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 optional parameters, no output schema, and no annotations, the description lacks completeness—no mention of list semantics, pagination, or default behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes each parameter. The description adds nothing beyond listing filter types, providing no additional meaning or context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List work orders' and enumerates optional filters, distinguishing it from siblings like get-work-order (singular) and create-work-order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for listing with filters but provides no explicit guidance on when to use this tool versus alternatives like get-work-order for a single order, nor when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update-work-orderB
Update an existing work order. ALWAYS confirm with user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| WorkOrderId | Yes | Work order ID to update | |
| FullDescription | No | Updated description | |
| LocationId | No | Updated location ID | |
| ServiceCategoryId | No | Updated service category ID | |
| PriorityId | No | Updated priority ID | |
| StatusId | No | Updated status ID | |
| Eta | No | Updated completion date (ISO format) | |
| AssignedId | No | Updated assigned user ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states it's an update operation with a confirmation requirement; lacks details on authorization, reversibility, or partial update behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two brief, front-loaded sentences with no unnecessary words. Highly concise and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and moderate complexity (8 parameters). Description fails to explain return values, side effects, or what happens on successful update. Lacks completeness for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds no extra meaning beyond what the schema already provides for the 8 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Update an existing work order', which is a specific verb and resource. Distinct from sibling tools like create-work-order and delete-work-order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes 'ALWAYS confirm with user before calling', which is a clear usage instruction, but does not discuss when to use versus alternatives or provide exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update-work-order-taskB
Update a task on a work order. ALWAYS confirm with user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | Task ID to update | |
| Description | No | Updated description | |
| DueDate | No | Updated due date (ISO format) | |
| TotalMinutes | No | Updated estimated minutes | |
| IsCompleted | No | Mark task as completed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should disclose behavioral details. It only mentions user confirmation, lacking information on whether updates are irreversible, permissions needed, or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no wasted words. However, it could be slightly more structured without increasing length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, and no annotations, the description is too minimal. It lacks context on what the update returns, error scenarios, prerequisites, or behavior for unmentioned fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described. The description adds no additional meaning beyond what the schema already provides, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update a task on a work order' clearly states the action and resource. It is distinct from sibling tools like add-work-order-task (create) and get-work-order-tasks (list), but does not explicitly differentiate from update-work-order, though the resource differs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The instruction 'ALWAYS confirm with user before calling' provides a guideline for safe usage, but does not specify when to use this tool versus alternatives, nor when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
31 tool updates
v1.0.0- First observed
add-work-order-task - First observed
create-work-order - First observed
delete-work-order - First observed
get-categories - First observed
get-editors - First observed
get-equipment - First observed
get-equipment-types - First observed
get-event - First observed
get-event-occurrences - First observed
get-event-spaces - First observed
get-frequency-types - First observed
get-locations - First observed
get-maintenance - First observed
get-maintenance-spaces - First observed
get-maintenance-types - First observed
get-service-categories - First observed
get-task-templates - First observed
get-users - First observed
get-work-order - First observed
get-work-order-attachments - First observed
get-work-order-costs - First observed
get-work-order-priorities - First observed
get-work-order-spaces - First observed
get-work-order-statuses - First observed
get-work-order-tasks - First observed
list-equipment - First observed
list-events - First observed
list-maintenance - First observed
list-work-orders - First observed
update-work-order - First observed
update-work-order-task
TDQS
Each tool is clearly named with a distinct resource and action, avoiding overlap. Sub-resources like work-order tasks, costs, attachments are explicitly separated, making it easy for an agent to select the correct tool.
All tools follow a consistent verb-noun pattern using lowercase with hyphens (e.g., get-work-order, create-work-order, list-events). There are no deviations or mixed conventions, ensuring predictability.
With 31 tools, the count is on the higher side, but the domain covers work orders, events, maintenance, and equipment, each with several sub-resources. The tools are well-scoped to the domain, though some consolidation of related getters could reduce the count.
Work orders have full CRUD plus sub-resource operations, but events, maintenance, and equipment only have read operations (get/list) with no create, update, or delete. This leaves notable gaps for managing these core entities.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
- mcp-serverOAuthio.klokin
MCP server exposing klokin time-tracking operations (employees, time entries, stores) to AI clients.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- -licenseNot gradedqualityAmaintenanceMCP Server for the Slack API, enabling Claude to interact with Slack workspaces.121,28290,042MIT
- AlicenseNot gradedqualityFmaintenanceMCP server that enables Claude to interact with Google Workspace services including Drive, Docs, Sheets, Slides, Calendar, Gmail, and Contacts.67138MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with QUADS infrastructure systems via API, enabling resource management and automation through LLM applications.MIT
- AlicenseAqualityDmaintenanceMCP Server for the Slack API, enabling Claude to interact with Slack workspaces.8121,2821MIT
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/norm613/cpp-espace-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server