Skip to main content
Glama

save_target

Store a merchant's GOAL for a metric over a calendar period ('we need £80k this month'). TRIGGER: whenever the user states a target/goal/budget for a metric. This saves the merchant's own target in our DB (NOT a write-back to any connected tool). Pacing (are we on track?) is computed later on read by get_targets — never stored. Money metrics (revenue, aov, ltv, …) MUST be scoped to one store via store because the workspace can run multiple currencies; pass targetValue in MAJOR units (80000 for £80k). Non-money metrics (orders, cvr, refund_rate, …) may be workspace-wide (omit store). Setting a target for a slot that already has one supersedes the old target (history is kept). After saving, tell the user in one line what you logged.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNoOptional free-text context, e.g. 'stretch goal after the BFCM push'.
storeNoSub-store key (e.g. 'acme-store-us'). REQUIRED for money metrics. Omit for a workspace-wide non-money target.
metricYesCanonical metric key, e.g. 'revenue', 'orders', 'aov', 'cvr', 'refund_rate'. Validated against the metric registry.
periodNoCalendar period the target is for. Defaults to 'month'. The target attaches to the CURRENT period of this type.
_offsetNoPagination offset. If a response includes _pagination.hasMore=true, use _offset to fetch the next page.
targetValueYesThe goal value in MAJOR currency units for money metrics (80000 = £80k), or the raw value for counts/percentages (1200 orders, 2.5 for 2.5% cvr).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added
  2. Removed
  3. Added

TDQS

A4.8/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 well: it discloses that data is stored in our own DB (not a connected-tool write-back), that pacing is intentionally not persisted, that an existing slot's target is superseded with history retained, and that it should confirm in one line afterward. These are rich, non-obvious behavioral traits.

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 purpose then constraint/trigger detail in dense, mostly non-redundant sentences. It is on the longer side, but nearly every clause (currency rule, storage location, supersede behavior, confirmation step) earns its place; minor tightening is possible.

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?

For a mutation tool with no annotations and no output schema, the description covers what is stored, what is not stored, currency/store constraints, unit semantics, and the post-save expectation. Nothing essential for correct 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 real meaning: money metrics MUST be scoped via `store` (currency reason), targetValue is in MAJOR units (80000 = £80k), and period attaches to the CURRENT period of that type. It only omits the odd `_offset` parameter, which the schema itself covers.

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+resource ('Store a merchant's GOAL for a metric over a calendar period') with a concrete example. It explicitly distinguishes itself from the read-side sibling get_targets by noting pacing is never stored here. An agent can tell exactly what this does versus get_targets.

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 TRIGGER ('whenever the user states a target/goal/budget for a metric') and clarifies the read counterpart ('pacing ... computed later on read by get_targets'). It also notes this is not a write-back to a connected tool, ruling out a plausible misinterpretation.

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