create_fan_out_extraction

create_fan_out_extraction MCP tool: launch a paid fan-out extraction on chosen prompts. 5 credits per prompt, charged only when ChatGPT's search engine actually searched. Dry run, inputs, response shape, JSON example.

Updated 2026-09-26

create_fan_out_extraction launches a fan-out extraction on prompts you choose. For each prompt, the ChatGPT search engine is queried through the OpenAI API, and Mentionable stores what it did: the search queries it ran, the ranked results each search returned, the pages it opened and the pages it cited in its answer. The tool returns an extractionId right away; the extraction runs in the background.

ChatGPT no longer shows its search queries to logged-out visitors, which is how daily tracking reads it. An extraction asks OpenAI's search engine directly, so the queries you get come from a separate call, not from the tracked answer itself. That separate call is why extractions are billed.

Requires member role minimum. customer role is rejected.

When to use

  • Before writing content: see which queries ChatGPT's search runs for a topic, and which pages rank for them.
  • When a prompt never mentions the brand: find the queries where the site is absent from the results (summary.queriesWithoutOwn in get_fan_out_extraction).
  • In an agent workflow: list_prompts to pick prompts, create_fan_out_extraction with dryRun: true to show the cost, then the real call once the user agrees.

Billing

Every plan is credit-based. An extraction costs 5 credits per prompt, charged prompt by prompt and only when the engine searched. A prompt answered without any web search costs nothing, and neither does a prompt that fails.

Before anything is queued, the worst case (every prompt searched) must fit the credits the workspace can spend, with the same rule as daily tracking: overage headroom only for workspaces billed through Stripe, capped by the monthly overage cap, and work already in flight counted. Otherwise the tool returns insufficient_credits and nothing starts.

Input

Field Type Default Description
projectId string (CUID) required Project scope.
promptIds string[] (CUID) required 1 to 200 prompts of this project. Duplicates and deleted prompts are ignored.
dryRun boolean false Return the cost and the spendable credits without launching anything.

Response

Dry run

{
  "success": true,
  "dryRun": true,
  "promptCount": 24,
  "creditCostPerPrompt": 5,
  "maxCredits": 120,
  "remainingCredits": 2380,
  "allowed": true
}

remainingCredits is null when the workspace has uncapped pay-as-you-go overage. maxCredits is the worst case; the real charge is lower when some prompts are answered without a search.

Extraction queued

{
  "success": true,
  "extractionId": "clx_ext_42",
  "status": "PENDING",
  "promptCount": 24,
  "maxCredits": 120,
  "message": "Extraction queued. Poll get_fan_out_extraction with this extractionId until status is COMPLETED, PARTIAL or FAILED (usually under a minute per 10 prompts)."
}

Errors

{ "success": false, "error": "insufficient_credits", "cost": 120, "remaining": 40, "message": "..." }
{ "success": false, "error": "no_prompts", "message": "..." }

no_prompts means none of the ids belongs to the project, or they are all deleted.

Tips and patterns

  • Dry run first when an end user is paying: show maxCredits and remainingCredits, then launch.
  • Poll, don't block. Call get_fan_out_extraction every 10 to 20 seconds while status is PENDING or RUNNING.
  • Batch by topic. One extraction per cluster of related prompts keeps summary.topDomains readable.
  • Don't present the queries as the tracked answer's. They come from a separate call to OpenAI's search engine.

Related tools

You can see where you stand today.

Free trial. Start tracking your AI visibility, no credit card.