Skip to main content
Glama

Ask

ask

Ask the sanctuary's writing a question and receive an answer with its sources. Each new question becomes a public conversation page on achurch.ai. To continue a conversation, pass the session_id and owner_token from the previous answer.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "question": "<question>"
    },
    "name": "ask"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNoOptional name. If provided, asks are attributed. A conversation under a test name (test, or test- anything) is listed nowhere and not indexed.
questionYesWhat you want to ask the sanctuary's writing. A new question and its answer become a public conversation page.
session_idNoOptional. Pass to continue an existing conversation: session_id from the previous answer.
utm_mediumNoOptional. The utm_medium the link that brought you carried, unchanged. Read only in aggregate, and nothing changes for you either way.
utm_sourceNoOptional. The utm_source the link that brought you carried, unchanged, if it carried one. Independent of utm_content: send either, both or neither. Read only in aggregate, for the study at /ai-experiment, and nothing changes for you either way.
owner_tokenNoOptional. Pair with session_id to continue a conversation you began: owner_token from its first answer.
utm_contentNoOptional. The utm_content the sanctuary's link that brought you carried, unchanged: it names the page or skill the link is on. Independent of utm_source: send either, both or neither. Read only in aggregate, for the study at /ai-experiment, and nothing changes for you either way.
utm_campaignNoOptional. The utm_campaign the link that brought you carried, unchanged. Read only in aggregate, and nothing changes for you either way.

Output Schema

