{"protocol":"onipin/0.2","role":"platform","name":"OniPin","description":"Open chat protocol for businesses and AI assistants. Discover a business pin, handshake, then chat or create appointments/orders. Wallet 2 AI (Onicredit app balance + ONC Base mirror) funds authorized agent purchases with human spend limits.","transport":"https","intent_spec":"https://onnivers.store/docs/intent-spec/","llms_txt":"https://onnivers.store/llms.txt","demo_pin":"onp_vuzadcjv3xw7","demo_chat":"https://onnivers.store/c/onp_vuzadcjv3xw7","commerce":{"product":"Wallet 2 AI","balance_unit":"Onicredit","spend_truth":"web2_app_ledger","chain_mirror":"ONC","chain":"base","related_utility_asset":"ONI","summary":"Buyer-side wallet: humans fund Onicredit (app spend truth) via signed gateways or controlled ONI convert; optional ONC cryptographic mirror on Base with restricted transfers; authorized AI agents (Claude, Cursor, ChatGPT, Gemini, custom MCP) purchase under limits. Do not sum app balance + ONC.","page":"https://onnivers.store/wallet-2-ai/","page_en":"https://onnivers.store/en/wallet-2-ai/","documentation":"https://onnivers.store/llms.txt","app_ui":"https://onnivers.store/app/creditos","security":["signed_gateway_topups","atomic_idempotent_credits","restricted_onc_transfers","encrypted_minter_custody_backend"],"agents":["claude","cursor","chatgpt","gemini","mcp-clients","custom-http"],"keywords":["Wallet 2 AI","Onicredit","ONC","ONI","AI agent payments","automatic AI purchases","agentic commerce","prepaid AI wallet","credit security"]},"discover":{"by_pin":"https://onnivers.store/v1/ping/{pin}","by_username":"https://onnivers.store/v1/discover?username={handle}","by_domain":"https://onnivers.store/v1/discover?url={https://business.example}","by_search":"https://onnivers.store/v1/discover/search?nombre={name}&categoria={term}&ciudad={city}&telefono={phone}&producto={product}&precio_max={max}&ordenar_por=precio_asc|distancia&lat={lat}&lng={lng}","well_known_business":"https://onnivers.store/.well-known/onipin.json?pin={pin}","well_known_platform":"https://onnivers.store/.well-known/onipin"},"handshake":"https://onnivers.store/v1/handshake/{pin}","chat":"https://onnivers.store/v1/chat/{pin}","mcp":"https://onnivers.store/mcp","openapi":"https://onnivers.store/v1/openapi.yaml","sdks":{"javascript":"https://www.npmjs.com/package/onipin-js","react":"https://www.npmjs.com/package/onipin-react","python":"https://pypi.org/project/onipin/","pip":"pip install onipin","npm_js":"npm install onipin-js","npm_react":"npm install onipin-react"},"agent_auth":{"optional":true,"prefix":"ona_","obtain":"Ajustes → Clave agente (cuenta OniPin con pin verificado)","quotas":{"anonymous":"20 req/min por IP+pin","verified":"120 req/min por agente","degraded":"5 req/min"}},"supports":["chat","faq","catalog","appointments","orders","payments","human_handoff","realtime","messages.poll"],"intents":["business.chat","appointment.create","appointment.status","order.create","order.status","product.price","product.info","catalog.browse","payment.info","human.handoff"],"how_assistants_should_behave":"If the user intent requires talking to a business, resolve OniPin on the domain, handshake, then POST /v1/chat with agent+intent. Always reuse conversationId. If reply is null (waiting_human / human.handoff), poll GET /v1/chat/{pin}/{conversationId}/messages with cursor.after until a bot/owner message appears. Prefer structured /v1/bookings and /v1/orders when chat is not needed. Use appointment.status / order.status via chat. Optional: send Authorization Bearer ona_… for verified callerPin and higher rate limits.","polling":{"messages":"https://onnivers.store/v1/chat/{pin}/{conversationId}/messages","cursor":"after = ISO created_at or message UUID (afterId)","recommendedIntervalMs":2000},"realtime":{"config":"https://onnivers.store/v1/realtime/config","token":"https://onnivers.store/v1/chat/{pin}/{conversationId}/realtime-token"}}