Skip to main content
Glama
Mipiti
by Mipiti

Edit Assumption

edit_assumption

Edits a threat-model assumption and creates a new model version, letting you update its description, linked controls, or exclusion predicate and receive the updated model.

Instructions

Edit an assumption. Creates a new model version. Returns {model, entities, ...}: the model's id, version and title, and entities.assumptions the assumption as it now stands.

Input Schema

NameRequiredDescriptionDefault
model_idYesID of the threat model.
descriptionNoNew description (omit to leave unchanged).
assumption_idYesID of the assumption to edit (e.g., "AS1").
linked_co_idsNoNew comma-separated CO IDs; replaces the existing linkage (omit to leave unchanged).
server_versionYes
clear_exclusionNoWhen True, removes the predicate entirely (the assumption becomes prose-only). Mutually exclusive with the exclusion_* params — if both are sent, the exclusion_* params win.
exclusion_co_idsNoComma-separated CO IDs the predicate matches explicitly; when non-empty, overrides the match fields. Supplying any exclusion_* param rewrites the whole predicate (unspecified fields default to "*").
exclusion_asset_idNo"*" or a concrete asset ID.
exclusion_attacker_idNoPredicate match — "*" wildcard or a concrete attacker ID.
exclusion_property_matchNo"C" | "I" | "A" | "U" | "*".
exclusion_attacker_vectorNoOne of "Network" | "Adjacent" | "Local" | "Physical" | "*".
exclusion_asset_component_idNo"*" or a concrete component ID.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changedv0.66.0
    • changedInput schema / properties / assumption_id / description
      Previous value: -"ID of the assumption (e.g., \"AS1\")."New value: +"ID of the assumption to edit (e.g., \"AS1\")."
    • changedInput schema / properties / clear_exclusion / description
      Previous value: -"When True, clears the predicate. Mutually\nexclusive with the exclusion_* params (those win if both\nare sent)."New value: +"When True, removes the predicate entirely (the\nassumption becomes prose-only). Mutually exclusive with the\nexclusion_* params — if both are sent, the exclusion_* params win."
    • changedInput schema / properties / description / description
      Previous value: -"New description."New value: +"New description (omit to leave unchanged)."
    • addedInput schema / properties / exclusion_asset_component_id / description
      Added value: +"\"*\" or a concrete component ID."
    • addedInput schema / properties / exclusion_asset_id / description
      Added value: +"\"*\" or a concrete asset ID."
    • addedInput schema / properties / exclusion_attacker_id / description
      Added value: +"Predicate match — \"*\" wildcard or a concrete\nattacker ID."
    • addedInput schema / properties / exclusion_attacker_vector / description
      Added value: +"One of \"Network\" | \"Adjacent\" | \"Local\" |\n\"Physical\" | \"*\"."
    • addedInput schema / properties / exclusion_co_ids / description
      Added value: +"Comma-separated CO IDs the predicate matches\nexplicitly; when non-empty, overrides the match fields. Supplying\nany exclusion_* param rewrites the whole predicate (unspecified\nfields default to \"*\")."
    • addedInput schema / properties / exclusion_property_match / description
      Added value: +"\"C\" | \"I\" | \"A\" | \"U\" | \"*\"."
    • changedInput schema / properties / linked_co_ids / description
      Previous value: -"New comma-separated CO IDs (replaces existing linkage)."New value: +"New comma-separated CO IDs; replaces the existing\nlinkage (omit to leave unchanged)."
  2. Addedv0.62.2
  3. Removedv0.62.0
  4. First observedv0.57.0

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, but it does disclose one genuinely important behavior: the edit creates a new model version rather than mutating in place. It does not cover permissions, validation failures, or undo (undo_model_change exists), so the disclosure is valuable but partial.

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 action and then the versioning side effect and return shape. No filler; only the reStructuredText markup backticks are slightly noisy.

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?

An output schema exists, so the return shape need not be explained, and the description still sketches it. However, for a 12-parameter mutation with subtle partial-update and predicate-rewrite semantics, the description says nothing about how omitted fields behave or the version-creation implications for concurrent callers, leaving it merely adequate.

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 92%, so the twelve parameters — including the tricky clear_exclusion vs exclusion_* precedence and the predicate-rewrite defaults — are already documented in the schema. The description adds no parameter meaning beyond that, which is exactly the baseline case.

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 ('Edit an assumption'), which cleanly separates it from add_assumption, remove_entity, and edit_trust_boundary in the sibling list. It doesn't explicitly contrast itself with adjacent tools like convert_assumption_to_controls, but the resource naming does most of the work.

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

Usage Guidelines2/5

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

There is no when-to-use guidance: nothing says to prefer edit_assumption over add_assumption for a new assumption, nor when to convert to controls instead. The only implicit cue is the word 'Edit', leaving routing decisions to inference.

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