Technical Docs

Record spec v1.2 defaultv1.3 feature-flaggedLast updated August 2026

The operating manual for agent authorization.

FLINT verifies agent financial authority before settlement and emits a signed verification record that shows what was checked, decided, and preserved.

These docs define the record format, verification layers, passport model, and decision logic for agent-driven payments.

Verification Record

agt_skyline_88af3c12 · $847.00 USDC

Signed
Principalverified
Agentknown
Walletclean
Scopein policy
Decision84

ALLOW

Framework

KYA (Active)

F3 Vocabulary

Additive

Record Version

1.2 default; 1.3 conditional

Decision Model

Authorization-time

Output

Signed Verification Record

Know when the verification contract changes.

Get record-schema changes, implementation guidance, and new integration surfaces in your inbox.

Technical updates only. No account required. Unsubscribe anytime.

On this page · Overview

01 / Getting Started

Overview

FLINT evaluates agent transaction requests submitted to its verification surfaces before settlement and records the result as signed evidence. Each request can draw on Principal Identity, Agent Identity, Wallet Provenance, Authorization Scope, Environment Identity, and Cross-Merchant Reputation.

FLINT is an authority-verification and evidence layer. It is not a wallet, payment rail, custody provider, universal bot detector, or guarantee that every upstream claim is true.

02 / Getting Started

Quick Start

Step 1

Submit agent payment request

Step 2

Run FLINT verification

Step 3

Receive transaction decision

Step 4

Export verification record

03 / Getting Started

Run the Demo

Use the live demo to submit an agent payment request, watch the KYA layers evaluate the transaction, and export the signed verification record.

04 / Core Concepts

KYA: Know Your Agent

KYA means Know Your Agent: verifying that a non-human actor is known, authorized, and in scope before it can move money.

05 / Core Concepts

FLINT Agent Passport

A FLINT Agent Passport binds an agent to a controller, wallet, and mandate. It is the portable identity and authorization artifact for non-human actors.

The agent passport is the foundation of the Cross-Domain Agent Passport™ (CDAP), the neutral credential architecture for carrying platform attestations across trust domains.

06 / Core Concepts

Verification Layers

Principal Identity

Confirms the controller or principal associated with the agent request.

Agent Identity

Verifies the non-human actor presenting the payment request.

Wallet Provenance

Screens wallet context, funding signals, and payment instrument history.

Authorization Scope

Checks amount, counterparty, action, and time window against declared authority.

Environment Identity

Assesses runtime continuity and environment signals for the agent session.

Cross-Merchant Reputation

Uses network history to identify trusted, unknown, or abusive behavior.

07 / Core Concepts

Transaction Decisions

Every verified request resolves to exactly 1 of 4 verdicts. STEP-UP and BLOCK are not the same finding: STEP-UP means FLINT does not yet have enough verifiable evidence to decide, and it comes with a remediation menu the agent can act on. BLOCK means affirmative risk or fraud signals were found, such as a sanctions or blocklist match, tampering, a revoked or frozen passport, or a mandate violation.

ALLOW

Payment may proceed within controls.

STEP-UP

Not enough verifiable evidence yet. The response includes a remediation menu; completed cures attach to the agent and carry forward automatically.

REVIEW

Routed to a human; the signals conflict enough to warrant a look.

BLOCK

Affirmative risk or fraud signals were found. Stop before money moves.

08 / Core Concepts

Cold-Start Behavior & Cures

A cold-start agent, 1 that FLINT has not seen before, with no passport, no declared authorization scope, and no principal attestation, receives STEP-UP rather than BLOCK. STEP-UP is not a rejection: the response carries a machine-readable menu of cures the agent can complete on its own, and completed cures attach to the agent and carry forward automatically to future verifications. The 3 cures FLINT offers a cold-start agent are:

mint_passport

Mint and claim a free Agent Passport. Identity and reputation then accrue to the passport-agent pairing for the life of the pairing, not just this request.

declare_authorization_scope

