Covered in full in Non-custodial execution. Not deployed to any network as of this writing — every contract address environment variable ships empty. dormant: true is the expected response until you deploy ScopedExecutor yourself.

GET /execute.json

Public configuration for building a signature request — a contract address, a chain id, and the contract’s own constants. Nothing here is a secret; that’s deliberate, since a config endpoint that needed to hide something would mean the design was wrong.

The relay service

A separate process (apps/api/execution/server.ts) that holds the only key Scienter itself operates — one that can pay gas and pick a route, and structurally cannot sign for a user, store an order, or fetch a quote. You run this yourself; it isn’t hosted.

GET /health

POST /preflight

Dry-run a signed order against on-chain state before spending gas.
Returns 200 with {"ok": true, ...} or 409 with {"ok": false, "problems": [...]}.

POST /relay

Submits a preflighted, signed order on-chain with relayer-supplied router calldata.
All uint256 fields (amountIn, quotedAmountOut, sizeUSD, expiry, nonce) cross the wire as decimal strings, not JS numbers — a silently truncated amountIn produces a signature mismatch, not a wrong trade amount, so the server rejects anything that isn’t a string here.
Scienter publishes impersonal market signals of general and regular circulation. Nothing here is investment, legal, or tax advice, or a recommendation to buy, sell, or hold any asset. Scienter is not a registered investment adviser or broker-dealer. Trading digital assets can result in the total loss of your funds — see Disclaimers for the full text.