Skip to main content
Glama

pilates_mcp

pilates_mcp is a local-first MCP server for Pilates center promotional posters. It creates editable HTML/CSS poster sources, stores them in a local archive, searches and reuses past posters, records design feedback, and can render PNG/PDF artifacts with headless Chromium.

Phase 1 deliberately does not store member names, phone numbers, schedules, health data, payment data, or other member personal information.

Project Structure

This repository was empty at implementation time, so the server is implemented as a TypeScript + Node.js MCP server.

src/
  server.ts        MCP stdio JSON-RPC transport and tool dispatch
  service.ts       poster workflow orchestration
  repository.ts    local poster archive search/read/write
  renderer.ts      Playwright PNG/PDF renderer
  templates.ts     HTML/CSS template layer
  feedback.ts      design feedback storage
  profile.ts       center profile storage
  themes.ts        design token presets
  types.ts         domain types
data/
  posters/YYYY/<poster-id>/
    poster.html
    poster.css
    metadata.json
    content.json
    preview.png    optional
    poster.pdf     optional
    revisions/     update backups
  feedback/
    global.json
    table.json
    standard.json
    poster-<poster-id>.json
  config/
    center-profile.json
  schedules/
    settings.json
    center-closures.json
    group/
      template.json
      group_schedule.xlsx
      revisions/
    private/
      template.json
      private_schedule.xlsx
      revisions/

Related MCP server: Networking MCP

Install

npm install
npx playwright install chromium

Development

npm run build
npm test
npm run dev

PILATES_MCP_DATA_DIR can point the archive to another local data directory. If unset, the server uses ./data.

Railway Deployment

Railway deployment is configured with railway.json and Dockerfile.

The production container uses the official Playwright image so Chromium runtime dependencies are available for PNG/PDF rendering. Railway starts npm run start:railway, which exposes:

  • GET /health: deployment healthcheck

  • GET /tools: MCP tool summary for deployment inspection

  • GET /schedule: lightweight Excel-style Schedule Workspace

  • GET /mcp: MCP HTTP endpoint info

  • POST /mcp: JSON-RPC MCP endpoint for initialize, tools/list, and tools/call

The stdio MCP server remains available through npm run start:stdio for MCP clients that connect by command. Railway uses npm start and POST /mcp for HTTP JSON-RPC MCP calls.

For persistent local-first archive storage on Railway, mount a Railway volume at /data or set PILATES_MCP_DATA_DIR to another persistent path.

Set these Railway variables for ChatGPT remote MCP OAuth:

  • PILATES_MCP_OAUTH_PASSWORD: owner password shown during /authorize approval

  • PILATES_MCP_PUBLIC_URL: canonical public origin, for example https://your-service.up.railway.app

  • PILATES_MCP_AUTH_DISABLED: optional local-only escape hatch; set to true only for local development

PILATES_MCP_PUBLIC_URL must use the same origin as the MCP URL configured in ChatGPT. For example, if ChatGPT uses https://pilates-mcp.com/mcp, set PILATES_MCP_PUBLIC_URL=https://pilates-mcp.com. Do not mix it with https://mcp.pilates-mcp.com unless that subdomain is the actual MCP URL and all well-known OAuth endpoints are served from that same subdomain.

OAuth endpoints:

  • /.well-known/oauth-protected-resource

  • /.well-known/oauth-protected-resource/mcp

  • /.well-known/oauth-authorization-server

  • /.well-known/openid-configuration

  • /register

  • /authorize

  • /token

If authorization finishes and the browser shows a 502 for a URL like http://127.0.0.1:<port>, that URL is the MCP client's local OAuth callback, not the Railway service. Check that the ChatGPT/Codex client connection flow is still active and that local callback URLs are not blocked by browser, firewall, proxy, or VPN settings.

MCP Client Connection

Use the built server as a stdio MCP command:

{
  "mcpServers": {
    "pilates_mcp": {
      "command": "node",
      "args": ["G:/pilates_mcp/dist/src/server.js"],
      "env": {
        "PILATES_MCP_DATA_DIR": "G:/pilates_mcp/data"
      }
    }
  }
}

For HTTP-capable MCP clients, point the client at:

https://<railway-domain>/mcp

Example JSON-RPC call:

curl -X POST https://<railway-domain>/mcp \
  -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

MCP Output Schemas

Every MCP tool publishes an outputSchema through tools/list. This tells ChatGPT and other MCP clients what structured JSON shape to expect before they call a tool.

Tool calls also return structuredContent alongside the human-readable JSON text response. The text response is kept for compatibility, while structuredContent is the preferred machine-readable result for agents. For example, create_poster can return valid: false with missing fields and questions, search_posters returns an items array, and schedule mutation tools return success, conflicts, and saveState.

This matters for this server because many tools are workflow tools, not one-shot generators. The schema helps the agent understand when it must ask for missing poster settings, when explicit schedule save is still required, and how to safely inspect conflicts or render artifact paths.

Tools

Poster tools:

  • get_center_profile

  • update_center_profile

  • search_posters

  • get_poster

  • create_poster

  • update_poster

  • reuse_poster_template

  • import_poster

  • render_poster

  • add_design_feedback

  • get_design_feedback

  • recommend_poster_style

Schedule tools:

  • get_schedule_settings

  • update_schedule_settings

  • inspect_schedule_file

  • import_schedule_file

  • create_schedule_template

  • get_schedule

  • generate_weekly_schedule

  • set_schedule_slot

  • clear_schedule_slot

  • find_available_slots

  • validate_schedule

  • add_center_closure

  • remove_center_closure

  • get_center_closures

  • save_schedule

  • export_schedule

  • create_schedule_poster

Poster Creation Flow

create_poster reads the center profile, applies center defaults, validates the PosterBrief, gathers relevant feedback, resolves the layout and theme, renders static HTML/CSS, writes metadata/content/source files, and optionally renders PNG/PDF.

The required order is:

user request
-> center profile defaults
-> PosterBrief
-> validation
-> ask only missing questions
-> past posters and feedback
-> HTML/CSS
-> optional render
-> archive save

Required poster brief decisions are validated before generation:

  • eventName

  • programSeparation

  • tablePreference

  • tableStyle when a table is required or provided

  • vatPolicy when price content exists

The server returns valid: false, missing, and Korean questions instead of guessing missing event names, VAT policy, or program separation.

programSeparation and tableStyle are separate decisions. For example, group/private products can use programSeparation: "table" with tableStyle: "split" to render separate GROUP/PRIVATE table blocks. tablePreference represents user intent; layout is the final renderer choice.

