Skip to main content
Glama
lcusack

World ID for ChatGPT

by lcusack

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.

Поток подключения:

  1. ChatGPT обнаруживает OAuth через удалённую конечную точку /mcp.

  2. Пользователь направляется на конечную точку /authorize этого сервиса.

  3. Браузер создаёт или возобновляет сессию World ID 4.0 и запрашивает proof_of_human с поддержкой Orb и подтверждением присутствия пользователя.

  4. Worker проверяет полное доказательство с World, записывает защиту от повторного использования и завершает OAuth.

  5. Аутентифицированный инструмент 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.

Related MCP server: stafett

Эксперимент «Основатель-человек»

Тот же коннектор World ID теперь поддерживает эксперимент со статусом/сетью «Основатель-человек»:

  1. get_world_agent_status проверяет, занял ли подключённый уникальный человек своё место, и возвращает прогресс Genesis 100 без публикации чего-либо.

  2. claim_world_agent_place идемпотентно занимает одно постоянное порядковое число для подключённого внутреннего субъекта и возвращает публичную карточку и пригласительную ссылку.

  3. Существующие подтверждённые сессии заполняются в исходном порядке подтверждения, резервируя наименьшие номера для текущих тестировщиков. Их карточки остаются приватными до явного запроса на публикацию.

  4. Открытие публичной карточки «Основатель-человек» сохраняет непрозрачный first-party куки-приглашения. Новое соединение World ID, полученное через эту карточку, приписывается пригласившему только после того, как приглашённый человек подтвердит свою личность и займёт место.

Первые 100 порядковых номеров навсегда получают статус Genesis 100. Реестр намекает на будущую возможность для подтверждённых людей, когда когорта завершится. Публичные карточки раскрывают только номер, когорту, даты и минимальные гарантии; они никогда не раскрывают внутреннего субъекта, доказательство, сессию, нуллификатор, кошелёк, личность или данные разговоров.

Измерения эксперимента агрегируются ежедневно в D1 без идентификаторов посетителей: количество выданных пригласительных ссылок, просмотры публичных профилей, проверки статуса и реализации подтверждённых рефералов. Активация — это первое claimed_at карточки; повторное использование измеряется как проверки статуса в разные дни.

Прототип маркетплейса использует курируемый процесс отправки навыков. Публичная страница /submit принимает предложения концепции, пилотные проекты с партнёрами и рабочие интеграции через копируемый шаблон. Она документирует тест на пригодность подтверждённого человека, требования к минимальному раскрытию, этапы проверки и общие метрики эксперимента без приёма загрузки кода или подразумевания автоматической публикации.

Предлагаемый запрос к ChatGPT:

Займи моё место как Основателя-человека.

Прототип шлюза Human Grant

Коннектор теперь может действовать как шлюз подтверждения человека для партнёра, который не управляет собственным полагающимся лицом World ID. Первая демонстрация с фиксированным клиентом намеренно узкая:

  1. list_human_grant_opportunities показывает доступные действия партнёра без раскрытия чего-либо.

  2. create_human_grant создаёт десятиминутную, привязанную к браузеру ссылку согласия только после того, как пользователь явно попросит активировать возможность.

  3. Страница согласия называет партнёра, выгоду, действие и точные утверждения, которые передаются.

  4. Одобрение создаёт пятиминутный одноразовый код авторизации. Партнёр обменивает его по схеме «сервер-сервер» с использованием HTTP Basic-аутентификации.

  5. Шлюз возвращает 15-минутное утверждение world-id-human-grant/v1, подписанное HMAC, содержащее только привязанный к аудитории парный субъект, авторизованное действие и минимальные утверждения о гарантиях Orb/World ID 4.0.

  6. Ограничение уникальности D1 допускает только один обмен для данного внутреннего человека, партнёра и действия.

Партнёр никогда не получает доказательство World, идентификатор сессии World, внутреннего субъекта, кошелёк, номер телефона, личность или разговор ChatGPT. Парные субъекты стабильны в рамках одного партнёра и не могут быть связаны между разными партнёрами. Симуляция опыта партнёра доступна в демонстрации Human Grant; метаданные издателя в машиночитаемом формате находятся по адресу /.well-known/world-id-human-grants.

Предлагаемый запрос к ChatGPT:

Используй World ID, чтобы показать мне возможности партнёров для подтверждённых людей, затем активируй демонстрацию шлюза.

Прототип использует одного предварительно зарегистрированного демо-клиента. Настоящий уровень подключения партнёров должен включать отдельные учётные данные клиента и секреты подписи для каждого партнёра, проверенные списки разрешённых действий/утверждений, ротацию секретов, отзыв, аудит событий партнёра и самообслуживаемый рабочий процесс регистрации. Он не должен становиться универсальным брокером идентичности или позволять партнёрам коррелировать пользователей между сервисами.

Передача Human Required в Shopify

Основной эксперимент обнаруживает текущие сделки на humanrequired.shop и может перенести подтверждённое право на человека подключённой учётной записи в Shopify без второй церемонии World ID:

  1. list_unique_human_deals читает текущий публичный каталог и инвентарь.

  2. get_unique_human_deal возвращает продукты, цены и доступные опции.

  3. create_unique_human_claim_link создаёт пятиминутную непрозрачную ссылку для получения скидки только после того, как пользователь попросит получить предложение в 15%.

  4. Открытие ссылки для получения скидки создаёт случайную, одноразовую скидку 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_d25e6e3d21651abfb9fbc52d033ef2a3

  • RP: 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:dev

Wrangler может загружать локальные значения секретов из .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.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    A remote MCP server that gives AI assistants a shared memory, enabling structured handoffs, journaling, and notes for seamless continuation across sessions.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI agents to request human verification for tasks requiring real-world understanding, paying via the Lightning Network, and receiving verified answers.
    224 npm
    MIT