PyP6Xer MCP Server
This server allows you to load, analyze, edit, and export Oracle Primavera P6 .xer schedule files from any MCP-compatible client.
File Management
Load
.xerfiles from a local path, URL, or base64-encoded contentManage multiple schedules simultaneously using different cache keys
Clear cached files and write modified schedules back to disk
Project & Activity Browsing
List all projects with summary statistics
List, paginate, filter, and search activities by name, ID, status, WBS code, or project
Get full details for a single activity (dates, float, costs, resources, relationships)
Retrieve available activity field names for optimized queries
Schedule Analysis
Critical path identification (total float ≤ 0)
Float distribution analysis with near-critical flagging
DCMA-style schedule quality checks (open ends, lags, constraints, negative float, etc.)
Composite schedule health score (0–100) with narrative summary
Slipping activities (forecast finish exceeds baseline finish)
Relationship analysis: types (FS/SS/FF/SF), lag/lead distribution, and logic density
Progress & Earned Value
Schedule progress summary (status breakdown, percent complete, milestones)
Full EVM metrics: BCWS, BCWP, ACWP, SPI, CPI, CV, SV, EAC, VAC
Resources & Calendars
List resources with assignment counts and cost/quantity totals
Resource utilization: planned vs. actual vs. remaining quantities and costs
List all calendars with type, hours, and default status
WBS Analysis
WBS hierarchy with task counts and cost rollups per node
Leaf-level work package summary with schedule and cost data
Export & Comparison
Export activities to CSV with configurable columns
Compare two schedule snapshots to identify added, removed, and changed activities
Editing
Update individual activity fields (status, percent complete, dates, remaining duration)
Batch update multiple activities in a single call
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PyP6Xer MCP ServerRun a schedule health check on terminal-building-airport"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PyP6Xer MCP Server
AI-agent tools for Primavera P6 XER schedules. Load, analyse, compare, edit, and export .xer files from Claude, ChatGPT, Cursor, or any MCP-compatible client.
PyP6Xer MCP is workflow-oriented, not just a parser. Unlike basic XER readers, it gives AI agents the full project-controls loop: schedule health checks, critical path, delay comparison, progress updates, relationship edits, and write-back to XER.
Prefer a web interface? p6.bouch.dev — upload an XER and analyse it without configuring MCP.
Use cases
Ask questions about a Primavera P6 XER schedule
Run critical path and float analysis
Compare baseline vs update XER files and identify slipping activities
Run schedule quality and health checks
Edit activity fields safely and batch-update progress
Export modified XER files
Analyse relationship changes between two XER snapshots
Build AI workflows for delay analysis and project controls
Related MCP server: MCP PDF
Example prompts
Load this XER and show the critical path.
Compare baseline.xer and update-03.xer and list major slippages.
Find activities with high float, missing logic, or long durations.
Update activity A1020 to 60% complete and export the edited XER.
Analyse relationship changes between two XER snapshots.
Connect
Hosted (no install)
{
"mcpServers": {
"pyp6xer": {
"type": "http",
"url": "https://pyp6xer-mcp.fly.dev/mcp"
}
}
}Local (uvx — no clone needed)
{
"mcpServers": {
"pyp6xer": {
"type": "stdio",
"command": "uvx",
"args": ["pyp6xer-mcp"]
}
}
}Local (from source)
Clone the repo, then point your MCP client at it:
git clone https://github.com/paulieb89/pyp6xer-mcp.git
cd pyp6xer-mcp
uv sync{
"mcpServers": {
"pyp6xer": {
"type": "stdio",
"command": "uv",
"args": ["run", "server.py"],
"cwd": "/path/to/pyp6xer-mcp"
}
}
}Usage
1. pyp6xer_load_file — load a .xer from a local path, URL, or base64
2. <analysis tools> — analyse the loaded schedule
3. pyp6xer_write_file — persist any edits back to diskMultiple files can be loaded simultaneously using different cache_key values.
Tools (29)
Category | Tools |
File |
|
Activities |
|
Analysis |
|
Progress / EVM |
|
Resources |
|
Calendars |
|
WBS |
|
Export |
|
Write |
|
All tool names are prefixed pyp6xer_ to avoid conflicts when used alongside other MCP servers.
Dependencies
Licence
MIT
Available Tools
29 toolspyp6xer_batch_updateAIdempotent
Update multiple activities in a single call.
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | List of {task_code, ...fields} dicts, one per activity to update | |
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (idempotentHint=true, destructiveHint=false) indicate safe, non-destructive, idempotent behavior. The description adds no further behavioral details (e.g., partial failure handling, return structure, concurrency implications). With annotations present, the description provides minimal extra value beyond stating the operation is a write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 6 words, efficiently conveying core purpose. It is front-loaded and avoids unnecessary verbiage. However, it could be slightly expanded to improve clarity without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the output schema is present (likely documenting return values), the description omits details about how to construct the 'updates' array beyond mentioning 'task_code'. The schema has an empty items object, leaving validation unclear. Given the tool's batch nature, more guidance on error handling or atomicity would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; the description of 'updates' already includes format hints ('{task_code, ...fields} dicts'). The tool's description does not add any additional meaning beyond what the schema provides. A baseline of 3 is appropriate as the schema does the necessary work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update multiple activities in a single call' clearly states the verb ('Update'), the resource ('activities'), and the key differentiator ('multiple', 'single call'). This distinctively separates it from the sibling tool 'pyp6xer_update_activity', which presumably handles single updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for batch updates but provides no explicit guidance on when to prefer this over alternatives (e.g., 'pyp6xer_update_activity'), nor does it specify prerequisites, limitations, or when not to use it. While the context signals indicate 2 parameters, no usage constraints are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_clear_cacheAIdempotent
Remove one or all loaded XER files from the cache.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key to clear; omit to clear all cached files |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and destructiveHint=false, which aligns with cache clearing. The description does not add behavioral details beyond these hints, such as side effects or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence with no superfluous words. Effectively front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal but adequate for a simple cache clear operation. However, it omits mention of output behavior and prerequisites (e.g., files must be loaded first), which are relevant given the sibling load_file tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the parameter description already explains omitting cache_key clears all. The tool description adds minimal semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'remove' and the resource 'one or all loaded XER files from the cache', distinguishing it from sibling tools like load or write.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool (e.g., before reloading, after errors) or when not to use it. The description lacks context on alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_compare_snapshotsARead-onlyIdempotent
Compare two loaded XER files (snapshots) to identify schedule changes.
Reports added, removed, and changed activities (dates, duration, float, status). Useful for analysing schedule updates between periods.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key_a | Yes | Cache key of the base (original) snapshot | |
| cache_key_b | Yes | Cache key of the modified snapshot to compare | |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, providing safety. The description adds that it reports changes in specific fields (dates, duration, float, status), which is useful but does not elaborate on behavioral traits like side effects or performance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The first sentence states the core action, the second adds detail and a use case. Well front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description doesn't need to detail return values. It covers key aspects: what it does and what changes it reports. It could mention the proj_id parameter's role, but schema covers it. Adequate for a moderately complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add additional meaning beyond what the schema already provides for each parameter; it only reinforces the purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'compare' and resource 'loaded XER files (snapshots)', and details outcomes: 'added, removed, and changed activities' with specific fields. It is clearly distinguishable from sibling tools like critical_path or slipping_activities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for analyzing schedule updates between periods but does not explicitly state when not to use it or provide alternatives among the many sibling analysis tools. Guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_critical_pathARead-onlyIdempotent
Return all activities on the critical path (total float ≤ 0 or longest path flag).
Activities are sorted by early start date. Includes float, dates, and predecessor/successor counts.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and non-destructive. The description adds that results are sorted by early start date and include float, dates, and predecessor/successor counts, providing useful behavioral details beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. First defines the core purpose with definition. Second adds sorted output and included fields. No redundancy or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description need not detail return values. It sufficiently covers purpose, sorting, and included fields for a critical path retrieval tool. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. The description does not add new information about parameters beyond confirming their roles (cache_key, proj_id). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Return' and the resource 'activities on the critical path' with a definition (total float ≤ 0 or longest path flag). This distinguishes it from sibling tools like pyp6xer_list_activities and pyp6xer_float_analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when critical path activities are needed) but does not explicitly state when not to use or provide alternatives. Usage context is clear from the name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_earned_valueARead-onlyIdempotent
Calculate Earned Value Management (EVM) metrics.
Metrics:
BCWS (PV): Budgeted Cost of Work Scheduled = total budgeted cost × duration %
BCWP (EV): Budgeted Cost of Work Performed = sum of (budget × % complete) per task
ACWP (AC): Actual Cost of Work Performed = sum of actual costs
SPI: Schedule Performance Index = EV / PV
CPI: Cost Performance Index = EV / AC
CV: Cost Variance = EV - AC
SV: Schedule Variance = EV - PV
EAC: Estimate at Completion = BAC / CPI
VAC: Variance at Completion = BAC - EAC
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true. The description adds value by explicitly listing the computed metrics and their formulas, giving the agent a clear picture of what outputs to expect. However, it does not disclose any potential constraints (e.g., how missing data affects calculations) or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise: a one-sentence summary followed by a well-organized list of metrics with formulas. Every sentence is informative, no fluff, and the key purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (not shown but indicated by context), the description does not need to detail return values. The formulas provide sufficient context for what the tool computes. However, it lacks information about how the metrics are derived from the project data (e.g., reliance on budget fields) and does not mention any limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes both parameters (cache_key and proj_id) sufficiently. The description does not add any additional meaning or usage hints for the parameters, maintaining the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool calculates Earned Value Management (EVM) metrics and lists specific formulas (BCWS, BCWP, ACWP, etc.). This distinguishes it from sibling tools like pyp6xer_progress_summary or pyp6xer_schedule_health_check, as EVM is a distinct subset of project control metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., pyp6xer_progress_summary). It does not mention prerequisites, such as having loaded a file with pyp6xer_load_file, nor does it indicate that this tool is appropriate for detailed EVM analysis versus high-level progress.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_export_csvARead-onlyIdempotent
Export activities to CSV format (returned as a string).
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted | |
| fields | No | Subset of field names to return; call pyp6xer_get_activity_schema to see available names |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, destructiveHint, idempotentHint) already establish safety. The description adds that the output is a string and CSV format, providing useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads key information without any extraneous content. It is optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (3 parameters, high schema coverage, output schema exists, annotations present), the description covers the essential purpose and output. It could mention delimiter or encoding details but is largely complete for a straightforward export tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, with each parameter having a description. The tool description does not add new semantic meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Export'), resource ('activities'), format ('CSV'), and return type ('string'). It distinguishes from sibling 'pyp6xer_export_xer' by specifying CSV format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining a CSV string of activities but lacks explicit guidance on when to use this tool versus alternatives like 'pyp6xer_export_xer' or 'pyp6xer_generate_report'. No exclusions or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_export_xerARead-onlyIdempotent
Export the current (possibly modified) schedule as base64-encoded XER bytes.
Returns serialised XER content encoded as base64 so callers can offer a file download without requiring a writable local path on the server.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, destructiveHint=false, idempotentHint=true) indicate safe, non-destructive behavior. The description adds value by explaining the base64 encoding rationale and that it exports the current in-memory schedule, which complements the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences. The first sentence states the primary action, and the second explains the encoding rationale. Every sentence adds value with no extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (as indicated by context signals), the description does not need to detail return values. It covers the tool's purpose and the reason for base64 encoding. It could mention the prerequisite of a loaded schedule, but that is implied by 'current schedule'. Overall, it is sufficiently complete for a simple tool with one optional parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a description for the single parameter (cache_key) with 100% coverage. The description does not add additional context about the parameter, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports the current schedule as base64-encoded XER bytes, providing a specific verb and resource. It distinguishes from sibling export tools like pyp6xer_export_csv by specifying the format (XER vs CSV) and the encoding reason (base64 for file download without local path).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after loading a schedule via pyp6xer_load_file by referring to the 'current (possibly modified) schedule'. It provides clear context for when to use this tool (to get XER data for download) but does not explicitly mention alternatives like pyp6xer_export_csv or pyp6xer_write_file, which is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_float_analysisARead-onlyIdempotent
Analyse total float distribution across activities.
Groups activities into float buckets and flags near-critical activities.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted | |
| max_float_days | No | Upper bound for float display in days |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description builds on annotations (readOnlyHint=true, destructiveHint=false) by detailing that it groups activities into buckets and flags near-critical activities. This adds behavioral context beyond what annotations provide, though it could additionally describe the output format or effect on the state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundancy. Key actions ('analyze', 'groups', 'flags') are front-loaded, and every word adds value. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (context signal), the description need not explain return values. It covers the main functionality and the reliance on cache_key is partially implied by the schema parameter description. Slight improvement could be mentioning that a loaded file is required, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, so the schema already documents all parameters. The description does not add extra meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it analyzes total float distribution, groups activities into float buckets, and flags near-critical activities. This distinguishes it from siblings like pyp6xer_critical_path (which focuses on critical path) and pyp6xer_schedule_health_check (which is broader).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for float distribution analysis but does not explicitly state when to use this tool versus alternatives like pyp6xer_critical_path or pyp6xer_schedule_health_check. No exclusions or selection criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_generate_reportARead-onlyIdempotent
Assemble a complete monthly progress report dataset.
Returns structured metrics: progress %, health score, slipping activities, critical path density, and earned value. Use this data to write a monthly narrative with sections: Executive Summary, Schedule Status, Critical Path & Risks, and Outlook.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds value by explaining the tool returns structured metrics and how to use them for narratives.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose and list key outputs. No unnecessary verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema and clear annotations, the description adequately explains the tool's purpose and output. However, it doesn't explicitly mention dependencies like the cache_key requirement, though this is covered in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add additional meaning beyond the parameter descriptions already in the schema. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool assembles a complete monthly progress report dataset and lists specific metrics (progress %, health score, etc.). This distinguishes it from sibling tools that focus on individual metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description guides use by specifying that the output is for writing a monthly narrative with sections. It implicitly suggests using this tool for consolidated reporting rather than individual metrics, but it could be more explicit about 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.
pyp6xer_get_activityARead-onlyIdempotent
Get full details for a single activity including dates, float, costs, resources assigned, and predecessor/successor relationships.
| Name | Required | Description | Default |
|---|---|---|---|
| task_code | Yes | Activity task code (e.g. A1000) | |
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted | |
| fields | No | Subset of field names to return; call pyp6xer_get_activity_schema to see available names |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds value by detailing the content of the returned data (dates, float, costs, etc.), providing useful context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose and key details. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of P6 XER data, the description adequately covers the tool's functionality. Output schema exists, so return values are documented. Could mention prerequisite of loading a file, but schema covers cache_key.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, so the schema already explains parameters. The description does not add parameter-level meaning; it focuses on output. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves full details for a single activity and lists specific data included (dates, float, costs, resources, relationships). It distinguishes from sibling tools like list_activities or search_activities by focusing on a single activity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving details of one activity by task_code, but it does not explicitly state when to use this tool versus alternatives like search_activities or list_activities. No exclusions or alternative guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_get_activity_schemaARead-onlyIdempotent
Return the available field names for activity read tools.
Use the returned field names with the fields parameter of
pyp6xer_list_activities, pyp6xer_get_activity, and pyp6xer_search_activities
to limit response size to only the columns you need.
summary_fields are available on list_activities and search_activities. detail_fields are only available on get_activity (they require fetching relationships and resources which are not on the list view).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint. Description adds detail about the type of data returned (field names) and the distinction between summary and detail fields, which is beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each essential. First states purpose, second explains usage, third clarifies field differentiation. No extraneous words. Front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, full annotation coverage, and an output schema (implied by field names), the description is fully complete. It tells the agent exactly what the tool returns and how to use the result with sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no parameters, so no parameter semantics needed. Baseline for 0 params is 4. Description still provides useful context about the output schema (field names) but doesn't need to describe parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'Return the available field names for activity read tools' and distinguishes between summary_fields and detail_fields. It names specific sibling tools that use these fields, making the purpose crystal clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains that field names should be used with the `fields` parameter of other activity tools to limit response size. Differentiates when summary_fields vs detail_fields apply. Lacks explicit when-not-to-use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_get_upload_urlARead-onlyIdempotent
Get instructions for uploading an XER file to this server.
Since this is a local server, files are loaded directly via pyp6xer_load_file using a local path or URL.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context about the local server and the flow (instructions then load), but doesn't elaborate on behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with core purpose, no unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is brief but sufficient for a 0-param tool. It explains the purpose and relationship to pyp6xer_load_file. The output schema (which exists) can provide detail on return values, so description doesn't need more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters (100% coverage trivially). Baseline for 0 parameters is 4; description doesn't need to add param info and doesn't, so stays at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides instructions for uploading an XER file, with a specific verb ('get') and resource ('upload instructions'). It distinguishes from sibling pyp6xer_load_file by clarifying this tool is for instructions, not the actual load.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes that files are loaded via pyp6xer_load_file after getting instructions, providing clear guidance on when to use this tool vs its sibling. It also mentions the local server context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_list_activitiesBRead-onlyIdempotent
List activities with optional filtering and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted | |
| status | No | Filter by status: 'not_started', 'in_progress', or 'completed' | |
| wbs_code | No | Filter activities by WBS code prefix | |
| limit | No | Maximum number of results to return | |
| offset | No | Number of results to skip for pagination | |
| fields | No | Subset of field names to return; call pyp6xer_get_activity_schema to see available names |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the description's minimal behavioral info is acceptable. However, it does not add context about default pagination behavior, rate limits, or the dependency on a loaded XER file, which would be useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at 7 words, capturing the core function. No wasted text. However, it could benefit from a slightly more informative sentence without adding fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks critical context: it does not mention that a cache_key from a prior 'pyp6xer_load_file' call is required. With 7 parameters and an output schema, this omission limits completeness. It also does not describe pagination behavior beyond what the parameters imply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. The description adds a high-level summary ('optional filtering and pagination') but no new meaning beyond what the schema provides. Baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List activities with optional filtering and pagination,' specifying the verb (list) and resource (activities). It distinguishes from sibling 'search_activities' by implying it returns all activities with filters, though not explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like 'pyp6xer_search_activities' or other list tools. The description does not mention prerequisites (e.g., loading a file) or when filtering is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_list_calendarsARead-onlyIdempotent
List all calendars defined in the XER file.
Returns calendar name, type (global/project/resource), hours per day/week/year, and whether it is the project default.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds context by listing the specific fields returned, which is useful beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences. The first sentence states the action, and the second enumerates the output fields. No extraneous information or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter with full schema coverage and an output schema (implied), the description adequately explains the tool's purpose and output. It does not discuss ordering or edge cases, but for a straightforward list tool it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, cache_key, is fully described in the schema with 100% coverage. The description does not add additional meaning beyond what the schema provides, so it meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all calendars from an XER file and specifies the returned fields (name, type, hours, default status). This distinguishes it from sibling list tools like pyp6xer_list_activities or pyp6xer_list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving calendar definitions but offers no explicit guidance on when to use this tool over alternatives or when not to use it. Sibling list tools exist, but no comparison is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_list_projectsARead-onlyIdempotent
List all projects in the loaded XER file with summary statistics.
Returns project IDs, names, data date, finish date, activity counts, and high-level cost and schedule metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds behavioral context by listing the specific summary statistics returned, which goes beyond what annotations provide. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no extra words. The first sentence states the action and scope, the second lists the return fields. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter and an output schema exists, the description covers the essential behavior. It could mention error cases or what happens if no file is loaded, but it is largely complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema for the single parameter (cache_key) already has a full description ('Cache key identifying the loaded XER file...'), so the tool description adds no extra meaning. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'projects', and the scope 'in the loaded XER file'. It also enumerates what is returned (project IDs, names, dates, counts, metrics), distinguishing it from sibling tools like pyp6xer_list_activities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the loaded XER file and the cache_key parameter, implying it should be used after loading a file. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide guidance on prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_list_resourcesARead-onlyIdempotent
List all resources with assignment counts and cost/quantity totals.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds that results include assignment counts and totals, but does not disclose caching behavior or limitations beyond schema hints. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys purpose without unnecessary words. Every word contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with full schema coverage and an output schema, the description adequately covers the tool's functionality, specifying the aggregated data included.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning to the parameters beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all resources and specifies what is included (assignment counts, cost/quantity totals). It effectively distinguishes from sibling tools like list_activities or list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like resource_utilization or work_package_summary. It only describes functionality without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_load_fileARead-onlyIdempotent
Load a Primavera P6 XER file into the analysis cache.
Accepts a local file path, an HTTP/HTTPS URL, or a base64-encoded string of the file's binary content. The loaded data is stored under cache_key so multiple schedules can be open simultaneously.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| file_path | No | Local file path or HTTP/HTTPS URL to the XER file | |
| file_content | No | Base64-encoded XER file bytes (for direct uploads from Claude/ChatGPT) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful caching behavior: data stored under cache_key and multiple schedules allowed. Annotations declare idempotentHint=true and destructiveHint=false, which align. Lacks mention of overwrite behavior when cache_key already exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two brief paragraphs with no wasted words. First sentence captures the primary action. Clearly structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Describes input sources and caching but omits critical usage constraints: at least one of file_path or file_content is required (mutual exclusivity not clarified). No mention of error scenarios or file size limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description summarizes the three input options but adds no new semantic details beyond the schema parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Load' and the resource 'Primavera P6 XER file' with specific input formats. It distinguishes from sibling tools that operate on already-loaded data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the initial step before analysis, but does not explicitly state when to use this tool versus alternatives like pyp6xer_get_upload_url. No guidance on prerequisites or mutual exclusivity of parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_lookaheadARead-onlyIdempotent
Return activities active within the next N days from the data date.
An activity is included if: finish >= data_date AND start <= data_date + days_ahead. This covers in-progress activities and those starting in the window.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| days_ahead | No | Number of calendar days ahead to include in the lookahead window | |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide read-only, non-destructive, idempotent hints. The description adds value by detailing the exact filtering logic (finish >= data_date, start <= data_date + days_ahead) and clarifying that it covers in-progress and future-starting activities. This exceeds minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using two sentences that front-load the purpose and then specify the inclusion criteria. Every word earns its place; no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple filtering nature of the tool, the description fully explains the behavior. The presence of a separate output schema means return values are already documented. No additional context is needed for this specific tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with well-described parameters. The description does not add new semantic information beyond what the schema already provides for cache_key, days_ahead, and proj_id. It implicitly confirms the role of days_ahead in the logic but does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Return') and resource ('activities') and provides a precise selection criterion based on a lookahead window. It distinguishes itself from sibling tools like list_activities (which likely returns all activities) by narrowing the scope to a specific time range.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for time-window queries but does not explicitly state when to prefer this tool over alternatives such as list_activities or search_activities. No 'use when' or 'use instead' guidance is provided, leaving the agent to infer context from the name and logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_progress_summaryARead-onlyIdempotent
Summarise schedule progress: status breakdown, percent complete, milestones.
Returns counts by status, weighted percent complete, and milestone statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive. Description adds what the tool returns (counts, weighted percent complete, milestone stats), which is consistent and provides useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences effectively communicate purpose and output. Could be slightly more structured (e.g., bullet points) but remains concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers purpose, key outputs, and parameters satisfactorily. Output schema exists (not needed in description). No major gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with clear descriptions. The description does not add parameter-specific semantics beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool summarizes schedule progress with specific outputs: status breakdown, percent complete, milestones. This distinguishes it from siblings like pyp6xer_work_package_summary (work package focus) and pyp6xer_schedule_health_check (health focus).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage is when a schedule progress overview is needed, but no explicit guidance on when to use vs alternatives (e.g., pyp6xer_work_package_summary or pyp6xer_schedule_health_check). No when-not-to-use or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_relationship_analysisARead-onlyIdempotent
Analyse relationship types, lag/lead distribution, and logic density.
Reports counts by type (FS/SS/FF/SF), lag distribution, and activities with no logic ties.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent behavior. Description adds value by specifying output details (counts by type, lag distribution, activities with no logic ties), reinforcing safe analysis nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loading purpose and output summary, with no redundant or irrelevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations and schema cover safety and parameters. Description explains what is reported, and output schema exists to detail return format. Complete for a read-only analysis tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. Description adds no additional parameter information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Analyse' and specific resources: 'relationship types, lag/lead distribution, and logic density'. This distinguishes it from sibling tools like critical path or float analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for relationship analysis but lacks explicit when-to-use or when-not-to-use guidance. No mention of alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_resource_utilizationARead-onlyIdempotent
Summarise resource loading: planned vs actual vs remaining quantities and costs.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted | |
| rsrc_name | No | Filter by resource name (partial match) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so behavioral safety is covered. The description adds that it summarizes quantities and costs, which is helpful but does not disclose any additional behavioral traits (e.g., auth needs, rate limits, data scope).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose without extraneous words. It is front-loaded and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and rich annotations, the description is sufficient for a summarized resource loading tool. All parameters are documented, and the core functionality is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a clear description. The tool description does not add further parameter meaning beyond what the schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool summarizes resource loading with planned vs actual vs remaining quantities and costs. It distinguishes from siblings like pyp6xer_list_resources (listing) and pyp6xer_earned_value (metrics) by focusing on resource utilization summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives. No context on prerequisites, when-not-to-use, or comparisons with sibling tools like pyp6xer_earned_value or pyp6xer_progress_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_schedule_health_checkARead-onlyIdempotent
Generate a composite schedule health score with narrative summary.
Combines data date currency, float distribution, critical path density, open ends, and constraint usage into a single 0–100 health score.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. Description adds value by explaining the composite nature and narrative summary, but no new side effects disclosed. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with main purpose and secondary details. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and annotations are rich, description adequately covers purpose and composition. Slight gap in usage guidance but otherwise complete for a read-only analytical tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions (100% coverage). Description adds no additional parameter meaning beyond what schema already provides, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it generates a composite schedule health score with narrative summary, listing specific components (float distribution, critical path density, etc.) and a 0-100 scale. Distinguishes from sibling tools like pyp6xer_float_analysis or pyp6xer_schedule_quality by focusing on a single aggregate metric.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for quick overview of schedule health, but no explicit guidance on when to use this vs. other analysis tools (e.g., for detailed component analysis). Lacks when-not or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_schedule_qualityBRead-onlyIdempotent
Run DCMA-style schedule quality checks.
Checks include:
Missing predecessors / successors (open ends)
Activities with lags or leads
Activities with hard constraints
Negative total float
Activities with no resources (optional warning)
Milestone checks
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is read-only and idempotent. The description adds valuable context by listing the specific quality checks performed, which goes beyond the annotations. No contradictions are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, using a bullet list to present the checks. Every sentence earns its place with no verbose or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the checks performed. Since the tool has an output schema, it is not necessary to detail return values. However, it could briefly mention the scope (e.g., operates on the loaded XER cache) to improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full description coverage for both parameters (cache_key and proj_id). The tool description does not add additional semantics beyond what is already in the schema, so it meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs 'DCMA-style schedule quality checks' and lists specific checks. This gives a concrete understanding of the tool's function. However, it does not differentiate from the sibling tool 'pyp6xer_schedule_health_check', which may have overlapping purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like pyp6xer_schedule_health_check or pyp6xer_float_analysis. There is no mention of prerequisites, typical use cases, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_search_activitiesARead-onlyIdempotent
Search activities by name or activity ID (case-insensitive substring match).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Text to search in activity codes and names | |
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted | |
| limit | No | Maximum number of results to return | |
| fields | No | Subset of field names to return; call pyp6xer_get_activity_schema to see available names |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is clear. The description adds behavioral traits: case-insensitive substring match across name and ID. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with 12 words, front-loaded with action and resource. Every word is necessary; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and schema covers params, the description is mostly complete. However, it doesn't explicitly mention that the search operates on a loaded XER file (implied by cache_key), but that's acceptable since schema covers it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 5 parameters. The tool description adds value by clarifying the query parameter does a case-insensitive substring match on both name and ID, which is not fully captured in the schema description ('Text to search in activity codes and names').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and resource 'activities' with specific criteria: by name or activity ID, case-insensitive substring match. This distinguishes it from sibling tools like list_activities (listing all) or get_activity (exact ID retrieval).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., list_activities for unfiltered lists, get_activity for exact IDs). The description lacks explicit context or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_slipping_activitiesARead-onlyIdempotent
Find activities that are running late (forecast finish > baseline finish).
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted | |
| min_days_slip | No | Only return activities slipping by at least this many days |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description need not repeat that. However, the description adds no additional behavioral context (e.g., that it queries a cached XER file or that it does not modify data). Given annotations cover safety, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action and condition. No extraneous words; every part contributes to understanding the tool's purpose. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return details are covered elsewhere. The description, combined with rich schema annotations and parameter descriptions, fully conveys what the tool does. No gaps remain for a simple query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear descriptions for all three parameters (cache_key, proj_id, min_days_slip). The tool description does not add any extra parameter semantics beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'find', resource 'activities', and condition 'running late (forecast finish > baseline finish)'. This distinguishes it from siblings like pyp6xer_list_activities and pyp6xer_search_activities, which have broader or different filtering criteria.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to find slipping activities) but does not explicitly state when not to use or mention alternative tools for other filtering needs. While the context is clear, the lack of explicit guidance on alternatives or exclusions keeps this at a mid-range score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_update_activityAIdempotent
Update fields on a single activity in the in-memory cache.
Changes are held in memory until pyp6xer_write_file is called.
Updatable fields:
status_code: 'TK_NotStart', 'TK_Active', or 'TK_Complete'
phys_complete_pct: physical percent complete (0–100)
remain_drtn_hr_cnt: remaining duration in hours
act_start_date / act_end_date: actual dates (YYYY-MM-DD)
expect_end_date: expected finish (YYYY-MM-DD)
target_start_date / target_end_date: baseline dates (YYYY-MM-DD)
| Name | Required | Description | Default |
|---|---|---|---|
| task_code | Yes | Activity ID to update. | |
| updates | Yes | Dict of field→value to update on the activity (e.g. {'percent_complete': 50}) | |
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations: it discloses the in-memory caching behavior and lists specific updatable fields with valid values. However, it does not cover error handling, permission requirements, or what happens on invalid input. Annotations already indicate idempotent and non-destructive, so the description complements rather than contradicts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a main sentence stating the purpose, a note about caching, and a bullet list of updatable fields. Every sentence is informative, and the critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and annotations, the description adequately covers the tool's purpose, caching context, and parameter specifics. It does not explain the cache_key and proj_id in detail beyond the schema, but those are straightforward. Minor gap: no mention of behavior when task_code is not found or on invalid values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema. It enumerates allowed field names, valid enum values for status_code, ranges for percentages and durations, and date format usage. This compensates for the schema's generic 'updates' dict description, which only gives a bare example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update fields on a single activity in the in-memory cache', specifying the verb (update) and resource (activity in cache). It distinguishes from sibling pyp6xer_batch_update by implication ('single activity'), but does not explicitly call out the differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes that changes are held in memory until pyp6xer_write_file is called, which is a usage constraint, but it does not provide when-to-use or when-not-to-use guidance relative to alternatives like pyp6xer_batch_update. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_wbs_analysisARead-onlyIdempotent
Return the WBS hierarchy with task counts and cost rollups per node.
Shows each WBS element's direct and total (rolled-up) activity counts, schedule range, and cost summary.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, covering safety. The description adds value by specifying output contents (direct/total counts, schedule range, cost summary), which helps the agent understand the return format beyond basic annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence states the core action and resources, the second elaborates on output details. Ideal structure for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, the description adequately covers the return value (hierarchy with counts and cost rollups). All necessary context (parameters, behavior) is provided by schema and annotations. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents both parameters. The description does not add further semantic meaning; it only reiterates the purpose. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the WBS hierarchy with task counts and cost rollups per node, using a specific verb ('Return') and resource. It distinguishes from siblings like pyp6xer_work_package_summary by focusing on hierarchical structure and rollups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like pyp6xer_work_package_summary or pyp6xer_progress_summary. The description implies usage for exploring WBS structure, but lacks when-not-to-use or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_work_package_summaryARead-onlyIdempotent
Summarise leaf-level WBS nodes (work packages) with schedule and cost data.
Leaf nodes are WBS elements with no children — the lowest level of the breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
| proj_id | No | Project ID or short name; uses first project if omitted |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds that it summarizes with schedule and cost data, which is helpful but not extensive beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no wasted words. The purpose is stated first, followed by a clarifying definition, achieving maximum conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and simple parameters, the description is sufficient. It might benefit from briefly mentioning what schedule and cost data are included, but overall it is complete enough for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage. The description adds value by clarifying that cache_key is set via pyp6xer_load_file and that proj_id accepts short names, extending meaning beyond schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool summarizes leaf-level WBS nodes (work packages) with schedule and cost data. It defines 'leaf nodes' as WBS elements with no children, distinguishing it from WBS analysis tools that operate on higher levels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for leaf-level WBS nodes, providing clear context. However, it does not explicitly mention when not to use it or name alternative tools, but the focus on leaf nodes is sufficient for guided selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyp6xer_write_fileAIdempotent
Write the current (possibly modified) schedule back to a .xer file.
Serialises the raw table data (including any updates from pyp6xer_update_activity or pyp6xer_batch_update) and writes to the specified path.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | No | Local file path to write the XER file to | |
| cache_key | No | Cache key identifying the loaded XER file (set when calling pyp6xer_load_file) | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and not read-only/not destructive. The description adds that it serializes raw table data including updates from specific sibling tools, providing context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action, and no extraneous information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers the key aspects: writing the current schedule to a file, referencing update tools, and specifying the output path. An output schema exists, so return values need no explanation. Minor missing piece: no mention of prerequisites like file must be loaded, but the cache_key parameter implies this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds that output_path is the local file path and cache_key identifies the loaded file, but this largely mirrors schema. It does not introduce new parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Write') and the resource ('.xer file'), specifying it serializes the current modified schedule. This distinguishes it from sibling tools like pyp6xer_export_xer by emphasizing in-memory state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use after modifications (e.g., from pyp6xer_update_activity), but does not explicitly state when to use this tool versus alternatives like pyp6xer_export_xer. No 'when not to use' guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose, from listing projects to analyzing critical path or updating activities. Overlaps like list_activities vs search_activities are well-differentiated by descriptions.
All tools follow the consistent pattern 'pyp6xer_verb_noun' (e.g., pyp6xer_list_activities, pyp6xer_update_activity). No mixing of conventions.
29 tools is slightly above the typical 3-15 range but appropriate given the comprehensive scope of Primavera P6 schedule management and analysis. Not excessive.
The tool surface is remarkably complete for XER file analysis: loading, listing, searching, updating, exporting, critical path, EVM, health checks, quality checks, WBS, resource utilization, and reporting. No obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI Hub for AEC — 50+ 3D formats, clash detection, ACC integration via Autodesk Platform Services.
AI project timelines & Gantt charts, plus enterprise resourcing, capacity & weekly status reporting.
Connect AI assistants to ITM Platform projects, tasks, budgets, risks, and team workload.
AI-powered product management: backlog optimization, scheduling, forecasting, and PRD generation.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI-powered extraction and analysis of PDF documents with 40+ specialized tools for text, tables, images, layout analysis, security assessment, and document intelligence. Supports both text-based and scanned PDFs with OCR capabilities.10MIT
- AlicenseAqualityDmaintenanceMCP server for parsing, querying, and analyzing Primavera P6 XER files with 13 tools, 3 resources, and 2 prompts.1310MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that enables LLMs to read and analyze Microsoft Project schedules, including critical path, resources, and advanced construction planning layers (AWP and LPS) for work packages and Lean planning.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/paulieb89/pyp6xer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server