MCP server for developers
One endpoint for Claude Code, Cursor, Codex and any MCP client. Authenticate with your API key, call any PopNow model by ID and approve every charge in USD.
Endpoint
Streamable HTTP, nothing to install. Send your API key as a Bearer token. The key's model allow-list, IP allow-list and spend caps apply exactly as on the REST API.
- API key only, no account sign-in
- Billed in USD to your API balance
- 240 requests and 20 new tasks a minute
curl -X POST https://api.popnow.ai/api/v1/mcp \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Connect your coding agent
Keep the key in POPNOW_API_KEY. Never paste it into a prompt or commit it to a repository.
claude mcp add --transport http popnow-api https://api.popnow.ai/api/v1/mcp \
--header "Authorization: Bearer $POPNOW_API_KEY"{
"mcpServers": {
"popnow-api": {
"url": "https://api.popnow.ai/api/v1/mcp",
"headers": {
"Authorization": "Bearer ${env:POPNOW_API_KEY}"
}
}
}
}.cursor/mcp.json
{
"inputs": [
{
"type": "promptString",
"id": "popnow-api-key",
"description": "PopNow API key (sk-popnow-...)",
"password": true
}
],
"servers": {
"popnow-api": {
"type": "http",
"url": "https://api.popnow.ai/api/v1/mcp",
"headers": {
"Authorization": "Bearer ${input:popnow-api-key}"
}
}
}
}.vscode/mcp.json
[mcp_servers.popnow-api]
url = "https://api.popnow.ai/api/v1/mcp"
bearer_token_env_var = "POPNOW_API_KEY"~/.codex/config.toml
{
"mcpServers": {
"popnow-api": {
"serverUrl": "https://api.popnow.ai/api/v1/mcp",
"headers": {
"Authorization": "Bearer ${env:POPNOW_API_KEY}"
}
}
}
}~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"popnow-api": {
"type": "http",
"url": "https://api.popnow.ai/api/v1/mcp",
"headers": {
"Authorization": "Bearer ${POPNOW_API_KEY}"
}
}
}
}{
"mcpServers": {
"popnow-api": {
"command": "npx",
"args": [
"-y",
"@popnow/mcp"
],
"env": {
"POPNOW_API_KEY": "sk-popnow-...",
"POPNOW_MCP_URL": "https://api.popnow.ai/api/v1/mcp"
}
}
}
}For clients that only run local servers: the open-source bridge forwards stdio to this endpoint.
Tools
The named tools pick sensible defaults. create_task runs any model by its exact ID.
create_task | Run any model by its exact API ID with the model's own input fields, like POST /api/v1/jobs/createTask. |
|---|---|
create_image · create_video · create_music · create_speech | Named tools with defaults, plus edit_image, apply_effect, remove_background, upscale, add_sound and single-purpose tools such as extend_video and relight_photo. |
list_models | Exact model IDs, each model's inputs and its USD price. |
get_task · list_tasks | Follow a task and list recent tasks made with this key. |
check_balance | Available and held USD for this key's wallet. |
compose_video | Cut earlier results into one MP4 with music, voice and captions. Free. |
find_skills · install_skill | Pick a skill package, then get its playbook, a download link and the install commands. |
run_my_recipe · get_recipe_run · resume_recipe_run | Run your saved recipes and workflows. |
Every charge is approved in USD
- 1Quote
Call a paid tool without max_usd. You get cost_usd and available_usd, and nothing is charged.
- 2Approve
Show the price. After the user says yes, call the same tool with the same arguments plus max_usd set to the quoted cost_usd.
- 3Run
The amount is held when the task starts and settled when it finishes. A failed task releases the hold.
Moving from the old address
API keys sent to https://api.popnow.ai/mcp keep working until January 31, 2027, with Deprecation and Sunset headers. Switch your configuration to the endpoint above before then.
Frequently asked questions
Do I need to install anything?
No. It is a remote server: add the address and your API key. The open-source bridge is only for clients that can run local servers alone.
Which models can I call?
The image, video, music and speech models in the PopNow API catalog that are open to MCP. list_models shows the exact IDs and inputs.
How is it billed?
In USD from the API balance behind your key, at the same prices as the REST API. Every paid call needs an approved max_usd first.
What happens if a task fails?
The held amount is released in full. get_task shows the reason.
Start building in minutes
One key for every model, a USD balance you top up when you need to, and an exact price before every run.
Just want PopNow in ChatGPT or Claude? Use PopNow for ChatGPT & Claude