Center defaults can reduce repeated questions:

{
  "posterDefaults": {
    "programSeparation": "table",
    "tablePreference": "required",
    "tableStyle": "split",
    "vatPolicy": "excluded"
  }
}

Priority is: current request and PosterBrief, then center profile defaults, then a validation response asking the user for only missing values. VAT is never inferred.

Examples

8월 회원권 가격표 포스터 생성

{
  "title": "8월 회원권 이벤트",
  "purpose": "event",
  "brief": {
    "eventName": "8월 회원권 이벤트",
    "programCategories": ["private", "duet"],
    "programSeparation": "table",
    "tablePreference": "required",
    "tableStyle": "comparison",
    "vatPolicy": "excluded"
  },
  "content": {
    "subtitle": "이번 달 특별 혜택",
    "badge": "8월 EVENT",
    "table": {
      "columns": ["상품", "정상가", "이벤트가"],
      "rows": [
        ["1:1 개인레슨 10회", "800,000원", "650,000원"],
        ["듀엣레슨 10회", "500,000원", "390,000원"]
      ],
      "highlightColumn": 2
    },
    "footer": "선착순 마감"
  },
  "style": "premium",
  "render": { "png": true, "pdf": true, "size": "instagram-portrait" }
}

작년 9월 포스터 틀 재사용

{
  "sourcePosterId": "poster_20250901_ab12cd34",
  "title": "2026년 9월 신규회원 이벤트",
  "brief": {
    "eventName": "9월 신규회원 이벤트",
    "vatPolicy": "excluded"
  },
  "content": {
    "subtitle": "올해 가격으로 업데이트",
    "table": {
      "columns": ["상품", "정상가", "이벤트가"],
      "rows": [["1:1 개인레슨 10회", "820,000원", "670,000원"]],
      "highlightColumn": 2
    }
  }
}

최근 1년 기록 기반 스타일 추천

{
  "purpose": "event",
  "month": 9,
  "recentMonths": 12
}

Feedback

Feedback is stored in JSON files, not hard-coded. create_poster retrieves active global and layout-scoped feedback and includes it in the result as appliedFeedback.

Example:

{
  "scope": "table",
  "text": "이벤트가는 정상가보다 확실히 강조."
}

Rendering

render_poster uses Playwright Chromium with JavaScript disabled. Supported sizes:

  • instagram-portrait: 1080 x 1350

  • instagram-square: 1080 x 1080

  • story: 1080 x 1920

  • a4-portrait: A4 portrait

HTML/CSS are the source of truth. PNG/PDF are optional rendered artifacts.

Schedule Workspace

Phase 2 adds a local-first Schedule Workspace for Pilates group/private timetables. It is not a CRM. Private schedules may contain displayName only for grid display and operational placement.

Core model:

  • ScheduleSettings: week display, opening/closing time, default slot minutes, holiday option, locale, country code

  • ScheduleTemplate: explicit-save weekly group/private template

  • ScheduleSlot: neutral domain slot separate from Excel cells

  • ScheduleTemplateMapping: XLSX worksheet/header/time/day-column mapping

  • CenterClosure: center-specific closed dates, separate from national holidays

set_schedule_slot changes an in-memory dirty workspace. It is not persisted until save_schedule is called. export_schedule writes XLSX and backs up an existing XLSX before replacing it.

Existing XLSX files are handled by inspect_schedule_file and import_schedule_file. The importer captures worksheet name, used range, day columns, time column, column widths, row heights, and merges where available. Formulas are not executed.

Holiday handling is provider-based. Phase 2 includes a local provider with basic KR holiday fixtures and can be replaced later by an external provider without changing the domain model. Center closures have priority over public holidays, but occupied slots are not silently deleted; warnings are returned.

Railway serves a lightweight Excel-style workspace at /schedule with sticky headers, direct cell editing, delete/backspace, and visible save state. MCP remains the source of actual schedule operations.

Schedule Examples

Scenario A, create a new group timetable when no file exists:

{
  "scheduleType": "group",
  "settings": {
    "weekDisplay": "mon-sat",
    "openingTime": "09:00",
    "closingTime": "21:00",
    "defaultSlotMinutes": 60,
    "autoHolidayMarking": true,
    "locale": "ko-KR",
    "countryCode": "KR"
  }
}

Scenario B, import an existing Excel file and generate next week:

{ "filePath": "fixtures/group_schedule.xlsx", "scheduleType": "group" }
{
  "scheduleType": "group",
  "weekStart": "2026-10-05",
  "applyHolidays": true,
  "applyCenterClosures": true
}

Scenario C, private schedule operation:

{
  "scheduleType": "private",
  "dayOfWeek": "monday",
  "startTime": "19:00",
  "displayName": "김OO"
}

Scenario D, group schedule poster:

{
  "scheduleType": "group",
  "weekStart": "2026-10-05",
  "title": "9월 그룹레슨 시간표",
  "render": { "png": true, "pdf": true, "size": "instagram-portrait" }
}

Security And Privacy

The archive uses generated poster IDs and validates poster IDs before file access. Archive-relative imports are checked to block ../ traversal and root escape. Generated poster HTML is static, user text is HTML-escaped, and remote scripts are not part of the template. Rendering disables JavaScript.

Phase 1 excludes member management, reservations, payments, SMS, Instagram posting, StudioMate integration, external design scraping, image generation AI, cloud DB requirements, and SaaS authentication.

Phase 2 permits only displayName as person-related schedule display data. It does not create fields for phone, email, address, birth date, gender, health condition, medical history, payment, membership, consultation, attendance profile, or marketing consent. Names are not used for profiling, analytics, poster feedback, marketing, or recommendations.

Phase 2 still excludes StudioMate integration, StudioMate scraping, Chrome extension automation, member CRM, contact management, payment management, attendance analysis, member preference profiling, automatic booking confirmation, SMS, KakaoTalk, Instagram posting, payroll, settlement, and complex ERP features.

Extension Points

The service/repository split keeps room for future semantic search or another index. External design references can be added later behind a provider interface such as:

interface DesignReferenceProvider {
  search(query: string): Promise<DesignReference[]>;
}

Phase 1 does not implement scraping or copying external templates.

Available Tools

29 tools
add_center_closureA

