This is a sample verification app that simulates the behavior of the Worldcoin app to use World ID in the Test network. It works together with World ID's Javascript Integration.
- Generates Sempahore identity for signing World ID requests.
- Persistent Sempahore identities can be generated by signing requests with a real ETH wallet (through WalletConnect interaction).
- Add identity to the tree of verified identities with the identity faucet.
- Interact with World ID's Javascript Integration to receive verification request, generate ZKP and transfer it back.
World ID is the privacy-first identity protocol that brings global proof of personhood to the internet. More on World ID in the announcement blog post.
World ID lets you seamlessly integrate authentication into your app that verifies accounts belong to real persons through Sign in with Worldcoin. For additional flexibility and cases where you need extreme privacy, Anonymous Actions lets you verify users in a way that cannot be tracked across verifications.
Follow the Quick Start guide for the easiest way to get started.
All the technical docs for the Worldcoin SDK, World ID Protocol, examples, guides can be found at https://docs.worldcoin.org/
-
Get an Infura project ID from https://infura.io/ and create an
.envfile with it (see .env.sample) -
Install dependencies
yarn
-
Run app locally
yarn dev
You can trigger verification directly from the root route with a URL-encoded World ID QR URL:
/?connect_url=<url-encoded-world-id-verify-url>
When valid, the simulator will auto-select an identity and open the existing verification modal flow. Invalid URLs show a toast and are ignored.
The Simulator MCP completes an application's native World ID 4.0
staging Proof of Human request using the existing prover and bridge. Agents call
complete_test_request with the application's connector URI, then inspect the
application's own backend result.
SIDECAR_URLand the privateBEARER_TOKENare shared with the existing sidecar proxy. Keep the token server-side; it is sent only to the configured proof service.- App metadata comes from the Portal selected by
NEXT_PUBLIC_DEV_PORTAL_URL.vercel.jsonpins Vercel builds tohttps://developer.world.org; register test apps there. Proof requests always use the staging environment. - The route allows only the supported World bridge HTTPS origins, blocks redirects, and validates Host/Origin headers against the main domain and Vercel's configured deployment/branch host names. Local hosts are permitted only outside production.
- Limits: 8 KB request body, 64 KB bridge/prover responses, and a 45-second operation deadline. Configure the hosting runtime to allow the route a 60-second duration.
- One active request per worker prevents local queues; this is not a deployment-wide rate limit. Reuse the existing ingress and prover capacity controls.
- Exclude tool arguments and
Mcp-Param-connect_urlheaders from ingress and tracing logs; the connection URL contains an encryption key.
Run the MCP tests with Node 22 and pnpm test.

