Skip to main content
Glama
paulieb89

PyP6Xer MCP Server

pyp6xer_update_activity

Idempotent

Update activity fields (status, percent complete, dates) in a loaded Primavera P6 XER file, storing changes in memory until saved.

Instructions

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)

Input Schema

TableJSON 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

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
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.

Install Server

Other Tools

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