Give your coding agent the guide
Copy this prompt into your coding agent:Connect your coding agent
For optional app management through tools, addhttps://auth.world.org/mcp/developer in
Codex, Claude Code, or another coding agent’s MCP settings as a Streamable HTTP
server with OAuth. Configure this developer connection separately from the
consumer World ID plugin. Use a separate connection name for each environment:
The coding agent must support Client ID Metadata Documents (CIMD): it publishes
and supplies its own metadata URL. Connecting the coding agent requires no portal
OIDC registration or client secret. Dynamic client registration (DCR) is not
implemented. If your host does not support this connection, use the public guides
and portal directly.
Keep the connection, guides, app registration, and credentials in the same
production or sandbox environment. Before authorizing, confirm that the current
session lists the developer MCP server at
https://auth.world.org/mcp/developer.
Call list_idp_guides to check the connection; it requires no authorization.
The commands below use this page’s environment. For sandbox, replace
world-id-developer with world-id-developer-sandbox in every command. When
switching environments, use both the matching name and URL from the table.
Codex CLI
Runcodex mcp list in the environment where your coding session runs. If the
developer endpoint is already configured, use its existing name. Otherwise add it:
Claude Code
Runclaude mcp list to check for an existing connection. If it is missing, add it:
/mcp. Select the configured
server and follow the browser sign-in flow. The --scope user option controls
where Claude Code stores the configuration; portal access uses the separate
OAuth permission developer-portal:manage.
Check the connection
Complete Google sign-in and consent in the browser when authorizing portal access. If the tools are unavailable, first check whether the developer server is listed and enabled in the active host. Add it only if it is missing; otherwise use the host’s refresh controls. Start a new coding session if the host needs one to load new tools. A desktop or workspace host manages its own connection; configuring a separate CLI does not establish that the active chat can use it. Ask the agent to list the World ID integration guides to confirm the connection. Reading guides requires no authorization. For app management, ask the agent to check developer access and follow the Google sign-in and portal consent prompt.Agent instructions
Read Start here and inspect the project’s existing authentication setup. Follow the OIDC guide to connect its backend or auth server. Follow the testing guide to verify the integration. Use this environment’s issuer and portal throughout, and ask for missing deployment URLs. Keep client secrets and private keys out of chat and frontend code. To verify the MCP connection, calllist_idp_guides; it requires no authorization.
Call get_idp_guide with an ID from that list to read a guide. The same content is
available through resources/read at each guide’s worldid://guides/<id> URI.
These are MCP resource identifiers; browser readers use
Integration guides.
A missing tool alone does not prove that the server is unconfigured or authorization
expired. Check the host’s connection status before changing its configuration.
To register or manage an application, call get_portal_account to check developer
access, then follow the host’s Google sign-in and portal consent prompt if needed.
After authorization, retry get_portal_account in the same session before
continuing. If tools or authorization remain unavailable, use the host’s connection
status and refresh controls. Stop on cancelled or failed sign-in and explain the
failure. Confirm a successful tool result before reporting that the connection works.
Developer-portal permission
To register an application, callrequest_oidc_client_registration. For other client
management tasks, call the appropriate portal tool. The MCP client follows the
server’s OAuth challenge for
developer-portal:manage, obtains consent using Google portal sign-in, and
retries the call. Developer authorization requires no World ID verification.
World ID account authorization does not grant developer access. Request only
developer-portal:manage on /mcp/developer; do not combine it with world-id:read.
The server rejects mixed scopes. Account and benefit tools use a separate MCP
connection and plugin. If your coding agent cannot authorize developer access,
register directly in the portal.
Keep browser cookies, tokens, client secrets, and private keys out of agent messages.
Portal tools respect the user’s memberships and owner permissions. Registration,
secret creation, secret revocation, and public JWKS replacement each create a
request for the user to approve in the portal.
- Supply a UUID
requestId. Reuse it with identical inputs on retries. If a response is lost, checkget_portal_credential_requestwith that ID before retrying. - Show the user the returned
portalUrlunchanged so they can review the request. Do not approve it or retrieve secrets through browser automation. - Poll
get_portal_credential_requestsparingly with bounded requests. Continue only whilestatusispendingandexpiresAtis in the future. - Stop on
completed,denied,expired, orrevoked, or when the deadline passes. Surface tool errors and terminal failures; do not silently start a new request. Onlycompletedconfirms success.
expired or revoked for
pending requests whose deadline has passed or whose authorizing grant is no
longer valid.
Secrets appear once to the user in the portal, never in MCP results. If the
approval response containing a new secret is lost, create another secret in
the portal; rereading the completed request cannot recover it.
Before configuring the application, check that the completed registration’s
request.result.client matches the intended application. It includes the public client
ID, callbacks, sector, and authentication method.
Follow Authentication
to use the approved client.
Register an application with your agent
Registration requires a confidential backend that keeps credentials out of frontend code and distributed CLIs. Collect the app name, callback URLs, authentication method, and any optional public logo URL before requesting registration. Use the project’s existing configuration and ask for missing deployment URLs.- Callbacks: use exact HTTPS URLs, including the path, query, and port. HTTP localhost, wildcard callbacks, and variable ports are not supported. Use Punycode for internationalized callback hostnames. A device-only client still needs a registered redirect URI.
- Client authentication: use
client_secret_basicwhen the developer has no preference and their backend supports it.client_secret_postandprivate_key_jwtare also supported. Forprivate_key_jwt, generate the key pair in the backend’s secure environment and register only the public JWKS. - Sector: new clients receive a unique provider-managed sector by default;
callbacks may use different hostnames. To share identifiers, use an
owner-enabled
sectorSourceClientIdand confirm the developer owns every client in that sector. Membership alone is insufficient. Hosted sector documents are not supported. The sector and authentication method cannot change after registration. See Manage credentials and callbacks.
- Call
list_oidc_clientsbefore creating a client. Reuse the intended app’sclientIdif it already exists; ask which app when the match is ambiguous. - Confirm the registration details above with the developer. For protocol details, see the client-authentication reference.
- Call
request_oidc_client_registrationwith a fresh UUIDrequestId,name,redirectUris, andtokenEndpointAuthMethod. IncludelogoUri, an approvedsectorSourceClientId, or publicjwkswhen needed. Never send private keys. - Follow the Developer-portal permission workflow above.
The app does not exist until approval. The developer saves any generated client
secret directly from the portal into backend configuration. For
private_key_jwt, no secret is generated; the developer retains the private key that matches the registered public JWKS. Never ask them to paste a secret or private key into chat. - After completion, return the public client ID, issuer
https://auth.world.org, registered callbacks, authentication method, and portal link using the approvedrequest.result.client.
Configure an existing application with your agent
Readget_oidc_client before updating. update_oidc_client replaces the
configuration: send clientId, name, redirectUris, status, and logoUri,
preserving values the developer did not ask to change.
Use null to preserve the logo, or an empty string only when asked to remove it.
Omit sectorIdentifierUri or echo its existing value; historical document URIs
cannot be cleared or replaced. Existing host-based callbacks can be retained,
reordered, or removed; only newly added callbacks must use the stored sector
hostname. Managed clients can change callback hostnames freely.
Preserve the immutable sector and authentication method. Report changes only
after the tool succeeds; reads may briefly lag successful changes.
Publish a benefit listing
Submit benefit listings through the developer portal’s Catalog tab.- Direct the developer to
https://auth.world.org/portal/clients/{clientId}?tab=catalog, replacing{clientId}with the actual client ID, to open the app’s Catalog tab. - Save a listing with a name, description, and HTTPS Website URL (
appUrl). This is where users claim the benefit; it is separate from the OIDC callback. - Optionally add Instructions (
instructions) describing prerequisites, human or browser steps, any partner plugin link or MCP URL, and how to confirm success. These instructions become public after approval; never include credentials or tokens. If omitted, agents start at the website URL. - The owner of the active app submits the saved listing for review. A separate authorized reviewer who is not an app member must approve it. Approval publishes the listing; changes to instructions require a new review.
get_benefits.
Report the listing’s current review and publication status. Publication changes
can take up to a minute to appear. The application enforces eligibility,
authorization, and redemption.