Skip to main content
Glama

Get project metadata

get_project_metadata
Read-onlyIdempotent

Retrieve valid OpenProject metadata: types, statuses, priorities, versions, categories, activities. Use before creating, updating, or filtering to get correct IDs and avoid errors.

Instructions

List the ids and names that are actually valid on this instance.

This is the one-call answer to "what do I pass for type / status / priority / version / category / activity". Call it before any create or update, before filtering by ids, and whenever a write fails with an allowed-values error. Nothing here is hardcoded — priority ids and activity ids differ per instance.

Without project_id returns the global types, statuses, priorities and roles. With project_id the types list narrows to the ones enabled in that project and versions, categories and time_entry_activities are filled in. Every row is {id, name} plus its flags: statuses[].is_closed is the authoritative done marker (never classify by status name — it is localized), types[].is_milestone tells you the type takes a single date, and priorities[].is_default / time_entry_activities[].is_default say what you get by omitting the field.

Pitfalls: results are cached (default 300 s) — pass refresh=true after an admin change. Time-entry activities are read from the time-entry form, so if the time tracking module is off or you lack permission the list comes back empty with a note in notes rather than an error (check notes).

For the writable fields and custom fields of one project+type combination use get_work_package_schema; for project ids themselves use list_projects.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
refreshNoBypass the metadata cache. Use it right after an administrator added a type, status, version or category; otherwise leave it false.
project_idNoNumeric project id or URL identifier. Omit for the instance-global sets (types, statuses, priorities, roles) — cross-project filtering never needs an arbitrary project. Supply it to additionally get this project's types, versions, categories and time-entry activities.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesNoDegradation notes: modules off, permissions missing.
rolesNoAll membership roles.
typesNoWork-package types; scoped to the project when project_id was given.
statusesNoAll statuses, each with is_closed.
versionsNoProject versions/sprints; null unless project_id was given.
categoriesNoProject categories; null unless project_id was given.
prioritiesNoAll priorities.
project_idNoThe project this was scoped to; null for the global sets.
time_entry_activitiesNoActivities log_time accepts here; null unless project_id was given.
Behavior5/5

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

Annotations already declare read-only, idempotent, and non-destructive hints, but the description goes further. It discloses cache behavior (300s TTL, refresh=true), the empty-list-with-notes behavior when time tracking is disabled, per-row flag semantics, and the localization caveat for status names—all beyond what annotations convey.

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 somewhat long but every sentence earns its place—each covers a distinct aspect: purpose, timing, row structure, pitfalls, and alternatives. It is front-loaded with the most important use case, well-paragraphed, and free of filler.

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's complexity and the existence of an output schema, the description is exceptionally complete. It covers invocation timing, parameter behavior, return value shape, caching, edge cases, and sibling tool pointers, fully equipping an agent to select and invoke correctly.

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?

Schema coverage is 100%, but the description adds meaningful semantics: project_id narrows types and fills versions/categories/activities, while refresh bypasses the cache after admin changes. This enriches understanding far beyond the schema's generic 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 tool lists valid ids and names for the instance, with the specific verb 'List' and a clear resource scope. It also differentiates itself from siblings by explicitly naming get_work_package_schema and list_projects as alternatives.

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?

Provides explicit when-to-use guidance: 'Call it before any create or update, before filtering by ids, and whenever a write fails with an allowed-values error.' It also names alternatives for other lookup needs, leaving no ambiguity about when to choose this tool.

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/kar-thik/openproject-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server