Introduction
Send the input — a payment, a name, an ID document, a bank statement, an applicant — and get one decision your code can act on:
APPROVE,STEP_UPorDECLINE, with the score, the signals that fired and the typologies they point to.
Ward is Mandate Labs' decision model for fraud, AML, compliance and risk. Fraud and compliance teams usually stitch together a rules engine, a screening vendor, a document vendor and a spreadsheet of thresholds, then write glue code to turn each answer into an action. Ward answers all of those questions through one endpoint and one answer shape, so your code branches on one field.
input ──► POST /api/v1/decide ──► { decision, score, signals, typologies, result }
│
APPROVE → proceed STEP_UP → ask / review DECLINE → stop
Every answer says what it saw and what it could not see. A list that was not checked is reported as not_checked, never as clear; a component that could not run is a reason to review, never a pass.
Ward capabilities
Each capability is a decision type. Send it to POST /api/v1/decide with type, or let Ward infer the type from the input.
| Type | Answers | Typical input |
|---|---|---|
payment |
Should this payment go through? Agent or person, card, A2A or crypto | amount, merchant, card or agent context |
intent |
Is this AI agent's intended action within its mandate? | agent, session, intent, reasoning |
agent |
Can this AI agent be trusted right now? (KYA) | agent_id or DID |
screen |
Is this person or company on a sanctions, PEP or enforcement list? | name, date of birth, country |
document |
Is this ID document consistent and unaltered? | MRZ lines and/or image or PDF |
statement |
What AML and fraud risk does this account history show? | bank statements, card exports, alert files |
ato |
Was the account taken over before this disputed transaction? | disputed transaction + account logs |
credit |
Can this customer carry the obligation, from their statements? | statements + requested instalment |
merchant |
Is this merchant safe to onboard or keep? | business, owners, observed rates |
kyc |
Is this applicant verified? Identity, email, phone, document | applicant JSON |
Ward Ask answers follow-up questions about any result ("which counterparty matched a list?") from the result's own data.
One answer shape
{
"id": "dec_01JC4Z...",
"object": "decision",
"model": "ward-1.4.6",
"type": "screen",
"decision": "STEP_UP",
"score": 0.91,
"score_kind": "name_similarity",
"signals": ["SCREEN_POTENTIAL_MATCH"],
"typologies": [],
"needs": [],
"result": { "...": "the capability's full answer" },
"context": { "window_tokens": 1000000, "used_tokens": 412, "used_pct": 0.04 },
"latency_ms": 38.2
}
See The decision envelope for every field.
Next steps
POST /decide.
SDKsPython and JavaScript clients.
An index of these pages for coding agents is at /llms.txt.