Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,536Letters: 14Defects: 1,322counted 2 min ago
teppi

Server definition

Hash
sha256:35d103ac139d2efce0e360e58970fbb2a370a1deee222ea01719fb0e818d7fc9
What it is
What a remote MCP server returned when asked what it offers: 37 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Autocomplete creator names, usernames, or display names from partial input.\n\nUse this for fast lookup when the user types a partial handle or name and you need to\nresolve it to canonical creator IDs (e.g., \"find @cris\" or \"who's that fitness coach\ncalled Jane?\"). Cheap and fast — prefer over `search_creators` for handle-style\nqueries where the user already knows roughly who they want.\n\nUse `get_profile` instead when the user gives an exact platform+username pair. Use\n`search_creators` for the same fuzzy creator lookup behavior with a less typeahead-\nspecific name. Use `semantic_search_creators` only for discovery by topic, niche,\naudience, geography, or content style, not for resolving a known creator.\n\nExamples:\n- User: \"Who is that fitness coach called Jane?\" -> use this tool.\n- User: \"Find @cris...\" -> use this tool to resolve the partial handle.\n- User: \"Pull @niickjackson on Instagram\" -> use `get_profile`, not this tool.\n\nReturns a short list of matching creators with their IDs, platforms, and display names.\nUse the IDs returned here as input to `get_creator`, `find_lookalike_creators`, or\n`match_creators` for downstream operations.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "Platform": { "description": "Social media platform", "enum": [ "instagram" ], "example": "instagram", "type": "string" } }, "properties": { "limit": { "default": 5, "description": "Maximum results to return", "example": 5, "maximum": 50, "minimum": 1, "type": "integer" }, "platform": { "allOf": [ { "$ref": "#/definitions/Platform" } ], "description": "Filter by platform" }, "q": { "description": "Search query (min 2 characters)", "example": "fitness", "maxLength": 100, "minLength": 2, "type": "string" }, "scope": { "default": "all_platforms", "description": "Which platforms to include in results", "enum": [ "creator_only", "matched_platforms", "all_platforms" ], "example": "all_platforms", "type": "string" } }, "required": [ "q" ], "type": "object" }, "name": "autocomplete_creators", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Find creators SIMILAR to one or more seed creators.\n\nUse this when the user already knows a creator they like and wants more like them\n(e.g., \"find creators like @therock\", \"find more creators like these three I just\nbooked\"). Seeds are blended via creator-profile + visual-style + fact embeddings to\nsurface similar accounts.\n\nSeeds are passed in `seed_creator_ids` (canonical UUIDs) and/or `seed_profiles`\n(platform + username; resolve handles via `autocomplete_creators` first if needed).\nReturns a ranked list of similar creators with scores. `limit` caps results\n(default 25, max 100). Use the flat follower, engagement-rate, and verified fields\nto constrain results. A `seed_not_found` response means the supplied creator is\nnot available for similarity matching; choose another seed instead of retrying it.\n\nUse `semantic_search_creators` instead when you have a topic/niche but no seed.\nUse `match_creators` when you have specific candidates and want to score their fit\nagainst a brief.\n\nExamples:\n- User: \"Find creators like @niickjackson on Instagram\" -> use this tool with\n `seed_profiles: [{ platform: \"instagram\", username: \"niickjackson\" }]`.\n- User: \"Find news creators with 1M+ followers\" -> use `semantic_search_creators`,\n not this tool.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "definitions": { "Platform": { "description": "Social media platform", "enum": [ "instagram" ], "example": "instagram", "type": "string" } }, "properties": { "cursor": { "description": "Pagination cursor from a previous response.", "type": "string" }, "limit": { "default": 25, "description": "Maximum results to return.", "maximum": 100, "minimum": 1, "type": "integer" }, "max_engagement_rate": { "description": "Maximum engagement rate as a percentage from 0 to 100.", "maximum": 100, "minimum": 0, "type": "number" }, "max_followers": { "description": "Maximum follower count.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "min_engagement_rate": { "description": "Minimum engagement rate as a percentage from 0 to 100.", "maximum": 100, "minimum": 0, "type": "number" }, "min_followers": { "description": "Minimum follower count.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "seed_creator_ids": { "description": "Seed creators identified by canonical Influship creator UUID.", "items": { "additionalProperties": false, "properties": { "creator_id": { "description": "Canonical Influship creator UUID.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "weight": { "default": 1, "description": "Relative seed weight from 0 to 1. Omit for the default weight of 1.", "maximum": 1, "minimum": 0, "type": "number" } }, "required": [ "creator_id" ], "type": "object" }, "maxItems": 10, "type": "array" }, "seed_profiles": { "description": "Seed creators identified by platform and username.", "items": { "additionalProperties": false, "properties": { "platform": { "allOf": [ { "$ref": "#/definitions/Platform" } ], "description": "Social platform for the username." }, "username": { "description": "Platform username or handle without the @ sign.", "maxLength": 50, "minLength": 1, "type": "string" }, "weight": { "default": 1, "description": "Relative seed weight from 0 to 1. Omit for the default weight of 1.", "maximum": 1, "minimum": 0, "type": "number" } }, "required": [ "platform", "username" ], "type": "object" }, "maxItems": 10, "type": "array" }, "verified": { "description": "When set, only return verified or unverified creators.", "type": "boolean" } }, "type": "object" }, "name": "find_lookalike_creators", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch the full record for a single creator by ID or exact platform username.\n\nUse this when you already have either:\n- a canonical creator UUID returned by `search_creators`,\n `semantic_search_creators`, `autocomplete_creators`, or\n `find_lookalike_creators`; or\n- an exact platform+username pair such as platform \"instagram\" and username\n \"niickjackson\".\n\nPass `include: ['profiles']` to also receive the creator's social profile\nsummaries when using a creator UUID. For platform+username inputs, this tool resolves\nthrough the profile endpoint and returns the profile record plus the underlying creator\nrecord, so you already get the matched profile context.\n\nExamples:\n- User: \"Get creator 123e4567-e89b-12d3-a456-426614174000\" -> call with id.\n- User: \"Get @niickjackson on Instagram\" -> call with platform \"instagram\" and\n username \"niickjackson\", or use `get_profile` if profile metrics are the main need.\n- User: \"Tell me about @niickjackson and include his profiles\" -> use platform\n \"instagram\" and username \"niickjackson\"; then use `get_profile`/`get_posts` for\n platform-specific metrics and content if needed.\n\nUse `lookup_profiles` for batch exact profile lookups.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "definitions": { "Platform": { "description": "Social media platform", "enum": [ "instagram" ], "example": "instagram", "type": "string" } }, "properties": { "id": { "description": "Creator unique identifier", "example": "123e4567-e89b-12d3-a456-426614174000", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "include": { "description": "Additional data to include in response", "example": [ "profiles" ], "items": { "enum": [ "profiles" ], "type": "string" }, "type": "array" }, "platform": { "allOf": [ { "$ref": "#/definitions/Platform" } ], "description": "Social platform for the username." }, "username": { "description": "Public username or handle. A leading @ is accepted.", "type": "string" } }, "type": "object" }, "name": "get_creator", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch raw Instagram post-page data by shortcode.\n\nUse this when the user needs fresh raw Instagram post metadata that is not\nguaranteed on regular cached post-list endpoints yet, including coauthors,\ntagged users, paid partnership metadata, product mentions, music attribution,\nlocation, display resources, and video versions.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "shortcode": { "description": "Instagram post shortcode from a /p/, /reel/, or /tv/ URL", "minLength": 1, "type": "string" } }, "required": [ "shortcode" ], "type": "object" }, "name": "get_instagram_post", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Transcribe an Instagram video post by shortcode through the raw API.\n\nThe response includes raw post metadata on a transcript cache miss. A cache hit\nomits the post field; use `get_instagram_post` when you need post metadata with\na cached transcript.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "language": { "description": "Optional transcript language code. Omit to auto-detect.", "minLength": 2, "type": "string" }, "shortcode": { "description": "Instagram post shortcode from a /p/, /reel/, or /tv/ URL", "minLength": 1, "type": "string" } }, "required": [ "shortcode" ], "type": "object" }, "name": "get_instagram_post_transcript", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Transcribe a bounded list of Instagram video posts by shortcode through the raw API.\n\nEach successful item includes transcript data. The nested post field is present\non cache misses and omitted on cache hits; use `get_instagram_posts` when you\nalso need post metadata for every shortcode.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "language": { "description": "Optional transcript language code. Omit to auto-detect.", "minLength": 2, "type": "string" }, "shortcodes": { "description": "Instagram video post shortcodes from /p/, /reel/, or /tv/ URLs", "items": { "minLength": 1, "type": "string" }, "maxItems": 10, "minItems": 1, "type": "array" } }, "required": [ "shortcodes" ], "type": "object" }, "name": "get_instagram_post_transcripts", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch raw Instagram post-page data for a bounded list of shortcodes through the raw API. Transient upstream recovery is handled automatically within the request deadline.\n\nReturns one item per requested shortcode with per-item success or error details.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "shortcodes": { "description": "Instagram post shortcodes from /p/, /reel/, or /tv/ URLs", "items": { "minLength": 1, "type": "string" }, "maxItems": 20, "minItems": 1, "type": "array" } }, "required": [ "shortcodes" ], "type": "object" }, "name": "get_instagram_posts", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch a creator's posts, sorted and paginated.\n\nUse this when the user asks to see what a creator has posted (e.g., \"show me Jane's\nlast 20 posts\", \"what are this creator's top-engagement reels?\", \"pull recent posts\nfrom creator-id ABC\"). Identify the creator by either `creator_id` (UUID) OR\n(`platform` + `username`).\n\n`sort` defaults to \"recent\" (newest first); use \"top_engagement\" for the highest-\nengagement posts, or one of \"most_likes\" / \"most_views\" / \"most_comments\" for a\nspecific metric. `limit` defaults to 12 and is capped at 50. Pass `cursor` from a\nprevious response's `next_cursor` to paginate.\n\nReturns post records (caption, media URL, like/comment/view counts, timestamps),\nplus `has_more` and `next_cursor` for pagination.\n\nExamples:\n- User: \"Show @niickjackson's recent Instagram posts\" -> use this tool with\n platform \"instagram\" and username \"niickjackson\".\n- User: \"Is @niickjackson a fit for Pixel?\" -> use this after `get_profile` when\n the fit analysis needs recent content evidence, then call `match_creators`.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "Platform": { "description": "Social media platform", "enum": [ "instagram" ], "example": "instagram", "type": "string" }, "PostSort": { "description": "Stable post ordering. top_engagement uses (likes + comments) / views, with posts that have no measurable views sorted last.", "enum": [ "recent", "top_engagement", "most_likes", "most_views", "most_comments" ], "example": "recent", "type": "string" } }, "properties": { "creator_id": { "description": "Creator ID (use this OR platform+username)", "example": "123e4567-e89b-12d3-a456-426614174000", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "cursor": { "description": "Opaque keyset cursor from next_cursor. A cursor is bound to the sort order that produced it; using it with another sort returns 400.", "type": "string" }, "limit": { "default": 12, "description": "Maximum posts to return", "example": 12, "maximum": 50, "minimum": 1, "type": "integer" }, "platform": { "allOf": [ { "$ref": "#/definitions/Platform" } ], "description": "Platform (required with username)" }, "sort": { "allOf": [ { "$ref": "#/definitions/PostSort" } ], "default": "recent", "description": "Sort order" }, "username": { "description": "Username (required with platform)", "example": "fitness_coach_jane", "maxLength": 50, "minLength": 1, "type": "string" } }, "type": "object" }, "name": "get_posts", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch a single social profile by (platform, username).\n\nAlways use this first when the user gives an exact handle on a specific platform\n(for example \"@niickjackson on Instagram\") and you need the full profile: bio,\nfollower/engagement metrics, recent activity, growth, and the canonical creator ID.\nPass exactly the username they typed without the @ sign — case-insensitive matching is\nhandled server-side. Do not use `search_creators` for an exact platform+username\nlookup.\n\nExamples:\n- User: \"Pull @niickjackson on Instagram\" -> use this tool with platform\n \"instagram\" and username \"niickjackson\".\n- User: \"Tell me about instagram.com/niickjackson\" -> parse the platform and\n username, then use this tool.\n- User: \"Is @niickjackson a fit for Pixel?\" -> use this tool first, then call\n `get_posts` and/or `match_creators` if the task needs content or fit analysis.\n\nReturns the profile record plus the underlying creator record. If you already have a\ncreator UUID, use `get_creator` instead. For batch lookups by handle, use\n`lookup_profiles`.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "definitions": { "Platform": { "description": "Social media platform", "enum": [ "instagram" ], "example": "instagram", "type": "string" } }, "properties": { "platform": { "allOf": [ { "$ref": "#/definitions/Platform" } ], "description": "Social platform for the username." }, "username": { "description": "Public username or handle. A leading @ is accepted.", "type": "string" } }, "required": [ "platform", "username" ], "type": "object" }, "name": "get_profile", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Use this when a user wants to see what Influship can return before linking an account.\n\nFetches one configured sample creator with social profile context. This is a preview tool and should not be used for search, discovery, matching, or comparison requests.\nAfter showing the preview, explain only that live creator discovery and comparison require connecting an existing Influship account. Do not discuss plans, pricing, credits, upgrades, or purchasing.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "get_sample_creator", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "creator": { "additionalProperties": false, "properties": { "aiSummary": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "analysisFactCount": { "anyOf": [ { "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, { "type": "null" } ] }, "analysisUpdatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "audienceSummary": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "avatarUrl": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "bio": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "contentThemes": { "items": { "type": "string" }, "type": "array" }, "id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "name": { "type": "string" }, "profiles": { "items": { "additionalProperties": false, "properties": { "dataUpdatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "engagementRate": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "followers": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "platform": { "type": "string" }, "url": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "username": { "type": "string" }, "verified": { "type": "boolean" } }, "required": [ "platform", "username", "url", "followers", "engagementRate", "verified", "dataUpdatedAt" ], "type": "object" }, "type": "array" }, "vibe": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "id", "name", "bio", "avatarUrl", "aiSummary", "analysisUpdatedAt", "analysisFactCount", "audienceSummary", "contentThemes", "vibe", "profiles" ], "type": "object" }, "posts": { "items": { "additionalProperties": false, "properties": { "caption": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "comments": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "engagementRate": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "id": { "type": "string" }, "likes": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "platform": { "type": "string" }, "postedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "thumbnailUrl": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "type": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "url": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "views": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "id", "platform", "url", "postedAt", "type", "caption", "thumbnailUrl", "likes", "comments", "views", "engagementRate" ], "type": "object" }, "maxItems": 6, "type": "array" }, "postsUnavailable": { "type": "boolean" }, "view": { "const": "profile", "type": "string" } }, "required": [ "view", "creator", "posts", "postsUnavailable" ], "type": "object" } }, { "description": "Fetch sound clip metadata by music_id. Unknown fields are null. Audio and cover URLs are temporary, not durable downloads. This is a metered request.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "music_id": { "description": "TikTok sound clip ID, not a recording or album ID", "pattern": "^[1-9][0-9]{0,24}$", "type": "string" } }, "required": [ "music_id" ], "type": "object" }, "name": "get_tiktok_music", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch a current, normalized TikTok profile by username.\n\nReturns identity, biography, verification, and audience metrics. A leading @ is\naccepted and usernames are normalized. This is a metered live-data request.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "username": { "type": "string" } }, "required": [ "username" ], "type": "object" }, "name": "get_tiktok_profile", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch normalized details and current engagement metrics for a TikTok video URL.\n\nCanonical video URLs and TikTok share URLs are accepted. Returned media URLs are\ntemporary. Content always resolves against the US region. Each successful request\ncosts 0.2 account credits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "TikTokUrl": { "format": "uri", "type": "string" }, "TikTokVideoUrl": { "allOf": [ { "$ref": "#/definitions/TikTokUrl" } ], "format": "uri", "type": "string" } }, "properties": { "region": { "const": "US", "default": "US", "type": "string" }, "url": { "$ref": "#/definitions/TikTokVideoUrl" } }, "required": [ "url" ], "type": "object" }, "name": "get_tiktok_video", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch available captions without generating a transcript. Missing captions return an error. Successful requests, including cached captions, cost 0.2 credits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "TikTokUrl": { "format": "uri", "type": "string" }, "TikTokVideoUrl": { "allOf": [ { "$ref": "#/definitions/TikTokUrl" } ], "format": "uri", "type": "string" } }, "properties": { "url": { "$ref": "#/definitions/TikTokVideoUrl" } }, "required": [ "url" ], "type": "object" }, "name": "get_tiktok_video_captions", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch or generate a normalized TikTok video transcript.\n\nReturns plain text and timestamped segments. A previously collected transcript can\nbe reused. Each successful request costs 2.5 account credits, including a reused\nresult, and may take longer when transcription must be generated.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "TikTokUrl": { "format": "uri", "type": "string" }, "TikTokVideoUrl": { "allOf": [ { "$ref": "#/definitions/TikTokUrl" } ], "format": "uri", "type": "string" } }, "properties": { "url": { "$ref": "#/definitions/TikTokVideoUrl" } }, "required": [ "url" ], "type": "object" }, "name": "get_tiktok_video_transcript", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch transcripts for 1–10 TikTok URLs in input order, with per-item results. Auto mode costs 2.5 account credits per successful entry. Captions mode never generates transcripts and costs 0.2 per successful entry. Duplicate entries remain distinct.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "TikTokUrl": { "format": "uri", "type": "string" }, "TikTokVideoUrl": { "allOf": [ { "$ref": "#/definitions/TikTokUrl" } ], "format": "uri", "type": "string" } }, "properties": { "mode": { "default": "auto", "enum": [ "auto", "captions" ], "type": "string" }, "urls": { "items": { "$ref": "#/definitions/TikTokVideoUrl" }, "maxItems": 10, "minItems": 1, "type": "array" } }, "required": [ "urls" ], "type": "object" }, "name": "get_tiktok_video_transcripts", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch 1–20 TikTok video URLs in input order, with per-item success or error results. Duplicate entries remain distinct. Each successful entry costs 0.2 account credits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "TikTokUrl": { "format": "uri", "type": "string" }, "TikTokVideoUrl": { "allOf": [ { "$ref": "#/definitions/TikTokUrl" } ], "format": "uri", "type": "string" } }, "properties": { "urls": { "items": { "$ref": "#/definitions/TikTokVideoUrl" }, "maxItems": 20, "minItems": 1, "type": "array" } }, "required": [ "urls" ], "type": "object" }, "name": "get_tiktok_videos", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch a current YouTube channel by handle, channel ID, or URL.\n\nOptionally includes recent videos. This is a metered live-data request.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "channel": { "description": "A handle, channel ID, or YouTube channel URL.", "maxLength": 500, "minLength": 1, "type": "string" }, "include_videos": { "default": true, "type": "boolean" }, "video_limit": { "default": 12, "maximum": 50, "minimum": 1, "type": "integer" } }, "required": [ "channel" ], "type": "object" }, "name": "get_youtube_channel", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch transcripts for a selected batch of videos from a YouTube channel.\n\nChoose the video count, ordering, language, and whether timestamped segments are\nincluded. This is a metered batch request.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "channel": { "description": "A handle, channel ID, or YouTube channel URL.", "maxLength": 500, "minLength": 1, "type": "string" }, "include_segments": { "default": false, "type": "boolean" }, "language": { "default": "en", "maxLength": 20, "minLength": 2, "type": "string" }, "sort_by": { "default": "newest", "enum": [ "popular", "newest", "oldest" ], "type": "string" }, "video_limit": { "default": 5, "maximum": 20, "minimum": 1, "type": "integer" } }, "required": [ "channel" ], "type": "object" }, "name": "get_youtube_channel_transcripts", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch current localized YouTube query suggestions for a partial phrase.\n\nUseful for expanding topic seeds before search. This is a metered live-data request.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "country_code": { "maxLength": 2, "minLength": 2, "type": "string" }, "language_code": { "default": "en", "maxLength": 5, "minLength": 2, "type": "string" }, "q": { "maxLength": 200, "minLength": 1, "type": "string" } }, "required": [ "q" ], "type": "object" }, "name": "get_youtube_typeahead", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch fresh metadata and engagement for a YouTube video ID.\n\nReturns exact publication data when available, plus views, likes, comments,\nduration, tags, categories, and channel identity. This is a metered live-data request.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "video_id": { "pattern": "^[A-Za-z0-9_-]{11}$", "type": "string" } }, "required": [ "video_id" ], "type": "object" }, "name": "get_youtube_video", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch a normalized transcript for a YouTube video ID.\n\nReturns plain text, timestamped segments, and available caption languages. This\nis a metered request and may take longer when captions must be resolved.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "language": { "default": "auto", "maxLength": 20, "minLength": 2, "type": "string" }, "video_id": { "pattern": "^[A-Za-z0-9_-]{11}$", "type": "string" } }, "required": [ "video_id" ], "type": "object" }, "name": "get_youtube_video_transcript", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch one page of replies to a numeric parent comment ID. Keep the video URL and parent ID unchanged when passing the returned cursor. Each successful page costs 0.2 credits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "TikTokUrl": { "format": "uri", "type": "string" }, "TikTokVideoUrl": { "allOf": [ { "$ref": "#/definitions/TikTokUrl" } ], "format": "uri", "type": "string" } }, "properties": { "comment_id": { "pattern": "^[1-9][0-9]{0,24}$", "type": "string" }, "cursor": { "maxLength": 2048, "minLength": 1, "type": "string" }, "url": { "$ref": "#/definitions/TikTokVideoUrl" } }, "required": [ "url", "comment_id" ], "type": "object" }, "name": "list_tiktok_comment_replies", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch one page of videos under a hashtag, supplied without #. Continue with next_cursor and the same hashtag. Duplicate results are preserved. Media links are temporary. Each successful page, including an empty page, costs 0.2 account credits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cursor": { "maxLength": 2048, "minLength": 1, "type": "string" }, "hashtag": { "maxLength": 100, "minLength": 1, "pattern": "^[^#\\s\\u0000-\\u001f\\u007f-\\u009f]+$", "type": "string" } }, "required": [ "hashtag" ], "type": "object" }, "name": "list_tiktok_hashtag_videos", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch one page of videos using a sound clip music_id. Continue with next_cursor and the same music_id; cursors are opaque. Duplicate results are preserved. Media links are temporary. Each successful page, including an empty page, costs 0.2 account credits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cursor": { "maxLength": 2048, "minLength": 1, "type": "string" }, "music_id": { "description": "TikTok sound clip ID, not a recording or album ID", "pattern": "^[1-9][0-9]{0,24}$", "type": "string" } }, "required": [ "music_id" ], "type": "object" }, "name": "list_tiktok_music_videos", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch one cursor-paginated page of current TikTok videos for a username.\n\nUse the returned cursor to paginate and choose latest or popular ordering. Media\nURLs are temporary. Content always resolves against the US region. Each successful\npage, including an empty page, costs 0.2 account credits. A private account returns\na forbidden error rather than an empty page; do not retry it.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cursor": { "maxLength": 2048, "minLength": 1, "type": "string" }, "region": { "const": "US", "default": "US", "type": "string" }, "sort_by": { "default": "latest", "enum": [ "latest", "popular" ], "type": "string" }, "username": { "type": "string" } }, "required": [ "username" ], "type": "object" }, "name": "list_tiktok_profile_videos", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch one cursor-paginated page of current comments for a TikTok video URL.\n\nPass the returned cursor to retrieve the next page. This is a metered live-data\nrequest.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "TikTokUrl": { "format": "uri", "type": "string" }, "TikTokVideoUrl": { "allOf": [ { "$ref": "#/definitions/TikTokUrl" } ], "format": "uri", "type": "string" } }, "properties": { "cursor": { "maxLength": 2048, "minLength": 1, "type": "string" }, "url": { "$ref": "#/definitions/TikTokVideoUrl" } }, "required": [ "url" ], "type": "object" }, "name": "list_tiktok_video_comments", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Batch-fetch up to 100 profiles by (platform, username) pairs.\n\nUse this when the user has a list of handles and you need profile data for all of\nthem at once (e.g., \"give me follower counts for these 30 accounts I'm considering\"\nor \"which of @a @b @c are real accounts?\"). One round-trip beats 30 calls to\n`get_profile`.\n\nUse this for exact batch handle lookup, not semantic discovery. For one exact\nplatform+username pair, use `get_profile`. For partial or fuzzy handle/name input,\nuse `search_creators` or `autocomplete_creators`. Use\n`semantic_search_creators` only for topical/niche/audience discovery where\nfalse-positive semantic matches are acceptable.\n\nExamples:\n- User: \"Compare @a, @b, and @c on Instagram\" -> use this tool for the exact\n handle batch.\n- User: \"Give me follower counts for these 30 accounts\" -> use this tool.\n- User: \"Find wellness creators in Austin\" -> use `semantic_search_creators`, not\n this tool.\n\nThe response splits results into `data` (profiles found) and `not_found` (the\n(platform, username) pairs that weren't recognized). Profiles are returned in no\nparticular order — re-correlate via the platform/username fields if you need to\npreserve input order.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "Platform": { "description": "Social media platform", "enum": [ "instagram" ], "example": "instagram", "type": "string" }, "ProfileLookupItem": { "properties": { "platform": { "$ref": "#/definitions/Platform" }, "username": { "description": "Username to lookup", "example": "fitness_coach_jane", "maxLength": 50, "minLength": 1, "type": "string" } }, "required": [ "platform", "username" ], "type": "object" } }, "description": "Batch lookup profiles request", "examples": [ { "profiles": [ { "platform": "instagram", "username": "fitness_coach_jane" }, { "platform": "instagram", "username": "wellness_guru" }, { "platform": "instagram", "username": "healthy_eating_tips" } ] } ], "properties": { "profiles": { "description": "Profiles to lookup", "items": { "$ref": "#/definitions/ProfileLookupItem" }, "maxItems": 100, "minItems": 1, "type": "array" } }, "required": [ "profiles" ], "type": "object" }, "name": "lookup_profiles", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Score how well specific creators fit a campaign brief or search intent.\n\nUse this when the user already has candidate creators in mind and wants to evaluate\nfit (e.g., \"rate these 5 creators for a vegan cookbook launch\", \"which of these is\nthe best match for my crypto audience?\"). For each creator the API returns a match\nscore (0-1), a good/neutral/avoid decision, and structured reasons.\n\nPass candidates in `creator_ids` (canonical UUIDs) and/or `profiles`\n(platform + username). `intent_query` is the brief the LLM reasons against;\n`intent_context` is optional extra context (target audience, brand values,\nprior collabs).\n\nUse `semantic_search_creators` when you don't have candidates yet and need topical\nor niche discovery. Use `search_creators` first when you only need to resolve rough\ncreator names/handles into candidates.\nUse `find_lookalike_creators` when you want creators similar to known good fits.\n\nExamples:\n- User: \"Is @niickjackson a fit for Pixel?\" -> use this tool after resolving the\n exact Instagram profile with `get_profile`; call `get_posts` first if recent\n content context is needed.\n- User: \"Rate these five creators for a vegan cookbook launch\" -> use this tool.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "definitions": { "Platform": { "description": "Social media platform", "enum": [ "instagram" ], "example": "instagram", "type": "string" } }, "properties": { "creator_ids": { "description": "Candidate creators identified by canonical Influship creator UUID.", "items": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "maxItems": 100, "type": "array" }, "intent_context": { "description": "Optional extra campaign context, audience, brand values, or prior collabs.", "maxLength": 2000, "type": "string" }, "intent_query": { "description": "Campaign brief or matching intent.", "maxLength": 500, "minLength": 1, "type": "string" }, "profiles": { "description": "Candidate creators identified by platform and username.", "items": { "additionalProperties": false, "properties": { "platform": { "allOf": [ { "$ref": "#/definitions/Platform" } ], "description": "Social platform for the username." }, "username": { "description": "Platform username or handle without the @ sign.", "maxLength": 50, "minLength": 1, "type": "string" } }, "required": [ "platform", "username" ], "type": "object" }, "maxItems": 100, "type": "array" } }, "required": [ "intent_query" ], "type": "object" }, "name": "match_creators", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Use this when the user has 2–4 canonical creator IDs and a specific campaign brief. It fetches current creator details, scores each creator against the brief, and renders a side-by-side comparison. This may consume Influship account or API usage.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "campaign_brief": { "description": "Specific campaign, audience, product, and desired creator fit.", "maxLength": 500, "minLength": 3, "type": "string" }, "context": { "description": "Optional brand constraints or evaluation context.", "maxLength": 1000, "minLength": 1, "type": "string" }, "creator_ids": { "description": "Two to four canonical creator IDs to compare.", "items": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "maxItems": 4, "minItems": 2, "type": "array" } }, "required": [ "creator_ids", "campaign_brief" ], "type": "object" }, "name": "render_creator_comparison", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "brief": { "type": "string" }, "creators": { "items": { "additionalProperties": false, "properties": { "aiSummary": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "analysisFactCount": { "anyOf": [ { "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, { "type": "null" } ] }, "analysisUpdatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "audienceSummary": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "avatarUrl": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "bio": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "contentThemes": { "items": { "type": "string" }, "type": "array" }, "decision": { "enum": [ "good", "neutral", "avoid" ], "type": "string" }, "id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "matchScore": { "maximum": 1, "minimum": 0, "type": "number" }, "name": { "type": "string" }, "profiles": { "items": { "additionalProperties": false, "properties": { "dataUpdatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "engagementRate": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "followers": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "platform": { "type": "string" }, "url": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "username": { "type": "string" }, "verified": { "type": "boolean" } }, "required": [ "platform", "username", "url", "followers", "engagementRate", "verified", "dataUpdatedAt" ], "type": "object" }, "type": "array" }, "reasons": { "items": { "additionalProperties": false, "properties": { "evidenceQuote": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "provenance": { "enum": [ "post_evidence", "profile_fact", "inferred" ], "type": "string" }, "text": { "type": "string" } }, "required": [ "text", "provenance", "evidenceQuote" ], "type": "object" }, "maxItems": 4, "type": "array" }, "vibe": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "id", "name", "bio", "avatarUrl", "aiSummary", "analysisUpdatedAt", "analysisFactCount", "audienceSummary", "contentThemes", "vibe", "profiles", "matchScore", "decision", "reasons" ], "type": "object" }, "maxItems": 4, "minItems": 2, "type": "array" }, "title": { "type": "string" }, "view": { "const": "comparison", "type": "string" } }, "required": [ "view", "title", "brief", "creators" ], "type": "object" } }, { "description": "Use this when the user wants a visual deep dive on one canonical creator ID. It fetches the current creator record plus up to six recent posts and may consume Influship account or API usage.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "creator_id": { "description": "Canonical Influship creator ID.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" } }, "required": [ "creator_id" ], "type": "object" }, "name": "render_creator_profile", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "creator": { "additionalProperties": false, "properties": { "aiSummary": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "analysisFactCount": { "anyOf": [ { "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, { "type": "null" } ] }, "analysisUpdatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "audienceSummary": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "avatarUrl": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "bio": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "contentThemes": { "items": { "type": "string" }, "type": "array" }, "id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "name": { "type": "string" }, "profiles": { "items": { "additionalProperties": false, "properties": { "dataUpdatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "engagementRate": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "followers": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "platform": { "type": "string" }, "url": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "username": { "type": "string" }, "verified": { "type": "boolean" } }, "required": [ "platform", "username", "url", "followers", "engagementRate", "verified", "dataUpdatedAt" ], "type": "object" }, "type": "array" }, "vibe": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "id", "name", "bio", "avatarUrl", "aiSummary", "analysisUpdatedAt", "analysisFactCount", "audienceSummary", "contentThemes", "vibe", "profiles" ], "type": "object" }, "posts": { "items": { "additionalProperties": false, "properties": { "caption": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "comments": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "engagementRate": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "id": { "type": "string" }, "likes": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "platform": { "type": "string" }, "postedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "thumbnailUrl": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "type": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "url": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "views": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "id", "platform", "url", "postedAt", "type", "caption", "thumbnailUrl", "likes", "comments", "views", "engagementRate" ], "type": "object" }, "maxItems": 6, "type": "array" }, "postsUnavailable": { "type": "boolean" }, "view": { "const": "profile", "type": "string" } }, "required": [ "view", "creator", "posts", "postsUnavailable" ], "type": "object" } }, { "description": "Use this when discovery or lookup tools have returned results and the user would benefit from scanning 1–8 creator cards. Pass search_id after semantic_search_creators so the exact ranking, confidence, and evidence are preserved. Pass creator_ids only for name/handle lookup results. Always call an Influship data tool first; do not invent IDs. This fetches stored creator details and may consume Influship account or API usage.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "brief": { "description": "Campaign brief or discovery intent that produced this shortlist.", "maxLength": 500, "minLength": 1, "type": "string" }, "creator_ids": { "description": "Canonical creator IDs returned by an Influship lookup tool.", "items": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "maxItems": 8, "minItems": 1, "type": "array" }, "search_id": { "description": "Search ID returned by semantic_search_creators. Prefer this for discovery results so exact ranking and evidence are preserved.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "title": { "description": "Short factual title for this shortlist.", "maxLength": 80, "minLength": 1, "type": "string" } }, "type": "object" }, "name": "render_creator_shortlist", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "brief": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "creators": { "items": { "additionalProperties": false, "properties": { "aiSummary": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "analysisFactCount": { "anyOf": [ { "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, { "type": "null" } ] }, "analysisUpdatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "audienceSummary": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "avatarUrl": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "bio": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "contentThemes": { "items": { "type": "string" }, "type": "array" }, "id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "name": { "type": "string" }, "profiles": { "items": { "additionalProperties": false, "properties": { "dataUpdatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "engagementRate": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "followers": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "platform": { "type": "string" }, "url": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "username": { "type": "string" }, "verified": { "type": "boolean" } }, "required": [ "platform", "username", "url", "followers", "engagementRate", "verified", "dataUpdatedAt" ], "type": "object" }, "type": "array" }, "searchMatch": { "anyOf": [ { "additionalProperties": false, "properties": { "confidence": { "maximum": 1, "minimum": 0, "type": "number" }, "locationUnverified": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ] }, "lowConfidence": { "type": "boolean" }, "reasons": { "items": { "additionalProperties": false, "properties": { "evidenceQuote": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "provenance": { "enum": [ "post_evidence", "profile_fact", "inferred" ], "type": "string" }, "text": { "type": "string" } }, "required": [ "text", "provenance", "evidenceQuote" ], "type": "object" }, "maxItems": 4, "type": "array" }, "score": { "maximum": 1, "minimum": 0, "type": "number" } }, "required": [ "score", "confidence", "lowConfidence", "reasons", "locationUnverified" ], "type": "object" }, { "type": "null" } ] }, "vibe": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "id", "name", "bio", "avatarUrl", "aiSummary", "analysisUpdatedAt", "analysisFactCount", "audienceSummary", "contentThemes", "vibe", "profiles", "searchMatch" ], "type": "object" }, "maxItems": 8, "type": "array" }, "omittedCount": { "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "title": { "type": "string" }, "view": { "const": "shortlist", "type": "string" } }, "required": [ "view", "title", "brief", "creators", "omittedCount" ], "type": "object" } }, { "description": "Find a creator by name/handle, while preserving legacy semantic creator search.\n\nUse this as the default creator lookup tool when the user gives a creator-ish string\nbut not a canonical creator UUID: a handle, partial handle, display name, creator name,\nor profile-ish text. This is cheap, fast, and backed by the creator lookup index.\n\nIf the user gives an exact handle on a specific platform (for example \"@niickjackson on\nInstagram\"), prefer `get_profile` first because it returns the full platform profile.\nIf you need to resolve a rough creator name or partial handle first, use this tool with\n`query_type: \"creator_lookup\"`.\n\nFor backward compatibility, this tool still accepts the old semantic-search fields\n(`platforms`, follower/engagement filters, `creator_kinds`) and routes legacy calls\nto the semantic endpoint unless the query clearly contains a handle/profile URL. For\nnew topical/niche discovery calls such as \"fitness creators in NYC\" or \"vegan recipe\ncreators with high engagement\", prefer `semantic_search_creators` because its name is\nexplicit and less likely to be confused with exact creator lookup.\n\nExamples:\n- User: \"Find @cris\" -> use this tool with query \"cris\" and query_type\n \"creator_lookup\".\n- User: \"Who is that fitness coach called Jane?\" -> use this tool with query \"Jane\"\n and query_type \"creator_lookup\".\n- User: \"Pull @niickjackson on Instagram\" -> use `get_profile` with platform\n \"instagram\" and username \"niickjackson\".\n- User: \"Find news creators with 1M+ followers\" -> use `semantic_search_creators`,\n not this tool.\n\nReturns either autocomplete-style creator lookup results or legacy semantic results,\ndepending on routing. Use returned creator IDs with `get_creator`,\n`find_lookalike_creators`, or `match_creators`; use returned platform usernames\nwith `get_profile` or `get_posts`.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "definitions": { "Platform": { "description": "Social media platform", "enum": [ "instagram" ], "example": "instagram", "type": "string" } }, "properties": { "creator_kinds": { "description": "Optional creator kind filter. Omit for no creator-kind filter.", "items": { "enum": [ "INFLUENCER", "THEME_PAGE" ], "type": "string" }, "minItems": 1, "type": "array" }, "limit": { "default": 25, "description": "Maximum results to return.", "maximum": 100, "minimum": 1, "type": "integer" }, "max_engagement_rate": { "description": "Maximum engagement rate as a percentage from 0 to 100.", "maximum": 100, "minimum": 0, "type": "number" }, "max_followers": { "description": "Maximum follower count.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "min_engagement_rate": { "description": "Minimum engagement rate as a percentage from 0 to 100.", "maximum": 100, "minimum": 0, "type": "number" }, "min_followers": { "description": "Minimum follower count.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "platform": { "allOf": [ { "$ref": "#/definitions/Platform" } ], "description": "Optional platform to narrow username matching." }, "platforms": { "description": "Platforms to search. Omit for all.", "items": { "$ref": "#/definitions/Platform" }, "type": "array" }, "query": { "description": "Natural-language semantic discovery query by topic, niche, audience, geography, or content style. Do not pass exact handles or usernames here; use get_profile, lookup_profiles, or autocomplete_creators instead.", "maxLength": 500, "minLength": 1, "type": "string" }, "query_type": { "default": "auto", "description": "Use creator_lookup for specific names/handles and semantic_discovery for topical/niche discovery. Auto routes exact handles and profile URLs to lookup, and keeps legacy semantic-search behavior otherwise.", "enum": [ "auto", "creator_lookup", "semantic_discovery" ], "type": "string" }, "scope": { "default": "all_platforms", "description": "Which linked platforms to include in each lookup result.", "enum": [ "creator_only", "matched_platforms", "all_platforms" ], "type": "string" }, "verified": { "description": "When set, only return verified or unverified creators.", "type": "boolean" } }, "required": [ "query" ], "type": "object" }, "name": "search_creators", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": {}, "type": "object" } }, { "description": "Fetch one page of TikTok user search results. Unknown profile fields are null. Continue with next_cursor and the same query; cursors are opaque. Each successful page, including an empty page, costs 0.2 account credits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cursor": { "maxLength": 2048, "minLength": 1, "type": "string" }, "query": { "maxLength": 100, "minLength": 1, "pattern": "^[^\\u0000-\\u001f\\u007f-\\u009f]+$", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search_tiktok_users", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch one relevance-ordered page of TikTok videos. Continue with next_cursor and the same query. Duplicate results are preserved. Media links are temporary. Each successful page, including an empty page, costs 0.2 account credits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cursor": { "maxLength": 2048, "minLength": 1, "type": "string" }, "query": { "maxLength": 100, "minLength": 1, "pattern": "^[^\\u0000-\\u001f\\u007f-\\u009f]+$", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search_tiktok_videos", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Search current YouTube results with discovery filters and cursor pagination.\n\nFilter by upload window, popularity, result type, duration, country, and language.\nPass next_cursor back as cursor for the next page. Each page is one metered request.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "content_type": { "default": "all", "enum": [ "all", "videos" ], "type": "string" }, "country_code": { "maxLength": 2, "minLength": 2, "type": "string" }, "cursor": { "maxLength": 4000, "minLength": 1, "type": "string" }, "duration": { "default": "any", "enum": [ "any", "short", "medium", "long" ], "type": "string" }, "language_code": { "default": "en", "maxLength": 5, "minLength": 2, "type": "string" }, "limit": { "default": 20, "maximum": 50, "minimum": 1, "type": "integer" }, "q": { "maxLength": 500, "minLength": 1, "type": "string" }, "sort_by": { "default": "relevance", "enum": [ "relevance", "popular" ], "type": "string" }, "upload_date": { "default": "any", "enum": [ "any", "last_hour", "today", "this_week", "this_month", "this_year" ], "type": "string" } }, "required": [ "q" ], "type": "object" }, "name": "search_youtube", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Semantic discovery search for influencers/content creators using natural-language queries.\n\nUse this only when the user asks to discover creators by topic, audience, geography,\nniche, content style, or campaign criteria (e.g., \"fitness creators in NYC\", \"vegan\nrecipe creators with high engagement\", \"tech reviewers who cover phones\"). The query\nis matched against creator profiles, extracted facts, and visual style via hybrid\nvector search.\n\nDo not use this for exact handles, usernames, or known creator names. If the user gives\na specific platform and handle (for example \"@niickjackson on Instagram\"), use\n`get_profile` first. For rough name/handle lookup, use `search_creators`. For\nmultiple known handles, use `lookup_profiles`. Semantic search can return lookalike\nor topical matches and is allowed to miss an exact username.\n\nExamples:\n- User: \"Find news creators with 1M+ followers\" -> use this tool.\n- User: \"Find creators in LA who make cinematic travel videos\" -> use this tool.\n- User: \"Pull @niickjackson on Instagram\" -> use `get_profile`, not this tool.\n- User: \"Is @niickjackson a fit for Pixel?\" -> use `get_profile` first, optionally\n `get_posts`, then `match_creators`.\n\nReturns a ranked list of creators (id, platform, username, follower count, engagement\nrate, top categories, evidence facts). Use the flat follower, engagement-rate, and\nverified fields to constrain results when the user gives concrete numeric constraints.\n\nUse `find_lookalike_creators` instead when you want creators SIMILAR to known ones.\nUse `match_creators` when you want to SCORE specific creators against a brief.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "definitions": { "Platform": { "description": "Social media platform", "enum": [ "instagram" ], "example": "instagram", "type": "string" } }, "properties": { "creator_kinds": { "description": "Optional creator kind filter. Omit for no creator-kind filter.", "items": { "enum": [ "INFLUENCER", "THEME_PAGE" ], "type": "string" }, "minItems": 1, "type": "array" }, "limit": { "default": 25, "description": "Maximum results to return.", "maximum": 100, "minimum": 1, "type": "integer" }, "max_engagement_rate": { "description": "Maximum engagement rate as a percentage from 0 to 100.", "maximum": 100, "minimum": 0, "type": "number" }, "max_followers": { "description": "Maximum follower count.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "min_engagement_rate": { "description": "Minimum engagement rate as a percentage from 0 to 100.", "maximum": 100, "minimum": 0, "type": "number" }, "min_followers": { "description": "Minimum follower count.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "platforms": { "description": "Platforms to search. Omit for all.", "items": { "$ref": "#/definitions/Platform" }, "type": "array" }, "query": { "description": "Natural-language semantic discovery query by topic, niche, audience, geography, or content style. Do not pass exact handles or usernames here; use get_profile, lookup_profiles, or autocomplete_creators instead.", "maxLength": 500, "minLength": 1, "type": "string" }, "verified": { "description": "When set, only return verified or unverified creators.", "type": "boolean" } }, "required": [ "query" ], "type": "object" }, "name": "semantic_search_creators", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": {}, "properties": { "count": { "type": "number" }, "data": {}, "has_more": { "type": "boolean" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "not_found": { "items": {}, "type": "array" }, "ok": { "type": "boolean" }, "results": { "items": {}, "type": "array" }, "suggested_followups": { "items": { "additionalProperties": false, "properties": { "reason": { "type": "string" }, "tool": { "type": "string" } }, "required": [ "tool", "reason" ], "type": "object" }, "type": "array" } }, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:35d103ac139d2efce0e360e58970fbb2a370a1deee222ea01719fb0e818d7fc9 | sha256sum