Skip to main content
Glama
Mipiti
by Mipiti

get_controls

Retrieve implementation controls for a threat model, listing required controls or fetching a single control by ID. Read-only; automatically generates controls on first list if none exist.

Instructions

Get implementation controls for a threat model — list or single-control detail. Read-only (with one list-mode side effect, below).

Two modes, selected by whether control_id is set:

  • List mode (control_id omitted) — returns the controls that should be implemented to satisfy the model's control objectives, as {"controls": [...], "total": N, "returned": M}. One side effect: if controls have never been generated for this model, the first call triggers generation. Generation may finish inline or continue in the background — if results look incomplete, poll get_control_generation_status and re-read once it reports complete. The filters (status, co_id, component_id), pagination (offset/limit), and the include_deleted / include_orphaned / summary_only toggles apply only in this mode. By default list mode excludes ORPHANED controls (controls whose every mapped CO is tombstoned because its asset/attacker pair was removed in a later version); pass include_orphaned=True to include them — each returned control carries a boolean orphaned field so callers can render the distinction.

  • Detail mode (control_id set) — returns a single control directly (NOT wrapped in an array) with verified-status enrichment and an orphaned flag derived from the live CO set. 404 if the control doesn't exist on the requested version. Pass version to read the control as of a specific model version. The list-mode filters, pagination, and toggles are ignored in this mode.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
co_idNoList-mode filter — control objective ID.
limitNoList mode — max controls to return (0 = all).
offsetNoList mode — skip the first N controls (pagination).
statusNoList-mode filter — "implemented", "not_implemented", or "verified".
versionNoDetail mode only — model version to read the control from. 0 (default) uses the latest. Ignored in list mode.
model_idYesID of the threat model.
control_idNoIf set, detail mode — return this one control's full record directly (e.g. ``CTL-12``). If omitted, list mode.
component_idNoList-mode filter — component ID (e.g., "CMP1").
summary_onlyNoList mode — if True, returns only id, description, status, assertion_count, and assumed_by per control (much smaller response).
server_versionYes
include_deletedNoList mode — include soft-deleted controls (default False).
include_orphanedNoList mode — include controls mapped only to tombstoned COs (default False).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior5/5

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

With no annotations, the description carries full burden for behavioral disclosure. It explicitly reveals a non-obvious side effect: if controls have never been generated, the first list-mode call triggers generation, possibly continuing in the background. It also describes response shapes, 404 behavior in detail mode, default exclusion of orphaned controls, and the orphaned boolean flag. This is thorough and honest for a 'get' tool.

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?

The description is lengthy but well-structured with clear mode breakdowns. It is front-loaded with purpose and read-only note, then uses labeled paragraphs (List mode, Detail mode) to organize complex information. Every sentence contributes operational value, and the text avoids fluff or repetition.

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 the tool's complexity (two modes, 12 parameters, side effects), the description is remarkably complete. It covers mode selection, parameter applicability, response format, error behavior, versioning, and the orphaned-control concept. The presence of an output schema means return values needn't be explained in detail, and the description wisely focuses on operational context.

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?

Although schema coverage is high (92%), the description adds significant meaning beyond individual parameter definitions. It explains that control_id switches between modes, that list-mode filters/pagination/toggles are ignored in detail mode, and that include_orphaned=False defaults to excluding orphaned controls. This cross-parameter behavioral context is not present in the schema and substantially aids correct invocation.

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 clearly states the tool's purpose: 'Get implementation controls for a threat model — list or single-control detail.' It specifies the resource (controls), the verb (get), and distinguishes two modes (list vs. detail) with specific triggers (control_id omitted vs. set). This differentiates it from sibling tools like update_control_status or delete_control, which are clearly for mutations.

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 provides clear context on when to use each mode: 'List mode (control_id omitted)' and 'Detail mode (control_id set).' It also explains which parameters apply to which mode and instructs polling get_control_generation_status if results look incomplete. However, it does not explicitly contrast this tool with alternative retrieval tools (e.g., list_effective_control_objectives), so it lacks explicit 'when-not-to-use' guidance.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mipiti/mipiti-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server