← Files PixVerseARCHIVED FILE

skills-shared/mcp-errors.md

6.64 KB · Nov 14, 2026 · 00:26 UTC

↓ Download file

# MCP Error Handling

This is a host conversation contract, not an executable cloud dependency. Apply it on
ChatGPT web, desktop and mobile with the same account and generation gates.

## Read The Actual Failure

Check MCP `isError`, JSON-RPC errors, HTTP authentication challenges, import `error_code`,
and terminal task status. HTTP 200 does not prove business success. The current backend
returns business failures as text such as `PixVerse API error 500323: ... (trace_id=...)`;
authentication failures may instead say `authorization is no longer valid (code 10003)`.
Do not require an imagined structured error object. Prefer an explicit returned code to
message matching. Preserve original Unicode messages and exact IDs in recovery context;
explain the actionable cause in the user's language. Do not translate or alter input
references to make an error disappear.

The table is reviewed against `creative_platform/constant/constant.go`,
`constant/workspace.go`, and `pkg/mcpserver/tools.go` on 2026-10-10. It describes known
codes, not a permanent entitlement catalog. Unknown codes retain their server message
and trace; stop new submissions rather than guessing a model, charge or retry policy.

| Code / evidence | Meaning | Conversation action |
|---|---|---|
| HTTP 401, OAuth challenge, 10001-10005, explicit expired/revoked authorization | Connection or account authorization unavailable | Stop paid work; reconnect through host OAuth, then refresh account. If the message says blocked/deleted, explain that account condition and offer support rather than looping reconnect. |
| 400024, 500215, explicit blocked/deleted account | Account restricted or pending deletion | Stop; explain the returned restriction and use the returned support guidance. Reauthorization or upgrade is not a promised fix. |
| 500323 | External model requires a qualifying paid tier | Stop remaining paid tasks; explain the selected model's restriction and link subscription. Non-basic membership alone does not guarantee access. |
| 500342 | Image model requires Standard or higher | Stop; explain the image model's tier restriction. Offer upgrade or an explicitly accepted supported fallback, never silently substitute. |
| 500608 | Feature unavailable to non-members | Stop; explain the feature restriction; offer upgrade or a supported alternative only with consent. |
| 500340 | Upgrade begins next billing cycle | Explain that premium access is not active yet; do not promise immediate access after payment or keep retrying. Refresh account when the user reports the plan is effective. |
| 500043, 500090, 666666 | Insufficient credits | Stop the batch; offer subscription/recharge. A cheaper model is not guaranteed to fit the balance or be free. |
| 500108 | Daily free credits used | Explain the returned daily reset guidance or offer recharge. Do not invent a timezone or reset timestamp. |
| 500930, 500931, 500932 | Team credits, personal cap, or guest spending restriction | Follow the returned owner/admin guidance; a personal subscription link is not automatically the solution. |
| 500044, 500094, HTTP 429 with matching concurrency/rate message | Concurrent-generation or rate limit | Keep accepted task IDs and cards; wait for those tasks. Do not resubmit them or label queued work failed. A new submission requires evidence of non-acceptance and the original stable key/retry rules. |
| 500069 | Service busy | Explain temporary capacity limits. Do not silently change transport/model or assume a failed create was never accepted. |
| 400039, 500321, 500322, 500324, 500325, 500326 | Deprecated model or unsupported quality/parameters/duration/ratio | Explain the actual rejected field using the live schema/server message. Preserve explicit requirements; ask for an alternative when it materially changes the result. No repeated identical invalid request. |
| 400040, 500054, 500063, task `rejected` | Content/reference moderation rejection | Explain the returned cause, stop dependent work, and request an appropriate revision. No automatic evasion or paid replacement. |
| 500047, 500085, unowned path/ID, invalid import | Invalid, unavailable or foreign asset | Keep references; verify the exact task/account or recover/import the authorized source. Do not discard references or switch to prompt-only generation. |
| 500313 while loading a known task | Generic detail lookup failure; not proof of generation failure | Check exact ID and connection; briefly retry read-only status if just submitted. Never regenerate a task to repair status loading. |
| Timeout, connection loss, 5xx without a decisive business code | Transport/service uncertainty | Read-only recovery first. A create may have been accepted: preserve its key, arguments and IDs; follow the route-specific recovery contract in the MCP workflow. |
| Media load, host download or expired attachment failure | Delivery failure | Preserve the successful task. Refresh the existing card or request a fresh temporary URL using download_media; never pay for regeneration to repair delivery. |

When only a message is available, distinguish authentication, membership, insufficient
credits, concurrency, invalid parameters and delivery using its explicit meaning, including
upstream non-English messages. Ambiguous words such as `permission`, `network` or `free`
alone do not establish a category. `free generation` for an entitled paid plan is not
the same as `member_type: 0`. A schema enum is not an entitlement grant.

## Free/Basic Choices

For `member_type: 0`, preserve premium defaults but pause before submitting them. Show
the [PixVerse subscription/recharge page](https://app.pixverse.ai/subscribe) and offer
upgrade or an explicit lower-quality route: Nano Banana 2 Lite (`gemini-3.1-flash-lite`)
at `1080p` for images, or v6 at `540p` for video. Describe these as fallback candidates,
subject to the live schema, credits and backend permission; never promise every free
account can run them or that they cost zero. An explicit user selection of that model
and quality is consent for that route. Keep uploaded/product/character references.

Unknown membership pauses. Paid membership still requires server entitlement. After
an upgrade, read account again before new generation; if the backend still rejects the
model or says next billing cycle, explain that result and stop. A previously accepted
fallback is not consent to replace a later explicitly requested premium model.

Keep replies concise: what was blocked, whether any tasks were already accepted, and
the concrete available next action. Preserve successful cards in a partial batch; stop
remaining submissions on entitlement/credit rejection. No CLI fallback, host shell,
credential request, invented quote, or extra preview card is part of error recovery.

SHA-256: 121ec4bb944a872431601ff80811d7c084755704edc1161e2e29cd8d69e6c433