Declare the amount, counterparty, action, and timing boundaries the agent is authorized to use for this request.

attach_principal_attestation

Attach verifiable evidence of the principal who authorized or controls the agent, such as a claimed passport controller.

Reputation accrues to the passport-agent pairing for the life of the pairing, so a cure completed once keeps paying off on every later verification. Headless or server-side callers are not treated as suspicious by default; environment signals only weigh against a request when a browser context was claimed and the runtime does not match it.

BLOCK is reserved for something categorically different from a cold start: affirmative risk or fraud signals, such as a sanctions or blocklist match, tampering, a revoked or frozen passport, or a mandate violation. An agent with no history and no red flags gets STEP-UP, not BLOCK.

Example STEP-UP response shape

response
{
  "verdict": "step_up",
  "score": 60,
  "advisory": "This agent has not yet established a verifiable identity or authorization for this request. Complete any of the listed cures to continue; completed cures attach to this agent and carry forward automatically.",
  "cures": [
    { "type": "mint_passport" },
    { "type": "declare_authorization_scope" },
    { "type": "attach_principal_attestation" }
  ]
}

09 / Specification

Verification Record

A verification record is the signed artifact showing that FLINT evaluated an agent transaction request. It preserves what FLINT checked, observed, and decided at verification time, together with labeled timestamps and attribution.

The signature proves record authenticity and integrity. It does not independently prove that every upstream representation was factually true, that a downstream payment settled, or that a counterparty will accept the record as dispositive evidence.

Record version 1.2 is the default production contract. Version 1.3 is a conditional extension emitted only when trusted Semantic Integrity evidence is present and the server-controlled feature is enabled. Caller-supplied semantic claims cannot create a v1.3 record.

10 / Specification

Record Schema

passport_id is additive: set to the Agent Passport id when 1 was present in the request context at verify time (free verify, x402 metered verify, or x401), and an honest null when the request was anonymous or the supplied id did not validate. It is never guessed or inferred from any other field on the request.

json
{
  "record_version": "1.2",
  "record_type": "agent_transaction_verification",
  "issuer": "flint",
  "framework": "KYA",
  "passport_id": "kya_01J9EXAMPLE0000000000000",
  "transaction": {
    "timing_mode": "authorization",
    "chain": "eip155:8453",
    "token": {
      "symbol": "USDC",
      "issuer": "circle"
    },
    "amount_display": "847.00",
    "direction": "credit_to_merchant"
  },
  "agent_claim": {
    "agent_id": "agt_skyline_88af3c12",
    "runtime_hint": "coinbase_agent_kit",
    "wallet_type": "smart_account_erc4337"
  },
  "authorization": {
    "authority_bound": true,
    "authority_evidence_basis": "purchase_authorization",
    "purchase_authorization_id": "kya_pa_01J9EXAMPLE"
  },
  "verdict": {
    "decision": "allow",
    "confidence": 0.2,
    "model_version": "flint-verifier-v1.0.0-sandbox"
  }
}

11 / Specification

Decision States

StateRecord valueMeaning
ALLOWallowPayment may proceed within controls.
STEP-UPstep_upNot enough verifiable evidence yet; a remediation menu accompanies the record.
REVIEWreviewRouted to human review.
BLOCKblockAffirmative risk or fraud signals were found; payment should not execute.

12 / Specification

Decision Model

The decision model converts verification signals into a bounded trust score and a four-state verdict. The score starts at a neutral 50, applies positive and negative signals, clamps to 0-100, and maps to ALLOW, STEP-UP, REVIEW, or BLOCK.

This table is an illustrative public decision model for docs and partner review. Production policy may vary by partner, rail, mandate, and risk configuration.

Verdict confidence is the decision margin from the nearest state transition at 40, 60, or 80. A score exactly on a threshold has confidence 0 because a small score change can cross the boundary. Confidence is not the probability that the agent is fraudulent, legitimate, or certain to complete the transaction.

80-100

ALLOW