Add a center-specific closure date. If existing schedule entries are present, returns warnings and requires confirmation semantics without deleting data.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
labelNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the transparency burden. It explains that existing schedule entries produce warnings and require confirmation, and explicitly states 'without deleting data,' representing non-destructive sentiment. It however does not disclose whether the date is overwritten, any idempotence, or broader write-behavior semantics. There is no annotation contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with 26 words, entirely informative, no filler, efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple two-parameter write operation. Description includes warning behavior when entries exist and non-destructive semantics. However, there is no mention of return symbols, no output schema, no form of the added date, and no higher-level workflow of existing schedules. The description covers a basic but unqualified enough scenario, but in the context of a schedule and center domain, it is adequate only.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema contains two parameters (date string required, label string optional); but schema description coverage is 0%. The description 'Add a center-specific closure date' just 'echoes the 'date' parameter, and 'label' is not explained at all. It becomes the burden of the schema which remains insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific action: 'Add a center-specific closure date.' It also mentions a distinguishing condition: if schedule entries exist, it returns warnings and requires confirmation. The verb 'add' distinguishes it from siblings like 'get_center_closures' and 'clear_schedule_slot', although no explicit alternative is named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the condition about existing schedule entries and by the contrast with sibling tools like 'remove_center_closure' and 'set_schedule_slot', but no explicit when-to-use or alternatives are stated. It is clear the action is generally for adding a closure date.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_design_feedbackB

Store reusable design feedback locally. Scope can be global, table, standard, or a specific poster.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
scopeYes
activeNo
posterIdNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for behavioral transparency. It only says 'Store reusable design feedback locally,' which indicates a write operation but does not disclose side effects, such as whether it overwrites existing feedback, appends, or how conflicts are handled. It also omits permission requirements, idempotency, or return values. The 'locally' hint is useful but insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no redundant wording. It front-loads the primary action and then clarifies the scope options. Every word adds value without padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, no annotations, and no output schema, the description is too sparse. It does not specify return behavior, error conditions, or how the parameters interconnect (e.g., whether posterId is required when scope is 'poster'). The minimal text leaves significant gaps for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It clarifies the possible values for 'scope' (global, table, standard, poster), but does not explain 'text', 'active', or 'posterId'. The purpose of these parameters remains ambiguous, and the description fails to provide enough context for an agent to correctly populate all fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Store reusable design feedback') and the resource ('design feedback') with a scope qualifier. It distinguishes itself from sibling tools like get_design_feedback, which is the read counterpart, and other tools focused on schedules or posters. The scope enumeration adds specificity without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the tool to use for adding/creating design feedback, but it does not explicitly state when to use it versus alternatives or when not to use it. There is no mention of prerequisites, alternatives, or contexts where another tool would be more appropriate. Usage is implied through the verb 'store' and the scope options.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_schedule_slotA

Clear a schedule slot in the dirty workspace without saving until save_schedule is called.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
dayOfWeekNo
startTimeYes
scheduleTypeYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses a key trait: the clearing is not persisted until save_schedule is called, which is important behavior. It doesn't cover other side effects, auth, or error handling, but given no annotations, it provides reasonable transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no redundant information, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core action and the critical context of the dirty workspace and saving behavior, which is sufficient for a simple clear operation. It omits return details, but no output schema exists to require explanation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not explain the parameters (date, dayOfWeek, startTime, scheduleType) beyond implying they identify the slot. The schema provides enums for some but no semantic meaning is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action (clear a schedule slot) on a specific resource (schedule slot) and distinguishes it from siblings by mentioning the 'dirty workspace' context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description hints at usage in the 'dirty workspace' and that saving is deferred, but it does not explicitly state when to choose this tool over alternatives like set_schedule_slot or when the dirty workspace applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_posterA

Create and archive a new HTML/CSS poster only after required operating and price-display rules are known. Validates PosterBrief first and returns missing questions instead of guessing eventName, VAT policy, table preference, table style, or program separation.

ParametersJSON Schema
NameRequiredDescriptionDefault
moodNo
tagsNo
yearNo
briefNo
monthNo
notesNo
styleNo
themeNo
titleYes
layoutNo
renderNo
statusNo
contentYes
purposeYes
sourcePosterIdNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behaviors: validation of PosterBrief, returning missing questions, archiving, and not guessing sensitive fields like eventName, VAT policy, etc. It also states a prerequisite condition. However, it does not specify what happens on success (e.g., returns created poster) or failure modes beyond missing questions, nor does it mention side effects like overwriting existing posters. The disclosed behaviors are accurate and useful, warranting a 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with two sentences. The first sentence states the tool's purpose and precondition, and the second explains the validation behavior. It is front-loaded, imparts critical constraints, and contains no filler or redundancy. Every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex (15 params, nested objects, enums, no output schema). The description clearly conveys the validation-first approach and the requirement to know operating and price-display rules. It does not mention the return format (e.g., whether it returns the created poster or just success), nor does it clarify how the content object should be structured beyond the schema. It covers the 'when' and 'why' but lacks details on the 'what happens after' and full parameter semantics, leaving gaps for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explicitly names several parameters (eventName, VAT policy, table preference, table style, program separation) and indicates they are conditionally required and must not be guessed. However, it does not explain the meaning or usage of many other parameters (mood, tags, year, month, notes, style, theme, render, status, etc.), leaving the agent to rely solely on the raw schema. The description adds value for the validation-related parameters but is insufficient for full parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Create and archive a new HTML/CSS poster'. It specifies a concrete action (create + archive) on a specific resource (poster), and distinguishes it from siblings like render_poster or update_poster by focusing on creation and validation. The mention of 'only after required operating and price-display rules are known' adds specific scope, differentiating it from a generic create tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit preconditions ('only after required operating and price-display rules are known') and explains that it will 'return missing questions instead of guessing', clarifying when to use it (when brief is incomplete but validation is needed). It does not explicitly name alternative tools (e.g., render_poster for rendering), but the context signals and unique validation behavior imply the appropriate use case. This is clear guidance but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_schedule_posterA

Create a Phase 1 poster from public-safe schedule data. Private displayName values are excluded by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
renderNo
weekStartNo
scheduleTypeYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It discloses that private displayName values are excluded by default, which is a useful behavioral trait. However, it does not explain other side effects, return values, or what 'Phase 1' entails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded, no filler. Every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With four parameters, no annotations, and no output schema, the description is insufficiently complete. It does not address the render options, scheduleType meaning, or return behavior, and the 'Phase 1' concept is unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the four parameters (title, render, weekStart, scheduleType). It only vaguely references 'public-safe schedule data' and private displayName exclusion, giving an indirect hint about filtering but no concrete parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Create' and identifies a distinct resource: 'Phase 1 poster from public-safe schedule data.' This differentiates it from general create_poster or render_poster by specifying Phase 1 and the public-safe filtering behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a specific use case (generating posters from schedule data) but does not explicitly state when to choose this over create_poster or render_poster. No alternatives or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_schedule_templateA

