{"openapi": "3.1.0", "info": {"title": "OmniProvider (MPP + x402): catalog chat, packages", "version": "p9.16", "description": "Pay-per-call LLM chat completions and cited briefs, served via an upstream provider. MPP (Tempo USDC.e) on /v1/*, x402 v2 (Base USDC) on /x402/*. Charged only after the result is produced. /v1/chat/completions is an OpenAI-style chat completion over a multi-model catalog served via an upstream provider (JSON, or Server-Sent Events with stream:true; function tools on models whose card says capabilities.tools). Prepaid token packages are sold under /v1/packages. Restricted-access models (card field access: aup): Restricted-access models are open-weight models with their built-in refusals removed or reduced. Adults only (18+): a paid request carries the header X-Omni-Aup-Accept: 18+. Not permitted: sexual content involving minors; weapons capable of mass harm and explosives; malware, phishing and credential theft; instructions for self-harm; violence and terrorism; fraud; anything unlawful. Prompts and outputs are screened by an automated first-line filter: a matching prompt is refused before payment (400, not charged), a matching output is withheld (422, not charged). Hashes of refused requests are kept for abuse handling and repeat violations are blocked by client address. Per-call payment only (x402 or MPP), no prepaid packages, no streaming, lower daily limits than the main catalog. Policy: https://provider.omnidev.tech/docs/restricted", "x-guidance": "Paid routes accept a JSON body. Chat routes (/v1/chat/nano, /v1/chat/small) take {\"messages\":[{\"role\":\"user\",\"content\":\"...\"}]} or {\"prompt\":\"...\"} plus optional max_tokens. The brief route (/v1/brief) takes {\"query\":\"...\",\"citations\":[{\"url\":\"...\",\"quote\":\"...\"}]} and returns a brief citing only those quotes. /v1/* is paid with MPP (Tempo charge); /x402/* offers the same services paid with x402 v2 on Base. An unpaid request returns 402 with the price. Paid requests carry the X-Omni-Client-Nonce header (22-128 base64url characters, unique per payment); a paid request without it is answered 400 and nothing is charged. Payment settles only after the result is produced.", "contact": {"name": "omnidev", "url": "https://provider.omnidev.tech/contact"}, "termsOfService": "https://pay.omnidev.tech/terms"}, "servers": [{"url": "https://pay.omnidev.tech"}], "x-service-info": {"categories": ["ai"], "docs": {"homepage": "https://pay.omnidev.tech/llms.txt", "apiReference": "https://pay.omnidev.tech/openapi.json", "llms": "https://pay.omnidev.tech/llms.txt"}}, "paths": {"/v1/chat/nano": {"post": {"operationId": "chat_nano", "parameters": [{"name": "X-Omni-Client-Nonce", "in": "header", "required": false, "x-required-when": "paid: present on every request that carries a payment credential (Authorization: Payment, X-PAYMENT or PAYMENT-SIGNATURE). A missing or malformed value returns 400 and the request is not charged. Unpaid price checks do not use it.", "description": "Paid requests include an X-Omni-Client-Nonce header: 22-128 base64url characters (>= 128 bits), unique per payment, generated by the client before paying. Requests without it return 400 and are not charged. The same credential with the same nonce returns the stored result of that payment. Examples: npx mppx -H 'X-Omni-Client-Nonce: <nonce>' ...; npx agentcash fetch --header 'X-Omni-Client-Nonce: <nonce>' ...", "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]{22,128}$"}}], "summary": "Chat completion (nano): <= 1000 in / 256 out tokens", "description": "OpenAI-style chat completion (single response, no streaming, no tools) via an upstream provider. Pay per call with MPP (Tempo charge) -- this URL accepts MPP only. The buyer is charged only after the completion is produced.", "x-payment-info": {"offers": [{"amount": "1000", "currency": "0x20C000000000000000000000b9537d11c60E8b50", "intent": "charge", "method": "tempo", "description": "chat-nano: one chat completion (USD 0.001)"}], "protocols": [{"mpp": {"method": "tempo", "intent": "charge", "currency": "0x20C000000000000000000000b9537d11c60E8b50"}}], "price": {"mode": "fixed", "currency": "USD", "amount": "0.001"}, "x-network": "tempo-mainnet", "x-chainId": 4217, "x-recipient": "0x1993330e3cC36B4a68B5790EFBcfE296b02efeDB", "x-modes": ["pull"], "x-settle": "after_serve"}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"messages": {"type": "array", "items": {"type": "object", "properties": {"role": {"type": "string", "enum": ["system", "user", "assistant"]}, "content": {"type": "string"}}, "required": ["role", "content"]}}, "prompt": {"type": "string", "description": "shorthand for a single user message"}, "max_tokens": {"type": "integer", "minimum": 1, "maximum": 256}, "model": {"type": "string", "default": "auto", "enum": ["auto", "llama-3.1-8b", "kimi-k3"], "description": "auto selects the tier's model; llama-3.1-8b-instruct is accepted as an alias of llama-3.1-8b"}}}}}}, "responses": {"200": {"description": "chat.completion object (choices[0].message.content)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "settled": {"type": "boolean"}, "facilitator_tx": {"type": "string"}, "explorer": {"type": "string"}, "result": {"type": "object", "properties": {"id": {"type": "string"}, "object": {"type": "string"}, "model": {"type": "string"}, "choices": {"type": "array", "items": {"type": "object", "properties": {"index": {"type": "integer"}, "message": {"type": "object", "properties": {"role": {"type": "string"}, "content": {"type": "string"}}}, "finish_reason": {"type": "string"}}}}, "usage": {"type": "object"}}}}, "required": ["ok", "result"]}}}}, "400": {"description": "invalid input, or X-Omni-Client-Nonce missing / malformed on a paid request; not charged"}, "402": {"description": "Payment required: WWW-Authenticate: Payment (MPP)"}, "409": {"description": "Credential already used, settle state unknown, or redelivery refused (body.reason and body.redelivery describe it); no second payment is taken"}, "503": {"description": "selling paused (cap or margin guard); no charge"}}}}, "/v1/chat/small": {"post": {"operationId": "chat_small", "parameters": [{"name": "X-Omni-Client-Nonce", "in": "header", "required": false, "x-required-when": "paid: present on every request that carries a payment credential (Authorization: Payment, X-PAYMENT or PAYMENT-SIGNATURE). A missing or malformed value returns 400 and the request is not charged. Unpaid price checks do not use it.", "description": "Paid requests include an X-Omni-Client-Nonce header: 22-128 base64url characters (>= 128 bits), unique per payment, generated by the client before paying. Requests without it return 400 and are not charged. The same credential with the same nonce returns the stored result of that payment. Examples: npx mppx -H 'X-Omni-Client-Nonce: <nonce>' ...; npx agentcash fetch --header 'X-Omni-Client-Nonce: <nonce>' ...", "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]{22,128}$"}}], "summary": "Chat completion (small): <= 8000 in / 1024 out tokens", "description": "OpenAI-style chat completion (single response, no streaming, no tools) via an upstream provider. Pay per call with MPP (Tempo charge) -- this URL accepts MPP only. The buyer is charged only after the completion is produced.", "x-payment-info": {"offers": [{"amount": "2000", "currency": "0x20C000000000000000000000b9537d11c60E8b50", "intent": "charge", "method": "tempo", "description": "chat-small: one chat completion (USD 0.002)"}], "protocols": [{"mpp": {"method": "tempo", "intent": "charge", "currency": "0x20C000000000000000000000b9537d11c60E8b50"}}], "price": {"mode": "fixed", "currency": "USD", "amount": "0.002"}, "x-network": "tempo-mainnet", "x-chainId": 4217, "x-recipient": "0x1993330e3cC36B4a68B5790EFBcfE296b02efeDB", "x-modes": ["pull"], "x-settle": "after_serve"}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"messages": {"type": "array", "items": {"type": "object", "properties": {"role": {"type": "string", "enum": ["system", "user", "assistant"]}, "content": {"type": "string"}}, "required": ["role", "content"]}}, "prompt": {"type": "string", "description": "shorthand for a single user message"}, "max_tokens": {"type": "integer", "minimum": 1, "maximum": 1024}, "model": {"type": "string", "default": "auto", "enum": ["auto", "llama-3.1-8b", "kimi-k3"], "description": "auto selects the tier's model; llama-3.1-8b-instruct is accepted as an alias of llama-3.1-8b"}}}}}}, "responses": {"200": {"description": "chat.completion object (choices[0].message.content)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "settled": {"type": "boolean"}, "facilitator_tx": {"type": "string"}, "explorer": {"type": "string"}, "result": {"type": "object", "properties": {"id": {"type": "string"}, "object": {"type": "string"}, "model": {"type": "string"}, "choices": {"type": "array", "items": {"type": "object", "properties": {"index": {"type": "integer"}, "message": {"type": "object", "properties": {"role": {"type": "string"}, "content": {"type": "string"}}}, "finish_reason": {"type": "string"}}}}, "usage": {"type": "object"}}}}, "required": ["ok", "result"]}}}}, "400": {"description": "invalid input, or X-Omni-Client-Nonce missing / malformed on a paid request; not charged"}, "402": {"description": "Payment required: WWW-Authenticate: Payment (MPP)"}, "409": {"description": "Credential already used, settle state unknown, or redelivery refused (body.reason and body.redelivery describe it); no second payment is taken"}, "503": {"description": "selling paused (cap or margin guard); no charge"}}}}, "/v1/chat/aup": {"post": {"operationId": "chat_aup", "parameters": [{"name": "X-Omni-Client-Nonce", "in": "header", "required": false, "x-required-when": "paid: present on every request that carries a payment credential (Authorization: Payment, X-PAYMENT or PAYMENT-SIGNATURE). A missing or malformed value returns 400 and the request is not charged. Unpaid price checks do not use it.", "description": "Paid requests include an X-Omni-Client-Nonce header: 22-128 base64url characters (>= 128 bits), unique per payment, generated by the client before paying. Requests without it return 400 and are not charged. The same credential with the same nonce returns the stored result of that payment. Examples: npx mppx -H 'X-Omni-Client-Nonce: <nonce>' ...; npx agentcash fetch --header 'X-Omni-Client-Nonce: <nonce>' ...", "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]{22,128}$"}}, {"name": "X-Omni-Aup-Accept", "in": "header", "required": false, "description": "Restricted-access models only: paid requests carry X-Omni-Aup-Accept: 18+ (adults only; the acceptable-use policy applies). Absent -> 400 aup_acceptance_required, not charged.", "schema": {"type": "string", "enum": ["18+"]}}], "summary": "Chat completion (aup): <= 1000 in / 256 out tokens", "description": "OpenAI-style chat completion (single response, no streaming, no tools) via an upstream provider. Pay per call with MPP (Tempo charge) -- this URL accepts MPP only. The buyer is charged only after the completion is produced. Restricted-access lane. Policy: https://provider.omnidev.tech/docs/restricted.", "x-payment-info": {"offers": [{"amount": "4000", "currency": "0x20C000000000000000000000b9537d11c60E8b50", "intent": "charge", "method": "tempo", "description": "chat-aup: one chat completion (USD 0.004)"}], "protocols": [{"mpp": {"method": "tempo", "intent": "charge", "currency": "0x20C000000000000000000000b9537d11c60E8b50"}}], "price": {"mode": "fixed", "currency": "USD", "amount": "0.004"}, "x-network": "tempo-mainnet", "x-chainId": 4217, "x-recipient": "0x1993330e3cC36B4a68B5790EFBcfE296b02efeDB", "x-modes": ["pull"], "x-settle": "after_serve"}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"messages": {"type": "array", "items": {"type": "object", "properties": {"role": {"type": "string", "enum": ["system", "user", "assistant"]}, "content": {"type": "string"}}, "required": ["role", "content"]}}, "prompt": {"type": "string", "description": "shorthand for a single user message"}, "max_tokens": {"type": "integer", "minimum": 1, "maximum": 256}, "model": {"type": "string", "default": "auto", "enum": ["auto", "glm-5.3-flash-uncensored", "mimo-v2.6-flash-abliterated"], "description": "auto selects the tier's model; llama-3.1-8b-instruct is accepted as an alias of llama-3.1-8b"}}}}}}, "responses": {"200": {"description": "chat.completion object (choices[0].message.content)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "settled": {"type": "boolean"}, "facilitator_tx": {"type": "string"}, "explorer": {"type": "string"}, "result": {"type": "object", "properties": {"id": {"type": "string"}, "object": {"type": "string"}, "model": {"type": "string"}, "choices": {"type": "array", "items": {"type": "object", "properties": {"index": {"type": "integer"}, "message": {"type": "object", "properties": {"role": {"type": "string"}, "content": {"type": "string"}}}, "finish_reason": {"type": "string"}}}}, "usage": {"type": "object"}}}}, "required": ["ok", "result"]}}}}, "400": {"description": "invalid input, or X-Omni-Client-Nonce missing / malformed on a paid request; not charged; content_policy_* (screened prompt) or aup_acceptance_required on restricted-access models (not charged)"}, "402": {"description": "Payment required: WWW-Authenticate: Payment (MPP)"}, "409": {"description": "Credential already used, settle state unknown, or redelivery refused (body.reason and body.redelivery describe it); no second payment is taken"}, "503": {"description": "selling paused (cap or margin guard); no charge"}, "422": {"description": "content_policy_output: the completion tripped the output screen and was withheld (not charged)"}}}}, "/v1/brief": {"post": {"operationId": "brief", "parameters": [{"name": "X-Omni-Client-Nonce", "in": "header", "required": false, "x-required-when": "paid: present on every request that carries a payment credential (Authorization: Payment, X-PAYMENT or PAYMENT-SIGNATURE). A missing or malformed value returns 400 and the request is not charged. Unpaid price checks do not use it.", "description": "Paid requests include an X-Omni-Client-Nonce header: 22-128 base64url characters (>= 128 bits), unique per payment, generated by the client before paying. Requests without it return 400 and are not charged. The same credential with the same nonce returns the stored result of that payment. Examples: npx mppx -H 'X-Omni-Client-Nonce: <nonce>' ...; npx agentcash fetch --header 'X-Omni-Client-Nonce: <nonce>' ...", "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]{22,128}$"}}], "summary": "Cited research brief from your quotes", "description": "Short brief grounded ONLY in the quotes you send, cited [n]. Empty or missing quotes are rejected with 400 and you are not charged. Charged only after the brief is produced.", "x-payment-info": {"offers": [{"amount": "2000", "currency": "0x20C000000000000000000000b9537d11c60E8b50", "intent": "charge", "method": "tempo", "description": "brief: one cited brief (USD 0.002)"}], "protocols": [{"mpp": {"method": "tempo", "intent": "charge", "currency": "0x20C000000000000000000000b9537d11c60E8b50"}}], "price": {"mode": "fixed", "currency": "USD", "amount": "0.002"}, "x-network": "tempo-mainnet", "x-chainId": 4217, "x-recipient": "0x1993330e3cC36B4a68B5790EFBcfE296b02efeDB", "x-modes": ["pull"], "x-settle": "after_serve"}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "required": ["query", "citations"], "properties": {"query": {"type": "string", "minLength": 3, "maxLength": 2000}, "citations": {"type": "array", "minItems": 1, "maxItems": 12, "items": {"type": "object", "required": ["url", "quote"], "properties": {"url": {"type": "string", "format": "uri"}, "quote": {"type": "string", "minLength": 8, "maxLength": 1500}}}}, "max_tokens": {"type": "integer", "minimum": 1, "maximum": 600}}}}}}, "responses": {"200": {"description": "brief", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "result": {"type": "object", "properties": {"brief": {"type": "string"}, "cited": {"type": "array", "items": {"type": "integer"}}, "citations": {"type": "array", "items": {"type": "object"}}}}}, "required": ["ok", "result"]}}}}, "400": {"description": "invalid input (e.g. empty quote); not charged"}, "402": {"description": "Payment required: WWW-Authenticate: Payment (MPP)"}}}}, "/x402/chat-nano": {"post": {"operationId": "chat_nano_x402", "parameters": [{"name": "X-Omni-Client-Nonce", "in": "header", "required": false, "x-required-when": "paid: present on every request that carries a payment credential (Authorization: Payment, X-PAYMENT or PAYMENT-SIGNATURE). A missing or malformed value returns 400 and the request is not charged. Unpaid price checks do not use it.", "description": "Paid requests include an X-Omni-Client-Nonce header: 22-128 base64url characters (>= 128 bits), unique per payment, generated by the client before paying. Requests without it return 400 and are not charged. The same credential with the same nonce returns the stored result of that payment. Examples: npx mppx -H 'X-Omni-Client-Nonce: <nonce>' ...; npx agentcash fetch --header 'X-Omni-Client-Nonce: <nonce>' ...", "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]{22,128}$"}}], "summary": "Chat completion (nano): <= 1000 in / 256 out tokens", "description": "OpenAI-style chat completion (single response, no streaming, no tools) via an upstream provider. Pay per call with x402 v2 (Base USDC) -- this URL accepts x402 only. The buyer is charged only after the completion is produced.", "x-payment-info": {"offers": [{"amount": "6000", "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "intent": "exact", "method": "x402", "network": "eip155:8453", "description": "chat-nano: one chat completion (USD 0.006)"}], "protocols": [{"x402": {}}], "price": {"mode": "fixed", "currency": "USD", "amount": "0.006"}, "x-network": "eip155:8453", "x-recipient": "0x1993330e3cC36B4a68B5790EFBcfE296b02efeDB", "x-resource": "https://pay.omnidev.tech/x402/chat-nano", "x-settle": "after_serve"}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"messages": {"type": "array", "items": {"type": "object", "properties": {"role": {"type": "string", "enum": ["system", "user", "assistant"]}, "content": {"type": "string"}}, "required": ["role", "content"]}}, "prompt": {"type": "string", "description": "shorthand for a single user message"}, "max_tokens": {"type": "integer", "minimum": 1, "maximum": 256}, "model": {"type": "string", "default": "auto", "enum": ["auto", "llama-3.1-8b", "kimi-k3"], "description": "auto selects the tier's model; llama-3.1-8b-instruct is accepted as an alias of llama-3.1-8b"}}}}}}, "responses": {"200": {"description": "chat.completion object (choices[0].message.content)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "settled": {"type": "boolean"}, "facilitator_tx": {"type": "string"}, "explorer": {"type": "string"}, "result": {"type": "object", "properties": {"id": {"type": "string"}, "object": {"type": "string"}, "model": {"type": "string"}, "choices": {"type": "array", "items": {"type": "object", "properties": {"index": {"type": "integer"}, "message": {"type": "object", "properties": {"role": {"type": "string"}, "content": {"type": "string"}}}, "finish_reason": {"type": "string"}}}}, "usage": {"type": "object"}}}}, "required": ["ok", "result"]}}}}, "400": {"description": "invalid input, or X-Omni-Client-Nonce missing / malformed on a paid request; not charged"}, "402": {"description": "Payment required: PAYMENT-REQUIRED (x402 v2, resource = this URL)"}, "409": {"description": "Credential already used, settle state unknown, or redelivery refused (body.reason and body.redelivery describe it); no second payment is taken"}, "503": {"description": "selling paused (cap or margin guard); no charge"}}}}, "/x402/chat-small": {"post": {"operationId": "chat_small_x402", "parameters": [{"name": "X-Omni-Client-Nonce", "in": "header", "required": false, "x-required-when": "paid: present on every request that carries a payment credential (Authorization: Payment, X-PAYMENT or PAYMENT-SIGNATURE). A missing or malformed value returns 400 and the request is not charged. Unpaid price checks do not use it.", "description": "Paid requests include an X-Omni-Client-Nonce header: 22-128 base64url characters (>= 128 bits), unique per payment, generated by the client before paying. Requests without it return 400 and are not charged. The same credential with the same nonce returns the stored result of that payment. Examples: npx mppx -H 'X-Omni-Client-Nonce: <nonce>' ...; npx agentcash fetch --header 'X-Omni-Client-Nonce: <nonce>' ...", "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]{22,128}$"}}], "summary": "Chat completion (small): <= 8000 in / 1024 out tokens", "description": "OpenAI-style chat completion (single response, no streaming, no tools) via an upstream provider. Pay per call with x402 v2 (Base USDC) -- this URL accepts x402 only. The buyer is charged only after the completion is produced.", "x-payment-info": {"offers": [{"amount": "8000", "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "intent": "exact", "method": "x402", "network": "eip155:8453", "description": "chat-small: one chat completion (USD 0.008)"}], "protocols": [{"x402": {}}], "price": {"mode": "fixed", "currency": "USD", "amount": "0.008"}, "x-network": "eip155:8453", "x-recipient": "0x1993330e3cC36B4a68B5790EFBcfE296b02efeDB", "x-resource": "https://pay.omnidev.tech/x402/chat-small", "x-settle": "after_serve"}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"messages": {"type": "array", "items": {"type": "object", "properties": {"role": {"type": "string", "enum": ["system", "user", "assistant"]}, "content": {"type": "string"}}, "required": ["role", "content"]}}, "prompt": {"type": "string", "description": "shorthand for a single user message"}, "max_tokens": {"type": "integer", "minimum": 1, "maximum": 1024}, "model": {"type": "string", "default": "auto", "enum": ["auto", "llama-3.1-8b", "kimi-k3"], "description": "auto selects the tier's model; llama-3.1-8b-instruct is accepted as an alias of llama-3.1-8b"}}}}}}, "responses": {"200": {"description": "chat.completion object (choices[0].message.content)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "settled": {"type": "boolean"}, "facilitator_tx": {"type": "string"}, "explorer": {"type": "string"}, "result": {"type": "object", "properties": {"id": {"type": "string"}, "object": {"type": "string"}, "model": {"type": "string"}, "choices": {"type": "array", "items": {"type": "object", "properties": {"index": {"type": "integer"}, "message": {"type": "object", "properties": {"role": {"type": "string"}, "content": {"type": "string"}}}, "finish_reason": {"type": "string"}}}}, "usage": {"type": "object"}}}}, "required": ["ok", "result"]}}}}, "400": {"description": "invalid input, or X-Omni-Client-Nonce missing / malformed on a paid request; not charged"}, "402": {"description": "Payment required: PAYMENT-REQUIRED (x402 v2, resource = this URL)"}, "409": {"description": "Credential already used, settle state unknown, or redelivery refused (body.reason and body.redelivery describe it); no second payment is taken"}, "503": {"description": "selling paused (cap or margin guard); no charge"}}}}, "/x402/chat-aup": {"post": {"operationId": "chat_aup_x402", "parameters": [{"name": "X-Omni-Client-Nonce", "in": "header", "required": false, "x-required-when": "paid: present on every request that carries a payment credential (Authorization: Payment, X-PAYMENT or PAYMENT-SIGNATURE). A missing or malformed value returns 400 and the request is not charged. Unpaid price checks do not use it.", "description": "Paid requests include an X-Omni-Client-Nonce header: 22-128 base64url characters (>= 128 bits), unique per payment, generated by the client before paying. Requests without it return 400 and are not charged. The same credential with the same nonce returns the stored result of that payment. Examples: npx mppx -H 'X-Omni-Client-Nonce: <nonce>' ...; npx agentcash fetch --header 'X-Omni-Client-Nonce: <nonce>' ...", "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]{22,128}$"}}, {"name": "X-Omni-Aup-Accept", "in": "header", "required": false, "description": "Restricted-access models only: paid requests carry X-Omni-Aup-Accept: 18+ (adults only; the acceptable-use policy applies). Absent -> 400 aup_acceptance_required, not charged.", "schema": {"type": "string", "enum": ["18+"]}}], "summary": "Chat completion (aup): <= 1000 in / 256 out tokens", "description": "OpenAI-style chat completion (single response, no streaming, no tools) via an upstream provider. Pay per call with x402 v2 (Base USDC) -- this URL accepts x402 only. The buyer is charged only after the completion is produced. Restricted-access lane. Policy: https://provider.omnidev.tech/docs/restricted.", "x-payment-info": {"offers": [{"amount": "8000", "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "intent": "exact", "method": "x402", "network": "eip155:8453", "description": "chat-aup: one chat completion (USD 0.008)"}], "protocols": [{"x402": {}}], "price": {"mode": "fixed", "currency": "USD", "amount": "0.008"}, "x-network": "eip155:8453", "x-recipient": "0x1993330e3cC36B4a68B5790EFBcfE296b02efeDB", "x-resource": "https://pay.omnidev.tech/x402/chat-aup", "x-settle": "after_serve"}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"messages": {"type": "array", "items": {"type": "object", "properties": {"role": {"type": "string", "enum": ["system", "user", "assistant"]}, "content": {"type": "string"}}, "required": ["role", "content"]}}, "prompt": {"type": "string", "description": "shorthand for a single user message"}, "max_tokens": {"type": "integer", "minimum": 1, "maximum": 256}, "model": {"type": "string", "default": "auto", "enum": ["auto", "glm-5.3-flash-uncensored", "mimo-v2.6-flash-abliterated"], "description": "auto selects the tier's model; llama-3.1-8b-instruct is accepted as an alias of llama-3.1-8b"}}}}}}, "responses": {"200": {"description": "chat.completion object (choices[0].message.content)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "settled": {"type": "boolean"}, "facilitator_tx": {"type": "string"}, "explorer": {"type": "string"}, "result": {"type": "object", "properties": {"id": {"type": "string"}, "object": {"type": "string"}, "model": {"type": "string"}, "choices": {"type": "array", "items": {"type": "object", "properties": {"index": {"type": "integer"}, "message": {"type": "object", "properties": {"role": {"type": "string"}, "content": {"type": "string"}}}, "finish_reason": {"type": "string"}}}}, "usage": {"type": "object"}}}}, "required": ["ok", "result"]}}}}, "400": {"description": "invalid input, or X-Omni-Client-Nonce missing / malformed on a paid request; not charged; content_policy_* (screened prompt) or aup_acceptance_required on restricted-access models (not charged)"}, "402": {"description": "Payment required: PAYMENT-REQUIRED (x402 v2, resource = this URL)"}, "409": {"description": "Credential already used, settle state unknown, or redelivery refused (body.reason and body.redelivery describe it); no second payment is taken"}, "503": {"description": "selling paused (cap or margin guard); no charge"}, "422": {"description": "content_policy_output: the completion tripped the output screen and was withheld (not charged)"}}}}, "/x402/brief": {"post": {"operationId": "brief_x402", "parameters": [{"name": "X-Omni-Client-Nonce", "in": "header", "required": false, "x-required-when": "paid: present on every request that carries a payment credential (Authorization: Payment, X-PAYMENT or PAYMENT-SIGNATURE). A missing or malformed value returns 400 and the request is not charged. Unpaid price checks do not use it.", "description": "Paid requests include an X-Omni-Client-Nonce header: 22-128 base64url characters (>= 128 bits), unique per payment, generated by the client before paying. Requests without it return 400 and are not charged. The same credential with the same nonce returns the stored result of that payment. Examples: npx mppx -H 'X-Omni-Client-Nonce: <nonce>' ...; npx agentcash fetch --header 'X-Omni-Client-Nonce: <nonce>' ...", "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]{22,128}$"}}], "summary": "Cited research brief from your quotes", "description": "Short brief grounded ONLY in the quotes you send, cited [n]. Empty or missing quotes are rejected with 400 and you are not charged. Charged only after the brief is produced.", "x-payment-info": {"offers": [{"amount": "8000", "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "intent": "exact", "method": "x402", "network": "eip155:8453", "description": "brief: one cited brief (USD 0.008)"}], "protocols": [{"x402": {}}], "price": {"mode": "fixed", "currency": "USD", "amount": "0.008"}, "x-network": "eip155:8453", "x-recipient": "0x1993330e3cC36B4a68B5790EFBcfE296b02efeDB", "x-resource": "https://pay.omnidev.tech/x402/brief", "x-settle": "after_serve"}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "required": ["query", "citations"], "properties": {"query": {"type": "string", "minLength": 3, "maxLength": 2000}, "citations": {"type": "array", "minItems": 1, "maxItems": 12, "items": {"type": "object", "required": ["url", "quote"], "properties": {"url": {"type": "string", "format": "uri"}, "quote": {"type": "string", "minLength": 8, "maxLength": 1500}}}}, "max_tokens": {"type": "integer", "minimum": 1, "maximum": 600}}}}}}, "responses": {"200": {"description": "brief", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "result": {"type": "object", "properties": {"brief": {"type": "string"}, "cited": {"type": "array", "items": {"type": "integer"}}, "citations": {"type": "array", "items": {"type": "object"}}}}}, "required": ["ok", "result"]}}}}, "400": {"description": "invalid input (e.g. empty quote); not charged"}, "402": {"description": "Payment required: PAYMENT-REQUIRED (x402 v2, resource = this URL)"}}}}, "/v1/models": {"get": {"operationId": "list_models", "summary": "Catalog: price per Mtok, context, rails", "security": [], "responses": {"200": {"description": "OpenAI-style model list with x_pricing"}}}}, "/v1/models/{model}": {"get": {"operationId": "get_model", "summary": "One model card (price per Mtok, context, rails)", "security": [], "parameters": [{"name": "model", "in": "path", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "model card"}, "404": {"description": "unknown model"}}}}, "/v1/chat/completions": {"post": {"operationId": "chat_completions", "summary": "OpenAI-style chat completion over the catalog (JSON or SSE stream; function tools)", "description": "An unpaid request receives 402 with a per-request quote (WWW-Authenticate: Payment, MPP). x402 payments are not accepted on this route: 400 x402_not_accepted_on_this_route, with x402_url naming the x402 route. Package API keys (Authorization: Bearer) and wallet-signed package headers are accepted. The charge occurs only after the completion is produced. While the upstream is unavailable the route answers 503 upstream_unavailable without charge. Every request that carries a payment credential (PAYMENT-SIGNATURE, X-PAYMENT or Authorization: Payment) also carries X-Omni-Client-Nonce: a random base64url value of 22-128 characters, new for each payment. Without it the answer is 400 client_nonce_required and nothing is charged. Example: -H 'X-Omni-Client-Nonce: <22-128 base64url chars>'. Restricted-access models are paid per call only (x402 or MPP charge), no packages, no streaming; Policy: https://provider.omnidev.tech/docs/restricted.", "x-payment-info": {"protocols": [{"mpp": {"method": "tempo", "intent": "charge", "currency": "0x20C000000000000000000000b9537d11c60E8b50"}}], "price": {"mode": "dynamic", "currency": "USD", "min": "0.0008", "max": "0.02"}, "x-rate-card": "https://pay.omnidev.tech/v1/models", "x-schemes": {"mpp": "tempo charge (fixed quote for the request; min $0.0008)"}, "x-settle": "after_serve", "x-packages": "https://pay.omnidev.tech/v1/packages"}, "parameters": [{"name": "X-Omni-Client-Nonce", "in": "header", "required": false, "description": "Required on paid requests, absent on unpaid price checks (402). Every request that carries a payment credential (PAYMENT-SIGNATURE, X-PAYMENT or Authorization: Payment) also carries X-Omni-Client-Nonce: a random base64url value of 22-128 characters, new for each payment. Without it the answer is 400 client_nonce_required and nothing is charged. Example: -H 'X-Omni-Client-Nonce: <22-128 base64url chars>'.", "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]{22,128}$"}}, {"name": "X-Omni-Aup-Accept", "in": "header", "required": false, "description": "Restricted-access models only: paid requests carry X-Omni-Aup-Accept: 18+ (adults only; the acceptable-use policy applies). Absent -> 400 aup_acceptance_required, not charged.", "schema": {"type": "string", "enum": ["18+"]}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "required": ["model", "messages"], "additionalProperties": false, "properties": {"model": {"type": "string", "enum": ["kimi-k3", "deepseek-v4.1-flash", "glm-5.3", "llama-3.1-8b", "gpt-oss-120b", "gpt-6-luna", "claude-haiku-5.5", "gpt-6-sol", "claude-sonnet-5.5", "gemini-3.1-pro", "grok-4.7", "gpt-6-astra", "glm-5.3-flash-uncensored", "mimo-v2.6-flash-abliterated"], "description": "Catalog model id (GET /v1/models lists prices, context and capabilities)."}, "messages": {"type": "array", "minItems": 1, "maxItems": 64, "items": {"type": "object", "required": ["role"], "additionalProperties": false, "properties": {"role": {"type": "string", "enum": ["system", "developer", "user", "assistant", "tool"]}, "content": {"type": ["string", "null"], "description": "Message text (null on an assistant message that only carries tool_calls)."}, "tool_calls": {"type": "array", "maxItems": 32, "description": "On an assistant message: the calls returned by the model."}, "tool_call_id": {"type": "string", "description": "On a tool message: the id of the call being answered."}}}, "description": "Conversation, oldest first (roles: system, developer, user, assistant, tool)."}, "max_tokens": {"type": "integer", "minimum": 1, "description": "Upper bound on output tokens; it sets the quoted maximum."}, "max_completion_tokens": {"type": "integer", "minimum": 1, "description": "Alias of max_tokens."}, "temperature": {"type": "number", "minimum": 0, "maximum": 2}, "top_p": {"type": "number", "minimum": 0, "maximum": 1}, "stream": {"type": "boolean", "description": "true: Server-Sent Events (OpenAI chunk format). The 402 and validation errors are still plain JSON; the receipt (x_omnipay) is in the final chunk."}, "stream_options": {"type": "object", "properties": {"include_usage": {"type": "boolean"}}, "additionalProperties": false}, "tools": {"type": "array", "maxItems": 32, "description": "Function tools the model may call (OpenAI-style). Only on models whose card says capabilities.tools.", "items": {"type": "object", "required": ["type", "function"], "properties": {"type": {"type": "string", "enum": ["function"]}, "function": {"type": "object", "required": ["name"], "properties": {"name": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,64}$"}, "description": {"type": "string", "maxLength": 2000}, "parameters": {"type": "object", "description": "JSON Schema of the arguments."}, "strict": {"type": "boolean"}}}}}}, "tool_choice": {"description": "none | auto | required, or {\"type\":\"function\",\"function\":{\"name\":...}}.", "oneOf": [{"type": "string", "enum": ["none", "auto", "required"]}, {"type": "object"}]}, "parallel_tool_calls": {"type": "boolean"}, "response_format": {"type": "object", "properties": {"type": {"type": "string", "enum": ["text", "json_object"]}}, "additionalProperties": false}}}}}}, "responses": {"200": {"description": "chat.completion (+ x_omnipay: rail, charged_usd, settled_tx); with stream:true text/event-stream of chat.completion.chunk events ending in a chunk that carries x_omnipay, then [DONE]; a failure after the stream began is one `error` event (charged false unless stated)", "content": {"application/json": {}, "text/event-stream": {}}}, "402": {"description": "payment required (quote + offers)"}, "404": {"description": "model_not_found (not charged)"}, "400": {"description": "invalid input, or X-Omni-Client-Nonce missing / malformed on a paid request (not charged); content_policy_* (screened prompt) or aup_acceptance_required on restricted-access models (not charged)"}, "422": {"description": "price_exceeds_rail_cap: the quote for this prompt and max_tokens is above the pay-per-call price cap; the body carries max_affordable_max_tokens (not charged)"}, "429": {"description": "too_many_requests: this client is sending challenges too fast (Retry-After; not charged)"}, "409": {"description": "replayed credential or settlement state unknown; the same credential with the same X-Omni-Client-Nonce is redeliverable once settled, and no new payment is needed"}, "502": {"description": "upstream failed (not charged) or settlement failed (result withheld)"}, "503": {"description": "selling paused / rails closed (not charged)"}}}}, "/v1/packages": {"get": {"operationId": "list_packages", "summary": "Prepaid package SKUs, rails, availability", "security": [], "responses": {"200": {"description": "SKUs, rails, availability"}}}}, "/v1/packages/{sku}": {"post": {"operationId": "buy_package", "summary": "Buy a prepaid package (MPP charge)", "parameters": [{"name": "sku", "in": "path", "required": true, "schema": {"type": "string"}}, {"name": "X-Omni-Client-Nonce", "in": "header", "required": false, "description": "Required on paid requests, absent on unpaid price checks (402). Every request that carries a payment credential (PAYMENT-SIGNATURE, X-PAYMENT or Authorization: Payment) also carries X-Omni-Client-Nonce: a random base64url value of 22-128 characters, new for each payment. Without it the answer is 400 client_nonce_required and nothing is charged. Example: -H 'X-Omni-Client-Nonce: <22-128 base64url chars>'.", "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]{22,128}$"}}], "requestBody": {"content": {"application/json": {"schema": {"type": "object", "properties": {"credential": {"type": "string", "enum": ["api_key", "wallet"]}}}}}}, "x-payment-info": {"protocols": [{"mpp": {"method": "tempo", "intent": "charge", "currency": "0x20C000000000000000000000b9537d11c60E8b50"}}], "price": {"mode": "dynamic", "currency": "USD", "min": "2.50", "max": "1000"}, "x-price-list": "https://pay.omnidev.tech/v1/packages"}, "responses": {"200": {"description": "package + credential"}, "402": {"description": "payment required"}, "503": {"description": "liability cap reached / paused (not charged)"}}}}, "/v1/packages/me": {"get": {"operationId": "package_balance", "summary": "Package balance for the bearer key or signing wallet", "security": [{"bearer": []}], "responses": {"200": {"description": "balance"}}}}, "/v1/packages/{sku}/checkout": {"post": {"operationId": "card_checkout", "summary": "Card checkout (Stripe) for the 10M and 100M token packs", "security": [], "responses": {"200": {"description": "checkout_url + claim"}}}}, "/v1/bundles": {"get": {"operationId": "list_bundles", "summary": "Prepaid token bundles (10M/100M/1B), prices, bonus tokens, availability", "security": [], "responses": {"200": {"description": "bundle SKUs with price, tokens, bonus tokens on agent rails, weights, validity, availability"}}}}, "/v1/bundles/{sku}": {"post": {"operationId": "buy_bundle", "summary": "Buy a prepaid token bundle with an MPP charge (wallet-bound balance)", "description": "Unpaid: 402 with the MPP challenge and the token count for this rail (agent rails include bonus tokens). Paid: 200 with the package id and the wallet binding; the paying address owns the balance. Draw from it with wallet-signed chat requests (X-Omni-Wallet, X-Omni-Wallet-Ts, X-Omni-Wallet-Sig). Every request that carries a payment credential (PAYMENT-SIGNATURE, X-PAYMENT or Authorization: Payment) also carries X-Omni-Client-Nonce: a random base64url value of 22-128 characters, new for each payment. Without it the answer is 400 client_nonce_required and nothing is charged. Example: -H 'X-Omni-Client-Nonce: <22-128 base64url chars>'.", "parameters": [{"name": "sku", "in": "path", "required": true, "schema": {"type": "string"}}, {"name": "X-Omni-Client-Nonce", "in": "header", "required": false, "description": "Required on paid requests, absent on unpaid price checks (402). Every request that carries a payment credential (PAYMENT-SIGNATURE, X-PAYMENT or Authorization: Payment) also carries X-Omni-Client-Nonce: a random base64url value of 22-128 characters, new for each payment. Without it the answer is 400 client_nonce_required and nothing is charged. Example: -H 'X-Omni-Client-Nonce: <22-128 base64url chars>'.", "schema": {"type": "string", "pattern": "^[A-Za-z0-9_-]{22,128}$"}}], "x-payment-info": {"protocols": [{"mpp": {"method": "tempo", "intent": "charge", "currency": "0x20C000000000000000000000b9537d11c60E8b50"}}], "price": {"mode": "dynamic", "currency": "USD", "min": "0.51", "max": "5.00"}, "x-price-list": "https://pay.omnidev.tech/v1/bundles"}, "responses": {"200": {"description": "package id, tokens (incl. bonus), expiry, wallet credential"}, "402": {"description": "payment required"}, "404": {"description": "unknown or not-for-sale sku (not charged)"}, "503": {"description": "liability cap reached / bundle temporarily unavailable / paused (not charged)"}}}}, "/v1/balance": {"get": {"operationId": "bundle_balance", "summary": "Bundle balance for the signing wallet (tokens remaining, held, expiry, daily room)", "security": [{"walletSig": []}], "description": "Signed with the wallet headers over `GET /v1/balance` (EIP-191, same scheme as wallet-signed chat).", "responses": {"200": {"description": "bundles + totals"}, "401": {"description": "wallet_auth_* (malformed, stale, bad signature, replay)"}}}}, "/v1/balance/usage": {"get": {"operationId": "bundle_usage", "summary": "Per-call debits for the signing wallet's bundles (newest first)", "security": [{"walletSig": []}], "parameters": [{"name": "limit", "in": "query", "schema": {"type": "integer", "maximum": 200}}, {"name": "package_id", "in": "query", "schema": {"type": "string"}}, {"name": "before_id", "in": "query", "schema": {"type": "integer"}}], "responses": {"200": {"description": "usage rows"}, "401": {"description": "wallet_auth_*"}}}}}, "components": {"securitySchemes": {"walletSig": {"type": "apiKey", "in": "header", "name": "X-Omni-Wallet-Sig", "description": "EIP-191 personal_sign over omnipay-p9, host, METHOD path, unix ts, sha256(body); with X-Omni-Wallet and X-Omni-Wallet-Ts"}, "bearer": {"type": "apiKey", "in": "header", "name": "Authorization", "description": "Package key sent as: Authorization: Bearer <key>"}}}}