# World MCP connector

The World connector brings World ID verifications, incognito actions, mini app notifications, transactions and account recovery into Claude, ChatGPT, Cursor and any MCP client, so your team can ask about them in plain language, with every call logged.

Source: https://elaichi.ai/connectors/world/

## Facts

| | |
| --- | --- |
| Application | World |
| Category | SSO |
| AI tools | 31 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 31 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once World is connected

- How many World verifies completed for the onboarding action?
- List World minikit transactions from yesterday over 100 tokens.
- Summarize World actions created this month by team.

## Connect World in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick World.
2. Optionally set Share with, then press Connect.
3. Paste a World API key. One person generates a token in World and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which World tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect World to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect World to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect World to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect World to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a World tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with World through Elaichi

### Check how a new action is verifying

Product. Ask how many people have completed the sign-up action this week and whether verifications are going through, then create the next action when the flow is ready.

### Find out why a verification failed

Support. When a user says they could not prove they are human, pull up their verification and the precheck result to see what went wrong before you reply.

### Confirm a proof is genuine

Trust and safety. Verify a proof against a specific action and check that the root it came from is still valid, so duplicate or replayed proofs never slip through.

### Send a notification to mini app users

Growth. Draft a message to people who have used your mini app, check the wording and send it without leaving the chat.

### Reconcile mini app transactions

Finance. Look up a transaction by its reference, review pricing across mini apps and check the current grant cycle when the month closes.

### Help someone recover their account

Operations. Start, execute or cancel a recovery for a user who lost their device, and add or remove authenticators once they are back in.

## Frequently asked questions

### How do I connect World to Claude?

First connect World in Elaichi, which asks for your World API key from the developer portal, then paste https://api.elaichi.ai/mcp into Claude under Customize, then Connectors, then Add. There is no OAuth application to register and no client ID or secret to generate. Once it is added, Claude can work with World verifications, actions and mini app records as you.

### Does World work with ChatGPT and Cursor as well as Claude?

Yes. The World connector uses the same endpoint, https://api.elaichi.ai/mcp, for Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You connect World once in Elaichi and each person signs in with their own login from whichever client they use.

### What can an AI agent actually do with my World data?

An agent connected to World can verify a proof, create a new incognito action, run a precheck, list recent verifications and check whether a root is still valid. It can look up mini app transactions and prices, send a notification to mini app users, and start or cancel an account recovery. World has a large set of tools, so short concrete asks such as "list this week's verifications" work better than long sentences.

### Does connecting World give the AI everything in my developer account?

No. Every call to World runs inside the access of the person who signed in, so the agent sees the apps and actions that person's World API key can reach and nothing more. Elaichi can narrow that access further by team or by action, but it can never widen it beyond what the person already has.

### Can my team share one World connection?

Yes. One person connects World with the API key and shares the connection with a team, and nobody else handles the key. Each teammate still signs in to Elaichi as themselves, so the audit log names the actual person behind every verification or notification.

### Can I stop an agent from deleting or changing things in World?

Yes. Restrictions in Elaichi apply per action, so you can allow reading verifications and transactions while blocking sending notifications, removing authenticators or executing a recovery. A blocked action is never advertised to Claude, ChatGPT or Cursor at all, so no prompt can reach it.

### What happens to a World connection when someone leaves?

Offboarding a person in Elaichi ends their access to World at once, across every client they used. If they had shared a World connection, it keeps working for everyone else on the team. Disconnecting World once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client at the same time.

## All 31 World tools

Every tool below is callable through https://api.elaichi.ai/mcp once World is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Create a World verify** (Create). Verify a World ID proof for a Cloud action in World. Returns: success, action, nullifier_hash, created_at. Required: verify_id.
- **World verifies create legacy** (Create). Verify a World ID proof for a Cloud action using the legacy v2 verify endpoint in World. Returns: success, action, nullifier_hash, created_at. Required: verify_id.
- **List all World verifies** (List). List World ID verifications in World. Returns records with: success, action, nullifier, created_at, environment, session_id, results, message.
- **Create a World minikit send notification** (Create). Send notifications to users of your World mini app by wallet address. Returns per-recipient results with walletAddress, sent, and reason. Required: app_id, wallet_addresses, mini_app_path. Either title and message (legacy) or localisations (localized) must also be provided; if both are given, localisations is used. Max 1000 wallet addresses per call.
- **Get single World minikit transaction by ID** (Get). Get a World MiniKit transaction by id to query its current on-chain status. Returns the transaction object including reference, transaction_hash, transaction_status, from, to, token_amount, token, chain, timestamp, and app_id. Required: id, app_id.
- **Get single World minikit userop by ID** (Get). Get a single MiniKit user operation in World by id and resolve the final on-chain transaction hash when it becomes available. Returns: status, userOpHash, sender, transaction_hash, nonce. Required: id.
- **List all World transaction debugs** (List). Debug transactions that failed during the prepare stage in World. Returns a list of debug entries with debugUrl, createdAt, block, simulationRequestId, simulationError, and walletAddress. Required: app_id.
- **List all World miniapps prices** (List). Get latest token prices in various fiat currencies from World. Returns: prices. Required: fiatCurrencies, cryptoCurrencies.
- **List all World minikit user grant cycles** (List). Get the next grant claim cycle date for a user of your World mini app. Returns the user's humanity (orb-verified) grant cycle date if available, otherwise falls back to their document (passport-verified) grant cycle date. Returns: nextGrantClaimUTCDate. Required: wallet_address, app_id. The wallet_address must be exactly 42 characters long.
- **Create a World create action** (Create). Create an incognito action for an app in World. Returns the created action object with its id and content-type-specific attributes. Required: create_action_id.
- **Create a World precheck** (Create). Fetch action metadata for a World ID app to determine a user's eligibility for verification. Returns: id, is_staging, is_verified, name, verified_app_logo, engine, __typename, sign_in_with_world_id, can_user_verify, action. Required: precheck_id, action.
- **List all World jwks** (List). List JWK public keys used to verify World JWT signatures for verification requests. Returns: kid, kty, e, n.
- **Create a World graphql** (Create). Execute GraphQL queries and mutations against the World Developer Portal via the GraphQL proxy. Returns: data (query results whose shape depends on the operation), errors (array of GraphQL error objects if any occurred). Required: query.
- **Update a World cancel recovery agent update by ID** (Update). Cancel a pending recovery agent update in the World ID gateway. Returns: request_id, kind, status. Requires a JSON request body conforming to the CancelRecoveryAgentUpdateRequest schema.
- **Create a World create account** (Create). Create a new World ID account via the World registry gateway. Returns a 202 gateway status response including request_id, kind, and status for tracking the async on-chain request. Required: recovery_address, authenticator_addresses, authenticator_pubkeys, offchain_signer_commitment. Numeric string fields accept decimal or 0x/0X-prefixed hex.
- **Update a World execute recovery agent update by ID** (Update). Execute a pending recovery agent update for a World ID account in the World gateway. Returns: request_id, kind, status (with state and optional tx_hash). Required: leaf_index, old_offchain_signer_commitment, new_offchain_signer_commitment, signature, nonce. Returns 400 if leaf_index is zero or no pending update exists.
- **List all World healths** (List). Check the health status of the World gateway server. Returns a general server status check response indicating server availability.
- **Update a World initiate recovery agent update by ID** (Update). Initiate a recovery agent update for a World ID account through the World gateway. Returns a gateway status object including request_id, kind, and status for polling the on-chain request. A JSON request body (UpdateRecoveryAgentRequest) is required.
- **Create a World insert authenticator** (Create). Insert a new authenticator for a World account via the registry gateway. Returns a 202 status response with request_id, kind, and status. Required: leaf_index, new_authenticator_address, old_offchain_signer_commitment, new_offchain_signer_commitment, signature, nonce, pubkey_id, new_authenticator_pubkey. Numeric string fields accept decimal or 0x-prefixed hex.
- **List all World is valid roots** (List). Check whether a given merkle root is currently valid on-chain in World. Returns: valid. Required: root.
- **Create a World recover account** (Create). Recover a World account by submitting a recovery request to the registry gateway. Returns: request_id, kind, status. Required: leaf_index, new_authenticator_address, old_offchain_signer_commitment, new_offchain_signer_commitment, signature, nonce. The request is processed asynchronously and returns 202 Accepted.
- **Create a World remove authenticator** (Create). Remove an authenticator from a World ID account via the World gateway. Returns: request_id, kind, status. Required: leaf_index, authenticator_address, old_offchain_signer_commitment, new_offchain_signer_commitment, signature, nonce. Numeric string fields accept decimal or 0x/0X-prefixed hex; returns 202 Accepted with a request_id for polling status.
- **Get single World status by ID** (Get). Get the status of a World registry gateway request by id. Returns the request_id, kind (the operation type), and status (current state with optional tx_hash and error details). Required: id.
- **Create a World update authenticator** (Create). Update an authenticator in the World ID registry gateway. Returns: request_id, kind, status. Required: leaf_index, old_authenticator_address, new_authenticator_address, old_offchain_signer_commitment, new_offchain_signer_commitment, signature, nonce, pubkey_id, new_authenticator_pubkey. Numeric string fields accept decimal or 0x-prefixed hex. Response is asynchronous (HTTP 202) — poll request_id…
- **Create a World authenticator pubkey** (Create). Get the compressed authenticator public keys for a World ID account by leaf index from the World ID Indexer. Returns: authenticator_pubkeys, offchain_signer_commitment. Required: leaf_index.
- **Create a World inclusion proof** (Create). Get a Merkle inclusion proof for a World ID account by leaf index from the current WorldIDRegistry tree, including the full authenticator public key slot list with null entries for removed authenticators. Returns: authenticator_pubkeys, leaf_index, root, siblings. Required: leaf_index.
- **Create a World packed account** (Create). Get packed account data for a given authenticator address from the WorldIDRegistry contract in World. Returns: packed_account_data. Required: authenticator_address.
- **Create a World pending recovery agent** (Create). Get the pending recovery agent update for a particular World ID given its leaf index in World. Returns: execute_after, pending_recovery_agent, recovery_agent_address. If no recovery agent update is pending, the zero address and zero execute-after timestamp are returned. Required: leaf_index.
- **Create a World recovery agent** (Create). Get the recovery agent address for a particular World ID given its leaf index from the World ID Indexer. Returns: recovery_agent. Required: leaf_index.
- **Create a World signature nonce** (Create). Get the current signature nonce for a World ID by its leaf index from the World ID Indexer. The nonce is used to perform on-chain operations for the World ID. Returns: signature_nonce. Required: leaf_index.
- **Get single World credit by ID** (Get). Get credit data for a World borrower by id (wallet address or World username). Returns: state, score. Required: id.