Create a new unsaved weekly group/private schedule template after required settings are known. Does not save until save_schedule is called.

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsNo
scheduleTypeYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the template is unsaved and requires save_schedule to persist, which is important behavioral context. However, with no annotations provided, it doesn't mention side effects, edge cases, or validation behavior. The description is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action, zero fluff. Every clause adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool involves a nested settings object with 7 sub-fields and has an output schema (absent). The description covers the workflow (unsaved → save_schedule) but leaves parameter details to the schema, which is only 0% described. Overall, adequate but could benefit from noting which settings are needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description doesn't elaborate on the parameters beyond naming 'settings'. The settings object's fields are documented only in the schema, but the description doesn't clarify which settings are required for the tool to work. Given the low coverage, the description should compensate but doesn't.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a new unscheduled weekly group/private schedule template, using a specific verb and resource. It distinguishes itself from siblings by mentioning 'unsaved' and referencing save_schedule, though it doesn't explicitly differentiate from get_schedule or generate_weekly_schedule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool - after required settings are known - and notes that saving is deferred to save_schedule. It doesn't explicitly state when not to use it or name alternatives, but the workflow context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_scheduleA

Export the current schedule to XLSX, preserving mapping metadata where possible and backing up an existing XLSX before writing.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo
scheduleTypeYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key behaviors: preserves mapping metadata 'where possible' and backs up existing XLSX before writing. Without annotations, this provides useful insights into side effects, but does not cover failure scenarios or overwrite confirmation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences convey the primary action and two important caveats without redundancy or irrelevant details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the main function and some behavioral details, but lacks information about return values, error handling, or exact file handling (e.g., overwrite behavior beyond backup). With no output schema, additional context would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No explanation of 'filename' or 'scheduleType' is provided. The schema defines them but the description adds no meaning, leaving users to guess the role of scheduleType (group vs. private) or the expected format of filename.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool exports the current schedule to XLSX, distinguishing it from import, generate, or other schedule-related tools. The mention of preserving mapping metadata and backing up existing files adds specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (exporting a schedule) but does not explicitly compare with alternatives like import_schedule_file or generate_weekly_schedule. No conditions or scenarios are given, though the action is evident from the name and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_available_slotsA

Find available schedule slots by schedule type, date/day, time range, and duration.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
toTimeNo
durationNo
fromTimeNo
dayOfWeekNo
scheduleTypeYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. 'Find available schedule slots' clearly indicates a read-only lookup behavior, but it does not disclose what 'available' means, how results are returned, or what happens when no slots match. It is adequate but not rich in behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every phrase contributes to the user's understanding of what the tool does and what inputs matter. This is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given six parameters, no output schema, and no annotations, the description is a minimal viable summary. It covers the core operation and criteria, but it does not explain return values or the exact semantics of date/day alternatives and duration matching. It is sufficient for basic selection but not fully complete for invocation confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It does add meaning by grouping parameters into categories: schedule type, date/day, time range, and duration. However, it does not explain formats, constraints, or relationships among fromTime, toTime, and duration, leaving some required semantic gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Find') and resource ('available schedule slots'), and lists the key filtering dimensions: schedule type, date/day, time range, and duration. This clearly distinguishes it from sibling tools like get_schedule or validate_schedule, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that the tool should be used when looking for available slots matching certain criteria, but it provides no explicit guidance about when to prefer this over sibling schedule tools or when not to use it. No alternatives or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_weekly_scheduleB

Generate an unsaved weekly schedule from the weekly template plus holidays, center closures, and overrides.

ParametersJSON Schema
NameRequiredDescriptionDefault
weekStartYes
scheduleTypeYes
applyHolidaysNo
applyCenterClosuresNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates that the schedule is 'unsaved', which suggests it does not persist changes, but it does not explicitly state side effects, permissions, or whether it modifies any state. With annotations absent, the description carries the burden but only partially covers behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that conveys the core functionality without unnecessary fluff. It is well-structured and easy to parse, though it could be slightly more detailed without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks crucial context: it does not describe the output format, the meaning of each parameter in detail, or the relationship to other tools. Given the complexity of the inputs (enums, booleans) and the absence of an output schema, the description is insufficient for a user to fully understand how to use the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The parameters (weekStart, scheduleType, applyHolidays, applyCenterClosures) are not explained in the description. The description mentions 'overrides' but there is no corresponding parameter, and the meanings of weekStart and scheduleType are left unspecified. This leaves significant gaps in understanding the inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Generate' and the resource 'weekly schedule', and specifies that it is 'unsaved' and based on 'the weekly template plus holidays, center closures, and overrides'. This distinguishes it from other schedule-related tools like get_schedule or save_schedule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. It does not mention that this is for creating a draft before saving, nor does it contrast with tools like find_available_slots or validate_schedule. The context of when this generation is appropriate is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_center_closuresB

Return locally stored center-specific closure dates.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden for behavioral disclosure. 'Return locally stored' hints at a read-only operation but does not explicitly state safety, nor does it mention if data might be stale or require refresh. It lacks detail about potential side effects or limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that fully conveys the core functionality without any filler. It is front-loaded with the action (Return) and the object (closure dates), making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 adequately explains its purpose. Given the simplicity, it does not need to elaborate on return structure or additional context. However, it could benefit from a brief note on when to use this vs. other closure-related tools, but within the simplicity, it's complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parametersr, so the schema provides minimal information. The description adds the key semantic that the data is center-specific and locally stored, which clarifies why no parameters are needed. This is appropriate and adds value beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool returns center-specific closure dates. It implies a read operation on locally stored data, which distinguishes it from sibling tools that add/remove closures or manage other center settings. However, it lacks a specific verb like 'get all' or 'list', but the purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides minimal guidance on when to use this tool. It does not compare with alternatives like add_center_closure or remove_center_closure, nor does it explain whether it's for viewing vs. modifying closures. No when-not-to-use or context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_center_profileA