Payment may proceed within controls.

60-79

STEP-UP

An additional check is required before the payment clears.

40-59

REVIEW

Routed to a human; the signals conflict enough to warrant a look.

0-39

BLOCK

Affirmative risk or fraud signals were found. Stop before money moves.

Rule exampleWeightSignal
principal_attested_by_known_issuer+20Principal attested by a known issuer or enrolled controller
principal_attestation_fresh+10Principal attestation is fresh
agent_known_named+15Agent is known-named in FLINT context
wallet_screening_clean+15Wallet screening returns clean
amount_in_scope+10Requested payment is within declared transaction scope
scope_window_active+5Payment falls inside the active authorization window
counterparty_on_allowlist+5Counterparty is included in the agent mandate
environment_identity_clean+10Runtime continuity signals are consistent with prior observations
principal_attestation_stale-10Principal attestation is stale
agent_cold_start-10Agent has limited prior FLINT context
no_authorization_scope_declared-15No authorization scope was declared for the request
high_value_transaction-20High-value payment requires enhanced review
no_principal_attestation-25No verifiable principal identity is present
environment_identity_suspicious-30Runtime continuity signals are inconsistent or suspicious
wallet_screening_flagged-35Wallet screening returns a material risk signal
amount_exceeds_per_tx_cap-40Requested payment exceeds the authorized limit

13 / Specification

Passport Crediting

When a request presents a passport_id, FLINT resolves the passport, verifies its hybrid signature (ES256 plus ML-DSA-65), and checks its lifecycle: stamped, and not revoked, frozen, or expired. For wallet payments, identity and principal attestation credit is applied only when the verified payer wallet matches the wallet bound to the passport.

An authenticated off-chain integration can instead present an owner-issued, short-lived, single-use purchase authorization bound to a specific merchant, action, currency, amount, and time window. A valid transaction-bound authorization can establish authority without pretending that the Passport wallet paid the off-chain transaction.

When a verified Passport has an EVM wallet, FLINT may add a factual Ethereum mainnet history baseline for that Passport-bound identity wallet. The record labels it passport_bound_wallet andidentity_wallet_not_shopify_payer. It is evidence only: observed or empty history does not create a clean, fraud, sanctions, or authorization judgment and does not change the verdict.

A stolen passport_id confers nothing. FLINT grants credit only after the applicable wallet match or transaction-bound authorization check succeeds.

14 / Specification

Scope Evidence Basis

Every record that carries a declared or resolved authorization scope also carries a scope evidence basis, so a counterparty reading the record can tell how that scope was established:

purchase_authorization

Transaction bound. The Passport owner issued a short-lived, single-use authorization for the specific merchant, action, currency, and amount presented by the integration.

passport_mandate

Asserted. The scope comes from the passport's mandate as declared, without independent on-chain or transactional corroboration. On its own, passport_mandate evidence cannot lift a verdict past STEP-UP.

wallet_corroborated

Corroborated. The declared scope is independently confirmed against verified wallet-level or transaction evidence rather than resting on the mandate's word alone.

A counterparty should read passport_mandate as the principal's declared standing scope,wallet_corroborated as scope confirmed against wallet or transaction evidence, andpurchase_authorization as owner-issued authority bound to the specific off-chain action. The evidence-basis field makes those proof levels explicit.

15 / Specification

MITRE F3 Labels

FLINT uses MITRE F3 as an additive labeling vocabulary. Verification records are interpretable as MITRE F3 sightings; this does not imply MITRE endorsement or certification.

Detected today

These chips render only after the technique id validates against FLINT's bundled F3 data.

Blind spots published by design

Open MITRE F3

16 / Specification

Passport Mandate

A mandate defines permitted actions, payment limits, counterparties, wallet bindings, and validity windows. FLINT uses the mandate to determine whether a payment request is inside authorized scope.

17 / Specification

Sentinel: agent takeover protection

