Skip to main content
Glama

Restore record

restore_record
DestructiveIdempotent

Bring back a soft-deleted contact or account by object_type + id — the undo of delete_record. Both come back whole: a contact with its account links and touch / note / task history intact (delete retains them), an account with its contacts, opportunities, subscriptions, touches, notes and tasks linked again (they kept their account_id). Only contact and account restore (other objects are re-created). Find a deleted record with get_record(include_archived:true) or the delete result's id. A record that isn't deleted, or an unknown id, is refused with the reason and nothing changes; the same scope as delete_record decides who may restore. Returns the restored record's full state with restored:true.

When to use: The user deleted a contact or account by mistake and wants it back.

Example: Restore the contact I deleted by mistake.

Input Schema

NameRequiredDescriptionDefault
idYesThe deleted record's id — a uuid from the delete result or a get_record read with include_archived. A uuid.
object_typeYesWhich kind of deleted record to bring back: contact or account. One of: contact | account.

Output Schema

NameRequiredDescriptionDefault
recordNo
restoredNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
  2. Changed4 schema fields changed
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • removedOutput schema / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / record / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / record / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the mutation profile (readOnlyHint=false, destructiveHint=true, idempotentHint=true), and the description adds substantial context beyond them: exactly what is restored (account links, touch/note/task history, opportunities, subscriptions), that non-deleted or unknown ids are refused with a reason and no changes occur, that authorization mirrors delete_record's scope, and that the response carries restored:true.

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?

Front-loads the verb, resource, and undo relationship, then layers behavior, then usage and an example — a sound progression. It runs long and the 'When to use' line partially restates the opening sentence, which is mild redundancy but not padding.

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-value explanation is optional, yet the description still notes the restored:true marker. Combined with the restore semantics, refusal behavior, and authorization scope, an agent has everything needed to call this correctly.

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% and the schema already documents both params, so the baseline is 3. The description adds meaning beyond it by stating the id comes from the delete result or a get_record read with include_archived, and that only contact/account are valid restore targets while other objects are re-created.

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?

Names a specific verb and resource ('bring back a soft-deleted contact or account') and explicitly frames itself as 'the undo of delete_record', which distinguishes it from delete_record and archive_object in the sibling list. It also scopes the tool to two object types, so an agent knows immediately whether it applies.

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?

Provides an explicit 'When to use' trigger (user deleted a contact/account by mistake), names the retrieval alternative for finding candidates (get_record with include_archived:true, or the delete result's id), and states the fallback that other objects are re-created rather than 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.

Resources