Skip to main content
Glama

tascan_update_project

Idempotent

Update a project (name, location, status, dates, number, external_refs, labor_rules, report_options). A number already used in the org is refused 409; external_refs replaces the whole list. report_options is merged into the stored object (other keys kept, a key set to null removed). labor_rules is validated like the projects CHECK.

Input Schema

NameRequiredDescriptionDefault
nameNoNew name
numberNoNew project number, 1-40 letters, digits, dot, underscore or hyphen, unique in the org. A P-<digits> number is refused 400 unless it is the project's current number
statusNoStatus
end_dateNoEnd date (ISO)
locationNoNew location
project_idYesProject ID
start_dateNoStart date (ISO)
labor_rulesNoAn object (or null to clear): { ot_after_hours (> 0, <= 24, or null), dt_after_hours (> ot_after_hours, or > 10 when that is null, <= 24, or null) }
external_refsNoThe full list of external references (replaces the current one): up to 10 { source (1-40 chars), ref (1-80 chars) }
report_optionsNoMerged into the stored options: show_location, show_time, auto_publish_receipts (booleans), client_photos (off | on | ask); a key set to null is removed; null clears them all

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / labor_rules
      Added value: +{
      +  "description": "An object (or null to clear): { ot_after_hours (> 0, <= 24, or null), dt_after_hours (> ot_after_hours, or > 10 when that is null, <= 24, or null) }",
      +  "type": "object"
      +}
    • addedInput schema / properties / report_options
      Added value: +{
      +  "description": "Merged into the stored options: show_location, show_time, auto_publish_receipts (booleans), client_photos (off | on | ask); a key set to null is removed; null clears them all",
      +  "type": "object"
      +}
  2. Changed2 schema fields changed
    • addedInput schema / properties / external_refs
      Added value: +{
      +  "description": "The full list of external references (replaces the current one): up to 10 { source (1-40 chars), ref (1-80 chars) }",
      +  "items": {
      +    "properties": {
      +      "ref": {
      +        "type": "string"
      +      },
      +      "source": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "source",
      +      "ref"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / number
      Added value: +{
      +  "description": "New project number, 1-40 letters, digits, dot, underscore or hyphen, unique in the org. A P-<digits> number is refused 400 unless it is the project's current number",
      +  "type": "string"
      +}
  3. First observed

TDQS

A3.9/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing concrete failure modes (a duplicate number is refused 409) and the differing write semantics per field: external_refs replaces the entire list, report_options is deep-merged with null-valued keys removed, and labor_rules is validated against the projects CHECK. That is exactly the kind of consequence information an agent needs before a mutation, and it is consistent with destructiveHint=false / idempotentHint=true.

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?

Three tight sentences, front-loaded with the verb and the affected fields, then escalating to the risky semantics (409, replacement, merge). The parenthetical field list mildly duplicates the schema property names, which is the only wasted 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?

For a 10-parameter mutation with nested objects and no output schema, it covers the highest-risk behaviors (conflict error, list replacement vs merge, rule validation). The one significant omission is the general partial-update contract — whether unspecified fields are preserved — which matters given only project_id is required.

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 baseline is 3; the description largely restates what the schema already says (external_refs replaces, report_options merged) and only adds the 409 error code for a duplicate number. It does not, for example, clarify whether omitted optional fields are left untouched or cleared.

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?

Opens with a specific verb+resource ("Update a project") and enumerates exactly which fields are mutable, so an agent can immediately tell this apart from tascan_create_project / tascan_delete_project / tascan_clone_project. It stops short of naming those siblings explicitly, so it is clear but not maximally differentiating.

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

Usage Guidelines3/5

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

Usage is only implied by the name and field list; there is no explicit "use this instead of X" routing, no stated prerequisites, and no statement about what happens to fields that are omitted. The one required parameter (project_id) hints at partial-update semantics, but the agent must infer that.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.