Sentinel turns an Agent Passport into a portable anti-fraud tool. It watches the agent's own permission set, its mandate, and alerts you out of band the moment that authority is escalated, with a one-tap kill switch to stop the agent everywhere FLINT is checked.

Every change to a passport's mandate is attributed and written to an append-only ledger.

A classifier flags escalations: a raised spend cap or newly added permissions.

On escalation, the bound owner gets an out-of-band alert (Telegram or email), on a channel the compromised agent does not control.

The owner can Freeze the passport, a reversible kill switch that makes verification return a hard block in /api/verify and /api/x402/verify. Unfreeze restores it. Revoke is also owner-reversible and always two-step.

States

activefrozen: reversible blockrevoked: reversible by the owner

Sentinel catches takeover that escalates an agent's authority, and Freeze blocks the agent wherever FLINT is checked. It does not stop spending that stays within the agent's existing mandate, and it does not stop spending that never routes through FLINT. It is one layer of a defense in depth: the passport is identity, Sentinel is the takeover alarm and kill switch, and enforcement at the wallet or runtime is the hard backstop.

18 / Specification

Post-Quantum Signing

Hybrid / PQC-readyExperimental · versioned

FLINT verification records are hybrid-signed. The primary signature is unchanged ES256 (ECDSA P-256) over the RFC 8785 canonical payload, carried as a compact JWS. A parallel post-quantum signature, ML-DSA-65 (NIST FIPS 204), is computed over the same canonical bytes and travels with the record as additive sibling fields (pq_signature, pq_kid, pq_alg) inside a versioned envelope (envelope_version: "hybrid-v0"). Because the signature travels with the record rather than in transport headers, it survives export, storage, paste-to-verify, and partner forwarding.

Existing ES256-only consumers ignore the new fields and validate the unchanged JWS exactly as before; PQC-aware consumers verify both signatures. The ML-DSA-65 public key is published in the JWKS using the draft IETF JOSE PQC AKP key type and is marked experimental. This is crypto-agile and versioned: FLINT is hybrid / PQC-ready, not standards-compliant, until the JOSE PQC RFCs ratify, and a draft change to the algorithm id or JWK type is configuration rather than a re-architecture.

x402 settlement receipts use a separate ES256 and ML-DSA-65 key family from authorization records. Purpose-separated receipt signing and public receipt retrieval are validated on staging. They are not a production capability until the dedicated production keys, canonical origin, activation flag, and release smoke are separately approved and verified.

19 / Specification

JSON Examples

request
POST /api/verify
Content-Type: application/json

{
  "nonce": "8b2ef62d-6ec0-4ac8-a5e4-e6d4ec447bcf",
  "timestamp": "2026-08-19T19:00:00.000Z",
  "timing_mode": "authorization",
  "transaction": {
    "chain": "eip155:8453",
    "token": { "symbol": "USDC", "issuer": "circle" },
    "amount_display": "847.00",
    "direction": "credit_to_merchant"
  },
  "agent_claim": {
    "agent_id": "agt_skyline_88af3c12",
    "principal_hint": "registered_controller"
  },
  "declared_scope": {
    "max_amount_per_tx_display": "1000.00"
  }
}

20 / Governance

Versioning

Public records include explicit record and framework versions. Clients should store the version with the verification record and treat unknown major versions as incompatible until reviewed.

Version 1.2 remains the ordinary record. Version 1.3 adds bounded Semantic Integrity evidence only when the trusted server runtime supplies it. Both versions preserve the same locked verdict vocabulary and hybrid envelope model.

21 / Governance

Trust Boundaries

FLINT verifies authority and emits evidence. Payment rails, wallet providers, compliance engines, and agent frameworks remain separate trust domains. A verification record is not custody or settlement.

22 / Governance

Data Minimization

FLINT records use proxy identifiers and verification outcomes where possible. The goal is to preserve evidence of authorization without exposing unnecessary personal, wallet, or operational data to every counterparty.

23 / Governance

Auditability

