Skip to main content
Glama
Unilytics MCP Server

Unilytics MCP Server

Official

answer_context_gap

Save an answer to a client project's Context gap as a sourced draft, so the gap reads answered for consultant review before publishing.

Instructions

Save the answer to one of a client project's Context gaps as a draft of the Context record the gap is about (for example Audience › Ideal customer profile), with the sources it comes from. The gap then reads answered. The draft waits on the project's Context page, where the consultant publishes or discards it; publishing resolves the gap. The published Context stays unchanged until then. This tool doesn't publish, discard or delete.

Use when the user answers a gap's question, for example while going through list_context_gaps with them.

`body` is the record's whole text, written from the answer. Every answer cites at least one source: the user's own
words (`user_statements`, recorded as quotes reported by the AI, not verified) and/or Knowledge Base documents
(`kb_sources`, each with the content_hash kb_get_document returned, which is refused once the document has
changed). A record that already has a draft waiting for review takes no new draft, except one that replaces this
connection's own earlier draft.

Args:
    project_id: The project (from list_projects()).
    gap_id: The gap's gap_id from list_context_gaps.
    body: The record's full text, in Markdown.
    published_revision_number: The gap's published_revision_number from list_context_gaps (null for a `missing`
        gap). A record published again since is refused.
    title: Optional record title. Default: the current title, or the context type's name for a new record.
    kb_sources: Knowledge Base documents the answer comes from: [{document_id, content_hash}].
    user_statements: The user's own words the answer comes from, quoted exactly.
    replace_draft_number: The draft_number an earlier call returned (or the gap's answer.draft_number), to replace
        that draft with this one.
    proposal_id: Optional UUID for this answer. A repeat with the same proposal_id and arguments returns the saved
        draft instead of saving another; an OUTCOME_UNKNOWN error names the one it used.

[Provider: Unilytics]

Input Schema

NameRequiredDescriptionDefault
bodyYes
titleNo
gap_idYes
kb_sourcesNo
project_idYes
proposal_idNo
user_statementsNo
replace_draft_numberNo
published_revision_numberYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only say it is a non-read-only, non-destructive, non-idempotent write; the description goes far beyond that by disclosing the resulting state ('The gap then reads `answered`'), that the published Context 'stays unchanged until then', and the exact refusal conditions (a record that already has a waiting draft, a stale published_revision_number, a content_hash refused once the document changed). It also explains the proposal_id replay path, which is meaningful nuance given idempotentHint=false — conditional replay, not a contradiction.

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-loaded with purpose, then when-to-use, then source/draft rules, then an Args block — every section is findable. Mild redundancy: the prose paragraph already explains that every answer cites user_statements and kb_sources, and the Args block repeats the same definitions, so a few lines could be trimmed without losing meaning.

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 nine-parameter mutation tool with no output schema and no annotation coverage of failure modes, the description supplies the state transition, the source-citation requirement, all refusal conditions, and the replay/idempotency escape hatch. Nothing an agent needs to call this correctly or recover from a refusal appears to be 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 description coverage is 0%, so the description carries the full burden, and it documents all nine parameters, including provenance for each value ('gap_id from list_context_gaps', 'project_id from list_projects()', 'content_hash kb_get_document returned'). It adds genuine semantics beyond types: `body` is the record's whole text in Markdown, `published_revision_number` is null for a `missing` gap, and `replace_draft_number` must come from an earlier call.

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 the answer to ... a Context gap as a draft of the Context record the gap is about') and names the concrete example (Audience › Ideal customer profile). It immediately distinguishes itself from the publishing step by saying the draft 'waits on the project's Context page, where the consultant publishes or discards it'.

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

Usage Guidelines4/5

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

Gives explicit trigger context ('Use when the user answers a gap's question, for example while going through list_context_gaps with them') and an explicit scope exclusion ('This tool doesn't publish, discard or delete'), which routes the agent away from the publish/discard tools. It does not explicitly contrast with the sibling propose_context_record, so the alternative-selection guidance is not fully closed.

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