Skip to main content
Glama

Approveit

List approval requests

list_approval_requests
Read-only

List approval requests visible to this user, newest first. Use to answer 'what is waiting on me' and 'what did I submit'. Filter by status; by scope (created_by_me / awaiting_my_approval); by workflow name with workflow_query; by submission date with created_after / created_before (YYYY-MM-DD, inclusive); by free text with search. To filter on a FIELD's value — 'invoices from Acme', 'where Country is Germany', 'anything with a laptop on it' — use field_filters, a list of {label, value}. The label is the field's name on the form, and columns inside line-item tables are matched too, so this reaches values search cannot. Set include_field_values to read the requests' actual field values back. count is the total number of matches; the response carries one page. When truncated is true, call again with offset raised by limit rather than describing the page as the whole set.

Input Schema

NameRequiredDescriptionDefault
limitNoMax results (default 10). Capped at 20 normally, or 50 with `include_field_values` so there is enough of a sample to reason over.
scopeNoWhose requests to list. 'all' (default): every request the user can see. 'created_by_me': only ones they submitted. 'awaiting_my_approval': only ones waiting on THIS user's decision right now — they're the pending approver on the current step (also includes requests sent back to them for changes). Use 'awaiting_my_approval' for 'what do I need to approve'; it already implies the right statuses, so don't also pass `status`.all
offsetNoSkip this many before returning. With `limit` this is how you page through a set larger than one call can carry: `count` says how many match in total, so when `truncated` is true, call again with `offset` raised by `limit`. Never describe a page as the whole set.
searchNoFree-text search over the request's searchable content (AR number, pipeline/stage names, indexed field text). Use when the user describes a request rather than naming it. Prefer `workflow_query` when they name the workflow itself.
statusNoOptional status filter.
approver_idNoTeamUser id of the person whose approval is PENDING right now (from `search_team_users`). Use for 'what's pending on Julia', 'what is waiting on the CFO'. This is the ONLY way to answer that — `scope=awaiting_my_approval` is the CURRENT user's queue and must never be presented as someone else's. Results are still limited to requests you're allowed to see.
requestor_idNoTeamUser id of the person who SUBMITTED the requests (from `search_team_users`). Use for 'what has Sarah submitted'. For the current user prefer `scope=created_by_me`. Results are still limited to requests you're allowed to see.
created_afterNoOnly requests submitted ON or after this date (YYYY-MM-DD).
field_filtersNoNarrow to requests whose FIELD VALUES match, by the field's name on the form. This is how you answer 'invoices from Acme', 'requests where Country is Germany', or 'which requests have a laptop on them' — the last one works because line-item table columns are matched too, not just fields on the form itself. Combine freely with the other filters; several entries all have to match the same request. Prefer this over `search` when the user names a field and a value, because `search` is free text over the whole request and will also match a mention in a description. Use `get_workflow_details` if unsure what a workflow calls a field.
created_beforeNoOnly requests submitted ON or before this date (YYYY-MM-DD, inclusive of the whole day).
workflow_queryNoOptional substring to match workflow name (case-insensitive).
include_field_valuesNoReturn each request's actual field values (vendor, amount, dates, description, whatever that workflow defines) so YOU can analyse them and answer the question directly. Set this whenever the user asks something about request CONTENT that the other filters can't express — 'which of these mention a rush', 'what do the rejected ones have in common', 'which vendor comes up most', 'are any of these duplicates', 'why is this taking so long'. The filters narrow WHICH requests; this gives you WHAT IS IN THEM. Combine with the filters to keep the set relevant and small. Requests whose values can't be read are counted in `field_values_unavailable`, not omitted silently — never present an analysis as complete when that number is above zero, or when `truncated` is true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare a read-only, non-destructive, closed-world read, so the safety profile is covered. The description still adds genuine behavior beyond them: one page per call with count as the total, retry-by-offset when truncated, and the field_values_unavailable counter that must be disclosed so a partial read is never presented as complete. It is slightly weaker on visibility/permission scoping, which is pushed into individual parameter docs rather than stated once up front.

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?

Front-loaded with purpose and the two motivating questions, then filter-by-filter, then pagination caveats. Every sentence is actionable, but the description is long and restates several schema parameter docs (offset/limit paging, status semantics), which is redundant given 100% coverage.

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 12 parameters, no required fields, and no output schema, the description fills exactly the gaps that matter: it explains the response envelope (count, single page, truncated, field_values_unavailable) and how to page, so an agent can both call and interpret results correctly.

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?

Schema coverage is already 100%, so the baseline is 3. The description earns above that by explaining cross-parameter semantics the schema cannot: that field_filters reaches line-item table columns and thus values search cannot, that scope=awaiting_my_approval already implies statuses, and how include_field_values complements rather than replaces filtering. Much of the per-parameter text is duplicated from the schema, which keeps it from a 5.

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?

States a specific verb and resource ('List approval requests visible to this user, newest first') and immediately frames the two questions it answers, which distinguishes it from describe_approval_request, analyze_field, and summarize_approvals. An agent can route to it without opening the schema.

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?

Explicit routing is given repeatedly: use field_filters rather than search when the user names a field and value, use workflow_query when they name the workflow, use get_workflow_details if the field name is unknown, and use scope=awaiting_my_approval rather than approver_id for the current user. Exclusions are stated (don't combine awaiting_my_approval with status; never present another user's queue as this one's).

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.

Resources