Return the local Pilates center profile and poster defaults. Use before poster generation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. The description says 'Return the local Pilates center profile and poster defaults.' It does not mention any side effects, data format, or caching behavior. Since it's a read operation and likely safe, but there is no mention of return structure or any potential size limits. Lacks behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences. It efficiently states what it does and when to use it. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (no params, no output schema). The description covers purpose and usage context. However, given the purpose of the tool is to return a profile and poster defaults, it might be useful to indicate what kind of data is included, but with no parameters and a simple read, the description is mostly complete. A score of 3 is reasonable because it doesn't describe the return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters. The schema is empty. The description doesn't need to explain parameters. According to the rubric, 0 params = baseline 4. The description's mention of 'poster defaults' adds meaning to what is returned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool returns the local Pilates center profile and poster defaults. The verb 'return' and resource 'local Pilates center profile' are specific. While it distinguished from siblings like 'update_center_profile' and 'get_schedule_settings', it could be clearer about whether it returns only a subset or all center settings, but it is clear enough for purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Use before poster generation.' This gives clear context of when to use the tool. However, it doesn't explicitly mention when not to use it or contrast with other similar tools like 'get_schedule_settings', but the context is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_design_feedbackC

Return active local design feedback by scope, poster, or layout so generation can reference it.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNo
layoutNo
posterIdNo
activeOnlyNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It says 'active local design feedback' but doesn't clarify what 'local' means (e.g., scope-level vs global), how 'active' is determined (activeOnly parameter), or any behavioral traits like whether it returns only feedback not yet applied. The description adds some context but leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff, but it is somewhat dense and could be clearer. It front-loads the purpose, but the phrase 'so generation can reference it' adds minimal value. Overall efficient, though slightly ambiguous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 optional parameters with no output schema, and the description provides only a high-level purpose. It doesn't specify the return format, default behavior when no parameters are given, or how feedback is structured, making the tool difficult to use correctly in generation workflows.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain parameters. The description mentions the three filter dimensions (scope, poster, layout) but doesn't explain the activeOnly parameter or how the parameters interact (e.g., combinations, precedence). It fails to compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return') and resource ('active local design feedback'), and it scopes the operation by three dimensions (scope, poster, layout). However, it doesn't explicitly distinguish from sibling tools like add_design_feedback or other getters (get_center_profile, get_poster), though the unique focus on design feedback is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'so generation can reference it', implying usage context for generation workflows, but it doesn't explicitly state when to use this tool versus add_design_feedback or other getters, nor any exclusions or alternatives. It gives minimal guidance on when this tool should be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_posterA

Return one archived poster's metadata, structured content, theme, HTML, CSS, and local archive paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
posterIdYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of explaining behavior. It communicates a read-only operation ('Return') and lists the complete set of returned data categories, though it does not elaborate on the structure of the content or any error/edge-case behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with every phrase adding information about the tool's purpose or return payload. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema, the description does a good job listing the key return categories (metadata, content, theme, HTML, CSS, paths). It could be more complete by explaining the return shape or error behavior, but for a single-ID retrieval tool this is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only one parameter (posterId) and no schema-level description, the description adds minimal semantic context by implying posterId selects a single archived poster. It does not indicate how the ID is formatted or where it comes from, so the parameter semantics are only partially clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and resource ('one archived poster'), and enumerates exactly what is returned: metadata, structured content, theme, HTML, CSS, and local archive paths. This clearly distinguishes the tool from siblings like search_posters, render_poster, and create_poster/update_poster.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is implied: call with a posterId to retrieve that poster's full archived data. However, there is no explicit guidance on when to choose this over search_posters or render_poster, nor any exclusions or prerequisites, so the guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scheduleB

Return the current dirty draft or saved schedule template.

ParametersJSON Schema
NameRequiredDescriptionDefault
scheduleTypeYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It mentions 'dirty draft or saved schedule template' which adds nuance, but it fails to explain precedence, return format, or explicitly confirm read-only nature. The agent gets minimal behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no redundant words. It is concise and front-loaded, conveying the core purpose efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the simple 1-parameter schema, the lack of annotations, output schema, and parameter explanation leaves gaps. The description does not explain what happens when no schedule exists, how 'dirty' vs 'saved' is determined, or what the response contains. This incompleteness hinders an agent's ability to use the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero description coverage, and the description does not mention the 'scheduleType' parameter or its effect on the response. The parameter name and enum provide some self-evident meaning, but the description fails to compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Return') and the resource ('current dirty draft or saved schedule template'), which distinguishes it from sibling tools like get_schedule_settings or inspect_schedule_file. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is for retrieving the schedule template, but it does not explicitly state when to use it over alternatives such as get_schedule_settings or inspect_schedule_file. No exclusions or alternatives are mentioned, leaving usage context implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_schedule_settingsA

Return local non-CRM schedule settings such as week display, opening hours, slot minutes, locale, and holiday marking.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. The verb 'Return' implies a read-only operation, and the listed setting categories add some context, but there is no mention of side effects, defaults, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that is concise and directly states the tool's purpose. Every word earns its place with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter getter with no output schema, the description provides enough context by enumerating the kinds of settings returned. It could mention return format or default behavior, but the low complexity makes this adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is 100%, so the baseline is 4. The description adds useful context about what settings are returned, though no parameter semantics are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and clearly identifies the resource ('local non-CRM schedule settings') with concrete examples. This distinguishes it from sibling tools like get_schedule and update_schedule_settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given about when to use this tool versus alternatives. The phrase 'local non-CRM' hints at a distinction, but it does not name alternatives or state 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.

import_posterB

Import existing HTML/CSS into the local archive with metadata. Image-only poster reconstruction is intentionally out of Phase 1 scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
cssNo
htmlNo
themeNo
contentNo
cssPathNo
htmlPathNo
metadataYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It only mentions that content is imported and metadata is included, but does not explain side effects such as overwriting, validation, permissions, or what happens on error. The out-of-scope note is about scope, not behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose and a scope clarification. It is efficient and free of filler, though it sacrifices detail for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given seven parameters with complex nested structures and no output schema or annotations, the description is far from complete. It omits return values, error handling, relationships to other poster tools, and detailed behavior. The minimalism leads to inadequacy for reliable use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description provides no parameter guidance. It only mentions 'with metadata' without detailing html, css, content, theme, or path parameters. The complex nested content object's semantics are entirely unexplained, failing to compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (import), the resource (existing HTML/CSS), the target (local archive), and the inclusion of metadata. It distinguishes from sibling tools by being the only import tool for poster content and explicitly notes what is out of scope (image-only reconstruction).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context by stating it is for HTML/CSS import and clarifies that image-only poster reconstruction is not supported. While it does not explicitly name alternatives like create_poster or update_poster, the scope note gives a reasonable sense of when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_schedule_fileA

