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

Server definition

Hash
sha256:97335bb57b45122a8a200143c41265127e5082eb9e0bddfb985bb4c430408fed
What it is
What a remote MCP server returned when asked what it offers: 52 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Add keywords/users to track. Accepts array of items with phrase, type (keyword/user/subreddit/hashtag), platform (twitter/instagram/reddit/tiktok). Subreddit is Reddit-only, hashtag is TikTok-only. Returns error if plan limit exceeded.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "items": { "description": "Array of items to track. Each item has phrase, type, and platform.", "items": { "additionalProperties": false, "properties": { "phrase": { "description": "The keyword, username, subreddit name, or hashtag.", "minLength": 1, "type": "string" }, "platform": { "description": "Platform: \"twitter\", \"instagram\", \"reddit\", or \"tiktok\".", "enum": [ "twitter", "instagram", "reddit", "tiktok" ], "type": "string" }, "type": { "description": "Type of tracked item: \"keyword\", \"user\", \"subreddit\" (Reddit only), or \"hashtag\" (TikTok only).", "enum": [ "keyword", "user", "subreddit", "hashtag" ], "type": "string" } }, "required": [ "phrase", "type", "platform" ], "type": "object" }, "minItems": 1, "type": "array" } }, "required": [ "items" ], "type": "object" }, "name": "addTrackedItems", "outputSchema": null }, { "description": "Cancel running operation. Required: operationId. Gracefully stops operation at next checkpoint. Returns confirmation. Use checkOperationStatus to verify cancellation completed.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_requestId": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "operationId": { "description": "The operation ID", "type": "string" } }, "required": [ "operationId" ], "type": "object" }, "name": "cancelOperation", "outputSchema": null }, { "description": "Check access key status without revealing key. Required: authentication. Returns: status, metadata.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_requestId": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" } }, "type": "object" }, "name": "checkAccessKeyStatus", "outputSchema": null }, { "description": "checkOperationStatus: poll an async operation and retrieve its results or CSV download URL. Use this after any tool call made with responseType=\"paging\" or responseType=\"csv\" — those return an operationId that must be polled via checkOperationStatus to get the actual data. Also handles background job status checks, presigned S3 link retrieval for data dumps, and completion polling for long-running queries. Required: operationId. HANDLES TWO TYPES: (1) Query operations (op_toolname_xxx): returns paginated results + dataDumpExportOperationId. (2) Export operations (op_datadump_xxx): returns download URL for CSV download. CRITICAL: You MUST keep polling until operation finishes. DO NOT stop until status is success/no_data/error/cancelled. POLLING LOOP: (1) Call immediately after getting operation ID. (2) If status=running, wait exactly 5 seconds. (3) Call again after 5 seconds. (4) Repeat step 2-3 continuously until status changes to success/no_data/error/cancelled. (5) Only stop when operation is finished. NOTE: status values returned are wire-level ResponseStatus (success/no_data/error/running/cancelled). Returns: For queries - results, pagination, dataDumpExportOperationId. For exports - downloadUrl, fileName, totalRows. NEVER make calls without 5 second waits between them.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_requestId": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "operationId": { "description": "The operation ID", "type": "string" } }, "required": [ "operationId" ], "type": "object" }, "name": "checkOperationStatus", "outputSchema": null }, { "description": "Count tweets containing a specific phrase within a date range. Returns the total count of matching tweets (int) directly, or zero if none found. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases (\"deep learning\"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT \"venture capital\"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). Filters: date range (startDate/endDate in YYYY-MM-DD). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nDefault: startDate=6 months ago if not provided. Use for analytics and trend analysis without retrieving full tweet data. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "description": "End date in YYYY-MM-DD format. Default: current date", "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "phrase": { "description": "Count only tweets containing the phrase", "minLength": 1, "type": "string" }, "startDate": { "description": "Start date in YYYY-MM-DD format. Default: 6 months ago", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "phrase" ], "type": "object" }, "name": "countTweets", "outputSchema": null }, { "description": "Get authenticated user's account details: plan (name, features), billing (period, next renewal date; null for Free plan), and usage (subscription credits remaining, extra credits remaining, extra tracked items). Required: authentication. Returns: nested plan/billing/usage object.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_requestId": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" } }, "type": "object" }, "name": "getAccountDetails", "outputSchema": null }, { "description": "Get authenticated user's credits and export-rows usage over time, for analyzing usage patterns. Params: range (\"today\" | \"7d\" | \"current_month\" | \"lifetime\", default current_month), granularity (\"hour\" | \"day\", default day). Returns time-series buckets for both credits and exportRows, each with subscriptionUsed, extraUsed, totalUsed, extraPurchased. Use for trend analysis and spotting usage spikes. For current remaining balances, use getAccountDetails instead. Required: authentication.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_requestId": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "granularity": { "default": "day", "description": "Bucket size for the time series. \"hour\" = hourly buckets (best with range=today or 7d), \"day\" = daily buckets. Default: day.", "enum": [ "hour", "day" ], "type": "string" }, "range": { "default": "current_month", "description": "Time window to analyze. \"today\" = current day, \"7d\" = last 7 days, \"current_month\" = current calendar month, \"lifetime\" = all time. Default: current_month.", "enum": [ "today", "7d", "current_month", "lifetime" ], "type": "string" } }, "type": "object" }, "name": "getCreditsUsageHistory", "outputSchema": null }, { "description": "Get COMMENT CONTENT (text, likes) for an Instagram post. Returns the actual comment objects with text and metadata. RETURNS COMMENT DATA: id, text, username, createdAtDate, likeCount, childCommentCount. Use for reading what people said. NOT FOR USER PROFILES: To get detailed user profiles (bio, followerCount, followingCount) of commenters, use getInstagramPostInteractingUsers with interactionType=\"commenters\" instead. IMPORTANT: postId must be in strong_id format (e.g., \"3606450040306139062_4836333238\") - use the full \"id\" value from other Instagram tools, NOT just the media_id. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: sentiment analysis, reading discussions, analyzing comment content, engagement patterns. Date filters: OMIT startDate/endDate parameters by default. ONLY pass these if user explicitly requests specific date range (YYYY-MM-DD format). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nOptional fields: [\"id\", \"text\", \"username\", \"createdAtDate\", \"likeCount\"]. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"text\", \"username\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, text, parentPostId, type, parentCommentId, repliedToCommentId, childCommentCount, userId, username, fullName, createdAt, createdAtTimestamp, createdAtDate. Engagement: likeCount. Status: status, isSpam, hasTranslation. EXAMPLES: [\"id\", \"text\"] for minimal, [\"id\", \"text\", \"username\", \"createdAtDate\", \"likeCount\"] for basic analysis, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "postId": { "description": "REQUIRED FORMAT: strong_id (e.g., \"3606450040306139062_4836333238\"). This is the complete post identifier consisting of media_id + underscore + user_id. When receiving the post id from other instagram tools, use the full \"id\" valueDO NOT use only the media_id portion.", "pattern": "^\\d+_\\d+$", "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "postId" ], "type": "object" }, "name": "getInstagramCommentsByPostId", "outputSchema": null }, { "description": "Get USER PROFILES of people who interacted with an Instagram post. Returns full user data (bio, followerCount, followingCount, etc.). RETURNS USER PROFILES: id, username, fullName, biography, followerCount, followingCount, isVerified, profilePicUrl. Use for analyzing WHO engaged with a post. NOT FOR COMMENT TEXT: To read the actual comment content (what people wrote), use getInstagramCommentsByPostId instead. INTERACTION TYPES: \"commenters\" (users who commented), \"likers\" (users who liked). WHEN TO USE THIS TOOL: Analyzing commenters/likers demographics, finding influencers who engaged, building audience profiles, network analysis of who interacts with posts. WHEN TO USE getInstagramCommentsByPostId: Reading comment text, sentiment analysis of what was said, analyzing discussion content. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for commenters when stale. PAGING (responseType=\"paging\"): Async paginated results (1000 users per page with default fields), returns operationId - IMMEDIATELY call checkOperationStatus to get results. CSV export included via dataDumpExportOperationId. Supports pageNumber/tableName for subsequent pages. Optional fields (default: [\"id\", \"username\", \"fullName\"]). Available: biography, isPrivate, isVerified, followerCount, followingCount, mediaCount, profilePicUrl. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"fullName\"]. AVAILABLE FIELDS: Core: id, username, fullName, biography, isPrivate, isVerified. Engagement: followerCount, followingCount, mediaCount. Profile: profilePicUrl, profilePicId, profileUrl, externalUrl, hasAnonymousProfilePicture. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"fullName\", \"followerCount\"] for basic info, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "interactionType": { "description": "Type of interaction to retrieve users for. Options: \"commenters\" (users who commented on the post), \"likers\" (users who liked the post). Each type queries different relationships in the data.", "enum": [ "commenters", "likers" ], "type": "string" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "postId": { "description": "REQUIRED FORMAT: strong_id (e.g., \"3606450040306139062_4836333238\"). This is the complete post identifier consisting of media_id + underscore + user_id. When receiving the post id from other instagram tools, use the full \"id\" valueDO NOT use only the media_id portion.", "pattern": "^\\d+_\\d+$", "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging" ], "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "postId", "interactionType" ], "type": "object" }, "name": "getInstagramPostInteractingUsers", "outputSchema": null }, { "description": "Get multiple Instagram posts by IDs (1-50 IDs per request). Returns results directly. Returns only found posts, omitting not-found IDs for flexibility. First searches database, then external API for missing/stale data in parallel. Use when you have multiple exact post IDs. NOT for search - use getInstagramPostsByKeywords. PERFORMANCE: Much more efficient than multiple single-ID calls. Batches database queries and parallelizes API calls. IMPORTANT: postIds must be in strong_id format (e.g., \"3606450040306139062_4836333238\") - use the full \"id\" value from other Instagram tools, NOT just the media_id. To find a post from an Instagram URL (e.g., instagram.com/p/ABC123/), extract the shortcode from the URL path and use getInstagramPostsByKeywords to search, or ask the user for the post ID. Optional fields parameter for performance: [\"id\", \"caption\", \"likeCount\"]. Returns: results array with id, caption, userId, username, createdAtDate, engagement metrics, count, dataSource. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"caption\", \"username\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, postType, userId, username, fullName, caption, createdAt, createdAtTimestamp, createdAtDate. Engagement: likeCount, commentCount, reshareCount, mediaRepostCount, saveCount, videoPlayCount. Media: mediaType, codeUrl, imageUrl, videoUrl, audioOnlyUrl, profilePicUrl, videoSubtitlesUri, subtitles, videoDuration. EXAMPLES: [\"id\", \"caption\"] for minimal, [\"id\", \"caption\", \"username\", \"createdAtDate\", \"likeCount\"] for basic analysis, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "postIds": { "description": "Array of Instagram post IDs to fetch (1-50 IDs). Returns only found posts, omitting not-found IDs. REQUIRED FORMAT: strong_id (e.g., \"3606450040306139062_4836333238\"). This is the complete post identifier consisting of media_id + underscore + user_id. When receiving the post id from other instagram tools, use the full \"id\" value. DO NOT use only the media_id portion.", "items": { "pattern": "^\\d+_\\d+$", "type": "string" }, "maxItems": 50, "minItems": 1, "type": "array" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "postIds" ], "type": "object" }, "name": "getInstagramPostsByIds", "outputSchema": null }, { "description": "Search Instagram posts by keywords with two response modes. Searches in both post captions and video subtitles. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. Results include guidance for full mode. PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: content analysis, hashtag trends, brand monitoring across thousands of posts. Returns by default: id, caption, username, createdAtDate. First searches database, then external API if data is stale or missing. NOT for URL lookups or post ID lookups - use getInstagramPostsByIds instead. Query must be plain text keywords/phrases, not URLs or IDs. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases (\"deep learning\"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT \"venture capital\"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). Date filters: OMIT startDate/endDate parameters by default. ONLY pass these if user explicitly requests specific date range (YYYY-MM-DD format). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nFIELDS parameter (optional): Specify to get additional/different fields. Available: Core (id, caption, userId, username, fullName, createdAtDate), Engagement (likeCount, commentCount, reshareCount, mediaRepostCount, saveCount, videoPlayCount), Media (mediaType, imageUrl, videoUrl, subtitles, videoDuration). This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"caption\", \"username\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, postType, userId, username, fullName, caption, createdAt, createdAtTimestamp, createdAtDate. Engagement: likeCount, commentCount, reshareCount, mediaRepostCount, saveCount, videoPlayCount. Media: mediaType, codeUrl, imageUrl, videoUrl, audioOnlyUrl, profilePicUrl, videoSubtitlesUri, subtitles, videoDuration. EXAMPLES: [\"id\", \"caption\"] for minimal, [\"id\", \"caption\", \"username\", \"createdAtDate\", \"likeCount\"] for basic analysis, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "query": { "description": "Plain text keywords or phrases to search in post captions and subtitles. Use double quotes for exact phrases. Do NOT pass URLs, post IDs, or special syntax - only search terms. Examples: \"travel photography\", food OR cooking, \"sunset beach\" AND california", "maxLength": 250, "minLength": 1, "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "getInstagramPostsByKeywords", "outputSchema": null }, { "description": "Get posts from Instagram user by ID or username with two response modes. Use identifierType=\"id\" for numeric user ID, identifierType=\"username\" for username. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. Results include guidance for full mode. PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: engagement analysis, content trends, posting patterns across all posts. Returns by default: id, caption, username, createdAtDate. Date filters: OMIT startDate/endDate parameters by default to retrieve all posts. ONLY pass these if user explicitly requests specific date range (YYYY-MM-DD format). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nFIELDS parameter (optional): Specify to get additional/different fields. Available: Core (id, caption, userId, username, fullName, createdAtDate), Engagement (likeCount, commentCount, reshareCount, mediaRepostCount, saveCount, videoPlayCount), Media (mediaType, imageUrl, videoUrl, subtitles, videoDuration). This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"caption\", \"username\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, postType, userId, username, fullName, caption, createdAt, createdAtTimestamp, createdAtDate. Engagement: likeCount, commentCount, reshareCount, mediaRepostCount, saveCount, videoPlayCount. Media: mediaType, codeUrl, imageUrl, videoUrl, audioOnlyUrl, profilePicUrl, videoSubtitlesUri, subtitles, videoDuration. EXAMPLES: [\"id\", \"caption\"] for minimal, [\"id\", \"caption\", \"username\", \"createdAtDate\", \"likeCount\"] for basic analysis, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "identifier": { "description": "User ID (numeric) or username depending on identifierType.", "minLength": 1, "type": "string" }, "identifierType": { "description": "Type of identifier provided. Use \"id\" for numeric user ID, \"username\" for username.", "enum": [ "id", "username" ], "type": "string" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "identifier", "identifierType" ], "type": "object" }, "name": "getInstagramPostsByUser", "outputSchema": null }, { "description": "Get Instagram user profile by ID or username. Use identifierType=\"id\" for numeric user ID, identifierType=\"username\" for username. For username: Use ONLY when you have the precise username (e.g., \"cristiano\"). For person names or fuzzy search, use searchInstagramUsers instead. Optional fields parameter for performance (default: [\"id\", \"username\", \"fullName\"]). Available fields: id, username, fullName, biography, isPrivate, isVerified, followerCount, followingCount, mediaCount, profilePicUrl, and more. Returns: single user profile with userId, username, fullName, followerCount, followingCount, mediaCount, biography, isVerified, isPrivate, profilePicUrl. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"fullName\"]. AVAILABLE FIELDS: Core: id, username, fullName, biography, isPrivate, isVerified. Engagement: followerCount, followingCount, mediaCount. Profile: profilePicUrl, profilePicId, profileUrl, externalUrl, hasAnonymousProfilePicture. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"fullName\", \"followerCount\"] for basic info, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "identifier": { "description": "User ID (numeric) or username depending on identifierType.", "minLength": 1, "type": "string" }, "identifierType": { "description": "Type of identifier provided. Use \"id\" for numeric user ID, \"username\" for username.", "enum": [ "id", "username" ], "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "identifier", "identifierType" ], "type": "object" }, "name": "getInstagramUser", "outputSchema": null }, { "description": "Get Instagram user connections (followers or following). Use connectionType=\"followers\" for users who follow them, connectionType=\"following\" for users they follow. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. PAGING (responseType=\"paging\"): Async paginated results (100 users per page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. Optional fields parameter for performance (default: [\"id\", \"username\", \"fullName\"]). Available fields: id, username, fullName, biography, isPrivate, isVerified, followerCount, followingCount, mediaCount, profilePicUrl, and more. DATA FRESHNESS: Automatically checks data age (> 1 week triggers refresh from API). FORCE LATEST: Use sparingly - forceLatest=true bypasses cache for real-time data (increases latency/costs). CRITICAL - Understanding totalRows vs totalDataCount: totalRows indicates ONLY what we have in our database. totalDataCount (when present) shows the actual count from Instagram. If totalDataCount is missing or undefined, you CANNOT claim totalRows represents all connections - it only shows our partial database data. If totalDataCount > totalRows, we only have partial data. Always check if totalDataCount exists before making claims about total counts. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "connectionType": { "description": "Type of connection to retrieve. Use \"followers\" for users who follow this account, \"following\" for users this account follows.", "enum": [ "followers", "following" ], "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"fullName\"]. AVAILABLE FIELDS: Core: id, username, fullName, biography, isPrivate, isVerified. Engagement: followerCount, followingCount, mediaCount. Profile: profilePicUrl, profilePicId, profileUrl, externalUrl, hasAnonymousProfilePicture. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"fullName\", \"followerCount\"] for basic info, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging" ], "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" }, "username": { "description": "Instagram username (without @ symbol)", "minLength": 1, "pattern": "^@?[a-zA-Z0-9._]{1,30}$", "type": "string" } }, "required": [ "username", "connectionType" ], "type": "object" }, "name": "getInstagramUserConnections", "outputSchema": null }, { "description": "Search for USERS who authored Instagram posts matching keywords. USE CASE: Find users who have posted content about specific topics, keywords, or phrases. Returns unique, deduplicated user profiles. RESPONSE MODES (responseType parameter): \"fast\" (DEFAULT): Returns up to 300 results directly in one call. Use limit param to reduce. Best for quick lookups. \"paging\": Async paginated results (100/page). Returns operation ID - call checkOperationStatus to get results. Use pageNumber/tableName for subsequent pages. \"csv\": Async CSV export. Returns dataDumpExportOperationId - call checkOperationStatus to get S3 download link. Best for bulk export. PAGING MODE DETAILS: FIRST CALL: Omit pageNumber and tableName. Creates cached table, returns page 1 with pagination metadata (tableName, totalPages, totalRows). SUBSEQUENT PAGES: Use tableName from first response with pageNumber (2, 3, etc.). BULK FETCH: Use pageNumberEnd with pageNumber and tableName for multiple consecutive pages. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases (\"deep learning\"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT \"venture capital\"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). FILTERS: - startDate/endDate: Filter by post date (YYYY-MM-DD format). OMIT by default, only use if user explicitly requests date range. \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nOptional fields parameter for performance (default: [\"id\", \"username\", \"fullName\"]). Available fields: id, username, fullName, biography, isPrivate, isVerified, followerCount, followingCount, mediaCount, profilePicUrl, and more. AGGREGATE FIELDS (from matching posts) - MUST BE EXPLICITLY REQUESTED IN FIELDS: aggRelevance (relevance score for sorting), relevantPostsCount (count of matching posts per user), relevantPostsLikesSum, relevantPostsCommentsSum, relevantPostsResharesSum, relevantPostsMediaRepostsSum, relevantPostsSavesSum, relevantPostsVideoPlaysSum. These return aggregated metrics from all matched posts for each user. Returns: results array of unique user profiles, count. In paging mode: pagination object, dataDumpExportOperationId for CSV. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"fullName\"]. AVAILABLE FIELDS: Core: id, username, fullName, biography, isPrivate, isVerified. Engagement: followerCount, followingCount, mediaCount. Profile: profilePicUrl, profilePicId, profileUrl, externalUrl, hasAnonymousProfilePicture. Aggregations (from matching posts, not all posts of the user): aggRelevance (relevance score), relevantPostsCount (count of matching posts), relevantPostsLikesSum, relevantPostsCommentsSum, relevantPostsResharesSum, relevantPostsMediaRepostsSum, relevantPostsSavesSum, relevantPostsVideoPlaysSum. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"fullName\", \"followerCount\", \"relevantPostsLikesSum\", \"relevantPostsCount\"] to include engagement aggregations.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "query": { "description": "Full-text search of Instagram post captions to find users who authored matching posts. Searches posts, returns UNIQUE user authors (deduplicated). EXACT PHRASES: Wrap in double quotes - \"sustainable fashion\" matches that exact phrase. KEYWORDS: Without quotes, matches posts containing any of the words - travel food photography. BOOLEAN OPERATORS: MUST explicitly use the keywords AND, OR, NOT (uppercase or lowercase). NO implicit operators - space between words means OR by default. Examples requiring explicit operators: Use \"travel photography\" AND nature (not \"travel photography nature\"). Use fashion OR style (not \"fashion style\"). PARENTHESES: Group terms for precise logic - (travel OR adventure) AND (\"sustainable living\" NOT luxury). FORBIDDEN: DO NOT use filter operators with colons (from:, to:, since:, until:) - use dedicated parameters instead. Query examples: \"climate change\" | fashion OR beauty | \"digital nomad\" AND remote | (startup OR entrepreneur) NOT \"venture capital\"", "maxLength": 250, "minLength": 1, "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "getInstagramUsersByKeywords", "outputSchema": null }, { "description": "Get a single Reddit comment by its ID. Accepts the bare base36 comment id or the t1_-prefixed form (e.g. \"laz1ytq\" or \"t1_laz1ytq\"), as returned by getRedditPostWithCommentsById and getRedditCommentsByKeywords. First searches database, then fetches from the external API if the comment is missing or stale (>1 week). NOT for searching - use getRedditCommentsByKeywords for keyword search. Optional fields parameter for performance (default: [\"id\", \"body\", \"authorUsername\", \"createdAtDate\"]). Returns: single comment with id, body, author, parent ids, score, and timestamps. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "commentId": { "description": "Reddit comment ID to fetch (bare base36 id or t1_-prefixed, e.g. \"laz1ytq\" or \"t1_laz1ytq\"). Comment ids are returned by getRedditPostWithCommentsById and getRedditCommentsByKeywords.", "minLength": 1, "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify comment fields you need. DEFAULT (if omitted): [\"id\", \"body\", \"authorUsername\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, body, parentPostId, parentId. Author: authorId, authorUsername. Subreddit: postSubredditName, postSubredditId. Engagement: score, upvotes, downvotes, controversiality. Meta: depth, isSubmitter, stickied, collapsed, edited, distinguished. Ranking: rank (position in thread), topLevelRank (position among top-level comments). Moderation: removal (JSON removal/deletion status), collapsedReasonCode, collapsedReason. Timestamps: createdAt, createdAtTimestamp, createdAtDate.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" } }, "required": [ "commentId" ], "type": "object" }, "name": "getRedditCommentById", "outputSchema": null }, { "description": "Search Reddit comments by keywords. Searches in comment body text. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Results include guidance for full mode. PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: sentiment analysis, discussion trends, community opinions across thousands of comments. DATABASE-ONLY: Searches existing database records only. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases (\"deep learning\"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT \"venture capital\"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). Date filters: OMIT startDate/endDate parameters by default. ONLY pass these if user explicitly requests specific date range (YYYY-MM-DD format). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nFILTERS: subreddit (limit to specific subreddit without r/ prefix). Optional fields parameter for performance: [\"id\", \"body\", \"authorUsername\", \"postSubredditName\", \"score\", \"createdAtDate\"]. Returns by default: id, body, authorUsername, createdAtDate. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify comment fields you need. DEFAULT (if omitted): [\"id\", \"body\", \"authorUsername\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, body, parentPostId, parentId. Author: authorId, authorUsername. Subreddit: postSubredditName, postSubredditId. Engagement: score, upvotes, downvotes, controversiality. Meta: depth, isSubmitter, stickied, collapsed, edited, distinguished. Ranking: rank (position in thread), topLevelRank (position among top-level comments). Moderation: removal (JSON removal/deletion status), collapsedReasonCode, collapsedReason. Timestamps: createdAt, createdAtTimestamp, createdAtDate.", "items": { "type": "string" }, "type": "array" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "query": { "description": "Full-text search of comment content. Searches comment body text. EXACT PHRASES: Wrap in double quotes - \"machine learning\" matches that exact phrase. KEYWORDS: Without quotes, matches comments containing any of the words - AI robotics blockchain. BOOLEAN OPERATORS: MUST explicitly use the keywords AND, OR (uppercase or lowercase). NO implicit operators - space between words means OR by default. Examples requiring explicit operators: Use \"deep learning\" AND python (not \"deep learning python\"). Use tensorflow OR pytorch (not \"tensorflow pytorch\"). PARENTHESES: Group terms for precise logic - (AI OR \"artificial intelligence\") AND ethics. Query examples: \"climate change\" | AI OR blockchain | \"neural networks\" AND python | (startup OR entrepreneur)", "maxLength": 250, "minLength": 1, "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "subreddit": { "description": "Filter comments by subreddit name (without r/ prefix). Use this parameter to limit search to comments from a specific subreddit. Example: subreddit=\"wallstreetbets\" finds all comments in r/wallstreetbets.", "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "getRedditCommentsByKeywords", "outputSchema": null }, { "description": "Get Reddit post by ID with its comments. Returns both the post data and comments in a single response. FAST (default, omit responseType or responseType=\"fast\"): Returns post and up to 300 comments directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. Results include guidance for full mode. PAGING (responseType=\"paging\"): Async paginated results (100 comments/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. RESPONSE STRUCTURE: Returns { results: { post: {...}, comments: [...] }, count, guidance }. PAGING MODE DETAILS: FIRST CALL: Omit pageNumber and tableName. Creates cached table for comments, returns page 1 with post data and pagination metadata. SUBSEQUENT PAGES: Use tableName from first response with pageNumber (2, 3, etc.) to fetch additional comment pages. Post data is NOT returned on subsequent pages. FIELD SELECTION: Use postFields for post data optimization, commentFields for comment data optimization. First searches database for both post and comments, then external API if data is stale or missing. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "commentFields": { "description": "PERFORMANCE OPTIMIZATION: Specify comment fields you need. DEFAULT (if omitted): [\"id\", \"body\", \"authorUsername\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, body, parentPostId, parentId. Author: authorId, authorUsername. Subreddit: postSubredditName, postSubredditId. Engagement: score, upvotes, downvotes, controversiality. Meta: depth, isSubmitter, stickied, collapsed, edited, distinguished. Ranking: rank (position in thread), topLevelRank (position among top-level comments). Moderation: removal (JSON removal/deletion status), collapsedReasonCode, collapsedReason. Timestamps: createdAt, createdAtTimestamp, createdAtDate.", "items": { "type": "string" }, "type": "array" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "postFields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"title\", \"authorUsername\", \"subredditName\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, title, selftext, selftextHtml, url, permalink, postUrl, thumbnail. Author: authorId, authorUsername. Subreddit: subredditName, subredditId. Engagement: score, upvotes, downvotes, upvoteRatio, commentsCount, crosspostsCount. Flags: isSelf, isVideo, isOriginalContent, over18, spoiler, locked, stickied, archived. Meta: linkFlairText, postHint, domain, crosspostParent. Moderation: removal (JSON removal/deletion status), editedAt (ISO datetime of last edit, null if never edited). Timestamps: createdAt, createdAtTimestamp, createdAtDate. EXAMPLES: [\"id\", \"title\", \"score\"] for minimal, [\"title\", \"selftext\", \"score\", \"commentsCount\"] for content analysis.", "items": { "type": "string" }, "type": "array" }, "postId": { "description": "Reddit post ID to fetch. Returns the post data along with its comments.", "minLength": 1, "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging" ], "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" } }, "required": [ "postId" ], "type": "object" }, "name": "getRedditPostWithCommentsById", "outputSchema": null }, { "description": "Search Reddit posts by keywords with two response modes. Searches in post titles and selftext. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. Results include guidance for full mode. PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: sentiment analysis, subreddit trends, community discussions across thousands of posts. Returns by default: id, title, authorUsername, subredditName, createdAtDate. First searches database, then external API if data is stale or missing. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases (\"deep learning\"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT \"venture capital\"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). Date filters: OMIT startDate/endDate parameters by default. ONLY pass these if user explicitly requests specific date range (YYYY-MM-DD format). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nFILTERS: sort (relevance, hot, top, new, comments), time (hour, day, week, month, year, all), subreddit (limit to specific subreddit). FIELDS parameter (optional): Specify to get additional/different fields. Available: Core (id, title, selftext, url, permalink), Author (authorId, authorUsername), Subreddit (subredditName, subredditId), Engagement (score, upvotes, downvotes, upvoteRatio, commentsCount, crosspostsCount), Flags (isSelf, isVideo, over18, spoiler, locked, stickied, archived). This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"title\", \"authorUsername\", \"subredditName\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, title, selftext, selftextHtml, url, permalink, postUrl, thumbnail. Author: authorId, authorUsername. Subreddit: subredditName, subredditId. Engagement: score, upvotes, downvotes, upvoteRatio, commentsCount, crosspostsCount. Flags: isSelf, isVideo, isOriginalContent, over18, spoiler, locked, stickied, archived. Meta: linkFlairText, postHint, domain, crosspostParent. Moderation: removal (JSON removal/deletion status), editedAt (ISO datetime of last edit, null if never edited). Timestamps: createdAt, createdAtTimestamp, createdAtDate. EXAMPLES: [\"id\", \"title\", \"score\"] for minimal, [\"title\", \"selftext\", \"score\", \"commentsCount\"] for content analysis.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "query": { "description": "Full-text search of post content. Searches post titles and selftext. EXACT PHRASES: Wrap in double quotes - \"machine learning\" matches that exact phrase. KEYWORDS: Without quotes, matches posts containing any of the words - AI robotics blockchain. BOOLEAN OPERATORS: MUST explicitly use the keywords AND, OR (uppercase or lowercase). NO implicit operators - space between words means OR by default. Examples requiring explicit operators: Use \"deep learning\" AND python (not \"deep learning python\"). Use tensorflow OR pytorch (not \"tensorflow pytorch\"). PARENTHESES: Group terms for precise logic - (AI OR \"artificial intelligence\") AND ethics. Query examples: \"climate change\" | AI OR blockchain | \"neural networks\" AND python | (startup OR entrepreneur)", "maxLength": 250, "minLength": 1, "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "sort": { "description": "Sort order for results. Default: relevance.", "enum": [ "relevance", "hot", "top", "new", "comments" ], "type": "string" }, "startDate": { "type": "string" }, "subreddit": { "description": "Filter posts by subreddit name (without r/ prefix). Use this parameter to limit search to a specific subreddit. Example: subreddit=\"wallstreetbets\" finds all posts in r/wallstreetbets.", "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "time": { "description": "Time filter for results. Default: all.", "enum": [ "hour", "day", "week", "month", "year", "all" ], "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "getRedditPostsByKeywords", "outputSchema": null }, { "description": "Get Reddit subreddit by name with its posts. FAST (default, omit responseType or responseType=\"fast\"): Returns subreddit data with up to 300 posts directly (use limit param to reduce). Auto API fallback for fresh data. PAGING (responseType=\"paging\"): Async paginated results (100 posts per page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. RESPONSE STRUCTURE: Returns { results: { subreddit: {...}, posts: [...] }, pagination: {...} }. FIELD SELECTION: Use subredditFields for subreddit data optimization, postFields for post data optimization. First searches database for both subreddit and posts, then external API if data is stale or missing. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "postFields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"title\", \"authorUsername\", \"subredditName\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, title, selftext, selftextHtml, url, permalink, postUrl, thumbnail. Author: authorId, authorUsername. Subreddit: subredditName, subredditId. Engagement: score, upvotes, downvotes, upvoteRatio, commentsCount, crosspostsCount. Flags: isSelf, isVideo, isOriginalContent, over18, spoiler, locked, stickied, archived. Meta: linkFlairText, postHint, domain, crosspostParent. Moderation: removal (JSON removal/deletion status), editedAt (ISO datetime of last edit, null if never edited). Timestamps: createdAt, createdAtTimestamp, createdAtDate. EXAMPLES: [\"id\", \"title\", \"score\"] for minimal, [\"title\", \"selftext\", \"score\", \"commentsCount\"] for content analysis.", "items": { "type": "string" }, "type": "array" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging" ], "type": "string" }, "subredditFields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"displayName\", \"title\", \"subscribersCount\"]. AVAILABLE FIELDS: Core: id, displayName, title, publicDescription, description. Stats: subscribersCount, activeUserCount. Meta: subredditType, submissionType, over18, lang, url, subredditUrl. Images: iconImg, bannerImg, headerImg, communityIcon. Timestamps: createdAt, createdAtTimestamp, createdAtDate. EXAMPLES: [\"id\", \"displayName\", \"subscribersCount\"] for minimal, [\"displayName\", \"publicDescription\", \"subscribersCount\", \"activeUserCount\"] for discovery.", "items": { "type": "string" }, "type": "array" }, "subredditName": { "description": "Reddit subreddit name to fetch (without r/ prefix). Example: \"wallstreetbets\", \"programming\". Returns the subreddit data along with its posts.", "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" } }, "required": [ "subredditName" ], "type": "object" }, "name": "getRedditSubredditWithPostsByName", "outputSchema": null }, { "description": "Search for SUBREDDITS where Reddit posts match keywords. Returns unique, deduplicated subreddit profiles. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce). Auto API fallback for fresh data. PAGING (responseType=\"paging\"): Async paginated results (100 per page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases (\"deep learning\"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT \"venture capital\"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). FILTERS: - startDate/endDate: Filter by post date (YYYY-MM-DD format). OMIT by default, only use if user explicitly requests date range. \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nOptional fields parameter for performance (default: [\"id\", \"displayName\", \"title\", \"subscribersCount\"]). Available fields: id, displayName, title, publicDescription, description, subscribersCount, activeUserCount, and more. AGGREGATE FIELDS (from matching posts) - MUST BE EXPLICITLY REQUESTED IN FIELDS: aggRelevance (relevance score for sorting), relevantPostsCount (count of matching posts per subreddit), relevantPostsUpvotesSum, relevantPostsCommentsCountSum. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "description": "End date filter (YYYY-MM-DD format)", "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"displayName\", \"title\", \"subscribersCount\"]. AVAILABLE FIELDS: Core: id, displayName, title, publicDescription, description. Stats: subscribersCount, activeUserCount. Meta: subredditType, submissionType, over18, lang, url, subredditUrl. Images: iconImg, bannerImg, headerImg, communityIcon. Timestamps: createdAt, createdAtTimestamp, createdAtDate. Aggregations (from matching posts): aggRelevance (relevance score), relevantPostsCount (count of matching posts), relevantPostsUpvotesSum, relevantPostsCommentsCountSum. EXAMPLES: [\"id\", \"displayName\", \"subscribersCount\"] for minimal, [\"displayName\", \"subscribersCount\", \"relevantPostsCount\", \"relevantPostsUpvotesSum\"] to include engagement aggregations.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "query": { "description": "Full-text search of Reddit post titles and content to find subreddits where matching posts were made. Searches posts, returns UNIQUE subreddits (deduplicated). EXACT PHRASES: Wrap in double quotes - \"machine learning\" matches that exact phrase. KEYWORDS: Without quotes, matches posts containing any of the words - python tutorial help. BOOLEAN OPERATORS: MUST explicitly use the keywords AND, OR, NOT (uppercase or lowercase). NO implicit operators - space between words means OR by default. Examples requiring explicit operators: Use \"python tutorial\" AND beginner (not \"python tutorial beginner\"). Use programming OR coding (not \"programming coding\"). PARENTHESES: Group terms for precise logic - (python OR javascript) AND (\"web development\" NOT framework). FORBIDDEN: DO NOT use filter operators with colons (from:, to:, since:, until:) - use dedicated parameters instead. Query examples: \"machine learning\" | python help | \"data science\" AND visualization | (gaming OR esports) NOT \"mobile games\"", "maxLength": 250, "minLength": 1, "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging" ], "type": "string" }, "startDate": { "description": "Start date filter (YYYY-MM-DD format)", "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "getRedditSubredditsByKeywords", "outputSchema": null }, { "description": "Get Reddit user profile by username. Returns user profile including karma breakdown (link, comment, total), account status (gold, mod, employee), and profile info. Use without u/ prefix (e.g., \"spez\" not \"u/spez\"). Optional fields parameter for performance (default: [\"id\", \"username\", \"totalKarma\"]). Available fields: id, username, profileUrl, profilePicUrl, snoovatarImg, linkKarma, commentKarma, totalKarma, awardeeKarma, awarderKarma, isGold, isMod, isEmployee, hasVerifiedEmail, isSuspended, verified, isBlocked, acceptFollowers, hasSubscribed, hideFromRobots, prefShowSnoovatar, profileDescription, profileBannerUrl, profileTitle, createdAt. Returns: single user profile with id, username, karma metrics, account flags, and profile details. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"totalKarma\"]. AVAILABLE FIELDS: Core: id, username, profileUrl, profilePicUrl, snoovatarImg. Karma: linkKarma, commentKarma, totalKarma, awardeeKarma, awarderKarma. Status: isGold, isMod, isEmployee, hasVerifiedEmail, isSuspended, verified, isBlocked, acceptFollowers, hasSubscribed, hideFromRobots, prefShowSnoovatar. Profile: profileDescription, profileBannerUrl, profileTitle. Timestamps: createdAt, createdAtTimestamp, createdAtDate. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"totalKarma\", \"profileDescription\"] for basic info.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" }, "username": { "description": "Reddit username (without u/ prefix)", "minLength": 1, "type": "string" } }, "required": [ "username" ], "type": "object" }, "name": "getRedditUser", "outputSchema": null }, { "description": "Search for USERS who authored Reddit posts matching keywords. USE CASE: Find users who have posted content about specific topics. Returns unique, deduplicated user profiles. RESPONSE MODES (responseType parameter): \"fast\" (DEFAULT): Returns up to 300 results directly in one call. Use limit param to reduce. Best for quick lookups. \"paging\": Async paginated results (100/page). Returns operation ID - call checkOperationStatus to get results. Use pageNumber/tableName for subsequent pages. \"csv\": Async CSV export. Returns dataDumpExportOperationId - call checkOperationStatus to get S3 download link. Best for bulk export. PAGING MODE DETAILS: FIRST CALL: Omit pageNumber and tableName. Creates cached table, returns page 1 with pagination metadata (tableName, totalPages, totalRows). SUBSEQUENT PAGES: Use tableName from first response with pageNumber (2, 3, etc.). BULK FETCH: Use pageNumberEnd with pageNumber and tableName for multiple consecutive pages. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases (\"deep learning\"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT \"venture capital\"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). FILTERS: - startDate/endDate: Filter by post date (YYYY-MM-DD format). OMIT by default, only use if user explicitly requests date range. \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \n- subreddit: Filter to specific subreddit (without r/ prefix). Optional fields parameter for performance (default: [\"id\", \"username\", \"totalKarma\"]). Available fields: id, username, profileUrl, profilePicUrl, snoovatarImg, linkKarma, commentKarma, totalKarma, profileDescription, and more. AGGREGATE FIELDS (from matching posts) - MUST BE EXPLICITLY REQUESTED IN FIELDS: aggRelevance (relevance score for sorting), relevantPostsCount (count of matching posts per user), relevantPostsUpvotesSum, relevantPostsCommentsCountSum. These return aggregated metrics from all matched posts for each user. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "description": "End date filter (YYYY-MM-DD format)", "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"totalKarma\"]. AVAILABLE FIELDS: Core: id, username, profileUrl, profilePicUrl, snoovatarImg. Karma: linkKarma, commentKarma, totalKarma, awardeeKarma, awarderKarma. Status: isGold, isMod, isEmployee, hasVerifiedEmail, isSuspended, verified, isBlocked, acceptFollowers, hasSubscribed, hideFromRobots, prefShowSnoovatar. Profile: profileDescription, profileBannerUrl, profileTitle. Timestamps: createdAt, createdAtTimestamp, createdAtDate. Aggregations (from matching posts): aggRelevance (relevance score), relevantPostsCount (count of matching posts), relevantPostsUpvotesSum, relevantPostsCommentsCountSum. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"totalKarma\", \"relevantPostsCount\", \"relevantPostsUpvotesSum\"] to include engagement aggregations.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "query": { "description": "Full-text search of Reddit post titles and content to find users who authored matching posts. Searches posts, returns UNIQUE user authors (deduplicated). EXACT PHRASES: Wrap in double quotes - \"machine learning\" matches that exact phrase. KEYWORDS: Without quotes, matches posts containing any of the words - python tutorial help. BOOLEAN OPERATORS: MUST explicitly use the keywords AND, OR, NOT (uppercase or lowercase). NO implicit operators - space between words means OR by default. Examples requiring explicit operators: Use \"python tutorial\" AND beginner (not \"python tutorial beginner\"). Use programming OR coding (not \"programming coding\"). PARENTHESES: Group terms for precise logic - (python OR javascript) AND (\"web development\" NOT framework). FORBIDDEN: DO NOT use filter operators with colons (from:, to:, since:, until:) - use dedicated parameters instead. Query examples: \"machine learning\" | python help | \"data science\" AND visualization | (gaming OR esports) NOT \"mobile games\"", "maxLength": 250, "minLength": 1, "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "description": "Start date filter (YYYY-MM-DD format)", "type": "string" }, "subreddit": { "description": "Filter results to a specific subreddit (without r/ prefix)", "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "getRedditUsersByKeywords", "outputSchema": null }, { "description": "Get COMMENT CONTENT (text, likes) for a Tiktok post. Returns the actual comment objects with text and metadata. RETURNS COMMENT DATA: id, text, username, createdAtDate, likeCount. Use for reading what people said. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: sentiment analysis, reading discussions, analyzing comment content, engagement patterns. Date filters: OMIT startDate/endDate by default. ONLY pass if user explicitly requests date range. \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nOptional fields: [\"id\", \"text\", \"username\", \"createdAtDate\", \"likeCount\"]. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"text\", \"username\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, text, postId, userId, username, createdAt, createdAtTimestamp, createdAtDate. Engagement: likeCount. EXAMPLES: [\"id\", \"text\"] for minimal, [\"id\", \"text\", \"username\", \"createdAtDate\", \"likeCount\"] for basic analysis.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once. Must be >= pageNumber. Requires tableName.", "minimum": 1, "type": "number" }, "postId": { "description": "Tiktok post ID to fetch comments for.", "minLength": 1, "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering.", "type": "string" } }, "required": [ "postId" ], "type": "object" }, "name": "getTiktokCommentsByPostId", "outputSchema": null }, { "description": "Search Tiktok posts by hashtags with three response modes. Searches the hashtags column directly (NOT post descriptions). Pass hashtags as an array of bare alphanumeric strings - do NOT include leading \"#\". OR semantics: matches posts containing ANY of the listed hashtags. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: hashtag trend analysis, viral hashtag tracking, cross-hashtag content discovery. Returns by default: id, description, username, createdAtDate. NOT for keyword/phrase search in descriptions - use getTiktokPostsByKeywords instead. NOT for URL or post ID lookups - use getTiktokPostsByIds instead. Date filters: OMIT startDate/endDate parameters by default to retrieve all posts. ONLY pass these if user explicitly requests specific date range (YYYY-MM-DD format). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nFIELDS parameter (optional): Specify to get additional/different fields. Available: Core (id, description, userId, username, nickname, createdAtDate), Engagement (likeCount, commentCount, playCount, forwardCount, collectCount, downloadCount), Media (videoThumbnail, videoUrl, duration, postType), Content (hashtags, transcriptsJson). This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"description\", \"username\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, postType, isPrivate, userId, username, nickname, description, descriptionLanguage, createdAt, createdAtTimestamp, createdAtDate. Engagement: collectCount, commentCount, likeCount, downloadCount, forwardCount, playCount. Media: videoThumbnail, videoUrl (array of video URLs), duration (video length in seconds). Content: hashtags (array of hashtag strings). EXAMPLES: [\"id\", \"description\"] for minimal, [\"id\", \"description\", \"username\", \"createdAtDate\", \"likeCount\", \"playCount\"] for basic analysis, [\"id\", \"description\", \"hashtags\", \"duration\", \"videoUrl\"] for video content analysis.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "hashtags": { "description": "Array of hashtags to search for (1-5 per request). OR semantics: matches posts containing ANY of the listed hashtags. Bare alphanumeric/underscore only - do NOT include leading \"#\". Examples: [\"dance\", \"fyp\", \"viral\"] | [\"cooking\"] | [\"sustainable_fashion\"].", "items": { "pattern": "^[A-Za-z0-9_]{1,500}$", "type": "string" }, "maxItems": 5, "minItems": 1, "type": "array" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once. Must be >= pageNumber. Requires tableName.", "minimum": 1, "type": "number" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering.", "type": "string" } }, "required": [ "hashtags" ], "type": "object" }, "name": "getTiktokPostsByHashtags", "outputSchema": null }, { "description": "Get multiple Tiktok posts by IDs (1-100 IDs per request). Returns results directly. First searches database, then external API for missing/stale data. Optional fields parameter for performance: [\"id\", \"description\", \"likeCount\"]. Returns: results array with id, description, userId, username, createdAtDate, engagement metrics. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"description\", \"username\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, postType, isPrivate, userId, username, nickname, description, descriptionLanguage, createdAt, createdAtTimestamp, createdAtDate. Engagement: collectCount, commentCount, likeCount, downloadCount, forwardCount, playCount. Media: videoThumbnail, videoUrl (array of video URLs), duration (video length in seconds). Content: hashtags (array of hashtag strings). EXAMPLES: [\"id\", \"description\"] for minimal, [\"id\", \"description\", \"username\", \"createdAtDate\", \"likeCount\", \"playCount\"] for basic analysis, [\"id\", \"description\", \"hashtags\", \"duration\", \"videoUrl\"] for video content analysis.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "postIds": { "description": "Array of Tiktok post IDs to fetch (1-100 IDs). Returns only found posts, omitting not-found IDs.", "items": { "pattern": "^\\d{1,50}$", "type": "string" }, "maxItems": 100, "minItems": 1, "type": "array" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering.", "type": "string" } }, "required": [ "postIds" ], "type": "object" }, "name": "getTiktokPostsByIds", "outputSchema": null }, { "description": "Search Tiktok posts by keywords with three response modes. Searches post descriptions and video transcripts. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: trend analysis, hashtag tracking, viral content discovery across Tiktok. Returns by default: id, description, username, createdAtDate. NOT for URL lookups or post ID lookups - use getTiktokPostsByIds instead. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases (\"deep learning\"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT \"venture capital\"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). Date filters: OMIT startDate/endDate parameters by default to retrieve all posts. ONLY pass these if user explicitly requests specific date range (YYYY-MM-DD format). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nFIELDS parameter (optional): Specify to get additional/different fields. Available: Core (id, description, userId, username, nickname, createdAtDate), Engagement (likeCount, commentCount, playCount, forwardCount, collectCount, downloadCount), Media (videoThumbnail, videoUrl, duration, postType), Content (hashtags, transcriptsJson). This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"description\", \"username\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, postType, isPrivate, userId, username, nickname, description, descriptionLanguage, createdAt, createdAtTimestamp, createdAtDate. Engagement: collectCount, commentCount, likeCount, downloadCount, forwardCount, playCount. Media: videoThumbnail, videoUrl (array of video URLs), duration (video length in seconds). Content: hashtags (array of hashtag strings). EXAMPLES: [\"id\", \"description\"] for minimal, [\"id\", \"description\", \"username\", \"createdAtDate\", \"likeCount\", \"playCount\"] for basic analysis, [\"id\", \"description\", \"hashtags\", \"duration\", \"videoUrl\"] for video content analysis.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once. Must be >= pageNumber. Requires tableName.", "minimum": 1, "type": "number" }, "query": { "description": "Plain text keywords or phrases to search in post descriptions. Use double quotes for exact phrases. Do NOT pass URLs or post IDs. Examples: \"dance challenge\", cooking OR recipe, \"sunset\" AND beach", "maxLength": 250, "minLength": 1, "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "getTiktokPostsByKeywords", "outputSchema": null }, { "description": "Get Tiktok posts that use a specific sound/music with three response modes. Required: soundId (numeric ID from searchTiktokSounds). FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. Returns by default: id, description, username, createdAtDate. NOT for keyword/phrase search - use getTiktokPostsByKeywords. NOT for hashtags - use getTiktokPostsByHashtags. Date filters: OMIT startDate/endDate by default. ONLY pass if user explicitly requests a date range (YYYY-MM-DD). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nFIELDS parameter (optional): Core (id, description, userId, username, nickname, createdAtDate), Engagement (likeCount, commentCount, playCount, forwardCount, collectCount, downloadCount), Media (videoThumbnail, videoUrl, duration, postType), Content (hashtags, transcriptsJson). This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"description\", \"username\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, postType, isPrivate, userId, username, nickname, description, descriptionLanguage, createdAt, createdAtTimestamp, createdAtDate. Engagement: collectCount, commentCount, likeCount, downloadCount, forwardCount, playCount. Media: videoThumbnail, videoUrl (array of video URLs), duration (video length in seconds). Content: hashtags (array of hashtag strings). EXAMPLES: [\"id\", \"description\"] for minimal, [\"id\", \"description\", \"username\", \"createdAtDate\", \"likeCount\", \"playCount\"] for basic analysis, [\"id\", \"description\", \"hashtags\", \"duration\", \"videoUrl\"] for video content analysis.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once. Must be >= pageNumber. Requires tableName.", "minimum": 1, "type": "number" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "soundId": { "description": "Tiktok sound/music ID (numeric string). Get IDs from searchTiktokSounds. Example: \"7016547803243907841\".", "pattern": "^\\d{1,50}$", "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering.", "type": "string" } }, "required": [ "soundId" ], "type": "object" }, "name": "getTiktokPostsBySound", "outputSchema": null }, { "description": "Get posts from Tiktok user by ID or username with three response modes. Use identifierType=\"id\" for numeric user ID, identifierType=\"username\" for username. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. Results include guidance for full mode. PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: engagement analysis, content trends, viral video detection, processing thousands of posts. Returns by default: id, description, username, createdAtDate. First searches database, then external API if data is stale or missing. Date filters: OMIT startDate/endDate parameters by default to retrieve all posts. ONLY pass these if user explicitly requests specific date range (YYYY-MM-DD format). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nFIELDS parameter (optional): Specify to get additional/different fields. Available: Core (id, description, userId, username, nickname, createdAtDate), Engagement (likeCount, commentCount, playCount, forwardCount, collectCount, downloadCount), Media (videoThumbnail, videoUrl, duration, postType), Content (hashtags, transcriptsJson). This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"description\", \"username\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, postType, isPrivate, userId, username, nickname, description, descriptionLanguage, createdAt, createdAtTimestamp, createdAtDate. Engagement: collectCount, commentCount, likeCount, downloadCount, forwardCount, playCount. Media: videoThumbnail, videoUrl (array of video URLs), duration (video length in seconds). Content: hashtags (array of hashtag strings). EXAMPLES: [\"id\", \"description\"] for minimal, [\"id\", \"description\", \"username\", \"createdAtDate\", \"likeCount\", \"playCount\"] for basic analysis, [\"id\", \"description\", \"hashtags\", \"duration\", \"videoUrl\"] for video content analysis.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "identifier": { "description": "User ID (numeric) or username depending on identifierType.", "minLength": 1, "type": "string" }, "identifierType": { "description": "Type of identifier provided. Use \"id\" for numeric user ID, \"username\" for username.", "enum": [ "id", "username" ], "type": "string" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once. Must be >= pageNumber. Requires tableName.", "minimum": 1, "type": "number" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering.", "type": "string" } }, "required": [ "identifier", "identifierType" ], "type": "object" }, "name": "getTiktokPostsByUser", "outputSchema": null }, { "description": "Get Tiktok user profile by ID or username. Use identifierType=\"id\" for numeric user ID, identifierType=\"username\" for username. For username: Use ONLY when you have the precise username. For person names or fuzzy search, use searchTiktokUsers instead. Optional fields parameter for performance (default: [\"id\", \"username\", \"nickname\"]). Available fields: id, username, nickname, signature, isPrivate, isVerified, followerCount, followingCount, likeCount, postCount, avatar, and more. Returns: single user profile. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"nickname\"]. AVAILABLE FIELDS: Core: id, username, nickname, signature, secUid, avatar, isPrivate, isVerified. Engagement: followerCount, followingCount, likeCount, postCount. Meta: language, region, createdAt, usernameModifyTime. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"nickname\", \"followerCount\"] for basic info.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "identifier": { "description": "User ID (numeric) or username depending on identifierType.", "minLength": 1, "type": "string" }, "identifierType": { "description": "Type of identifier provided. Use \"id\" for numeric user ID, \"username\" for username.", "enum": [ "id", "username" ], "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "identifier", "identifierType" ], "type": "object" }, "name": "getTiktokUser", "outputSchema": null }, { "description": "Search for USERS who authored Tiktok posts tagged with specific hashtags. USE CASE: Find users who have posted content tagged with one or more hashtags. Returns unique, deduplicated user profiles. Pass hashtags as an array of bare alphanumeric strings - do NOT include leading \"#\". OR semantics: matches users who posted content tagged with ANY of the listed hashtags. RESPONSE MODES (responseType parameter): \"fast\" (DEFAULT): Returns up to 300 results directly in one call. Use limit param to reduce. Best for quick lookups. \"paging\": Async paginated results (100/page). Returns operation ID - call checkOperationStatus to get results. Use pageNumber/tableName for subsequent pages. \"csv\": Async CSV export. Returns dataDumpExportOperationId - call checkOperationStatus to get S3 download link. Best for bulk export. NOT for keyword/phrase search in descriptions - use getTiktokUsersByKeywords instead. FILTERS: startDate/endDate (YYYY-MM-DD format). OMIT by default. \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nOptional fields parameter for performance (default: [\"id\", \"username\", \"nickname\"]). AGGREGATE FIELDS (from matching posts) - MUST BE EXPLICITLY REQUESTED IN FIELDS: aggRelevance, relevantPostsCount, relevantPostsLikesSum, relevantPostsCommentsSum, relevantPostsPlaysSum, relevantPostsForwardsSum. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"nickname\"]. AVAILABLE FIELDS: Core: id, username, nickname, signature, secUid, avatar, isPrivate, isVerified. Engagement: followerCount, followingCount, likeCount, postCount. Meta: language, region, createdAt, usernameModifyTime. Aggregations (from matching posts): aggRelevance, relevantPostsCount, relevantPostsLikesSum, relevantPostsCommentsSum, relevantPostsPlaysSum, relevantPostsForwardsSum. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"nickname\", \"followerCount\", \"relevantPostsCount\"] to include engagement aggregations.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "hashtags": { "description": "Array of hashtags to search for (1-5 per request). OR semantics: matches users who posted content containing ANY of the listed hashtags. Bare alphanumeric/underscore only - do NOT include leading \"#\". Examples: [\"dance\", \"fyp\"] | [\"cooking\"] | [\"sustainable_fashion\"].", "items": { "pattern": "^[A-Za-z0-9_]{1,500}$", "type": "string" }, "maxItems": 5, "minItems": 1, "type": "array" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "hashtags" ], "type": "object" }, "name": "getTiktokUsersByHashtags", "outputSchema": null }, { "description": "Search for USERS who authored Tiktok posts matching keywords. USE CASE: Find users who have posted content about specific topics. Returns unique, deduplicated user profiles. RESPONSE MODES (responseType parameter): \"fast\" (DEFAULT): Returns up to 300 results directly in one call. Use limit param to reduce. Best for quick lookups. \"paging\": Async paginated results (100/page). Returns operation ID - call checkOperationStatus to get results. Use pageNumber/tableName for subsequent pages. \"csv\": Async CSV export. Returns dataDumpExportOperationId - call checkOperationStatus to get S3 download link. Best for bulk export. PAGING MODE DETAILS: FIRST CALL: Omit pageNumber and tableName. Creates cached table, returns page 1 with pagination metadata (tableName, totalPages, totalRows). SUBSEQUENT PAGES: Use tableName from first response with pageNumber (2, 3, etc.). BULK FETCH: Use pageNumberEnd with pageNumber and tableName for multiple consecutive pages. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases (\"deep learning\"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT \"venture capital\"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). FILTERS: startDate/endDate (YYYY-MM-DD format). OMIT by default. \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nOptional fields parameter for performance (default: [\"id\", \"username\", \"nickname\"]). AGGREGATE FIELDS (from matching posts) - MUST BE EXPLICITLY REQUESTED IN FIELDS: aggRelevance, relevantPostsCount, relevantPostsLikesSum, relevantPostsCommentsSum, relevantPostsPlaysSum, relevantPostsForwardsSum. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"nickname\"]. AVAILABLE FIELDS: Core: id, username, nickname, signature, secUid, avatar, isPrivate, isVerified. Engagement: followerCount, followingCount, likeCount, postCount. Meta: language, region, createdAt, usernameModifyTime. Aggregations (from matching posts): aggRelevance, relevantPostsCount, relevantPostsLikesSum, relevantPostsCommentsSum, relevantPostsPlaysSum, relevantPostsForwardsSum. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"nickname\", \"followerCount\", \"relevantPostsCount\"] to include engagement aggregations.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "query": { "description": "Full-text search of Tiktok post descriptions to find users who authored matching posts. Searches posts, returns UNIQUE user authors (deduplicated). EXACT PHRASES: Wrap in double quotes - \"sustainable fashion\" matches that exact phrase. KEYWORDS: Without quotes, matches posts containing any of the words. BOOLEAN OPERATORS: Use AND, OR, NOT explicitly. PARENTHESES: Group terms - (travel OR adventure) AND \"sustainable living\". FORBIDDEN: DO NOT use filter operators with colons. Query examples: \"climate change\" | fashion OR beauty | \"digital nomad\" AND remote", "maxLength": 250, "minLength": 1, "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "getTiktokUsersByKeywords", "outputSchema": null }, { "description": "Get tracked keywords and users. Returns: phrase, type (keyword/user/subreddit/hashtag), platform (twitter/instagram/reddit/tiktok). Subreddit is Reddit-only, hashtag is TikTok-only.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" } }, "type": "object" }, "name": "getTrackedItems", "outputSchema": null }, { "description": "Get comments (replies) to specific post. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. Results include guidance for full mode. PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze all comments. Ideal for: sentiment analysis, discussion themes, community engagement analysis. First searches database, then external API if data is stale (>10 days). Date filter: OMIT startDate by default. ONLY pass if user explicitly requests filtering from specific date (YYYY-MM-DD format). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nUse to analyze community response and discussion. NOT for quotes - use getTwitterPostQuotes. Optional fields parameter for performance: [\"id\", \"text\", \"authorUsername\", \"createdAt\"]. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"text\", \"authorUsername\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, text, authorId, authorUsername, createdAt, createdAtDate. Engagement: retweetCount, replyCount, likeCount, quoteCount, impressionCount, bookmarkCount. Metadata: lang, possiblySensitive, suspended, deleted, source, isRetweet, hasBirdwatchNotes, status. Birdwatch: birdwatchNotesId, birdwatchNotesText, birdwatchNotesUrl. Relations: conversationId, quotedTweetId, retweetedTweetId, replyToTweetId, replyToUserId, replyToUsername, originalTweetId (original tweet ID if edited, equals own ID if unedited), editedTweets (array of edited version IDs). Content: hashtags, mentions, mediaUrls, urls, grokGeneratedContent (array of Grok AI generated content grok_post_id, grok_url, media_id). Location: placeName, placeCountry, placeCountryCode, placeBoundingBoxCoordinates, placeCentroid. EXAMPLES: [\"id\", \"text\"] for minimal, [\"id\", \"text\", \"retweetCount\", \"likeCount\", \"hashtags\"] for basic analysis, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "postId": { "description": "Numeric Twitter post/tweet ID. Must be a number-only string (e.g., \"1234567890\"). Do NOT pass tweet text, URLs, or usernames here.", "pattern": "^\\d+$", "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "postId" ], "type": "object" }, "name": "getTwitterPostComments", "outputSchema": null }, { "description": "Get users who interacted with a specific Twitter post (commenters, quoters, or retweeters). INTERACTION TYPES: \"commenters\" (users who replied to the post), \"quoters\" (users who quoted the post), \"retweeters\" (users who retweeted the post). FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback when DB data is stale or insufficient. Results include guidance for paging mode. PAGING (responseType=\"paging\"): Async paginated results (1000/page with default fields, 100/page if extra fields). Returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: audience analysis, engagement patterns, network graphs across thousands of users. PAGING MODE DETAILS: FIRST CALL: Omit pageNumber and tableName. Creates cached table, returns page 1 with pagination metadata (tableName, totalPages, totalRows). SUBSEQUENT PAGES: Use tableName from first response with pageNumber (2, 3, etc.) to fetch additional pages. Cannot pass pageNumber without tableName. BULK FETCH: Optionally use pageNumberEnd with pageNumber and tableName to fetch multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 returns pages 1-5). Optional fields parameter for performance (default: [\"id\", \"username\", \"name\"]). Available fields: id, username, name, description, location, followersCount, followingCount, verified, profileImageUrl, and more. DATA FRESHNESS: Automatically checks data age (> 1 week triggers refresh from API). FORCE LATEST: Use sparingly - forceLatest=true bypasses cache for real-time data (increases latency/costs). Use for: Finding who engaged with a specific post, analyzing post reach and audience, building engagement networks. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"name\"]. AVAILABLE FIELDS: Core: id, username, name, description, location, verified, verifiedType, protected. Engagement: followersCount, followingCount, tweetCount, listedCount, likesCount, mediaCount. Profile: profileImageUrl, profileBannerUrl, profileInterstitialType. Metadata: source, status, pinnedTweetId, isVerified, accountBasedIn, locationAccurate, label, labelType. Advanced: nLang, nLangsFiltered. Timestamps: modifiedAt, createdAt. Account History: verifiedSinceDatetime, usernameChanges, lastUsernameChangeDatetime. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"name\", \"description, followersCount\"] for basic info, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "interactionType": { "description": "Type of interaction to retrieve users for. Options: \"commenters\" (users who replied), \"quoters\" (users who quoted), \"retweeters\" (users who retweeted). Each type queries different relationships in the data.", "enum": [ "commenters", "quoters", "retweeters" ], "type": "string" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "postId": { "description": "Numeric Twitter post/tweet ID. Must be a number-only string (e.g., \"1234567890\"). Do NOT pass tweet text, URLs, or usernames here.", "pattern": "^\\d+$", "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "postId", "interactionType" ], "type": "object" }, "name": "getTwitterPostInteractingUsers", "outputSchema": null }, { "description": "Get quote posts of specific post. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. Results include guidance for full mode. PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze all quote tweets. Ideal for: sentiment analysis on reactions, commentary patterns, viral spread analysis. First searches database, then external API if data is stale (>10 days). Date filter: OMIT startDate by default. ONLY pass if user explicitly requests filtering from specific date (YYYY-MM-DD format). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nUse to analyze commentary on post. NOT for retweets - use getTwitterPostRetweets. Optional fields parameter for performance: [\"id\", \"text\", \"authorUsername\", \"createdAt\"]. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"text\", \"authorUsername\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, text, authorId, authorUsername, createdAt, createdAtDate. Engagement: retweetCount, replyCount, likeCount, quoteCount, impressionCount, bookmarkCount. Metadata: lang, possiblySensitive, suspended, deleted, source, isRetweet, hasBirdwatchNotes, status. Birdwatch: birdwatchNotesId, birdwatchNotesText, birdwatchNotesUrl. Relations: conversationId, quotedTweetId, retweetedTweetId, replyToTweetId, replyToUserId, replyToUsername, originalTweetId (original tweet ID if edited, equals own ID if unedited), editedTweets (array of edited version IDs). Content: hashtags, mentions, mediaUrls, urls, grokGeneratedContent (array of Grok AI generated content grok_post_id, grok_url, media_id). Location: placeName, placeCountry, placeCountryCode, placeBoundingBoxCoordinates, placeCentroid. EXAMPLES: [\"id\", \"text\"] for minimal, [\"id\", \"text\", \"retweetCount\", \"likeCount\", \"hashtags\"] for basic analysis, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "postId": { "description": "Numeric Twitter post/tweet ID. Must be a number-only string (e.g., \"1234567890\"). Do NOT pass tweet text, URLs, or usernames here.", "pattern": "^\\d+$", "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "postId" ], "type": "object" }, "name": "getTwitterPostQuotes", "outputSchema": null }, { "description": "Get retweets of specific post. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Database-only. Results include guidance for full mode. PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. Database-only search for historical retweet data. Date filter: OMIT startDate by default. ONLY pass if user explicitly requests filtering from specific date (YYYY-MM-DD format). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nUse to analyze post amplification patterns. NOT for quotes - use getTwitterPostQuotes. Optional fields parameter for performance: [\"id\", \"authorUsername\", \"createdAt\"]. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"text\", \"authorUsername\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, text, authorId, authorUsername, createdAt, createdAtDate. Engagement: retweetCount, replyCount, likeCount, quoteCount, impressionCount, bookmarkCount. Metadata: lang, possiblySensitive, suspended, deleted, source, isRetweet, hasBirdwatchNotes, status. Birdwatch: birdwatchNotesId, birdwatchNotesText, birdwatchNotesUrl. Relations: conversationId, quotedTweetId, retweetedTweetId, replyToTweetId, replyToUserId, replyToUsername, originalTweetId (original tweet ID if edited, equals own ID if unedited), editedTweets (array of edited version IDs). Content: hashtags, mentions, mediaUrls, urls, grokGeneratedContent (array of Grok AI generated content grok_post_id, grok_url, media_id). Location: placeName, placeCountry, placeCountryCode, placeBoundingBoxCoordinates, placeCentroid. EXAMPLES: [\"id\", \"text\"] for minimal, [\"id\", \"text\", \"retweetCount\", \"likeCount\", \"hashtags\"] for basic analysis, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "postId": { "description": "Numeric Twitter post/tweet ID. Must be a number-only string (e.g., \"1234567890\"). Do NOT pass tweet text, URLs, or usernames here.", "pattern": "^\\d+$", "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "postId" ], "type": "object" }, "name": "getTwitterPostRetweets", "outputSchema": null }, { "description": "Get posts from author by username with multiple response modes. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. Results include guidance for full mode. PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: statistical analysis, trend detection, data visualization, processing thousands of posts. Returns by default: id, text, authorUsername, createdAtDate. First searches database, then external API if data is stale or missing. Date filters: OMIT startDate/endDate parameters by default to retrieve all posts. ONLY pass these if user explicitly requests specific date range (YYYY-MM-DD format). \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nFIELDS parameter (optional): Specify to get additional/different fields. Available: Core (id, text, authorId, authorUsername, createdAt), Engagement (retweetCount, replyCount, quoteCount, impressionCount, bookmarkCount), Metadata (lang, source, suspended, deleted), Relations (conversationId, quotedTweetId, retweetedTweetId, replyToTweetId, replyToUserId, replyToUsername), Content (hashtags, mentions, mediaUrls), Location (placeName, placeCountry, placeCountryCode, placeBoundingBoxCoordinates, placeCentroid). This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"text\", \"authorUsername\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, text, authorId, authorUsername, createdAt, createdAtDate. Engagement: retweetCount, replyCount, likeCount, quoteCount, impressionCount, bookmarkCount. Metadata: lang, possiblySensitive, suspended, deleted, source, isRetweet, hasBirdwatchNotes, status. Birdwatch: birdwatchNotesId, birdwatchNotesText, birdwatchNotesUrl. Relations: conversationId, quotedTweetId, retweetedTweetId, replyToTweetId, replyToUserId, replyToUsername, originalTweetId (original tweet ID if edited, equals own ID if unedited), editedTweets (array of edited version IDs). Content: hashtags, mentions, mediaUrls, urls, grokGeneratedContent (array of Grok AI generated content grok_post_id, grok_url, media_id). Location: placeName, placeCountry, placeCountryCode, placeBoundingBoxCoordinates, placeCentroid. EXAMPLES: [\"id\", \"text\"] for minimal, [\"id\", \"text\", \"retweetCount\", \"likeCount\", \"hashtags\"] for basic analysis, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" }, "username": { "description": "Twitter username (handle) of the author. Example: \"elonmusk\".", "minLength": 1, "type": "string" } }, "required": [ "username" ], "type": "object" }, "name": "getTwitterPostsByAuthor", "outputSchema": null }, { "description": "Get multiple Twitter posts by numeric IDs (1-100 IDs per request). Returns results directly. Returns only found tweets, omitting not-found IDs for flexibility. First searches database, then external API for missing/stale data in parallel. Use when you have multiple exact post IDs. NOT for search - use getTwitterPostsByKeywords. PERFORMANCE: Much more efficient than multiple single-ID calls. Batches database queries and parallelizes API calls. Optional fields parameter for performance: [\"id\", \"text\", \"retweetCount\"]. Returns: results array with id, text, authorId, createdAt, metrics (retweets, replies, quotes), count, dataSource. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"text\", \"authorUsername\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, text, authorId, authorUsername, createdAt, createdAtDate. Engagement: retweetCount, replyCount, likeCount, quoteCount, impressionCount, bookmarkCount. Metadata: lang, possiblySensitive, suspended, deleted, source, isRetweet, hasBirdwatchNotes, status. Birdwatch: birdwatchNotesId, birdwatchNotesText, birdwatchNotesUrl. Relations: conversationId, quotedTweetId, retweetedTweetId, replyToTweetId, replyToUserId, replyToUsername, originalTweetId (original tweet ID if edited, equals own ID if unedited), editedTweets (array of edited version IDs). Content: hashtags, mentions, mediaUrls, urls, grokGeneratedContent (array of Grok AI generated content grok_post_id, grok_url, media_id). Location: placeName, placeCountry, placeCountryCode, placeBoundingBoxCoordinates, placeCentroid. EXAMPLES: [\"id\", \"text\"] for minimal, [\"id\", \"text\", \"retweetCount\", \"likeCount\", \"hashtags\"] for basic analysis, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "postIds": { "description": "Array of numeric Twitter post IDs (1-100 IDs). Examples: [\"1849537602858893568\", \"1849012345678901234\"]. Returns only found tweets, omitting not-found IDs.", "items": { "pattern": "^\\d+$", "type": "string" }, "maxItems": 100, "minItems": 1, "type": "array" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "postIds" ], "type": "object" }, "name": "getTwitterPostsByIds", "outputSchema": null }, { "description": "Search posts by keywords. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. Results include guidance for full mode. PAGING (responseType=\"paging\"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: sentiment analysis, trend detection, content analysis across thousands of posts. Returns by default: id, text, authorUsername, createdAtDate. First searches database, then external API if data is stale or missing. NOT for URL lookups - use getTwitterPostsByIds. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases (\"deep learning\"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT \"venture capital\"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). SORT: sortBy=\"relevance\" (default, best matches first) or sortBy=\"latest\" (newest first). Filters: language, authorId/authorUsername, countryCode (2-letter ISO code, feature-gated - only accounts with the country filter enabled; filters by the tagged place country in both database and on-demand results). Date filters: OMIT startDate/endDate by default. ONLY pass if user explicitly requests specific date range (YYYY-MM-DD format). Use filterOutRetweets=true to exclude retweets. \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \nFIELDS parameter (optional): Specify to get additional/different fields. Available: Core (id, text, authorId, authorUsername, createdAt), Engagement (retweetCount, replyCount, quoteCount, impressionCount, bookmarkCount), Metadata (lang, source, suspended, deleted), Relations (conversationId, quotedTweetId, retweetedTweetId, replyToTweetId, replyToUserId, replyToUsername), Content (hashtags, mentions, mediaUrls), Location (placeName, placeCountry, placeCountryCode, placeBoundingBoxCoordinates, placeCentroid). This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "authorId": { "description": "Filter posts by author ID (numeric string). Alternative to authorUsername.", "pattern": "^\\d+$", "type": "string" }, "authorUsername": { "description": "Filter posts by author username. Use this parameter to search posts from a specific user. Example: authorUsername=\"elonmusk\" finds all posts by @elonmusk. NEVER use from:username in query - always use this parameter instead.", "type": "string" }, "countryCode": { "description": "Filter posts by the tagged place country code (ISO 3166-1 alpha-2, e.g. \"US\", \"IL\", \"GB\") from the post geo place data. Enterprise only: available to accounts with the country filter enabled; contact [email protected] to upgrade. Applied to both database results and on-demand live searches.", "pattern": "^[A-Za-z]{2}$", "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"text\", \"authorUsername\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, text, authorId, authorUsername, createdAt, createdAtDate. Engagement: retweetCount, replyCount, likeCount, quoteCount, impressionCount, bookmarkCount. Metadata: lang, possiblySensitive, suspended, deleted, source, isRetweet, hasBirdwatchNotes, status. Birdwatch: birdwatchNotesId, birdwatchNotesText, birdwatchNotesUrl. Relations: conversationId, quotedTweetId, retweetedTweetId, replyToTweetId, replyToUserId, replyToUsername, originalTweetId (original tweet ID if edited, equals own ID if unedited), editedTweets (array of edited version IDs). Content: hashtags, mentions, mediaUrls, urls, grokGeneratedContent (array of Grok AI generated content grok_post_id, grok_url, media_id). Location: placeName, placeCountry, placeCountryCode, placeBoundingBoxCoordinates, placeCentroid. EXAMPLES: [\"id\", \"text\"] for minimal, [\"id\", \"text\", \"retweetCount\", \"likeCount\", \"hashtags\"] for basic analysis, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "filterOutRetweets": { "default": false, "description": "Exclude retweets from results. When true, only original posts are returned. Default: false (include retweets).", "type": "boolean" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "language": { "type": "string" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "query": { "description": "Full-text search of post content ONLY. Searches the text/content of posts, NOT author information. EXACT PHRASES: Wrap in double quotes - \"machine learning\" matches that exact phrase. KEYWORDS: Without quotes, matches posts containing any of the words - AI robotics blockchain. BOOLEAN OPERATORS: MUST explicitly use the keywords AND, OR, NOT (uppercase or lowercase). NO implicit operators - space between words means OR by default. Examples requiring explicit operators: Use \"deep learning\" AND python (not \"deep learning python\"). Use tensorflow OR pytorch (not \"tensorflow pytorch\"). PARENTHESES: Group terms for precise logic - (AI OR \"artificial intelligence\") AND ethics. FORBIDDEN: NEVER use from:username or author filters in this parameter. Use the authorUsername parameter instead. FORBIDDEN: DO NOT use filter operators with colons (from:, to:, lang:, since:, until:) - use dedicated parameters instead. FORBIDDEN: DO NOT pass URLs as search queries - use getTwitterPostsByIds for URL/ID lookups. Query examples: \"climate change\" | AI OR blockchain | \"neural networks\" AND python | (startup OR entrepreneur) NOT \"venture capital\"", "maxLength": 250, "minLength": 1, "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "sortBy": { "description": "Sort order for results. \"relevance\" (default): best keyword matches first. \"latest\": newest posts first. Example: sortBy=\"latest\" for a chronological feed.", "enum": [ "relevance", "latest" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "getTwitterPostsByKeywords", "outputSchema": null }, { "description": "Get Twitter user profile by ID or username. Use identifierType=\"id\" for numeric user ID, identifierType=\"username\" for username. For username: Use ONLY when you have the precise username (e.g., \"elonmusk\"). For person names or fuzzy search, use searchTwitterUsers instead. Optional fields parameter for performance (default: [\"id\", \"username\", \"name\"]). Available fields: id, profileImageUrl, profileBannerUrl, profileInterstitialType, status, username, verifiedType, name, description, location, protected, verified, followersCount, followingCount, tweetCount, listedCount, likesCount, mediaCount, pinnedTweetId, source, nLang, nLangsFiltered, label, labelType, isVerified, modifiedAt, createdAt, verifiedSinceDatetime, accountBasedIn, locationAccurate, usernameChanges, lastUsernameChangeDatetime. NOTE: Use \"tweetCount\" not \"statusesCount\". Returns: single user profile with id, username, name, bio, followers_count, following_count, tweet_count, created_at, authenticity_score, inauthentic_type. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"name\"]. AVAILABLE FIELDS: Core: id, username, name, description, location, verified, verifiedType, protected. Engagement: followersCount, followingCount, tweetCount, listedCount, likesCount, mediaCount. Profile: profileImageUrl, profileBannerUrl, profileInterstitialType. Metadata: source, status, pinnedTweetId, isVerified, accountBasedIn, locationAccurate, label, labelType. Advanced: nLang, nLangsFiltered. Timestamps: modifiedAt, createdAt. Account History: verifiedSinceDatetime, usernameChanges, lastUsernameChangeDatetime. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"name\", \"description, followersCount\"] for basic info, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "identifier": { "description": "User ID (numeric) or username depending on identifierType.", "minLength": 1, "type": "string" }, "identifierType": { "description": "Type of identifier provided. Use \"id\" for numeric user ID, \"username\" for username.", "enum": [ "id", "username" ], "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "identifier", "identifierType" ], "type": "object" }, "name": "getTwitterUser", "outputSchema": null }, { "description": "Get Twitter user connections (followers or following). Use connectionType=\"followers\" for users who follow them, connectionType=\"following\" for users they follow. FAST (default, omit responseType or responseType=\"fast\"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. PAGING (responseType=\"paging\"): Async paginated results (1000/page with default fields, 100/page with extra fields), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType=\"csv\"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: network analysis, audience demographics, engagement patterns. Optional fields parameter for performance (default: [\"id\", \"username\", \"name\"]). Available fields: id, username, name, description, location, followersCount, followingCount, verified, profileImageUrl, and more. DATA FRESHNESS: Automatically checks data age (> 1 week triggers refresh from API). FORCE LATEST: Use sparingly - forceLatest=true bypasses cache for real-time data (increases latency/costs). CRITICAL - Understanding totalRows vs totalDataCount: totalRows indicates ONLY what we have in our database. totalDataCount (when present) shows the actual count from Twitter. If totalDataCount is missing or undefined, you CANNOT claim totalRows represents all connections - it only shows our partial database data. If totalDataCount > totalRows, we only have partial data. Always check if totalDataCount exists before making claims about total counts. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "connectionType": { "description": "Type of connection to retrieve. Use \"followers\" for users who follow this account, \"following\" for users this account follows.", "enum": [ "followers", "following" ], "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"name\"]. AVAILABLE FIELDS: Core: id, username, name, description, location, verified, verifiedType, protected. Engagement: followersCount, followingCount, tweetCount, listedCount, likesCount, mediaCount. Profile: profileImageUrl, profileBannerUrl, profileInterstitialType. Metadata: source, status, pinnedTweetId, isVerified, accountBasedIn, locationAccurate, label, labelType. Advanced: nLang, nLangsFiltered. Timestamps: modifiedAt, createdAt. Account History: verifiedSinceDatetime, usernameChanges, lastUsernameChangeDatetime. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"name\", \"description, followersCount\"] for basic info, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" }, "username": { "description": "Twitter username (without @ symbol).", "minLength": 1, "pattern": "^@?[a-zA-Z0-9_]{1,15}$", "type": "string" } }, "required": [ "username", "connectionType" ], "type": "object" }, "name": "getTwitterUserConnections", "outputSchema": null }, { "description": "Get one or more Twitter user profiles by IDs or usernames (1-100 per request). Use identifierType=\"id\" for numeric user IDs, identifierType=\"username\" for usernames. All identifiers must be the same type. For single user: pass array of 1, e.g. identifiers=[\"elonmusk\"]. For person names or fuzzy search, use searchTwitterUsers instead. PERFORMANCE: More efficient than multiple single calls, but can still take time for many users. Returns only found users, omitting not-found identifiers for flexibility. Optional fields parameter for performance (default: [\"id\", \"username\", \"name\"]). Available fields: id, profileImageUrl, profileBannerUrl, profileInterstitialType, status, username, verifiedType, name, description, location, protected, verified, followersCount, followingCount, tweetCount, listedCount, likesCount, mediaCount, pinnedTweetId, source, nLang, nLangsFiltered, label, labelType, isVerified, modifiedAt, createdAt, verifiedSinceDatetime, accountBasedIn, locationAccurate, usernameChanges, lastUsernameChangeDatetime. NOTE: Use \"tweetCount\" not \"statusesCount\". Returns: array of user profiles with count and dataSource. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"name\"]. AVAILABLE FIELDS: Core: id, username, name, description, location, verified, verifiedType, protected. Engagement: followersCount, followingCount, tweetCount, listedCount, likesCount, mediaCount. Profile: profileImageUrl, profileBannerUrl, profileInterstitialType. Metadata: source, status, pinnedTweetId, isVerified, accountBasedIn, locationAccurate, label, labelType. Advanced: nLang, nLangsFiltered. Timestamps: modifiedAt, createdAt. Account History: verifiedSinceDatetime, usernameChanges, lastUsernameChangeDatetime. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"name\", \"description, followersCount\"] for basic info, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "identifierType": { "description": "Type of identifier provided. Use \"id\" for numeric user ID, \"username\" for username.", "enum": [ "id", "username" ], "type": "string" }, "identifiers": { "description": "Array of user IDs (numeric) or usernames (1-100). All must match identifierType. Examples: [\"elonmusk\", \"sama\"] for usernames, [\"44196397\", \"123456\"] for IDs. Returns only found users, omitting not-found identifiers.", "items": { "minLength": 1, "type": "string" }, "maxItems": 100, "minItems": 1, "type": "array" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "identifiers", "identifierType" ], "type": "object" }, "name": "getTwitterUsers", "outputSchema": null }, { "description": "Search for USERS who authored tweets/comments/quotes/retweets matching keywords. USE CASE: Find users who have posted content about specific topics, keywords, or phrases. Returns unique, deduplicated user profiles. RESPONSE MODES (responseType parameter): \"fast\" (DEFAULT): Returns up to 300 results directly in one call. Use limit param to reduce. Best for quick lookups. \"paging\": Async paginated results (100/page). Returns operation ID - call checkOperationStatus to get results. Use pageNumber/tableName for subsequent pages. \"csv\": Async CSV export. Returns dataDumpExportOperationId - call checkOperationStatus to get S3 download link. Best for bulk export. PAGING MODE DETAILS: FIRST CALL: Omit pageNumber and tableName. Creates cached table, returns page 1 with pagination metadata (tableName, totalPages, totalRows). SUBSEQUENT PAGES: Use tableName from first response with pageNumber (2, 3, etc.). BULK FETCH: Use pageNumberEnd with pageNumber and tableName for multiple consecutive pages. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases (\"deep learning\"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT \"venture capital\"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). FILTERS: - startDate/endDate: Filter by tweet date (YYYY-MM-DD format). OMIT by default, only use if user explicitly requests date range. \n IMPORTANT!!!!!: THE CURRENT YEAR IS 2026.\n When user requests relative dates (last week, last month), verify the current date from your \n system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. \n- language: Filter tweets by language (en, EN, English, es, Spanish, etc.). Optional fields parameter for performance (default: [\"id\", \"username\", \"name\"]). Available fields: id, username, name, description, location, followersCount, followingCount, verified, profileImageUrl, and more. AGGREGATE FIELDS (from matching tweets) - MUST BE EXPLICITLY REQUESTED IN FIELDS: aggRelevance (relevance score for sorting), relevantTweetsCount (count of matching tweets per user), relevantTweetsImpressionsSum, relevantTweetsLikesSum, relevantTweetsQuotesSum, relevantTweetsRepliesSum, relevantTweetsRetweetsSum. These return aggregated metrics from all matched tweets for each user. Returns: results array of unique user profiles, count. In paging mode: pagination object, dataDumpExportOperationId for CSV. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "endDate": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"name\"]. AVAILABLE FIELDS: Core: id, username, name, description, location, verified, verifiedType, protected. Engagement: followersCount, followingCount, tweetCount, listedCount, likesCount, mediaCount. Profile: profileImageUrl, profileBannerUrl, profileInterstitialType. Metadata: source, status, pinnedTweetId, isVerified, accountBasedIn, locationAccurate, label, labelType. Advanced: nLang, nLangsFiltered. Timestamps: modifiedAt, createdAt. Account History: verifiedSinceDatetime, usernameChanges, lastUsernameChangeDatetime. Aggregations (from matching tweets, not all tweets of the user): aggRelevance (relevance score), relevantTweetsCount (count of matching tweets), relevantTweetsImpressionsSum, relevantTweetsLikesSum, relevantTweetsQuotesSum, relevantTweetsRepliesSum, relevantTweetsRetweetsSum. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"name\", \"followersCount\", \"relevantTweetsLikesSum\", \"relevantTweetsCount\"] to include engagement aggregations.", "items": { "type": "string" }, "type": "array" }, "forceLatest": { "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).", "type": "boolean" }, "language": { "type": "string" }, "limit": { "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).", "maximum": 500000, "minimum": 1, "type": "number" }, "pageNumber": { "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.", "minimum": 1, "type": "number" }, "pageNumberEnd": { "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.", "minimum": 1, "type": "number" }, "query": { "description": "Full-text search of tweet content to find users who authored matching posts. Searches tweets/comments/quotes/retweets, returns UNIQUE user authors (deduplicated). EXACT PHRASES: Wrap in double quotes - \"machine learning\" matches that exact phrase. KEYWORDS: Without quotes, matches posts containing any of the words - AI robotics blockchain. BOOLEAN OPERATORS: MUST explicitly use the keywords AND, OR, NOT (uppercase or lowercase). NO implicit operators - space between words means OR by default. Examples requiring explicit operators: Use \"deep learning\" AND python (not \"deep learning python\"). Use tensorflow OR pytorch (not \"tensorflow pytorch\"). PARENTHESES: Group terms for precise logic - (AI OR \"artificial intelligence\") AND ethics. FORBIDDEN: DO NOT use filter operators with colons (from:, to:, lang:, since:, until:) - use dedicated parameters instead. Query examples: \"climate change\" | AI OR blockchain | \"neural networks\" AND python | (startup OR entrepreneur) NOT \"venture capital\"", "maxLength": 250, "minLength": 1, "type": "string" }, "responseType": { "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link.", "enum": [ "fast", "paging", "csv" ], "type": "string" }, "startDate": { "type": "string" }, "tableName": { "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.", "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "getTwitterUsersByKeywords", "outputSchema": null }, { "description": "Retrieve authenticated user access key. Required: authentication, confirmation. Returns: access key, metadata.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_requestId": { "type": "string" }, "confirmRetrieval": { "description": "Must be true to retrieve key. Security confirmation required.", "type": "boolean" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" } }, "required": [ "confirmRetrieval" ], "type": "object" }, "name": "getUserAccessKey", "outputSchema": null }, { "description": "Remove tracked keywords/users. Accepts array of items with phrase, type (keyword/user/subreddit/hashtag), platform (twitter/instagram/reddit/tiktok). Subreddit is Reddit-only, hashtag is TikTok-only. Use getTrackedItems first to see current items.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "items": { "description": "Array of tracked items to remove. Use getTrackedItems to see current items.", "items": { "additionalProperties": false, "properties": { "phrase": { "description": "The keyword, username, subreddit name, or hashtag.", "minLength": 1, "type": "string" }, "platform": { "description": "Platform: \"twitter\", \"instagram\", \"reddit\", or \"tiktok\".", "enum": [ "twitter", "instagram", "reddit", "tiktok" ], "type": "string" }, "type": { "description": "Type of tracked item: \"keyword\", \"user\", \"subreddit\" (Reddit only), or \"hashtag\" (TikTok only).", "enum": [ "keyword", "user", "subreddit", "hashtag" ], "type": "string" } }, "required": [ "phrase", "type", "platform" ], "type": "object" }, "minItems": 1, "type": "array" } }, "required": [ "items" ], "type": "object" }, "name": "removeTrackedItems", "outputSchema": null }, { "description": "Search users by person name, partial username, or fuzzy match using real-time external API. PRIMARY USE: When given person's name (e.g., \"Cristiano Ronaldo\", \"Kim Kardashian\"), partial info, or uncertain username. Use for: Name-based search, finding multiple candidates, fuzzy matching, discovering users. NOT for: Exact username lookup (use getInstagramUser when username is certain). Optional fields parameter for performance (default: [\"id\", \"username\", \"fullName\"]). Available fields: id, username, fullName, biography, isPrivate, isVerified, followerCount, followingCount, mediaCount, profilePicUrl, and more. Returns: array of matching users (default 10, max 10) with userId, username, fullName, followerCount, biography, profilePicUrl. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"fullName\"]. AVAILABLE FIELDS: Core: id, username, fullName, biography, isPrivate, isVerified. Engagement: followerCount, followingCount, mediaCount. Profile: profilePicUrl, profilePicId, profileUrl, externalUrl, hasAnonymousProfilePicture. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"fullName\", \"followerCount\"] for basic info, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "limit": { "description": "Maximum number of users to return. Default: 10, Max: 10.", "maximum": 10, "minimum": 1, "type": "number" }, "name": { "description": "Search query for Instagram users. Supports partial name or username matching.", "minLength": 1, "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "searchInstagramUsers", "outputSchema": null }, { "description": "Search Reddit subreddits by keywords using real-time external API. Searches subreddit names and descriptions to find communities. Use for: Discovering communities about topics, finding niche subreddits, exploring Reddit communities. Optional fields parameter for performance (default: [\"id\", \"displayName\", \"title\", \"subscribersCount\"]). Available fields: id, displayName, title, publicDescription, description, subscribersCount, activeUserCount, subredditType, over18, lang, url, subredditUrl, iconImg, bannerImg, headerImg, communityIcon, createdAt. Returns: array of matching subreddits (default 50, max 50) with id, name, description, subscriber count. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"displayName\", \"title\", \"subscribersCount\"]. AVAILABLE FIELDS: Core: id, displayName, title, publicDescription, description. Stats: subscribersCount, activeUserCount. Meta: subredditType, submissionType, over18, lang, url, subredditUrl. Images: iconImg, bannerImg, headerImg, communityIcon. Timestamps: createdAt, createdAtTimestamp, createdAtDate. EXAMPLES: [\"id\", \"displayName\", \"subscribersCount\"] for minimal, [\"displayName\", \"publicDescription\", \"subscribersCount\", \"activeUserCount\"] for discovery.", "items": { "type": "string" }, "type": "array" }, "limit": { "description": "Maximum number of subreddits to return. Default: 50, Max: 50.", "maximum": 50, "minimum": 1, "type": "integer" }, "query": { "description": "Search query for Reddit subreddits. Searches subreddit names and descriptions.", "maxLength": 250, "minLength": 1, "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "searchRedditSubreddits", "outputSchema": null }, { "description": "Search Reddit users by name, username, or profile description using real-time external API. PRIMARY USE: When given a person's name (e.g., \"spez\", \"GallowBoob\"), partial info, or uncertain username. Use for: Name-based search, finding multiple candidates, fuzzy matching, discovering users. NOT for: Exact username lookup (use getRedditUser when username is certain). Optional fields parameter for performance (default: [\"id\", \"username\", \"totalKarma\"]). Available fields: id, username, profileUrl, profilePicUrl, snoovatarImg, linkKarma, commentKarma, totalKarma, awardeeKarma, awarderKarma, isGold, isMod, isEmployee, hasVerifiedEmail, isSuspended, verified, isBlocked, acceptFollowers, hasSubscribed, hideFromRobots, prefShowSnoovatar, profileDescription, profileBannerUrl, profileTitle, createdAt. Returns: array of matching users (default 50, max 50) with id, username, karma metrics, profile info. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"totalKarma\"]. AVAILABLE FIELDS: Core: id, username, profileUrl, profilePicUrl, snoovatarImg. Karma: linkKarma, commentKarma, totalKarma, awardeeKarma, awarderKarma. Status: isGold, isMod, isEmployee, hasVerifiedEmail, isSuspended, verified, isBlocked, acceptFollowers, hasSubscribed, hideFromRobots, prefShowSnoovatar. Profile: profileDescription, profileBannerUrl, profileTitle. Timestamps: createdAt, createdAtTimestamp, createdAtDate. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"totalKarma\", \"profileDescription\"] for basic info.", "items": { "type": "string" }, "type": "array" }, "limit": { "description": "Maximum number of users to return. Default: 50, Max: 50.", "maximum": 50, "minimum": 1, "type": "integer" }, "name": { "description": "Search query for Reddit users. Can be username, name, or keywords from profile.", "minLength": 1, "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "searchRedditUsers", "outputSchema": null }, { "description": "Search Tiktok sounds/music by keyword. Use to discover sound/music objects (by title, artist, or album), then pass the returned id to getTiktokPostsBySound to find posts using that sound. Optional fields parameter (default: [\"id\", \"title\", \"author\", \"userCount\"]). Returns: array of sounds (up to 300) with id, title, author, userCount. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"title\", \"author\", \"userCount\"]. AVAILABLE FIELDS: id, title, author, album, duration (seconds), userCount (number of posts using the sound), isOriginal, isCommerceMusic, isOriginalSound.", "items": { "type": "string" }, "type": "array" }, "keyword": { "description": "Search query for Tiktok sounds/music. Matches sound title, artist, or album name.", "minLength": 1, "type": "string" }, "limit": { "description": "Maximum number of sounds to return. Default: 300, Max: 300.", "maximum": 300, "minimum": 1, "type": "number" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering.", "type": "string" } }, "required": [ "keyword" ], "type": "object" }, "name": "searchTiktokSounds", "outputSchema": null }, { "description": "Search Tiktok users by name or username via external API. Use for: Name-based search, finding multiple candidates, fuzzy matching, discovering users. NOT for: Exact username lookup (use getTiktokUser when username is certain). Optional fields parameter for performance (default: [\"id\", \"username\", \"nickname\"]). Returns: array of matching users (default 10, max 10). This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"nickname\"]. AVAILABLE FIELDS: Core: id, username, nickname, signature, secUid, avatar, isPrivate, isVerified. Engagement: followerCount, followingCount, likeCount, postCount. Meta: language, region, createdAt, usernameModifyTime. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"nickname\", \"followerCount\"] for basic info.", "items": { "type": "string" }, "type": "array" }, "limit": { "description": "Maximum number of users to return. Default: 10, Max: 10.", "maximum": 10, "minimum": 1, "type": "number" }, "name": { "description": "Search query for Tiktok users. Supports partial name or username matching.", "minLength": 1, "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "searchTiktokUsers", "outputSchema": null }, { "description": "Search users by person name, partial username, or fuzzy match using real-time external API. PRIMARY USE: When given person's name (e.g., \"Elon Musk\", \"Sam Altman\"), partial info, or uncertain username. Use for: Name-based search, finding multiple candidates, fuzzy matching, discovering users. NOT for: Exact username lookup (use getTwitterUser when username is certain). Optional fields parameter for performance (default: [\"id\", \"username\", \"name\"]). Available fields: id, username, name, description, location, followersCount, followingCount, verified, profileImageUrl, and more. Returns: array of matching users (default 10, max 10) with id, username, name, bio, followers_count. This is a safe, read-only tool for analyzing searchable information. ", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_isTrial": { "type": "boolean" }, "_requestId": { "type": "string" }, "_trialToken": { "type": "string" }, "feedback": { "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior.", "type": "string" }, "fields": { "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"username\", \"name\"]. AVAILABLE FIELDS: Core: id, username, name, description, location, verified, verifiedType, protected. Engagement: followersCount, followingCount, tweetCount, listedCount, likesCount, mediaCount. Profile: profileImageUrl, profileBannerUrl, profileInterstitialType. Metadata: source, status, pinnedTweetId, isVerified, accountBasedIn, locationAccurate, label, labelType. Advanced: nLang, nLangsFiltered. Timestamps: modifiedAt, createdAt. Account History: verifiedSinceDatetime, usernameChanges, lastUsernameChangeDatetime. EXAMPLES: [\"id\", \"username\"] for minimal, [\"username\", \"name\", \"description, followersCount\"] for basic info, or specify all fields if needed.", "items": { "type": "string" }, "type": "array" }, "limit": { "minimum": 1, "type": "number" }, "name": { "minLength": 1, "type": "string" }, "userPrompt": { "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "searchTwitterUsers", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:97335bb57b45122a8a200143c41265127e5082eb9e0bddfb985bb4c430408fed | sha256sum