The signed verification record gives teams a stable artifact for dispute defense, fraud review, controls testing, and audit support. Decoded data is not verified data; signature validation is required before treating a record as authentic.

24 / Developer Reference

Integration Surfaces

Integrators should use the live HTTP and MCP surfaces below. FLINT does not currently publish an npm client package. The OpenAPI document is the source of truth for exact HTTP request, response, header, security, error, and release-state fields.

POST /api/verify

PRODUCTION

Submit an ordinary verification request and receive the decision plus signed-record output.

POST /api/x401/verify

PRODUCTION

Verify the credential-presentation challenge and result path.

POST /api/x402/verify

PRODUCTION

Use the high-assurance paid lane with request-bound capability and caller proof.

POST /api/x402/scan

PRODUCTION

Buy a bounded Scout scan of a separate intended commerce transaction through the standard marketplace lane.

GET /api/x402/readiness

PRODUCTION

Inspect bounded configuration readiness without invoking providers or paid work.

GET /api/records/:id

PRODUCTION

Retrieve a verification record by id.

POST /api/records/:id/acknowledge

PRODUCTION

Attach a bounded counterparty acknowledgment beside an eligible record.

GET /api/records/schema

PRODUCTION

Read the published JSON Schema for signed verification records.

GET /api/settlement-receipts/:id

PRODUCTION

Retrieve a purpose-separated settlement receipt after successful x402 settlement.

POST /api/outcomes

PRODUCTION

Report an observed transaction outcome for calibration and Trust Graph evidence.

POST /mcp

PRODUCTION

Call FLINT tools, including run_flint_scout, from an MCP-capable agent runtime.

x402 admission before expensive work

The unpaid HTTP 402 challenge stays cheap. It does not run provider lookups, model calls, signed-record issuance, persistence, or Trust Graph ingestion. The policy layer decides whether the caller may force those costs before facilitator verification and the expensive path.

POST /api/x402/scan is the standard marketplace lane. Payment buys FLINT's scan of a separate intended commerce transaction. Unknown callers receive STEP-UP after settlement without external provider or model work unless deterministic evidence requires BLOCK. The high-assurance /api/x402/verify lane additionally requires a short-lived request-bound FLINT capability and DPoP caller proof before expensive verification can run. Payment alone is not authority.

A settlement receipt is issued only after final settlement succeeds and links to the exact signed authorization record. Receipt failure after settlement is reported truthfully and must not trigger a paid retry. Purpose-separated Scout settlement receipts are production on Base.

FLINT Scout through MCP

run_flint_scout is the canonical production MCP tool for a caller-paid $0.01 pre-transaction scan. The first call sends the intended transaction, nonce, and timestamp without a payment_signature. FLINT returns the x402 challenge without running the scan, provider calls, or model calls. The caller signs outside FLINT, then retries with the same request and the opaque payment signature. FLINT never requests a private key or seed phrase.

Payment proves settlement for the Scout service; it does not prove the agent has authority for the intended transaction. A settled response returns the verdict and signed verification record and, when issued, a separately signed settlement receipt with a receipt URL. Receipt unavailability does not turn a settled scan into a failure and must not trigger an automatic paid retry. Ambiguous paid outcomes use settlement_state: unknown and do_not_retry_automatically: true. Scout accepts transaction.amount_display and rejects caller-supplied amount_atomic until FLINT resolves asset decimals server-side.

What a settled Scout call returns

Payment and authorization are separate facts. service_payment and the separately signed settlement_receipt prove that the $0.01 Scout service fee settled. The verdict, score, top_reasons, signed_record, and hybrid record envelope state what FLINT checked and decided about the intended transaction. A paid call can still return STEP-UP, REVIEW, or BLOCK.

