Skip to main content
Glama

save_insights

TRIGGER: Whenever you surface a problem or opportunity from the data, OFFER to save it as an insight and confirm before writing — don't auto-save. Make the offer concrete and inline: 'Want me to save this as an insight to track?'. Findings vary in significance; the user decides what belongs on the checklist. Insights are OBSERVATIONS (findings to act on) — when a fix is actually SHIPPED, that's a separate thing: call set_intervention (it auto-flips the linked insight to 'addressed' and owns the before/after verdict). Don't model 'fix applied' or '30-day check' as insights. Call this AFTER generating recommendations from get_insights data, OR mid-conversation when the user confirms. Can save any number of insights. To replace the existing checklist (instead of appending), set replace: true. To update a single existing insight, use update_insight with the insight's id instead. parentInsightId/threadId group related FINDINGS as one story (finding → re-finding → superseded). RESPONSE: returns insights: [{insightId, title, category, priority, status, threadId, parentInsightId}] in the same order as the input — use those insightIds directly in subsequent record_metric_snapshot / set_intervention(linkedInsightIds) / update_insight calls (no round-trip through get_insights needed).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
_offsetNoPagination offset. If a response includes _pagination.hasMore=true, use _offset to fetch the next page.
replaceNoSet to true to replace all active (non-completed) insights. Default: false (appends).
insightsYesArray of business insights to save (any number)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added
  2. Removed
  3. Added

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses the confirm-before-write requirement ('OFFER... confirm before writing — don't auto-save'), append vs replace semantics via replace:true, thread/parent grouping behavior, that any number can be saved, and that the response returns insightIds in input order usable downstream. This is behavior beyond what the schema states.

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?

Long but front-loaded: the TRIGGER and the core observation-vs-intervention distinction come first, then edge cases (replace, update, grouping), then the RESPONSE contract. Every sentence earns its place by routing behavior an agent would otherwise get wrong.

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?

No output schema and no annotations, so the description must supply workflow context — and it does: trigger, confirmation etiquette, replacement semantics, single-update delegation, insight-vs-intervention separation, grouping model, and the returned payload shape. Nothing material for correct invocation is missing.

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?

Schema coverage is already 100%, but the description adds cross-parameter meaning: replace:true replaces the existing checklist instead of appending, and parentInsightId/threadId group related findings as one story (finding → re-finding → superseded). It also explains why returned insightIds remove a round-trip through get_insights.

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 (save insights) and distinguishes the concept sharply: 'Insights are OBSERVATIONS (findings to act on)' vs set_intervention for shipped fixes. It explicitly names siblings (set_intervention, update_insight, get_insights, record_metric_snapshot), so an agent can route without opening schemas.

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 explicit trigger ('whenever you surface a problem or opportunity'), timing ('AFTER generating recommendations from get_insights data, OR mid-conversation when the user confirms'), an exclusion (don't model 'fix applied' or '30-day check' as insights), and directs single updates to update_insight and full replacement to replace:true.

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