Skip to content

Search these docs from your AI tool

  • Antigravity
    {
      "mcpServers": {
        "edisyl-docs": {
          "serverUrl": "https://docs.edisyl.com/mcp"
        }
      }
    }
  • Claude CodeCLI
    claude mcp add edisyl-docs https://docs.edisyl.com/mcp --transport http --scope user
  • CodexCLI
    codex mcp add --url https://docs.edisyl.com/mcp edisyl-docs
  • Cursor
    {
      "mcpServers": {
        "edisyl-docs": {
          "type": "http",
          "url": "https://docs.edisyl.com/mcp"
        }
      }
    }
  • Gemini CLI
    gemini mcp add --transport http edisyl-docs https://docs.edisyl.com/mcp
  • Goose
    {
      "extensions": {
        "edisyl-docs": {
          "enabled": true,
          "name": "edisyl-docs",
          "type": "streamable_http",
          "uri": "https://docs.edisyl.com/mcp",
          "envs": {},
          "env_keys": [],
          "headers": {},
          "description": "",
          "timeout": 300,
          "bundled": null,
          "available_tools": []
        }
      }
    }
  • JetBrains AI Assistant
    {
      "mcpServers": {
        "edisyl-docs": {
          "type": "http",
          "url": "https://docs.edisyl.com/mcp"
        }
      }
    }

    Paste into Settings → Tools → AI Assistant → Model Context Protocol → Add → As JSON. Direct file writing isn’t supported — JetBrains stores this per-version as XML.

  • Junie (JetBrains)
    {
      "mcpServers": {
        "edisyl-docs": {
          "url": "https://docs.edisyl.com/mcp"
        }
      }
    }
  • OpenCode
    {
      "mcp": {
        "edisyl-docs": {
          "type": "remote",
          "url": "https://docs.edisyl.com/mcp"
        }
      }
    }
  • VS CodeCLI
    code --add-mcp '{"name":"edisyl-docs","type":"http","url":"https://docs.edisyl.com/mcp"}'
  • Windsurf
    {
      "mcpServers": {
        "edisyl-docs": {
          "serverUrl": "https://docs.edisyl.com/mcp"
        }
      }
    }

    Supports both stdio and native HTTP connections.

Ask

You ask one question in natural language and get one combined answer with citations. The answer draws on the pack’s knowledge, connections, and data sources. You don’t choose between data and knowledge, and the pack doesn’t give you SQL to read.

ask answers a question over one pack’s scope and returns it as an Action.

Input Type Required Meaning
packId string Yes The pack’s id or slug, from list_packs.
question string Yes The user’s question, word for word. Known questions are matched by their wording. A reworded question does not match.
wait boolean No true waits up to about 55 seconds for the Action to stop running. false returns the Action as soon as it is created. The tool description gives the default for the connection.
idempotencyKey string No A key you choose for this attempt, up to 200 characters. If you retry with the same key, you get back the Action the first attempt created, not a new one.

Returns the Action with its actionId and status. A succeeded ask has the answer in output.answer with what it cites. An answer based on a query includes its rows in output.results, one entry per result the answer states. An answer based on a figure lists it in output.images.

A hard question can take longer than the wait and come back queued or running. This is normal. Call action_get with the actionId and waitSeconds (up to 55), and repeat until the status is final. declined is a deliberate refusal. error.message gives the reason.

Permission: any org member can ask the packs they can read.

“Ask the growth-metrics pack how many active wallets we had last week.”

An ask ends with the same statuses as every Action. See Actions for the full lifecycle. An ask can also stop as waiting with a batch of clarifying questions.

ask does not make up answers. If a decline mentions a missing definition, it is a knowledge-miss. Fix it with teach. If a decline says it can’t find or resolve data (“no rows”, “couldn’t resolve”), it is a data-miss. Fix it with task. See Improving answers.

When the pack cannot decide something by itself, the Action stops as waiting. It holds a batch of questions in waitingOn.request.questions. Each question has an id, a prompt, the options it allows (each with its own id), and whether free text is accepted. The answers must be the user’s own choices.

The assistant calls ask again, with your answer added to the question. It does not keep checking a waiting Action.

Input Type Required Meaning
packId string Yes The same pack.
question string Yes The original question, with only the user’s answer added to it.
wait boolean No As for ask.
idempotencyKey string No A new key for this attempt. A retried call with this key returns the Action this attempt created.

Returns the Action, as for ask.

Permission: the same as ask: read access to the pack.

“I meant wallets that traded, not wallets that signed in.”

The explanation shows:

  • What to notice first, such as a period that falls outside the data.
  • How each phrase of the question was read, and the field it became.
  • The assumptions the pack made, and the gaps it could not fill.
  • Each query it ran, with its SQL.
  • The governed claims it relied on, quoted from their documents.
  • The steps that ran, with their timings.

Only an ask on a pack that runs the current ask pipeline can be explained. For an earlier ask, the request is refused with a message that explains this.

explain_answer explains one ask. The assistant calls it when you ask why it gave an answer or you doubt an answer. It does not call it after every answer.

Input Type Required Meaning
actionId string (UUID) Yes The actionId of the ask to explain.

Returns the explanation, starting with its notices, and a url to the full page in edisyl. The assistant shows you the notices first and gives you the url.

“Why did it say 4,210 active wallets? That looks high.”

CLI only

An answer based on a query shows some of its rows next to the text. ask-rows reads all of them, up to the query’s row cap. Over MCP, an ask returns the rows it shows in output.results.

Terminal window
edisyl ask-rows <action-id> # every result the answer carried
edisyl ask-rows <action-id> <query-run-id> --json # one result

Without a query-run id, it reads every result in the answer, in the order the answer gives them. To find the query-run ids, read the answer’s results with edisyl action get <action-id> --json. A query-run id that the Action did not run returns not found. Anyone who can read the Action’s pack can read its rows. With --json, it prints {"actionId": "…", "results": [ … ]}. Each result has its columns, rows, rowCount, capped and truncated.

An answer based on a figure lists it under “Figures”. Download it with edisyl figures get.

Report incorrect code

Please provide a detailed description of the incorrect code.