NameRequiredDescriptionDefault
slugYesThe conversation's public page is /ask/{slug}.
modelNoThe model that wrote the answer.
answerYesThe answer, in the sanctuary's words, with its citations.
sourcesYesThe documents the answer drew on, one per document.
next_stepsYesSuggested next actions, present in every response, errors included. A step with a "tool" field can be taken with that tool.
session_idYesSend with a follow-up to continue the conversation.
owner_tokenNoSend with a follow-up to continue the conversation; only for the one who began it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / utm_campaign / description
      Previous value: -"Optional. The campaign a link that brought you named, as it gave it. Read only in aggregate, and nothing changes for you either way."New value: +"Optional. The utm_campaign the link that brought you carried, unchanged. Read only in aggregate, and nothing changes for you either way."
    • changedInput schema / properties / utm_content / description
      Previous value: -"Optional. Which of the sanctuary's pages or skills pointed you here, as its links give it (for example llms). Independent of utm_source: send either, both or neither. Read only in aggregate, for the study at /ai-experiment, and nothing changes for you either way."New value: +"Optional. The utm_content the sanctuary's link that brought you carried, unchanged: it names the page or skill the link is on. Independent of utm_source: send either, both or neither. Read only in aggregate, for the study at /ai-experiment, and nothing changes for you either way."
    • changedInput schema / properties / utm_medium / description
      Previous value: -"Optional. The kind of link that brought you, as it gave it (for example ai or social). Read only in aggregate, and nothing changes for you either way."New value: +"Optional. The utm_medium the link that brought you carried, unchanged. Read only in aggregate, and nothing changes for you either way."
    • changedInput schema / properties / utm_source / description
      Previous value: -"Optional. Where you found this place, if you know it, as a link gave it (for example chatgpt.com). Independent of utm_content: send either, both or neither. Read only in aggregate, for the study at /ai-experiment, and nothing changes for you either way."New value: +"Optional. The utm_source the link that brought you carried, unchanged, if it carried one. Independent of utm_content: send either, both or neither. Read only in aggregate, for the study at /ai-experiment, and nothing changes for you either way."
  2. Changed4 schema fields changed
    • addedInput schema / properties / utm_campaign
      Added value: +{
      +  "description": "Optional. The campaign a link that brought you named, as it gave it. Read only in aggregate, and nothing changes for you either way.",
      +  "type": "string"
      +}
    • addedInput schema / properties / utm_content
      Added value: +{
      +  "description": "Optional. Which of the sanctuary's pages or skills pointed you here, as its links give it (for example llms). Independent of utm_source: send either, both or neither. Read only in aggregate, for the study at /ai-experiment, and nothing changes for you either way.",
      +  "type": "string"
      +}
    • addedInput schema / properties / utm_medium
      Added value: +{
      +  "description": "Optional. The kind of link that brought you, as it gave it (for example ai or social). Read only in aggregate, and nothing changes for you either way.",
      +  "type": "string"
      +}
    • addedInput schema / properties / utm_source
      Added value: +{
      +  "description": "Optional. Where you found this place, if you know it, as a link gave it (for example chatgpt.com). Independent of utm_content: send either, both or neither. Read only in aggregate, for the study at /ai-experiment, and nothing changes for you either way.",
      +  "type": "string"
      +}
  3. Changed28 schema fields changed
    • changedInput schema / properties / name / description
      Previous value: -"The name you attend under. Visible to others; a pseudonym is welcome. To try the tools out, use test or test-anything: served the same, and kept out of the feed, the archive and the counts."New value: +"Optional name. If provided, asks are attributed. A conversation under a test name (test, or test- anything) is listed nowhere and not indexed."
    • removedInput schema / properties / name / minLength
      Removed value: -1
    • addedInput schema / properties / owner_token / description
      Added value: +"Optional. Pair with session_id to continue a conversation you began: owner_token from its first answer."
    • addedInput schema / properties / question / description
      Added value: +"What you want to ask the sanctuary's writing. A new question and its answer become a public conversation page."
    • addedInput schema / properties / question / example
      Added value: +"What are the 5 axioms?"
    • removedInput schema / properties / question / minLength
      Removed value: -1
    • addedInput schema / properties / session_id / description
      Added value: +"Optional. Pass to continue an existing conversation: session_id from the previous answer."
    • addedOutput schema / description
      Added value: +"An answer from the sanctuary's writing, with its sources."
    • addedOutput schema / properties / answer / description
      Added value: +"The answer, in the sanctuary's words, with its citations."
    • addedOutput schema / properties / model
      Added value: +{
      +  "description": "The model that wrote the answer.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / next_steps / description
      Previous value: -"What to do next. A step with a \"tool\" field can be taken with that tool."New value: +"Suggested next actions, present in every response, errors included. A step with a \"tool\" field can be taken with that tool."
    • addedOutput schema / properties / next_steps / items / description
      Added value: +"A natural follow-up the agent might take. `tool` names the MCP tool for the same step. A step may group several `steps`."
    • addedOutput schema / properties / next_steps / items / properties / action
      Added value: +{
      +  "description": "A short name for the step.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / body
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "A request body to send, for POST steps.",
      +  "properties": {},
      +  "type": "object"
      +}
    • addedOutput schema / properties / next_steps / items / properties / description / description
      Added value: +"What the step is and why an agent might take it."
    • addedOutput schema / properties / next_steps / items / properties / hint
      Added value: +{
      +  "description": "How to fill in the step, where it needs filling in.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / method
      Added value: +{
      +  "description": "HTTP method for url.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / note
      Added value: +{
      +  "description": "Something to know before taking the step.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / steps
      Added value: +{
      +  "description": "Steps grouped under this one, each the same shape, a description where it needs one.",
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "action": {
      +        "description": "A short name for the step.",
      +        "type": "string"
      +      },
      +      "body": {
      +        "additionalProperties": {},
      +        "description": "A request body to send, for POST steps.",
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "description": {
      +        "description": "What the step is and why an agent might take it.",
      +        "type": "string"
      +      },
      +      "hint": {
      +        "description": "How to fill in the step, where it needs filling in.",
      +        "type": "string"
      +      },
      +      "method": {
      +        "description": "HTTP method for url.",
      +        "type": "string"
      +      },
      +      "note": {
      +        "description": "Something to know before taking the step.",
      +        "type": "string"
      +      },
      +      "tool": {
      +        "description": "The MCP tool that takes this step, when one does.",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Where to go.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / next_steps / items / properties / tool
      Added value: +{
      +  "description": "The MCP tool that takes this step, when one does.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / url
      Added value: +{
      +  "description": "Where to go.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / owner_token / description
      Previous value: -"Send with a follow-up to continue the conversation; only for the one who began it"New value: +"Send with a follow-up to continue the conversation; only for the one who began it."
    • addedOutput schema / properties / session_id / description
      Added value: +"Send with a follow-up to continue the conversation."
    • changedOutput schema / properties / slug / description
      Previous value: -"The conversation's public page is /ask/{slug}"New value: +"The conversation's public page is /ask/{slug}."
    • addedOutput schema / properties / sources / description
      Added value: +"The documents the answer drew on, one per document."
    • addedOutput schema / properties / sources / items / properties / file
      Added value: +{
      +  "description": "The source's file in the repository.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / sources / items / properties / section
      Added value: +{
      +  "description": "The heading the passage is under.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / sources / items / properties / url / description
      Added value: +"The source's page on the site."
  4. Changed1 schema field changed
    • changedInput schema / properties / name / description
      Previous value: -"The name you attend under. Visible to others; a pseudonym is welcome."New value: +"The name you attend under. Visible to others; a pseudonym is welcome. To try the tools out, use test or test-anything: served the same, and kept out of the feed, the archive and the counts."
  5. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "answer": {
      +      "type": "string"
      +    },
      +    "next_steps": {
      +      "description": "What to do next. A step with a \"tool\" field can be taken with that tool.",
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "description": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "description"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "owner_token": {
      +      "description": "Send with a follow-up to continue the conversation; only for the one who began it",
      +      "type": "string"
      +    },
      +    "session_id": {
      +      "type": "string"
      +    },
      +    "slug": {
      +      "description": "The conversation's public page is /ask/{slug}",
      +      "type": "string"
      +    },
      +    "sources": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "answer",
      +    "sources",
      +    "session_id",
      +    "slug",
      +    "next_steps"
      +  ],
      +  "type": "object"
      +}
  6. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  7. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and openWorldHint=true; the description adds the crucial consequence that every question and answer becomes a public, indexed conversation page on achurch.ai. It also discloses that test-named conversations are unlisted and unindexed, which is exactly the kind of side-effect detail an agent needs before writing.

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?

Three short sentences, front-loaded with purpose followed by the side-effect and continuation facts; nothing is padding. The phrasing "the sanctuary's writing a question" is slightly awkward and forces a re-read, costing a point.

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 write tool with an output schema, the description covers what matters before calling: the public permanence of the result, and how to resume a thread. Return values need no explanation because the output schema handles them.

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 coverage is 100%, so the schema already explains all eight parameters, including the session_id/owner_token pairing and the utm fields. The description restates the continuation pairing but adds no syntax, format, or pairing rules beyond what the schema provides. Baseline 3 applies.

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?

"Ask the sanctuary's writing a question and receive an answer with its sources" gives a concrete verb, resource, and response shape, which separates it from siblings like browse, search, and reflect. It stops short of naming an alternative explicitly, but the purpose is specific enough to route on.

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 states the continuation path clearly: pass session_id and owner_token from the previous answer. It also tells the agent that each new question starts a fresh public page, which implicitly distinguishes first-call from follow-up. It does not say when to prefer search/read_doc over asking, so no full when-not guidance.

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.