Skip to main content
Glama
paulieb89

PyP6Xer MCP Server

by paulieb89

PyP6Xer MCP Server

PyPI SafeSkill Glama Install in VS Code Install in VS Code Insiders Install in Cursor Install in VS Code (local)

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 disk

Multiple files can be loaded simultaneously using different cache_key values.

Tools (29)

Category

Tools

File

load_file, list_projects, clear_cache, get_upload_url

Activities

list_activities, get_activity, search_activities, get_activity_schema

Analysis

critical_path, float_analysis, schedule_quality, schedule_health_check, slipping_activities, relationship_analysis, lookahead

Progress / EVM

progress_summary, earned_value

Resources

list_resources, resource_utilization

Calendars

list_calendars

WBS

wbs_analysis, work_package_summary

Export

export_csv, export_xer, compare_snapshots, generate_report

Write

update_activity, batch_update, write_file

All tool names are prefixed pyp6xer_ to avoid conflicts when used alongside other MCP servers.

Dependencies

Licence

MIT

Available Tools

29 tools
pyp6xer_batch_updateA
Idempotent

Update multiple activities in a single call.

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYesList of {task_code, ...fields} dicts, one per activity to update
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_cacheA
Idempotent

Remove one or all loaded XER files from the cache.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key to clear; omit to clear all cached files

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_snapshotsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_key_aYesCache key of the base (original) snapshot
cache_key_bYesCache key of the modified snapshot to compare
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_pathA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_valueA
Read-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

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (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_csvA
Read-onlyIdempotent

Export activities to CSV format (returned as a string).

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted
fieldsNoSubset of field names to return; call pyp6xer_get_activity_schema to see available names

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_xerA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_analysisA
Read-onlyIdempotent

Analyse total float distribution across activities.

Groups activities into float buckets and flags near-critical activities.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted
max_float_daysNoUpper bound for float display in days

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_reportA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_activityA
Read-onlyIdempotent

Get full details for a single activity including dates, float, costs, resources assigned, and predecessor/successor relationships.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_codeYesActivity task code (e.g. A1000)
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted
fieldsNoSubset of field names to return; call pyp6xer_get_activity_schema to see available names

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_schemaA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_urlA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_activitiesB
Read-onlyIdempotent

List activities with optional filtering and pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted
statusNoFilter by status: 'not_started', 'in_progress', or 'completed'
wbs_codeNoFilter activities by WBS code prefix
limitNoMaximum number of results to return
offsetNoNumber of results to skip for pagination
fieldsNoSubset of field names to return; call pyp6xer_get_activity_schema to see available names

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance on when to use this tool vs 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_calendarsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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

The description is concise with two sentences. The first sentence states the 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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_projectsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_resourcesA
Read-onlyIdempotent

List all resources with assignment counts and cost/quantity totals.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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_fileA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
file_pathNoLocal file path or HTTP/HTTPS URL to the XER file
file_contentNoBase64-encoded XER file bytes (for direct uploads from Claude/ChatGPT)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

The description implies this is the 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_lookaheadA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
days_aheadNoNumber of calendar days ahead to include in the lookahead window
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool's purpose 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.

Usage Guidelines3/5

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_summaryA
Read-onlyIdempotent

Summarise schedule progress: status breakdown, percent complete, milestones.

Returns counts by status, weighted percent complete, and milestone statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_analysisA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_utilizationA
Read-onlyIdempotent

Summarise resource loading: planned vs actual vs remaining quantities and costs.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted
rsrc_nameNoFilter by resource name (partial match)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_checkA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_qualityB
Read-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

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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_activitiesA
Read-onlyIdempotent

Search activities by name or activity ID (case-insensitive substring match).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesText to search in activity codes and names
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted
limitNoMaximum number of results to return
fieldsNoSubset of field names to return; call pyp6xer_get_activity_schema to see available names

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

No guidance on when to use this tool 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_activitiesA
Read-onlyIdempotent

Find activities that are running late (forecast finish > baseline finish).

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted
min_days_slipNoOnly return activities slipping by at least this many days

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_activityA
Idempotent

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
task_codeYesActivity ID to update.
updatesYesDict of field→value to update on the activity (e.g. {'percent_complete': 50})
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_analysisA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives 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_summaryA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default
proj_idNoProject ID or short name; uses first project if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_fileA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNoLocal file path to write the XER file to
cache_keyNoCache key identifying the loaded XER file (set when calling pyp6xer_load_file)default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

A3.9/5.0
Disambiguation5/5

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.

Naming Consistency5/5

All tools follow the consistent pattern 'pyp6xer_verb_noun' (e.g., pyp6xer_list_activities, pyp6xer_update_activity). No mixing of conventions.

Tool Count4/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables automated project analysis and structured development specification generation. Supports multiple export formats and integrates with AI models for comprehensive project documentation and validation.
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables 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.
    10
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for parsing, querying, and analyzing Primavera P6 XER files with 13 tools, 3 resources, and 2 prompts.
    13
    10
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP 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

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