---
title: "MCP tool: ask_octopus"
description: "Name, inputs, output and limits of the one public MCP tool."
url: "https://docs.octo.ad/reference/mcp-ask-octopus/"
id: "reference/mcp-ask-octopus"
type: "reference"
audience: "developer"
dateModified: "2026-11-06"
productArea: "integrations"
surface: "phone and MCP"
keywords: ["MCP", "ask_octopus"]
---

# MCP tool: ask_octopus

> Name, inputs, output and limits of the one public MCP tool.

## Endpoint

| Field | Value |
|---|---|
| Address | `https://octo.ad/mcp` |
| Transport | streamable HTTP (JSON-RPC over POST) |
| Authentication | none |
| Descriptor | `https://octo.ad/.well-known/mcp.json` |
| Methods | `initialize`, `tools/list`, `tools/call`, `ping` |

## Tool

| Input | Type | Required | Meaning |
|---|---|---|---|
| `message` | string | yes | Your question for the concierge. |
| `session_id` | string | no | Pass back the value from the last answer to continue the same conversation. |

## Output

| Field | Where | Meaning |
|---|---|---|
| `content[0].text` | result | The answer, as text. |
| `structuredContent.answer` | result | The same answer. |
| `structuredContent.follow_up` | result | A suggested next question or step. |
| `structuredContent.session_id` | result | Send it back as `session_id` to continue. |
| `structuredContent.status` | result | A state for the conversation. Treat it as opaque; its values are not published. |
| `isError` | result | `true` when the question could not be answered, with the reason in `content[0].text`. |

## Limits

- It answers about OCTOPUS from public material. It exposes no customer data and no internal graph.
- A message longer than 2,000 characters is refused.
- A daily limit applies. Past it, the answer says the limit was reached.
- A plain `GET` on the address returns 405.
