Skip to main content
Glama

Approveit

Server Details

Build approval workflows, submit requests, approve or reject, and analyze approval activity.

Ownership verified
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
ChatGPT
–
Claude
–

TDQS

A4/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target a clear resource+action pair (submit_request, approve_request, cancel_request, list_workflows). The one genuinely confusable pair is describe_workflow (approval structure) versus get_workflow_details (field list), which share a resource and both read as 'get workflow info', so an agent may misselect between them. analyze_field and summarize_approvals also overlap in being aggregations, though their descriptions distinguish volume totals per person from field-level cross-tabs.

Naming Consistency4/5

Nearly all tools follow snake_case verb_noun throughout (list_workflows, create_workflow_from_template, approve_request, search_team_users). The only inconsistency is the mix of retrieval verbs — get_user_context/get_workflow_details/get_request_activity versus describe_workflow/describe_approval_request/describe_workflow_template — which is readable but slightly uneven.

Tool Count4/5

At 21 tools this sits at the upper edge of the comfortable range, but each tool maps to a distinct capability of a real approval platform (requests, decisions, workflows, templates, aggregation, people/entity resolution). Nothing is obviously redundant, though the retrieval surface is somewhat padded with near-duplicate describe/get pairs.

Completeness4/5

Core lifecycle is well covered: submit, list, describe, update, cancel requests; approve/reject; workflow list/describe/activate and template-driven creation; plus aggregation and lookup helpers. Gaps remain — no deactivate/delete workflow, no comment or forward-request tool (forwards appear in the audit trail but cannot be performed), and no field-by-field workflow creation despite the template tool implying it.

Available Tools

21 tools
activate_workflowActivate a workflowA
Idempotent
Inspect

Publish a workflow so team members can submit requests against it. Activating an already-active workflow is a no-op.

NameRequiredDescriptionDefault
workflow_idYesThe workflow's `id` from `list_workflows` or the `workflow_id` a creation tool returned — the same number as in its URL.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, and the description adds a concrete consequence of that idempotency: re-activating is a silent no-op rather than an error. It says nothing about who may activate, whether activation can be reverted (no deactivation sibling exists), or what is returned, leaving the operation's risk profile partly undisclosed.

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?

Two short sentences with zero waste: the effect is front-loaded and the edge-case behavior follows. Nothing is repeated from the title or annotations verbatim.

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 single-parameter, idempotent state-change tool this covers purpose and no-op behavior adequately. Gaps remain around permission requirements, reversibility, and what a successful call returns, which matter because there is no output schema to fall back on.

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% and the workflow_id parameter is documented well, including how to obtain the id from list_workflows or a creation tool. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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?

The description names a specific verb and resource ('Publish a workflow') and states the concrete effect ('team members can submit requests against it'), which distinguishes it from describe_workflow or list_workflows. It stops short of naming a sibling tool explicitly, so an agent must infer the boundary rather than being routed.

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 by the stated effect: use it when a workflow must accept team requests. The no-op note implicitly tells the agent it need not pre-check activation state. However, no alternative or prerequisite (e.g., ownership/permission requirements) is named.

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

analyze_fieldAnalyze a field across requestsA
Read-only
Inspect

Aggregate any workflow field across the requests this user can see, as a database aggregate rather than by listing requests and adding them up. Numeric fields support sum/average/max/min; any field supports rank (the most common values and their counts). group_by_label cross-tabulates two fields on the same request: field_label='Amount', operation='sum', group_by_label='Vendor' answers 'what did we spend per vendor'. dimension groups by a built-in property instead — status, workflow, requestor, or day/week/month for volume over time. Works on LINE-ITEM columns as well as ordinary fields, and pairs cells from the same line, so 'spend on laptops' is answerable. Refer to fields by the label shown on the form; use get_workflow_details if unsure of the exact wording. Read note before quoting money — currency fields are stored in MINOR units — and repeat any warnings rather than presenting a truncated breakdown as complete.

NameRequiredDescriptionDefault
dimensionNoBreak requests down by a BUILT-IN property instead of a workflow field. `month`, `week` and `day` give volume over time — that is what 'a graph of requests over the past year' means. `status`, `workflow` and `requestor` give the mix. Pass this OR `field_label`, not both.
operationNo`rank` counts requests per value and works on every field. The rest need a numeric field.rank
field_labelNoThe field to analyse, named as a person would say it — 'Country', 'Amount', 'Storage size', 'Item'. Use this for anything a WORKFLOW defines. For built-in properties of a request, use `dimension`.
created_afterNoOnly requests submitted on/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/before this date (YYYY-MM-DD).
group_by_labelNoOptional second field to break the result down by — 'sum of Amount grouped by Country' gives spend per country. Only meaningful with a numeric operation.
workflow_queryNoOptional workflow-name substring. Scoping to one workflow makes the answer exact, because a label can mean different things in different workflows.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the read-only annotations, the description discloses important behavior: aggregation happens in the database, line-item columns are analyzed with same-line cell pairing, currency values are stored in minor units, and returned note and warnings fields must be read and repeated. These are exactly the behavioral details an agent needs before trusting or quoting results.

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 front-loaded with the core purpose and then gives concrete usage examples, warnings, and field-label guidance. It is dense and slightly repetitive with the schema on group_by_label and dimension, but nearly every sentence adds operational value for a complex 8-parameter tool.

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?

