Skip to main content
Glama

List permissions

list_permissions
Read-onlyIdempotent

Check which actions the current user can perform, globally or within a project. Use it to prevent 403 errors, explain failures, or choose the right tool by querying real capabilities.

Instructions

List what the authenticated user is allowed to do, globally or in one project.

Use it before attempting a write that might 403, to explain to a user why an action failed, or to pick between tools ("can I add a member here, or should I ask an admin?"). It reads the real capabilities API for the current user — it does not return a user profile and it never guesses from the admin flag.

Returns the standard list envelope whose items are one row per context — {id, context, project, actions} with actions such as work_packages/create — plus principal (the user asked about), capability_count, and check when permission was given.

CAVEAT, straight from the API: OpenProject exposes only a SUBSET of its permissions as capabilities. An action missing from this list is not proof that the user lacks the permission — it may simply not be modelled. Treat a hit as reliable and a miss as "unknown, try it and read the 403".

Pitfalls: the capabilities API has no "me" value, so the numeric id of the authenticated user is resolved first (from the cached users/me) — you cannot ask about another user with this tool. Results are capped at 500 capabilities with a note in notes when the cap is hit; scope with project_id to stay well under it. Capabilities are about permission only: a permitted action can still fail validation.

Cross-references: get_instance_info reports who this server is authenticated as and what the instance version supports; list_memberships and list_roles show where the permissions come from; get_project_metadata lists the ids a permitted action needs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
permissionNoOptional single action to check, spelled the way OpenProject does: '<resource>/<action>', e.g. 'work_packages/create', 'memberships/create', 'projects/update'. Adds a {checked, allowed, granted_in} predicate to the result; the full grouped listing is returned either way, so you can see the exact spellings this instance uses.
project_idNoNumeric project id or URL identifier to scope the question to that project ('may I create work packages HERE'). Omit it for the instance-wide (global) actions such as creating projects or administering users. An identifier is resolved to its numeric id first, because the capabilities API only accepts numeric project ids.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
sumsNoPresent only when show_sums was requested.
checkNoPresent only when the 'permission' parameter was given.
itemsNoThe page of results.
notesNoDegradation markers: capped aggregations, unavailable modules, …
groupsNoPresent only when group_by was requested.
principalYesThe user the capabilities were resolved for — always the authenticated account, by numeric id.
paginationYesTotal/page/page_size/has_more.
capability_countNoIndividual capabilities read from the API before grouping.
Behavior5/5

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

The description goes well beyond the readOnly/openWorld/idempotent hints by disclosing how it resolves the current user ID (from cached users/me), the API's lack of a 'me' value, the 500-capability cap with notes, the subset-of-permissions caveat, and that permission is only a necessary condition (validations can still fail). 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.

Conciseness4/5

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

The description is longer than typical, but each section (purpose, caveat, pitfalls, cross-references) earns its place for a tool with non-obvious edge cases. It is well-structured with bolded lead-ins; while dense, it remains scannable and free of fluff.

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, the description covers the operational context thoroughly: when to use it, what it returns (items, principal, capability_count, check), its limitations (subset, cap, no 'me'), and how it relates to sibling tools. The output schema exists, so return-value details are already structured, and the description adds the critical 'miss ≠ denied' interpretation.

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 schema already covers both parameters with full descriptions, so the baseline is 3. The description adds extra value by reinforcing the purpose of each parameter with practical examples ('may I create work packages HERE') and explaining the 'check' predicate behavior, which goes beyond the schema's syntax-level detail.

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 opens with 'List what the authenticated user is allowed to do, globally or in one project' — a specific verb, clear resource, and scope. It immediately distinguishes itself from the many work-package/project tools by focusing on capabilities and even contrasts itself with tools like list_memberships and list_roles.

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?

Explicitly states when to use: before a write that might 403, to explain failures, or to choose between tools. It also gives exclusions ('does not return a user profile', cannot ask about another user) and cross-references sibling tools (list_memberships, list_roles, get_instance_info) for related needs.

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