IMPORTANT ASYNCHRONOUS TASK WORKFLOW
- Call this MCP generation tool once and read taskId from structuredContent.
- Do not call the generation tool again while the task is PENDING or RUNNING.
- Wait at least 5 seconds, then call nexscope_media_task_result with skillSlug set to seo-ai-search-citation-sample, the exact taskId, and the same bearer API key. While the task remains PENDING or RUNNING, use 5, 10, 20, and 30-second progressive backoff. Never query more often than once every 5 seconds.
- Stop querying when the task succeeds or fails. On success, return the final Nexscope resource URLs and the returned count as the actual charged credits.
- Never invent a taskId and never expose internal provider names or provider resource URLs.
Ai Search Citations
AI Search Citation Sample MCP Tool
AI Search Citation Sample. A bounded consumer ChatGPT answer and citation observation with explicit missing evidence. One submit and at most eight fixed reads. Missing values are not zero. Prices and publication are unapproved. Owner-only historical results are retained seven days.
nexscope_seo_ai_search_citation_sample/api/skill-api/v1/mcptools/callAuthentication
Send the user API key as a bearer token on every MCP JSON-RPC request.
Authorization: Bearer nk-xxxxxxxxxxxxxxxxxIf authentication is missing or invalid, ask the user to open API Access and copy a valid key before calling this tool.
Call this MCP tool
Use tools/call with the MCP tool name below. The arguments object should match the table on this page.
{
"jsonrpc": "2.0",
"id": "seo-ai-search-citation-sample-1",
"method": "tools/call",
"params": {
"name": "nexscope_seo_ai_search_citation_sample",
"arguments": {
"prompt": "Compare reusable packaging"
}
}
}POST /api/skill-api/v1/mcphttps://www.nexscope.ai/mcp-map/seo-ai-search-citation-sampleAsynchronous task workflow
This capability uses a create-and-query flow. Creating the task and retrieving its final generated resources are two connected requests.
- 1. Create onceCall the MCP tool once and keep the returned
taskId. - 2. Query with backoffCall
nexscope_media_task_resultwith this skill slug and task ID. Wait at least 5 seconds first; while pending or running, back off at 5, 10, 20, then 30-second intervals. - 3. Use final resultStop at a terminal status. Successful results contain Nexscope resource URLs and the actual charged-credit count.
{
"jsonrpc": "2.0",
"id": "seo-ai-search-citation-sample-result-1",
"method": "tools/call",
"params": {
"name": "nexscope_media_task_result",
"arguments": {
"skillSlug": "seo-ai-search-citation-sample",
"taskId": "TASK_ID_FROM_THE_GENERATION_RESULT"
}
}
}GET https://api.nexscope.ai/api/skill-api/v1/skills/seo-ai-search-citation-sample/tasks/{taskId}Arguments
Response fields
Treat structuredContent as the programmatic API response payload.
| Name | Type | Required | Description |
|---|---|---|---|
data | any | required | Data value used by this API operation. |
code | integer | required | 0 means accepted or successful; nonzero is a platform error. |
msg | string | null | required | Msg value used by this API operation. |
ts | string | required | Epoch milliseconds. |
time | string | required | Server local time: yyyy-MM-dd HH:mm:ss. |
cost | string | required | Elapsed milliseconds, never credits; -1 outside web requests. |
traceId | string | null | required | Trace id value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data | any | required | Data value used by this API operation. |
One of option 1 — requires callId, status, result
| Name | Type | Required | Description |
|---|---|---|---|
data | object | required | Data value used by this API operation. |
data.result | any | required | Result value used by this API operation. |
data.callId | string | required | Call id value used by this API operation. |
data.schemaVersion | string | optional | Schema version value used by this API operation. |
data.status | string | required | Status value used by this API operation. |
data.source | string | optional | Source value used by this API operation. |
data.requestedAt | string | integer | null | optional | Requested at value used by this API operation. |
data.completedAt | string | integer | null | optional | Completed at value used by this API operation. |
data.coverage | object | null | optional | Coverage value used by this API operation. |
data.usage | object | null | optional | Usage value used by this API operation. |
data.usage.billingStatus | string | null | optional | Billing status value used by this API operation. |
data.usage.chargedCredits | string | integer | null | optional | Charged credits value used by this API operation. |
Any of option 1 — requires meta, prompt, model, answerMarkdown, checkUrl, citations
| Name | Type | Required | Description |
|---|---|---|---|
data.result | object | required | Result value used by this API operation. |
data.result.meta | object | required | Meta value used by this API operation. |
data.result.meta.source | string | required | Source value used by this API operation. Constant: DATAFORSEO_CHATGPT_INTERFACE |
data.result.meta.sampledAt | any | required | Sampled at value used by this API operation. |
data.result.meta.retrievedAt | any | required | Retrieved at value used by this API operation. |
data.result.meta.market | object | required | Market value used by this API operation. |
data.result.meta.market.country | string | required | Country value used by this API operation. Constant: US |
data.result.meta.market.locationCode | integer | required | Location code value used by this API operation. Constant: 2840 |
data.result.meta.market.language | string | required | Language value used by this API operation. Constant: en |
data.result.meta.truncated | boolean | required | Truncated value used by this API operation. |
data.result.meta.missing | array | required | Missing value used by this API operation. Maximum items: 100 |
data.result.meta.missing[] | object | required | Item in data result meta missing. |
data.result.meta.missing[].path | string | required | Path value used by this API operation. |
data.result.meta.missing[].reason | string | required | Reason value used by this API operation. Allowed: MISSING, NULL, INVALID, UNSUPPORTED, TRUNCATED |
data.result.meta.missingOverflow | boolean | required | Missing overflow value used by this API operation. |
data.result.prompt | string | required | Prompt value used by this API operation. Maximum length: 2000 |
data.result.model | any | required | Model value used by this API operation. |
data.result.answerMarkdown | any | required | Answer markdown value used by this API operation. |
data.result.checkUrl | any | required | Check url value used by this API operation. |
data.result.citations | array | required | Citations value used by this API operation. Maximum items: 50 |
data.result.citations[] | object | required | Item in data result citations. |
data.result.citations[].title | any | required | Title value used by this API operation. |
data.result.citations[].snippet | any | required | Snippet value used by this API operation. |
data.result.citations[].domain | any | required | Domain value used by this API operation. |
data.result.citations[].url | any | required | Url value used by this API operation. |
data.result.citations[].sourceName | any | required | Source name value used by this API operation. |
data.result.citations[].publishedAt | any | required | Published at value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.meta.sampledAt | integer | required | Sampled at value used by this API operation. Minimum: 0 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.meta.sampledAt | null | required | Sampled at value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.meta.retrievedAt | integer | required | Retrieved at value used by this API operation. Minimum: 0 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.meta.retrievedAt | null | required | Retrieved at value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.model | string | required | Model value used by this API operation. Maximum length: 1024 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.model | null | required | Model value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.answerMarkdown | string | required | Answer markdown value used by this API operation. Maximum length: 65536 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.answerMarkdown | null | required | Answer markdown value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.checkUrl | string | required | Check url value used by this API operation. Maximum length: 4096 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.checkUrl | null | required | Check url value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.citations[].title | string | required | Title value used by this API operation. Maximum length: 1024 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.citations[].title | null | required | Title value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.citations[].snippet | string | required | Snippet value used by this API operation. Maximum length: 8192 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.citations[].snippet | null | required | Snippet value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.citations[].domain | string | required | Domain value used by this API operation. Maximum length: 1024 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.citations[].domain | null | required | Domain value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.citations[].url | string | required | Url value used by this API operation. Maximum length: 4096 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.citations[].url | null | required | Url value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.citations[].sourceName | string | required | Source name value used by this API operation. Maximum length: 1024 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.citations[].sourceName | null | required | Source name value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result.citations[].publishedAt | integer | required | Published at value used by this API operation. Minimum: 0 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result.citations[].publishedAt | null | required | Published at value used by this API operation. |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result | null | required | Result value used by this API operation. |
One of option 2 — requires callId, status, reason, retryable
| Name | Type | Required | Description |
|---|---|---|---|
data | object | required | Data value used by this API operation. |
data.reason | string | required | Reason value used by this API operation. |
data.callId | string | null | required | Call id value used by this API operation. |
data.status | string | required | Status value used by this API operation. |
data.retryable | boolean | required | Retryable value used by this API operation. |
data.taskId | string | null | optional | Task id value used by this API operation. |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data | null | required | Data value used by this API operation. |
Examples
Example arguments
{
"prompt": "Compare reusable packaging"
}Example structuredContent
{
"data": {
"status": "PROCESSING",
"retryable": false,
"reason": "IN_PROGRESS",
"callId": "00000000-0000-4000-8000-000000000001"
},
"code": 0,
"msg": null,
"ts": "0",
"time": "2026-01-01 00:00:00",
"cost": "-1",
"traceId": null
}