Despia MCP Server: Stop Burning Credits on Bad Code
Same model, same prompt, two very different outcomes. The Despia MCP server gives your AI builder the real API surface instead of a confident guess.

Search for a command to run...
Same model, same prompt, two very different outcomes. The Despia MCP server gives your AI builder the real API surface instead of a confident guess.

No comments yet. Be the first to comment.
Get your Base44 app approved with real in-app purchases. StoreKit and Play Billing through RevenueCat, and how to keep your web subscribers.

window.despia is undefined in your app because it is not a public API. Here is what the Despia SDK exposes and how to call native features correctly.

Apple is auto-rejecting Base44 apps over placeholder purpose strings. What the Guideline 5.1.1 check looks at, what to clear, and how to resubmit.

Apple is auto-rejecting Lovable apps over purpose strings. Where Info.plist lives on each shipping route, what to clear, and how to resubmit.

Apple now auto-rejects apps over placeholder purpose strings. What triggers the Guideline 5.1.1 check, why WebView apps get caught, and how to fix it.

Despia Blog: Build Native iOS & Android Apps from Web Code
110 posts
Same model. Same prompt. Two completely different outcomes. The only variable is whether it can read the docs.
Without a reference, an AI builder does not tell you it is unsure about a native API. It writes something confident, you spend a build turning it into a binary, you install it, and the feature does nothing. So you go back to the chat and describe the failure, and it apologises and writes something else that is also wrong. Four laps later you are convinced the runtime is broken.
It is not. It guessed. That is the left side of the picture.
| Without the MCP | With the MCP | |
|---|---|---|
| Environment check | window.despia, which does not exist |
User agent check that returns true on device |
| Native calls | Invented method names | Real despia-native calls |
| Your feedback loop | Prompt, build, install, fail, repeat | Prompt, build, ship |
| Debugging | Chasing a bug that is not in the runtime | Reading an actual error |
Every lap of that loop is a prompt you paid for, a build you spent, and an hour you are not getting back. Some of them are a store submission.
MCP is not free at the message level and anyone claiming otherwise has not read the platform docs. Base44 states outright that MCP connections can increase credit usage, because the model processes more information per request. That is true.
It is also the wrong number to optimise. A few hundred extra tokens per message against four wasted rounds plus the builds attached to them is not a close call. You are not paying for context. You are paying for the loop that missing context creates.
These come through support almost every week.
window.despia. Does not exist, never has, is not a public API. An agent writes it as an environment check, the condition is always false on every device, and every native call inside that block is skipped in silence. Nothing errors. The feature is just dead. The real check is the user agent:
const isDespia = navigator.userAgent.toLowerCase().includes('despia')
if (isDespia) despia('successhaptic://')
despia() calls go inside that gate. Global callbacks (window.onXxx) are assigned outside it, so they exist before the native side fires them.
Capacitor scaffolding. Models that have seen a lot of Capacitor generate Capacitor plugin config and a second native project next to your web app. None of it runs in Despia. You are left maintaining files that describe a build you do not have.
Logs for calls it never wrote. The expensive one, because it burns your time rather than just your credits. The agent adds a diagnostics panel reporting that it invoked an SDK method, got a promise back, and is awaiting a callback. Search the bundle and there is no such call anywhere. The panel reads like instrumentation and is closer to fan fiction. If your diagnostics claim a function ran, grep for that function before you believe a single line of it.
The Despia MCP server is a documentation server. It hands your builder the actual reference for the despia-native package: which features exist, what the calls look like, and the correct patterns for push, biometrics, widgets, storage, GPS, camera, and the rest of the 50+ native features.
https://setup.despia.com/mcp
That is the whole migration. No restructuring, no native folder, one web codebase, same as before. Your agent stops inventing method names because it can read the real ones.
Paths are current as of July 2026. The shape is identical everywhere: connectors screen, custom server, paste the URL, no authentication.
Open Connectors, go to Chat connectors.
Click New MCP server.
Server name: Despia
Server URL: https://setup.despia.com/mcp
Authentication: No authentication. The docs server needs no credentials.
Click Add server.
Chat connectors are per-user, so everyone on the project connects their own. Available on all plans.
Profile icon, top right.
Settings, then MCP connections under Account.
Click Add custom MCP.
Name: Despia. URL: https://setup.despia.com/mcp. Authentication: Not required. Leave headers empty.
Click Test, then Test & add.
Needs a Builder plan or higher, and Base44 caps you at 20 connected servers per account.
Open the Connectors (MCP) page.
Click Custom MCP server.
Enter the URL and transport, no authentication.
Click Connect and wait for the Connected status.
Tick Auto-enable for all projects if you build more than one Despia app. Otherwise you will enable it per project and forget on the one that matters.
Same JSON, different file. Cursor reads ~/.cursor/mcp.json, VS Code reads .vscode/mcp.json in the workspace, Windsurf takes it under Settings, Plugins, Add MCP Server, and Claude Desktop uses claude_desktop_config.json.
{
"mcpServers": {
"despia": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://setup.despia.com/mcp"]
}
}
}
Node.js v18 or later. Restart the editor after saving.
Paste the relevant pages from setup.despia.com into the chat before you prompt. Manual, and you redo it when context resets, but it beats letting the model improvise.
Connecting a server and having the agent use it are two different things. Before you spend another build, ask it:
How do I detect that my app is running inside Despia, and what package do I import for native features?
You want the user agent check and despia-native. If it says window.despia, or reaches for a Capacitor plugin, it is not reading the server. Reconnect it, and on tools where the agent picks its own tools, name it in the prompt: use the Despia MCP.
Then run one search of your project for the function you expect to be called. Not the log line describing it, the call itself. That grep takes five seconds and catches most of what would otherwise cost you a build.
Take the app you just built and ship it to iOS and Android without a CLI or a Mac. Code signing and submission run from the browser.