ask/engine
API

Overview

The REST surface behind everything — base URL, auth, and conventions.

Everything the MCP server does runs through this REST API, and everything here is also an MCP tool. The split is by session type: interactive agent sessions use MCP; the scripts, dashboards, and cron jobs those sessions produce use REST. The full surface is machine-readable as OpenAPI 3.1.

The base URL is https://silent-viper-157.convex.site. Authenticate with a bearer API key from your team settings — one key maps to one team, and AskEngine resolves the team from the key, so you never pass a team id in a path or body.

curl "https://silent-viper-157.convex.site/v1/signals" \  -H "Authorization: Bearer $ASKENGINE_API_KEY"

Three conventions hold across the API:

  • Envelope — a single item comes back as { data }; a list as { data, cursor }. Unwrap data.
  • Pagination — pass limit (150, default 20) and feed a response's cursor back for the next page. A null cursor means you've reached the end.
  • Errors — failures return { error: { code, message } }; branch on the stable code. Two are worth knowing beyond the usual HTTP statuses: invalid_transition (409 — a lifecycle action the object's current state doesn't allow, like deciding an already-decided recommendation) and rate_limited (429, carrying a retryAfterMs to wait before retrying).

One endpoint behaves differently: Ask composes a cited answer with an LLM server-side, so it responds in seconds rather than milliseconds and carries a tighter per-team rate limit than the reads.

Endpoint-by-endpoint schemas, parameters, and example requests live in the endpoint pages alongside this one, starting with List signals.