For a complex aggregation tool with no output schema, the description covers the essential context: aggregation method, supported operations, grouping modes, line-item handling, field labeling, currency units, and warning behavior. An agent can call this tool correctly without needing additional return-value documentation.

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, but the description adds useful semantic examples beyond the schema, such as field_label='Amount', operation='sum', group_by_label='Vendor' meaning spend per vendor, and dimension 'month' meaning volume over time. It also clarifies when to use field_label versus dimension in prose, though much of this is already present in the schema.

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 states a specific verb and resource: it aggregates workflow fields across visible requests as a database aggregate rather than by listing and summing requests. It clearly distinguishes itself from listing requests and from free-text search, and it names get_workflow_details as the fallback for uncertain field labels.

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?

It gives explicit operating rules: numeric fields support sum/average/max/min, any field supports rank, group_by_label cross-tabulates two fields, and dimension groups by built-in properties such as status or month. It also routes the agent to get_workflow_details when field wording is unclear, which is a concrete alternative behavior.

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

approve_requestApprove a requestA
Destructive
Inspect

Record this user's approval on a request that is waiting on their decision. This is a decision of record with real financial and operational consequences: always show the user what they are approving and get explicit confirmation in the same turn before calling. Fails if the user is not the current approver. Two-step: call with confirmed=false (the default) first for a preview with NOTHING recorded yet; call again with confirmed=true to record it.

NameRequiredDescriptionDefault
commentNoOptional note recorded alongside the approval.
confirmedNofalse (default) returns a preview of what would be approved and does NOTHING. true approves it. Preview, show the user, wait for their yes, then call again with true.
ar_identifierYesThe approval request to approve — friendly number like 'AR-15' / '15' or the internal integer id.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and non-idempotent, but the description adds what they cannot: that the call has financial/operational consequences, that the first call with confirmed=false records NOTHING, that it fails for non-current approvers, and that the two-step pattern is required. That is meaningful behavior beyond the structured hints.

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?

Three tight sentences ordered by importance: what it does, the safety obligation, then the failure mode and call sequence. Every clause carries operational weight; nothing is padding.

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 destructive, non-idempotent mutation with no output schema, the definition covers purpose, preconditions, confirmation protocol, and the preview/commit mechanics. It stops short of saying what the preview payload contains or what state the request enters after approval, which would close the last gap.

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 coverage is 100%, and the schema's own property descriptions already explain confirmed=false as a no-op preview and the ar_identifier formats. The description restates the two-step semantics without adding syntax or edge-case detail the schema lacks, so the baseline 3 applies.

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?

Specific verb ('record this user's approval') plus resource ('a request that is waiting on their decision') with a scope constraint that tells the agent when the action is even valid. It never names reject_request or describe_approval_request, so the sibling differentiation is left to the agent's inference rather than stated.

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 preconditions ('fails if the user is not the current approver'), an explicit confirmation protocol ('show the user what they are approving and get explicit confirmation in the same turn'), and an explicit two-call sequence with the default state spelled out for each call.

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

cancel_requestCancel a requestA
Destructive
Inspect

Cancel an approval request the user submitted. Stops the approval process and notifies approvers. Confirm with the user first. Two-step: call with confirmed=false (the default) first for a preview with NOTHING cancelled yet; call again with confirmed=true to cancel it.

NameRequiredDescriptionDefault
confirmedNofalse (default) returns a preview of what would be cancelled and does NOTHING. true cancels it. Preview, show the user, wait for their yes, then call again with true.
ar_identifierYesThe approval request to cancel — friendly number like 'AR-15' / '15' or the internal integer id.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds substantive detail beyond them: the approval process is stopped, approvers are notified, and the default call cancels NOTHING. The explicit "NOTHING cancelled yet" wording is exactly the safety context an agent needs before a destructive call.

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 short sentences, front-loaded with the purpose before the safety procedure. The two-step explanation is repeated almost verbatim in the confirmed parameter's schema description, which is a minor redundancy but not harmful.

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?

For a two-parameter destructive tool with full schema coverage and no output schema, the description covers purpose, side effects, recipient notification, and the mandatory confirmation sequence. Nothing needed to invoke it safely is missing.

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 coverage is 100% and the confirmed parameter is already fully documented in the schema, including the preview-then-confirm sequence. The description reinforces the two-step flow but adds no syntax or format detail beyond what the structured fields already provide, so baseline 3 applies.

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 (cancel an approval request the user submitted) and immediately scopes it to the submitter's own request, which separates it from approve_request and reject_request in the sibling list.

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

Usage Guidelines4/5

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

Gives explicit procedural guidance: confirm with the user first, then preview with confirmed=false before cancelling with confirmed=true. The one gap is that it never contrasts this with reject_request, which an agent could reasonably confuse with cancellation.

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

create_workflow_from_templateCreate a workflow from a templateAInspect

Create a new workflow in the team by copying a prebuilt template. The workflow is created inactive; call activate_workflow to publish it. Prefer this over building a workflow field by field.

NameRequiredDescriptionDefault
nameNoOptional workflow name (max 75 chars). Defaults to the template name.
stepsNoOptional. Approval steps to wire into the clone. Omit or pass an empty array to leave approvers blank — that is a supported setup, and the person submitting picks the approver on the form. Resolve every approver to a TeamUser id with `search_team_users` BEFORE calling — never pass names or emails. For sequential approvals (e.g. manager → finance) pass multiple steps in order. For value-based routing ('under $1,000 to Julia, $1,000+ to Serge') give each branch its own step and put the rule in that step's `conditions`.
add_fieldsNoExtra fields to append beyond the template's (plain fields, no OCR binding).
template_idYesTemplate id from `list_workflow_templates`.
remove_fieldsNoLabels (or bindings) of template fields to drop, e.g. 'Cost center'. On OCR templates, removing the invoice-file field disables extraction.
rename_fieldsNoRename template fields while keeping their bindings (so OCR survives).
template_nameNoThe template's name exactly as `list_workflow_templates` returned it, e.g. 'Bill Approval'. ALWAYS pass this alongside `template_id` — the name is what the user said, and if the two disagree the name wins. Passing the id alone has created the wrong workflow when the id was misremembered across turns.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only supply the safety profile (readOnly=false, destructive=false, idempotent=false); the description adds the crucial non-obvious state fact that the workflow is created inactive and needs activate_workflow to publish. It does not warn that repeat calls create duplicate workflows despite idempotentHint=false, which is the one meaningful gap.

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?

Three short sentences, front-loaded with the core action, then the state consequence, then the preference. Every sentence carries distinct decision-relevant information with no repetition.

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?

Given the self-documenting schema and annotations, the description covers what an agent needs: creating a clone, the inactive state, and the activation follow-up. Only the duplicate-creation risk on retry is left unaddressed.

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% and the per-parameter text is unusually rich (template_name precedence, approver_ids resolution via search_team_users, step conditions and fallback semantics), so the schema carries the load. The description itself adds no parameter-level meaning beyond what the schema already states, making baseline 3 correct.

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 ("Create a new workflow") plus the mechanism ("by copying a prebuilt template"), which cleanly separates it from list_workflow_templates and describe_workflow_template in the sibling set. The final sentence contrasts it with an alternate construction path an agent might otherwise attempt.

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

Usage Guidelines4/5

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

Gives a clear preference rule ("Prefer this over building a workflow field by field") and names the required follow-up, activate_workflow, since the result is inactive. It stops short of explicit when-not conditions, but the alternative and the sequencing are both spelled out.

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

describe_approval_requestDescribe an approval requestA
Read-only
Inspect

Return one approval request in full: status, submitted field values, requestor, every approver and their decision, and a link to open it. Accepts the friendly number ('AR-15') or the internal id.

NameRequiredDescriptionDefault
ar_identifierYesEither the friendly AR number like 'AR-15' / '15' or the internal integer id. Both are accepted.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real value by disclosing the response contents and the deep link, but it says nothing about what happens when the identifier is not found, and it leaves idempotentHint=false unexplained for an operation that reads a single record.

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?

Two sentences, zero filler. The return payload is front-loaded and the input form follows, so an agent gets the important information first.

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?

With no output schema, the description correctly carries the burden of enumerating return fields, and it does so thoroughly for a one-parameter read tool. The only shortfall is the absence of any statement about not-found or cross-workspace behavior, which is minor here.

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 coverage is 100% and the single parameter already documents both accepted forms with the 'AR-15' / '15' example. The description's sentence 'Accepts the friendly number or the internal id' restates the schema rather than adding new meaning such as case sensitivity or prefix handling, so the baseline 3 applies.

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 ('Return one approval request') and enumerates exactly what comes back: status, submitted field values, requestor, approver decisions, and a link. The word 'one' plus the enumerated payload makes it distinguishable from list_approval_requests and get_request_activity without opening any schema.

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 singular 'one approval request', which suggests fetching a single known record rather than browsing. There is no explicit statement of when to prefer this over list_approval_requests or get_request_activity, and no mention of prerequisites or failure behavior for an unknown identifier.

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

describe_workflowDescribe a workflowA
Read-only
Inspect

Return a workflow's approval structure: its steps, who approves at each step, and the conditions that route a request between them.

NameRequiredDescriptionDefault
workflow_idYesID of the workflow to describe.

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description contributes useful behavioral detail by enumerating what the response contains (steps, approvers, routing conditions), but it says nothing about behavior when the workflow_id does not exist, or whether inactive or draft steps are included, which matters because idempotentHint is false.

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?

One sentence, front-loaded with the verb and the resource, and every clause (steps, approvers, routing conditions) tells the agent something concrete about the payload. No filler and no redundancy.

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 simple one-parameter read tool with annotations and no output schema, the description covers what an agent needs: that it retrieves a structure rather than mutating anything, and roughly what that structure contains. The only real gap is error/not-found behavior and differentiation from get_workflow_details.

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?

There is a single required parameter with 100% schema description coverage, so the schema already explains 'ID of the workflow to describe'. The description adds no format, sourcing, or lookup hints beyond that, which is the expected baseline when the schema does the heavy lifting.

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?

The description uses a specific verb ('Return') and names the exact resource returned: a workflow's approval structure, including steps, approvers, and routing conditions. It is clear what the tool does, though it does not contrast itself with the nearby sibling get_workflow_details, which an agent could easily confuse it with.

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 by the phrase 'a workflow's approval structure', which suggests inspection rather than mutation, and the read-only nature is consistent with that. However, there is no explicit when-to-use guidance, no statement of prerequisites, and no routing to the alternatives get_workflow_details or describe_workflow_template.

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

describe_workflow_templateDescribe a workflow templateA
Read-only
Inspect

Return one template's fields and approval steps so the user can see what they would get before creating a workflow from it.

NameRequiredDescriptionDefault
template_idNoTemplate id from `list_workflow_templates`. Never guess — always call list first.
template_nameNoThe template's name exactly as `list_workflow_templates` returned it, e.g. 'Quote Approval'. ALWAYS pass this. If it disagrees with `template_id` the name wins — ids get misremembered between turns and the wrong template has been opened in practice.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that the response contains fields plus approval steps, which is useful context, but it says nothing about failure behavior for an unknown template, the id/name precedence resolution, or the shape of the returned steps.

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?

A single sentence with the outcome front-loaded and the motivating context trailing it. Nothing is redundant and nothing is buried.

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?

This is a low-complexity, read-only lookup with no output schema, and the description tells the agent what the return contains (fields and approval steps) at the right level of abstraction. The only real gap is the absence of any statement about what happens when the template cannot be resolved.

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%, and both parameters carry detailed guidance including the precedence rule that name wins over id. The description adds no parameter meaning of its own, so the schema-driven baseline of 3 applies.

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?

The description gives a specific verb and resource ("Return one template's fields and approval steps") and even names the payload contents. It implicitly separates itself from create_workflow_from_template by framing the call as pre-creation inspection, but it never names list_workflow_templates or the create sibling outright, so sibling differentiation is only partial.

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

Usage Guidelines4/5

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

The clause "before creating a workflow from it" gives a clear situational trigger for the tool. There are no explicit when-not conditions or named alternatives, and the important "always call list first" rule lives in the parameter schema rather than the description.

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

get_request_activityGet request historyA
Read-only
Inspect

Return the chronological audit trail for one approval request: submissions, approvals, rejections, comments, edits and forwards, with who did what and when.

NameRequiredDescriptionDefault
ar_identifierYesThe AR number like 'AR-15' (preferred — a bare number can be ambiguous across request types) or the internal integer id.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. Beyond that, the description discloses the ordering guarantee ('chronological'), the taxonomy of returned events, and the presence of actor attribution ('who did what and when') — meaningful since no output schema exists. It omits pagination, result caps, and behavior for a request with no activity.

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?

One sentence, front-loaded with the verb and resource, with the event enumeration as a compact clause rather than a bulleted list. No filler, hedging, or restatement of the title.

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 single-parameter read tool with full schema coverage and annotations, the description supplies what the schema cannot: what the response contains and in what order. Only the absence of any note on volume, pagination, or an empty-history result keeps it from being fully complete.

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% and the single parameter already documents both accepted forms ('AR-15' vs internal integer id) plus the ambiguity caveat. The description adds no additional meaning about ar_identifier, so the baseline of 3 applies.

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?

Specific verb ('Return') plus a precise resource ('chronological audit trail for one approval request') and an enumeration of the event types covered (submissions, approvals, rejections, comments, edits, forwards). It clearly reads as a history/audit tool, implicitly distinct from describe_approval_request, but it never names a sibling or states the contrast explicitly.

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?

The phrase 'audit trail for one approval request' implies the use case (investigating what happened on a single request) and the 'one' constraint, but there is no explicit when-to-use vs when-not, and no pointer to describe_approval_request for current state or summarize_approvals for aggregate views.

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

get_user_contextGet current userA
Read-only
Inspect

Return the Approveit identity this connection acts as: name, email, role, department, and team. Call this first when you need to know who 'I' or 'me' refers to in a request.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description's added value is the key behavioral fact that this resolves the connection's own authenticated actor rather than an arbitrary user, and that it is a cheap prerequisite call. It stops short of saying what happens when the connection is unauthenticated or what an empty/error result looks like.

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?

Two sentences, zero filler, and the payoff (what you get back) is front-loaded ahead of the usage instruction. Every clause earns its place.

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?

For a parameterless read of one object, the description is sufficient: it names the returned fields, which substitutes for the absent output schema, and the annotations carry the safety and idempotency profile. Nothing an agent needs in order 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?

The tool takes zero parameters, which is the baseline-4 case. The description adds the useful implicit signal that no identifiers need to be supplied because the actor is derived from the connection itself.

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 (return) and a precisely bounded resource: the Approveit identity 'this connection acts as', enumerating the fields returned (name, email, role, department, team). The phrase 'this connection acts as' separates it from search_team_users, which looks up other people, so an agent can distinguish the two without opening either schema.

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

Usage Guidelines4/5

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

Gives an explicit trigger — 'when you need to know who "I" or "me" refers to in a request' — plus ordering guidance ('call this first'). It does not name the sibling to use for looking up another user's identity, so the when-not side is only implied.

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

get_workflow_detailsGet workflow fieldsA
Read-only
Inspect

Return one workflow's full field list with types, required flags, and option sets. Call this before submit_request so you know which values are mandatory and how each field must be formatted.

NameRequiredDescriptionDefault
workflow_idYesThe ID of the workflow to get details for.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered by structured data. The description adds useful behavioral context by describing the returned payload, but says nothing about failure modes such as an unknown or inactive workflow_id. Against an already-annotated read tool, this is adequate rather than rich.

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?

Two sentences, both earning their place: the first defines the output, the second defines the calling context. The payload description is front-loaded ahead of the sequencing advice, with no filler.

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?

With no output schema, the description carries the burden of explaining return values and does so reasonably (field list, types, required flags, option sets). For a single-param read tool this is nearly complete; only error behavior for invalid IDs is unaddressed.

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?

There is a single required parameter at 100% schema description coverage, so the schema fully documents workflow_id. The description adds no additional meaning such as accepted ID ranges or where to obtain a valid ID. Baseline 3 is appropriate when the schema does the work.

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?

The description gives a specific verb and resource ('Return one workflow's full field list') and enumerates the payload contents (types, required flags, option sets), so an agent knows exactly what comes back. It does not distinguish itself from near-siblings like describe_workflow or describe_workflow_template, which is the main gap.

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

Usage Guidelines4/5

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

It states a concrete usage rule with a named sibling: call this before submit_request to learn mandatory values and formatting. That is clear when-to-use guidance rather than implied. It stops short of explicit when-not-to-use guidance or a comparison with describe_workflow/describe_workflow_template.

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

invite_team_memberInvite a team memberAInspect

Send an Approveit invitation to an email address. Sends real mail to a real person — confirm the address and role with the user first. Two-step: call with confirmed=false (the default) first for a preview with NOTHING sent yet; call again with confirmed=true to send it.

NameRequiredDescriptionDefault
roleNoTheir team role. Defaults to Requestor (can submit and track requests). Use Admin only if the user explicitly asks for admin access.
emailYesThe invitee's email address. Must be a valid email.
confirmedNoWhether the user has explicitly confirmed sending this invite. MUST be false (or omitted) on the first call — the tool returns a preview for the user to verify. Set to true ONLY after the user has explicitly said yes to the previewed email and role. Never set true on the assumption the user 'probably meant yes' — re-preview if their reply is ambiguous.
full_nameNoOptional. The invitee's full name, used only to personalize the assistant's reply (the invite email doesn't store names — those come from the signup form).

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare non-readonly, open-world, non-idempotent, non-destructive. The description adds genuinely new and important context: real mail goes to a real person, and the first call sends nothing. That is the key safety behavior an agent needs and it isn't in the annotations.

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?

Three tight sentences, front-loaded with purpose, then consequence, then procedure. No filler or restated title text.

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 a single-required-param invitation tool with no output schema, it covers purpose, consequence, confirmation requirements, and the full call sequence. Nothing an agent needs to avoid a harmful call 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?

Schema coverage is 100%, so the baseline is 3. The description goes slightly beyond by framing 'confirmed' as a cross-call sequencing contract ('call with confirmed=false first... call again with confirmed=true'), tying individual parameters to the required invocation order rather than just their individual meaning.

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 ('Send an Approveit invitation to an email address') and the effect on the real world. An agent can instantly distinguish it from read-oriented siblings like search_team_users or get_user_context.

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 says to confirm the address and role with the user first, and gives a precise two-step procedure: confirmed=false for a preview, then confirmed=true to send. The alternative path (re-preview on ambiguity) is stated, leaving no inference needed.

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

list_approval_requestsList approval requestsA
Read-only
Inspect

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.

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.

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.

list_workflowsList workflowsA
Read-only
Inspect

List the approval workflows this user can submit requests against. A workflow defines the fields a request carries and who approves it. Start here when the user wants to submit something but has not named a specific workflow.

NameRequiredDescriptionDefault
search_queryNoOptional text to filter workflows by name OR by what they are for — "time off", "bill", "purchase order" all match on type, so a workflow whose name says nothing about its purpose is still found. Leave empty to list all; if a search comes back empty, list all rather than telling the user nothing exists.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: the domain meaning of a workflow, and the fallback rule that an empty search should be followed by listing all rather than reporting that nothing exists — a non-obvious behavior an agent would otherwise get wrong.

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?

Three short sentences, front-loaded with the action and scope, followed by the minimum domain definition needed and the entry condition. No filler, no repetition of the schema, and each sentence carries distinct information.

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 one-optional-param read tool with full schema coverage and no output schema, the description covers purpose, domain meaning and starting condition well. The remaining gap is what each list entry contains (id, name) that the agent would need to chain into describe_workflow or submit_request; without an output schema that would have been worth one clause.

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% and the schema entry for search_query already explains name-or-purpose matching and the empty-result fallback. The description itself adds no parameter meaning beyond that, so the baseline of 3 applies; it neither compensates for nor introduces anything the schema lacks.

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 with scope ("List the approval workflows this user can submit requests against") and even defines what a workflow is, so the agent knows the returned items carry fields and approvers. It does not explicitly distinguish itself from describe_workflow or list_workflow_templates, which are the nearest siblings, so differentiation is inferred rather than stated.

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

Usage Guidelines4/5

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

"Start here when the user wants to submit something but has not named a specific workflow" gives a concrete entry condition and implicitly excludes the case where the user already named a workflow. It stops short of naming the alternative tool to call in that case (describe_workflow) or stating exclusions such as templates, but the usage context is clear without inference.

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

list_workflow_templatesList workflow templatesA
Read-only
Inspect

List the prebuilt workflow templates available to copy (purchase order, invoice, time off, vendor onboarding, access request, and others). Use before create_workflow_from_template.

NameRequiredDescriptionDefault
queryNoFuzzy-search term matched against template name and description (e.g. 'bill', 'time off', 'batch payment', 'new starter'). Use the user's own words. Omit only for a general 'what do you have?'.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and closed-world scope, so safety is covered. The description adds useful context that these are copyable prebuilt templates, but says nothing about how results are filtered or whether the full catalog is returned when query is omitted.

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?

Two sentences, zero filler, with the resource scope front-loaded and the follow-up action second. The parenthetical examples earn their space by anchoring what 'template' means.

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 one-parameter read tool with full schema coverage and no output schema, the definition is nearly sufficient. The one meaningful gap is that it never states what the listing returns (names, ids, descriptions) — an agent needs to know it gets an identifier it can hand to create_workflow_from_template.

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?

The description says nothing about the query parameter or that the catalog is fuzzy-searchable; that work is done entirely by the schema, which is at 100% coverage and gives examples and omission guidance. With the schema fully documented, the baseline of 3 applies — nothing is added, but nothing is contradicted.

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+resource ('List the prebuilt workflow templates') and enumerates concrete examples (purchase order, invoice, time off, vendor onboarding, access request), which makes the catalog scope tangible. It does not distinguish itself from describe_workflow_template or list_workflows, so sibling differentiation is only partial.

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

Usage Guidelines4/5

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

'Use before create_workflow_from_template' gives an explicit sequencing rule that tells the agent when this tool belongs in a flow. It offers no when-not guidance and never mentions describe_workflow_template as the alternative for inspecting a single template's details.

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

reject_requestReject a requestA
Destructive
Inspect

Record this user's rejection of a request that is waiting on their decision. A decision of record — confirm with the user first. Fails if the user is not the current approver. Two-step: call with confirmed=false (the default) first for a preview with NOTHING recorded yet; call again with confirmed=true to record it.

NameRequiredDescriptionDefault
commentNoThe reason for rejecting, recorded with the decision. Strongly recommended — ask the user if they didn't say.
confirmedNofalse (default) returns a preview of what would be rejected and does NOTHING. true rejects it. Preview, show the user, wait for their yes, then call again with true.
ar_identifierYesThe approval request to reject — friendly number like 'AR-15' / '15' or the internal integer id.

TDQS

A4.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 the preview-does-nothing semantics, the two-step confirmation flow, and the approver-identity precondition that causes failure. The 'decision of record' framing correctly reinforces destructiveHint=true rather than contradicting it.

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?

Four short sentences, front-loaded with the action and the confirmation requirement, then the failure condition, then the two-step mechanics. No filler and every clause carries load-bearing information.

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?

For a destructive, non-idempotent mutation with no output schema, the description covers the safety posture, the preview-vs-record distinction, and the precondition. An agent has everything needed to call it correctly and safely.

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 100%, so parameter docs are already complete and a baseline of 3 applies. The description adds real value by explaining the confirmed default and the required ordering of the two calls as a workflow, not just a boolean flag.

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 ('Record ... rejection of a request') plus the scope condition 'waiting on their decision'. It is immediately distinguishable from approve_request and cancel_request without opening any 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?

Explicitly sequences the two calls: confirmed=false first for a preview, then confirmed=true to record, and warns 'confirm with the user first'. It also names the exclusion condition ('Fails if the user is not the current approver'), leaving nothing to inference about when this tool applies.

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

search_entitiesSearch reference dataA
Read-only
Inspect

Resolve a name to an id for a field on a request form — vendors, customers, departments, locations, cost centers, categories, taxes and products. Call this to turn a user's words ('Acme', 'Marketing') into the id that submit_request expects.

NameRequiredDescriptionDefault
queryNoName or partial name to search for. Empty (or omitted) returns only the team's total count for this entity type — use that for "how many X do I have?".
entity_typeYesThe type of entity to search for.
workflow_idNoThe workflow (or pipeline) ID this entity is being resolved for. Scopes results to the workflow's accounting organization so they match the form's dropdown. Pass it whenever you are filling a field for a specific workflow/submission.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the resolution purpose and the submit_request linkage, but says nothing about matching behavior (partial/fuzzy matching), whether multiple candidates can be returned, or what happens on no match — meaningful gaps for a lookup tool that agents will often chain into submit_request.

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?

Two sentences, front-loaded with the core action and followed by the concrete use case. The long em-dash enumeration of entity types is slightly listy but is doing real work by scoping what can be searched.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of describing the return value; it implies an id but does not say whether a list of candidates or a single match comes back, nor how ambiguity is surfaced. It is adequate for a 3-parameter lookup, but the return shape is left for the agent to discover.

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 coverage is 100%, so each parameter is already documented, including the empty-query count behavior and the workflow_id scoping rationale. The description adds little parameter-level meaning beyond reinforcing that query holds a user's spoken name and that entity_type spans the eight listed types. Baseline 3 is appropriate when the schema does the heavy lifting.

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+resource: 'Resolve a name to an id' for reference data, then enumerates the entity kinds (vendors, customers, departments, locations, cost centers, categories, taxes, products). This clearly separates it from siblings like search_team_users or list_workflows, and the 'id that submit_request expects' phrasing pins down its role in the flow.

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

Usage Guidelines4/5

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

'Call this to turn a user's words (\'Acme\', \'Marketing\') into the id that submit_request expects' gives an explicit trigger and names the downstream tool it feeds. It stops short of stating when NOT to use it (e.g., team members go to search_team_users) or what to do when multiple matches come back, so it is clear context without full exclusions.

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

search_team_usersSearch team membersA
Read-only
Inspect

Find people in the team by name or email. Use to resolve an approver or a manager to an id when a workflow field asks for a person.

NameRequiredDescriptionDefault
queryYesName, job title, or department to search for (e.g. "Serge", "CEO", "Legal"). A non-empty query is required.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds the workflow context but says nothing about matching behavior (exact vs partial), result ranking, or result limits, which matter for a lookup that returns ids.

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?

Two tight sentences: what it searches first, why you would call it second. No filler, no restatement of the title, and the purpose is front-loaded.

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 one-parameter read-only lookup with a fully documented schema and no output schema, the definition covers purpose and call motivation adequately. The remaining gap is what a result contains and how matches are ranked, which would help an agent consuming the returned ids.

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 coverage is 100%, so the schema already documents the single query parameter thoroughly (name, job title, department). The description says "by name or email," which does not add meaning and actually diverges from the schema's stated searchable fields, so it earns no credit above baseline.

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?

"Find people in the team by name or email" gives a specific verb plus a scoped resource, and the second sentence explains the workflow role it plays. It is clearly distinct from write-oriented siblings like invite_team_member or update_request, though it never distinguishes itself from search_entities.

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

Usage Guidelines4/5

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

The description states a concrete use case: resolving an approver or manager to an id when a workflow field asks for a person. That is real when-to-use guidance, but there is no when-not guidance and no mention of when to prefer the sibling search_entities.

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

submit_requestSubmit an approval requestAInspect

Submit a new approval request against a workflow. Call get_workflow_details first and supply every required field; the tool reports which values are missing or invalid rather than guessing. This notifies real approvers — confirm the values with the user before calling. Two-step: call with confirmed=false (the default) first for a preview with NOTHING written yet; call again with the same fields plus confirmed=true to actually submit it.

NameRequiredDescriptionDefault
fieldsYesMap of field key to value. Prefer the field's `id` (UUID) from `get_workflow_details` as the key — the binding name (e.g. "absence_from") or the exact label are accepted as fallbacks, but the UUID is canonical. Each value should match the field type: strings for text, numbers for amount/number, date strings (YYYY-MM-DD) for dates, option values for dropdowns. Money (amount, and item_price cells in line_items) in dollars as the user says it, e.g. 250 or "1,250.50"; the tool converts to the stored unit, never multiply by 100 yourself. A line-item tax cell (accounting_tax / xero_tax_rate) takes the tax's id from search_entities, never its percentage; the tool stores the tax's rate. Always include every required field — missing required fields (esp. workflow-specific ones like `absence_from`/`absence_to` for time-off, vendor for bills/POs) cause downstream creation errors that are not recoverable from inside the tool.
priorityNoPriority level. Defaults to medium.
confirmedNofalse (default) previews: validates everything and returns every blocker at once WITHOUT creating anything. true creates the request. Preview first, then confirm with the user, then call again with true.
workflow_idYesThe workflow ID to create the request for.
step_approversNoOnly for steps `get_workflow_details` marks `requestor_picks_approver: true` — on those the form makes the requestor choose who approves, and the preview lists each one as a blocker until it has a pick. One entry per such step: {"step_order": 0, "approver_ids": [12, 34], "completion": "all"}. Resolve names with `search_team_users`; `completion` is "all" (every one must approve, the default) or "any" (one is enough).

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, it discloses that this notifies real approvers, that preview writes NOTHING, that validation reports all blockers at once instead of guessing, and that missing required fields cause downstream errors that are unrecoverable from inside the tool. That is exactly the behavioral context the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) cannot 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?

Three dense sentences, front-loaded with purpose, then prerequisites, then the two-step protocol. Nothing is repeated from the schema and every clause (notify real approvers, nothing written on preview) carries operational weight.

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?

There is no output schema, but the description compensates by explaining what the preview returns (every blocker at once) and what the confirmed call does. For a five-parameter mutation tool with nested objects and open-world effects, an agent has everything it needs to call this correctly and safely.

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 100% and the property descriptions already carry the heavy detail (UUID keys, dollar amounts, tax ids, step_approvers shape), so the baseline is 3. The description still adds meaning at the parameter level: it explains the confirmed flag's preview contract and reinforces that all required fields, including workflow-specific ones, must be populated, which is a small but real increment over the schema.

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 a specific verb plus resource ('Submit a new approval request against a workflow'), and the word 'new' plus the submission framing distinguishes it from update_request, approve_request, and reject_request in the sibling list. 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?

It states explicit prerequisites ('Call get_workflow_details first and supply every required field'), an explicit sequencing rule (preview with confirmed=false, then confirmed=true), and a human-in-the-loop condition ('confirm the values with the user before calling'). The when-not case is implicit but clear: do not call with confirmed=true until the preview is clean and the user has agreed.

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

summarize_approvalsSummarize approvalsA
Read-only
Inspect

Total up the value of approval requests a person APPROVED within a date range, broken down by currency and by what later happened to each request. Use for 'how much did I approve this month' or 'what did the CFO sign off on in Q1', rather than listing every request and adding them up. For the CURRENT USER, OMIT approver_id entirely: it defaults to them, and their id cannot be looked up. For anyone else, resolve them with search_team_users first. Dates are required, as YYYY-MM-DD.

NameRequiredDescriptionDefault
end_dateYesLast day of the range, YYYY-MM-DD, inclusive. For 'this month' use today's date.
start_dateYesFirst day of the range, YYYY-MM-DD, inclusive. For 'this month' use the 1st of the current month.
approver_idNoOPTIONAL. TeamUser id of the person whose approvals to total, from `search_team_users`. Omit it for 'how much have I approved' — leaving it out means the current user, and there is no way to look their own id up.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description is free to focus on semantics, which it does: results are broken down by currency and by downstream outcome rather than a single scalar. It also discloses the identity constraint that the current user's id cannot be looked up, which is real behavioral context not in the annotations. It stops short of describing grouping limits or ordering.

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?

Four tight sentences, each with a distinct job: what it computes, when to prefer it, the current-user rule, and the date format. The aggregation scope is front-loaded and nothing is repeated without purpose.

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 three-parameter read-only aggregate with no output schema, the description covers purpose, alternative, identity resolution, and date format, which is nearly everything needed to invoke it correctly. Minor gaps remain on result shape granularity (e.g., whether groups are bounded or ordered) and on the unusual idempotentHint=false for a read operation.

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 coverage is 100%, so the schema already documents all three parameters including the default-to-current-user behavior for approver_id. The description reinforces the omit-approver_id rule and the YYYY-MM-DD format but adds little syntax or meaning beyond what the schema states, so the baseline of 3 applies.

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: total up the value of approval requests a person APPROVED in a date range, with the aggregation dimensions named (by currency, by what later happened). This clearly separates it from listing siblings such as list_approval_requests.

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?

Gives concrete trigger questions ('how much did I approve this month', 'what did the CFO sign off on in Q1') and explicitly excludes the alternative path of listing every request and summing manually. It also routes the agent to search_team_users for any approver other than the current user.

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

update_requestUpdate an approval requestA
Destructive
Inspect

Change field values on an approval request the user submitted and that is still open. Editing a request that has already been approved is rejected by the tool. Saving DISCARDS every approval already given: the approvers are cleared and have to decide again. Pending and change-requested requests return to pending; deferred, scheduled and draft ones keep their status. The approvers are re-notified except on scheduled and draft, where only the requestor hears about it. Tell the user that before calling, not after. Two-step: call with confirmed=false (the default) first for a preview of the new values with NOTHING written yet; call again with the same ar_identifier and fields plus confirmed=true to save them.

NameRequiredDescriptionDefault
fieldsYesMap of field key to NEW value — ONLY the fields being changed. Prefer the field's `id` (UUID) from get_workflow_details / describe_approval_request as the key; the binding name or exact label are accepted fallbacks. Values follow the field type (numbers for amount/number, YYYY-MM-DD for dates, option values for dropdowns, resolved IDs for vendor/customer/etc. — use search_entities to resolve names to IDs first). A line-item tax cell takes the tax's id, never its percentage; the tool stores the tax's rate.
confirmedNofalse (default) returns a preview of the new values and writes NOTHING. true saves the change. Preview, show the user, wait for their yes, then call again with the same ar_identifier and fields plus true.
ar_identifierYesThe approval request to edit — friendly number like 'AR-15' / '15' or the internal integer id.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the destructiveHint=true annotation: it discloses that saving discards all existing approvals, clears approvers, and lists the status transitions per request state (pending/change-requested revert, deferred/scheduled/draft keep status). It also details who gets re-notified and warns the agent to inform the user before calling rather than after.

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 critical side effects are front-loaded ahead of the mechanics, and each sentence conveys distinct information about statuses or notifications. It is on the long side and partly repeats the confirmed-flag wording already in the schema, but no sentence is wasted.

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?

For a destructive, non-idempotent mutation with a nested field map and no output schema, the description covers consequences, status transitions, notification behavior, and a preview-then-commit flow. Nothing essential to invoking it safely is missing.

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 coverage is 100%, so the field map, confirmed, and ar_identifier are already documented in the schema. The description restates the two-step confirmed protocol and the 'only changed fields' semantics that the schema already carries, adding little new meaning beyond it, so the baseline of 3 applies.

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 ('Change field values on an approval request') plus a scope constraint ('the user submitted and that is still open'). This clearly separates it from approve_request, reject_request, and cancel_request, which act on requests rather than editing their values.

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

Usage Guidelines4/5

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

Gives an explicit precondition ('still open') and an exclusion ('editing a request that has already been approved is rejected'), and spells out the call sequence: preview with confirmed=false, then save with confirmed=true. It does not name sibling tools or say where to obtain field ids beyond a passing mention, so it falls short of a full when/when-not/alternatives statement.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 21 tool updates
    • First observedactivate_workflow
    • First observedanalyze_field
    • First observedapprove_request
    • First observedcancel_request
    • First observedcreate_workflow_from_template
    • First observeddescribe_approval_request
    • First observeddescribe_workflow
    • First observeddescribe_workflow_template
    • First observedget_request_activity
    • First observedget_user_context
    • First observedget_workflow_details
    • First observedinvite_team_member
    • First observedlist_approval_requests
    • First observedlist_workflow_templates
    • First observedlist_workflows
    • First observedreject_request
    • First observedsearch_entities
    • First observedsearch_team_users
    • First observedsubmit_request
    • First observedsummarize_approvals
    • First observedupdate_request

Publisher details

Operator
Approveit, Inc. · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
Not applicable

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables users to create reusable purchase requisition checklists, run them against individual orders, record step-by-step pass/fail/NA results with attributions, and sign off to freeze a dated, auditable approval record.
    16
    0
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to submit work for human review over MCP or REST, then retrieve approvals, edits, or change requests without blocking. Reviewers can approve, edit, or send back items from a web or phone interface.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that implements a multi-stage employee access request and approval workflow, enabling employees to request system access and managers/IT admins to approve or reject requests through an interactive UI.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables agents to query fictional construction works, suppliers, purchase requests, and quotes, and to create and approve purchase orders under code-enforced per-agent permissions and audit logging.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources