Connect World to ChatGPT: Verify World ID & Manage MiniKit Apps
A complete engineering guide to connecting World to ChatGPT using a managed MCP server. Automate World ID verification, MiniKit transactions, and identity workflows.
You want to connect World to ChatGPT so your AI agents can verify World ID proofs, check on-chain transaction statuses, and trigger MiniKit app notifications automatically. If your team uses Claude, check out our guide on connecting World to Claude or explore our broader architectural overview on connecting World to AI Agents.
Giving a Large Language Model (LLM) read and write access to a decentralized identity network like World is a steep engineering challenge. You are not just dealing with standard REST endpoints; you are interfacing with cryptographic payloads, on-chain state polling, and strict rate limits. You can either spend weeks building, hosting, and maintaining a custom Model Context Protocol (MCP) server, or you can use a managed infrastructure layer that handles the boilerplate for you.
This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for World, connect it natively to ChatGPT, and execute complex identity and MiniKit workflows using natural language.
The Engineering Reality of the World API
A custom MCP server is a self-hosted integration layer that translates an LLM's tool calls into API requests. While the open MCP standard provides a predictable way for models to discover tools, implementing it against the World API requires deep domain knowledge of identity graphs and blockchain execution environments.
If you decide to build a custom MCP server for World, you own the entire API lifecycle. Here are the specific integration challenges that break standard CRUD assumptions when working with World:
Cryptographic Payload Complexity
World API operations often require highly specific payload formatting. For instance, interacting with the World ID registry gateway requires exact hexadecimal strings, nullifier hashes, and off-chain signer commitments. If an LLM hallucinates the format and passes an improperly prefixed hex string (e.g., passing 1a2b3c instead of 0x1a2b3c), the gateway will reject the request outright. Your integration layer must enforce strict JSON schemas that guide the LLM to format cryptographic arguments correctly before the request is ever sent.
On-Chain Asynchrony and the 202 Accepted Pattern
Blockchain state is not updated instantly. When an LLM executes a tool to initiate a recovery agent update or recover an account, the World API does not return a completed state. Instead, it returns an HTTP 202 Accepted status with a request_id. The LLM cannot assume the operation succeeded. Your system must expose a secondary polling tool, and you must prompt the LLM to continuously check the request status until the on-chain transaction finalizes. If your MCP server drops the context of the request_id, the agent is blinded to the outcome of its own action.
Strict Rate Limits and Client Responsibility
World enforces rate limits strictly to prevent network abuse. It is critical to understand how this is handled in a managed environment. Truto does not retry, throttle, or apply backoff on rate limit errors. When the upstream World API returns an HTTP 429 Too Many Requests, Truto passes that error directly to the caller. Truto normalizes the upstream rate limit information into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF specification.
Do not expect the integration layer to absorb these errors. The caller (whether that is ChatGPT or a custom LangChain orchestrator) is entirely responsible for reading those headers, applying exponential backoff, and retrying the tool call. If your prompt does not instruct the agent to pause when it hits a 429, the workflow will crash.
How to Generate the World MCP Server
Truto derives MCP tools dynamically from the underlying World integration schemas. Tools are never cached or pre-built. You can generate a World MCP server URL using either the Truto UI or the API.
Method 1: Via the Truto UI
For teams that prefer a visual dashboard, you can spin up an MCP server in seconds:
- Navigate to the Integrated Accounts page in your Truto dashboard and select your connected World instance.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration (e.g., allowed methods, tags, and expiration limits).
- Click Save, and immediately copy the generated MCP server URL. (You will not be able to view the raw token again).
Method 2: Via the Truto API
For platform engineers building multi-tenant AI systems, you can programmatically generate MCP servers. Send a POST request to the /integrated-account/:id/mcp endpoint with your configuration payload.
curl -X POST "https://api.truto.one/integrated-account/<your_integrated_account_id>/mcp" \
-H "Authorization: Bearer <your_truto_api_token>" \
-H "Content-Type: application/json" \
-d '{
"name": "World_MiniKit_Operations",
"config": {
"methods": ["read", "write", "custom"]
}
}'The API provisions the server, validates that World has documented tools available, and returns a secure, authenticated endpoint:
{
"id": "mcp_srv_9x8y7z",
"name": "World_MiniKit_Operations",
"config": { "methods": ["read", "write", "custom"] },
"expires_at": null,
"url": "https://api.truto.one/mcp/a1b2c3d4e5f6g7h8i9j0..."
}Connecting the World MCP Server to ChatGPT
Once you have your Truto MCP URL, you must register it with your AI client. The server URL contains a cryptographic token that securely identifies the exact World tenant account.
Method 1: Via the ChatGPT UI
If you are using the ChatGPT desktop application (Pro, Plus, Team, or Enterprise accounts with Developer mode enabled):
- Open ChatGPT and navigate to Settings -> Apps -> Advanced settings.
- Ensure Developer mode is enabled.
- Under the MCP servers / Custom connectors section, click Add new server.
- Set the Name to something recognizable, like "World Identity Tools".
- Paste the Truto MCP URL into the Server URL field.
- Click Save.
ChatGPT will immediately ping the endpoint, execute the JSON-RPC initialization handshake, and list the available World tools in its context.
Method 2: Via Manual Configuration File
If you are running an orchestrator, Claude Desktop, or another standard MCP client, you can connect to the Truto remote server using a Server-Sent Events (SSE) proxy configuration. Create or edit your MCP configuration file:
{
"mcpServers": {
"world-production": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"--url",
"https://api.truto.one/mcp/a1b2c3d4e5f6g7h8i9j0..."
]
}
}
}Hero Tools for World AI Agents
When you connect World via Truto, the MCP server translates integration documentation directly into LLM-callable schemas. Here are the highest-leverage tools available for ChatGPT to interact with the World ecosystem.
Verify a World ID Proof
Tool Name: create_a_world_verify
This tool allows the agent to take a zero-knowledge proof payload from a user and submit it to World to verify an action. It requires a specific action ID and returns the verification success state along with the nullifier hash to prevent double-spending.
"I have a World ID proof payload from the client for the 'claim_airdrop' action. Pass this payload to the verification endpoint and let me know if the proof is valid and what the nullifier hash is."
Send MiniKit App Notifications
Tool Name: create_a_world_minikit_send_notification
Allows the AI to push notifications directly to users of your World Mini app based on their wallet addresses. You must provide the app ID and an array of up to 1,000 wallet addresses.
"Take this list of 50 wallet addresses and send a MiniKit notification to them for app 'app_staging_123'. The notification title should be 'Action Required' and the message 'Please update your verification status'."
Check MiniKit Transaction Status
Tool Name: get_single_world_minikit_transaction_by_id
Blockchain transactions are asynchronous. When the agent initiates a transfer or smart contract call, it needs this tool to query the specific transaction ID and resolve its final on-chain status (e.g., checking if the transaction hash is confirmed).
"Query the status of MiniKit transaction 'txn_987654' for app 'app_prod_xyz'. If it is pending, wait 15 seconds and check again. Let me know when the transaction status shows as successful."
Query Next Grant Claim Cycle
Tool Name: list_all_world_minikit_user_grant_cycles
Agents managing community engagement can use this tool to determine when a specific wallet address is eligible for its next World grant claim cycle. It distinguishes between orb-verified (humanity) and passport-verified document cycles.
"Check the next grant claim cycle date for wallet address 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B. If their next date is today, trigger the reminder notification workflow."
Run User Eligibility Prechecks
Tool Name: create_a_world_precheck
Before initiating a heavy verification flow, an AI agent can run a precheck on action metadata to determine if the user is even eligible for verification based on app rules and previous actions.
"Run an eligibility precheck for the action 'monthly_voting' to ensure this user can verify. Return the
is_verifiedandcan_user_verifyboolean values."
Initiate Account Recovery
Tool Name: create_a_world_recover_account
This is a complex administrative tool. It allows the agent to submit a recovery request to the World registry gateway. Because this relies on smart contract execution, it returns an asynchronous 202 Accepted request ID.
"Submit an account recovery request for leaf index 40592. Use the provided old and new offchain signer commitments and the signature payload. Return the request ID so we can poll the gateway status."
To see the complete tool inventory, including GraphQL proxies, JWK retrievals, and Merkle inclusion proofs, visit the World integration page.
Workflows in Action
Exposing individual endpoints to an LLM is useful, but the true power of MCP lies in autonomous, multi-step orchestration. Here is how ChatGPT executes complex World workflows in production.
Scenario 1: Proactive MiniKit Engagement Pipeline
You want ChatGPT to find users eligible for their grant cycle and push an engagement notification to their World app.
"Check the grant cycle for these five wallet addresses: [0x..., 0x...]. For any address where the next claim date is today or in the past, send them a MiniKit notification prompting them to claim their grant in the app."
Step-by-step execution:
- Query Eligibility: ChatGPT loops through the wallets and calls
list_all_world_minikit_user_grant_cyclesfor each. - Evaluate Logic: The model parses the
nextGrantClaimUTCDatein the responses and filters the list down to the eligible wallets. - Push Notifications: ChatGPT calls
create_a_world_minikit_send_notification, passing the array of eligible wallet addresses and the localized message payload.
Scenario 2: Identity Verification Triage
A user reports that their World ID proof is failing. The support agent asks ChatGPT to debug the transaction.
"The user with verification ID 'ver_892b' is failing to execute an action. Run a precheck on their metadata, then check the verification logs to see why it was rejected."
Step-by-step execution:
- Precheck Execution: ChatGPT calls
create_a_world_precheckto determine if thecan_user_verifyflag is explicitly set to false due to app constraints. - Audit Logs: ChatGPT calls
list_all_world_verifiesfiltering by the environment and session, identifying that thenullifierhash was already consumed in a previous transaction, indicating a double-spend attempt. - Summary: ChatGPT summarizes the exact cryptographic reason the verification is failing for the support agent.
sequenceDiagram
participant User as User
participant ChatGPT as ChatGPT
participant Truto as Truto MCP Server
participant World as World API
User->>ChatGPT: "Debug verification ID ver_892b..."
ChatGPT->>Truto: Call create_a_world_precheck
Truto->>World: POST /api/v1/precheck
World-->>Truto: Return eligibility data
Truto-->>ChatGPT: Result (can_user_verify: true)
ChatGPT->>Truto: Call list_all_world_verifies
Truto->>World: GET /api/v1/verifies
World-->>Truto: Return verify history
Truto-->>ChatGPT: Result (nullifier already used)
ChatGPT-->>User: "Proof failed. Nullifier hash was previously consumed."Security and Access Control
Connecting an LLM to your decentralized identity stack introduces massive operational risk if left unchecked. Truto provides four layers of configuration to secure your MCP server:
- Method Filtering: Limit the AI's capabilities at the protocol layer. Configure
methods: ["read"]to allow the agent to fetch grant cycles and transaction statuses, but strictly block it from invokingcreate_a_world_recover_account. - Tag Filtering: Restrict tools by functional domain. If the AI is only meant to handle MiniKit notifications, pass
tags: ["minikit"]during server generation. Tools related to the registry gateway or GraphQL proxy will simply not exist in the server's context. - Time-to-Live (TTL): Pass an
expires_atISO datetime when generating the server. Once the timestamp is reached, the underlying distributed key-value store automatically purges the token, severing the LLM's access immediately. - Enforced API Authentication: By default, possession of the MCP URL is enough to connect. For enterprise security, enable
require_api_token_auth. The client must then pass a valid Truto API token in the Authorization header to invoke any tool.
Moving Past Manual Integration
Building an AI agent that can reliably operate within the World ecosystem requires strict schema validation, asynchronous transaction handling, and flawless authentication. Writing custom MCP servers to handle World's cryptographic payloads and strict rate limits is an unnecessary drain on your engineering resources.
By leveraging Truto's managed MCP infrastructure, you bypass the boilerplate entirely. You generate a secure, scoped URL, hand it to ChatGPT, and instantly enable your AI to verify identities, monitor on-chain metrics, and engage users across your MiniKit applications.
FAQ
- How does Truto handle World API rate limits?
- Truto does not retry, throttle, or apply backoff on rate limit errors. When the World API returns an HTTP 429, Truto passes the error and the IETF standard rate limit headers back to the caller. Your LLM framework must handle the exponential backoff.
- Can I restrict ChatGPT from recovering World accounts?
- Yes. When generating the MCP server, you can use method filtering (e.g., config: { methods: ['read'] }) or tag filtering to ensure the LLM can only view data, explicitly preventing it from calling administrative tools like create_a_world_recover_account.
- How do I handle asynchronous operations like MiniKit transactions?
- World returns a 202 Accepted for async requests like transactions or gateway updates. You must instruct ChatGPT to poll the subsequent status endpoints (like get_single_world_minikit_transaction_by_id) using the returned request ID until the on-chain operation finalizes.