Import an existing group/private XLSX schedule into a dirty Schedule Workspace draft while preserving mapping metadata where possible.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYes
scheduleTypeNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions preserving mapping metadata 'where possible' but does not disclose side effects (e.g., modifications to the workspace, file handling, error behavior, or what happens if metadata cannot be preserved). It also does not indicate whether the operation is destructive or reversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no redundant words. It efficiently conveys the core action, input, target, and a notable caveat (preserving mapping metadata). There is no unnecessary detail or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the input and intent but omits several important contextual details: expected return value (no output schema), error handling, behavior with invalid file paths or unsupported types, and the full implications of a 'dirty' workspace. It is not fully complete for an agent to confidently execute without additional assumptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description implicitly references both parameters: filePath (the XLSX file location) and scheduleType (group/private). However, it does not explicitly describe their semantics, valid values, or constraints beyond the enum in the schema. The meaning of 'dirty' workspace is unclear and not tied to parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: importing an existing XLSX schedule into a draft workspace. It specifies the input type (group/private XLSX) and the target (a dirty Schedule Workspace draft), and mentions the preservation of mapping metadata. This distinguishes it from other tools like import_poster or create_schedule_template.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (importing an existing schedule file) but does not explicitly state when to use this tool over alternatives. It lacks guidance on exclusions or specific scenarios, such as when the file is not XLSX or when the workspace is not dirty. The 'dirty' qualifier is ambiguous and not explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_schedule_fileA

Inspect an existing XLSX schedule file inside the workspace and infer worksheet, used range, day columns, time column, merges, widths, and heights without executing formulas.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool inspects rather than modifies, explicitly says it does not execute formulas, and lists the structural attributes it infers. This is strong behavioral disclosure for a read-only inspection tool, though it does not mention error cases or path resolution details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It conveys the action, target, and the specific set of inferred properties efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with one parameter and no output schema, the description sufficiently identifies the input constraints and what the inspection covers. It could be slightly more complete by stating what the return value looks like, but the enumerated inference list gives adequate context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema only provides filePath with no description, so schema coverage is 0%. The description compensates by clarifying that the path must reference an existing XLSX schedule file inside the workspace. For a single-parameter tool, this is meaningful added semantics beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Inspect') and a specific resource ('existing XLSX schedule file inside the workspace'), and it enumerates what is inferred: worksheet, used range, day columns, time column, merges, widths, and heights. The phrase 'without executing formulas' also helps distinguish it from import or creation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this tool is for inspecting an existing schedule file in a read-only manner, which gives contextual usage. However, it does not explicitly name alternatives or state when not to use this tool versus import_schedule_file or create_schedule_template.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recommend_poster_styleB

Recommend poster layout/style/table structure from local archive history and saved feedback only. Does not search the internet.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthNo
purposeNo
recentMonthsNo
programCategoriesNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that it uses only local archive history and saved feedback and does not search the internet, which is valuable. However, it does not state whether it is read-only, what it returns, or how it behaves without enough data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the action and resource, with no wasted words. It is concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has four parameters, no output schema, and no annotations. The description is far too minimal to be complete. It does not explain parameter semantics, expected output, or any edge cases, making it insufficient for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description fails to mention any of the four parameters (month, purpose, recentMonths, programCategories). The description provides no additional meaning about how these parameters influence the recommendation, leaving the agent to rely solely on parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action (recommend) and resource (poster layout/style/table structure), and specifies the data source (local archive history and saved feedback). It also distinguishes itself from potential internet search tools by explicitly stating it does not search the internet.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for local-data-based recommendations but does not explicitly contrast with alternatives like create_poster or render_poster, nor does it state when to use it over other tools. The 'local only' constraint is a limitation but not a direct usage guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_center_closureB

Remove a center-specific closure date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for disclosing behavior. 'Remove' implies a mutation, but the description does not clarify whether the removal is permanent, what effects it has on schedules, or what happens if the date does not exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It states the action and object efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, this description is too sparse. It lacks usage context, parameter format, behavioral consequences, and any indication of what to expect after invocation, making it only minimally adequate for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description needed to compensate by explaining the 'date' parameter's format or semantics. It only echoes 'closure date', which adds little beyond the parameter name and the tool name, leaving ambiguity about expected date format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Remove') and a specific resource ('center-specific closure date'), clearly indicating the tool's function. It also implicitly distinguishes itself from sibling tools like add_center_closure and get_center_closures.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites, exclusions, or related tools. There is no explicit context for the agent to judge appropriate invocation scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_posterB

Render an archived HTML/CSS poster to PNG and/or PDF with headless Chromium. JavaScript is disabled during rendering.

ParametersJSON Schema
NameRequiredDescriptionDefault
pdfNo
pngNo
sizeNo
posterIdYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that headless Chromium is used and JavaScript is disabled during rendering, which clarifies part of the rendering behavior. However, with no annotations available, it omits permission requirements, output naming/return conventions, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that effectively captures the tool's operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 params, an enum, no output schema, and no annotations. The description confirms rendering but fails to specify output types, side effects, or the meaning of 'size' and posterId. Sibling tools are relevant but no differentiator.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 4 parameters but 0% schema description coverage. The description doesn't explain posterId, the size enum (instagram-portrait, instagram-square, story, a4-portrait), or whether png/pdf booleans can be combined or must be exclusive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific conversion task: render an archived HTML/CSS poster to PNG/PDF via headless Chrome. The word 'archived' distinguishes it from create/update/get tools, though it doesn't explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 siblings (create_poster, get_poster, search_posters) or exclusions for when another tool is preferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reuse_poster_templateB

Copy an existing poster's layout/style/theme into a new poster and replace only the content. Never overwrites the source poster.

