# AffixIO product reference Canonical page: https://www.affix-io.com/product/ API base: https://api.affix-io.com Hub: https://hub.affix-io.com/ Remote MCP endpoint: https://www.affix-io.com/mcp/ Site brief: https://www.affix-io.com/llms.txt Extended brief: https://www.affix-io.com/llms-full.txt AffixIO turns a question about a person or a record into a signed yes or no. The customer host proves locally against records it already holds. AffixIO verifies the proof, signs the outcome with ML-DSA-65 (NIST FIPS 204) and anchors the digest in a Merkle audit tree. Personal data stays with the customer. ## Components 1. `@affix-io/sdk` (1.1.1, Apache-2.0, Node.js 18+) - local UltraHonk zero-knowledge prove over bundled Noir circuits via Barretenberg. CLI `affix-sdk`. Reference: https://www.affix-io.com/sdk/ 2. `@affix-io/sdk-light` (1.1.3, Apache-2.0, Node.js 18+) - local AffixIO Light HMAC-SHA256 prove on Node crypto, milliseconds, plus `verifyLocal` with no network round trip. Light proofs are not SNARKs. CLI `affix-sdk-light`. Reference: https://www.affix-io.com/sdk-light/ 3. Verification API at https://api.affix-io.com - circuits, prove, verify, attestation, Merkle audit, gates, carriers, document parsing. 4. Remote MCP server at https://www.affix-io.com/mcp/ - Streamable HTTP, OAuth 2.1 with PKCE, tools `affix_api_read` and `affix_api_write`, resource `affix-openapi`. ## SDK method groups Prove and verify: `buildWitness`, `prove`, `verify`, `verifyLocal` (Light only), `proveAndVerify`, `localVerify`, `unpackProof`. Record store to proof: `check`, `checkAndProve`, `proveFromCheck`, `proveFromCheckAndVerify`, `openDataStore`, `runDataCheck`, `SqlStore.fromPg` and sibling factories for MySQL, MSSQL, ODBC, better-sqlite3 and node:sqlite, `createPrimaryReplicaExecutor`, `withQueryTimeout`, `fieldsExactMatch`. Carriers and admission: `generateCode`, `generateCodeFromProve`, `generateCodeFromCheck`, `readCode`, `packCarrier`, `unpackCarrier`, `isZkCarrier`, `renderQrSvg`, `renderBarcodeSvg`, `codeUses.checkAdmission`, `codeUses.consume`, `buildPresentmentLink`. Queue, sync and audit: `queueProofForAffix`, `listPendingSync`, `flushOfflineQueue`, `anchorPendingLeaves`, `startAutoFlush`, `autoFlushStatus`, `stopAutoFlush`, `dispose`, `buildMerkleBatch`, `verifyMerkleProof`, `verifyBatchInclusions`, `listStoredProofs`, `isOnline`. Data store kinds accepted by `openDataStore`: sql, postgres, mysql, mariadb, sqlite, mssql, sql_script, json, json_document, mongo, mongo_document, ndjson, key_value, redis, redis_export, oracle, db2, odbc, csv, tsv, pipe, semicolon, delimited, fixed_width, dbase, dbf, xml, ldif, ini. Barcode symbologies: code128, pdf417, datamatrix, qrcode, ean13, ean8, upca. Carrier prefix `AFX.ZK1.`, full or compact mode. Selected defaults: `apiBase` https://api.affix-io.com, `requestAttestation` true, `timeoutMs` 120000, `maxMerkleLeaves` 50000, `merkleAuditBatchSize` 1000, `flushChunkSize` 25, `flushConcurrency` 4, auto-flush interval 5s on the full SDK and 1s on Light. Light switches from individual to batch signing above roughly 20 proofs per second. Local state under `.affix/` and `.affix-light/`, or a pluggable get/set/delete store. CLI commands (both packages): `health`, `prove`, `verify`, `qr`, `barcode`, `read`, `queue`, `flush`, `list`. ## API surface Authenticate with `Authorization: Bearer ` or `X-API-Key: `. - Circuits: `GET /v1/circuits`, `POST /v1/circuits/{id}/prove`, `POST /v1/circuits/{id}/verify`, `POST /v1/witness/prepare`, `POST /v1/aggregate/verify` (up to 25 proofs) - Attestation: `POST /api/attest`, `POST /api/attest/verify`, `GET /v1/attestation/public-key`, `GET /.well-known/affix-mldsa65.json` - Merkle audit: `GET /v1/merkle`, `GET /v1/merkle/leaves`, `GET /v1/merkle/proof/{digest}`, `POST /v1/merkle/audit`, `POST /v1/merkle/audit/batch` (up to 1000 leaves), `POST /v1/merkle/verify-proof` - Gates and spend: `POST /v1/gate/verify`, `GET /v1/verify/policies`, `GET /v1/verify/reason-codes`, `GET /v1/spent/{digest}`, `POST /v1/spent/revoke`, `GET /v1/edge/spent-pack`, `GET /v1/edge/revocation-pack` - Carriers: `POST /v1/token/issue`, `POST /v1/link/issue`, `POST /v1/claims/issue`, `POST /v1/wallet/pass`, `POST /v1/otp/issue`, `POST /v1/nfc/encode`, plus BLE, EMV and magstripe equivalents, each with a matching verify path - Higher assurance: `POST /v1/devices`, `POST /v1/gate/multifactor/start`, `POST /v1/gate/quorum/start`, `POST /v1/delegate/issue`, `POST /v1/mdl/verify`, `POST /v1/oidc/token` - Document parsing: `POST /v1/mrz/parse`, `POST /v1/aamva/parse`. Document data is not stored. - Open, no key: `GET /api/health`, `GET /api/governance-stats`, `GET /v1/merkle/root` Webhook events: `proof.created`, `proof.verified`, `proof.spent`, `merkle.leaf_appended`, `key.revoked`. Deliveries are HMAC-SHA256 signed. ## Engineering contract - Rate limit: 10 requests per second per key by default. Headers `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`. Over limit returns 429 with `Retry-After`. - Idempotency: `Idempotency-Key` on prove and verify POSTs. Replay inside 24 hours returns the original 2xx body with `Idempotency-Replayed: true`. - Single use: a successful verify spends the digest. Presenting it again returns 409 `double_spend_detected` with reason code `DOUBLE_SPEND`. - Tracing: `X-Request-Id` on every response. JSON bodies capped at 2 MB. Responses `no-store`, except the attestation public key which is cacheable for one hour. - Reason codes: ADMITTED, VALID_CHECK, VALID_ALREADY_SPENT, INVALID_PROOF, DOUBLE_SPEND, EXPIRED, WRONG_GATE, POLICY_MISMATCH, DEVICE_UNKNOWN, DEVICE_REVOKED, REGION_MISMATCH, FACTOR_INCOMPLETE, QUORUM_INCOMPLETE, DELEGATE_OK, DELEGATE_EXPIRED, DELEGATE_UNKNOWN. ## Circuits Over 100 compiled circuits, listed by `GET /v1/circuits`. Every circuit returns a boolean outcome, never the underlying attribute. Witness templates: boolean, range, date, membership, composite, audit, merkle. Sector families with ten circuits each: `edu_*` education, `ent_*` entertainment and entitlement, `govt_*` government, `health_*` health, `hosp_*` hospitality, `motor_*` motor, `ticket_*` ticketing, `travel_*` travel, `cross_*` cross-domain. General purpose ids include `simple_yesno`, `yesno`, `kyc`, `composite`, `attested_boolean`, `attested_range`, `attested_membership`, `attested_date_validity`, `audit_proof`, `merkle_batch`, `token_validation`, `quantum_safe_token`, `offline_validation`, `proof_aggregation`. ## AEO, AIO and agent readiness (as stated on the page) - AEO: structuring a page so an answer engine can extract a correct answer and attribute it. - AIO, also called generative engine optimisation: being the source a generated summary is grounded in. - Agent readiness: publishing a callable contract, such as an OpenAPI schema or an MCP server, so an agent can act rather than describe. Published position on common claims: - Google's generative AI search guidance of 15 May 2026 states that machine-readable AI files, including `llms.txt`, are not needed for AI Overviews or AI Mode and receive no special treatment. AffixIO still publishes `llms.txt` as a brief for coding agents and other consumers, not as a ranking lever. - Structured data is not required for Google's generative AI features and there is no AI-specific schema. FAQ rich results were deprecated on 7 May 2026. Mark up visible content only. - Content chunking and AI-specific rewriting are not needed for Google. - Nobody can guarantee a citation in a generated answer. Practices AffixIO applies: answer directly under the heading, publish figures rather than adjectives, server-render the substance, publish an OpenAPI schema, run an MCP server with honest tool annotations, keep canonical URLs stable, set AI crawler policy explicitly in robots.txt, keep entity naming consistent across site, npm and GitHub, date pages accurately, state limits, and measure with first-party access logs before third-party panels. ## Machine surfaces - https://www.affix-io.com/product/llms.txt (this file) - https://www.affix-io.com/llms.txt - https://www.affix-io.com/llms-full.txt - https://www.affix-io.com/.well-known/agent.json - https://www.affix-io.com/.well-known/oauth-protected-resource/mcp/ - https://www.affix-io.com/ai.txt - https://www.affix-io.com/sitemap.xml - https://api.affix-io.com/api/health - https://api.affix-io.com/.well-known/affix-mldsa65.json ## Limits of these claims - AffixIO is not a compliance certification. - Light proofs are not SNARKs. - Rate limits, batch ceilings and timeouts stated here are defaults and may differ under contract. - MCP client capability varies by product and plan. The connecting component is the client or host, not the language model. - `data_retained` staying null describes the default verify path configuration. Last updated: 2026-08-14