Skip to main content
Glama

FinBridge

Restore a Past Portfolio

restore_portfolio_snapshot
Destructive

Roll the stored portfolio back to a past snapshot from get_portfolio_history, replacing ALL current holdings and assets with that snapshot's content. Use this to undo a bad import_portfolio call. Omit snapshot_id to restore the snapshot immediately before the current state (undo the last change). This action is itself recorded as a new snapshot — history is append-only, so restoring is itself reversible the same way. Tell the user what was restored (get_portfolio afterwards shows it valued at current prices).

Input Schema

NameRequiredDescriptionDefault
snapshot_idNoSnapshot id from get_portfolio_history. Omit to restore the one immediately before the latest.

Output Schema

NameRequiredDescriptionDefault
errorNo
notesNo
assetsNo
holdingsNo
snapshotNo
data_as_ofNo
restored_fromNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / snapshot_id / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / snapshot_id / minimum
      Added value: +-9007199254740991
    • removedOutput schema / properties / assets / $ref
      Removed value: -"#/properties/restored_from"
    • addedOutput schema / properties / assets / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • changedOutput schema / properties / data_as_of / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {},
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / holdings / $ref
      Removed value: -"#/properties/restored_from"
    • addedOutput schema / properties / holdings / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • changedOutput schema / properties / snapshot / additionalProperties
      Previous value: -trueNew value: +{}
  2. Changed1 schema field changed
    • addedOutput schema / properties / data_as_of
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
  3. Added

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, and the description goes well beyond them: it says ALL current holdings and assets are replaced, that the restore is itself recorded as a new snapshot, and that history is append-only so the operation is reversible the same way. That reversal guarantee is the key behavioral fact an agent needs before invoking a destructive tool and is not derivable from the annotations.

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?

Five short sentences, front-loaded with the destructive scope before the guidance and the parameter default. Every sentence carries a distinct operational fact (scope, use case, default, reversibility, follow-up) with no restatement of the title or name.

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?

An output schema exists, so return values need no explanation, and the single optional parameter is fully covered. For a destructive, non-idempotent mutation the description supplies the scope of destruction, the reversal path, and the verification step — nothing material to safe invocation is missing.

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 100%, so the baseline is 3, but the description adds a practical gloss the schema lacks: omitting snapshot_id means 'undo the last change' relative to the current state, not merely 'the one before the latest'. It does not clarify the accepted id range or format beyond the schema, so it stops short of a 5.

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 and resource ('roll the stored portfolio back to a past snapshot') plus scope ('replacing ALL current holdings and assets'), and explicitly names the sibling source of snapshots (get_portfolio_history) and the action it undoes (import_portfolio). An agent can distinguish this from get_portfolio and import_portfolio without opening any schema.

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?

Gives an explicit use case ('undo a bad import_portfolio call') and the exact behavior of the optional parameter ('omit snapshot_id to restore the snapshot immediately before the current state'), which is a when-to-use rule in itself. It also tells the agent what to do after calling (get_portfolio to verify, tell the user what was restored).

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.