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"

Four conventions hold across the API:

  • Envelope — a single item comes back as { data }; a list as { data, cursor }. Unwrap data.
  • Pagination — pass limit (1–50, 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, mirrored in a Retry-After header).
  • Compatibility — the API evolves additively: new endpoints, fields, and enum values may appear, but existing ones keep their names, types, and meaning. If a breaking change ever becomes unavoidable, it will be announced on this page ahead of time with a migration window.

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.