MCP

MCP Server

Connect Sukidata to an MCP-compatible client with your existing API key.

Remote MCP endpointhttps://mcp.sukidata.com/mcp
TransportStreamable HTTP
AuthenticationBearer API key
CredentialsExisting Sukidata key

QUICK START

Connect your client

Add the remote server to your client's MCP settings:

  1. 1
    Get your API key

    Use an existing key or create one in the console. Store it securely.

  2. 2
    Add the remote server

    Set the MCP URL to https://mcp.sukidata.com/mcp and send your key in the Authorization header.

  3. 3
    Reload your client

    Confirm that Sukidata appears in the client's tool list.

Generic remote MCP configuration
{
  "mcpServers": {
    "sukidata": {
      "url": "https://mcp.sukidata.com/mcp",
      "headers": {
        "Authorization": "Bearer $SUKIDATA_API_KEY"
      }
    }
  }
}

Configuration filenames and environment-variable syntax vary by client. The endpoint and Bearer header above are the required connection values.

TOOLS

Web Data tools

Use get_result with the returned search ID to continue a pending search without creating another request.

google_search

Google Search

May use credits

Returns one page of structured Google results for a query and market.

queryRequired search query.required
locationHuman-readable search location.optional
google_domainGoogle domain, such as google.co.jp.google.com
country_code language_code
Country and interface language.us · en
device search_type
Device and Google result type.desktop · web
safe_search fresh
Safe Search and reusable-result controls.false
start wait_for_completion
Result offset and short wait behavior.0 · true
twitter_user_timeline

Twitter user timeline

May use credits

Returns public posts from one Twitter account. Provide exactly one account identifier.

username Username with or without @.one required
user_idNumeric Twitter user ID.one required
max_resultsMaximum posts per page, from 1 to 100.20
cursorOpaque cursor returned by the preceding page.optional
wait_for_completionWait briefly for a completed result.true
get_result

Get an existing result

No new charge

Set product to serp or twitter and search_id to the ID returned by the search tool.

IMAGES

Generate and edit images

Image generation usually takes 30 seconds to two minutes. Submit once, then use the returned task_id to retrieve the result.

generate_image

Generate images

Uses AI Balance

Requires model, prompt and idempotency_key. Generates one image by default. Optional images supplies reference images.

generate_image arguments
{
  "model": "gpt-image-2.5",
  "prompt": "A blue ceramic cup on a white background",
  "idempotency_key": "cup-example-1",
  "size": "1254x1254",
  "quality": "high"
}
edit_image

Edit images

Uses AI Balance

Accepts the same parameters, plus required images: an array of 1–16 PNG, JPEG or WebP references. Each entry can be a public HTTPS URL or a Base64 data URL. You can reuse a URL from a previous generation.

Optional mask accepts a PNG URL or data URL, matching the first reference image's dimensions. Transparent areas indicate where to edit. Each image can be up to 20 MiB, with 32 MiB total including the mask; model-specific limits apply.

Upload local images

With a remote connection, your client reads the local file and sends a Base64 data URL. This example uses an already-connected MCP client; use image/jpeg or image/webp for those formats.

Remote MCP · local file upload
import { readFile } from "node:fs/promises";

const image = await readFile("./photo.png");
await client.callTool({
  name: "edit_image",
  arguments: {
    model: "gpt-image-2.5",
    prompt: "Replace the background with a snowy mountain",
    idempotency_key: "upload-edit-example-1",
    images: ["data:image/png;base64," + image.toString("base64")]
  }
});

For a mask, read a PNG file and pass its data URL in mask. Keep the file contents, arguments and idempotency_key unchanged when retrying the same submission.

Image parameters

modelgpt-image-2.5 or gpt-image-2. Both support the settings below.required
idempotency_keyA unique key for each intended generation: 1–128 printable ASCII characters without spaces. Reuse the exact key and arguments when retrying an interrupted submission.required
sizeauto or WIDTHxHEIGHT. See image sizes.model default
qualityauto, low, medium or high.model default
n1–4 output images per request, for generation and editing.1
output_formatpng, jpeg or webp.png
backgroundauto, opaque or transparent. Transparency requires PNG or WebP.optional
output_compression0–100 for JPEG and WebP; not applied to PNG.optional
moderationauto or low.optional
userYour end-user identifier, up to 256 characters.optional
get_image_task

Retrieve an image task

No new charge

Requires task_id. Optional wait_seconds accepts 0–20 and defaults to 20. The tool returns sooner if the result is ready. Use 0 to check once without waiting for generation.

get_image_task arguments
{
  "task_id": "img_example",
  "wait_seconds": 20
}

It returns generating, completed or failed. If still generating, call this tool again with the same ID. Tasks created through the API or Playground can also be retrieved.

API tasks with status queued, processing or unknown return generating here.

Completed results include images with public URLs, dimensions, format, byte size and url_expires_at. Output settings and usage are included when available. Links are available for 31 days from publication and anyone with the URL can open the image; save files before expiry.

The tools/call result's content includes both URL resource links and ImageContent blocks (type: "image"). Each image block follows its link and contains the original image bytes as Base64, without resizing or changing metadata. Compatible clients can display or inspect the images directly. Remote HTTP and local stdio return the same format.

tools/call · content
[
  { "type": "text", "text": "Image generation completed. 1 image(s)." },
  {
    "type": "resource_link",
    "uri": "https://files.sukidata.com/ai/images/example-token/img_example_0.png",
    "name": "image-1.png",
    "mimeType": "image/png"
  },
  {
    "type": "image",
    "mimeType": "image/png",
    "data": "<base64 image bytes>"
  }
]

Inline images are limited to 5 MiB each and 6 MiB total before Base64 encoding. Reading them may add up to 8 seconds after the task query. Larger images and images that could not be read retain their URLs, with a note in content. This does not change the task status or charge.

A timed-out wait does not cancel generation. If submission is interrupted, query the returned task ID; if no ID was returned, retry the original arguments with the same idempotency_key. A query error does not mean generation failed.

RESPONSES

Results and billing

Tools return a text summary in content and data in structuredContent. Web Data results include these fields; the search response is in data.

okWhether the tool call succeeded. The search may still be in progress.
search_idID used to retrieve an in-progress result.
statusSearch status: Queued, Processing, Success, or Error.
credits_usedCredits charged once the search finishes.
cache_hitWhether the workspace reused an available result.
request_idReference ID for troubleshooting.
Web Data Credits and AI Balance

Google Search and Twitter use Credits; check credits_used for the actual amount. Image tools use AI Balance in USD. Image results include billing.status and billing.charged_amount; an unconfirmed amount is null, not zero. Querying an existing task does not create a new charge.

Billing details

TROUBLESHOOTING

Troubleshooting

When connecting, HTTP 401 means the Bearer key is missing or malformed; 429 means the request limit was reached. Check your configuration or wait before retrying.

Tool failures set isError: true. The code and message in structuredContent.error describe the cause.

  • auth_failed or scope_forbidden: check the key's status and product permissions.
  • insufficient_credits or insufficient_ai_balance: add funds to the corresponding balance.
  • rate_limited: wait before retrying the same operation.
  • submission_unconfirmed: query the returned task ID, or retry the original arguments and idempotency_key if no ID was returned.
  • image_status_unavailable or service_unavailable: if an ID was returned, query it again. Image generation may still be running.

Need help connecting? Email support@sukidata.com.