Ask agent

Chord's analyst over the Arc index and the router — 40+ tools (trending, a token's flow, holders and risk, support and resistance, top traders on a token, a wallet's PnL and trades, largest prints, launches, depth, a bridge quote, read-only SQL over the index). Returns the answer, source links, an optional route card, tables and charts the analysis produced, and a report when one was built. It analyses: a plan (zones, tranches, an exit, the level where the idea is wrong) is written only when the question asks for one, and is illustrative, with its assumptions stated.

Layout: text is the whole answer on its own. The optional fields shape, parts, details, followUpKinds and focus say how the chat lays it out: parts is the same answer in order, with the tables and charts of viz placed inside the text (in text a placed table is written out as a Markdown table), and details is further depth the chat folds, which text does not repeat. A client that ignores them loses nothing of the answer.

Auth: a developer API key (X-API-Key) or a Google session bearer. Metered per key per day against the deployment's token budget; 8 questions a minute per caller.

Agents: send "stream": false for one JSON answer (5–40 s). Without it the response is text/event-stream with status events (which tool is running), step events (a lookup finished, with the chain it read), one answer event, then done.

post/ask

Request

  • Base URL: https://api.getchord.xyz/v1
  • URL: https://api.getchord.xyz/v1/ask
  • Auth: one of:
    • API key in header X-API-Key
    • HTTP bearer

Request body

questionstring required

May be empty when images is set.

streamboolean

false = one JSON response instead of SSE.

walletstring

The caller's wallet, so "my PnL" resolves.

mode'quick' | 'deep'

How long an answer to write. quick: the shortest form (the verdict, its claim, at most three rows of evidence, 120 words at most), faster. deep: a judgement or an explanation comes back as a full research note (shape: "report"), any other answer with a longer folded details. Omitted: the length the question calls for. Any other value is ignored.

imagesstring[]

Up to 4 ids from POST /v1/ask/image (your own, 30 days). The analyst reads each image — chart, positions, a swap or wallet screenshot — before it answers, and can zoom into one.

Response

With stream: false: the whole answer. Otherwise text/event-stream.

textstring

The answer, Markdown, complete on its own: a table the answer placed is written out in it (its first 8 rows and 6 columns). details is not repeated here.

quoteobject nullable

A route card when the question implied a trade: the two tokens, the amounts in whole tokens, the venues, price impact, fee and a link to the trade on Chord. A preview, not a /v1/quote response: /v1/swap needs a fresh /v1/quote.

artifactobject nullable

The token the answer is about: its stats, where volume traded (support, resistance, VWAP), a report link when one was built.

walletArtifactobject nullable
vizobject[]
toolsUsedstring[]

Every tool called, by name. One tool serves several chains: steps[].chain says which chain each lookup read (not on a deep or researched answer, whose steps are its research parts).

tokensinteger

Model tokens spent.

followUpsstring[]

Up to three next questions: one that goes deeper, one that widens, one action (an alert, a chart, a plan).

assetsobject[]
shape'fact' | 'explain' | 'brief' | 'board' | 'why' | 'overview' | 'compare' | 'post' | 'do' | 'report' | 'auto'

The kind of answer the question got: a single fact, an explanation, a call with its evidence (brief), a ranked list (board), why something moves, a market overview, a comparison, something to post, something to do on Chord, a full report, or auto when nothing matched.

followUpKindsstring[]

Parallel to followUps: alert = it asks for an alert, deeper = it goes deeper into this answer, ask = any other question.

focusinteger nullable

Index into assets of the one asset the answer is about, when there is one.

Changes