Skip to main content
Glama

Tool profile / phased exposure

ae_system_profile_set
Idempotent

Inspect or switch the MCP tool profile to control which tools the model sees, widening a narrow session to read-only, authoring, or full access.

Instructions

Inspect or CHANGE the MCP tool profile (which tools the model is shown).

This is the ONE tool that is visible in EVERY profile, because it is how a narrow profile is widened again: without it, a session started on idle could never reach a write tool without a human editing the phase file.

YOU START ON idle (2026-10-29): the default face is exactly this tool plus ae_system_tool_search - two tools, ~4.8 KB of prompt instead of ~195 KB. That is deliberate, and one call changes it: profile="read" for the 33 read-only tools, profile="authoring" for the 83 authoring tools, profile="full" for all 108. Use ae_system_tool_search first if you do not know which profile carries the tool you want - it searches the ACTIVE face, so widening is what makes its answers useful.

WHERE THE COST IS. The tool list is re-sent to the model on every request, so it is paid for continuously - which is why the profiles are not cosmetic. The numbers live in docs/tool-description-rationale.md.

THE SWITCH IS NOT INSTANT, AND THAT IS A CONTRACT, NOT A WARNING. The host only re-reads tools/list after a notifications/tools/list_changed notification; the measured window is about 75 ms, but the honest instruction is coarser: the new tool set is usable on your NEXT model turn, never in this one. Calling a just-exposed tool in the same turn can therefore fail with unknown_tool -- that refusal text says so, and it is NOT a failed edit. Likewise a tool that has just been REMOVED can still be offered for one turn (stale registration) and will be refused the same way.

Switching is a META operation: it is journaled (event tool_profile, with the exposed names and whether the host was told) but it never dispatches to After Effects and never needs the write gate.

WHOSE TOOL LIST MOVES: scope="session" (the default) changes THIS conversation only - the other conversations served by the same process keep the face they had, and the notification is sent to this session alone. scope="process" is the old, deliberate meaning: every conversation the server serves re-syncs on its next request, EXCEPT the ones that set their own profile, which keep it (a session choice always wins over the process default).

request_id is accepted and NOT forwarded (the tool has no args envelope); the async wrapper's finish is what makes the key guard it.

Input Schema

NameRequiredDescriptionDefault
listNo
scopeNosession
profileNo
request_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.23.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare write/idempotent/non-destructive; the description adds far more that annotations cannot carry — the ~one-turn latency window before a newly exposed tool is callable, that `unknown_tool` on a just-added tool is not a failed edit, that removed tools may linger one turn as stale registrations, and that the switch is journaled but bypasses the write gate and After Effects. Scope blast radius is spelled out per value, including that a session choice wins over the process default.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Sectioned with caps headers and front-loaded with the core switch semantics, which helps scanning. But it is roughly 300 words for a four-param meta tool and carries rhetorical ballast that does not aid invocation ("THAT IS A CONTRACT, NOT A WARNING", "the honest instruction is coarser", the docs pointer for cost numbers), so signal is diluted by emphasis.

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?

No output schema exists, yet the description never says what an inspect/`list` call returns or what the profile-change response looks like, and the `list` param is undocumented. Everything an agent needs to safely perform the switch — timing contract, scope, values, gating — is otherwise complete and unusually thorough.

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 0%, so the description must compensate, and it largely does: `profile` values are enumerated with tool counts, `scope` is given default and full semantics, and `request_id` is explained as accepted-but-not-forwarded. The `list` parameter, however, is never mentioned, leaving one of four params with no meaning anywhere.

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?

Opens with a specific verb pair and resource: "Inspect or CHANGE the MCP tool profile (which tools the model is shown)." It goes further and distinguishes itself from the only sibling by explaining the asymmetry ("This is the ONE tool that is visible in EVERY profile") and its role relative to `ae_system_tool_search`.

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 about the starting state (`idle`), the exact values to pass (`read` = 33 tools, `authoring` = 83, `full` = 108), and when to reach for the sibling first ("Use `ae_system_tool_search` first if you do not know which profile carries the tool you want"). It also names the condition that selects `scope="process"` versus the default `session`.

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

Deploy Server

Other Tools