TweetBinder by Audiense MCP Server

Official
# TweetBinder by Audiense MCP Server [![smithery badge](https://smithery.ai/badge/@AudienseCo/mcp-tweetbinder)](https://smithery.ai/server/@AudienseCo/mcp-tweetbinder) This is a [Model Context Protocol (MCP)](https://github.com/modelcontextprotocol) server for the [TweetBinder by Audiense](https://www.tweetbinder.com/) API, allowing **Claude** and other MCP-compatible AI models to access TweetBinder by Audiense analytics data. ## Features - Access TweetBinder analytics directly from Claude - Analyze hashtags, users, and conversations on Twitter/X - Get engagement metrics, sentiment analysis, and more - Create Twitter reports with custom search queries - Check report generation status - Retrieve detailed report statistics - Get account balance and quota information - Count tweets matching specific queries - List and manage your TweetBinder reports - Access tweet content and user information from reports ## Installation ### Installing via Smithery To install mcp-tweetbinder for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@AudienseCo/mcp-tweetbinder): ```bash npx -y @smithery/cli install @AudienseCo/mcp-tweetbinder --client claude ``` ## Manual Configuration ### Prerequisites - **Node.js** (v18 or higher) - **Claude Desktop App** - **TweetBinder by Audiense** account with API credentials 1. Clone this repository 2. Install dependencies: ```bash npm install ``` 3. Build the project: ```bash npm run build ``` You need a valid TweetBinder API Bearer Token to use this service. Set it in your environment: ```bash export TWEETBINDER_API_TOKEN='your-bearer-token-here' ``` ## Usage with Claude Desktop 1. Edit your Claude Desktop configuration file: - **MacOS:** ```bash code ~/Library/Application\ Support/Claude/claude_desktop_config.json ``` - **Windows:** ```bash code %AppData%\Claude\claude_desktop_config.json ``` 2. Add this configuration: ```json "mcpServers": { "tweetbinder": { "command": "node", "args": [ "/absolute/path/to/build/index.js" ], "env": { "TWEETBINDER_API_TOKEN": "your-bearer-token-here" } } } ``` 3. Restart Claude Desktop ## Available Tools ### `create-twitter-report` Creates a new report that analyzes Twitter/X data based on a search query. - **Parameters**: - `query` (string): The search query for Twitter data. Can include operators like AND, OR, hashtags, mentions, etc. - `limit` (number, optional): Maximum number of tweets to retrieve (up to 50,000). - `startDate` (number, optional): Start date as Unix timestamp (seconds since epoch). - `endDate` (number, optional): End date as Unix timestamp (seconds since epoch). - `reportType` (enum, optional): Type of report to create: "7-day" for last week or "historical" for all time. Default: "7-day". - **Response**: - Report ID and status information for the created report. - Instructions for checking report status and retrieving statistics. ### `create-twitter-count` Creates a new report that counts tweets matching a search query. - **Parameters**: - `query` (string): The search query for Twitter data. Can include operators like AND, OR, hashtags, mentions, etc. - `reportType` (enum, optional): Type of report to create: "7-day" for last week or "historical" for all time. Default: "7-day". - **Response**: - Raw JSON response containing: - `status`: The status of the report creation - `resourceId`: The ID of the created report - `error`/`message`: Any error or status messages ### `list-reports` Retrieves a list of all your TweetBinder reports with sorting capabilities. - **Parameters**: - `order` (string, optional): Sorting parameter in the format 'field|direction'. Example: 'createdAt|-1' for newest first, 'createdAt|1' for oldest first. - **Response**: - Raw JSON response containing an array of reports with details for each: - `id`: Report ID - `name`: Report name - `status`: Current status (Generated, Waiting, etc.) - `createdAt`: Creation timestamp - `updatedAt`: Last update timestamp - `type`: Report type - `source`: Report source - `query`: Original search query ### `get-report-content` Retrieves the actual tweets or users from a generated report with advanced filtering and pagination. - **Parameters**: - `reportId` (string): The ID of the report to retrieve content for. - `contentType` (enum): The type of content to retrieve: 'tweets' for tweet data or 'users' for user data. - `page` (number, optional): Page number for pagination. Starts at 1. - `perPage` (number, optional): Number of items per page. - `sortBy` (string, optional): Field to sort by (e.g., 'createdAt', 'counts.favorites'). - `sortDirection` (enum, optional): Sort direction: '1' for ascending, '-1' for descending. - `filter` (string, optional): JSON string with filter criteria. Example: '{"counts.favorites":{"$gt":10}}' - **Response**: - Raw JSON response containing: - `items`: Array of tweet or user objects - `pagination`: Information about total items and pages When requesting tweets, detailed information is returned, including: - Tweet ID, text, creation date, language - Author details (name, username, followers, etc.) - Engagement metrics (retweets, likes, replies, etc.) - Media content (hashtags, images, links) - Sentiment analysis When requesting users, information includes: - User ID, name, username - Profile picture URL - Follower and following counts - Verification status - User value and other metrics **Note:** Report must be in 'Generated' status to access content. Use the `get-report-status` tool to check if a report is ready. **Query Syntax Examples:** - `#apple`: Tweets containing the hashtag #apple - `apple lang:en`: English tweets containing "apple" - `(#apple OR #iphone) -#android`: Tweets with #apple or #iphone but not #android - `@apple`: Tweets mentioning @apple - `from:apple`: Tweets posted by user "apple" **Note:** After creating the count report, use the `get-report-status` tool to check when it's ready, then use `get-report-stats` to get the actual count. ### `get-report-status` Checks the current status of a TweetBinder report. - **Parameters**: - `reportId` (string): The ID of the report to check. - **Response**: - The current status of the report, which can be one of: - **Generated**: The report is complete and ready to use. - **Waiting**: The report is still being generated or waiting for tweets to be collected. - **Outdated**: The report is being updated with new data and will be available soon. - **Deleted**: The report has been deleted and is no longer available. - **Archived**: The report has been archived and may be deleted soon. - An explanation of what the status means and what actions are available. **Note:** You must first create a report using the `create-twitter-report` or `create-twitter-count` tool to get a report ID. ### `get-report-stats` Retrieves comprehensive statistics and analytics for a TweetBinder report. - **Parameters**: - `reportId` (string): The ID of the report to retrieve statistics for. - **Response**: - A formatted summary of the report statistics including: - **Overview**: Total tweets, date range, contributors, engagement, media, and links. - **Engagement Metrics**: Potential reach, impressions, retweets, and likes. - **Sentiment Analysis**: Overall sentiment score and interpretation. - **Top Contributors**: Most active users and their tweet counts. - **Popular Content**: Most retweeted posts. - **Frequently Used Hashtags**: Common hashtags used in the conversation. **Note:** The report must have "Generated" status before statistics can be retrieved. Use the `get-report-status` tool to check if a report is ready. ### `get-account-balances` Retrieves information about your account's credit balance, usage, and remaining quota. - **Parameters**: - None - **Returns**: - Raw JSON response containing: - `total`: Total credits available - `used`: Credits used - `available`: Credits currently available - `discount`: Any applicable discount - `remainingReports`: Number of reports remaining - `quota`: Quota information including: - `startedAt`: Quota period start date - `finishedAt`: Quota period end date - `remaining`: Remaining quota - `used`: Used quota - `total`: Total quota - Any error or status messages ## Troubleshooting ### Tools Not Appearing in Claude 1. Check Claude Desktop logs: ``` tail -f ~/Library/Logs/Claude/mcp*.log ``` 2. Verify environment variables are set correctly. 3. Ensure the absolute path to index.js is correct. ### Authentication Issues - Double-check credentials. - Ensure the refresh token is still valid. - Verify that the required API scopes are enabled and that you have enough credits. ## Viewing Logs To check server logs: ### For MacOS/Linux: ``` tail -n 20 -f ~/Library/Logs/Claude/mcp*.log ``` ### For Windows: ``` Get-Content -Path "$env:AppData\Claude\Logs\mcp*.log" -Wait -Tail 20 ``` ## Security Considerations - Keep API credentials secure – never expose them in public repositories. - Use environment variables to manage sensitive data. ## 📄 License This project is licensed under the Apache 2.0 License. See the LICENSE file for more details.