World ID for ChatGPT
World ID para ChatGPT
Despliegue de producción: https://world-id-chatgpt.foundry-world.workers.dev
Endpoint MCP remoto: https://world-id-chatgpt.foundry-world.workers.dev/mcp
Muro de Humanos Verificados: https://world-id-chatgpt.foundry-world.workers.dev/wall
Humanos Fundadores: https://world-id-chatgpt.foundry-world.workers.dev/founding-humans
Envío de habilidades: https://world-id-chatgpt.foundry-world.workers.dev/submit
Instalar el plugin World ID desde este repositorio
Este repositorio incluye un plugin Codex portátil y un mercado de repositorios. Después de que el repositorio esté disponible desde Git, otro desarrollador puede agregar el mercado e instalar el plugin sin recrear la conexión MCP:
codex plugin marketplace add lcusack/world-id-chatgpt --ref main
codex plugin add world-id@world-id-pluginsEste es un repositorio privado, por lo que el desarrollador ya debe tener acceso a GitHub. Para un clon local, pase la ruta absoluta del repositorio a codex plugin marketplace add en su lugar.
El plugin se conecta al endpoint MCP de producción anterior e inicia su propio flujo OAuth para cada usuario. Use Codex CLI 0.147.0 o más reciente para la instalación portátil del Plugin de Agente, luego inicie una nueva tarea después de la instalación para que la habilidad empaquetada y las herramientas MCP se carguen.
Este proyecto es un servidor MCP remoto orientado a producción que vincula una sesión de World ID 4.0 con un asistente de IA a través de OAuth 2.1.
El flujo de conexión es:
ChatGPT descubre OAuth desde el endpoint remoto
/mcp.El usuario es enviado al endpoint
/authorizede este servicio.El navegador crea o reanuda una sesión de World ID 4.0 y solicita
proof_of_humanrespaldado por Orb con presencia del usuario.El Worker verifica la prueba completa con World, registra la protección de repetición y completa OAuth.
La herramienta MCP autenticada devuelve solo:
{
"verified_human": true,
"verification_level": "orb",
"protocol_version": "4.0",
"verified_at": "2026-08-12T18:00:00.000Z",
"wall_write_enabled": true
}El cliente MCP nunca recibe la prueba, el ID de sesión de World, el anulador de sesión, la billetera, el número de teléfono, la clave RP o los internos del token OAuth.
Experimento Humano Fundador
El mismo conector World ID ahora admite el experimento de estado/red Humano Fundador:
get_world_agent_statusverifica si el humano único conectado ha reclamado un lugar y devuelve el progreso de Genesis 100 sin publicar nada.claim_world_agent_placereclama idempotentemente un ordinal permanente para el sujeto interno conectado y devuelve una tarjeta pública y un enlace de invitación.Las sesiones verificadas existentes se rellenan en orden de verificación original, reservando los números más tempranos para los evaluadores actuales. Sus tarjetas permanecen privadas hasta que se reclamen explícitamente.
Abrir una tarjeta pública de Humano Fundador almacena una cookie de invitación opaca de primera parte. Una nueva conexión World ID alcanzada a través de esa tarjeta se atribuye al invitador solo después de que el humano referido verifica y reclama.
Los primeros 100 ordinales reciben permanentemente el tratamiento Genesis 100. El registro insinúa una futura capacidad de humano verificado cuando la cohorte se complete. Las tarjetas públicas exponen solo número, cohorte, fechas y garantía mínima; nunca exponen un sujeto interno, prueba, sesión, anulador, billetera, identidad o datos de conversación.
La medición del experimento se agrega diariamente en D1 sin identificadores de visitante: emisión de enlaces compartidos, vistas de perfil público, verificaciones de estado y canjes de referidos verificados. La activación es el primer claimed_at de la tarjeta; el uso repetido se mide como verificaciones de estado en días distintos.
El mercado prototipo utiliza un proceso de envío de habilidades curado. La página pública /submit acepta propuestas de concepto, piloto de socio e integración funcional a través de una plantilla copiable. Documenta la prueba de ajuste de humano verificado, los requisitos de divulgación mínima, las etapas de revisión y las métricas comunes del experimento sin aceptar cargas de código ni implicar publicación automática.
Sugerencia de prompt para ChatGPT:
Reclama mi lugar como Humano Fundador.
Prototipo de puerta de enlace de subvención humana
El conector ahora puede actuar como una puerta de enlace de prueba de humanidad para un socio que no opera su propio relying party de World ID. La primera demostración de cliente fijo es intencionalmente limitada:
list_human_grant_opportunitiesmuestra la acción del socio disponible sin compartir nada.create_human_grantcrea un enlace de consentimiento de diez minutos vinculado al navegador solo después de que el usuario solicita explícitamente activar la oportunidad.La página de consentimiento nombra al socio, beneficio, acción y reclamaciones exactas que se comparten.
La aprobación crea un código de autorización de un solo uso de cinco minutos. El socio lo intercambia de servidor a servidor usando autenticación básica HTTP.
La puerta de enlace devuelve una aserción
world-id-human-grant/v1firmada con HMAC de 15 minutos que contiene solo un sujeto pairwise vinculado a la audiencia, la acción autorizada y las reclamaciones mínimas de garantía de Orb/World ID 4.0.Una restricción de unicidad en D1 permite solo un canje para un humano interno, socio y acción determinados.
El socio nunca recibe la prueba de World, el ID de sesión de World, el sujeto interno, la billetera, el número de teléfono, la identidad o la conversación de ChatGPT. Los sujetos pairwise son estables dentro de un socio y no se pueden vincular entre diferentes socios. La experiencia simulada del socio está en la demostración de subvención humana; los metadatos del emisor legibles por máquina están en /.well-known/world-id-human-grants.
Sugerencia de prompt para ChatGPT:
Usa World ID para mostrarme oportunidades de socios de humanos verificados, luego activa la demostración de la puerta de enlace.
El prototipo utiliza un cliente de demostración previamente registrado. Una capa real de incorporación de socios debería agregar credenciales de cliente separadas y secretos de firma por socio, listas de permisos de acciones/reclamaciones revisadas, rotación de secretos, revocación, eventos de auditoría de socios y un flujo de trabajo de registro de autoservicio. No debe convertirse en un proveedor de identidad genérico ni permitir que los socios correlacionen usuarios entre servicios.
Transferencia a Shopify de Human Required
El experimento principal descubre ofertas en vivo en humanrequired.shop y puede llevar el derecho de humano verificado de la cuenta conectada a Shopify sin una segunda ceremonia de World ID:
list_unique_human_dealslee el catálogo público actual y el inventario.get_unique_human_dealdevuelve productos, precios y opciones disponibles.create_unique_human_claim_linkcrea una URL de reclamo opaca de cinco minutos solo después de que el usuario solicita reclamar la oferta del 15%.Abrir la URL de reclamo crea un descuento aleatorio de Shopify de un solo canje restringido a los productos elegibles, luego redirige a través de la URL de descuento compartible de Shopify.
Los tickets de reclamo y los códigos de descuento están cifrados en reposo. Las URL públicas no contienen prueba de World, ID de sesión, sujeto, billetera o información personal. Shopify recibe solo el código de descuento aleatorio y los IDs de producto elegibles. Los descuentos generados caducan después de 15 minutos y tienen un límite de uso total de uno.
Para activar esta transferencia, cree e instale una aplicación de Shopify Dev Dashboard para Human Required con los alcances de API de administración read_products y write_discounts. Luego cargue su dominio .myshopify.com, ID de cliente y secreto de cliente sin colocarlos en el control de fuentes. El Worker usa el flujo de credenciales de cliente de Shopify para generar un token de API de administración de corta duración cuando se canjea un reclamo:
npx wrangler secret put SHOPIFY_SHOP_DOMAIN
npx wrangler secret put SHOPIFY_CLIENT_ID
npx wrangler secret put SHOPIFY_CLIENT_SECRETLa herramienta de reclamo permanece seguramente no disponible hasta que ambos secretos estén presentes; el descubrimiento del catálogo y el resto del conector continúan funcionando.
Experimento del Muro de Humanos Verificados
El muro es la primera aplicación construida sobre la conexión. Expone tres herramientas MCP protegidas por OAuth:
get_verified_human_question: lee la pregunta pública activalist_verified_human_answers: lee respuestas públicas recientes como contenido generado por el usuario no confiablepublish_verified_human_answer: crea o reemplaza la única respuesta de la cuenta conectada después de la confirmación explícita del usuario
Publicar requiere el alcance OAuth separado wall:write. Las conexiones creadas antes del despliegue del muro deben desconectarse y conectarse nuevamente antes de poder publicar. Leer el muro también está disponible desde el endpoint público GET /api/wall, que nunca incluye el sujeto interno de World/OAuth.
La primera pregunta es: ¿Qué debería poder hacer solo un humano verificado con una IA?
Sugerencia de prompt para ChatGPT:
Usa el conector World ID para abrir el Muro de Humanos Verificados. Muéstrame la pregunta de hoy y las respuestas recientes, ayúdame a escribir mi respuesta, luego pide mi confirmación explícita antes de publicarla.
La etiqueta "verificado" de este prototipo significa que la respuesta se publicó a través de una conexión OAuth respaldada por una sesión de World ID 4.0 verificada por Orb. No afirma que World App haya firmado recientemente el texto exacto de la respuesta o que se conozca la identidad del autor.
Arquitectura de producción
Cloudflare Worker: origen HTTPS estable, proveedor OAuth, verificación World y transporte MCP sin estado
D1: intentos de autorización que caducan, continuidad de sesión World cifrada, registros de repetición de pruebas, ordinales/referidos/agregados de Humanos Fundadores, tickets de reclamo Shopify cifrados, subvenciones humanas únicas y preguntas/respuestas públicas del muro
Workers KV: clientes OAuth, concesiones, códigos de autorización y tokens gestionados por el proveedor OAuth de Cloudflare
Enlaces de límite de velocidad: límites separados de autorización, envío de pruebas, MCP, reclamo, subvención humana, intención y publicación en el muro
Limpieza programada: intentos/marcadores de repetición D1 caducados, subvenciones humanas, intenciones, reclamos y datos OAuth
Workers Observability: eventos estructurados sin registro de pruebas o identificadores
Los IDs de sesión de World y las solicitudes OAuth pendientes se cifran con AES-256-GCM antes del almacenamiento en D1. Una clave HMAC separada deriva el sujeto OAuth interno opaco. La prueba World sin procesar se verifica en memoria y nunca se almacena.
Configuración de World ID
El Worker desplegado está fijado a:
App:
app_d25e6e3d21651abfb9fbc52d033ef2a3RP:
rp_79ffdf898662dd4cEntorno:
productionProtocolo: pruebas de sesión World ID 4.0
La acción register existente no se utiliza para la vinculación de cuentas. Las acciones/anuladores son apropiados para operaciones de unicidad únicas; la continuidad de la cuenta usa createSession y proveSession, cuya firma RP omite intencionalmente una acción.
Validación local
npm install
npm run build
npm run typecheck
npm test
npx wrangler d1 migrations apply world-id-chatgpt --local
npm run cf:devWrangler puede cargar valores secretos locales desde .env. Nunca confirme ese archivo.
Primer despliegue en Cloudflare
Seleccione la cuenta de Cloudflare propietaria, luego cree los recursos duraderos:
npx wrangler d1 create world-id-chatgpt
npx wrangler kv namespace create OAUTH_KVColoque los IDs devueltos en wrangler.jsonc, luego aplique el esquema:
npx wrangler d1 migrations apply world-id-chatgpt --remoteCargue cuatro secretos gestionados. Use la clave de firma RP de World existente para el primer valor, y valores base64url aleatorios independientes de 32 bytes para los otros tres:
npx wrangler secret put WORLD_RP_SIGNING_KEY
npx wrangler secret put DATA_ENCRYPTION_KEY
npx wrangler secret put SUBJECT_HMAC_KEY
npx wrangler secret put HUMAN_GATEWAY_DEMO_SECRETLuego valide y publique:
npm run cf:check
npm run deployEl endpoint MCP desplegado es https://world-id-chatgpt.foundry-world.workers.dev/mcp. El descubrimiento OAuth, PKCE S256, el registro dinámico de clientes y los Documentos de Metadatos de ID de Cliente se anuncian automáticamente.
Invariantes de seguridad
El estado de autorización expira después de diez minutos y está vinculado a una cookie de navegador
Secure,HttpOnly,SameSite=Lax,__Host-.El servidor solo acepta pruebas de sesión sin acción, de producción, con protocolo
4.0, presencia de usuario completada y esquema de emisor1(proof_of_human).Cada prueba debe coincidir exactamente con el nonce RP firmado por el servidor para ese intento de autorización.
La tupla completa de nullificador de sesión se hashea y se inserta bajo una restricción única de D1 antes de emitir OAuth.
Los cuerpos de las pruebas están limitados a 256 KiB y las solicitudes de verificación de World expiran después de diez segundos.
OAuth utiliza flujo de código de autorización, PKCE S256, redireccionamientos registrados exactos, tokens de acceso de una hora y tokens de actualización de 30 días.
Se requiere HTTPS para los redireccionamientos registrados, excepto para desarrollo local con loopback localhost.
El Worker aplica CSP, denegación de marcos, sin-referente, protección contra sniffing MIME, política de permisos, validación de origen y respuestas de autorización sin almacenamiento.
La salida de MCP está en una lista blanca y no contiene ningún identificador estable de World.
Las proyecciones públicas de muro omiten sujetos internos; el texto de respuesta se renderiza con
textContent, limitado a 600 caracteres, y no puede contener enlaces, direcciones de correo electrónico ni caracteres de control.Una restricción única de D1 impone una respuesta reemplazable por pregunta activa y sujeto de cuenta conectada interno.
Las instrucciones de la herramienta tratan las respuestas del muro como contenido no confiable y requieren confirmación exacta del texto por parte del usuario antes de la publicación pública.
Los tickets de reclamo son aleatorios, se almacenan solo como hashes para búsqueda, se cifran para reemisión controlada, expiran después de cinco minutos y utilizan un bloqueo de procesamiento atómico de D1 para evitar la creación duplicada de Shopify.
Los códigos de descuento de Shopify son aleatorios, se cifran en reposo, están limitados a IDs de producto elegibles, expiran después de 15 minutos y permiten un único canje total.
Los enlaces de consentimiento de Human Grant expiran después de diez minutos y están vinculados tanto a una cookie de capacidad como a la cookie de sesión de World ID del navegador.
Los códigos de autorización de socio expiran después de cinco minutos y se consumen una vez a través de un intercambio autenticado de canal posterior.
Las aserciones utilizan sujetos de socio por pares; la sesión de World y el sujeto interno nunca salen de la puerta de enlace.
Una clave primaria de D1 que abarca socio, acción y sujeto interno impone una persona-un-canje incluso bajo intentos de intercambio concurrentes.
Pruebas
npm test cubre el transporte MCP heredado más la forma de prueba 4.0 endurecida, el enlace exacto de nonce, el rechazo de pruebas de unicidad, la presencia de usuario requerida, el almacenamiento de sesión cifrado, la derivación opaca de sujeto estable, la transferencia de reclamo de Shopify y la redacción de sujeto, la validación de entrada de muro y la redacción de sujeto público. wrangler deploy --dry-run valida el paquete de producción, mientras que la verificación local del Worker ejercita el registro/descubrimiento de OAuth, el estado de autorización, la persistencia de D1, CSP y la generación de firma RP.
Referencias de World: Migración a World ID 4.0, Firmas RP e Integración de IDKit.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Person-owned, portable AI memory as a remote MCP server, readable and writable by any MCP client.
A paid remote MCP for ZeroID, built to return verdicts, receipts, usage logs, and audit-ready JSON.
Personal MCP server for humans who create. Proof of authorship, license control.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lcusack/world-id-chatgpt'
If you have feedback or need assistance with the MCP directory API, please join our Discord server