Run a valid x-data.get_post call through the same SDK surface used by every toolkit.

Minimal tool call

ts
import { Eyeball } from "@eyeball/sdk";

const eyeball = new Eyeball({
  apiKey: process.env.EYEBALL_API_KEY!,
  baseUrl: process.env.EYEBALL_EXECUTOR_URL!,
});

const output = await eyeball.tools.run(
  "x-data.get_post",
  {
  "postId": "example_postId"
},
  { userId: "demo_user" },
);
console.log(output);

The model receives canonical output. Your application retains the execution envelope through tools.execute or the execution APIs when it needs IDs, status, versions, and latency.

Supported canonical tools

ToolPurposeExecutionEffectVersion
x-data.get_postRetrieve one public post, video, clip, short, or media item.sync or asyncread1.0.0
x-data.get_postsList public posts or media published by a creator profile or community.sync or asyncread1.0.0
x-data.get_profileRetrieve a public creator or user profile and visible metrics.sync or asyncread1.0.0
x-data.get_transcriptRetrieve or derive the transcript for a supported public video or audio post.sync or asyncread1.0.0

Only the rows above are implemented. A capability tool omitted by this manifest returns not_supported; eyeball never synthesizes provider parity.

Supported canonical triggers

This manifest does not implement a canonical trigger.

Input and output schemas

