Skip to main content
Glama

get_work_package

Read-onlyIdempotent

Retrieve a work package by ID or display ID, including its full description, and optionally select specific fields or cap text length for focused responses.

Instructions

Get a work package by id, including its full description.

The description is returned in full by default (single work packages are not truncated). Pass text_limit to cap it at that many characters; when the text is cut, description_truncated is true and description_length reports the real length. This same text_limit also caps any "text"-format custom field value in custom_fields (see list_work_packages's docstring for the full custom_fields/custom_comments shape and hide-matching rules) -- but a scalar string/link/date-format custom field value is capped independently at ~255 characters regardless of text_limit, including when text_limit=None (the default here): "single work packages are not truncated" applies to description and CF text-format values, not to that separate, always-on scalar cap.

select restricts the response to the given fields (e.g. ["id", "subject", "status"]); an invalid name returns the allowed set.

Input Schema

NameRequiredDescriptionDefault
selectNoFields to return; a requested unset field comes back as null. Allowed: ancestors, ancestors_truncated, assignee, author, category, children, children_truncated, created_at, custom_comments, custom_comments_truncated, custom_fields, custom_fields_truncated, derived_due_date, derived_estimated_time, derived_percentage_done, derived_remaining_time, derived_start_date, description, description_length, description_truncated, display_id, due_date, duration, estimated_time, has_project_attributes, id, ignore_non_working_days, lock_version, parent_display_id, parent_id, percentage_done, priority, project, project_phase, readonly, remaining_time, responsible, schedule_manually, spent_time, sprint, start_date, status, subject, target_versions, type, updated_at, version.
text_limitNo
work_package_idYesWork package id (e.g. 952) or display id (e.g. "PROJ-51"), not the bare number 51.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.4.4
  2. Removedv0.4.0
  3. Changed5 schema fields changedv0.3.7
    • addedInput schema / additionalProperties
      Added value: +false
    • removedOutput schema / properties / activities_url
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "title": "Activities Url"
      -}
    • removedOutput schema / properties / relations_url
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "title": "Relations Url"
      -}
    • removedOutput schema / properties / url
      Removed value: -{
      -  "title": "Url",
      -  "type": "string"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "display_id",
      -  "subject",
      -  "type",
      -  "status",
      -  "priority",
      -  "project_phase",
      -  "assignee",
      -  "responsible",
      -  "project",
      -  "version",
      -  "sprint",
      -  "parent_id",
      -  "parent_display_id",
      -  "start_date",
      -  "due_date",
      -  "percentage_complete",
      -  "lock_version",
      -  "description",
      -  "url",
      -  "activities_url",
      -  "relations_url"
      -]New value: +[
      +  "id",
      +  "display_id",
      +  "subject",
      +  "type",
      +  "status",
      +  "priority",
      +  "project_phase",
      +  "assignee",
      +  "responsible",
      +  "project",
      +  "version",
      +  "sprint",
      +  "parent_id",
      +  "parent_display_id",
      +  "start_date",
      +  "due_date",
      +  "percentage_complete",
      +  "lock_version",
      +  "description"
      +]
  4. Changed2 schema fields changedv0.3.5
    • changedOutput schema / properties / ancestors / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": {
      -        "type": "string"
      -      },
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / children / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": {
      -        "type": "string"
      -      },
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  5. Addedv0.3.3
  6. Removedv0.3.0
  7. Changed17 schema fields changedv0.2.3
    • addedInput schema / properties / text_limit
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Text Limit"
      +}
    • addedOutput schema / properties / ancestors
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Ancestors"
      +}
    • addedOutput schema / properties / ancestors_truncated
      Added value: +{
      +  "default": false,
      +  "title": "Ancestors Truncated",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / author
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Author"
      +}
    • addedOutput schema / properties / category
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Category"
      +}
    • addedOutput schema / properties / children
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Children"
      +}
    • addedOutput schema / properties / children_truncated
      Added value: +{
      +  "default": false,
      +  "title": "Children Truncated",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / created_at
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Created At"
      +}
    • addedOutput schema / properties / derived_estimated_time
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Derived Estimated Time"
      +}
    • addedOutput schema / properties / derived_remaining_time
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Derived Remaining Time"
      +}
    • addedOutput schema / properties / description_length
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Description Length"
      +}
    • addedOutput schema / properties / description_truncated
      Added value: +{
      +  "default": false,
      +  "title": "Description Truncated",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / duration
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Duration"
      +}
    • addedOutput schema / properties / estimated_time
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Estimated Time"
      +}
    • addedOutput schema / properties / remaining_time
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Remaining Time"
      +}
    • addedOutput schema / properties / spent_time
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Spent Time"
      +}
    • addedOutput schema / properties / updated_at
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Updated At"
      +}
  8. First observedv0.2.2

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare it a safe, idempotent read, yet the description adds genuinely non-obvious behavior: description returned untruncated by default, text_limit capping, the description_truncated/description_length flags, and a separate always-on ~255-char cap on scalar string/link/date custom fields that applies even when text_limit is None. It also documents failure behavior (invalid select name returns the allowed set).

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?

Purpose is front-loaded in the first sentence, and the truncation rules that follow are information-dense rather than padded. It loses a point for the tangled nested clause about the ~255-char scalar cap and the aside pointing at another tool's docstring.

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?

With no output schema, the description carries the return-value burden and does so: it names the key fields (description, description_truncated, description_length, custom_fields), explains the select-projection contract, and warns about the scalar-field cap. Nothing needed to call it correctly is missing.

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?

text_limit has no schema description at all, and the prose fully compensates by explaining exactly what it caps and where the cap does not apply. select is already well documented in the schema, but the description still adds the error-handling detail; work_package_id's id-vs-display-id semantics come from the schema, not the prose.

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

Purpose4/5

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

States a specific verb and resource: 'Get a work package by id, including its full description.' The contrast 'single work packages are not truncated' implicitly distinguishes it from the list variants, but it never names search_work_packages or get_work_packages as the alternative for bulk/query 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?

Usage is implied rather than stated: the truncation contrast signals this is the single-record fetch, and it defers to list_work_packages's docstring for the custom_fields shape. There is no explicit 'use this when X, use sibling Y when Z', despite several closely related siblings (get_work_packages, search_work_packages, get_project_work_package_context).

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

Deploy Server

Other Tools