MCP conflicting_payload_fields: image_url or avatar_id, not both
Sume's avatar-image-to-video_create and kling-motion-control_create take image_url XOR avatar_id or avatar_handle. Both returns conflicting_payload_fields.
Two tools on Sume's hosted MCP server take a still as the visual source: avatar-image-to-video_create and kling-motion-control_create. The payload accepts exactly one source, either image_url or an avatar reference, which is avatar_id or avatar_handle. If a model sends both, the call fails before any job exists, with the code conflicting_payload_fields.
The error, field by field
The message reads that the payload takes exactly one visual source: image_url, or avatar_id / avatar_handle, not both. The data holds the code, a path of image_url, a conflicts_with array of avatar_id and avatar_handle, and the tool name. Nothing ran, so no spend was held.
The opposite mistake has its own code. If the payload carries neither an image_url nor an avatar reference, the code is missing_payload_field with path image_url and next_action provide_image_url_or_avatar_reference. Blank strings count as absent, because the check trims the values.
Why a model sends both
Agents often fill an avatar_handle from memory of an earlier turn, then add an image_url the user just pasted. Both look valid to the model. The server refuses to guess which one the user meant, because the answer changes the face in the video. Pick one source and drop the other.
{
"idempotency_key": "promo-17-motion-1",
"payload": {
"avatar_handle": "my-host",
"motion_video_url": "https://cdn.example.com/dance.mp4",
"duration_seconds": 8
}
}Instruction text that helps the agent
Tell the agent in its system prompt which source wins when both exist. For example: use the avatar when the user names a person who is saved, and use image_url only for a pasted image. Retrying with the same idempotency_key is safe after this error, because the first call did not run.
Keep the rest of the payload intact on the retry. The tools also demand fields of their own, such as a duration_seconds that matches the media length, so a corrected call can still fail on a different missing field. Read each error in turn rather than guessing.
Sources
Related posts
More in Integrations
- Sume MCP OAuth opens a consent page on mcp.sume.com, not app.sume.com
Hosted Sume MCP sign-in redirects to a consent page on the MCP host with Read locked on and a Write toggle off. Do not point clients at app.sume.com or www.
- crawl_feed in Sume MCP: top-viewed posts are ranked within 3 pages
crawl_feed reads recent or top-viewed items from a known Instagram or TikTok account. It returns up to 24 items from 3 pages, so play_count ranks a sample only.
- crawl_media in Sume MCP: one social URL in, expiring media URLs out
crawl_media resolves one public Instagram or TikTok URL to a permalink, counts and image or video candidates. Those URLs may expire, so import before you reuse.
- crawl_profile in Sume MCP: Instagram or TikTok handle to counts
Use crawl_profile to turn a public Instagram or TikTok handle into identity and counts. It is read-only, unbilled discovery, and a missing count is unknown.
Written by Sume