x-data.get_post

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_post:1.0.0:x-data",
  "type": "object",
  "description": "Provider content identifier or public URL.",
  "additionalProperties": false,
  "properties": {
    "postId": {
      "type": "string",
      "description": "Provider identifier of the content item.",
      "minLength": 1
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public content URL."
    }
  },
  "anyOf": [
    {
      "required": [
        "postId"
      ],
      "properties": {
        "postId": {
          "type": "string",
          "description": "Provider identifier of the content item.",
          "minLength": 1
        }
      }
    },
    {
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Public content URL."
        }
      }
    }
  ]
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_post:output:1.0.0:x-data",
  "type": "object",
  "description": "Requested public content item.",
  "additionalProperties": false,
  "required": [
    "post"
  ],
  "properties": {
    "post": {
      "type": "object",
      "description": "A normalized public post, video, short, clip, or media item.",
      "additionalProperties": false,
      "required": [
        "postId",
        "platform",
        "authorHandle",
        "url",
        "text",
        "mediaType",
        "createdAt",
        "engagement",
        "hashtags"
      ],
      "properties": {
        "postId": {
          "type": "string",
          "description": "Provider identifier of the content item.",
          "minLength": 1
        },
        "platform": {
          "type": "string",
          "description": "Social platform represented by the result.",
          "minLength": 1
        },
        "authorHandle": {
          "type": "string",
          "description": "Public handle of the content author.",
          "minLength": 1
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Public content URL."
        },
        "text": {
          "type": "string",
          "description": "Visible caption or text content."
        },
        "mediaType": {
          "type": "string",
          "enum": [
            "image",
            "video",
            "text",
            "clip"
          ],
          "description": "Normalized public content kind."
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Content publication timestamp."
        },
        "durationSeconds": {
          "type": "number",
          "minimum": 0,
          "description": "Media duration in seconds when available."
        },
        "engagement": {
          "type": "object",
          "description": "Public engagement counters for one content item.",
          "additionalProperties": false,
          "required": [
            "likes",
            "comments",
            "shares",
            "views"
          ],
          "properties": {
            "likes": {
              "type": "integer",
              "minimum": 0,
              "description": "Visible like count."
            },
            "comments": {
              "type": "integer",
              "minimum": 0,
              "description": "Visible comment count."
            },
            "shares": {
              "type": "integer",
              "minimum": 0,
              "description": "Visible share count."
            },
            "views": {
              "type": "integer",
              "minimum": 0,
              "description": "Visible view count."
            }
          }
        },
        "hashtags": {
          "type": "array",
          "description": "Hashtags attached to the content.",
          "items": {
            "type": "string"
          }
        }
      }
    }
  }
}
x-data.get_posts

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_posts:1.0.0:x-data",
  "type": "object",
  "description": "Public profile and pagination selectors.",
  "additionalProperties": false,
  "required": [
    "handle"
  ],
  "properties": {
    "handle": {
      "type": "string",
      "description": "Public profile or community handle.",
      "minLength": 1
    },
    "pageSize": {
      "type": "integer",
      "description": "Maximum number of posts to return in one page.",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    },
    "pageToken": {
      "type": "string",
      "description": "Opaque continuation token from a previous post page.",
      "minLength": 1
    }
  }
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_posts:output:1.0.0:x-data",
  "type": "object",
  "description": "One page of public content.",
  "additionalProperties": false,
  "required": [
    "posts"
  ],
  "properties": {
    "posts": {
      "type": "array",
      "description": "Public content items.",
      "items": {
        "type": "object",
        "description": "A normalized public post, video, short, clip, or media item.",
        "additionalProperties": false,
        "required": [
          "postId",
          "platform",
          "authorHandle",
          "url",
          "text",
          "mediaType",
          "createdAt",
          "engagement",
          "hashtags"
        ],
        "properties": {
          "postId": {
            "type": "string",
            "description": "Provider identifier of the content item.",
            "minLength": 1
          },
          "platform": {
            "type": "string",
            "description": "Social platform represented by the result.",
            "minLength": 1
          },
          "authorHandle": {
            "type": "string",
            "description": "Public handle of the content author.",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Public content URL."
          },
          "text": {
            "type": "string",
            "description": "Visible caption or text content."
          },
          "mediaType": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "text",
              "clip"
            ],
            "description": "Normalized public content kind."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Content publication timestamp."
          },
          "durationSeconds": {
            "type": "number",
            "minimum": 0,
            "description": "Media duration in seconds when available."
          },
          "engagement": {
            "type": "object",
            "description": "Public engagement counters for one content item.",
            "additionalProperties": false,
            "required": [
              "likes",
              "comments",
              "shares",
              "views"
            ],
            "properties": {
              "likes": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible like count."
              },
              "comments": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible comment count."
              },
              "shares": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible share count."
              },
              "views": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible view count."
              }
            }
          },
          "hashtags": {
            "type": "array",
            "description": "Hashtags attached to the content.",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "nextPageToken": {
      "type": "string",
      "description": "Opaque token to request the next page of posts; absent when the result is complete.",
      "minLength": 1
    }
  }
}
x-data.get_profile

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_profile:1.0.0:x-data",
  "type": "object",
  "description": "Public profile selector.",
  "additionalProperties": false,
  "required": [
    "handle"
  ],
  "properties": {
    "handle": {
      "type": "string",
      "description": "Public profile handle or username.",
      "minLength": 1
    }
  }
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_profile:output:1.0.0:x-data",
  "type": "object",
  "description": "Requested public profile.",
  "additionalProperties": false,
  "required": [
    "profile"
  ],
  "properties": {
    "profile": {
      "type": "object",
      "description": "A normalized public creator, user, channel, or community profile.",
      "additionalProperties": false,
      "required": [
        "profileId",
        "platform",
        "handle",
        "displayName",
        "verified",
        "followers",
        "following",
        "totalPosts"
      ],
      "properties": {
        "profileId": {
          "type": "string",
          "description": "Provider identifier of the public profile.",
          "minLength": 1
        },
        "platform": {
          "type": "string",
          "description": "Social platform represented by the result.",
          "minLength": 1
        },
        "handle": {
          "type": "string",
          "description": "Platform handle, username, channel name, or community name.",
          "minLength": 1
        },
        "displayName": {
          "type": "string",
          "description": "Public display name.",
          "minLength": 1
        },
        "bio": {
          "type": "string",
          "description": "Public biography or description."
        },
        "verified": {
          "type": "boolean",
          "description": "Whether the profile is verified."
        },
        "followers": {
          "type": "integer",
          "minimum": 0,
          "description": "Visible follower or subscriber count."
        },
        "following": {
          "type": "integer",
          "minimum": 0,
          "description": "Visible following count."
        },
        "totalPosts": {
          "type": "integer",
          "minimum": 0,
          "description": "Visible total public post count."
        },
        "profileUrl": {
          "type": "string",
          "format": "uri",
          "description": "Public profile URL."
        },
        "avatarUrl": {
          "type": "string",
          "format": "uri",
          "description": "Public avatar URL."
        },
        "channelId": {
          "type": "string",
          "description": "Platform channel identifier when distinct from the profile ID."
        }
      }
    }
  }
}
x-data.get_transcript

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_transcript:1.0.0:x-data",
  "type": "object",
  "description": "Public content URL to transcribe.",
  "additionalProperties": false,
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public content URL."
    }
  }
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_transcript:output:1.0.0:x-data",
  "type": "object",
  "description": "Transcript for the selected public content.",
  "additionalProperties": false,
  "required": [
    "transcript"
  ],
  "properties": {
    "transcript": {
      "type": "object",
      "description": "A normalized transcript for public video or audio content.",
      "additionalProperties": false,
      "required": [
        "transcriptId",
        "platform",
        "postId",
        "url",
        "language",
        "text",
        "segments"
      ],
      "properties": {
        "transcriptId": {
          "type": "string",
          "description": "Provider identifier of the transcript.",
          "minLength": 1
        },
        "platform": {
          "type": "string",
          "description": "Social platform represented by the result.",
          "minLength": 1
        },
        "postId": {
          "type": "string",
          "description": "Provider identifier of the transcribed content item.",
          "minLength": 1
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Public content URL."
        },
        "language": {
          "type": "string",
          "description": "Transcript language code.",
          "minLength": 1
        },
        "text": {
          "type": "string",
          "description": "Complete transcript text.",
          "minLength": 1
        },
        "segments": {
          "type": "array",
          "description": "Timestamped transcript segments.",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "startSeconds",
              "endSeconds",
              "text"
            ],
            "properties": {
              "startSeconds": {
                "type": "number",
                "minimum": 0,
                "description": "Segment start in seconds."
              },
              "endSeconds": {
                "type": "number",
                "minimum": 0,
                "description": "Segment end in seconds."
              },
              "text": {
                "type": "string",
                "description": "Segment text.",
                "minLength": 1
              }
            }
          }
        }
      }
    }
  }
}

