Skip to main content
Glama
identity-aiops

identity-aiops

update_client_redirect_uris

Destructive

Replace a client's OAuth redirect-URI list with the complete desired set; preview changes using dry-run and undo by restoring the previous list.

Instructions

[WRITE][risk=high] REPLACE a client's redirect-URI list; reversible — the prior list is captured and the undo replays it.

Redirect URIs are the OAuth flow's security boundary, so this is tagged risk=high on the audit row (a descriptive label, not a gate). Pass the FULL desired list (this replaces, not appends) and dry_run=True to preview.

Args: client_id: Client internal id, from list_clients. redirect_uris: The complete new redirect-URI list. dry_run: If True, preview without changing. target: IdP target name from config; omit for the default.

Input Schema

NameRequiredDescriptionDefault
targetNo
dry_runNo
client_idYes
redirect_urisYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.0

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=false), the description discloses traits the annotations cannot: that the prior list is captured and can be replayed via undo, that risk=high is a descriptive audit label rather than a gate, and that dry_run provides a safe preview path. This is exactly the kind of undo/reversibility and security-boundary context an agent needs before overwriting OAuth configuration.

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 [WRITE][risk=high] tag and the replace-not-append rule are front-loaded, and the Args block is compact. The parenthetical explaining that risk=high is 'a descriptive label, not a gate' is a slight digression but it does preempt a real misreading, so it largely earns its place.

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 4-parameter write tool with no output schema, the description covers semantics, safety, reversibility, and the preview mechanism well enough to call it correctly. The only gap is the response shape on success/failure, which is minor given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden — and it does: client_id (source: list_clients), redirect_uris (the complete new list, replacing rather than appending), dry_run (preview semantics), and target (IdP name from config, omit for default). Every one of the four parameters gains meaning not present in the bare schema titles.

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 ('REPLACE a client's redirect-URI list') and pins down the scope with 'this replaces, not appends'. The write/risk tag is front-loaded, so an agent can immediately tell this mutating tool apart from read-oriented siblings like client_detail or list_clients.

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 gives concrete operating guidance — pass the FULL desired list and use dry_run=True to preview — plus the retrieval path for the required client_id ('from list_clients'). It does not, however, route the agent to alternatives or state when not to use this tool (e.g., versus undo_apply for reverting), so it stops short of explicit when/when-not guidance.

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