ParametersJSON Schema
NameRequiredDescriptionDefault
moodNo
tagsNo
yearNo
briefNo
monthNo
notesNo
styleNo
themeNo
titleYes
layoutNo
renderNo
statusNo
contentYes
purposeNo
sourcePosterIdYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral disclosure burden. It does disclose that the source is never overwritten and that only content is replaced, but it omits what happens to fields like tags, status, render options, and whether a new poster ID is generated. The term 'replace only the content' is ambiguous regarding non-content fields (e.g., title, brief, layout).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. The first sentence states the action and its effect; the second emphasizes a critical safety guarantee. Every word earns its place, and the key constraint is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's high complexity (15 params, nested objects), 0% schema description coverage, and no output schema or annotations, the description is grossly incomplete. It fails to clarify the fate of metadata fields, what 'content' includes, or how the source poster is selected. For a tool this complex, far more detail is needed to ensure correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description mentions zero parameter names. The tool has 15 parameters, including complex nested objects like 'brief' and 'content', yet the description provides no hints about how parameters like 'sourcePosterId', 'mood', or 'theme' should be used. This is completely inadequate for an agent to fill the schema correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('copy') and resource ('existing poster's layout/style/theme into a new poster'), clearly distinguishing it from create/update/import poster siblings. It also states the key scope ('replace only the content') and a critical constraint ('Never overwrites the source poster'), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage ('Copy an existing poster's layout/style/theme...') but does not explicitly state when to use this over alternatives like create_poster or update_poster. There is no mention of when-not-to-use or alternatives, though the phrasing 'reuse' suggests a template-copy scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_scheduleA

Explicitly save the dirty schedule template and create a revision backup when replacing an existing saved template.

ParametersJSON Schema
NameRequiredDescriptionDefault
scheduleTypeYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It mentions creating a revision backup, which is a useful behavioral detail, but it doesn't disclose other important aspects like whether this is a destructive action (overwrites existing template?), required permissions, or what happens if the template is not dirty. It's partially transparent but leaves gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that clearly states the purpose and key behavior (backup creation). It avoids unnecessary words and is well-structured, front-loading the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one enum parameter and no output schema, the description is reasonably complete in that it explains the primary purpose and a key side effect (revision backup). However, it doesn't explain what 'dirty' means, what triggers a backup vs. not, or any potential side effects like overwriting. For a mutation tool with no annotations, it could be more detailed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema is simple with one enum parameter (scheduleType: group/private). The schema already fully documents the valid values, so the description adds no additional meaning. Context signals show 0% schema description coverage, but with a single enum param, the schema is sufficient. The description doesn't explain what 'dirty' means or how it relates to scheduleType, but the baseline is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: explicitly save a dirty schedule template. It also mentions the resource (schedule template) and adds the detail of creating a revision backup when replacing an existing saved template. This distinguishes it from other schedule-related tools like save or import, though it could be more explicit about the 'dirty' state concept.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when a schedule template is dirty and needs to be saved, but it doesn't explicitly state when to use it vs. alternatives (e.g., auto-save, or using import_schedule_file). It doesn't mention any exclusions or prerequisites, leaving some ambiguity for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_postersC

Search local archived poster metadata by date, layout, purpose, style, feedback-related tags, free text, VAT policy, and table structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
moodNo
yearNo
limitNo
monthNo
queryNo
styleNo
layoutNo
statusNo
purposeNo
vatPolicyNo
tableStyleNo
recentMonthsNo
programCategoryNo
programSeparationNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description bears full responsibility for behavioral disclosure. It does not mention whether this is a read-only operation, what the output format is (no output schema), whether results are paginated, or any limits on data scope. The 'local archived' qualifier hints at scope but lacks detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, complete sentence that is front-loaded with 'Search local archived poster metadata' and then enumerates filter categories efficiently. No fluff, but it could be slightly more structured for readability (e.g., bullet points).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 15 parameters (none required), no output schema, and no annotations, the description is inadequate. It does not clarify how the search behaves (e.g., case sensitivity, wildcard support), whether multiple filters are conjunctive, or what the response contains. The tool appears complex, and the description only lists filters without operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description lists all parameter categories (date, layout, purpose, style, feedback tags, free text, VAT policy, table structure) but does not clarify how parameters combine (AND/OR logic), whether they are optional filters, or any nuances like the 'recentMonths' vs 'month'/'year' precedence. The enum values provide some semantics, but the description adds minimal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Search local archived poster metadata' with a specific verb and resource, and lists the search dimensions (date, layout, purpose, etc.). It distinguishes from sibling search tools like search_posters vs. get_poster, though it doesn't explicitly differentiate from potential other search functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. While the list of filters implies use cases, there is no mention of when to prefer this over create_poster, get_poster, or recommend_poster_style. Missing exclusions or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_schedule_slotB

Set one group/private schedule slot in the dirty workspace. Conflicts are returned unless overwrite is explicitly true. Only displayName is allowed for private names; no CRM fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
noteNo
endTimeNo
dayOfWeekNo
overwriteNo
startTimeYes
groupTitleNo
instructorNo
displayNameNo
scheduleTypeYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It reveals two key behaviors: conflicts are returned unless 'overwrite' is true, and for private slots only 'displayName' is allowed (no CRM fields). This gives meaningful insight into side effects and validation. However, it omits details on success/failure responses, idempotency, or what 'dirty workspace' implies operationally, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three terse sentences with no filler. Every word adds value: it names the resource, defines the core behavior (conflicts vs overwrite), and states a critical constraint. It is appropriately brief for the information it conveys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, 2 enums, no output schema), the description is insufficiently complete. It fails to explain the interplay between 'date'/'dayOfWeek' and 'startTime'/'endTime', the meaning of 'dirty workspace', or what constitutes a valid slot. Critical information for successful use is missing, making this under-specified for an agent to correctly invoke all parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage and 10 parameters, the description adds some semantics by explaining 'overwrite' (affects conflict behavior) and 'displayName' (only private name field). However, it leaves the other eight parameters (date, startTime, endTime, dayOfWeek, instructor, etc.) unexplained, not even their format or interaction. The description fails to compensate for the lack of documentation in the schema, although the two parameters it does explain are given useful context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Set one group/private schedule slot in the dirty workspace' clearly states the action (set) and the resource (group/private schedule slot), and distinguishes this from sibling tools like clear_schedule_slot or get_schedule by specifying the single-slot, group/private nature. It identifies the workspace context ('dirty workspace') and the key behavior of conflict handling, making the purpose immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives (e.g., generate_weekly_schedule, clear_schedule_slot). It doesn't mention prerequities, when not to use it, or which sibling tools handle related scenarios. The conflict/overwrite note hints at usage behavior but doesn't compare to other schedule-modifying tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_center_profileA

Update non-member Pilates center profile fields and default poster expression rules such as VAT and table style.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
brandNo
logoPathNo
footerTextNo
defaultStyleNo
defaultLocaleNo
posterDefaultsNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It implies a mutating operation but does not disclose potential side effects, reversibility, or authorization requirements. It only hints at the scope (non-member, poster defaults) without behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise, front-loaded with the action and target, and contains no fluff. It gets to the point instantly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, nested objects, no output schema, no annotations), the description is notably incomplete. It does not clarify whether updates are partial or full, what the response contains, or any prerequisites, leaving significant ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only hints at two parameters (VAT and table style) while fully ignoring the other five. No explanation of formats, allowed values, or relationships is given, leaving the agent to guess from parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (update) and the resource (non-member Pilates center profile fields), and specifically mentions poster expression rules like VAT and table style, which are in the posterDefaults object. This differentiates it from siblings like get_center_profile and update_schedule_settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it is for non-member centers and targets profile fields and poster defaults. However, it does not explicitly state when not to use it or mention alternative tools, so it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_posterA