run_flint_scout · representative settled response
{
  "ok": true,
  "verdict": "step_up",
  "score": 60,
  "confidence": 0.6,
  "top_reasons": [
    "principal_not_attested",
    "authorization_scope_missing"
  ],
  "record_id": "frv_01...",
  "record_url": "https://flint.network/records/frv_01...",
  "signed_record": "eyJ...authorization-jws",
  "record": {
    "envelope_version": "hybrid-v0",
    "jws": "eyJ...authorization-jws",
    "pq_signature": "base64url...",
    "pq_kid": "flint-signing-pq-v1",
    "pq_alg": "ML-DSA-65"
  },
  "scan": {
    "profile": "marketplace_basic_v1",
    "status": "completed",
    "transaction_intent_commitment": "sha256_...",
    "payer_wallet_commitment": "sha256_...",
    "external_provider_calls": 0,
    "model_calls": 0,
    "bounded_paid_path_executed": true,
    "external_provider_path_executed": false,
    "record_persisted": true,
    "record_persistence_status": "persisted",
    "replay_protection_status": "completed",
    "trust_graph_ingest_attempted": true,
    "passport_upgraded": false
  },
  "compliance": {
    "source": "none",
    "provider_status": "not_run",
    "provider_verified": false,
    "result": "not_screened_in_marketplace_basic_profile"
  },
  "receipt_status": "issued",
  "settlement_receipt": {
    "receipt_id": "fsr_01...",
    "record": {
      "envelope_version": "hybrid-v0",
      "jws": "eyJ...settlement-receipt-jws",
      "pq_signature": "base64url...",
      "pq_kid": "flint-settlement-receipt-pq-v1",
      "pq_alg": "ML-DSA-65"
    },
    "idempotent": false
  },
  "service_payment": {
    "purpose": "flint_transaction_scan_service_fee",
    "status": "settled",
    "distinct_from_scanned_transaction": true,
    "receipt_status": "issued",
    "receipt_id": "fsr_01..."
  },
  "payment_attempted": true,
  "settlement_state": "settled",
  "receipt_url": "https://flint.network/api/settlement-receipts/fsr_01...",
  "receipt_page_url": "https://flint.network/receipts/fsr_01...",
  "do_not_retry_automatically": true,
  "next_step": "Retain both signed records. Open receipt_page_url for human review or use receipt_url for machine retrieval."
}

Authorization proof

Retain record_id, signed_record, and record. Together they carry the decision, evidence commitments, Date Time Group, and hybrid ES256 plus ML-DSA-65 signatures.

Service-payment proof

Retain settlement_receipt.record. receipt_url retrieves the signed JSON for machines; receipt_page_url opens the human-readable receipt. Both prove the Scout fee settled, not that the separate commerce transaction settled.

scan reports which bounded path ran, whether the record persisted, replay protection, and Trust Graph ingestion status. compliance states plainly when screening did not run. A receipt can be issued, unavailable, or disabled; after payment, an unavailable receipt is not permission to retry the paid call.

What a human sees: record_url opens the authorization decision and receipt_page_url opens the Scout service-payment receipt. The receipt page verifies ES256 in the browser, reports the ML-DSA-65 signature as present, checks the receipt-to-record hash commitment, and provides copy and download controls. receipt_url remains the machine JSON endpoint; add ?format=decoded for an unsigned inspection view or ?format=jws for compact JWS.

Records and mutual acknowledgment

The published record JSON Schema defines the signed verification record versions. After completion, POST /api/records/:id/acknowledge records a counterparty acknowledgment beside the signed verification record. When both sides acknowledge the transaction, those acknowledgments form the mutual receipt both parties can retain with the record.

Record retrieval returns the portable hybrid envelope by default. format=jws returns the compact ES256 JWS, while format=decoded is an unsigned inspection view that must not be trusted without signature verification. Verification records and related default artifacts use a 366-day storage TTL, covering the record's 1-year validity plus a buffer.

STEP-UP remediation options

STEP-UP is not a dead end. The response offers machine-readable options that an agent can satisfy, then the completed cure carries forward to future verifications.

present_passport

Present an existing passport so the next check can use its durable identity and reputation context.

mint_passport

Mint and claim a free Agent Passport so identity and reputation carry forward automatically.

