Skip to main content
Glama

Answer a question Maplith asked

answer_question

Answer a question Maplith asked about your human's data. kind field_identity answers field_identity_unsure (each unrecognised column of a new export: accept Maplith's suggestion, or same_as a candidate, new, or other_table for the whole file); grain answers grain_unsure (the one or two columns that identify a row, or []); schema_dialect answers schema_dialect_unsure (postgresql or mysql); lineage_direction answers lineage_direction_unsure (which copied file holds the original); auto_detected confirms or corrects what agents' reports added (item_id from fieldwork_objects or work_done_in). get_task_context gives answer_with, the exact call: copy it. Answer only what you checked in your human's own systems, and say so as reason, or ask your human. A person's answer stands. A suggestion's confidence measures past correctness, never the model's certainty. Needs: a key that may act; grain, schema_dialect and lineage_direction apply only for an autonomous key that sees the whole map, or an admin's delegate key (it answers as the admin); field_identity and an auto_detected correction apply for an autonomous key and otherwise wait for a person; an auto_detected confirm applies for any key that may act and does not hand over only.

Input Schema

NameRequiredDescriptionDefault
kindYesfield_identity takes question_id and answers; grain signal_id, columns, reason; schema_dialect signal_id, dialect, reason; lineage_direction signal_id, original, reason; auto_detected items, reason.
itemsNoauto_detected: each item once.
reasonNoWhat you checked in the file or your human's own systems; no data values.
answersNofield_identity: each column once.
columnsNograin: one or two of the listed columns, or [].
dialectNoschema_dialect: what the file shows.
originalNolineage_direction: one of payload.options.
signal_idNoThe signal from list_signals or get_task_context.
question_idNofield_identity: from get_task_context's field_identity block.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed13 schema fields changed
    • changedInput schema / properties / answers / description
      Previous value: -"field_identity: one entry per column, each answered once: accept the suggestion, or name the answer (and the field_id with same_as)."New value: +"field_identity: each column once."
    • changedInput schema / properties / answers / items / properties / accept_suggestion / description
      Previous value: -"true to take Maplith's suggestion for this column."New value: +"true takes Maplith's suggestion."
    • changedInput schema / properties / answers / items / properties / answer / description
      Previous value: -"same_as: this column is the field named by field_id. new: a field the map has not seen. other_table: the whole file is another table than Maplith assumed (pass it alone, once)."New value: +"same_as: the field named by field_id. new: a field the map has not seen. other_table: the whole file is another table (alone, once)."
    • changedInput schema / properties / answers / items / properties / field_version_id / description
      Previous value: -"The column, as get_task_context lists it."New value: +"The column, as listed."
    • changedInput schema / properties / columns / description
      Previous value: -"grain: one or two of the columns the question lists, or [] for none."New value: +"grain: one or two of the listed columns, or []."
    • changedInput schema / properties / dialect / description
      Previous value: -"schema_dialect: the dialect the file shows, postgresql or mysql."New value: +"schema_dialect: what the file shows."
    • addedInput schema / properties / items
      Added value: +{
      +  "description": "auto_detected: each item once.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "answer": {
      +        "description": "not_right: not worked on (there). same_as: the type is the map object in same_as.",
      +        "enum": [
      +          "confirm",
      +          "not_right",
      +          "same_as"
      +        ],
      +        "type": "string"
      +      },
      +      "item_id": {
      +        "description": "From fieldwork_objects or work_done_in.",
      +        "type": "string"
      +      },
      +      "same_as": {
      +        "description": "With same_as: the map object.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "item_id",
      +      "answer"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / properties / kind / description
      Previous value: -"Which question: field_identity (a field_identity_unsure signal; pass question_id and answers), grain (grain_unsure; signal_id, columns, reason), schema_dialect (schema_dialect_unsure; signal_id, dialect, reason) or lineage_direction (lineage_direction_unsure; signal_id, original, reason)."New value: +"field_identity takes question_id and answers; grain signal_id, columns, reason; schema_dialect signal_id, dialect, reason; lineage_direction signal_id, original, reason; auto_detected items, reason."
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "field_identity",
      -  "grain",
      -  "schema_dialect",
      -  "lineage_direction"
      -]New value: +[
      +  "field_identity",
      +  "grain",
      +  "schema_dialect",
      +  "lineage_direction",
      +  "auto_detected"
      +]
    • changedInput schema / properties / original / description
      Previous value: -"lineage_direction: the file that holds the original, one of payload.options."New value: +"lineage_direction: one of payload.options."
    • changedInput schema / properties / question_id / description
      Previous value: -"field_identity: the question_id from get_task_context's field_identity block, or the signal's payload."New value: +"field_identity: from get_task_context's field_identity block."
    • changedInput schema / properties / reason / description
      Previous value: -"For grain, schema_dialect and lineage_direction: what you checked in the file or in your human's own systems; 10 to 500 characters, no data values."New value: +"What you checked in the file or your human's own systems; no data values."
    • changedInput schema / properties / signal_id / description
      Previous value: -"For grain, schema_dialect and lineage_direction: the signal from list_signals or get_task_context."New value: +"The signal from list_signals or get_task_context."
  2. Added

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses a substantial behavioural rule set: 'Needs: a key that may act', the distinction between an autonomous key that 'sees the whole map' and an admin's delegate key that 'answers as the admin', and which kinds are withheld for person confirmation. It also states that 'a person's answer stands' and that suggestion confidence reflects past correctness, not certainty. What it does not disclose is what happens to the question after answering or how failures surface.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, which is good, but the remainder is a single dense paragraph joined by semicolons that interleaves per-kind definitions, evidence rules, and key-permission rules. It is information-rich but hard to scan, and the critical permission rules are buried at the end where they are easy to miss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-parameter, multi-mode tool with no output schema, the description covers the essential ground: what each kind asks for, who may answer each kind, and the evidence standard for `reason`. The remaining gap is the outcome side — nothing says whether answering closes the signal, what the agent receives back, or what happens if the answer is wrong later.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 and the description only marginally exceeds it: it explains conceptually what each `kind` means (e.g. grain = 'the one or two columns that identify a row, or []', auto_detected = confirming what agents' reports added), which the schema mostly restates. Guidance on `accept_suggestion`, `same_as`, and `other_table` semantics leans on the schema's own enum descriptions rather than adding new depth.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource: answering a question that Maplith (the system) posed about the human's data, and the per-kind enumeration makes the scope of the tool unmistakable. It does not explicitly contrast itself with the sibling `ask` (the inverse direction) or explain when a question originates, so it falls just short of full sibling differentiation.

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?

It names, per `kind`, which pending uncertainty each answer resolves (field_identity_unsure, grain_unsure, schema_dialect_unsure, lineage_direction_unsure) and directs the agent to `get_task_context` for the exact `answer_with` call. The alternative path is also given: answer only from what was checked in the human's own systems, or 'ask your human'. What is missing is a clear statement of when not to answer at all versus delegating, but the context is otherwise explicit.

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