Authentication

PropertyValue
Auth classapi_key
Required scopesNone
Optional scopesNone
Credential fieldsapiKey

Credentials are resolved inside the executor by CredentialProvider. They never belong in tool input, x_provider, model context, logs, or execution output.

Provider-specific extensions

This manifest declares no provider-specific schema extensions. Use only canonical fields.

Provider differences may appear only under x_provider.x-data and only when the schema above declares them.

Sync and async behavior

All tools are synchronous by nature, but callers may choose mode: "async" to queue them.

Mutations require a stable Idempotency-Key. The TypeScript SDK accepts it as idempotencyKey; it is never part of the JSON request body.

REST example

Bash
curl "$EYEBALL_EXECUTOR_URL/v1/execute" \
  -H "Authorization: Bearer $EYEBALL_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{"tool":"x-data.get_post","userId":"demo_user","input":{"postId":"example_postId"},"mode":"sync"}'

Mock support

Point EYEBALL_EXECUTOR_URL at a mock-configured executor to run through the real catalog, validation, credential seam, adapter, normalized errors, and execution records with no Twitter/X via ScrapeCreators account. Mock selection changes the executor endpoint and trusted provider base-URL configuration, never the execute request.

Limitations

  • This page describes the manifest's explicit P0 subset, not every operation offered by the provider.
  • Provider account policy, consent UI, quota details, and current wire compatibility still require a real-provider certification pass.
  • Fields outside the canonical schemas and declared x_provider extensions are rejected.

Versions

ContractVersion
Runtime catalog1.1
Manifest catalog1.0
Manifest schema1.0
Sourcescrapecreators
TierP0
Capabilitiessocial_media_data

Next

Use Testing with mocks to exercise this toolkit before connecting a live provider account.