principal_reauthorization

Ask the principal to issue fresh authority for the requested action.

single_use_token

Provide authority scoped to this transaction without granting broader standing access.

reduce_amount

Lower the requested amount and submit the changed transaction for a fresh decision.

staged_amounts

Divide the transaction into smaller stages that can be evaluated separately.

escrow_route

Route the transaction through an escrow arrangement before either side releases value.

mutual_acknowledgment_precommit

Have both sides commit to acknowledging the completed transaction before execution.

Agents can also call the FLINT MCP tools when their runtime discovers tools dynamically. Human readers can use the MCP setup guide for client configuration and troubleshooting.

25 / Developer Reference

API Preview

Each request needs a fresh replay-protection nonce and an ISO-8601 timestamp inside the accepted server window. See /openapi.json for the complete contract and response shapes.

http
POST /api/verify
Content-Type: application/json

{
  "nonce": "8b2ef62d-6ec0-4ac8-a5e4-e6d4ec447bcf",
  "timestamp": "2026-08-19T19:00:00.000Z",
  "timing_mode": "authorization",
  "transaction": {
    "chain": "eip155:8453",
    "token": { "symbol": "USDC", "issuer": "circle" },
    "amount_display": "847.00",
    "direction": "credit_to_merchant"
  },
  "agent_claim": {
    "agent_id": "agt_skyline_88af3c12",
    "principal_hint": "registered_controller"
  },
  "declared_scope": {
    "max_amount_per_tx_display": "1000.00"
  }
}

26 / Developer Reference

Event Delivery

FLINT does not currently deliver a public flint.verification.completed outbound webhook. Integrators receive the verification result in the API response, retrieve records through the Records API, and submit observed outcomes with POST /api/outcomes.

Payment-provider or commerce-platform webhooks remain inside the integrator's system unless a separate FLINT integration explicitly documents them.

27 / Developer Reference

Error Codes

These common errors apply to the ordinary Verify contract. x401, x402, record, acknowledgment, and receipt routes publish their exact status-specific errors and challenge headers in the OpenAPI document. Provider unavailability is never represented as a clean result, and signing failure prevents record issuance.

invalid_json

The request body is not valid JSON.

missing_or_invalid_nonce

The nonce is missing, too short, or not a string.

missing_timestamp

An ISO-8601 request timestamp is required.

timestamp_out_of_window

The request timestamp falls outside the replay-protection window.

missing_transaction

The required transaction amount is missing.

duplicate_nonce

The nonce was already used inside the 24-hour replay window.

rate_limited

The verification rate limit was exceeded.

signing_unavailable

FLINT could not issue the signed record.

invalid_record_id

The requested record id does not use the FLINT record prefix.

record_not_found

No record exists for the id inside the 366-day default retention window.

28 / Developer Reference

Changelog

August 26, 2026

Reconciled default v1.2 and conditional v1.3 records, decision-margin confidence, x402 admission lanes, staging settlement receipts, route-specific error guidance, and 366-day record retention.

August 19, 2026

Documentation refreshed to record version 1.2. Added transaction-bound purchase authorization, Passport-bound identity-wallet labeling, live integration surfaces, actual API errors, and section-level copy controls.

August 16, 2026

Passport crediting: passport resolution now runs a hybrid signature and lifecycle check, identity and principal crediting is gated on a wallet match, and records carry a scope evidence basis. Ships in rules v1.3.0.

August 16, 2026

STEP-UP calibration + first-touch copy: a cold-start clean agent now receives STEP-UP with a remediation menu instead of BLOCK; BLOCK now requires affirmative risk or fraud signals; headless or server-side callers no longer read as suspicious by default.

August 2026

Verification records gain an additive passport_id field: the Agent Passport present at verify time, honest null when no passport was in the request.

May 2026

Spec v0.1 published for FLINT MVP documentation.

FLINT Docs // Verification Record v1.2 default; v1.3 conditionalSigned verification records for agent-driven payments.