Update an existing poster source HTML/CSS through structured content/theme fields. Creates a simple revision backup first.

ParametersJSON Schema
NameRequiredDescriptionDefault
moodNo
notesNo
styleNo
themeNo
titleNo
statusNo
contentNo
posterIdYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that a revision backup is made first, which is a useful safety behavior, but it does not clarify whether unspecified fields are merged or replaced, auth requirements, or any validation/destructive effects. This is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exactly two sentences, front-loaded with the core purpose and then the backup behavior. No wasted words, and it is highly readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, nested objects, no output schema, no annotations), the description is too sparse. It does not explain how the update interacts with existing content (merge vs replace), return values, or any error conditions. The backup note is helpful but far from adequate for a tool of this scale.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only mentions 'content/theme fields' generally. It does not explain any specific parameter beyond that, leaving the nested content object and other fields (mood, notes, style, status, etc.) completely unexplained. This is insufficient for such a complex schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates an existing poster's source HTML/CSS via structured fields, which distinguishes it from create_poster (creation) and render_poster (rendering). The verb 'update' and resource 'existing poster' are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage for existing posters being modified through structured fields, giving context that this is not for raw HTML edits or new posters. However, it does not explicitly name alternatives like create_poster or mention when not to use it, so it stops short of a perfect 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_schedule_settingsC

Update center schedule defaults. These are operational settings and must not include member CRM data.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNo
closingTimeNo
countryCodeNo
openingTimeNo
weekDisplayNo
autoHolidayMarkingNo
defaultSlotMinutesNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full burden of behavioral disclosure. 'Update' implies mutation, but the description does not state whether the update is incremental or full, what permissions are required, whether changes are reversible, or what the response contains. The single constraint about member CRM data is not sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no wasted words. It front-loads the primary action and adds a necessary constraint, making it highly concise and well-structured for the limited content it contains.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a 7-parameter mutation tool with no annotations and no output schema, yet the description only provides a one-line purpose and a single constraint. It lacks any detail about parameter usage, side effects, return values, or when to use the tool, making it inadequate for an agent to safely and correctly invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 7 parameters with zero descriptions (0% coverage), and the description does not compensate by explaining any parameter semantics. While parameter names like 'openingTime' and 'weekDisplay' are somewhat self-explanatory, the description provides no additional meaning, leaving the agent without guidance on formats, defaults, or relationships between fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update center schedule defaults' with a specific verb and resource, distinguishing it from sibling tools like get_schedule_settings (retrieval) and update_center_profile (profile settings). This leaves no ambiguity about the tool's primary function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives. The phrase 'operational settings' and the constraint about not including CRM data offer some context, but there is no mention of prerequisites, exclusions, or when to prefer a sibling tool such as get_schedule_settings for reading defaults.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_scheduleA

Validate duplicate slots, operating hours, holiday conflicts, time ranges, and Excel mapping warnings.

ParametersJSON Schema
NameRequiredDescriptionDefault
scheduleTypeYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral transparency. It discloses the validation domains being checked but omits details about return format, side effects, or whether the operation is read-only, which is a notable gap for a validation tool with no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-organized sentence that front-loads the action and iterates through all validation areas with efficient parallel structure. Every word adds value, and there is no redundancy or unnecessary qualifiers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's single parameter and lack of output schema, the description provides no mechanism for how the tool obtains data to validate, making the agent guess whether it operates on state, files, or templates. The domain context (schedule management with imports) is only referenced in 'Excel mapping warnings,' leaving key questions about prerequisites and return values unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description does not mention the 'scheduleType' parameter at all. While the parameter itself has a self-explanatory enum (group/private) and is required, the description fails to clarify how the parameter changes validation behavior or what values mean in context, leaving a critical gap for the only parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Validate') and enumerates the exact resources/checks (duplicate slots, operating hours, holiday conflicts, time ranges, Excel mapping warnings), making the tool's purpose unmistakable. It clearly distinguishes itself from sibling tools which focus on CRUD or other actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (validation after schedule setup or import) through its enumeration of validation types. While it doesn't explicitly name alternatives or exclusions, the specific validation categories provide sufficient context for a focused validation workflow.

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.

  1. 29 tool updatesv0.1.0
    • First observedadd_center_closure
    • First observedadd_design_feedback
    • First observedclear_schedule_slot
    • First observedcreate_poster
    • First observedcreate_schedule_poster
    • First observedcreate_schedule_template
    • First observedexport_schedule
    • First observedfind_available_slots
    • First observedgenerate_weekly_schedule
    • First observedget_center_closures
    • First observedget_center_profile
    • First observedget_design_feedback
    • First observedget_poster
    • First observedget_schedule
    • First observedget_schedule_settings
    • First observedimport_poster
    • First observedimport_schedule_file
    • First observedinspect_schedule_file
    • First observedrecommend_poster_style
    • First observedremove_center_closure
    • First observedrender_poster
    • First observedreuse_poster_template
    • First observedsave_schedule
    • First observedsearch_posters
    • First observedset_schedule_slot
    • First observedupdate_center_profile
    • First observedupdate_poster
    • First observedupdate_schedule_settings
    • First observedvalidate_schedule

TDQS

B3.3/5.0

Scored across 29 tools

Disambiguation4/5

Most tools map to distinct resource-action pairs, and the descriptions generally make boundaries clear. The closest potential confusions are create_schedule_poster vs. create_poster and inspect_schedule_file vs. import_schedule_file, but each has enough distinction to guide selection.

Naming Consistency5/5

All tool names consistently follow a snake_case verb_noun pattern, such as get_schedule, update_center_profile, render_poster, and validate_schedule. There are no mixed naming conventions or vague one-word tool names.

Tool Count2/5

29 tools is above the comfortable range for a single MCP server and crosses the 'too many' threshold. While the tools are organized into settings, schedule, and poster workflows, the large surface increases selection burden and makes the server feel heavy.

Completeness4/5

The tool surface covers center profile settings, schedule import/template/validation/save/export, and poster creation/archive/render/feedback/search comprehensively. Minor lifecycle gaps exist, such as no explicit delete operation for a poster or an entire saved schedule template, but these are workaroundable.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers