Skip to main content
Glama

Grant access to one app

people_grant
Destructive

Create or replace one person's time-limited access for a single private HTTP/file app, preserving other grants and reactivating expired or revoked access.

Instructions

Create or replace one person's time-limited grant for one private HTTP/file app; return the person view, app and revoked=false. Use people_grant to allow one app while preserving all other grants; people_update can replace the whole app set, and people_revoke denies one app. Replacing an expired or revoked grant re-activates it without regrant; use extend to move an existing deadline. If the app was not yet people-scoped, it becomes scoped: callers without a grant or explicit legacy allow rule are denied. Reduced scopes require an existing person; only the owner can create one. Cannot clear an owner revocation. Changes local state only, preserves invitations and creates no network invitation. Lifetime must be at least 1h and obey audience policy, scope maximum and binding expiry; never is refused.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
appYes
forYesLifetime of at least 1h using the shared grammar and presets, within audience policy, scope maximum and binding expiry; never is refused.
whoYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
appYes
personYes
revokedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and idempotentHint=false, but the description goes well past them: app scoping side effects (callers without a grant or legacy allow rule are denied), re-activation of expired/revoked grants, local-state-only semantics, invitation preservation, and no network invitation. It does not say whether an existing non-expired grant is overwritten or merged, which is the main residual gap for a destructive replace operation.

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 the core action and return shape, then routing guidance, then edge conditions. Dense but nearly every clause carries decision-relevant information; only the lifetime sentence duplicates the schema description verbatim.

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 an output schema present, return values need not be explained, and the description still specifies the key return fields. Combined with the scoping, ownership, and lifetime constraints, an agent has everything needed to call this destructive replace correctly.

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?

Only the 'for' parameter is documented in the schema (33% coverage), and the description largely restates the schema text about lifetime minimums, grammar/presets and 'never' refusal. For 'who' and 'app' it adds only indirect hints (app becomes people-scoped; reduced scopes require an existing person) without clarifying identifier format for either.

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 (create/replace a time-limited grant), the exact resource (one person's grant for one private HTTP/file app), and the expected result shape (person view, app, revoked=false). It also names the sibling tools it is not — people_update for whole-set replacement and people_revoke for denial — so an agent can route correctly without opening other schemas.

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 gives when-to-use versus alternatives: people_update replaces the whole app set, people_revoke denies one app, extend moves an existing deadline. It also states prerequisites (reduced scopes require an existing person, only the owner can create one) and boundaries (cannot clear an owner revocation).

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