World ID for ChatGPT
World ID для ChatGPT
Продакшн-развёртывание: https://world-id-chatgpt.foundry-world.workers.dev
Удалённая конечная точка MCP: https://world-id-chatgpt.foundry-world.workers.dev/mcp
Стена подтверждённого человека: https://world-id-chatgpt.foundry-world.workers.dev/wall
Основатели-люди: https://world-id-chatgpt.foundry-world.workers.dev/founding-humans
Отправка навыков: https://world-id-chatgpt.foundry-world.workers.dev/submit
Установка плагина World ID из этого репозитория
Этот репозиторий включает портативный плагин Codex и маркетплейс репозитория. После того как репозиторий доступен через Git, другой разработчик может добавить маркетплейс и установить плагин без повторного создания MCP-соединения:
codex plugin marketplace add lcusack/world-id-chatgpt --ref main
codex plugin add world-id@world-id-pluginsЭто частный репозиторий, поэтому у разработчика уже должен быть доступ к GitHub. Для локального клона укажите абсолютный путь к репозиторию в codex plugin marketplace add.
Плагин подключается к продакшн-конечной точке MCP, указанной выше, и запускает собственный поток OAuth для каждого пользователя. Используйте Codex CLI 0.147.0 или новее для установки портативного плагина Agent, затем начните новую задачу после установки, чтобы загрузились встроенный навык и инструменты MCP.
Этот проект представляет собой продакшн-формы удалённый MCP-сервер, который связывает сессию World ID 4.0 с ИИ-ассистентом через OAuth 2.1.
Поток подключения:
ChatGPT обнаруживает OAuth через удалённую конечную точку
/mcp.Пользователь направляется на конечную точку
/authorizeэтого сервиса.Браузер создаёт или возобновляет сессию World ID 4.0 и запрашивает
proof_of_humanс поддержкой Orb и подтверждением присутствия пользователя.Worker проверяет полное доказательство с World, записывает защиту от повторного использования и завершает OAuth.
Аутентифицированный инструмент MCP возвращает только:
{
"verified_human": true,
"verification_level": "orb",
"protocol_version": "4.0",
"verified_at": "2026-08-12T18:00:00.000Z",
"wall_write_enabled": true
}Клиент MCP никогда не получает доказательство, идентификатор сессии World, нуллификатор сессии, кошелёк, номер телефона, ключ RP или внутренние данные токена OAuth.
Эксперимент «Основатель-человек»
Тот же коннектор World ID теперь поддерживает эксперимент со статусом/сетью «Основатель-человек»:
get_world_agent_statusпроверяет, занял ли подключённый уникальный человек своё место, и возвращает прогресс Genesis 100 без публикации чего-либо.claim_world_agent_placeидемпотентно занимает одно постоянное порядковое число для подключённого внутреннего субъекта и возвращает публичную карточку и пригласительную ссылку.Существующие подтверждённые сессии заполняются в исходном порядке подтверждения, резервируя наименьшие номера для текущих тестировщиков. Их карточки остаются приватными до явного запроса на публикацию.
Открытие публичной карточки «Основатель-человек» сохраняет непрозрачный first-party куки-приглашения. Новое соединение World ID, полученное через эту карточку, приписывается пригласившему только после того, как приглашённый человек подтвердит свою личность и займёт место.
Первые 100 порядковых номеров навсегда получают статус Genesis 100. Реестр намекает на будущую возможность для подтверждённых людей, когда когорта завершится. Публичные карточки раскрывают только номер, когорту, даты и минимальные гарантии; они никогда не раскрывают внутреннего субъекта, доказательство, сессию, нуллификатор, кошелёк, личность или данные разговоров.
Измерения эксперимента агрегируются ежедневно в D1 без идентификаторов посетителей: количество выданных пригласительных ссылок, просмотры публичных профилей, проверки статуса и реализации подтверждённых рефералов. Активация — это первое claimed_at карточки; повторное использование измеряется как проверки статуса в разные дни.
Прототип маркетплейса использует курируемый процесс отправки навыков. Публичная страница /submit принимает предложения концепции, пилотные проекты с партнёрами и рабочие интеграции через копируемый шаблон. Она документирует тест на пригодность подтверждённого человека, требования к минимальному раскрытию, этапы проверки и общие метрики эксперимента без приёма загрузки кода или подразумевания автоматической публикации.
Предлагаемый запрос к ChatGPT:
Займи моё место как Основателя-человека.
Прототип шлюза Human Grant
Коннектор теперь может действовать как шлюз подтверждения человека для партнёра, который не управляет собственным полагающимся лицом World ID. Первая демонстрация с фиксированным клиентом намеренно узкая:
list_human_grant_opportunitiesпоказывает доступные действия партнёра без раскрытия чего-либо.create_human_grantсоздаёт десятиминутную, привязанную к браузеру ссылку согласия только после того, как пользователь явно попросит активировать возможность.Страница согласия называет партнёра, выгоду, действие и точные утверждения, которые передаются.
Одобрение создаёт пятиминутный одноразовый код авторизации. Партнёр обменивает его по схеме «сервер-сервер» с использованием HTTP Basic-аутентификации.
Шлюз возвращает 15-минутное утверждение
world-id-human-grant/v1, подписанное HMAC, содержащее только привязанный к аудитории парный субъект, авторизованное действие и минимальные утверждения о гарантиях Orb/World ID 4.0.Ограничение уникальности D1 допускает только один обмен для данного внутреннего человека, партнёра и действия.
Партнёр никогда не получает доказательство World, идентификатор сессии World, внутреннего субъекта, кошелёк, номер телефона, личность или разговор ChatGPT. Парные субъекты стабильны в рамках одного партнёра и не могут быть связаны между разными партнёрами. Симуляция опыта партнёра доступна в демонстрации Human Grant; метаданные издателя в машиночитаемом формате находятся по адресу /.well-known/world-id-human-grants.
Предлагаемый запрос к ChatGPT:
Используй World ID, чтобы показать мне возможности партнёров для подтверждённых людей, затем активируй демонстрацию шлюза.
Прототип использует одного предварительно зарегистрированного демо-клиента. Настоящий уровень подключения партнёров должен включать отдельные учётные данные клиента и секреты подписи для каждого партнёра, проверенные списки разрешённых действий/утверждений, ротацию секретов, отзыв, аудит событий партнёра и самообслуживаемый рабочий процесс регистрации. Он не должен становиться универсальным брокером идентичности или позволять партнёрам коррелировать пользователей между сервисами.
Передача Human Required в Shopify
Основной эксперимент обнаруживает текущие сделки на humanrequired.shop и может перенести подтверждённое право на человека подключённой учётной записи в Shopify без второй церемонии World ID:
list_unique_human_dealsчитает текущий публичный каталог и инвентарь.get_unique_human_dealвозвращает продукты, цены и доступные опции.create_unique_human_claim_linkсоздаёт пятиминутную непрозрачную ссылку для получения скидки только после того, как пользователь попросит получить предложение в 15%.Открытие ссылки для получения скидки создаёт случайную, одноразовую скидку Shopify, ограниченную подходящими продуктами, затем перенаправляет через общедоступную ссылку на скидку Shopify.
Тикеты на получение скидки и коды скидок шифруются в состоянии покоя. Публичные URL не содержат доказательства World, идентификатора сессии, субъекта, кошелька или личной информации. Shopify получает только случайный код скидки и идентификаторы подходящих продуктов. Созданные скидки истекают через 15 минут и имеют общий лимит использования — один.
Чтобы активировать эту передачу, создайте и установите приложение Shopify Dev Dashboard для Human Required с областями Admin API read_products и write_discounts. Затем загрузите его домен .myshopify.com, идентификатор клиента и секрет клиента, не помещая их в систему контроля версий. Worker использует поток учётных данных клиента Shopify для создания краткосрочного токена Admin API при погашении скидки:
npx wrangler secret put SHOPIFY_SHOP_DOMAIN
npx wrangler secret put SHOPIFY_CLIENT_ID
npx wrangler secret put SHOPIFY_CLIENT_SECRETИнструмент получения скидки остаётся безопасно недоступным, пока оба секрета не будут присутствовать; обнаружение каталога и остальная часть коннектора продолжают работать.
Эксперимент «Стена подтверждённого человека»
Стена — это первое приложение, построенное на основе соединения. Она предоставляет три инструмента MCP, защищённых OAuth:
get_verified_human_question: читает активный публичный вопросlist_verified_human_answers: читает недавние публичные ответы как непроверенный пользовательский контентpublish_verified_human_answer: создаёт или заменяет один ответ подключённой учётной записи после явного подтверждения пользователем
Публикация требует отдельной области OAuth wall:write. Соединения, созданные до развёртывания стены, должны быть отключены и подключены снова, прежде чем они смогут публиковать. Чтение стены также доступно через публичную конечную точку GET /api/wall, которая никогда не включает внутреннего субъекта World/OAuth.
Первый вопрос: Что должен иметь возможность делать только подтверждённый человек с помощью ИИ?
Предлагаемый запрос к ChatGPT:
Используй коннектор World ID, чтобы открыть Стену подтверждённого человека. Покажи мне сегодняшний вопрос и недавние ответы, помоги написать мой ответ, затем запроси моё явное подтверждение перед публикацией.
Метка «подтверждённый» в этом прототипе означает, что ответ был опубликован через OAuth-соединение, подкреплённое сессией World ID 4.0, подтверждённой Orb. Это не означает, что World App свеже подписал точный текст ответа или что личность автора известна.
Продакшн-архитектура
Cloudflare Worker: стабильный источник HTTPS, провайдер OAuth, проверка World и транспорт MCP без сохранения состояния
D1: истекающие попытки авторизации, зашифрованная непрерывность сессии World, записи защиты от повторного использования доказательств, порядковые номера/рефералы/агрегаты Основателей-людей, зашифрованные тикеты получения скидки Shopify, одноразовые Human Grants и публичные вопросы/ответы на стене
Workers KV: клиенты OAuth, разрешения, коды авторизации и токены, управляемые провайдером OAuth Cloudflare
Привязки ограничения скорости: отдельные лимиты на авторизацию, отправку доказательств, MCP, получение скидки, Human Grant, намерения и публикацию на стене
Cron-очистка: просроченные попытки D1/маркеры повторного использования, Human Grants, намерения, получение скидки и данные OAuth
Workers Observability: структурированные события без логирования доказательств или идентификаторов
Идентификаторы сессий World и ожидающие запросы OAuth шифруются с помощью AES-256-GCM перед хранением в D1. Отдельный HMAC-ключ вычисляет непрозрачный внутренний субъект OAuth. Исходное доказательство World проверяется в памяти и никогда не сохраняется.
Конфигурация World ID
Развёрнутый Worker привязан к:
Приложение:
app_d25e6e3d21651abfb9fbc52d033ef2a3RP:
rp_79ffdf898662dd4cОкружение:
productionПротокол: доказательства сессии World ID 4.0
Существующее действие register не используется для привязки учётной записи. Действия/нуллификаторы подходят для одноразовых операций уникальности; непрерывность учётной записи использует createSession и proveSession, чья подпись RP намеренно не включает действие.
Локальная проверка
npm install
npm run build
npm run typecheck
npm test
npx wrangler d1 migrations apply world-id-chatgpt --local
npm run cf:devWrangler может загружать локальные значения секретов из .env. Никогда не фиксируйте этот файл.
Первое развёртывание Cloudflare
Выберите учётную запись Cloudflare, которой принадлежит проект, затем создайте долговечные ресурсы:
npx wrangler d1 create world-id-chatgpt
npx wrangler kv namespace create OAUTH_KVПоместите возвращённые ID в wrangler.jsonc, затем примените схему:
npx wrangler d1 migrations apply world-id-chatgpt --remoteЗагрузите четыре управляемых секрета. Используйте существующий ключ подписи World RP для первого значения и независимые случайные 32-байтовые значения base64url для остальных трёх:
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_SECRETЗатем проверьте и опубликуйте:
npm run cf:check
npm run deployРазвёрнутая конечная точка MCP: https://world-id-chatgpt.foundry-world.workers.dev/mcp. Обнаружение OAuth, PKCE S256, динамическая регистрация клиентов и документы с метаданными Client ID объявляются автоматически.
Инварианты безопасности
Состояние авторизации истекает через десять минут и привязано к браузерному cookie с флагами
Secure,HttpOnly,SameSite=Lax,__Host-.Сервер принимает только протокол
4.0, production, доказательства сессии без действия с завершённым присутствием пользователя и схемой эмитента1(proof_of_human).Каждое доказательство должно соответствовать точному nonce RP, подписанному сервером для данной попытки авторизации.
Полный кортеж nullifier сессии хэшируется и вставляется под уникальное ограничение D1 до выдачи OAuth.
Тела доказательств ограничены 256 КиБ, а запросы верификации World истекают через десять секунд.
OAuth использует поток кода авторизации, PKCE S256, точные зарегистрированные редиректы, токены доступа на один час и токены обновления на 30 дней.
HTTPS требуется для зарегистрированных редиректов, за исключением разработки на loopback localhost.
CSP, запрет фреймов, no-referrer, защита от MIME-сниффинга, политика разрешений, проверка источника и ответы авторизации с no-store применяются Worker.
Вывод MCP находится в белом списке и не содержит стабильного идентификатора World.
Публичные проекции стены опускают внутренние субъекты; текст ответа отображается с помощью
textContent, ограничен 600 символами и не может содержать ссылки, адреса электронной почты или управляющие символы.Уникальное ограничение D1 обеспечивает один заменяемый ответ на активный вопрос и внутренний субъект подключённой учётной записи.
Инструкции инструмента рассматривают ответы на стене как ненадёжный контент и требуют точного подтверждения текста пользователем перед публикацией.
Билеты на получение являются случайными, хранятся только в виде хэшей для поиска, зашифрованы для контролируемого повторного выпуска, истекают через пять минут и используют атомарную аренду обработки D1 для предотвращения дублирования создания Shopify.
Коды скидок Shopify являются случайными, зашифрованы в состоянии покоя, ограничены подходящими ID продуктов, истекают через 15 минут и допускают одно общее погашение.
Ссылки согласия Human Grant истекают через десять минут и привязаны как к cookie возможностей, так и к cookie сессии World ID браузера.
Коды авторизации партнёра истекают через пять минут и используются один раз через аутентифицированный обмен по обратному каналу.
Утверждения используют попарные субъекты партнёра; сессия World и внутренний субъект никогда не покидают шлюз.
Первичный ключ D1 по партнёру, действию и внутреннему субъекту обеспечивает одно-человек-одно-погашение даже при одновременных попытках обмена.
Тесты
npm test охватывает устаревший транспорт MCP, а также усиленную форму доказательства 4.0, точную привязку nonce, отклонение доказательств уникальности, обязательное присутствие пользователя, зашифрованное хранение сессии, непрозрачное получение стабильного субъекта, передачу претензий Shopify и редактирование субъекта, проверку ввода стены и публичное редактирование субъекта. wrangler deploy --dry-run проверяет производственный пакет, а локальная проверка Worker выполняет регистрацию/обнаружение OAuth, состояние авторизации, сохранение D1, CSP и генерацию подписи RP.
Ссылки на World: World ID 4.0 migration, RP signatures и IDKit integration.
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