Upgrade 71 popular app skills with real tool data from RUBE_SEARCH_TOOLS
Replaced generic templates with detailed skills containing: - Real tool slugs discovered via RUBE_SEARCH_TOOLS - Actual parameter schemas and types - API-specific known pitfalls - Quick reference tables with all discovered tools Apps upgraded: Google Workspace (10), Finance/Microsoft (10), CRM/Sales (9), DevOps/AI (10), Marketing/Social (8), Support/Productivity/HR (8), Content/Analytics (9), Comms/Events (7) 8 apps skipped (no native Composio tools): Twitch, ManyChat, Front, Deel, Adobe, RingCentral, Zoho Desk, Wave Accounting Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,91 +1,177 @@
|
||||
---
|
||||
name: ahrefs-automation
|
||||
description: "Automate Ahrefs tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Ahrefs Automation
|
||||
description: "Automate SEO research with Ahrefs -- analyze backlink profiles, research keywords, track domain metrics history, audit organic rankings, and perform batch URL analysis through the Composio Ahrefs integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Ahrefs Automation via Rube MCP
|
||||
# Ahrefs Automation
|
||||
|
||||
Automate Ahrefs operations through Composio's Ahrefs toolkit via Rube MCP.
|
||||
Run **Ahrefs** SEO analytics directly from Claude Code. Analyze backlink profiles, research keywords, track domain authority over time, audit organic keyword rankings, and batch-analyze multiple URLs without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/ahrefs](https://composio.dev/toolkits/ahrefs)
|
||||
**Toolkit docs:** [composio.dev/toolkits/ahrefs](https://composio.dev/toolkits/ahrefs)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Ahrefs connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `ahrefs`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Ahrefs account when prompted. The agent will provide an authentication link.
|
||||
3. Most tools require a `target` (domain or URL) and a `country` code (ISO 3166-1 alpha-2). Some also require a `date` in `YYYY-MM-DD` format.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `ahrefs`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Site Explorer Metrics
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Ahrefs operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Retrieve comprehensive SEO metrics for a domain including backlink counts, referring domains, organic keyword rankings, and traffic estimates.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `AHREFS_RETRIEVE_SITE_EXPLORER_METRICS`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `target` (required) -- domain or URL to analyze
|
||||
- `date` (required) -- metrics date in `YYYY-MM-DD` format
|
||||
- `country` -- ISO country code (e.g., `us`, `gb`, `de`)
|
||||
- `mode` -- scope: `exact`, `prefix`, `domain`, or `subdomains` (default)
|
||||
- `protocol` -- `both`, `http`, or `https`
|
||||
- `volume_mode` -- `monthly` or `average`
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Example prompt: *"Get Ahrefs site metrics for example.com as of today in the US"*
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Ahrefs task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. Historical Metrics Tracking
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["ahrefs"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Track how a domain's SEO metrics have changed over time for trend analysis and competitive benchmarking.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tools:** `AHREFS_RETRIEVE_SITE_EXPLORER_METRICS_HISTORY`, `AHREFS_DOMAIN_RATING_HISTORY`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
For full metrics history:
|
||||
- `target` (required) -- domain to track
|
||||
- `date_from` (required) -- start date in `YYYY-MM-DD`
|
||||
- `date_to` -- end date
|
||||
- `history_grouping` -- `daily`, `weekly`, or `monthly` (default)
|
||||
- `select` -- columns like `date,org_cost,org_traffic,paid_cost,paid_traffic`
|
||||
|
||||
For Domain Rating (DR) history:
|
||||
- `target` (required), `date_from` (required), `date_to`, `history_grouping`
|
||||
|
||||
Example prompt: *"Show me the monthly Domain Rating history for example.com over the last year"*
|
||||
|
||||
---
|
||||
|
||||
### 3. Backlink Analysis
|
||||
|
||||
Retrieve a comprehensive list of backlinks including source URLs, anchor text, link attributes, and referring domain metrics.
|
||||
|
||||
**Tool:** `AHREFS_FETCH_ALL_BACKLINKS`
|
||||
|
||||
Key parameters:
|
||||
- `target` (required) -- domain or URL
|
||||
- `select` (required) -- comma-separated columns (e.g., `url_from,url_to,anchor,domain_rating_source,first_seen_link`)
|
||||
- `limit` (default 1000) -- number of results
|
||||
- `aggregation` -- `similar_links` (default), `1_per_domain`, or `all`
|
||||
- `mode` -- `exact`, `prefix`, `domain`, or `subdomains`
|
||||
- `history` -- `live`, `since:YYYY-MM-DD`, or `all_time`
|
||||
- `where` -- rich filter expressions on columns like `is_dofollow`, `domain_rating_source`, `anchor`
|
||||
|
||||
Example prompt: *"Get the top 100 dofollow backlinks to example.com with anchor text and referring DR"*
|
||||
|
||||
---
|
||||
|
||||
### 4. Keyword Research
|
||||
|
||||
Get keyword overview metrics and discover matching keyword variations for content strategy.
|
||||
|
||||
**Tools:** `AHREFS_EXPLORE_KEYWORDS_OVERVIEW`, `AHREFS_EXPLORE_MATCHING_TERMS_FOR_KEYWORDS`
|
||||
|
||||
For keyword overview:
|
||||
- `select` (required) -- columns to return (volume, difficulty, CPC, etc.)
|
||||
- `country` (required) -- ISO country code
|
||||
- `keywords` -- comma-separated keyword list
|
||||
- `where` -- filter by volume, difficulty, intent, etc.
|
||||
|
||||
For matching terms:
|
||||
- `select` (required) and `country` (required)
|
||||
- `keywords` -- comma-separated seed keywords
|
||||
- `match_mode` -- `terms` (any order) or `phrase` (exact order)
|
||||
- `terms` -- `all` or `questions` (question-format keywords only)
|
||||
|
||||
Example prompt: *"Find keyword variations for 'project management' in the US with volume and difficulty"*
|
||||
|
||||
---
|
||||
|
||||
### 5. Organic Keywords Audit
|
||||
|
||||
See which keywords a domain ranks for in organic search, with position tracking and historical comparison.
|
||||
|
||||
**Tool:** `AHREFS_RETRIEVE_ORGANIC_KEYWORDS`
|
||||
|
||||
Key parameters:
|
||||
- `target` (required) -- domain or URL
|
||||
- `country` (required) -- ISO country code
|
||||
- `date` (required) -- date in `YYYY-MM-DD`
|
||||
- `select` -- columns to return (keyword, position, volume, traffic, URL, etc.)
|
||||
- `date_compared` -- compare against a previous date
|
||||
- `where` -- rich filter expressions on `keyword`, `volume`, `best_position`, intent flags, etc.
|
||||
- `limit` (default 1000), `order_by`
|
||||
|
||||
Example prompt: *"Show all organic keywords where example.com ranks in the top 10 in the US"*
|
||||
|
||||
---
|
||||
|
||||
### 6. Batch URL Analysis
|
||||
|
||||
Analyze up to 100 URLs or domains simultaneously to compare SEO metrics across competitors or site sections.
|
||||
|
||||
**Tool:** `AHREFS_BATCH_URL_ANALYSIS`
|
||||
|
||||
Key parameters:
|
||||
- `targets` (required) -- array of objects with `url`, `mode` (`exact`/`prefix`/`domain`/`subdomains`), and `protocol` (`both`/`http`/`https`)
|
||||
- `select` (required) -- array of column identifiers
|
||||
- `country` -- ISO country code
|
||||
- `output` -- `json` or `php`
|
||||
|
||||
Example prompt: *"Compare SEO metrics for competitor1.com, competitor2.com, and competitor3.com"*
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Column selection is required:** Most Ahrefs tools require a `select` parameter specifying which columns to return. Omitting it or using invalid column names will cause errors. Refer to each tool's response schema for valid identifiers.
|
||||
- **Date format consistency:** Dates must be in `YYYY-MM-DD` format. Some historical endpoints return data at the granularity set by `history_grouping`, not by exact date.
|
||||
- **API unit costs vary:** Different columns consume different unit amounts. Columns marked with "(5 units)" or "(10 units)" in the schema are more expensive. Monitor API usage when requesting expensive columns like `traffic`, `refdomains_source`, or `difficulty`.
|
||||
- **Batch limit is 100 targets:** `AHREFS_BATCH_URL_ANALYSIS` accepts up to 100 targets per request. For larger analyses, split into multiple batches.
|
||||
- **Filter expressions are complex:** The `where` parameter uses Ahrefs' filter expression syntax, not standard SQL. Consult the column descriptions in each tool's schema for supported filter types and value formats.
|
||||
- **Deprecated offset parameter:** The `offset` parameter was deprecated on May 31, 2024. Use cursor-based pagination or adjust `limit` instead.
|
||||
- **Mode affects scope significantly:** Setting `mode` to `subdomains` (the default) includes all subdomains, which can dramatically increase result counts compared to `domain` or `exact`.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Ahrefs-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `ahrefs` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `AHREFS_RETRIEVE_SITE_EXPLORER_METRICS` | Current SEO metrics for a domain/URL |
|
||||
| `AHREFS_RETRIEVE_SITE_EXPLORER_METRICS_HISTORY` | Historical SEO metrics over time |
|
||||
| `AHREFS_DOMAIN_RATING_HISTORY` | Domain Rating (DR) history |
|
||||
| `AHREFS_FETCH_ALL_BACKLINKS` | Comprehensive backlink list with filtering |
|
||||
| `AHREFS_FETCH_SITE_EXPLORER_REFERRING_DOMAINS` | List of referring domains |
|
||||
| `AHREFS_GET_SITE_EXPLORER_COUNTRY_METRICS` | Country-level traffic breakdown |
|
||||
| `AHREFS_BATCH_URL_ANALYSIS` | Batch analysis of up to 100 URLs |
|
||||
| `AHREFS_EXPLORE_KEYWORDS_OVERVIEW` | Keyword metrics overview |
|
||||
| `AHREFS_EXPLORE_MATCHING_TERMS_FOR_KEYWORDS` | Matching keyword variations |
|
||||
| `AHREFS_EXPLORE_KEYWORD_VOLUME_BY_COUNTRY` | Keyword volume across countries |
|
||||
| `AHREFS_RETRIEVE_ORGANIC_KEYWORDS` | Organic keyword rankings for a domain |
|
||||
| `AHREFS_RETRIEVE_SITE_EXPLORER_KEYWORDS_HISTORY` | Historical keyword ranking data |
|
||||
| `AHREFS_RETRIEVE_TOP_PAGES_FROM_SITE_EXPLORER` | Top performing pages by SEO metrics |
|
||||
| `AHREFS_GET_SERP_OVERVIEW` | SERP overview for specific keywords |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,167 @@
|
||||
---
|
||||
name: apify-automation
|
||||
description: "Automate Apify tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Apify Automation
|
||||
description: "Automate web scraping and data extraction with Apify -- run Actors, manage datasets, create reusable tasks, and retrieve crawl results through the Composio Apify integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Apify Automation via Rube MCP
|
||||
# Apify Automation
|
||||
|
||||
Automate Apify operations through Composio's Apify toolkit via Rube MCP.
|
||||
Run **Apify** web scraping Actors and manage datasets directly from Claude Code. Execute crawlers synchronously or asynchronously, retrieve structured data, create reusable tasks, and inspect run logs without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/apify](https://composio.dev/toolkits/apify)
|
||||
**Toolkit docs:** [composio.dev/toolkits/apify](https://composio.dev/toolkits/apify)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Apify connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `apify`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Apify account when prompted. The agent will provide an authentication link.
|
||||
3. Browse available Actors at [apify.com/store](https://apify.com/store). Each Actor has its own unique input schema -- always check the Actor's documentation before running.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `apify`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Run an Actor Synchronously and Get Results
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Apify operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Execute an Actor and immediately retrieve its dataset items in a single call. Best for quick scraping jobs.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `APIFY_RUN_ACTOR_SYNC_GET_DATASET_ITEMS`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `actorId` (required) -- Actor ID in format `username/actor-name` (e.g., `compass/crawler-google-places`)
|
||||
- `input` -- JSON input object matching the Actor's schema. Each Actor has unique field names -- check [apify.com/store](https://apify.com/store) for the exact schema.
|
||||
- `limit` -- max items to return
|
||||
- `offset` -- skip items for pagination
|
||||
- `format` -- `json` (default), `csv`, `jsonl`, `html`, `xlsx`, `xml`
|
||||
- `timeout` -- run timeout in seconds
|
||||
- `waitForFinish` -- max wait time (0-300 seconds)
|
||||
- `fields` -- comma-separated list of fields to include
|
||||
- `omit` -- comma-separated list of fields to exclude
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Example prompt: *"Run the Google Places scraper for 'restaurants in New York' and return the first 50 results"*
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Apify task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. Run an Actor Asynchronously
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["apify"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Trigger an Actor run without waiting for completion. Use for long-running scraping jobs.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tool:** `APIFY_RUN_ACTOR`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Key parameters:
|
||||
- `actorId` (required) -- Actor slug or ID
|
||||
- `body` -- JSON input object for the Actor
|
||||
- `memory` -- memory limit in MB (must be power of 2, minimum 128)
|
||||
- `timeout` -- run timeout in seconds
|
||||
- `maxItems` -- cap on returned items
|
||||
- `build` -- specific build tag (e.g., `latest`, `beta`)
|
||||
|
||||
Follow up with `APIFY_GET_DATASET_ITEMS` to retrieve results using the run's `datasetId`.
|
||||
|
||||
Example prompt: *"Start the web scraper Actor for example.com asynchronously with 1024MB memory"*
|
||||
|
||||
---
|
||||
|
||||
### 3. Retrieve Dataset Items
|
||||
|
||||
Fetch data from a specific dataset with pagination, field selection, and filtering.
|
||||
|
||||
**Tool:** `APIFY_GET_DATASET_ITEMS`
|
||||
|
||||
Key parameters:
|
||||
- `datasetId` (required) -- dataset identifier
|
||||
- `limit` (default/max 1000) -- items per page
|
||||
- `offset` (default 0) -- pagination offset
|
||||
- `format` -- `json` (recommended), `csv`, `xlsx`
|
||||
- `fields` -- include only specific fields
|
||||
- `omit` -- exclude specific fields
|
||||
- `clean` -- remove Apify-specific metadata
|
||||
- `desc` -- reverse order (newest first)
|
||||
|
||||
Example prompt: *"Get the first 500 items from dataset myDatasetId in JSON format"*
|
||||
|
||||
---
|
||||
|
||||
### 4. Inspect Actor Details
|
||||
|
||||
View Actor metadata, input schema, and configuration before running it.
|
||||
|
||||
**Tool:** `APIFY_GET_ACTOR`
|
||||
|
||||
Key parameters:
|
||||
- `actorId` (required) -- Actor ID in format `username/actor-name` or hex ID
|
||||
|
||||
Example prompt: *"Show me the details and input schema for the apify/web-scraper Actor"*
|
||||
|
||||
---
|
||||
|
||||
### 5. Create Reusable Tasks
|
||||
|
||||
Configure reusable Actor tasks with preset inputs for recurring scraping jobs.
|
||||
|
||||
**Tool:** `APIFY_CREATE_TASK`
|
||||
|
||||
Configure a task once, then trigger it repeatedly with consistent input parameters. Useful for scheduled or recurring data collection workflows.
|
||||
|
||||
Example prompt: *"Create an Apify task for the Google Search scraper with default query 'AI startups' and US location"*
|
||||
|
||||
---
|
||||
|
||||
### 6. Manage Runs and Datasets
|
||||
|
||||
List Actor runs, browse datasets, and inspect run details for monitoring and debugging.
|
||||
|
||||
**Tools:** `APIFY_GET_LIST_OF_RUNS`, `APIFY_DATASETS_GET`, `APIFY_DATASET_GET`, `APIFY_GET_LOG`
|
||||
|
||||
For listing runs:
|
||||
- Filter by Actor and optionally by status
|
||||
- Get `datasetId` from run details for data retrieval
|
||||
|
||||
For dataset management:
|
||||
- `APIFY_DATASETS_GET` -- list all your datasets with pagination
|
||||
- `APIFY_DATASET_GET` -- get metadata for a specific dataset
|
||||
|
||||
For debugging:
|
||||
- `APIFY_GET_LOG` -- retrieve execution logs for a run or build
|
||||
|
||||
Example prompt: *"List the last 10 runs for the web scraper Actor and show logs for the most recent one"*
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Actor input schemas vary wildly:** Every Actor has its own unique input fields. Generic field names like `queries` or `search_terms` will be rejected. Always check the Actor's page on [apify.com/store](https://apify.com/store) for exact field names (e.g., `searchStringsArray` for Google Maps, `startUrls` for web scrapers).
|
||||
- **URL format requirements:** Always include the full protocol (`https://` or `http://`) in URLs. Many Actors require URLs as objects with a `url` property: `{"startUrls": [{"url": "https://example.com"}]}`.
|
||||
- **Dataset pagination cap:** `APIFY_GET_DATASET_ITEMS` has a max `limit` of 1000 per call. For large datasets, loop with `offset` to collect all items.
|
||||
- **Enum values are lowercase:** Most Actors expect lowercase enum values (e.g., `relevance` not `RELEVANCE`, `all` not `ALL`).
|
||||
- **Sync timeout at 5 minutes:** `APIFY_RUN_ACTOR_SYNC_GET_DATASET_ITEMS` has a maximum `waitForFinish` of 300 seconds. For longer runs, use `APIFY_RUN_ACTOR` (async) and poll with `APIFY_GET_DATASET_ITEMS`.
|
||||
- **Data volume costs:** Large datasets can be expensive to fetch. Prefer moderate limits and incremental processing to avoid timeouts or memory pressure.
|
||||
- **JSON format recommended:** While CSV/XLSX formats are available, JSON is the most reliable for automated processing. Avoid CSV/XLSX for downstream automation.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Apify-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `apify` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `APIFY_RUN_ACTOR_SYNC_GET_DATASET_ITEMS` | Run Actor synchronously and get results immediately |
|
||||
| `APIFY_RUN_ACTOR` | Run Actor asynchronously (trigger and return) |
|
||||
| `APIFY_RUN_ACTOR_SYNC` | Run Actor synchronously, return output record |
|
||||
| `APIFY_GET_ACTOR` | Get Actor metadata and input schema |
|
||||
| `APIFY_GET_DATASET_ITEMS` | Retrieve items from a dataset (paginated) |
|
||||
| `APIFY_DATASET_GET` | Get dataset metadata (item count, etc.) |
|
||||
| `APIFY_DATASETS_GET` | List all user datasets |
|
||||
| `APIFY_CREATE_TASK` | Create a reusable Actor task |
|
||||
| `APIFY_GET_TASK_INPUT` | Inspect a task's stored input |
|
||||
| `APIFY_GET_LIST_OF_RUNS` | List runs for an Actor |
|
||||
| `APIFY_GET_LOG` | Get execution logs for a run |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,165 @@
|
||||
---
|
||||
name: apollo-automation
|
||||
description: "Automate Apollo tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Apollo Automation
|
||||
description: "Automate Apollo.io lead generation -- search organizations, discover contacts, enrich prospect data, manage contact stages, and build targeted outreach lists -- using natural language through the Composio MCP integration."
|
||||
category: sales-intelligence
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Apollo Automation via Rube MCP
|
||||
# Apollo Automation
|
||||
|
||||
Automate Apollo operations through Composio's Apollo toolkit via Rube MCP.
|
||||
Supercharge your sales prospecting with Apollo.io -- search companies, discover decision-makers, enrich contact data with emails and phone numbers, and manage your sales pipeline stages -- all through natural language commands.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/apollo](https://composio.dev/toolkits/apollo)
|
||||
**Toolkit docs:** [composio.dev/toolkits/apollo](https://composio.dev/toolkits/apollo)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Apollo connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `apollo`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Apollo.io account when prompted (API key authentication).
|
||||
3. Start issuing natural language commands to prospect and enrich leads.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `apollo`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Search Organizations
|
||||
Find target companies using filters like name, location, employee count, and industry keywords.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Apollo operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
**Tool:** `APOLLO_ORGANIZATION_SEARCH`
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Example prompt:**
|
||||
> "Find SaaS companies in Texas with 50-500 employees on Apollo"
|
||||
|
||||
## Core Workflow Pattern
|
||||
**Key parameters:**
|
||||
- `q_organization_name` -- Partial name match (e.g., "Apollo" matches "Apollo Inc.")
|
||||
- `organization_locations` -- HQ locations to include (e.g., "texas", "tokyo")
|
||||
- `organization_not_locations` -- HQ locations to exclude
|
||||
- `organization_num_employees_ranges` -- Employee ranges in "min,max" format (e.g., "50,500")
|
||||
- `q_organization_keyword_tags` -- Industry keywords (e.g., "software", "healthcare")
|
||||
- `page` / `per_page` -- Pagination (max 100 per page, max 500 pages)
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Apollo task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
### 2. Discover People at Companies
|
||||
Search Apollo's contact database for people matching title, seniority, location, and company criteria.
|
||||
|
||||
### Step 2: Check Connection
|
||||
**Tool:** `APOLLO_PEOPLE_SEARCH`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["apollo"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Example prompt:**
|
||||
> "Find VPs of Sales at microsoft.com and apollo.io"
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Key parameters:**
|
||||
- `person_titles` -- Job titles (e.g., "VP of Sales", "CTO")
|
||||
- `person_seniorities` -- Seniority levels (e.g., "director", "vp", "senior")
|
||||
- `person_locations` -- Geographic locations of people
|
||||
- `q_organization_domains` -- Company domains (e.g., "apollo.io" -- exclude "www.")
|
||||
- `organization_ids` -- Apollo company IDs from Organization Search
|
||||
- `contact_email_status` -- Filter by email status: "verified", "unverified", "likely to engage"
|
||||
- `page` / `per_page` -- Pagination (max 100 per page)
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
---
|
||||
|
||||
### 3. Enrich Individual Contacts
|
||||
Get comprehensive data (email, phone, LinkedIn, company info) for a single person using their email, LinkedIn URL, or name + company.
|
||||
|
||||
**Tool:** `APOLLO_PEOPLE_ENRICHMENT`
|
||||
|
||||
**Example prompt:**
|
||||
> "Enrich Tim Zheng at Apollo.io on Apollo"
|
||||
|
||||
**Key parameters (at least one identifier required):**
|
||||
- `email` -- Person's email address
|
||||
- `linkedin_url` -- Full LinkedIn profile URL
|
||||
- `first_name` + `last_name` + (`organization_name` or `domain`) -- Name-based matching
|
||||
- `domain` -- Bare hostname without protocol (e.g., "apollo.io", not "https://apollo.io")
|
||||
- `reveal_personal_emails` -- Set true to get personal emails (may use extra credits)
|
||||
- `reveal_phone_number` -- Set true for phone numbers (requires `webhook_url`)
|
||||
|
||||
---
|
||||
|
||||
### 4. Bulk Enrich Prospects
|
||||
Enrich up to 10 people simultaneously for efficient batch processing.
|
||||
|
||||
**Tool:** `APOLLO_BULK_PEOPLE_ENRICHMENT`
|
||||
|
||||
**Example prompt:**
|
||||
> "Bulk enrich these 5 leads with their Apollo data: [list of names/emails]"
|
||||
|
||||
**Key parameters:**
|
||||
- `details` (required) -- Array of 1-10 person objects, each with identifiers like `email`, `linkedin_url`, `first_name`, `last_name`, `domain`, `company_name`
|
||||
- `reveal_personal_emails` -- Include personal emails (extra credits)
|
||||
- `reveal_phone_number` -- Include phone numbers (requires `webhook_url`)
|
||||
|
||||
---
|
||||
|
||||
### 5. Manage Contact Pipeline Stages
|
||||
List available stages and update contacts through your sales funnel.
|
||||
|
||||
**Tools:** `APOLLO_LIST_CONTACT_STAGES`, `APOLLO_UPDATE_CONTACT_STAGE`
|
||||
|
||||
**Example prompt:**
|
||||
> "Move contacts X and Y to the 'Qualified' stage in Apollo"
|
||||
|
||||
**Key parameters for listing stages:** None required.
|
||||
|
||||
**Key parameters for updating stage:**
|
||||
- `contact_ids` (required) -- Array of contact IDs to update
|
||||
- `contact_stage_id` (required) -- Target stage ID (from List Contact Stages)
|
||||
|
||||
---
|
||||
|
||||
### 6. Create and Search Saved Contacts
|
||||
Create new contact records and search your existing Apollo contact database.
|
||||
|
||||
**Tools:** `APOLLO_CREATE_CONTACT`, `APOLLO_SEARCH_CONTACTS`
|
||||
|
||||
**Example prompt:**
|
||||
> "Search my Apollo contacts for anyone at Stripe"
|
||||
|
||||
**Key parameters for search:**
|
||||
- Keyword search, stage ID filtering, sorting options
|
||||
- `page` / `per_page` -- Pagination
|
||||
|
||||
**Key parameters for create:**
|
||||
- `first_name`, `last_name`, `email`, `organization_name`
|
||||
- `account_id` -- Link to an organization
|
||||
- `contact_stage_id` -- Initial sales stage
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Organization domains can be empty**: Some organizations from `APOLLO_ORGANIZATION_SEARCH` return missing or empty domain fields. Use `APOLLO_ORGANIZATION_ENRICHMENT` to validate domains before relying on them.
|
||||
- **HTTP 403 means config issues**: A 403 response indicates API key or plan access problems -- do not retry. Fix your credentials or plan first.
|
||||
- **People search returns obfuscated data**: `APOLLO_PEOPLE_SEARCH` may show `has_email`/`has_direct_phone` flags or obfuscated fields instead of full contact details. Use `APOLLO_PEOPLE_ENRICHMENT` to get complete information.
|
||||
- **Pagination limits are strict**: People search supports `per_page` up to 100 and max 500 pages. Stopping early can miss large portions of the result set.
|
||||
- **Bulk enrichment has small batch limits**: `APOLLO_BULK_PEOPLE_ENRICHMENT` accepts only 10 items per call. It can return `status='success'` with `missing_records > 0` when identifiers are insufficient -- retry individual records with `APOLLO_PEOPLE_ENRICHMENT`.
|
||||
- **No automatic deduplication**: `APOLLO_CREATE_CONTACT` does not deduplicate. Check for existing contacts first with `APOLLO_SEARCH_CONTACTS`.
|
||||
- **Domain format matters**: Always use bare hostnames (e.g., "apollo.io") without protocol prefixes ("https://") or "www." prefix.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Apollo-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `apollo` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Required Params |
|
||||
|---|---|---|
|
||||
| Search organizations | `APOLLO_ORGANIZATION_SEARCH` | None (optional filters) |
|
||||
| Enrich organization | `APOLLO_ORGANIZATION_ENRICHMENT` | `domain` |
|
||||
| Bulk enrich orgs | `APOLLO_BULK_ORGANIZATION_ENRICHMENT` | `domains` |
|
||||
| Search people | `APOLLO_PEOPLE_SEARCH` | None (optional filters) |
|
||||
| Enrich person | `APOLLO_PEOPLE_ENRICHMENT` | One of: `email`, `linkedin_url`, or name+company |
|
||||
| Bulk enrich people | `APOLLO_BULK_PEOPLE_ENRICHMENT` | `details` (1-10 person objects) |
|
||||
| List contact stages | `APOLLO_LIST_CONTACT_STAGES` | None |
|
||||
| Update contact stage | `APOLLO_UPDATE_CONTACT_STAGE` | `contact_ids`, `contact_stage_id` |
|
||||
| Create contact | `APOLLO_CREATE_CONTACT` | Name + identifiers |
|
||||
| Search contacts | `APOLLO_SEARCH_CONTACTS` | None (optional filters) |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,167 @@
|
||||
---
|
||||
name: ashby-automation
|
||||
description: "Automate Ashby tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Ashby Automation
|
||||
description: "Automate recruiting and hiring workflows in Ashby -- manage candidates, jobs, applications, interviews, and notes through natural language commands."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Ashby Automation via Rube MCP
|
||||
# Ashby Automation
|
||||
|
||||
Automate Ashby operations through Composio's Ashby toolkit via Rube MCP.
|
||||
Automate your Ashby ATS recruiting operations directly from Claude Code. Create candidates, post jobs, manage applications, view interview schedules, and search your talent pipeline -- all without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/ashby](https://composio.dev/toolkits/ashby)
|
||||
**Toolkit docs:** [composio.dev/toolkits/ashby](https://composio.dev/toolkits/ashby)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Ashby connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `ashby`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your Claude Code config with URL: `https://rube.app/mcp`
|
||||
2. When prompted, authenticate your Ashby account through the connection link provided
|
||||
3. Start automating your recruiting workflows with natural language
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `ashby`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Manage Candidates
|
||||
|
||||
Create, list, search, update, and retrieve detailed candidate information.
|
||||
|
||||
**Tools:** `ASHBY_CREATE_CANDIDATE`, `ASHBY_LIST_CANDIDATES`, `ASHBY_SEARCH_CANDIDATES`, `ASHBY_GET_CANDIDATE_INFO`, `ASHBY_UPDATE_CANDIDATE`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Ashby operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Create a candidate named "Jane Smith" with email jane@example.com and LinkedIn profile https://linkedin.com/in/janesmith
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Key parameters for `ASHBY_CREATE_CANDIDATE`:
|
||||
- `name` (required) -- full name of the candidate
|
||||
- `email` -- primary email address
|
||||
- `phoneNumber`, `linkedInUrl`, `githubUrl`, `websiteUrl` -- contact/social profiles
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters for `ASHBY_SEARCH_CANDIDATES`:
|
||||
- `email` -- exact email match
|
||||
- `name` -- partial name match
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Key parameters for `ASHBY_LIST_CANDIDATES`:
|
||||
- `perPage` (max 100) / `cursor` -- pagination
|
||||
- `syncToken` -- for incremental updates since last sync
|
||||
|
||||
### 2. Create and List Jobs
|
||||
|
||||
Post new job openings and browse existing positions.
|
||||
|
||||
**Tools:** `ASHBY_CREATE_JOB`, `ASHBY_LIST_JOBS`, `ASHBY_GET_JOB_INFO`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Ashby task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Create a new "Senior Software Engineer" job in team dept-123 at location loc-456 with brand brand-789
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
Key parameters for `ASHBY_CREATE_JOB`:
|
||||
- `title` (required) -- job title
|
||||
- `teamId` (required) -- department/team ID (from list departments)
|
||||
- `locationId` (required) -- office location ID (from list locations)
|
||||
- `brandId` (required) -- employer brand ID (from list brands)
|
||||
- `defaultInterviewPlanId` -- required to open the job for applications
|
||||
- `jobTemplateId` -- pre-populate from a template
|
||||
|
||||
Key parameters for `ASHBY_LIST_JOBS`:
|
||||
- `perPage` (max 100) / `cursor` / `syncToken` -- pagination and incremental sync
|
||||
|
||||
**Note:** Newly created jobs start in "Draft" status. You must set a `defaultInterviewPlanId` to open/publish the job.
|
||||
|
||||
### 3. Manage Applications
|
||||
|
||||
Create applications to connect candidates to jobs and track their progress.
|
||||
|
||||
**Tools:** `ASHBY_CREATE_APPLICATION`, `ASHBY_LIST_APPLICATIONS`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["ashby"]
|
||||
session_id: "your_session_id"
|
||||
Apply candidate cand-abc123 to job job-xyz789 with source src-referral
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
Key parameters for `ASHBY_CREATE_APPLICATION`:
|
||||
- `candidateId` (required) -- UUID of an existing candidate
|
||||
- `jobId` (required) -- UUID of an existing job
|
||||
- `sourceId` -- UUID of the application source (LinkedIn, Referral, etc.)
|
||||
- `creditedToUserId` -- UUID of recruiter/referrer to credit
|
||||
- `interviewStageId` -- place directly into a specific stage (defaults to first stage)
|
||||
|
||||
Key parameters for `ASHBY_LIST_APPLICATIONS`:
|
||||
- `perPage` (max 100) / `cursor` / `syncToken` -- pagination and incremental sync
|
||||
|
||||
### 4. View Interview Schedules
|
||||
|
||||
List scheduled interviews with timing, interviewer, and candidate details.
|
||||
|
||||
**Tool:** `ASHBY_LIST_INTERVIEW_SCHEDULES`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Show me all upcoming interview schedules
|
||||
```
|
||||
|
||||
Key parameters:
|
||||
- `perPage` (max 100) / `cursor` -- pagination
|
||||
- `syncToken` -- incremental sync for changed schedules
|
||||
|
||||
### 5. Candidate Notes
|
||||
|
||||
View internal notes, observations, and recruiter comments on candidates.
|
||||
|
||||
**Tool:** `ASHBY_LIST_CANDIDATE_NOTES`
|
||||
|
||||
```
|
||||
Show me all notes for candidate cand-abc123
|
||||
```
|
||||
|
||||
- Retrieves all notes added by recruiters and hiring team members
|
||||
- Useful for reviewing interview feedback and internal assessments
|
||||
|
||||
### 6. Pipeline Reporting
|
||||
|
||||
Combine listing tools to build hiring pipeline reports.
|
||||
|
||||
**Tools:** `ASHBY_LIST_CANDIDATES`, `ASHBY_LIST_APPLICATIONS`, `ASHBY_LIST_JOBS`
|
||||
|
||||
```
|
||||
List all applications to see the current state of our hiring pipeline
|
||||
```
|
||||
|
||||
- Use `syncToken` for incremental data fetches (efficient for recurring reports)
|
||||
- Combine candidate, application, and job data for full pipeline visibility
|
||||
- Paginate through all results with `cursor` for complete datasets
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Jobs start in Draft:** Newly created jobs via `ASHBY_CREATE_JOB` start in "Draft" status and cannot accept applications until a `defaultInterviewPlanId` is set and the job is opened.
|
||||
- **Four required fields for jobs:** `ASHBY_CREATE_JOB` requires `title`, `teamId`, `locationId`, and `brandId`. Use list departments, locations, and brands endpoints to discover valid IDs.
|
||||
- **Candidate before application:** A candidate must exist before creating an application. Always create or find the candidate first, then create the application.
|
||||
- **Cursor-based pagination:** All list endpoints use cursor-based pagination with `perPage` (max 100) and `cursor`. You cannot jump to arbitrary pages -- you must iterate sequentially.
|
||||
- **`syncToken` for efficiency:** Use `syncToken` from previous responses to fetch only changed records. This dramatically reduces API calls for recurring workflows.
|
||||
- **UUID format everywhere:** All IDs (candidates, jobs, applications, stages) are UUIDs. Passing malformed IDs returns 400 errors.
|
||||
- **Search limitations:** `ASHBY_SEARCH_CANDIDATES` supports exact email match or partial name match, but not combined queries or other fields. For broader searches, use `ASHBY_LIST_CANDIDATES` with pagination.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Ashby-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `ashby` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `ASHBY_CREATE_CANDIDATE` | Create a new candidate (requires `name`) |
|
||||
| `ASHBY_LIST_CANDIDATES` | List all candidates with pagination and sync |
|
||||
| `ASHBY_SEARCH_CANDIDATES` | Search candidates by email or name |
|
||||
| `ASHBY_GET_CANDIDATE_INFO` | Get full candidate details (requires `candidateId`) |
|
||||
| `ASHBY_UPDATE_CANDIDATE` | Update candidate profile information |
|
||||
| `ASHBY_LIST_CANDIDATE_NOTES` | List internal notes for a candidate |
|
||||
| `ASHBY_CREATE_JOB` | Create a job opening (requires `title`, `teamId`, `locationId`, `brandId`) |
|
||||
| `ASHBY_LIST_JOBS` | List all jobs with pagination and sync |
|
||||
| `ASHBY_GET_JOB_INFO` | Get full job details by ID |
|
||||
| `ASHBY_CREATE_APPLICATION` | Apply a candidate to a job (requires `candidateId`, `jobId`) |
|
||||
| `ASHBY_LIST_APPLICATIONS` | List all applications with pagination and sync |
|
||||
| `ASHBY_LIST_INTERVIEW_SCHEDULES` | List scheduled interviews with pagination |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,160 @@
|
||||
---
|
||||
name: attio-automation
|
||||
description: "Automate Attio tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Attio Automation
|
||||
description: "Automate Attio CRM operations -- search records, query contacts and companies with advanced filters, manage notes, list attributes, and navigate your relationship data -- using natural language through the Composio MCP integration."
|
||||
category: crm
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Attio Automation via Rube MCP
|
||||
# Attio Automation
|
||||
|
||||
Automate Attio operations through Composio's Attio toolkit via Rube MCP.
|
||||
Manage your Attio CRM workspace -- fuzzy search across people and companies, run complex filtered queries, browse notes, discover object schemas, and list records -- all through natural language commands.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/attio](https://composio.dev/toolkits/attio)
|
||||
**Toolkit docs:** [composio.dev/toolkits/attio](https://composio.dev/toolkits/attio)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Attio connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `attio`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Attio account when prompted (OAuth authentication).
|
||||
3. Start issuing natural language commands to manage your CRM data.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `attio`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Fuzzy Search Across Records
|
||||
Search for people, companies, deals, or any object by name, domain, email, phone, or social handle.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Attio operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
**Tool:** `ATTIO_SEARCH_RECORDS`
|
||||
|
||||
**Example prompt:**
|
||||
> "Search Attio for anyone named Alan Mathis"
|
||||
|
||||
**Key parameters (all required):**
|
||||
- `query` -- Search string (max 256 characters). Empty string returns default results.
|
||||
- `objects` -- Array of object slugs to search (e.g., `["people"]`, `["people", "companies"]`, `["deals"]`)
|
||||
- `request_as` -- Context: use `{"type": "workspace"}` for full workspace search, or specify a workspace member
|
||||
|
||||
---
|
||||
|
||||
### 2. Advanced Filtered Queries
|
||||
Query records with server-side filtering, sorting, and complex conditions -- far more powerful than fuzzy search.
|
||||
|
||||
**Tool:** `ATTIO_QUERY_RECORDS`
|
||||
|
||||
**Example prompt:**
|
||||
> "Find all companies in Attio created after January 2025 sorted by name"
|
||||
|
||||
**Key parameters:**
|
||||
- `object` (required) -- Object slug or UUID (e.g., "people", "companies", "deals")
|
||||
- `filter` -- Attio filter object with operators like `$eq`, `$contains`, `$gte`, `$and`, `$or`
|
||||
- `sorts` -- Array of sort specifications with `direction` ("asc"/"desc") and `attribute`
|
||||
- `limit` -- Max records to return (up to 500)
|
||||
- `offset` -- Pagination offset
|
||||
|
||||
**Filter examples:**
|
||||
```json
|
||||
{"name": {"first_name": {"$contains": "John"}}}
|
||||
{"email_addresses": {"$contains": "@example.com"}}
|
||||
{"created_at": {"$gte": "2025-01-01T00:00:00.000Z"}}
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
---
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 3. Find Records by ID or Attributes
|
||||
Look up a specific record by its unique ID or search by unique attribute values.
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
**Tool:** `ATTIO_FIND_RECORD`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Attio task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
**Example prompt:**
|
||||
> "Find the Attio company with domain example.com"
|
||||
|
||||
### Step 2: Check Connection
|
||||
**Key parameters:**
|
||||
- `object_id` (required) -- Object type slug: "people", "companies", "deals", "users", "workspaces"
|
||||
- `record_id` -- Direct lookup by UUID (optional)
|
||||
- `attributes` -- Dictionary of attribute filters (e.g., `{"email_addresses": "john@example.com"}`)
|
||||
- `limit` -- Max records (up to 1000)
|
||||
- `offset` -- Pagination offset
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["attio"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
---
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Browse and Filter Notes
|
||||
List notes across the workspace or filter by specific parent objects and records.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Tool:** `ATTIO_LIST_NOTES`
|
||||
|
||||
**Example prompt:**
|
||||
> "Show the last 10 notes on the Acme Corp company record in Attio"
|
||||
|
||||
**Key parameters:**
|
||||
- `parent_object` -- Object slug (e.g., "people", "companies", "deals") -- requires `parent_record_id`
|
||||
- `parent_record_id` -- UUID of the parent record -- requires `parent_object`
|
||||
- `limit` -- Max notes to return (1-50, default 10)
|
||||
- `offset` -- Number of results to skip
|
||||
|
||||
---
|
||||
|
||||
### 5. Discover Object Schemas and Attributes
|
||||
Understand your workspace structure by listing objects and their attribute definitions.
|
||||
|
||||
**Tools:** `ATTIO_GET_OBJECT`, `ATTIO_LIST_ATTRIBUTES`
|
||||
|
||||
**Example prompt:**
|
||||
> "What attributes does the companies object have in Attio?"
|
||||
|
||||
**Key parameters for Get Object:**
|
||||
- `object_id` -- Object slug or UUID
|
||||
|
||||
**Key parameters for List Attributes:**
|
||||
- `target` -- "objects" or "lists"
|
||||
- `identifier` -- Object or list ID/slug
|
||||
|
||||
---
|
||||
|
||||
### 6. List All Records
|
||||
Retrieve records from a specific object type with simple pagination, returned in creation order.
|
||||
|
||||
**Tool:** `ATTIO_LIST_RECORDS`
|
||||
|
||||
**Example prompt:**
|
||||
> "List the first 100 people records in Attio"
|
||||
|
||||
**Key parameters:**
|
||||
- Object type identifier
|
||||
- Pagination parameters
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Timestamp format is critical**: ALL timestamp comparisons (`created_at`, `updated_at`, custom timestamps) MUST use ISO8601 string format (e.g., `2025-01-01T00:00:00.000Z`). Unix timestamps or numeric values cause "Invalid timestamp value" errors.
|
||||
- **Name attributes must be nested**: The `name` attribute has sub-properties (`first_name`, `last_name`, `full_name`) that MUST be nested under `name`. Correct: `{"name": {"first_name": {"$contains": "John"}}}`. Wrong: `{"first_name": {...}}` -- this fails with "unknown_filter_attribute_slug".
|
||||
- **Email operators are limited**: `email_addresses` supports `$eq`, `$contains`, `$starts_with`, `$ends_with` but NOT `$not_empty`.
|
||||
- **Record-reference attributes need path filtering**: For attributes that reference other records (e.g., "team", "company"), use path-based filtering, not nested syntax. Example: `{"path": [["companies", "team"], ["people", "name"]], "constraints": {"first_name": {"$eq": "John"}}}`.
|
||||
- **"lists" is not an object type**: Do not use "lists" as an `object_id`. Use list-specific actions for list operations.
|
||||
- **Search is eventually consistent**: `ATTIO_SEARCH_RECORDS` returns eventually consistent results. For guaranteed up-to-date results, use `ATTIO_QUERY_RECORDS` instead.
|
||||
- **Attribute slugs vary by workspace**: System attributes (e.g., "email_addresses", "name") are consistent, but custom attributes vary. Use `ATTIO_LIST_ATTRIBUTES` to discover valid slugs for your workspace.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Attio-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `attio` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Required Params |
|
||||
|---|---|---|
|
||||
| Fuzzy search records | `ATTIO_SEARCH_RECORDS` | `query`, `objects`, `request_as` |
|
||||
| Query with filters | `ATTIO_QUERY_RECORDS` | `object` |
|
||||
| Find record by ID/attributes | `ATTIO_FIND_RECORD` | `object_id` |
|
||||
| List notes | `ATTIO_LIST_NOTES` | None (optional filters) |
|
||||
| Get object schema | `ATTIO_GET_OBJECT` | `object_id` |
|
||||
| List attributes | `ATTIO_LIST_ATTRIBUTES` | `target`, `identifier` |
|
||||
| List records | `ATTIO_LIST_RECORDS` | Object type |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,186 @@
|
||||
---
|
||||
name: braintree-automation
|
||||
description: "Automate Braintree tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Braintree Automation
|
||||
description: "Braintree Automation: manage payment processing via Stripe-compatible tools for customers, subscriptions, payment methods, and transactions"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Braintree Automation via Rube MCP
|
||||
# Braintree Automation
|
||||
|
||||
Automate Braintree operations through Composio's Braintree toolkit via Rube MCP.
|
||||
Automate payment processing operations via Stripe-compatible tooling including managing customers, subscriptions, payment methods, balance transactions, and customer searches. The Composio platform routes Braintree payment workflows through the Stripe toolkit for unified payment management.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/braintree](https://composio.dev/toolkits/braintree)
|
||||
**Toolkit docs:** [composio.dev/toolkits/braintree](https://composio.dev/toolkits/braintree)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Braintree connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `braintree`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
This skill requires the **Rube MCP server** connected at `https://rube.app/mcp`.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `braintree`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
Before executing any tools, ensure an active connection exists for the `stripe` toolkit. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.
|
||||
|
||||
## Tool Discovery
|
||||
---
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. Create and Manage Customers
|
||||
|
||||
Create new customers and retrieve existing customer details.
|
||||
|
||||
**Tools:**
|
||||
- `STRIPE_CREATE_CUSTOMER` -- Create a new customer
|
||||
- `STRIPE_GET_CUSTOMERS_CUSTOMER` -- Retrieve a customer by ID
|
||||
- `STRIPE_POST_CUSTOMERS_CUSTOMER` -- Update an existing customer
|
||||
- `STRIPE_LIST_CUSTOMERS` -- List customers with pagination
|
||||
- `STRIPE_GET_V1_CUSTOMERS_SEARCH_CUSTOMERS` -- Search customers by email, name, metadata
|
||||
|
||||
**Key Parameters for `STRIPE_CREATE_CUSTOMER`:**
|
||||
- `email` -- Customer's primary email address
|
||||
- `name` -- Full name or business name
|
||||
- `phone` -- Phone number with country code
|
||||
- `description` -- Internal reference notes
|
||||
- `address` -- Billing address object with `line1`, `city`, `state`, `postal_code`, `country`
|
||||
|
||||
**Key Parameters for `STRIPE_GET_V1_CUSTOMERS_SEARCH_CUSTOMERS`:**
|
||||
- `query` (required) -- Stripe Search Query Language. Must use `field:value` syntax:
|
||||
- `email:'user@example.com'` -- Exact match (case insensitive)
|
||||
- `name~'John'` -- Substring match (min 3 chars)
|
||||
- `metadata['key']:'value'` -- Metadata search
|
||||
- `created>1609459200` -- Timestamp comparison
|
||||
- Combine with `AND` or `OR` (max 10 clauses, cannot mix)
|
||||
- `limit` -- Results per page (1--100, default 10)
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Braintree operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: STRIPE_CREATE_CUSTOMER
|
||||
Arguments:
|
||||
email: "jane@example.com"
|
||||
name: "Jane Doe"
|
||||
description: "Enterprise plan customer"
|
||||
address: {
|
||||
"line1": "123 Main St",
|
||||
"city": "San Francisco",
|
||||
"state": "CA",
|
||||
"postal_code": "94105",
|
||||
"country": "US"
|
||||
}
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
---
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Manage Subscriptions
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Create subscriptions and view customer subscription details.
|
||||
|
||||
**Tools:**
|
||||
- `STRIPE_CREATE_SUBSCRIPTION` -- Create a new subscription for an existing customer
|
||||
- `STRIPE_GET_CUSTOMERS_CUSTOMER_SUBSCRIPTIONS` -- List all subscriptions for a customer
|
||||
- `STRIPE_GET_CUSTOMERS_CUSTOMER_SUBS_SUB_EXPOSED_ID` -- Get a specific subscription
|
||||
|
||||
**Key Parameters for `STRIPE_CREATE_SUBSCRIPTION`:**
|
||||
- `customer` (required) -- Customer ID, e.g., `"cus_xxxxxxxxxxxxxx"`
|
||||
- `items` (required) -- Array of subscription items, each with:
|
||||
- `price` -- Price ID, e.g., `"price_xxxxxxxxxxxxxx"` (use this OR `price_data`)
|
||||
- `price_data` -- Inline price definition with `currency`, `product`, `unit_amount`, `recurring`
|
||||
- `quantity` -- Item quantity
|
||||
- `default_payment_method` -- Payment method ID (not required for trials or invoice billing)
|
||||
- `trial_period_days` -- Trial days (no payment required during trial)
|
||||
- `collection_method` -- `"charge_automatically"` (default) or `"send_invoice"`
|
||||
- `cancel_at_period_end` -- Cancel at end of billing period (boolean)
|
||||
|
||||
**Key Parameters for `STRIPE_GET_CUSTOMERS_CUSTOMER_SUBSCRIPTIONS`:**
|
||||
- `customer` (required) -- Customer ID
|
||||
- `status` -- Filter: `"active"`, `"all"`, `"canceled"`, `"trialing"`, `"past_due"`, etc.
|
||||
- `limit` -- Results per page (1--100, default 10)
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Braintree task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: STRIPE_CREATE_SUBSCRIPTION
|
||||
Arguments:
|
||||
customer: "cus_abc123"
|
||||
items: [{"price": "price_xyz789", "quantity": 1}]
|
||||
trial_period_days: 14
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
### 3. Manage Payment Methods
|
||||
|
||||
List and attach payment methods to customers.
|
||||
|
||||
**Tools:**
|
||||
- `STRIPE_GET_CUSTOMERS_CUSTOMER_PAYMENT_METHODS` -- List a customer's payment methods
|
||||
- `STRIPE_ATTACH_PAYMENT_METHOD` -- Attach a payment method to a customer
|
||||
|
||||
**Key Parameters for `STRIPE_GET_CUSTOMERS_CUSTOMER_PAYMENT_METHODS`:**
|
||||
- `customer` (required) -- Customer ID
|
||||
- `type` -- Filter by type: `"card"`, `"sepa_debit"`, `"us_bank_account"`, etc.
|
||||
- `limit` -- Results per page (1--100, default 10)
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["braintree"]
|
||||
session_id: "your_session_id"
|
||||
Tool: STRIPE_GET_CUSTOMERS_CUSTOMER_PAYMENT_METHODS
|
||||
Arguments:
|
||||
customer: "cus_abc123"
|
||||
type: "card"
|
||||
limit: 10
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
---
|
||||
|
||||
### 4. View Balance Transactions
|
||||
|
||||
Retrieve the history of balance changes for a customer.
|
||||
|
||||
**Tool:** `STRIPE_GET_CUSTOMERS_CUSTOMER_BALANCE_TRANSACTIONS`
|
||||
|
||||
**Key Parameters:**
|
||||
- `customer` (required) -- Customer ID
|
||||
- `created` -- Filter by creation date with comparison operators: `{"gte": 1609459200}` or `{"gt": 1609459200, "lt": 1640995200}`
|
||||
- `invoice` -- Filter by related invoice ID
|
||||
- `limit` -- Results per page (1--100)
|
||||
- `starting_after` / `ending_before` -- Pagination cursors
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: STRIPE_GET_CUSTOMERS_CUSTOMER_BALANCE_TRANSACTIONS
|
||||
Arguments:
|
||||
customer: "cus_abc123"
|
||||
limit: 25
|
||||
created: {"gte": 1704067200}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| **Search query syntax** | `STRIPE_GET_V1_CUSTOMERS_SEARCH_CUSTOMERS` requires field-prefixed queries (e.g., `email:'x'`). Bare strings without field prefixes are invalid and will error. |
|
||||
| **Subscription payment method** | `default_payment_method` is not required if using `trial_period_days` or `collection_method='send_invoice'`. Otherwise, the subscription may fail to activate. |
|
||||
| **Payment method attachment** | A `PaymentMethod` must be in a detached state before attaching to a customer. Already-attached methods will error. |
|
||||
| **Pagination cursors** | Use `starting_after`/`ending_before` with object IDs, not page numbers. Extract the last/first object ID from each response. |
|
||||
| **Balance amounts in cents** | All monetary amounts are in the smallest currency unit (e.g., cents for USD). 1000 = $10.00. |
|
||||
| **Subscription status default** | `GET_CUSTOMERS_CUSTOMER_SUBSCRIPTIONS` excludes canceled subscriptions by default. Pass `status: "all"` to include them. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Braintree-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `braintree` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `STRIPE_CREATE_CUSTOMER` | Create a new customer |
|
||||
| `STRIPE_GET_CUSTOMERS_CUSTOMER` | Retrieve a customer by ID |
|
||||
| `STRIPE_POST_CUSTOMERS_CUSTOMER` | Update an existing customer |
|
||||
| `STRIPE_LIST_CUSTOMERS` | List customers with pagination |
|
||||
| `STRIPE_GET_V1_CUSTOMERS_SEARCH_CUSTOMERS` | Search customers by attributes |
|
||||
| `STRIPE_CREATE_SUBSCRIPTION` | Create a subscription for a customer |
|
||||
| `STRIPE_GET_CUSTOMERS_CUSTOMER_SUBSCRIPTIONS` | List customer subscriptions |
|
||||
| `STRIPE_GET_CUSTOMERS_CUSTOMER_SUBS_SUB_EXPOSED_ID` | Get a specific subscription |
|
||||
| `STRIPE_GET_CUSTOMERS_CUSTOMER_PAYMENT_METHODS` | List customer payment methods |
|
||||
| `STRIPE_ATTACH_PAYMENT_METHOD` | Attach payment method to customer |
|
||||
| `STRIPE_GET_CUSTOMERS_CUSTOMER_BALANCE_TRANSACTIONS` | List customer balance transactions |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,177 @@
|
||||
---
|
||||
name: capsule-crm-automation
|
||||
description: "Automate Capsule CRM tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Capsule CRM Automation
|
||||
description: "Automate Capsule CRM operations -- manage contacts (parties), run structured filter queries, track tasks and projects, log entries, and handle organizations -- using natural language through the Composio MCP integration."
|
||||
category: crm
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Capsule CRM Automation via Rube MCP
|
||||
# Capsule CRM Automation
|
||||
|
||||
Automate Capsule CRM operations through Composio's Capsule CRM toolkit via Rube MCP.
|
||||
Manage your Capsule CRM -- create and update contacts, run powerful filter queries on parties/opportunities/cases, track tasks and projects, browse activity entries, and organize team relationships -- all through natural language commands.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/capsule_crm](https://composio.dev/toolkits/capsule_crm)
|
||||
**Toolkit docs:** [composio.dev/toolkits/capsule_crm](https://composio.dev/toolkits/capsule_crm)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Capsule CRM connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `capsule_crm`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Capsule CRM account when prompted (OAuth authentication).
|
||||
3. Start issuing natural language commands to manage your CRM.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `capsule_crm`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Run Structured Filter Queries
|
||||
Query parties, opportunities, or cases (projects) with multiple filter conditions, operators, and sorting.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Capsule CRM operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
**Tool:** `CAPSULE_CRM_RUN_FILTER_QUERY`
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Example prompt:**
|
||||
> "Find all Capsule CRM contacts in California tagged as 'VIP' sorted by name"
|
||||
|
||||
## Core Workflow Pattern
|
||||
**Key parameters:**
|
||||
- `entity` (required) -- One of: `parties`, `opportunities`, `kases`
|
||||
- `filter` (required) -- Filter object with:
|
||||
- `conditions` -- Array of conditions, each with:
|
||||
- `field` -- Field name (e.g., "name", "email", "state", "country", "tag", "owner", "jobTitle", "addedOn")
|
||||
- `operator` -- One of: "is", "is not", "starts with", "ends with", "contains", "is greater than", "is less than", "is after", "is before", "is older than", "is within last", "is within next"
|
||||
- `value` -- Value to compare against
|
||||
- `orderBy` -- Array of sort objects with `field` and `direction` ("ascending"/"descending")
|
||||
- `embed` -- Additional data to include in response
|
||||
- `page` / `perPage` -- Pagination (max 100 per page)
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
**Important field notes:**
|
||||
- Address fields (`city`, `state`, `country`, `zip`) are top-level, NOT nested under "address"
|
||||
- Country must be an ISO 3166-1 alpha-2 code (e.g., "US", "GB", "CA")
|
||||
- Custom fields use `custom:{fieldId}` format
|
||||
- Organization fields use `org.` prefix (e.g., `org.name`, `org.tag`)
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Capsule CRM task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. List and Manage Contacts (Parties)
|
||||
Retrieve all contacts with optional filtering by modification date and embedded related data.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["capsule_crm"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Tool:** `CAPSULE_CRM_LIST_PARTIES`
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Example prompt:**
|
||||
> "List all Capsule CRM contacts modified since January 2025 with their tags and organizations"
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Key parameters:**
|
||||
- `since` -- ISO8601 date to filter contacts changed after this date
|
||||
- `embed` -- Additional data: "tags", "fields", "organisation", "missingImportantFields"
|
||||
- `page` / `perPage` -- Pagination (max 100 per page, default 50)
|
||||
|
||||
---
|
||||
|
||||
### 3. Create New Contacts
|
||||
Add people or organizations to your Capsule CRM with full details including emails, phones, addresses, tags, and custom fields.
|
||||
|
||||
**Tool:** `CAPSULE_CRM_CREATE_PARTY`
|
||||
|
||||
**Example prompt:**
|
||||
> "Create a new person in Capsule CRM: John Smith, VP of Sales at Acme Corp, john@acme.com"
|
||||
|
||||
**Key parameters:**
|
||||
- `type` (required) -- "person" or "organisation"
|
||||
- For persons: `firstName`, `lastName`, `jobTitle`, `title`
|
||||
- For organisations: `name`
|
||||
- `emailAddresses` -- Array of `{address, type}` objects
|
||||
- `phoneNumbers` -- Array of `{number, type}` objects
|
||||
- `addresses` -- Array of address objects with `street`, `city`, `state`, `country`, `zip`, `type` (Home/Postal/Office/Billing/Shipping)
|
||||
- `organisation` -- Link to org by `{id}` or `{name}` (creates if not found)
|
||||
- `tags` -- Array of tags by `{name}` or `{id}`
|
||||
- `fields` -- Custom field values with `{definition, value}`
|
||||
- `websites` -- Array of `{address, service, type}` objects
|
||||
- `owner` -- Assign owner user `{id}`
|
||||
|
||||
---
|
||||
|
||||
### 4. Update Existing Contacts
|
||||
Modify any aspect of a party record including adding/removing emails, phones, tags, and custom fields.
|
||||
|
||||
**Tool:** `CAPSULE_CRM_UPDATE_PARTY`
|
||||
|
||||
**Example prompt:**
|
||||
> "Update Capsule CRM party 11587: add a work email john.new@acme.com and remove tag 'prospect'"
|
||||
|
||||
**Key parameters:**
|
||||
- `partyId` (required) -- Integer ID of the party to update
|
||||
- `party` (required) -- Object with fields to update. Supports:
|
||||
- All creation fields (name, emails, phones, addresses, etc.)
|
||||
- `_delete: true` on sub-items to remove them (requires the item's `id`)
|
||||
- Tags: add by `{name}` or remove with `{id, _delete: true}`
|
||||
|
||||
---
|
||||
|
||||
### 5. Track Tasks
|
||||
List tasks with filtering by status and embedded related data.
|
||||
|
||||
**Tool:** `CAPSULE_CRM_LIST_TASKS`
|
||||
|
||||
**Example prompt:**
|
||||
> "Show all open tasks in Capsule CRM with their linked parties and owners"
|
||||
|
||||
**Key parameters:**
|
||||
- `status` -- Filter by status: "open", "completed", "pending" (array)
|
||||
- `embed` -- Additional data: "party", "opportunity", "kase", "owner", "nextTask"
|
||||
- `page` / `perPage` -- Pagination (max 100 per page, default 50)
|
||||
|
||||
---
|
||||
|
||||
### 6. Browse Projects and Activity Entries
|
||||
List projects (cases) and recent activity entries including notes, emails, and completed tasks.
|
||||
|
||||
**Tools:** `CAPSULE_CRM_LIST_PROJECTS`, `CAPSULE_CRM_LIST_ENTRIES_BY_DATE`
|
||||
|
||||
**Example prompt:**
|
||||
> "Show all open projects in Capsule CRM" / "Show recent activity entries with party details"
|
||||
|
||||
**Key parameters for projects:**
|
||||
- `status` -- Filter by "OPEN" or "CLOSED"
|
||||
- `search` -- Search term for project names/descriptions
|
||||
- `since` -- ISO8601 date for modifications after this date
|
||||
- `embed` -- "tags,fields,party,opportunity,missingImportantFields"
|
||||
|
||||
**Key parameters for entries:**
|
||||
- `embed` -- "party", "kase", "opportunity", "creator", "activityType"
|
||||
- `page` / `perPage` -- Pagination (max 100 per page)
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Address fields are top-level**: When filtering, use `state`, `city`, `country`, `zip` directly -- NOT `address.state` or nested syntax.
|
||||
- **Country codes are ISO alpha-2**: Filter by "US", "GB", "CA" -- not "United States" or "United Kingdom".
|
||||
- **Custom fields use special syntax**: Reference custom fields as `custom:{fieldId}` in filter conditions. For org-level custom fields, use `org.custom:{fieldId}`.
|
||||
- **Projects are called "kases" in the API**: Despite being "projects" in the UI, the API entity type is `kases`. Use `kases` in filter queries.
|
||||
- **Delete operations require item IDs**: When updating a party to remove sub-items (emails, phones, tags), you must include the item's `id` along with `_delete: true`. List the party first to get sub-item IDs.
|
||||
- **Pagination defaults to 50**: All list endpoints default to 50 items per page with a max of 100. Always implement pagination for complete data retrieval.
|
||||
- **Embed values vary by entity**: Not all embed options work for all entities. Check the documentation for supported embed values per endpoint.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Capsule CRM-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `capsule_crm` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Required Params |
|
||||
|---|---|---|
|
||||
| Run filter query | `CAPSULE_CRM_RUN_FILTER_QUERY` | `entity`, `filter` |
|
||||
| List contacts | `CAPSULE_CRM_LIST_PARTIES` | None (optional filters) |
|
||||
| Create contact | `CAPSULE_CRM_CREATE_PARTY` | `type` |
|
||||
| Update contact | `CAPSULE_CRM_UPDATE_PARTY` | `partyId`, `party` |
|
||||
| Delete contact | `CAPSULE_CRM_DELETE_PARTY` | `party_id` |
|
||||
| List tasks | `CAPSULE_CRM_LIST_TASKS` | None (optional filters) |
|
||||
| List projects | `CAPSULE_CRM_LIST_PROJECTS` | None (optional filters) |
|
||||
| List activity entries | `CAPSULE_CRM_LIST_ENTRIES_BY_DATE` | None (optional filters) |
|
||||
| List org employees | `CAPSULE_CRM_LIST_ORG_EMPLOYEES` | Organisation ID |
|
||||
| List deleted opportunities | `CAPSULE_CRM_LIST_DELETED_OPPORTUNITIES` | `since` |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,147 @@
|
||||
---
|
||||
name: clockify-automation
|
||||
description: "Automate Clockify tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Clockify Automation
|
||||
description: "Automate time tracking workflows in Clockify -- create and manage time entries, workspaces, and users through natural language commands."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Clockify Automation via Rube MCP
|
||||
# Clockify Automation
|
||||
|
||||
Automate Clockify operations through Composio's Clockify toolkit via Rube MCP.
|
||||
Automate your Clockify time tracking operations directly from Claude Code. Log time entries, query historical data, manage workspaces, and audit team activity -- all without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/clockify](https://composio.dev/toolkits/clockify)
|
||||
**Toolkit docs:** [composio.dev/toolkits/clockify](https://composio.dev/toolkits/clockify)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Clockify connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `clockify`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your Claude Code config with URL: `https://rube.app/mcp`
|
||||
2. When prompted, authenticate your Clockify account through the connection link provided
|
||||
3. Start automating your time tracking workflows with natural language
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `clockify`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Create Time Entries
|
||||
|
||||
Log time with project, task, and tag associations, plus billable status.
|
||||
|
||||
**Tool:** `CLOCKIFY_CREATE_TIME_ENTRY`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Clockify operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Log 2 hours of work on project 64a687e2 in workspace 64a687e3 starting at 9am UTC today with description "API development"
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Key parameters:
|
||||
- `workspaceId` (required) -- workspace where the entry is created
|
||||
- `start` (required) -- ISO 8601 start time (e.g., `2026-02-11T09:00:00Z`)
|
||||
- `end` -- ISO 8601 end time; omit to create a running timer
|
||||
- `projectId` -- associate with a project
|
||||
- `taskId` -- associate with a task
|
||||
- `description` -- work description (0-3000 chars)
|
||||
- `tagIds` -- array of tag IDs
|
||||
- `billable` -- whether the entry is billable
|
||||
- `customFieldValues` -- array of custom field entries with `customFieldId` and `value`
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Query Time Entries
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Retrieve historical time entries for reporting, auditing, and invoicing.
|
||||
|
||||
**Tool:** `CLOCKIFY_GET_TIME_ENTRIES`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Clockify task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Get all time entries for user abc123 in workspace xyz789 from January 2026
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
Key parameters:
|
||||
- `workspaceId` (required) -- workspace to query
|
||||
- `userId` (required) -- user whose entries to retrieve
|
||||
- `start` / `end` -- ISO 8601 date range filters
|
||||
- `project` -- filter by project ID
|
||||
- `task` -- filter by task ID
|
||||
- `tags` -- comma-separated tag IDs
|
||||
- `description` -- text filter (partial match)
|
||||
- `hydrated` -- set `true` to get full project/task/tag objects instead of just IDs
|
||||
- `in-progress` -- set `true` to return only the running timer
|
||||
- `page` / `page-size` -- pagination (default 50 per page)
|
||||
|
||||
### 3. Delete Time Entries
|
||||
|
||||
Remove erroneous, duplicate, or cancelled time entries.
|
||||
|
||||
**Tool:** `CLOCKIFY_DELETE_TIME_ENTRY`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["clockify"]
|
||||
session_id: "your_session_id"
|
||||
Delete time entry 5b715448 from workspace 64a687e3
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
- Requires `workspaceId` and `id` (the time entry ID)
|
||||
- Use for cleanup of bad imports or duplicates
|
||||
|
||||
### 4. Manage Workspaces
|
||||
|
||||
List all workspaces the authenticated user belongs to.
|
||||
|
||||
**Tool:** `CLOCKIFY_GET_ALL_MY_WORKSPACES`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Show me all my Clockify workspaces
|
||||
```
|
||||
|
||||
- Optional `roles` filter -- array of roles like `["WORKSPACE_ADMIN", "OWNER"]`
|
||||
- Use this to discover workspace IDs before creating or querying entries
|
||||
|
||||
### 5. User Information
|
||||
|
||||
Retrieve current user details and list workspace members.
|
||||
|
||||
**Tools:** `CLOCKIFY_GET_CURRENTLY_LOGGED_IN_USER_INFO`, `CLOCKIFY_FIND_ALL_USERS_ON_WORKSPACE`
|
||||
|
||||
```
|
||||
Who am I logged in as? Then list all users in workspace 64a687e3
|
||||
```
|
||||
|
||||
- `CLOCKIFY_GET_CURRENTLY_LOGGED_IN_USER_INFO` returns the authenticated user's profile (no parameters needed)
|
||||
- `CLOCKIFY_FIND_ALL_USERS_ON_WORKSPACE` requires `workspaceId`; supports `name`, `email` filters and pagination (`page`, `page-size` max 100)
|
||||
|
||||
### 6. Running Timer Management
|
||||
|
||||
Start a timer by omitting `end` in create, or check for running entries.
|
||||
|
||||
**Tools:** `CLOCKIFY_CREATE_TIME_ENTRY`, `CLOCKIFY_GET_TIME_ENTRIES`
|
||||
|
||||
```
|
||||
Start a timer on project abc in workspace xyz with description "Working on bug fix"
|
||||
```
|
||||
|
||||
- Create without `end` to start a running timer
|
||||
- Use `CLOCKIFY_GET_TIME_ENTRIES` with `in-progress: true` to check if a timer is running
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Workspace and user IDs are required:** Most Clockify tools require both `workspaceId` and `userId`. Always call `CLOCKIFY_GET_ALL_MY_WORKSPACES` and `CLOCKIFY_GET_CURRENTLY_LOGGED_IN_USER_INFO` first to resolve these IDs.
|
||||
- **ISO 8601 timestamps:** All time parameters must be in ISO 8601 format with timezone (e.g., `2026-02-11T09:00:00Z`). Omitting the timezone causes unpredictable behavior.
|
||||
- **Running timers:** Only one timer can run at a time. Creating a new entry without `end` will fail if another timer is already active. Stop the existing timer first.
|
||||
- **Pagination defaults:** `CLOCKIFY_GET_TIME_ENTRIES` defaults to 50 entries per page. For full exports, loop through pages until no more results are returned.
|
||||
- **Tag IDs are workspace-scoped:** Tag IDs from one workspace cannot be used in another. Always resolve tags within the target workspace context.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Clockify-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `clockify` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `CLOCKIFY_CREATE_TIME_ENTRY` | Create a time entry or start a timer (requires `workspaceId`, `start`) |
|
||||
| `CLOCKIFY_GET_TIME_ENTRIES` | List time entries with filters (requires `workspaceId`, `userId`) |
|
||||
| `CLOCKIFY_DELETE_TIME_ENTRY` | Delete a time entry (requires `workspaceId`, `id`) |
|
||||
| `CLOCKIFY_GET_ALL_MY_WORKSPACES` | List all workspaces for the authenticated user |
|
||||
| `CLOCKIFY_GET_CURRENTLY_LOGGED_IN_USER_INFO` | Get current user profile info |
|
||||
| `CLOCKIFY_FIND_ALL_USERS_ON_WORKSPACE` | List all users in a workspace (requires `workspaceId`) |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,185 @@
|
||||
---
|
||||
name: cloudinary-automation
|
||||
description: "Automate Cloudinary tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Cloudinary Automation
|
||||
description: "Automate Cloudinary media management including folder organization, upload presets, asset lookup, transformations, and usage monitoring through natural language commands"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Cloudinary Automation via Rube MCP
|
||||
# Cloudinary Automation
|
||||
|
||||
Automate Cloudinary operations through Composio's Cloudinary toolkit via Rube MCP.
|
||||
Automate Cloudinary media management workflows -- create folders, configure upload presets, look up assets, manage transformations, search folders, and monitor usage -- all through natural language.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/cloudinary](https://composio.dev/toolkits/cloudinary)
|
||||
**Toolkit docs:** [composio.dev/toolkits/cloudinary](https://composio.dev/toolkits/cloudinary)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Cloudinary connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `cloudinary`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your environment: `https://rube.app/mcp`
|
||||
2. Connect your Cloudinary account when prompted (API key auth via Composio)
|
||||
3. Start issuing natural language commands for Cloudinary automation
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `cloudinary`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Organize Assets with Folders
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Cloudinary operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Create folder structures for organizing hosted images, videos, and raw files.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `CLOUDINARY_CREATE_FOLDER`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `folder` -- full path of the new asset folder (required), e.g., `images/events/2023`
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Supporting tools:
|
||||
- `CLOUDINARY_SEARCH_FOLDERS` -- search folders by name, path, or creation date using Lucene-like expressions
|
||||
- `expression` -- search filter (e.g., `name:sample AND path:events`)
|
||||
- `max_results` -- 1-500 results (default 50)
|
||||
- `sort_by` -- list of sort objects (e.g., `[{"created_at": "desc"}]`)
|
||||
- `next_cursor` -- pagination cursor
|
||||
- `CLOUDINARY_GET_RESOURCES_BY_ASSET_FOLDER` -- list assets within a specific folder
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Cloudinary task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
Example prompt:
|
||||
> "Create a folder called 'marketing/campaigns/spring-2026' in Cloudinary"
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["cloudinary"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
### 2. Configure Upload Presets
|
||||
|
||||
### Step 3: Execute Tools
|
||||
Define centralized upload behavior including target folder, allowed formats, transformations, tags, and overwrite rules.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Tool:** `CLOUDINARY_CREATE_UPLOAD_PRESET`
|
||||
|
||||
Key parameters:
|
||||
- `name` -- preset name (auto-generated if omitted)
|
||||
- `folder` -- target folder path for uploads (e.g., `samples/`)
|
||||
- `allowed_formats` -- comma-separated list (e.g., `jpg,png,webp`)
|
||||
- `tags` -- comma-separated tags to apply (e.g., `marketing,thumbnail`)
|
||||
- `transformation` -- incoming transformation (e.g., `c_limit,w_500`)
|
||||
- `eager` -- eager transformations to generate on upload (e.g., `c_fill,g_face,h_150,w_150`)
|
||||
- `unsigned` -- allow unsigned uploads (`true`/`false`)
|
||||
- `overwrite` -- overwrite existing assets with same public_id (cannot be `true` when `unsigned=true`)
|
||||
- `resource_type` -- `image`, `video`, or `raw` (default `image`)
|
||||
- `unique_filename` -- append random suffix to avoid collisions (default `true`)
|
||||
- `use_filename` -- use original filename (default `false`)
|
||||
- `moderation` -- moderation type: `manual`, `webpurify`, `aws_rek`, etc.
|
||||
- `auto_tagging` -- confidence threshold 0.0-1.0 for AI auto-tagging
|
||||
- `notification_url` -- webhook URL for upload notifications
|
||||
|
||||
Example prompt:
|
||||
> "Create an upload preset called 'product-images' that only allows JPG and PNG, stores in 'products/' folder, and auto-tags with 0.7 confidence"
|
||||
|
||||
---
|
||||
|
||||
### 3. Look Up Asset Details
|
||||
|
||||
Retrieve full details for a specific asset by its public ID, including metadata, derived assets, and related resources.
|
||||
|
||||
**Tool:** `CLOUDINARY_GET_RESOURCE_BY_PUBLIC_ID`
|
||||
|
||||
Key parameters:
|
||||
- `public_id` -- the asset's public ID (required)
|
||||
- `resource_type` -- `image`, `video`, or `raw` (required)
|
||||
- `type` -- delivery type: `upload`, `private`, `authenticated`, `fetch`, etc. (required)
|
||||
- `colors` -- include color histogram and predominant colors
|
||||
- `faces` -- include detected face coordinates
|
||||
- `media_metadata` -- include IPTC, XMP, and detailed metadata
|
||||
- `quality_analysis` -- include quality analysis scores
|
||||
- `phash` -- include perceptual hash for similarity detection
|
||||
- `versions` -- include backed-up versions
|
||||
- `related` -- include related assets
|
||||
- `max_results` -- max derived/related assets to return (1-500)
|
||||
|
||||
Example prompt:
|
||||
> "Get full details for the image 'products/hero-banner' including color analysis and quality scores"
|
||||
|
||||
---
|
||||
|
||||
### 4. Manage Transformations and Derived Assets
|
||||
|
||||
List existing transformations, apply eager transformations to uploaded assets, and clean up derived resources.
|
||||
|
||||
**Tools:**
|
||||
- `CLOUDINARY_GET_TRANSFORMATIONS` -- list all named and unnamed transformations
|
||||
- `max_results` -- 1-500 (default 10)
|
||||
- `next_cursor` -- pagination cursor
|
||||
- `CLOUDINARY_EXPLICIT_RESOURCE` -- update an existing asset: pre-generate transformations, update metadata, move to new folders, or modify tags
|
||||
- `public_id` -- target asset (required)
|
||||
- `eager` -- list of transformation strings to pre-generate (e.g., `["c_fill,w_300,h_200", "c_thumb,w_100,h_100,g_face"]`)
|
||||
- `eager_async` -- generate transformations asynchronously
|
||||
- `tags` -- replace existing tags
|
||||
- `asset_folder` -- move asset to a new folder
|
||||
- `display_name` -- set display name
|
||||
- `context` -- key-value metadata (e.g., `{"alt": "Mountain view"}`)
|
||||
- `invalidate` -- invalidate CDN cache (takes up to 1 hour)
|
||||
- `CLOUDINARY_DELETE_DERIVED_RESOURCES` -- delete specific derived assets by IDs (up to 100 per call)
|
||||
|
||||
Example prompt:
|
||||
> "Pre-generate a 300x200 fill crop and a 100x100 face-detection thumbnail for asset 'products/hero-banner'"
|
||||
|
||||
---
|
||||
|
||||
### 5. Monitor Usage and Configuration
|
||||
|
||||
Check account-level usage limits, environment configuration, and tag inventory.
|
||||
|
||||
**Tools:**
|
||||
- `CLOUDINARY_GET_USAGE` -- monitor storage, bandwidth, requests, and quota limits
|
||||
- `CLOUDINARY_GET_CONFIG` -- fetch environment config details
|
||||
- `settings` -- set to `true` to include configuration settings like `folder_mode`
|
||||
- `CLOUDINARY_GET_TAGS` -- list all tags for a resource type
|
||||
|
||||
Example prompt:
|
||||
> "Show me my Cloudinary account usage and remaining quota"
|
||||
|
||||
---
|
||||
|
||||
### 6. Set Up Webhook Triggers
|
||||
|
||||
Create webhook notifications for specific Cloudinary events.
|
||||
|
||||
**Tool:** `CLOUDINARY_CREATE_TRIGGER`
|
||||
|
||||
Use to receive callbacks when uploads complete, transformations finish, or other events occur.
|
||||
|
||||
Example prompt:
|
||||
> "Create a webhook trigger that notifies https://my-app.com/hook on upload events"
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| Folder creation idempotency | `CLOUDINARY_CREATE_FOLDER` may error or no-op if the path already exists -- design idempotent folder naming |
|
||||
| Preset-upload alignment | Upload preset options like `allowed_formats`, `folder`, and `unsigned` must match the actual upload method or uploads will be rejected |
|
||||
| Strict asset lookup | `CLOUDINARY_GET_RESOURCE_BY_PUBLIC_ID` fails if any of `resource_type`, `type`, or `public_id` is incorrect, even when the asset exists |
|
||||
| Folder path sensitivity | `CLOUDINARY_GET_RESOURCES_BY_ASSET_FOLDER` only lists assets in the exact folder specified; typos return empty results |
|
||||
| Quota blocking | `CLOUDINARY_GET_USAGE` reflects account-level limits -- hitting caps silently blocks uploads until usage is checked and addressed |
|
||||
| CDN invalidation delay | Setting `invalidate=true` on `CLOUDINARY_EXPLICIT_RESOURCE` takes up to 1 hour to propagate |
|
||||
| Unsigned vs overwrite conflict | Cannot set `overwrite=true` when `unsigned=true` in upload presets |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Cloudinary-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `cloudinary` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Key Params |
|
||||
|--------|-----------|------------|
|
||||
| Create folder | `CLOUDINARY_CREATE_FOLDER` | `folder` |
|
||||
| Search folders | `CLOUDINARY_SEARCH_FOLDERS` | `expression`, `max_results` |
|
||||
| List folder assets | `CLOUDINARY_GET_RESOURCES_BY_ASSET_FOLDER` | folder path |
|
||||
| Create upload preset | `CLOUDINARY_CREATE_UPLOAD_PRESET` | `name`, `folder`, `allowed_formats`, `tags` |
|
||||
| Get asset details | `CLOUDINARY_GET_RESOURCE_BY_PUBLIC_ID` | `public_id`, `resource_type`, `type` |
|
||||
| List transformations | `CLOUDINARY_GET_TRANSFORMATIONS` | `max_results`, `next_cursor` |
|
||||
| Update/transform asset | `CLOUDINARY_EXPLICIT_RESOURCE` | `public_id`, `eager`, `tags` |
|
||||
| Delete derived assets | `CLOUDINARY_DELETE_DERIVED_RESOURCES` | `derived_resource_ids` |
|
||||
| Get usage | `CLOUDINARY_GET_USAGE` | (none) |
|
||||
| Get config | `CLOUDINARY_GET_CONFIG` | `settings` |
|
||||
| List tags | `CLOUDINARY_GET_TAGS` | resource_type |
|
||||
| Create webhook | `CLOUDINARY_CREATE_TRIGGER` | event type, URL |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,110 @@
|
||||
---
|
||||
name: coinbase-automation
|
||||
description: "Automate Coinbase tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Coinbase Automation
|
||||
description: "Coinbase Automation: list and manage cryptocurrency wallets, accounts, and portfolio data via Coinbase CDP SDK"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Coinbase Automation via Rube MCP
|
||||
# Coinbase Automation
|
||||
|
||||
Automate Coinbase operations through Composio's Coinbase toolkit via Rube MCP.
|
||||
Automate Coinbase operations including listing cryptocurrency wallets, paginating through wallet collections, and retrieving portfolio data.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/coinbase](https://composio.dev/toolkits/coinbase)
|
||||
**Toolkit docs:** [composio.dev/toolkits/coinbase](https://composio.dev/toolkits/coinbase)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Coinbase connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `coinbase`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
This skill requires the **Rube MCP server** connected at `https://rube.app/mcp`.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `coinbase`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
Before executing any tools, ensure an active connection exists for the `coinbase` toolkit. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.
|
||||
|
||||
## Tool Discovery
|
||||
---
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. List All Wallets
|
||||
|
||||
Retrieve all wallets from Coinbase with pagination support.
|
||||
|
||||
**Tool:** `COINBASE_LIST_WALLETS`
|
||||
|
||||
**Key Parameters:**
|
||||
- `limit` -- Results per page (1--100, default: 25)
|
||||
- `order` -- Sort order: `"asc"` (ascending) or `"desc"` (descending, default)
|
||||
- `starting_after` -- Cursor for forward pagination: ID of the last wallet from the previous page
|
||||
- `ending_before` -- Cursor for backward pagination: ID of the first wallet from the previous page
|
||||
|
||||
**Example (first page):**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Coinbase operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: COINBASE_LIST_WALLETS
|
||||
Arguments:
|
||||
limit: 50
|
||||
order: "desc"
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
**Example (next page):**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Coinbase task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: COINBASE_LIST_WALLETS
|
||||
Arguments:
|
||||
limit: 50
|
||||
order: "desc"
|
||||
starting_after: "wallet_abc123_last_id_from_prev_page"
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["coinbase"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
### 2. Paginate Through All Wallets
|
||||
|
||||
### Step 3: Execute Tools
|
||||
To retrieve a complete wallet inventory, iterate through pages.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Steps:**
|
||||
1. Call `COINBASE_LIST_WALLETS` with desired `limit` and `order`
|
||||
2. If the response contains more results, note the ID of the last wallet returned
|
||||
3. Call `COINBASE_LIST_WALLETS` again with `starting_after` set to that last wallet ID
|
||||
4. Repeat until no more results are returned
|
||||
|
||||
---
|
||||
|
||||
### 3. Audit Wallet Portfolio
|
||||
|
||||
Retrieve wallet data for portfolio analysis and reporting.
|
||||
|
||||
**Steps:**
|
||||
1. Call `COINBASE_LIST_WALLETS` with `limit: 100` to maximize per-page results
|
||||
2. Collect wallet balances and metadata from each page
|
||||
3. Aggregate data across all pages for a complete portfolio view
|
||||
|
||||
---
|
||||
|
||||
### 4. Monitor Wallet Changes
|
||||
|
||||
Periodically list wallets to detect new additions or changes.
|
||||
|
||||
**Steps:**
|
||||
1. Call `COINBASE_LIST_WALLETS` with `order: "desc"` to get newest wallets first
|
||||
2. Compare against previously stored wallet IDs to identify new entries
|
||||
3. Schedule periodic checks for continuous monitoring
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| **Pagination required** | Wallet lists are paginated. Always check for additional pages using cursor-based pagination (`starting_after`/`ending_before`). |
|
||||
| **Limit bounds** | The `limit` parameter accepts 1--100. Values outside this range cause errors. Default is 25. |
|
||||
| **Cursor-based pagination** | Uses wallet IDs as cursors, not page numbers. You must extract the last/first wallet ID from each response to navigate pages. |
|
||||
| **CDP SDK scope** | This tool uses the Coinbase CDP SDK. Available operations depend on the API key permissions granted during connection setup. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Coinbase-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `coinbase` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `COINBASE_LIST_WALLETS` | List cryptocurrency wallets with pagination |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,106 @@
|
||||
---
|
||||
name: contentful-automation
|
||||
description: "Automate Contentful tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Contentful Automation
|
||||
description: "Automate headless CMS operations in Contentful -- list spaces, retrieve space metadata, and update space configurations through the Composio Contentful integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Contentful Automation via Rube MCP
|
||||
# Contentful Automation
|
||||
|
||||
Automate Contentful operations through Composio's Contentful toolkit via Rube MCP.
|
||||
Manage your **Contentful** headless CMS spaces directly from Claude Code. List spaces, retrieve metadata, and update space configurations without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/contentful](https://composio.dev/toolkits/contentful)
|
||||
**Toolkit docs:** [composio.dev/toolkits/contentful](https://composio.dev/toolkits/contentful)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Contentful connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `contentful`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Contentful account when prompted. The agent will provide an authentication link. Ensure your access token has space management scopes.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `contentful`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List All Spaces
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Contentful operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Discover all Contentful spaces accessible to your authenticated account. This is typically the first operation since most other actions require a `space_id`.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `CONTENTFUL_LIST_SPACES`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `limit` (1-1000) -- maximum number of spaces to return (default: 100)
|
||||
- `skip` -- number of spaces to skip for pagination
|
||||
- `order` -- sort by field, e.g., `sys.createdAt` or `-sys.createdAt` for descending
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Example prompt: *"List all my Contentful spaces"*
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Contentful task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. Get Space Details
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["contentful"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Retrieve detailed metadata for a specific space including its current `sys.version`, which is required for updates.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tool:** `CONTENTFUL_GET_SPACE`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Key parameters:
|
||||
- `space_id` (required) -- the ID of the space to retrieve (alphanumeric, 1-64 chars)
|
||||
|
||||
Example prompt: *"Get details for Contentful space abc123def"*
|
||||
|
||||
---
|
||||
|
||||
### 3. Update Space Name
|
||||
|
||||
Update the name of a specific space. Requires the current version number for optimistic locking to prevent concurrent modification conflicts.
|
||||
|
||||
**Tool:** `CONTENTFUL_UPDATE_SPACE`
|
||||
|
||||
Key parameters:
|
||||
- `space_id` (required) -- ID of the space to update
|
||||
- `name` (required) -- new name for the space (1-255 chars)
|
||||
- `version` (required) -- current space version from `sys.version` (must be > 0)
|
||||
|
||||
Example prompt: *"Rename Contentful space abc123def to 'Production Content Hub'"*
|
||||
|
||||
---
|
||||
|
||||
### 4. Audit Space Inventory
|
||||
|
||||
Combine space listing and detail retrieval to audit your organization's Contentful spaces.
|
||||
|
||||
**Tools:** `CONTENTFUL_LIST_SPACES` then `CONTENTFUL_GET_SPACE`
|
||||
|
||||
Workflow:
|
||||
1. List all spaces to get IDs and names
|
||||
2. Fetch details for each space to get version info, creation dates, and metadata
|
||||
|
||||
Example prompt: *"Audit all Contentful spaces -- list them with their creation dates and current versions"*
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Version conflicts on update:** `CONTENTFUL_UPDATE_SPACE` requires the latest `sys.version` from `CONTENTFUL_GET_SPACE`. If someone else modified the space between your read and write, the update will fail with a version conflict. Always fetch the space immediately before updating.
|
||||
- **Pagination for many spaces:** `CONTENTFUL_LIST_SPACES` uses `limit` and `skip` parameters. When you have many spaces, iterate by incrementing `skip` until no more results are returned to avoid missing spaces.
|
||||
- **Scope limitations:** These tools only manage space-level metadata (names). They cannot create or modify entries, content types, or assets within a space.
|
||||
- **Auth/permissions mismatch:** Updates via `CONTENTFUL_UPDATE_SPACE` will fail if your token lacks space management scopes, even if reads via `CONTENTFUL_GET_SPACE` succeed. Verify your token has write permissions.
|
||||
- **Space ID format:** The `space_id` must match the pattern `^[a-zA-Z0-9-_.]{1,64}$`. Invalid characters will be rejected.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Contentful-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `contentful` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `CONTENTFUL_LIST_SPACES` | List all spaces accessible to your account |
|
||||
| `CONTENTFUL_GET_SPACE` | Retrieve detailed metadata for a single space |
|
||||
| `CONTENTFUL_UPDATE_SPACE` | Update the name of a space (requires version) |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,153 @@
|
||||
---
|
||||
name: customerio-automation
|
||||
description: "Automate Customerio tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Customer.io Automation
|
||||
description: "Automate customer engagement workflows including broadcast triggers, message analytics, segment management, and newsletter tracking through Customer.io via Composio"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Customerio Automation via Rube MCP
|
||||
# Customer.io Automation
|
||||
|
||||
Automate Customerio operations through Composio's Customerio toolkit via Rube MCP.
|
||||
Automate customer engagement operations -- trigger targeted broadcasts, retrieve delivery metrics, manage audience segments, list newsletters and transactional templates, and inspect trigger execution history -- all orchestrated through the Composio MCP integration.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/customerio](https://composio.dev/toolkits/customerio)
|
||||
**Toolkit docs:** [composio.dev/toolkits/customerio](https://composio.dev/toolkits/customerio)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Customerio connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `customerio`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Connect your Customer.io account through the Composio MCP server at `https://rube.app/mcp`
|
||||
2. The agent will prompt you with an authentication link if no active connection exists
|
||||
3. Once connected, all `CUSTOMERIO_*` tools become available for execution
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `customerio`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Trigger a Broadcast
|
||||
Manually fire a pre-configured broadcast to a specific audience with personalization data.
|
||||
|
||||
**Tool:** `CUSTOMERIO_TRIGGER_BROADCAST`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `broadcast_id` | integer | Yes | Broadcast ID from Customer.io Triggering Details |
|
||||
| `ids` | array | No | List of customer IDs to target |
|
||||
| `emails` | array | No | List of email addresses to target |
|
||||
| `recipients` | object | No | Complex filter with `and`/`or`/`not`/`segment` operators |
|
||||
| `per_user_data` | array | No | Per-user personalization with `id`/`email` + `data` |
|
||||
| `data` | object | No | Global key-value data for Liquid template personalization |
|
||||
| `data_file_url` | string | No | URL to JSON file with per-line user data |
|
||||
| `email_add_duplicates` | boolean | No | Allow duplicate recipients (default: false) |
|
||||
| `email_ignore_missing` | boolean | No | Skip people without emails (default: false) |
|
||||
| `id_ignore_missing` | boolean | No | Skip people without customer IDs (default: false) |
|
||||
|
||||
**Important:** Provide exactly ONE audience option: `recipients`, `ids`, `emails`, `per_user_data`, or `data_file_url`. Rate limit: 1 request per 10 seconds per broadcast.
|
||||
|
||||
---
|
||||
|
||||
### 2. Retrieve Message Delivery Metrics
|
||||
Fetch paginated delivery metrics for messages with filtering by campaign, type, and time window.
|
||||
|
||||
**Tool:** `CUSTOMERIO_GET_MESSAGES`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `type` | string | No | Message type: `email`, `webhook`, `twilio`, `slack`, `push`, `in_app` |
|
||||
| `metric` | string | No | Metric: `attempted`, `sent`, `delivered`, `opened`, `clicked`, `converted` |
|
||||
| `campaign_id` | integer | No | Filter by campaign ID |
|
||||
| `newsletter_id` | integer | No | Filter by newsletter ID |
|
||||
| `action_id` | integer | No | Filter by action ID |
|
||||
| `start_ts` | integer | No | Start of time window (Unix timestamp) |
|
||||
| `end_ts` | integer | No | End of time window (Unix timestamp) |
|
||||
| `limit` | integer | No | Results per page, 1-1000 (default: 50) |
|
||||
| `start` | string | No | Pagination token from previous response `next` value |
|
||||
| `drafts` | boolean | No | Return draft messages instead of active/sent |
|
||||
|
||||
---
|
||||
|
||||
### 3. List Audience Segments
|
||||
Retrieve all segments defined in your workspace for audience analysis and broadcast targeting.
|
||||
|
||||
**Tool:** `CUSTOMERIO_GET_SEGMENTS`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Customerio operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
No parameters required -- returns all segments with IDs and metadata.
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Use segment IDs when targeting broadcasts via the `recipients.segment.id` filter.
|
||||
|
||||
## Core Workflow Pattern
|
||||
---
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
### 4. List Newsletters
|
||||
Paginate through all newsletter metadata for tracking and analysis.
|
||||
|
||||
**Tool:** `CUSTOMERIO_LIST_NEWSLETTERS`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `limit` | integer | No | Max per page, 1-100 |
|
||||
| `sort` | string | No | `asc` (chronological) or `desc` (reverse) |
|
||||
| `start` | string | No | Pagination cursor from previous response `next` value |
|
||||
|
||||
---
|
||||
|
||||
### 5. Discover Transactional Message Templates
|
||||
List all transactional message templates to find IDs for sending via the API.
|
||||
|
||||
**Tool:** `CUSTOMERIO_LIST_TRANSACTIONAL_MESSAGES`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Customerio task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
No parameters required -- returns template IDs and trigger names.
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["customerio"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
### 6. Inspect Broadcast Trigger History
|
||||
Review all trigger executions for a broadcast and inspect individual trigger details.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tools:** `CUSTOMERIO_GET_TRIGGERS` and `CUSTOMERIO_GET_TRIGGER`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**List all triggers for a broadcast:**
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `broadcast_id` | integer | Yes | The broadcast/campaign ID |
|
||||
|
||||
**Get a specific trigger:**
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `broadcast_id` | integer | Yes | The campaign/broadcast ID |
|
||||
| `trigger_id` | string | Yes | Trigger identifier (e.g., `456` or `5-37`) |
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| **Mutually exclusive audience params** | `CUSTOMERIO_TRIGGER_BROADCAST` requires exactly ONE of `recipients`, `ids`, `emails`, `per_user_data`, or `data_file_url` -- providing multiple causes errors |
|
||||
| **Rate limiting on broadcasts** | Broadcasts are limited to 1 trigger request per 10 seconds per broadcast ID |
|
||||
| **Unix timestamp format** | `start_ts` and `end_ts` in `CUSTOMERIO_GET_MESSAGES` must be Unix timestamps, not ISO strings |
|
||||
| **Pagination tokens** | Messages and newsletters use cursor-based pagination via the `start` parameter -- use the `next` value from previous responses |
|
||||
| **Segment ID resolution** | To target a segment in a broadcast, first fetch segment IDs via `CUSTOMERIO_GET_SEGMENTS`, then reference by ID in `recipients.segment.id` |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Customerio-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `customerio` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Purpose |
|
||||
|-----------|---------|
|
||||
| `CUSTOMERIO_TRIGGER_BROADCAST` | Trigger a broadcast to a defined audience |
|
||||
| `CUSTOMERIO_GET_MESSAGES` | Retrieve message delivery metrics with filters |
|
||||
| `CUSTOMERIO_GET_SEGMENTS` | List all audience segments |
|
||||
| `CUSTOMERIO_GET_SEGMENT_DETAILS` | Get details for a specific segment |
|
||||
| `CUSTOMERIO_LIST_NEWSLETTERS` | Paginate through newsletters |
|
||||
| `CUSTOMERIO_LIST_TRANSACTIONAL_MESSAGES` | List transactional message templates |
|
||||
| `CUSTOMERIO_GET_TRIGGERS` | List all trigger executions for a broadcast |
|
||||
| `CUSTOMERIO_GET_TRIGGER` | Inspect a specific trigger execution |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,136 @@
|
||||
---
|
||||
name: docker-hub-automation
|
||||
description: "Automate Docker Hub tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Docker Hub Automation
|
||||
description: "Automate Docker Hub operations -- manage organizations, repositories, teams, members, and webhooks via the Composio MCP integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Docker Hub Automation via Rube MCP
|
||||
# Docker Hub Automation
|
||||
|
||||
Automate Docker Hub operations through Composio's Docker Hub toolkit via Rube MCP.
|
||||
Automate your Docker Hub workflows -- create and manage organizations, repositories, teams, add members, set up image push webhooks, and list container images.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/docker_hub](https://composio.dev/toolkits/docker_hub)
|
||||
**Toolkit docs:** [composio.dev/toolkits/docker_hub](https://composio.dev/toolkits/docker_hub)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Docker Hub connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `docker_hub`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client: `https://rube.app/mcp`
|
||||
2. Connect your Docker Hub account when prompted (JWT/token authentication)
|
||||
3. Start using the workflows below
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `docker_hub`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List Organizations
|
||||
|
||||
Use `DOCKER_HUB_LIST_ORGANIZATIONS` to discover which organizations the authenticated user belongs to.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Docker Hub operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: DOCKER_HUB_LIST_ORGANIZATIONS
|
||||
Inputs:
|
||||
- page: integer (1-indexed, default 1)
|
||||
- page_size: integer (1-100, default 25)
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
### 2. Create an Organization
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Use `DOCKER_HUB_CREATE_ORGANIZATION` to programmatically create a new Docker Hub organization.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Docker Hub task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: DOCKER_HUB_CREATE_ORGANIZATION
|
||||
Inputs:
|
||||
- orgname: string (required) -- lowercase, letters/numbers/._- only, min 2 chars
|
||||
- company: string (optional) -- company name associated with the org
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
**Note:** Requires JWT authentication obtained via `/v2/users/login` and may have restricted access.
|
||||
|
||||
### 3. Get Organization Details and Repositories
|
||||
|
||||
Use `DOCKER_HUB_GET_ORGANIZATION` to retrieve namespace info and its repositories. Works with any public namespace.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["docker_hub"]
|
||||
session_id: "your_session_id"
|
||||
Tool: DOCKER_HUB_GET_ORGANIZATION
|
||||
Inputs:
|
||||
- organization: string (required) -- e.g., "docker", "bitnami", "library"
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Create a Repository
|
||||
|
||||
Use `DOCKER_HUB_CREATE_REPOSITORY` to create public or private repositories under a namespace.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: DOCKER_HUB_CREATE_REPOSITORY
|
||||
Inputs:
|
||||
- namespace: string (required) -- Docker Hub username or org name
|
||||
- name: string (required) -- lowercase; letters, numbers, ._- allowed
|
||||
- description: string (optional) -- max 100 characters
|
||||
- full_description: string (optional) -- Markdown README content
|
||||
- is_private: boolean (default false) -- private repos require paid plan
|
||||
```
|
||||
|
||||
### 5. List Repositories with Filtering
|
||||
|
||||
Use `DOCKER_HUB_LIST_REPOSITORIES` to enumerate repos within a namespace with sorting and content-type filtering.
|
||||
|
||||
```
|
||||
Tool: DOCKER_HUB_LIST_REPOSITORIES
|
||||
Inputs:
|
||||
- namespace: string (required) -- e.g., "library", "myorg"
|
||||
- ordering: "name" | "last_updated" | "pull_count" (prefix with - for descending)
|
||||
- page: integer (default 1)
|
||||
- page_size: integer (1-100, default 25)
|
||||
- content_types: string (comma-separated, e.g., "image,artifact")
|
||||
```
|
||||
|
||||
### 6. Manage Teams, Members, and Webhooks
|
||||
|
||||
Use `DOCKER_HUB_LIST_TEAMS` to list teams within an org, `DOCKER_HUB_ADD_ORG_MEMBER` to invite users, and `DOCKER_HUB_CREATE_WEBHOOK` for push notifications.
|
||||
|
||||
```
|
||||
Tool: DOCKER_HUB_LIST_TEAMS
|
||||
- Lists all teams/groups within a Docker Hub organization
|
||||
|
||||
Tool: DOCKER_HUB_ADD_ORG_MEMBER
|
||||
- Invite a user to join an organization by Docker ID or email
|
||||
- Requires owner or admin permissions
|
||||
|
||||
Tool: DOCKER_HUB_CREATE_WEBHOOK
|
||||
- Create a webhook on a repository for image push notifications
|
||||
- Two-step process: create webhook, then add hook URL
|
||||
- Requires admin permissions on the repository
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| JWT authentication | `DOCKER_HUB_CREATE_ORGANIZATION` requires JWT auth from `/v2/users/login` -- standard API tokens may not suffice. |
|
||||
| Private repo limits | Creating private repos (`is_private: true`) requires a paid Docker Hub plan. |
|
||||
| Org name constraints | Organization names must be lowercase, at least 2 characters, containing only letters, numbers, `.`, `_`, or `-`. |
|
||||
| Webhook two-step | `DOCKER_HUB_CREATE_WEBHOOK` is a two-step process: first create the webhook with a name, then add a hook URL to it. |
|
||||
| Pagination | All list endpoints use page-based pagination -- iterate pages until results are exhausted. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Docker Hub-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `docker_hub` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `DOCKER_HUB_LIST_ORGANIZATIONS` | List orgs the user belongs to |
|
||||
| `DOCKER_HUB_CREATE_ORGANIZATION` | Create a new Docker Hub organization |
|
||||
| `DOCKER_HUB_GET_ORGANIZATION` | Get org details and repository list |
|
||||
| `DOCKER_HUB_CREATE_REPOSITORY` | Create a repository under a namespace |
|
||||
| `DOCKER_HUB_LIST_REPOSITORIES` | List repos with filtering and sorting |
|
||||
| `DOCKER_HUB_LIST_TEAMS` | List teams/groups within an org |
|
||||
| `DOCKER_HUB_ADD_ORG_MEMBER` | Invite a user to an organization |
|
||||
| `DOCKER_HUB_CREATE_WEBHOOK` | Create push-notification webhook on a repo |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,237 @@
|
||||
---
|
||||
name: dynamics365-automation
|
||||
description: "Automate Dynamics365 tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Dynamics 365 Automation
|
||||
description: "Dynamics 365 Automation: manage CRM contacts, accounts, leads, opportunities, sales orders, invoices, and cases via the Dynamics CRM Web API"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Dynamics365 Automation via Rube MCP
|
||||
# Dynamics 365 Automation
|
||||
|
||||
Automate Dynamics365 operations through Composio's Dynamics365 toolkit via Rube MCP.
|
||||
Automate Microsoft Dynamics 365 CRM operations including creating and updating contacts, accounts, leads, opportunities, sales orders, invoices, and support cases.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/dynamics365](https://composio.dev/toolkits/dynamics365)
|
||||
**Toolkit docs:** [composio.dev/toolkits/dynamics365](https://composio.dev/toolkits/dynamics365)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Dynamics365 connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `dynamics365`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
This skill requires the **Rube MCP server** connected at `https://rube.app/mcp`.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `dynamics365`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
Before executing any tools, ensure an active connection exists for the `dynamics365` toolkit. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.
|
||||
|
||||
## Tool Discovery
|
||||
---
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. Manage Leads
|
||||
|
||||
Create, update, retrieve, and list lead records.
|
||||
|
||||
**Tools:**
|
||||
- `DYNAMICS365_DYNAMICSCRM_CREATE_LEAD` -- Create a new lead
|
||||
- `DYNAMICS365_DYNAMICSCRM_UPDATE_LEAD` -- Update an existing lead
|
||||
- `DYNAMICS365_DYNAMICSCRM_GET_A_LEAD` -- Retrieve a lead by GUID
|
||||
- `DYNAMICS365_DYNAMICSCRM_GET_ALL_LEADS` -- List/filter all leads
|
||||
|
||||
**Key Parameters for `DYNAMICS365_DYNAMICSCRM_CREATE_LEAD`:**
|
||||
- `firstname` -- First name of the lead
|
||||
- `lastname` -- Last name of the lead
|
||||
- `emailaddress1` -- Primary email address
|
||||
- `telephone1` -- Primary phone number
|
||||
- `companyname` -- Associated company name
|
||||
- `subject` -- Brief title/description
|
||||
|
||||
**Key Parameters for `DYNAMICS365_DYNAMICSCRM_GET_ALL_LEADS`:**
|
||||
- `filter` -- OData filter, e.g., `"contains(fullname,'John')"`
|
||||
- `select` -- Fields to return, e.g., `"fullname,emailaddress1"`
|
||||
- `orderby` -- Sort expression, e.g., `"createdon desc"`
|
||||
- `top` -- Max number of results
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Dynamics365 operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: DYNAMICS365_DYNAMICSCRM_CREATE_LEAD
|
||||
Arguments:
|
||||
firstname: "Jane"
|
||||
lastname: "Smith"
|
||||
emailaddress1: "jane.smith@example.com"
|
||||
companyname: "Acme Corp"
|
||||
subject: "Interested in Enterprise plan"
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
---
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Manage Accounts
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Create and organize account (company) records in the CRM.
|
||||
|
||||
**Tool:** `DYNAMICS365_DYNAMICSCRM_CREATE_ACCOUNT`
|
||||
|
||||
**Key Parameters:**
|
||||
- `name` -- Account/company name
|
||||
- `description` -- Description of the account
|
||||
- `revenue` -- Revenue amount (number)
|
||||
- `accountcategorycode` -- Category code (integer, default: 1)
|
||||
- `creditonhold` -- Whether account is on credit hold (boolean)
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Dynamics365 task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: DYNAMICS365_DYNAMICSCRM_CREATE_ACCOUNT
|
||||
Arguments:
|
||||
name: "Contoso Ltd"
|
||||
description: "Strategic partner for cloud services"
|
||||
revenue: 5000000
|
||||
creditonhold: false
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
### 3. Manage Contacts
|
||||
|
||||
Create detailed contact records with address and phone information.
|
||||
|
||||
**Tool:** `DYNAMICS365_DYNAMICSCRM_CREATE_CONTACT`
|
||||
|
||||
**Key Parameters:**
|
||||
- `firstname`, `lastname` -- Contact name
|
||||
- `emailaddress1` -- Primary email
|
||||
- `telephone1` -- Primary phone
|
||||
- `mobilephone` -- Mobile phone
|
||||
- `jobtitle` -- Job title
|
||||
- `address1_city`, `address1_stateorprovince`, `address1_postalcode`, `address1_country` -- Address fields
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["dynamics365"]
|
||||
session_id: "your_session_id"
|
||||
Tool: DYNAMICS365_DYNAMICSCRM_CREATE_CONTACT
|
||||
Arguments:
|
||||
firstname: "Bob"
|
||||
lastname: "Johnson"
|
||||
emailaddress1: "bob.johnson@example.com"
|
||||
jobtitle: "VP of Engineering"
|
||||
address1_city: "Seattle"
|
||||
address1_stateorprovince: "WA"
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
---
|
||||
|
||||
### 4. Manage Opportunities
|
||||
|
||||
Create and update sales opportunities with estimated values and close dates.
|
||||
|
||||
**Tools:**
|
||||
- `DYNAMICS365_DYNAMICSCRM_CREATE_OPPORTUNITY` -- Create a new opportunity
|
||||
- `DYNAMICS365_DYNAMICSCRM_UPDATE_OPPORTUNITY` -- Update an existing opportunity
|
||||
|
||||
**Key Parameters for `DYNAMICS365_DYNAMICSCRM_CREATE_OPPORTUNITY`:**
|
||||
- `name` (required) -- Opportunity title
|
||||
- `description` -- Brief description
|
||||
- `estimatedvalue` -- Anticipated revenue (number)
|
||||
- `estimatedclosedate` -- Expected close date in `YYYY-MM-DD` format
|
||||
- `customer_account_id` -- GUID of the related account (no curly braces)
|
||||
- `customer_contact_id` -- GUID of the related contact (no curly braces)
|
||||
|
||||
**Key Parameters for `DYNAMICS365_DYNAMICSCRM_UPDATE_OPPORTUNITY`:**
|
||||
- `opportunity_id` (required) -- GUID of the opportunity
|
||||
- `opportunityratingcode` -- 1 (Cold), 2 (Warm), 3 (Hot)
|
||||
- `salesstagecode` -- 1 (Qualify), 2 (Develop), 3 (Propose)
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: DYNAMICS365_DYNAMICSCRM_CREATE_OPPORTUNITY
|
||||
Arguments:
|
||||
name: "Enterprise Cloud Migration"
|
||||
estimatedvalue: 250000
|
||||
estimatedclosedate: "2026-06-30"
|
||||
description: "Full cloud migration project for Contoso"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5. Manage Sales Orders and Invoices
|
||||
|
||||
Create and update sales orders; generate invoices for billing.
|
||||
|
||||
**Tools:**
|
||||
- `DYNAMICS365_DYNAMICSCRM_CREATE_SALES_ORDER` -- Create a new sales order
|
||||
- `DYNAMICS365_DYNAMICSCRM_UPDATE_SALES_ORDER` -- Update an existing sales order
|
||||
- `DYNAMICS365_DYNAMICSCRM_CREATE_INVOICE` -- Create a new invoice
|
||||
|
||||
**Key Parameters for `DYNAMICS365_DYNAMICSCRM_CREATE_SALES_ORDER`:**
|
||||
- `name` -- Sales order name
|
||||
- `description` -- Description
|
||||
- `account_id` -- Reference to account, format: `"/accounts(GUID)"`
|
||||
- `currency_id` -- Currency reference, format: `"/transactioncurrencies(GUID)"`
|
||||
- `price_level_id` -- Price list reference, format: `"/pricelevels(GUID)"`
|
||||
|
||||
**Key Parameters for `DYNAMICS365_DYNAMICSCRM_UPDATE_SALES_ORDER`:**
|
||||
- `salesorder_id` (required) -- GUID of the sales order
|
||||
- `name` -- Updated name
|
||||
- `discountamount` -- Updated discount
|
||||
- `freightamount` -- Updated shipping cost
|
||||
|
||||
**Key Parameters for `DYNAMICS365_DYNAMICSCRM_CREATE_INVOICE`:**
|
||||
- `name` -- Invoice name/number, e.g., `"Invoice #12345"`
|
||||
- `description` -- Invoice description
|
||||
- `account_id` -- Related account reference
|
||||
- `currency_id` -- Currency reference
|
||||
- `price_level_id` -- Price list reference
|
||||
|
||||
---
|
||||
|
||||
### 6. Create Support Cases
|
||||
|
||||
Create incident/case records for customer support tracking.
|
||||
|
||||
**Tool:** `DYNAMICS365_DYNAMICSCRM_CREATE_CASE`
|
||||
|
||||
**Key Parameters:**
|
||||
- `title` -- Subject/title of the case
|
||||
- `description` -- Detailed description
|
||||
- `prioritycode` -- 1 (Low), 2 (Normal), 3 (High)
|
||||
- `caseorigincode` -- 1 (Phone), 2 (Email), 3 (Web)
|
||||
- `account_id` -- Related account, format: `"/accounts(GUID)"`
|
||||
- `contact_id` -- Related contact, format: `"/contacts(GUID)"`
|
||||
|
||||
**Example:**
|
||||
```
|
||||
Tool: DYNAMICS365_DYNAMICSCRM_CREATE_CASE
|
||||
Arguments:
|
||||
title: "Login issue reported by customer"
|
||||
description: "Customer unable to access portal since Feb 10"
|
||||
prioritycode: 3
|
||||
caseorigincode: 2
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| **GUID format** | All entity IDs are GUIDs (e.g., `"00000000-0000-0000-0000-000000000000"`). Do not include curly braces for opportunity/contact references. |
|
||||
| **Reference format** | Related entity references use the format `"/entityset(GUID)"` (e.g., `"/accounts(abc-123)"`). Missing the leading slash or parentheses causes errors. |
|
||||
| **OData filter syntax** | Use Dynamics 365 OData syntax for `filter` (e.g., `contains(fullname,'John')`). Incorrect syntax returns empty or error responses. |
|
||||
| **user_id default** | Most tools default `user_id` to `"me"` for the authenticated user. Override only when acting on behalf of another user. |
|
||||
| **Required fields** | `CREATE_OPPORTUNITY` requires `name`. Other create tools have no strict required fields but will create empty records without data. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Dynamics365-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `dynamics365` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `DYNAMICS365_DYNAMICSCRM_CREATE_LEAD` | Create a new lead record |
|
||||
| `DYNAMICS365_DYNAMICSCRM_UPDATE_LEAD` | Update an existing lead |
|
||||
| `DYNAMICS365_DYNAMICSCRM_GET_A_LEAD` | Retrieve a lead by GUID |
|
||||
| `DYNAMICS365_DYNAMICSCRM_GET_ALL_LEADS` | List/filter all leads |
|
||||
| `DYNAMICS365_DYNAMICSCRM_CREATE_ACCOUNT` | Create a new account |
|
||||
| `DYNAMICS365_DYNAMICSCRM_CREATE_CONTACT` | Create a new contact |
|
||||
| `DYNAMICS365_DYNAMICSCRM_CREATE_OPPORTUNITY` | Create a new opportunity |
|
||||
| `DYNAMICS365_DYNAMICSCRM_UPDATE_OPPORTUNITY` | Update an existing opportunity |
|
||||
| `DYNAMICS365_DYNAMICSCRM_CREATE_SALES_ORDER` | Create a new sales order |
|
||||
| `DYNAMICS365_DYNAMICSCRM_UPDATE_SALES_ORDER` | Update an existing sales order |
|
||||
| `DYNAMICS365_DYNAMICSCRM_CREATE_INVOICE` | Create a new invoice |
|
||||
| `DYNAMICS365_DYNAMICSCRM_CREATE_CASE` | Create a support case/incident |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,131 @@
|
||||
---
|
||||
name: elevenlabs-automation
|
||||
description: "Automate Elevenlabs tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: ElevenLabs Automation
|
||||
description: "Automate ElevenLabs text-to-speech workflows -- generate speech from text, browse and inspect voices, check subscription limits, list models, stream audio, and retrieve history via the Composio MCP integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Elevenlabs Automation via Rube MCP
|
||||
# ElevenLabs Automation
|
||||
|
||||
Automate Elevenlabs operations through Composio's Elevenlabs toolkit via Rube MCP.
|
||||
Automate your ElevenLabs text-to-speech workflows -- convert text to natural speech, browse the voice library, inspect voice details, check subscription credits, select TTS models, stream audio for low-latency delivery, and retrieve previously generated audio from history.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/elevenlabs](https://composio.dev/toolkits/elevenlabs)
|
||||
**Toolkit docs:** [composio.dev/toolkits/elevenlabs](https://composio.dev/toolkits/elevenlabs)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Elevenlabs connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `elevenlabs`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client: `https://rube.app/mcp`
|
||||
2. Connect your ElevenLabs account when prompted (API key authentication)
|
||||
3. Start using the workflows below
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `elevenlabs`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Generate Speech from Text
|
||||
|
||||
Use `ELEVENLABS_TEXT_TO_SPEECH` to convert text into a downloadable audio file.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Elevenlabs operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: ELEVENLABS_TEXT_TO_SPEECH
|
||||
Inputs:
|
||||
- voice_id: string (required) -- obtain from ELEVENLABS_GET_VOICES
|
||||
- text: string (required) -- max ~10,000 chars (most models), 30,000 (Flash/Turbo v2), 40,000 (v2.5)
|
||||
- model_id: string (default "eleven_monolingual_v1") -- e.g., "eleven_multilingual_v2"
|
||||
- output_format: string (default "mp3_44100_128") -- see formats below
|
||||
- optimize_streaming_latency: integer (0-4; NOT supported with eleven_v3)
|
||||
- seed: integer (optional, for reproducibility -- not guaranteed)
|
||||
- pronunciation_dictionary_locators: array (optional, up to 3 dictionaries)
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Output formats:**
|
||||
- MP3: `mp3_22050_32`, `mp3_44100_32`, `mp3_44100_64`, `mp3_44100_96`, `mp3_44100_128`, `mp3_44100_192` (Creator+)
|
||||
- PCM: `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_44100` (Pro+)
|
||||
- uLaw: `ulaw_8000` (for Twilio)
|
||||
|
||||
## Core Workflow Pattern
|
||||
**Important:** Output is a file object with a presigned download link at `data.file.s3url` (expires in ~1 hour). Download promptly.
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
### 2. Browse Available Voices
|
||||
|
||||
Use `ELEVENLABS_GET_VOICES` to list all voices with their attributes and settings.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Elevenlabs task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: ELEVENLABS_GET_VOICES
|
||||
Inputs: (none)
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
Returns an array at `data.voices[]` with `voice_id`, `name`, `labels` (gender, accent, use_case), and settings.
|
||||
|
||||
### 3. Inspect a Specific Voice
|
||||
|
||||
Use `ELEVENLABS_GET_VOICE` to get detailed metadata for a candidate voice before synthesis.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["elevenlabs"]
|
||||
session_id: "your_session_id"
|
||||
Tool: ELEVENLABS_GET_VOICE
|
||||
Inputs:
|
||||
- voice_id: string (required) -- e.g., "21m00Tcm4TlvDq8ikWAM"
|
||||
- with_settings: boolean (default false) -- include detailed voice settings
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Check Subscription and Credits
|
||||
|
||||
Use `ELEVENLABS_GET_USER_SUBSCRIPTION_INFO` to verify plan limits and remaining credits before bulk generation.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: ELEVENLABS_GET_USER_SUBSCRIPTION_INFO
|
||||
Inputs: (none)
|
||||
```
|
||||
|
||||
### 5. List Available TTS Models
|
||||
|
||||
Use `ELEVENLABS_GET_MODELS` to discover compatible models and filter by `can_do_text_to_speech: true`.
|
||||
|
||||
```
|
||||
Tool: ELEVENLABS_GET_MODELS
|
||||
Inputs: (none)
|
||||
```
|
||||
|
||||
### 6. Stream Audio and Retrieve History
|
||||
|
||||
Use `ELEVENLABS_TEXT_TO_SPEECH_STREAM` for low-latency streamed delivery, and `ELEVENLABS_GET_AUDIO_FROM_HISTORY_ITEM` to re-download previously generated audio.
|
||||
|
||||
```
|
||||
Tool: ELEVENLABS_TEXT_TO_SPEECH_STREAM
|
||||
- Same core inputs as TEXT_TO_SPEECH but returns a stream for low-latency playback
|
||||
|
||||
Tool: ELEVENLABS_GET_AUDIO_FROM_HISTORY_ITEM
|
||||
- history_item_id: string (required) -- ID from a previous generation
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| Text length limits | Most models cap at ~10,000-20,000 chars per request. Oversized input returns HTTP 400. Split long text into chunks (~5000 chars) and generate per chunk. |
|
||||
| Output is a presigned URL | `ELEVENLABS_TEXT_TO_SPEECH` returns `data.file.s3url` with a ~1 hour expiry (X-Amz-Expires=3600). Download the audio file promptly. |
|
||||
| Quota and credit errors | HTTP 401 with `quota_exceeded` or HTTP 402 `payment_required` means insufficient credits or tier restrictions. Check with `ELEVENLABS_GET_USER_SUBSCRIPTION_INFO` before bulk jobs. |
|
||||
| Voice permissions | HTTP 401 with `missing_permissions` means the API key lacks `voices_read` scope. Verify key permissions. |
|
||||
| Model compatibility | Not all models support TTS. Use `ELEVENLABS_GET_MODELS` and filter by `can_do_text_to_speech: true`. The `optimize_streaming_latency` parameter is NOT supported with `eleven_v3`. |
|
||||
| Large voice list truncation | `ELEVENLABS_GET_VOICES` may return a large list. Select from the full `data.voices[]` payload -- previews may appear truncated. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Elevenlabs-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `elevenlabs` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `ELEVENLABS_TEXT_TO_SPEECH` | Convert text to speech, returns downloadable audio file |
|
||||
| `ELEVENLABS_GET_VOICES` | List all available voices with attributes |
|
||||
| `ELEVENLABS_GET_VOICE` | Get detailed info for a specific voice |
|
||||
| `ELEVENLABS_GET_USER_SUBSCRIPTION_INFO` | Check subscription plan and remaining credits |
|
||||
| `ELEVENLABS_GET_MODELS` | List available TTS models and capabilities |
|
||||
| `ELEVENLABS_TEXT_TO_SPEECH_STREAM` | Stream audio for low-latency delivery |
|
||||
| `ELEVENLABS_GET_AUDIO_FROM_HISTORY_ITEM` | Re-download audio from generation history |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,148 @@
|
||||
---
|
||||
name: eventbrite-automation
|
||||
description: "Automate Eventbrite tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Eventbrite Automation
|
||||
description: "Automate Eventbrite event management, attendee tracking, organization discovery, and category browsing through natural language commands"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Eventbrite Automation via Rube MCP
|
||||
# Eventbrite Automation
|
||||
|
||||
Automate Eventbrite operations through Composio's Eventbrite toolkit via Rube MCP.
|
||||
Automate Eventbrite event management workflows -- list organization events, track attendees, browse categories and formats, and manage organizations -- all through natural language.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/eventbrite](https://composio.dev/toolkits/eventbrite)
|
||||
**Toolkit docs:** [composio.dev/toolkits/eventbrite](https://composio.dev/toolkits/eventbrite)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Eventbrite connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `eventbrite`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your environment: `https://rube.app/mcp`
|
||||
2. Connect your Eventbrite account when prompted (OAuth flow via Composio)
|
||||
3. Start issuing natural language commands for Eventbrite automation
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `eventbrite`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Discover Your Organizations
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Eventbrite operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Retrieve the organizations the authenticated user belongs to. This is a prerequisite for most other Eventbrite operations since `organization_id` is required.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `EVENTBRITE_LIST_USER_ORGANIZATIONS`
|
||||
|
||||
## Core Workflow Pattern
|
||||
No parameters required. Returns organization IDs, names, and metadata.
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
> Always call this first to obtain the `organization_id` needed by event and attendee endpoints.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Eventbrite task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
Example prompt:
|
||||
> "List my Eventbrite organizations"
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["eventbrite"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
### 2. List and Search Organization Events
|
||||
|
||||
### Step 3: Execute Tools
|
||||
Browse events owned by a specific organization with filtering by status, time period, and pagination.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Tool:** `EVENTBRITE_LIST_ORGANIZATION_EVENTS`
|
||||
|
||||
Key parameters:
|
||||
- `organization_id` -- the organization whose events to list (required; get from `EVENTBRITE_LIST_USER_ORGANIZATIONS`)
|
||||
- `status` -- filter by `live`, `draft`, `canceled`, `started`, `ended`, `completed`, or `all`
|
||||
- `time_filter` -- filter by `current_future` or `past`
|
||||
- `order_by` -- sort by `start_asc`, `start_desc`, `created_asc`, `created_desc`, `name_asc`, `name_desc`
|
||||
- `page_size` -- number of events per page
|
||||
- `continuation` -- pagination token from previous response
|
||||
- `expand` -- comma-separated fields to expand: `organizer`, `venue`, `ticket_classes`
|
||||
|
||||
Example prompt:
|
||||
> "Show me all live events for my organization, sorted by start date"
|
||||
|
||||
---
|
||||
|
||||
### 3. Track Event Attendees
|
||||
|
||||
Retrieve the attendee list for any event, with optional status filtering and pagination.
|
||||
|
||||
**Tool:** `EVENTBRITE_LIST_EVENT_ATTENDEES`
|
||||
|
||||
Key parameters:
|
||||
- `event_id` -- the event to retrieve attendees for (required)
|
||||
- `status` -- filter by `attending`, `not_attending`, or `cancelled`
|
||||
- `changed_since` -- ISO 8601 timestamp to get only recently changed attendees
|
||||
- `continuation` -- pagination token for subsequent pages
|
||||
|
||||
Example prompt:
|
||||
> "Get all attending attendees for event 123456789 who changed since January 1st"
|
||||
|
||||
---
|
||||
|
||||
### 4. Browse Event Categories
|
||||
|
||||
Retrieve available event categories for use when creating or filtering events.
|
||||
|
||||
**Tool:** `EVENTBRITE_GET_EVENT_CATEGORIES`
|
||||
|
||||
Key parameters:
|
||||
- `locale` -- BCP-47 locale for localized names (e.g., `en_US`, `es_ES`)
|
||||
|
||||
Follow up with `EVENTBRITE_GET_EVENT_SUBCATEGORIES` to get subcategories within a selected category.
|
||||
|
||||
Example prompt:
|
||||
> "List all Eventbrite event categories in English"
|
||||
|
||||
---
|
||||
|
||||
### 5. List Event Formats
|
||||
|
||||
Retrieve all available event format types (conference, seminar, workshop, etc.).
|
||||
|
||||
**Tool:** `EVENTBRITE_GET_EVENT_FORMATS`
|
||||
|
||||
No parameters required. Returns format IDs and display names.
|
||||
|
||||
Example prompt:
|
||||
> "What event formats are available on Eventbrite?"
|
||||
|
||||
---
|
||||
|
||||
### 6. Browse Event Subcategories
|
||||
|
||||
Retrieve subcategories for more granular event classification.
|
||||
|
||||
**Tool:** `EVENTBRITE_GET_EVENT_SUBCATEGORIES`
|
||||
|
||||
Key parameters:
|
||||
- `locale` -- BCP-47 locale for localized names (e.g., `en_US`)
|
||||
|
||||
Example prompt:
|
||||
> "List all Eventbrite event subcategories"
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| Organization ID required | Most event operations require `organization_id` -- always call `EVENTBRITE_LIST_USER_ORGANIZATIONS` first |
|
||||
| Pagination via continuation | Results use continuation-token pagination, not page numbers -- pass the `continuation` value from the previous response to get the next page |
|
||||
| Event ID discovery | You need to list events first via `EVENTBRITE_LIST_ORGANIZATION_EVENTS` to get `event_id` values for attendee queries |
|
||||
| Status values are specific | Event status values (`live`, `draft`, `canceled`, `started`, `ended`, `completed`) must match exactly |
|
||||
| Expand fields are comma-separated | The `expand` parameter takes a comma-separated string, not an array (e.g., `"organizer,venue"`) |
|
||||
| changed_since format | The `changed_since` parameter must be in ISO 8601 format (e.g., `2024-01-01T00:00:00Z`) |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Eventbrite-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `eventbrite` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Key Params |
|
||||
|--------|-----------|------------|
|
||||
| List organizations | `EVENTBRITE_LIST_USER_ORGANIZATIONS` | (none) |
|
||||
| List events | `EVENTBRITE_LIST_ORGANIZATION_EVENTS` | `organization_id`, `status`, `time_filter` |
|
||||
| List attendees | `EVENTBRITE_LIST_EVENT_ATTENDEES` | `event_id`, `status`, `changed_since` |
|
||||
| Get categories | `EVENTBRITE_GET_EVENT_CATEGORIES` | `locale` |
|
||||
| Get subcategories | `EVENTBRITE_GET_EVENT_SUBCATEGORIES` | `locale` |
|
||||
| Get formats | `EVENTBRITE_GET_EVENT_FORMATS` | (none) |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,203 @@
|
||||
---
|
||||
name: excel-automation
|
||||
description: "Automate Excel tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Excel Automation
|
||||
description: "Excel Automation: create workbooks, manage worksheets, read/write cell data, and format spreadsheets via Microsoft Excel and Google Sheets integration"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Excel Automation via Rube MCP
|
||||
# Excel Automation
|
||||
|
||||
Automate Excel operations through Composio's Excel toolkit via Rube MCP.
|
||||
Automate spreadsheet operations including creating workbooks, writing data, formatting cells, upserting rows, and managing worksheets. Works with Microsoft Excel (OneDrive) and Google Sheets.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/excel](https://composio.dev/toolkits/excel)
|
||||
**Toolkit docs:** [composio.dev/toolkits/excel](https://composio.dev/toolkits/excel)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Excel connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `excel`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
This skill requires the **Rube MCP server** connected at `https://rube.app/mcp`.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `excel`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
Before executing any tools, ensure an active connection exists for the `excel` (and optionally `googlesheets`) toolkit. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.
|
||||
|
||||
## Tool Discovery
|
||||
---
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. Create a New Excel Workbook
|
||||
|
||||
Use `EXCEL_CREATE_WORKBOOK` to generate a new `.xlsx` file and upload it to OneDrive.
|
||||
|
||||
**Tool:** `EXCEL_CREATE_WORKBOOK`
|
||||
|
||||
**Steps:**
|
||||
1. Call `EXCEL_CREATE_WORKBOOK` with worksheet names and data
|
||||
2. The tool creates a `.xlsx` file and uploads it to OneDrive
|
||||
3. Use the returned file path/URL for subsequent operations
|
||||
|
||||
---
|
||||
|
||||
### 2. Write Data to a Spreadsheet
|
||||
|
||||
Use `GOOGLESHEETS_BATCH_UPDATE` to write values to a specific range or append rows.
|
||||
|
||||
**Tool:** `GOOGLESHEETS_BATCH_UPDATE`
|
||||
|
||||
**Key Parameters:**
|
||||
- `spreadsheet_id` (required) -- The spreadsheet ID from the URL (44-char alphanumeric string)
|
||||
- `sheet_name` (required) -- Tab name, e.g., `"Sheet1"`, `"Sales Data"`
|
||||
- `values` (required) -- 2D array of cell values, e.g., `[["Name","Amount"],["Alice",100]]`
|
||||
- `first_cell_location` -- Starting cell in A1 notation (e.g., `"A1"`, `"D3"`). Omit to append rows
|
||||
- `valueInputOption` -- `"USER_ENTERED"` (default, parses formulas) or `"RAW"` (stores as-is)
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Excel operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: GOOGLESHEETS_BATCH_UPDATE
|
||||
Arguments:
|
||||
spreadsheet_id: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
|
||||
sheet_name: "Sheet1"
|
||||
values: [["Item","Cost","Stocked"],["Wheel",20.50,true],["Screw",0.50,true]]
|
||||
first_cell_location: "A1"
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
---
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 3. Upsert Rows by Key Column
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Use `GOOGLESHEETS_UPSERT_ROWS` to update existing rows by matching a key column, or append new rows if no match is found. Ideal for CRM syncs, inventory updates, and deduplication.
|
||||
|
||||
**Tool:** `GOOGLESHEETS_UPSERT_ROWS`
|
||||
|
||||
**Key Parameters:**
|
||||
- `spreadsheetId` (required) -- The spreadsheet ID
|
||||
- `sheetName` (required) -- Tab name
|
||||
- `rows` (required) -- 2D array of data rows (min 1 row). If `headers` is omitted, the first row is treated as headers
|
||||
- `headers` -- Column names for the data, e.g., `["Email","Phone","Status"]`
|
||||
- `keyColumn` -- Column header to match on, e.g., `"Email"`, `"SKU"`, `"Lead ID"`
|
||||
- `strictMode` -- `true` (default) errors on mismatched columns; `false` truncates silently
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Excel task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: GOOGLESHEETS_UPSERT_ROWS
|
||||
Arguments:
|
||||
spreadsheetId: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
|
||||
sheetName: "Contacts"
|
||||
keyColumn: "Email"
|
||||
headers: ["Email","Phone","Status"]
|
||||
rows: [["john@example.com","555-0101","Active"],["jane@example.com","555-0102","Pending"]]
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
### 4. Format Cells
|
||||
|
||||
Use `GOOGLESHEETS_FORMAT_CELL` to apply bold, italic, font size, and background colors to ranges.
|
||||
|
||||
**Tool:** `GOOGLESHEETS_FORMAT_CELL`
|
||||
|
||||
**Key Parameters:**
|
||||
- `spreadsheet_id` (required) -- The spreadsheet ID
|
||||
- `range` -- Cell range in A1 notation, e.g., `"A1:D1"`, `"B2:B10"` (recommended over index-based)
|
||||
- `sheet_name` -- Worksheet name, e.g., `"Sheet1"`
|
||||
- `bold` -- `true`/`false`
|
||||
- `italic` -- `true`/`false`
|
||||
- `fontSize` -- Font size in points, e.g., `12`
|
||||
- `red`, `green`, `blue` -- Background color components (0.0--1.0 float scale, NOT 0--255)
|
||||
|
||||
**Example (bold header row with blue background):**
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["excel"]
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLESHEETS_FORMAT_CELL
|
||||
Arguments:
|
||||
spreadsheet_id: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
|
||||
range: "A1:D1"
|
||||
sheet_name: "Sheet1"
|
||||
bold: true
|
||||
fontSize: 12
|
||||
red: 0.2
|
||||
green: 0.4
|
||||
blue: 0.9
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
---
|
||||
|
||||
### 5. Add New Worksheet Tabs
|
||||
|
||||
Use `GOOGLESHEETS_ADD_SHEET` to create new tabs within an existing spreadsheet.
|
||||
|
||||
**Tool:** `GOOGLESHEETS_ADD_SHEET`
|
||||
|
||||
**Key Parameters:**
|
||||
- `spreadsheetId` (required) -- The spreadsheet ID
|
||||
- `title` -- Name for the new tab, e.g., `"Q4 Report"`
|
||||
- `forceUnique` -- `true` (default) auto-appends suffix if name exists
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLESHEETS_ADD_SHEET
|
||||
Arguments:
|
||||
spreadsheetId: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
|
||||
title: "Q4 Report"
|
||||
forceUnique: true
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 6. Read Data and Verify Content
|
||||
|
||||
Use `GOOGLESHEETS_BATCH_GET` to retrieve data from specified cell ranges for validation or further processing.
|
||||
|
||||
**Tool:** `GOOGLESHEETS_BATCH_GET`
|
||||
|
||||
**Steps:**
|
||||
1. Call `GOOGLESHEETS_BATCH_GET` with the spreadsheet ID and target ranges
|
||||
2. Validate headers and data alignment
|
||||
3. Use results to inform subsequent write or update operations
|
||||
|
||||
**Supporting Tools:**
|
||||
- `GOOGLESHEETS_GET_SHEET_NAMES` -- List all tab names in a spreadsheet
|
||||
- `GOOGLESHEETS_GET_SPREADSHEET_INFO` -- Get metadata (sheet IDs, properties)
|
||||
- `GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE` -- Check if a specific tab exists
|
||||
|
||||
---
|
||||
|
||||
## Recommended Execution Plan
|
||||
|
||||
1. **Create or locate the spreadsheet** using `GOOGLESHEETS_CREATE_GOOGLE_SHEET1` or reuse an existing `spreadsheetId`
|
||||
2. **Confirm the destination tab** using `GOOGLESHEETS_GET_SHEET_NAMES` or `GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE`; create it with `GOOGLESHEETS_ADD_SHEET` if missing
|
||||
3. **Read existing headers** (optional) using `GOOGLESHEETS_BATCH_GET` to align columns
|
||||
4. **Write or upsert data** using `GOOGLESHEETS_BATCH_UPDATE` or `GOOGLESHEETS_UPSERT_ROWS`
|
||||
5. **Apply formatting** (optional) using `GOOGLESHEETS_FORMAT_CELL`
|
||||
6. **Verify results** (optional) using `GOOGLESHEETS_BATCH_GET`
|
||||
7. **Fallback:** If Google Sheets creation is blocked (HTTP 403), use `EXCEL_CREATE_WORKBOOK` for local `.xlsx` output
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| **HTTP 403 on sheet creation** | `GOOGLESHEETS_CREATE_GOOGLE_SHEET1` fails when Drive create scope is missing. Reuse an existing `spreadsheetId` or fall back to `EXCEL_CREATE_WORKBOOK`. |
|
||||
| **Cell limit and rate throttling** | Google Sheets has a ~5,000,000 cell limit per spreadsheet. Excessive write frequency triggers HTTP 429. Batch changes and chunk large writes (~500 rows/call). |
|
||||
| **Format range off-by-one** | `GOOGLESHEETS_FORMAT_CELL` uses 0-based, endIndex-exclusive ranges when using index mode. Background color uses 0--1 float RGB, NOT 0--255 integer RGB. |
|
||||
| **Sheet title uniqueness** | Sheet titles are not guaranteed unique across API responses. Prefer operating by numeric `sheetId` and verify the resolved tab before writing. |
|
||||
| **Upsert payload shape** | `GOOGLESHEETS_UPSERT_ROWS` requires headers + 2D rows array. Sending list-of-dicts or empty `rows` causes validation errors. Ensure at least 1 data row. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Excel-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `excel` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `EXCEL_CREATE_WORKBOOK` | Create a new `.xlsx` workbook and upload to OneDrive |
|
||||
| `GOOGLESHEETS_BATCH_UPDATE` | Write values to a range or append new rows |
|
||||
| `GOOGLESHEETS_UPSERT_ROWS` | Update existing rows by key or append new ones |
|
||||
| `GOOGLESHEETS_FORMAT_CELL` | Apply text/background formatting to cell ranges |
|
||||
| `GOOGLESHEETS_ADD_SHEET` | Add a new worksheet tab to a spreadsheet |
|
||||
| `GOOGLESHEETS_CREATE_GOOGLE_SHEET1` | Create a new Google Spreadsheet in Drive |
|
||||
| `GOOGLESHEETS_GET_SHEET_NAMES` | List all worksheet names in a spreadsheet |
|
||||
| `GOOGLESHEETS_GET_SPREADSHEET_INFO` | Retrieve spreadsheet metadata |
|
||||
| `GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE` | Check if a worksheet exists by title |
|
||||
| `GOOGLESHEETS_BATCH_GET` | Read data from specified cell ranges |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,164 @@
|
||||
---
|
||||
name: facebook-automation
|
||||
description: "Automate Facebook tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Facebook Automation
|
||||
description: "Automate Facebook Page management including post creation, scheduling, video uploads, Messenger conversations, and audience engagement via Composio"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Facebook Automation via Rube MCP
|
||||
# Facebook Automation
|
||||
|
||||
Automate Facebook operations through Composio's Facebook toolkit via Rube MCP.
|
||||
Automate Facebook Page operations -- create and schedule posts, upload videos, manage Messenger conversations, retrieve page insights, and handle scheduled content -- all orchestrated through the Composio MCP integration.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/facebook](https://composio.dev/toolkits/facebook)
|
||||
**Toolkit docs:** [composio.dev/toolkits/facebook](https://composio.dev/toolkits/facebook)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Facebook connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `facebook`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Connect your Facebook account through the Composio MCP server at `https://rube.app/mcp`
|
||||
2. The agent will prompt you with an authentication link if no active connection exists
|
||||
3. Once connected, all `FACEBOOK_*` tools become available for execution
|
||||
4. **Note:** This toolkit supports Facebook Pages only, not personal Facebook accounts
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `facebook`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Discover Managed Pages
|
||||
List all Facebook Pages you manage to get page IDs and access tokens for subsequent operations.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Facebook operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
**Tool:** `FACEBOOK_LIST_MANAGED_PAGES`
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `fields` | string | No | Comma-separated fields (default: `id,name,access_token,category,tasks,about,link,picture`) |
|
||||
| `limit` | integer | No | Max pages per request (default: 25) |
|
||||
| `user_id` | string | No | User ID (default: `me`) |
|
||||
|
||||
## Core Workflow Pattern
|
||||
**Always run this first** to cache `page_id` values. Avoid repeating discovery calls -- cache the results.
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Facebook task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
### 2. Create & Schedule Posts
|
||||
Publish or schedule text posts with optional links on a Facebook Page.
|
||||
|
||||
### Step 2: Check Connection
|
||||
**Tool:** `FACEBOOK_CREATE_POST`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["facebook"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `page_id` | string | Yes | Numeric Page ID from managed pages |
|
||||
| `message` | string | Yes | Text content of the post |
|
||||
| `published` | boolean | No | `true` to publish immediately, `false` for draft/scheduled (default: true) |
|
||||
| `scheduled_publish_time` | integer | No | Unix UTC timestamp; must be at least 10 minutes in the future |
|
||||
| `link` | string | No | URL to include in the post |
|
||||
| `targeting` | object | No | Audience targeting specifications |
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**When scheduling:** Set `published=false` and provide `scheduled_publish_time` as a Unix UTC timestamp.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
---
|
||||
|
||||
### 3. Create & Schedule Video Posts
|
||||
Upload and schedule video content on a Facebook Page.
|
||||
|
||||
**Tool:** `FACEBOOK_CREATE_VIDEO_POST`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `page_id` | string | Yes | Numeric Page ID |
|
||||
| `file_url` | string | Conditional | URL of the video file (provide `file_url` or `video`) |
|
||||
| `video` | object | Conditional | Local file upload with `name`, `mimetype`, `s3key` |
|
||||
| `title` | string | No | Video title |
|
||||
| `description` | string | No | Video description |
|
||||
| `published` | boolean | No | Publish immediately (default: true) |
|
||||
| `scheduled_publish_time` | integer | No | Unix timestamp for scheduled publishing |
|
||||
|
||||
---
|
||||
|
||||
### 4. Manage Scheduled Posts
|
||||
Review, reschedule, update, or publish scheduled content.
|
||||
|
||||
**Tools:**
|
||||
|
||||
- **`FACEBOOK_GET_SCHEDULED_POSTS`** -- List scheduled/unpublished posts for a page
|
||||
- `page_id` (required), `fields`, `limit` (max 100)
|
||||
- **`FACEBOOK_RESCHEDULE_POST`** -- Change the scheduled publish time
|
||||
- **`FACEBOOK_UPDATE_POST`** -- Edit caption/text on an existing post
|
||||
- **`FACEBOOK_PUBLISH_SCHEDULED_POST`** -- Publish a scheduled post immediately
|
||||
|
||||
---
|
||||
|
||||
### 5. Read Page Messenger Conversations
|
||||
Retrieve inbox conversations and message threads between users and your Page.
|
||||
|
||||
**Tool:** `FACEBOOK_GET_PAGE_CONVERSATIONS`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `page_id` | string | Yes | The Facebook Page ID |
|
||||
| `fields` | string | No | Fields to return (default: `participants,updated_time,id`) |
|
||||
| `limit` | integer | No | Conversations to return, max 25 |
|
||||
|
||||
Then retrieve full message threads:
|
||||
|
||||
**Tool:** `FACEBOOK_GET_CONVERSATION_MESSAGES`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `page_id` | string | Yes | Page ID that owns the conversation |
|
||||
| `conversation_id` | string | Yes | Conversation ID in `t_` format (e.g., `t_3638640842939952`) |
|
||||
| `fields` | string | No | Default: `id,created_time,from,to,message` |
|
||||
| `limit` | integer | No | Messages to return, max 25 |
|
||||
|
||||
---
|
||||
|
||||
### 6. Send Messages & Mark as Seen
|
||||
Respond to users via Messenger and mark messages as read.
|
||||
|
||||
**Tools:**
|
||||
|
||||
- **`FACEBOOK_SEND_MESSAGE`** -- Send a text message from the Page to a user via Messenger
|
||||
- **`FACEBOOK_MARK_MESSAGE_SEEN`** -- Mark a user's message as seen by the Page
|
||||
|
||||
**Warning:** Both tools cause user-visible side effects. Only call after explicit confirmation.
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| **Scheduling too close to now** | `FACEBOOK_CREATE_POST` with `scheduled_publish_time` less than ~10 minutes in the future returns HTTP 400 -- enforce a larger buffer for bulk runs |
|
||||
| **Unix UTC timestamps required** | `scheduled_publish_time` must be Unix UTC -- timezone conversion mistakes cause off-by-hours scheduling or validation failures |
|
||||
| **Cursor-based pagination** | `FACEBOOK_GET_SCHEDULED_POSTS` and `FACEBOOK_GET_PAGE_CONVERSATIONS` return subsets -- follow paging cursors to get complete data |
|
||||
| **Large conversation payloads** | Requesting embedded messages in conversations creates huge payloads -- use `FACEBOOK_GET_CONVERSATION_MESSAGES` for full threads instead |
|
||||
| **Video processing delays** | Uploaded videos may remain in processing state -- only schedule via `FACEBOOK_CREATE_VIDEO_POST` after the upload is usable |
|
||||
| **Cache page IDs** | Repeating `FACEBOOK_LIST_MANAGED_PAGES` calls adds latency -- cache `page_id` per workspace/run |
|
||||
| **Pages only** | This toolkit does not support personal Facebook accounts -- only Facebook Pages |
|
||||
| **Write operations need confirmation** | `FACEBOOK_SEND_MESSAGE` and `FACEBOOK_MARK_MESSAGE_SEEN` cause user-visible side effects -- only call after explicit user confirmation |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Facebook-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `facebook` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Purpose |
|
||||
|-----------|---------|
|
||||
| `FACEBOOK_LIST_MANAGED_PAGES` | List Pages you manage with access tokens |
|
||||
| `FACEBOOK_GET_PAGE_DETAILS` | Get detailed info about a specific Page |
|
||||
| `FACEBOOK_CREATE_POST` | Create or schedule a text/link post |
|
||||
| `FACEBOOK_CREATE_VIDEO_POST` | Create or schedule a video post |
|
||||
| `FACEBOOK_GET_SCHEDULED_POSTS` | List scheduled/unpublished posts |
|
||||
| `FACEBOOK_RESCHEDULE_POST` | Change scheduled publish time |
|
||||
| `FACEBOOK_UPDATE_POST` | Edit an existing post |
|
||||
| `FACEBOOK_PUBLISH_SCHEDULED_POST` | Publish a scheduled post immediately |
|
||||
| `FACEBOOK_UPLOAD_VIDEO` | Upload a video file to a Page |
|
||||
| `FACEBOOK_GET_PAGE_CONVERSATIONS` | List Messenger inbox conversations |
|
||||
| `FACEBOOK_GET_CONVERSATION_MESSAGES` | Retrieve messages from a conversation |
|
||||
| `FACEBOOK_SEND_MESSAGE` | Send a Messenger message from the Page |
|
||||
| `FACEBOOK_MARK_MESSAGE_SEEN` | Mark a message as seen |
|
||||
| `FACEBOOK_GET_PAGE_POSTS` | Retrieve posts from a Page feed |
|
||||
| `FACEBOOK_GET_USER_PAGES` | List Pages with tasks and tokens |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,177 @@
|
||||
---
|
||||
name: firecrawl-automation
|
||||
description: "Automate Firecrawl tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Firecrawl Automation
|
||||
description: "Automate web crawling and data extraction with Firecrawl -- scrape pages, crawl sites, extract structured data, batch scrape URLs, and map website structures through the Composio Firecrawl integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Firecrawl Automation via Rube MCP
|
||||
# Firecrawl Automation
|
||||
|
||||
Automate Firecrawl operations through Composio's Firecrawl toolkit via Rube MCP.
|
||||
Run **Firecrawl** web crawling and extraction directly from Claude Code. Scrape individual pages, crawl entire sites, extract structured data with AI, batch process URL lists, and map website structures without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/firecrawl](https://composio.dev/toolkits/firecrawl)
|
||||
**Toolkit docs:** [composio.dev/toolkits/firecrawl](https://composio.dev/toolkits/firecrawl)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Firecrawl connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `firecrawl`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Firecrawl account when prompted. The agent will provide an authentication link.
|
||||
3. Be mindful of credit consumption -- scope your crawls tightly and test on small URL sets before scaling.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `firecrawl`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Scrape a Single Page
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Firecrawl operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Fetch content from a URL in multiple formats with optional browser actions for dynamic pages.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `FIRECRAWL_SCRAPE`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `url` (required) -- fully qualified URL to scrape
|
||||
- `formats` -- output formats: `markdown` (default), `html`, `rawHtml`, `links`, `screenshot`, `json`
|
||||
- `onlyMainContent` (default true) -- extract main content only, excluding nav/footer/ads
|
||||
- `waitFor` -- milliseconds to wait for JS rendering (default 0)
|
||||
- `timeout` -- max wait in ms (default 30000)
|
||||
- `actions` -- browser actions before scraping (click, write, wait, press, scroll)
|
||||
- `includeTags` / `excludeTags` -- filter by HTML tags
|
||||
- `jsonOptions` -- for structured extraction with `schema` and/or `prompt`
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Example prompt: *"Scrape the main content from https://example.com/pricing as markdown"*
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Firecrawl task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. Crawl an Entire Site
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["firecrawl"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Discover and scrape multiple pages from a website with configurable depth, path filters, and concurrency.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tool:** `FIRECRAWL_CRAWL_V2`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Key parameters:
|
||||
- `url` (required) -- starting URL for the crawl
|
||||
- `limit` (default 10) -- max pages to crawl
|
||||
- `maxDiscoveryDepth` -- depth limit from the root page
|
||||
- `includePaths` / `excludePaths` -- regex patterns for URL paths
|
||||
- `allowSubdomains` -- include subdomains (default false)
|
||||
- `crawlEntireDomain` -- follow sibling/parent links, not just children (default false)
|
||||
- `sitemap` -- `include` (default), `skip`, or `only`
|
||||
- `prompt` -- natural language to auto-configure crawler settings
|
||||
- `scrapeOptions_formats` -- output format for each page
|
||||
- `scrapeOptions_onlyMainContent` -- main content extraction per page
|
||||
|
||||
Example prompt: *"Crawl the docs section of firecrawl.dev, max 50 pages, only paths matching docs"*
|
||||
|
||||
---
|
||||
|
||||
### 3. Extract Structured Data
|
||||
|
||||
Extract structured JSON data from web pages using AI with a natural language prompt or JSON schema.
|
||||
|
||||
**Tool:** `FIRECRAWL_EXTRACT`
|
||||
|
||||
Key parameters:
|
||||
- `urls` (required) -- array of URLs to extract from (max 10 in beta). Supports wildcards like `https://example.com/blog/*`
|
||||
- `prompt` -- natural language description of what to extract
|
||||
- `schema` -- JSON Schema defining the desired output structure
|
||||
- `enable_web_search` -- allow crawling links outside initial domains (default false)
|
||||
|
||||
At least one of `prompt` or `schema` must be provided.
|
||||
|
||||
Check extraction status with `FIRECRAWL_EXTRACT_GET` using the returned job `id`.
|
||||
|
||||
Example prompt: *"Extract company name, pricing tiers, and feature lists from https://example.com/pricing"*
|
||||
|
||||
---
|
||||
|
||||
### 4. Batch Scrape Multiple URLs
|
||||
|
||||
Scrape many URLs concurrently with shared configuration for efficient bulk data collection.
|
||||
|
||||
**Tool:** `FIRECRAWL_BATCH_SCRAPE`
|
||||
|
||||
Key parameters:
|
||||
- `urls` (required) -- array of URLs to scrape
|
||||
- `formats` -- output format for all pages (default `markdown`)
|
||||
- `onlyMainContent` (default true) -- main content extraction
|
||||
- `maxConcurrency` -- parallel scrape limit
|
||||
- `ignoreInvalidURLs` (default true) -- skip bad URLs instead of failing the batch
|
||||
- `location` -- geolocation settings with `country` code
|
||||
- `actions` -- browser actions applied to each page
|
||||
- `blockAds` (default true) -- block advertisements
|
||||
|
||||
Example prompt: *"Batch scrape these 20 product page URLs as markdown with ad blocking"*
|
||||
|
||||
---
|
||||
|
||||
### 5. Map Website Structure
|
||||
|
||||
Discover all URLs on a website from a starting URL, useful for planning crawls or auditing site structure.
|
||||
|
||||
**Tool:** `FIRECRAWL_MAP_MULTIPLE_URLS_BASED_ON_OPTIONS`
|
||||
|
||||
Key parameters:
|
||||
- `url` (required) -- starting URL (must be `https://` or `http://`)
|
||||
- `search` -- guide URL discovery toward specific page types
|
||||
- `limit` (default 5000, max 100000) -- max URLs to return
|
||||
- `includeSubdomains` (default true) -- include subdomains
|
||||
- `ignoreQueryParameters` (default true) -- dedupe URLs differing only by query params
|
||||
- `sitemap` -- `include`, `skip`, or `only`
|
||||
|
||||
Example prompt: *"Map all URLs on docs.example.com, focusing on API reference pages"*
|
||||
|
||||
---
|
||||
|
||||
### 6. Monitor and Manage Crawl Jobs
|
||||
|
||||
Track crawl progress, retrieve results, and cancel runaway jobs.
|
||||
|
||||
**Tools:** `FIRECRAWL_CRAWL_GET`, `FIRECRAWL_GET_THE_STATUS_OF_A_CRAWL_JOB`, `FIRECRAWL_CANCEL_A_CRAWL_JOB`
|
||||
|
||||
- `FIRECRAWL_CRAWL_GET` -- get status, progress, credits used, and crawled page data
|
||||
- `FIRECRAWL_CANCEL_A_CRAWL_JOB` -- stop an active or queued crawl
|
||||
|
||||
Both require the crawl job `id` (UUID) returned when the crawl was initiated.
|
||||
|
||||
Example prompt: *"Check the status of crawl job 019b0806-b7a1-7652-94c1-e865b5d2e89a"*
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Rate limiting:** Firecrawl can trigger "Rate limit exceeded" errors (429). Prefer `FIRECRAWL_BATCH_SCRAPE` over many individual `FIRECRAWL_SCRAPE` calls, and implement backoff on 429/5xx responses.
|
||||
- **Credit consumption:** `FIRECRAWL_EXTRACT` can fail with "Insufficient credits." Scope tightly and avoid broad homepage URLs that yield sparse fields. Test on small URL sets first.
|
||||
- **Nested error responses:** Per-page failures may be nested in `response.data.code` (e.g., `SCRAPE_DNS_RESOLUTION_ERROR`) even when the outer API call succeeds. Always validate inner status/error fields.
|
||||
- **JS-heavy pages:** Non-rendered fetches may miss key content. Use `waitFor` (e.g., 1000-5000ms) for dynamic pages, or configure `scrapeOptions_actions` to interact with the page before scraping.
|
||||
- **Extraction schema precision:** Vague or shifting schemas/prompts produce noisy, inconsistent output. Freeze your schema and test on a small sample before scaling to many URLs.
|
||||
- **Crawl jobs are async:** `FIRECRAWL_CRAWL_V2` returns immediately with a job ID. Use `FIRECRAWL_CRAWL_GET` to poll for results. Cancel stuck crawls with `FIRECRAWL_CANCEL_A_CRAWL_JOB` to avoid wasting credits.
|
||||
- **Extract job polling:** `FIRECRAWL_EXTRACT` is also async for larger jobs. Retrieve final output with `FIRECRAWL_EXTRACT_GET`.
|
||||
- **URL batching for extract:** Keep extract URL batches small (~10 URLs) to avoid 429 rate limit errors.
|
||||
- **Deeply nested responses:** Results are often nested under `data.data` or deeper. Inspect the returned shape rather than assuming flat keys.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Firecrawl-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `firecrawl` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `FIRECRAWL_SCRAPE` | Scrape a single URL with format/action options |
|
||||
| `FIRECRAWL_CRAWL_V2` | Crawl a website with depth/path control |
|
||||
| `FIRECRAWL_EXTRACT` | Extract structured data with AI prompt/schema |
|
||||
| `FIRECRAWL_BATCH_SCRAPE` | Batch scrape multiple URLs concurrently |
|
||||
| `FIRECRAWL_MAP_MULTIPLE_URLS_BASED_ON_OPTIONS` | Discover/map all URLs on a site |
|
||||
| `FIRECRAWL_CRAWL_GET` | Get crawl job status and results |
|
||||
| `FIRECRAWL_GET_THE_STATUS_OF_A_CRAWL_JOB` | Check crawl job progress |
|
||||
| `FIRECRAWL_CANCEL_A_CRAWL_JOB` | Cancel an active crawl job |
|
||||
| `FIRECRAWL_EXTRACT_GET` | Get extraction job status and results |
|
||||
| `FIRECRAWL_CRAWL_PARAMS_PREVIEW` | Preview crawl parameters before starting |
|
||||
| `FIRECRAWL_SEARCH` | Web search + scrape top results |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,140 @@
|
||||
---
|
||||
name: freshbooks-automation
|
||||
description: "Automate Freshbooks tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: FreshBooks Automation
|
||||
description: "FreshBooks Automation: manage businesses, projects, time tracking, and billing in FreshBooks cloud accounting"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Freshbooks Automation via Rube MCP
|
||||
# FreshBooks Automation
|
||||
|
||||
Automate Freshbooks operations through Composio's Freshbooks toolkit via Rube MCP.
|
||||
Automate FreshBooks operations including listing businesses, managing projects, tracking time, and monitoring budgets for small and medium-sized business accounting.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/freshbooks](https://composio.dev/toolkits/freshbooks)
|
||||
**Toolkit docs:** [composio.dev/toolkits/freshbooks](https://composio.dev/toolkits/freshbooks)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Freshbooks connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `freshbooks`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
This skill requires the **Rube MCP server** connected at `https://rube.app/mcp`.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `freshbooks`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
Before executing any tools, ensure an active connection exists for the `freshbooks` toolkit. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.
|
||||
|
||||
## Tool Discovery
|
||||
---
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. List Businesses
|
||||
|
||||
Retrieve all businesses associated with the authenticated user. The `business_id` from this response is required for most other FreshBooks API calls.
|
||||
|
||||
**Tool:** `FRESHBOOKS_LIST_BUSINESSES`
|
||||
|
||||
**Parameters:** None required.
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Freshbooks operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: FRESHBOOKS_LIST_BUSINESSES
|
||||
Arguments: {}
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Output:** Returns business membership information including all businesses the user has access to, along with their role in each business.
|
||||
|
||||
## Core Workflow Pattern
|
||||
> **Important:** Always call this first to obtain a valid `business_id` before performing project-specific operations.
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
---
|
||||
|
||||
### 2. List and Filter Projects
|
||||
|
||||
Retrieve all projects for a business with comprehensive filtering and sorting options.
|
||||
|
||||
**Tool:** `FRESHBOOKS_LIST_PROJECTS`
|
||||
|
||||
**Key Parameters:**
|
||||
- `business_id` (required) -- Business ID obtained from `FRESHBOOKS_LIST_BUSINESSES`
|
||||
- `active` -- Filter by active status: `true` (active only), `false` (inactive only), omit for all
|
||||
- `complete` -- Filter by completion: `true` (completed), `false` (incomplete), omit for all
|
||||
- `sort_by` -- Sort order: `"created_at"`, `"due_date"`, or `"title"`
|
||||
- `updated_since` -- UTC datetime in RFC3339 format, e.g., `"2026-01-01T00:00:00Z"`
|
||||
- `include_logged_duration` -- `true` to include total logged time (in seconds) per project
|
||||
- `skip_group` -- `true` to omit team member/invitation data (reduces response size)
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Freshbooks task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: FRESHBOOKS_LIST_PROJECTS
|
||||
Arguments:
|
||||
business_id: 123456
|
||||
active: true
|
||||
complete: false
|
||||
sort_by: "due_date"
|
||||
include_logged_duration: true
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
**Use Cases:**
|
||||
- Get all projects for time tracking or invoicing
|
||||
- Find projects by client, status, or date range
|
||||
- Monitor project completion and budget tracking
|
||||
- Retrieve team assignments and project groups
|
||||
|
||||
---
|
||||
|
||||
### 3. Monitor Active Projects
|
||||
|
||||
Track project progress and budgets by filtering for active, incomplete projects.
|
||||
|
||||
**Steps:**
|
||||
1. Call `FRESHBOOKS_LIST_BUSINESSES` to get `business_id`
|
||||
2. Call `FRESHBOOKS_LIST_PROJECTS` with `active: true`, `complete: false`, `include_logged_duration: true`
|
||||
3. Analyze logged duration vs. budget for each project
|
||||
|
||||
---
|
||||
|
||||
### 4. Review Recently Updated Projects
|
||||
|
||||
Check for recent project activity using the `updated_since` filter.
|
||||
|
||||
**Steps:**
|
||||
1. Call `FRESHBOOKS_LIST_BUSINESSES` to get `business_id`
|
||||
2. Call `FRESHBOOKS_LIST_PROJECTS` with `updated_since` set to your cutoff datetime
|
||||
3. Review returned projects for recent changes
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["freshbooks"]
|
||||
session_id: "your_session_id"
|
||||
Tool: FRESHBOOKS_LIST_PROJECTS
|
||||
Arguments:
|
||||
business_id: 123456
|
||||
updated_since: "2026-02-01T00:00:00Z"
|
||||
sort_by: "created_at"
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
## Recommended Execution Plan
|
||||
|
||||
1. **Get the business ID** by calling `FRESHBOOKS_LIST_BUSINESSES`
|
||||
2. **List projects** using `FRESHBOOKS_LIST_PROJECTS` with the obtained `business_id`
|
||||
3. **Filter as needed** using `active`, `complete`, `updated_since`, and `sort_by` parameters
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| **business_id required** | Most FreshBooks operations require a `business_id`. Always call `FRESHBOOKS_LIST_BUSINESSES` first to obtain it. |
|
||||
| **Date format** | The `updated_since` parameter must be in RFC3339 format: `"2026-01-01T00:00:00Z"`. Other formats will fail. |
|
||||
| **Paginated results** | Project list responses are paginated. Check for additional pages in the response. |
|
||||
| **Empty results** | Returns an empty list if no projects exist or match the applied filters. This is not an error. |
|
||||
| **Logged duration units** | When `include_logged_duration` is true, the duration is returned in seconds. Convert to hours (divide by 3600) for display. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Freshbooks-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `freshbooks` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `FRESHBOOKS_LIST_BUSINESSES` | List all businesses for the authenticated user |
|
||||
| `FRESHBOOKS_LIST_PROJECTS` | List projects with filtering and sorting for a business |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,172 @@
|
||||
---
|
||||
name: gong-automation
|
||||
description: "Automate Gong tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Gong Automation
|
||||
description: "Automate Gong conversation intelligence -- retrieve call recordings, transcripts, detailed analytics, speaker stats, and workspace data -- using natural language through the Composio MCP integration."
|
||||
category: conversation-intelligence
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Gong Automation via Rube MCP
|
||||
# Gong Automation
|
||||
|
||||
Automate Gong operations through Composio's Gong toolkit via Rube MCP.
|
||||
Unlock insights from your sales calls -- retrieve transcripts, analyze call data by date range, access detailed conversation analytics with topics and trackers, and manage workspaces -- all through natural language commands.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/gong](https://composio.dev/toolkits/gong)
|
||||
**Toolkit docs:** [composio.dev/toolkits/gong](https://composio.dev/toolkits/gong)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Gong connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `gong`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Gong account when prompted (OAuth / Bearer token authentication).
|
||||
3. Start issuing natural language commands to analyze your call data.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `gong`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Retrieve Call Transcripts by Date Range
|
||||
Get transcripts for all calls within a specified time period, with optional filtering by specific call IDs or workspace.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Gong operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
**Tool:** `GONG_RETRIEVE_TRANSCRIPTS_OF_CALLS_V2_CALLS_TRANSCRIPT`
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Example prompt:**
|
||||
> "Get Gong transcripts for all calls from February 1-10, 2025"
|
||||
|
||||
## Core Workflow Pattern
|
||||
**Key parameters:**
|
||||
- `filter__fromDateTime` -- ISO-8601 start date (e.g., `2025-02-01T00:00:00Z`)
|
||||
- `filter__toDateTime` -- ISO-8601 end date (e.g., `2025-02-10T23:59:59Z`)
|
||||
- `filter__callIds` -- Optional array of specific call IDs to filter
|
||||
- `filter__workspaceId` -- Optional workspace ID filter
|
||||
- `cursor` -- Pagination cursor from previous response
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
**Required scope:** `api:calls:read:transcript`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Gong task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. Get Transcript for Specific Calls
|
||||
Retrieve transcripts with speaker information, timestamps, and topic categorization using a filter object.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["gong"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Tool:** `GONG_GET_CALL_TRANSCRIPT`
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Example prompt:**
|
||||
> "Get the Gong transcript for call ID 555785916001072125"
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Key parameters (filter required):**
|
||||
- `filter.callIds` -- Array of specific call IDs (e.g., `["555785916001072125"]`)
|
||||
- `filter.fromDateTime` -- ISO-8601 start date
|
||||
- `filter.toDateTime` -- ISO-8601 end date
|
||||
- `filter.workspaceId` -- Optional workspace filter
|
||||
- `cursor` -- Pagination cursor
|
||||
|
||||
---
|
||||
|
||||
### 3. List Calls by Date Range
|
||||
Retrieve basic call metadata (participants, duration, timing) for calls within a date range.
|
||||
|
||||
**Tool:** `GONG_RETRIEVE_CALL_DATA_BY_DATE_RANGE_V2_CALLS`
|
||||
|
||||
**Example prompt:**
|
||||
> "List all Gong calls from last week"
|
||||
|
||||
**Key parameters (both required):**
|
||||
- `fromDateTime` -- ISO-8601 start date (e.g., `2025-02-03T00:00:00Z`)
|
||||
- `toDateTime` -- ISO-8601 end date (e.g., `2025-02-10T00:00:00Z`)
|
||||
- `workspaceId` -- Optional workspace filter
|
||||
- `cursor` -- Pagination cursor
|
||||
|
||||
**Required scope:** `api:calls:read:basic`
|
||||
|
||||
---
|
||||
|
||||
### 4. Get Detailed Call Analytics
|
||||
Retrieve extensive call details including highlights, key points, topics, trackers, speaker stats, questions, and media URLs.
|
||||
|
||||
**Tool:** `GONG_RETRIEVE_FILTERED_CALL_DETAILS`
|
||||
|
||||
**Example prompt:**
|
||||
> "Get detailed analytics for Gong calls this week including topics, key points, and speaker stats"
|
||||
|
||||
**Key parameters:**
|
||||
- `filter__fromDateTime` / `filter__toDateTime` -- Date range filter
|
||||
- `filter__callIds` -- Specific call IDs
|
||||
- `filter__primaryUserIds` -- Filter by call host user IDs
|
||||
- Content selectors (all boolean):
|
||||
- `contentSelector__exposedFields__content__keyPoints` -- Key points of the call
|
||||
- `contentSelector__exposedFields__content__topics` -- Topic durations
|
||||
- `contentSelector__exposedFields__content__highlights` -- Call highlights
|
||||
- `contentSelector__exposedFields__content__outline` -- Call outline
|
||||
- `contentSelector__exposedFields__content__brief` -- Spotlight call brief
|
||||
- `contentSelector__exposedFields__content__callOutcome` -- Call outcome
|
||||
- `contentSelector__exposedFields__content__trackers` -- Smart/keyword trackers
|
||||
- `contentSelector__exposedFields__content__trackerOccurrences` -- Tracker timing and speaker (requires trackers=true)
|
||||
- `contentSelector__exposedFields__interaction__speakers` -- Time each participant spoke
|
||||
- `contentSelector__exposedFields__interaction__questions` -- Question counts
|
||||
- `contentSelector__exposedFields__interaction__personInteractionStats` -- Host statistics
|
||||
- `contentSelector__exposedFields__media` -- Audio/video URLs (valid 8 hours)
|
||||
- `contentSelector__exposedFields__parties` -- Party information
|
||||
- `contentSelector__exposedFields__collaboration__publicComments` -- Public comments
|
||||
- `contentSelector__context` -- "Basic", "Extended", or "None" for CRM/external system links
|
||||
|
||||
**Required scope:** `api:calls:read:extensive` (plus `api:calls:read:media-url` for media)
|
||||
|
||||
---
|
||||
|
||||
### 5. Get a Specific Call by ID
|
||||
Retrieve basic data for a single call using its unique Gong ID.
|
||||
|
||||
**Tool:** `GONG_RETRIEVE_DATA_FOR_A_SPECIFIC_CALL_V2_CALLS_ID`
|
||||
|
||||
**Example prompt:**
|
||||
> "Get details for Gong call 1223781272986876929"
|
||||
|
||||
**Key parameters (required):**
|
||||
- `id` -- Gong's unique numeric identifier for the call (up to 20 digits)
|
||||
|
||||
**Required scope:** `api:calls:read:basic`
|
||||
|
||||
---
|
||||
|
||||
### 6. List Company Workspaces
|
||||
Retrieve all workspaces in your Gong organization to get workspace IDs for filtering.
|
||||
|
||||
**Tool:** `GONG_LIST_ALL_COMPANY_WORKSPACES_V2_WORKSPACES`
|
||||
|
||||
**Example prompt:**
|
||||
> "List all Gong workspaces in my company"
|
||||
|
||||
**Key parameters:** None required.
|
||||
|
||||
**Required scope:** `api:workspaces:read`
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **ISO-8601 date format is mandatory**: All date parameters must use ISO-8601 format with timezone: `2025-02-01T00:00:00Z` or `2025-02-01T02:30:00-07:00`. Plain dates will fail.
|
||||
- **Date range is exclusive on toDateTime**: The `toDateTime` parameter returns calls started UP TO BUT EXCLUDING the specified time. To include calls on a specific day, set `toDateTime` to the next day.
|
||||
- **Pagination is required for large result sets**: All list endpoints return paginated results. Use the `cursor` value from the previous response to fetch the next page. Continue until no cursor is returned.
|
||||
- **Scope requirements vary by endpoint**: Different endpoints require different API scopes. Transcript access needs `api:calls:read:transcript`, basic call data needs `api:calls:read:basic`, and detailed analytics need `api:calls:read:extensive`.
|
||||
- **Media URLs expire after 8 hours**: Audio and video URLs returned by the detailed call endpoint are temporary and expire after 8 hours.
|
||||
- **Tracker occurrence data availability**: Tracker occurrence data (timing and speaker ID) is only available for calls recorded since January 1, 2023. Contact Gong support for backfill.
|
||||
- **Web-conference vs. regular calls**: For web-conference calls recorded by Gong, the date represents the scheduled time. For other calls, it represents the actual start time.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Gong-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `gong` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Required Params |
|
||||
|---|---|---|
|
||||
| Get transcripts by date | `GONG_RETRIEVE_TRANSCRIPTS_OF_CALLS_V2_CALLS_TRANSCRIPT` | None (date range recommended) |
|
||||
| Get call transcript | `GONG_GET_CALL_TRANSCRIPT` | `filter` object |
|
||||
| List calls by date | `GONG_RETRIEVE_CALL_DATA_BY_DATE_RANGE_V2_CALLS` | `fromDateTime`, `toDateTime` |
|
||||
| Get detailed call analytics | `GONG_RETRIEVE_FILTERED_CALL_DETAILS` | None (date range or call IDs recommended) |
|
||||
| Get specific call | `GONG_RETRIEVE_DATA_FOR_A_SPECIFIC_CALL_V2_CALLS_ID` | `id` |
|
||||
| List workspaces | `GONG_LIST_ALL_COMPANY_WORKSPACES_V2_WORKSPACES` | None |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,24 +1,23 @@
|
||||
---
|
||||
name: google-admin-automation
|
||||
description: "Automate Google Admin tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
description: "Automate Google Workspace Admin tasks via Rube MCP (Composio): manage users, groups, memberships, suspend accounts, create users, add aliases. Always search tools first for current schemas."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Google Admin Automation via Rube MCP
|
||||
# Google Workspace Admin Automation via Rube MCP
|
||||
|
||||
Automate Google Admin operations through Composio's Google Admin toolkit via Rube MCP.
|
||||
Manage Google Workspace users, groups, memberships, and organizational settings programmatically using Rube MCP (Composio).
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/google_admin](https://composio.dev/toolkits/google_admin)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Google Admin connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `google_admin`
|
||||
- Active connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `google_admin`
|
||||
- Google Workspace admin privileges for the authenticated account
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
@@ -26,66 +25,122 @@ Automate Google Admin operations through Composio's Google Admin toolkit via Rub
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. List All Users
|
||||
Use `GOOGLE_ADMIN_LIST_USERS` to retrieve Google Workspace users with optional filtering and pagination.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Google Admin operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: GOOGLE_ADMIN_LIST_USERS
|
||||
Parameters:
|
||||
- customer: Customer ID or "my_customer" (default)
|
||||
- domain: Domain to list users from
|
||||
- query: Filter string (e.g., "orgName=Engineering", "isSuspended=false")
|
||||
- max_results: Maximum results (1-500, default 100)
|
||||
- order_by: Sort by "email", "givenName", or "familyName"
|
||||
- sort_order: "ASCENDING" or "DESCENDING"
|
||||
- page_token: Pagination token
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
### 2. Create a New User
|
||||
Use `GOOGLE_ADMIN_CREATE_USER` to provision a new Google Workspace account.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Google Admin task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: GOOGLE_ADMIN_CREATE_USER
|
||||
Parameters:
|
||||
- primary_email (required): User's email (e.g., "john.doe@company.com")
|
||||
- given_name (required): First name
|
||||
- family_name (required): Last name
|
||||
- password (required): Password meeting domain requirements
|
||||
- org_unit_path: Organizational unit (default: "/")
|
||||
- change_password_at_next_login: Force password change (default: true)
|
||||
- recovery_email: Recovery email address
|
||||
- recovery_phone: Recovery phone number
|
||||
- suspended: Whether account starts suspended (default: false)
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
### 3. List and Manage Groups
|
||||
Use `GOOGLE_ADMIN_LIST_GROUPS` to list groups, and `GOOGLE_ADMIN_CREATE_GROUP` to create new ones.
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["google_admin"]
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLE_ADMIN_LIST_GROUPS
|
||||
Parameters:
|
||||
- customer: "my_customer" (default)
|
||||
- domain: Filter by domain
|
||||
- query: Filter (e.g., "name=Engineering*")
|
||||
- max_results: Max results (1-200)
|
||||
- order_by: Sort by "email"
|
||||
- page_token: Pagination token
|
||||
|
||||
Tool: GOOGLE_ADMIN_CREATE_GROUP
|
||||
Parameters:
|
||||
- email (required): Group email address (e.g., "engineering@company.com")
|
||||
- name (required): Display name (e.g., "Engineering Team")
|
||||
- description: Group purpose description
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Add Users to Groups
|
||||
Use `GOOGLE_ADMIN_ADD_USER_TO_GROUP` to manage group membership.
|
||||
```
|
||||
Tool: GOOGLE_ADMIN_ADD_USER_TO_GROUP
|
||||
Parameters:
|
||||
- group_key (required): Group email or ID
|
||||
- user_key (required): User email or ID to add
|
||||
- role: "MEMBER" (default), "MANAGER", or "OWNER"
|
||||
```
|
||||
|
||||
### 5. Suspend or Unsuspend Users
|
||||
Use `GOOGLE_ADMIN_SUSPEND_USER` to toggle user account suspension.
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLE_ADMIN_SUSPEND_USER
|
||||
Parameters:
|
||||
- user_key (required): User's email or unique ID
|
||||
- suspended: true to suspend, false to unsuspend (default: true)
|
||||
- suspension_reason: Reason for suspension (optional)
|
||||
```
|
||||
|
||||
### 6. Get User or Group Details
|
||||
Use `GOOGLE_ADMIN_GET_USER` or `GOOGLE_ADMIN_GET_GROUP` to retrieve detailed information.
|
||||
```
|
||||
Tool: GOOGLE_ADMIN_GET_USER
|
||||
Parameters:
|
||||
- user_key (required): User's email or unique ID
|
||||
|
||||
Tool: GOOGLE_ADMIN_GET_GROUP
|
||||
Parameters:
|
||||
- group_key (required): Group's email or unique ID
|
||||
```
|
||||
|
||||
## Common Patterns
|
||||
|
||||
- **Onboarding workflow**: Use `GOOGLE_ADMIN_CREATE_USER` to provision the account, then `GOOGLE_ADMIN_ADD_USER_TO_GROUP` to add them to relevant groups.
|
||||
- **Offboarding workflow**: Use `GOOGLE_ADMIN_SUSPEND_USER` to disable access, or `GOOGLE_ADMIN_DELETE_USER` for permanent removal.
|
||||
- **Audit group membership**: Use `GOOGLE_ADMIN_LIST_GROUPS` to find groups, then `GOOGLE_ADMIN_LIST_GROUP_MEMBERS` to review members.
|
||||
- **Bulk user management**: List users with `GOOGLE_ADMIN_LIST_USERS` and filter queries, then iterate for updates.
|
||||
- **Add email aliases**: Use `GOOGLE_ADMIN_ADD_USER_ALIAS` to add alternative email addresses for a user.
|
||||
- **Look up user details**: Use `GOOGLE_ADMIN_GET_USER` to retrieve full profile information before making changes.
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Admin privileges required**: All tools require the authenticated user to have Google Workspace administrator privileges. Non-admin accounts will receive permission errors.
|
||||
- **Delete is permanent**: `GOOGLE_ADMIN_DELETE_USER` permanently removes a user account. This action cannot be undone.
|
||||
- **user_key accepts email or ID**: The `user_key` parameter accepts both the user's primary email address and their unique numeric user ID.
|
||||
- **Group membership replaces**: When adding to groups, the `role` parameter controls the member's role. There is no "update role" -- remove and re-add to change roles.
|
||||
- **Customer ID**: Use `"my_customer"` as the `customer` parameter for the authenticated user's organization. Specific customer IDs look like `C01abc123`.
|
||||
- **Pagination**: Both user and group list endpoints may return paginated results. Always check for `page_token` in responses for complete results.
|
||||
- **Password requirements**: `GOOGLE_ADMIN_CREATE_USER` requires a password that meets the domain's password policy. Weak passwords will be rejected.
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Google Admin-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `google_admin` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool | Key Parameters |
|
||||
|--------|------|----------------|
|
||||
| List users | `GOOGLE_ADMIN_LIST_USERS` | `customer`, `domain`, `query`, `max_results` |
|
||||
| Get user details | `GOOGLE_ADMIN_GET_USER` | `user_key` |
|
||||
| Create user | `GOOGLE_ADMIN_CREATE_USER` | `primary_email`, `given_name`, `family_name`, `password` |
|
||||
| Delete user | `GOOGLE_ADMIN_DELETE_USER` | `user_key` |
|
||||
| Suspend user | `GOOGLE_ADMIN_SUSPEND_USER` | `user_key`, `suspended` |
|
||||
| Add user alias | `GOOGLE_ADMIN_ADD_USER_ALIAS` | (see full schema via RUBE_SEARCH_TOOLS) |
|
||||
| List groups | `GOOGLE_ADMIN_LIST_GROUPS` | `customer`, `domain`, `query` |
|
||||
| Get group details | `GOOGLE_ADMIN_GET_GROUP` | `group_key` |
|
||||
| Create group | `GOOGLE_ADMIN_CREATE_GROUP` | `email`, `name`, `description` |
|
||||
| Add to group | `GOOGLE_ADMIN_ADD_USER_TO_GROUP` | `group_key`, `user_key`, `role` |
|
||||
| List group members | `GOOGLE_ADMIN_LIST_GROUP_MEMBERS` | (see full schema via RUBE_SEARCH_TOOLS) |
|
||||
|
||||
---
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,24 +1,22 @@
|
||||
---
|
||||
name: google-maps-automation
|
||||
description: "Automate Google Maps tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
description: "Automate Google Maps tasks via Rube MCP (Composio): geocode addresses, search places, get directions, compute route matrices, reverse geocode, autocomplete, get place details. Always search tools first for current schemas."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Google Maps Automation via Rube MCP
|
||||
|
||||
Automate Google Maps operations through Composio's Google Maps toolkit via Rube MCP.
|
||||
Geocode addresses, search places, get directions, compute distance matrices, and retrieve place details using Google Maps via Rube MCP (Composio).
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/google_maps](https://composio.dev/toolkits/google_maps)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Google Maps connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `google_maps`
|
||||
- Active connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `google_maps`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
@@ -26,66 +24,115 @@ Automate Google Maps operations through Composio's Google Maps toolkit via Rube
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. Geocode an Address
|
||||
Use `GOOGLE_MAPS_GEOCODING_API` to convert a street address into geographic coordinates (latitude/longitude).
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Google Maps operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: GOOGLE_MAPS_GEOCODING_API
|
||||
Parameters:
|
||||
- address: Street address or plus code to geocode
|
||||
- latlng: Lat/lng for reverse geocoding (e.g., "40.714224,-73.961452")
|
||||
- place_id: Place ID for place geocoding
|
||||
- language: Language for results
|
||||
- region: Region bias (ccTLD code)
|
||||
- bounds: Bounding box for viewport bias
|
||||
- components: Component filter (e.g., "postal_code:94043|country:US")
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
### 2. Search for Places
|
||||
Use `GOOGLE_MAPS_TEXT_SEARCH` to find places using a free-text query.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Google Maps task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: GOOGLE_MAPS_TEXT_SEARCH
|
||||
Parameters:
|
||||
- textQuery (required): Search text (e.g., "restaurants in London")
|
||||
- fieldMask: Fields to return (e.g., "displayName,formattedAddress,rating")
|
||||
- maxResultCount: Max results (1-20, default 10)
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
### 3. Get Directions Between Two Locations
|
||||
Use `GOOGLE_MAPS_GET_ROUTE` to calculate routes with distance and duration.
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["google_maps"]
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLE_MAPS_GET_ROUTE
|
||||
Parameters:
|
||||
- origin_address (required): Starting point (address or "lat,lng")
|
||||
- destination_address (required): End point (address or "lat,lng")
|
||||
- travelMode: DRIVE, BICYCLE, WALK, TWO_WHEELER, or TRANSIT
|
||||
- routingPreference: TRAFFIC_UNAWARE, TRAFFIC_AWARE, TRAFFIC_AWARE_OPTIMAL
|
||||
- computeAlternativeRoutes: Return alternative routes (boolean)
|
||||
- units: METRIC or IMPERIAL
|
||||
- languageCode: BCP-47 language code
|
||||
- routeModifiers_avoidTolls / avoidHighways / avoidFerries: Route preferences
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Compute Distance Matrix
|
||||
Use `GOOGLE_MAPS_COMPUTE_ROUTE_MATRIX` to calculate distances and durations between multiple origins and destinations.
|
||||
```
|
||||
Tool: GOOGLE_MAPS_COMPUTE_ROUTE_MATRIX
|
||||
Parameters:
|
||||
- origins (required): Array of origin locations (address strings or lat/lng objects)
|
||||
- destinations (required): Array of destination locations
|
||||
- travelMode: DRIVE, BICYCLE, WALK, TWO_WHEELER, or TRANSIT
|
||||
- routingPreference: TRAFFIC_UNAWARE, TRAFFIC_AWARE, TRAFFIC_AWARE_OPTIMAL
|
||||
- fieldMask: Response fields to include
|
||||
- units: METRIC or IMPERIAL
|
||||
```
|
||||
|
||||
### 5. Get Place Details
|
||||
Use `GOOGLE_MAPS_GET_PLACE_DETAILS` to retrieve comprehensive information about a specific place.
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLE_MAPS_GET_PLACE_DETAILS
|
||||
Description: Retrieves comprehensive details for a place using its resource
|
||||
name (places/{place_id} format). Returns hours, contacts, reviews, etc.
|
||||
Note: Call RUBE_SEARCH_TOOLS to get the full schema for this tool.
|
||||
```
|
||||
|
||||
### 6. Search Nearby Places
|
||||
Use `GOOGLE_MAPS_NEARBY_SEARCH` to find places within a circular area around a point.
|
||||
```
|
||||
Tool: GOOGLE_MAPS_NEARBY_SEARCH
|
||||
Parameters:
|
||||
- latitude (required): Center latitude (-90 to 90)
|
||||
- longitude (required): Center longitude (-180 to 180)
|
||||
- radius (required): Search radius in meters (max 50000)
|
||||
- includedTypes: Place types to include (e.g., ["restaurant", "cafe"])
|
||||
- excludedTypes: Place types to exclude
|
||||
- fieldMask: Fields to return
|
||||
- maxResultCount: Max results (1-20)
|
||||
```
|
||||
|
||||
## Common Patterns
|
||||
|
||||
- **Geocode then route**: Use `GOOGLE_MAPS_GEOCODING_API` to convert addresses to coordinates, then `GOOGLE_MAPS_GET_ROUTE` for directions between them.
|
||||
- **Search then detail**: Use `GOOGLE_MAPS_TEXT_SEARCH` to find places, then `GOOGLE_MAPS_GET_PLACE_DETAILS` for richer metadata (hours, contacts, reviews).
|
||||
- **Autocomplete UX**: Use `GOOGLE_MAPS_AUTOCOMPLETE` for type-ahead search suggestions as users type addresses or place names.
|
||||
- **Reverse geocode**: Use `GOOGLE_MAPS_GEOCODE_LOCATION` to convert coordinates back to a human-readable address.
|
||||
- **Batch distance calculation**: Use `GOOGLE_MAPS_COMPUTE_ROUTE_MATRIX` for many-to-many distance calculations instead of calling `GOOGLE_MAPS_GET_ROUTE` repeatedly.
|
||||
- **Embed maps**: Use `GOOGLE_MAPS_MAPS_EMBED_API` to generate embeddable map URLs for places, directions, or search results.
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Route matrix results structure**: `GOOGLE_MAPS_COMPUTE_ROUTE_MATRIX` returns results under `data.elements` with `originIndex` and `destinationIndex` plus `distanceMeters` and `duration` -- not a `routes[]` structure.
|
||||
- **Duration format**: `GOOGLE_MAPS_GET_ROUTE` returns durations as strings like `"937s"` inside `data.response_data.routes`. You must parse these before numeric comparisons.
|
||||
- **Place IDs for chaining**: Use place identifiers returned from `GOOGLE_MAPS_TEXT_SEARCH` when calling `GOOGLE_MAPS_GET_PLACE_DETAILS` for richer fields.
|
||||
- **Reverse geocoding input**: `GOOGLE_MAPS_GEOCODE_LOCATION` is coordinate-driven. Ensure you pass lat/lng (not an address string) to avoid mismatched lookups.
|
||||
- **Routing preference restrictions**: `routingPreference` cannot be set when `travelMode` is WALK, BICYCLE, or TRANSIT -- it must be omitted for these modes.
|
||||
- **Nearby search type validity**: `"food"` is NOT a valid type for `GOOGLE_MAPS_NEARBY_SEARCH` (it is Table B). Use specific types like `restaurant`, `cafe`, `bakery`, `fast_food_restaurant` instead.
|
||||
- **Embed API uses API keys only**: `GOOGLE_MAPS_MAPS_EMBED_API` requires an API key and does not support OAuth2.
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Google Maps-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `google_maps` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool | Key Parameters |
|
||||
|--------|------|----------------|
|
||||
| Geocode address | `GOOGLE_MAPS_GEOCODING_API` | `address` or `latlng` or `place_id` |
|
||||
| Reverse geocode | `GOOGLE_MAPS_GEOCODE_LOCATION` | (see full schema via RUBE_SEARCH_TOOLS) |
|
||||
| Text search | `GOOGLE_MAPS_TEXT_SEARCH` | `textQuery`, `fieldMask`, `maxResultCount` |
|
||||
| Nearby search | `GOOGLE_MAPS_NEARBY_SEARCH` | `latitude`, `longitude`, `radius`, `includedTypes` |
|
||||
| Get directions | `GOOGLE_MAPS_GET_ROUTE` | `origin_address`, `destination_address`, `travelMode` |
|
||||
| Distance matrix | `GOOGLE_MAPS_COMPUTE_ROUTE_MATRIX` | `origins`, `destinations`, `travelMode` |
|
||||
| Place details | `GOOGLE_MAPS_GET_PLACE_DETAILS` | (see full schema via RUBE_SEARCH_TOOLS) |
|
||||
| Autocomplete | `GOOGLE_MAPS_AUTOCOMPLETE` | `input`, `includedRegionCodes`, `locationBias` |
|
||||
| Place photo | `GOOGLE_MAPS_PLACE_PHOTO` | (see full schema via RUBE_SEARCH_TOOLS) |
|
||||
| Embed map | `GOOGLE_MAPS_MAPS_EMBED_API` | `mode`, plus mode-specific params |
|
||||
|
||||
---
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,24 +1,23 @@
|
||||
---
|
||||
name: google-search-console-automation
|
||||
description: "Automate Google Search Console tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
description: "Automate Google Search Console tasks via Rube MCP (Composio): query search analytics, list sites, inspect URLs, submit sitemaps, monitor search performance. Always search tools first for current schemas."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Google Search Console Automation via Rube MCP
|
||||
|
||||
Automate Google Search Console operations through Composio's Google Search Console toolkit via Rube MCP.
|
||||
Query search analytics, inspect URLs, manage sitemaps, and monitor search performance using Google Search Console via Rube MCP (Composio).
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/google_search_console](https://composio.dev/toolkits/google_search_console)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Google Search Console connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `google_search_console`
|
||||
- Active connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `google_search_console`
|
||||
- Verified site ownership or appropriate permissions in Google Search Console
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
@@ -26,66 +25,99 @@ Automate Google Search Console operations through Composio's Google Search Conso
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. List All Verified Sites
|
||||
Use `GOOGLE_SEARCH_CONSOLE_LIST_SITES` to retrieve all sites the authenticated user owns or has access to.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Google Search Console operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: GOOGLE_SEARCH_CONSOLE_LIST_SITES
|
||||
Parameters: (none required)
|
||||
Returns: List of site entries with siteUrl and permissionLevel
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
### 2. Query Search Analytics
|
||||
Use `GOOGLE_SEARCH_CONSOLE_SEARCH_ANALYTICS_QUERY` to get search performance data including clicks, impressions, CTR, and position.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Google Search Console task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: GOOGLE_SEARCH_CONSOLE_SEARCH_ANALYTICS_QUERY
|
||||
Parameters:
|
||||
- site_url (required): Site URL (e.g., "https://www.example.com/" or "sc-domain:example.com")
|
||||
- start_date (required): Start date in YYYY-MM-DD format
|
||||
- end_date (required): End date in YYYY-MM-DD format
|
||||
- dimensions: Group by ["query", "page", "country", "device", "date", "searchAppearance"]
|
||||
- search_type: "web" (default), "image", "video", "news", "discover", "googleNews"
|
||||
- dimension_filter_groups: Filters for dimensions (operator: equals, notEquals, contains, notContains, includingRegex, excludingRegex)
|
||||
- row_limit: Max rows (1-25000, default 1000)
|
||||
- start_row: Pagination offset (default 0)
|
||||
- aggregation_type: "auto", "byPage", "byProperty", "byNewsShowcasePanel"
|
||||
- data_state: "final" (default), "all", "hourly_all"
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
### 3. Inspect a URL
|
||||
Use `GOOGLE_SEARCH_CONSOLE_INSPECT_URL` to check the indexing status and issues for a specific URL.
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["google_search_console"]
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLE_SEARCH_CONSOLE_INSPECT_URL
|
||||
Parameters:
|
||||
- inspection_url (required): Full URL to inspect (e.g., "https://www.example.com/page")
|
||||
- site_url (required): Property URL (e.g., "https://www.example.com/")
|
||||
- language_code: BCP-47 language (default: "en-US")
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. List Sitemaps
|
||||
Use `GOOGLE_SEARCH_CONSOLE_LIST_SITEMAPS` to retrieve all sitemaps submitted for a site.
|
||||
```
|
||||
Tool: GOOGLE_SEARCH_CONSOLE_LIST_SITEMAPS
|
||||
Parameters:
|
||||
- site_url (required): Site URL (e.g., "https://www.example.com/")
|
||||
- sitemap_index: Specific sitemap index URL to list sitemaps from
|
||||
```
|
||||
|
||||
### 5. Submit a Sitemap
|
||||
Use `GOOGLE_SEARCH_CONSOLE_SUBMIT_SITEMAP` to register or resubmit a sitemap for indexing.
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLE_SEARCH_CONSOLE_SUBMIT_SITEMAP
|
||||
Parameters:
|
||||
- site_url (required): Site URL or domain property (e.g., "sc-domain:example.com")
|
||||
- feedpath (required): Full sitemap URL (e.g., "https://www.example.com/sitemap.xml")
|
||||
```
|
||||
|
||||
### 6. Get Sitemap Details
|
||||
Use `GOOGLE_SEARCH_CONSOLE_GET_SITEMAP` to retrieve information about a specific submitted sitemap.
|
||||
```
|
||||
Tool: GOOGLE_SEARCH_CONSOLE_GET_SITEMAP
|
||||
Parameters:
|
||||
- site_url (required): Site URL
|
||||
- feedpath (required): Sitemap URL to retrieve details for
|
||||
```
|
||||
|
||||
## Common Patterns
|
||||
|
||||
- **Performance monitoring**: Use `GOOGLE_SEARCH_CONSOLE_SEARCH_ANALYTICS_QUERY` with `dimensions: ["date"]` over a date range to track daily search performance trends.
|
||||
- **Top queries report**: Use `GOOGLE_SEARCH_CONSOLE_SEARCH_ANALYTICS_QUERY` with `dimensions: ["query"]` to find the most clicked search terms.
|
||||
- **Page-level analysis**: Use `dimensions: ["page"]` to identify top-performing pages, then `dimensions: ["query", "page"]` to see which queries drive traffic to each page.
|
||||
- **Indexing audit**: Use `GOOGLE_SEARCH_CONSOLE_INSPECT_URL` to check the indexing status of important pages.
|
||||
- **Sitemap management**: Use `GOOGLE_SEARCH_CONSOLE_LIST_SITEMAPS` to verify submitted sitemaps, then `GOOGLE_SEARCH_CONSOLE_SUBMIT_SITEMAP` to submit new or updated ones.
|
||||
- **Country/device breakdown**: Use `dimensions: ["country", "device"]` to understand geographic and device-type distribution of search traffic.
|
||||
- **Filter for specific queries**: Use `dimension_filter_groups` with `contains` or `includingRegex` operators to focus on specific keyword groups.
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Site URL format matters**: URL-prefix properties use the full URL with protocol and trailing slash (e.g., `https://www.example.com/`). Domain properties use the `sc-domain:` prefix (e.g., `sc-domain:example.com`). Using the wrong format will return empty results or errors.
|
||||
- **Date range limits**: Data is typically available with a 2-3 day delay. `data_state: "all"` includes fresher data that may still change. `hourly_all` only works for dates within the last 3 days.
|
||||
- **Row limit pagination**: The API returns top results sorted by clicks (or by date when grouping by date). For complete data, paginate using `start_row` with the `row_limit`.
|
||||
- **Max 25,000 rows per request**: Even with pagination, each request returns at most 25,000 rows. For very large datasets, narrow your date range or add dimension filters.
|
||||
- **Inspection URL must match site**: The `inspection_url` must be a page under the `site_url` property. Cross-property inspections will fail.
|
||||
- **Sitemap must be accessible**: `GOOGLE_SEARCH_CONSOLE_SUBMIT_SITEMAP` requires the sitemap file to be publicly accessible at the specified URL and properly formatted as XML.
|
||||
- **Results sorted by clicks**: By default, analytics results are sorted by click count descending, except when grouping by `date` (which sorts by date ascending).
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Google Search Console-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `google_search_console` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool | Key Parameters |
|
||||
|--------|------|----------------|
|
||||
| List sites | `GOOGLE_SEARCH_CONSOLE_LIST_SITES` | (none) |
|
||||
| Search analytics | `GOOGLE_SEARCH_CONSOLE_SEARCH_ANALYTICS_QUERY` | `site_url`, `start_date`, `end_date`, `dimensions` |
|
||||
| Inspect URL | `GOOGLE_SEARCH_CONSOLE_INSPECT_URL` | `inspection_url`, `site_url` |
|
||||
| List sitemaps | `GOOGLE_SEARCH_CONSOLE_LIST_SITEMAPS` | `site_url` |
|
||||
| Submit sitemap | `GOOGLE_SEARCH_CONSOLE_SUBMIT_SITEMAP` | `site_url`, `feedpath` |
|
||||
| Get sitemap info | `GOOGLE_SEARCH_CONSOLE_GET_SITEMAP` | `site_url`, `feedpath` |
|
||||
|
||||
---
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,124 @@
|
||||
---
|
||||
name: googleads-automation
|
||||
description: "Automate Google Ads tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
description: "Automate Google Ads analytics tasks via Rube MCP (Composio): list Google Ads links, run GA4 reports, check compatibility, list properties and accounts. Always search tools first for current schemas."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Google Ads Automation via Rube MCP
|
||||
|
||||
Automate Google Ads operations through Composio's Google Ads toolkit via Rube MCP.
|
||||
Access Google Ads data through Google Analytics integration, run performance reports, list linked Ads accounts, and analyze campaign metrics using Rube MCP (Composio).
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/googleads](https://composio.dev/toolkits/googleads)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Google Ads connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googleads`
|
||||
- Active connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `google_analytics`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `googleads`
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `google_analytics`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
> **Note**: Google Ads data is accessed through the Google Analytics toolkit integration. The tools below use GA4 properties linked to Google Ads accounts.
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. List Google Ads Links for a Property
|
||||
Use `GOOGLE_ANALYTICS_ANALYTICS_ADMIN_PROPERTIES_GOOGLE_ADS` to retrieve all Google Ads account links configured for a GA4 property.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Google Ads operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: GOOGLE_ANALYTICS_ANALYTICS_ADMIN_PROPERTIES_GOOGLE_ADS
|
||||
Parameters:
|
||||
- parent (required): Property resource name (format: "properties/{propertyId}")
|
||||
- pageSize: Max results (1-200, default 50)
|
||||
- pageToken: Pagination token
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
### 2. Run a GA4 Performance Report
|
||||
Use `GOOGLE_ANALYTICS_RUN_REPORT` to run customized reports with dimensions, metrics, date ranges, and filters.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Google Ads task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: GOOGLE_ANALYTICS_RUN_REPORT
|
||||
Parameters:
|
||||
- property (required): Property resource (format: "properties/{property_id}")
|
||||
- dimensions: Array of dimension objects (e.g., [{"name": "sessionCampaignName"}, {"name": "date"}])
|
||||
- metrics: Array of metric objects (e.g., [{"name": "sessions"}, {"name": "totalRevenue"}])
|
||||
- dateRanges: Array with startDate and endDate (e.g., [{"startDate": "2025-01-01", "endDate": "2025-01-31"}])
|
||||
- dimensionFilter: Filter by dimension values
|
||||
- metricFilter: Filter by metric values (applied after aggregation)
|
||||
- orderBys: Sort results
|
||||
- limit: Max rows to return (1-250000)
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
### 3. Check Dimension/Metric Compatibility
|
||||
Use `GOOGLE_ANALYTICS_CHECK_COMPATIBILITY` to validate dimension and metric combinations before running a report.
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["googleads"]
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLE_ANALYTICS_CHECK_COMPATIBILITY
|
||||
Description: Validates compatibility of chosen dimensions or metrics
|
||||
before running a report.
|
||||
Note: Call RUBE_SEARCH_TOOLS to get the full schema for this tool.
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. List GA4 Accounts
|
||||
Use `GOOGLE_ANALYTICS_LIST_ACCOUNTS` to enumerate all accessible Google Analytics accounts.
|
||||
```
|
||||
Tool: GOOGLE_ANALYTICS_LIST_ACCOUNTS
|
||||
Parameters:
|
||||
- pageSize: Max accounts to return
|
||||
- pageToken: Pagination token
|
||||
- showDeleted: Include soft-deleted accounts
|
||||
```
|
||||
|
||||
### 5. List GA4 Properties Under an Account
|
||||
Use `GOOGLE_ANALYTICS_LIST_PROPERTIES` to list properties for a specific GA4 account.
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLE_ANALYTICS_LIST_PROPERTIES
|
||||
Parameters:
|
||||
- account (required): Account resource name (format: "accounts/{account_id}")
|
||||
- pageSize: Max properties (1-200)
|
||||
- pageToken: Pagination token
|
||||
- showDeleted: Include trashed properties
|
||||
```
|
||||
|
||||
### 6. Get Available Dimensions and Metrics
|
||||
Use `GOOGLE_ANALYTICS_GET_METADATA` to discover all available fields for building reports.
|
||||
```
|
||||
Tool: GOOGLE_ANALYTICS_GET_METADATA
|
||||
Description: Gets metadata for dimensions, metrics, and comparisons
|
||||
for a GA4 property.
|
||||
Note: Call RUBE_SEARCH_TOOLS to get the full schema for this tool.
|
||||
```
|
||||
|
||||
## Common Patterns
|
||||
|
||||
- **Discover then report**: Use `GOOGLE_ANALYTICS_LIST_ACCOUNTS` to find account IDs, then `GOOGLE_ANALYTICS_LIST_PROPERTIES` to find property IDs, then `GOOGLE_ANALYTICS_RUN_REPORT` to pull data.
|
||||
- **Validate before querying**: Use `GOOGLE_ANALYTICS_CHECK_COMPATIBILITY` to validate dimension/metric combinations before running reports to avoid 400 errors.
|
||||
- **Campaign performance**: Run reports with dimensions like `sessionCampaignName`, `sessionSource`, `sessionMedium` and metrics like `sessions`, `activeUsers`, `totalRevenue`.
|
||||
- **Ads link discovery**: Use `GOOGLE_ANALYTICS_ANALYTICS_ADMIN_PROPERTIES_GOOGLE_ADS` to find which Google Ads accounts are linked to each GA4 property.
|
||||
- **Field discovery**: Use `GOOGLE_ANALYTICS_GET_METADATA` to list all available dimensions and metrics before constructing complex reports.
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Dimension/metric compatibility**: The GA4 API has strict compatibility rules. Not all dimensions can be combined with all metrics. Demographic dimensions (e.g., `userAgeBracket`, `userGender`) are often incompatible with session-scoped dimensions/filters (e.g., `sessionCampaignName`, `sessionSource`).
|
||||
- **`dateRange` is NOT a dimension**: Do not include `dateRange` in the dimensions array. Use `date`, `dateHour`, `year`, `month`, or `week` instead.
|
||||
- **`exits` is NOT valid**: Neither `exits` as a dimension nor as a metric is valid in GA4.
|
||||
- **Property ID format**: Must be `properties/{numeric_id}` (e.g., `properties/123456789`). Do not use Google Account IDs (long OAuth IDs).
|
||||
- **Account ID format**: Must be `accounts/{numeric_id}` where the numeric ID is 6-10 digits.
|
||||
- **Filter separation**: Use `dimensionFilter` only for dimension fields and `metricFilter` only for metric fields. Mixing them will cause errors.
|
||||
- **Max 9 dimensions and 10 metrics** per report request.
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Google Ads-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `googleads` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool | Key Parameters |
|
||||
|--------|------|----------------|
|
||||
| List Ads links | `GOOGLE_ANALYTICS_ANALYTICS_ADMIN_PROPERTIES_GOOGLE_ADS` | `parent` |
|
||||
| Run report | `GOOGLE_ANALYTICS_RUN_REPORT` | `property`, `dimensions`, `metrics`, `dateRanges` |
|
||||
| Check compatibility | `GOOGLE_ANALYTICS_CHECK_COMPATIBILITY` | (see full schema via RUBE_SEARCH_TOOLS) |
|
||||
| List accounts | `GOOGLE_ANALYTICS_LIST_ACCOUNTS` | `pageSize` |
|
||||
| List properties | `GOOGLE_ANALYTICS_LIST_PROPERTIES` | `account`, `pageSize` |
|
||||
| Get metadata | `GOOGLE_ANALYTICS_GET_METADATA` | (see full schema via RUBE_SEARCH_TOOLS) |
|
||||
|
||||
---
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,128 @@
|
||||
---
|
||||
name: googlebigquery-automation
|
||||
description: "Automate Google BigQuery tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
description: "Automate Google BigQuery tasks via Rube MCP (Composio): run SQL queries, explore datasets and metadata, execute MBQL queries via Metabase integration. Always search tools first for current schemas."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Google BigQuery Automation via Rube MCP
|
||||
|
||||
Automate Google BigQuery operations through Composio's Google BigQuery toolkit via Rube MCP.
|
||||
Run SQL queries, explore database schemas, and analyze datasets through the Metabase integration using Rube MCP (Composio).
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/googlebigquery](https://composio.dev/toolkits/googlebigquery)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Google BigQuery connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googlebigquery`
|
||||
- Active connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `metabase`
|
||||
- A Metabase instance connected to your BigQuery data source
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `googlebigquery`
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `metabase`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
> **Note**: BigQuery data is accessed through Metabase, a business intelligence tool that connects to BigQuery as a data source. The tools below execute queries and retrieve metadata through Metabase's API.
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. Run a Native SQL Query
|
||||
Use `METABASE_POST_API_DATASET` with type `native` to execute raw SQL queries against your BigQuery database.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Google BigQuery operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: METABASE_POST_API_DATASET
|
||||
Parameters:
|
||||
- database (required): Metabase database ID (integer)
|
||||
- type (required): "native" for SQL queries
|
||||
- native (required): Object with "query" string
|
||||
- query: Raw SQL string (e.g., "SELECT * FROM users LIMIT 10")
|
||||
- template_tags: Parameterized query variables (optional)
|
||||
- constraints: { "max-results": 1000 } (optional)
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
### 2. Run a Structured MBQL Query
|
||||
Use `METABASE_POST_API_DATASET` with type `query` for Metabase Query Language queries with built-in aggregation and filtering.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Google BigQuery task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: METABASE_POST_API_DATASET
|
||||
Parameters:
|
||||
- database (required): Metabase database ID
|
||||
- type (required): "query" for MBQL
|
||||
- query (required): Object with:
|
||||
- source-table: Table ID (integer)
|
||||
- aggregation: e.g., [["count"]] or [["sum", ["field", 5, null]]]
|
||||
- breakout: Group-by fields
|
||||
- filter: Filter conditions
|
||||
- limit: Max rows
|
||||
- order-by: Sort fields
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
### 3. Get Query Metadata
|
||||
Use `METABASE_POST_API_DATASET_QUERY_METADATA` to retrieve metadata about databases, tables, and fields available for querying.
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["googlebigquery"]
|
||||
session_id: "your_session_id"
|
||||
Tool: METABASE_POST_API_DATASET_QUERY_METADATA
|
||||
Parameters:
|
||||
- database (required): Metabase database ID
|
||||
- type (required): "query" or "native"
|
||||
- query (required): Query object (e.g., {"source-table": 1})
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Convert Query to Native SQL
|
||||
Use `METABASE_POST_API_DATASET_NATIVE` to convert an MBQL query into its native SQL representation.
|
||||
```
|
||||
Tool: METABASE_POST_API_DATASET_NATIVE
|
||||
Parameters:
|
||||
- database (required): Metabase database ID
|
||||
- type (required): "native"
|
||||
- native (required): Object with "query" and optional "template_tags"
|
||||
- parameters: Query parameter values (optional)
|
||||
```
|
||||
|
||||
### 5. List Available Databases
|
||||
Use `METABASE_GET_API_DATABASE` to discover all database connections configured in Metabase.
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: METABASE_GET_API_DATABASE
|
||||
Description: Retrieves a list of all Database instances configured in Metabase.
|
||||
Note: Call RUBE_SEARCH_TOOLS to get the full schema for this tool.
|
||||
```
|
||||
|
||||
### 6. Get Database Schema Metadata
|
||||
Use `METABASE_GET_API_DATABASE_ID_METADATA` to retrieve complete table and field information for a specific database.
|
||||
```
|
||||
Tool: METABASE_GET_API_DATABASE_ID_METADATA
|
||||
Description: Retrieves complete metadata for a specific database including
|
||||
all tables and fields.
|
||||
Note: Call RUBE_SEARCH_TOOLS to get the full schema for this tool.
|
||||
```
|
||||
|
||||
## Common Patterns
|
||||
|
||||
- **Discover then query**: Use `METABASE_GET_API_DATABASE` to find database IDs, then `METABASE_GET_API_DATABASE_ID_METADATA` to explore tables and fields, then `METABASE_POST_API_DATASET` to run queries.
|
||||
- **SQL-first approach**: Use `METABASE_POST_API_DATASET` with `type: "native"` and write standard SQL queries for maximum flexibility.
|
||||
- **Parameterized queries**: Use `template_tags` in native queries for safe parameterization (e.g., `SELECT * FROM users WHERE id = {{user_id}}`).
|
||||
- **Schema exploration**: Use `METABASE_POST_API_DATASET_QUERY_METADATA` to understand table structures before building complex queries.
|
||||
- **Get parameter values**: Use `METABASE_POST_API_DATASET_PARAMETER_VALUES` to retrieve possible values for filter dropdowns.
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- The `database` parameter is a Metabase-internal **integer ID**, not the BigQuery project or dataset name. Use `METABASE_GET_API_DATABASE` to find valid database IDs first.
|
||||
- `source-table` in MBQL queries is also a Metabase-internal integer, not the BigQuery table name. Discover table IDs via metadata tools.
|
||||
- Native SQL queries use BigQuery SQL dialect (Standard SQL). Ensure your syntax is BigQuery-compatible.
|
||||
- `max-results` in constraints defaults can limit returned rows. Set explicitly for large result sets.
|
||||
- Responses from `METABASE_POST_API_DATASET` contain results nested under `data` -- parse carefully as the structure may be deeply nested.
|
||||
- Metabase field IDs used in MBQL `aggregation`, `breakout`, and `filter` arrays must be integers obtained from metadata responses.
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Google BigQuery-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `googlebigquery` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool | Key Parameters |
|
||||
|--------|------|----------------|
|
||||
| Run SQL query | `METABASE_POST_API_DATASET` | `database`, `type: "native"`, `native.query` |
|
||||
| Run MBQL query | `METABASE_POST_API_DATASET` | `database`, `type: "query"`, `query` |
|
||||
| Get query metadata | `METABASE_POST_API_DATASET_QUERY_METADATA` | `database`, `type`, `query` |
|
||||
| Convert to SQL | `METABASE_POST_API_DATASET_NATIVE` | `database`, `type`, `native` |
|
||||
| Get parameter values | `METABASE_POST_API_DATASET_PARAMETER_VALUES` | `parameter`, `field_ids` |
|
||||
| List databases | `METABASE_GET_API_DATABASE` | (see full schema via RUBE_SEARCH_TOOLS) |
|
||||
| Get database metadata | `METABASE_GET_API_DATABASE_ID_METADATA` | (see full schema via RUBE_SEARCH_TOOLS) |
|
||||
|
||||
---
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,24 +1,22 @@
|
||||
---
|
||||
name: googledocs-automation
|
||||
description: "Automate Google Docs tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
description: "Automate Google Docs tasks via Rube MCP (Composio): create, edit, search, export, copy, and update documents. Always search tools first for current schemas."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Google Docs Automation via Rube MCP
|
||||
|
||||
Automate Google Docs operations through Composio's Google Docs toolkit via Rube MCP.
|
||||
Create, edit, search, export, and manage Google Docs documents programmatically using Rube MCP (Composio).
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/googledocs](https://composio.dev/toolkits/googledocs)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Google Docs connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googledocs`
|
||||
- Active connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googledocs`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
@@ -26,66 +24,101 @@ Automate Google Docs operations through Composio's Google Docs toolkit via Rube
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. Create a New Document
|
||||
Use `GOOGLEDOCS_CREATE_DOCUMENT` to create a new Google Doc with a title and initial text content.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Google Docs operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: GOOGLEDOCS_CREATE_DOCUMENT
|
||||
Parameters:
|
||||
- title (required): Document filename/title
|
||||
- text (required): Initial text content to insert into the document
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
### 2. Search for Documents
|
||||
Use `GOOGLEDOCS_SEARCH_DOCUMENTS` to find Google Docs by name, content, date, or sharing status.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Google Docs task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: GOOGLEDOCS_SEARCH_DOCUMENTS
|
||||
Parameters:
|
||||
- query: Search query string
|
||||
- max_results: Limit number of results
|
||||
- modified_after / created_after: Filter by date
|
||||
- shared_with_me: Filter shared documents
|
||||
- starred_only: Filter starred documents
|
||||
- include_shared_drives: Search shared drives
|
||||
- order_by: Sort results
|
||||
- page_token: Pagination token
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
### 3. Update Document Content with Markdown
|
||||
Use `GOOGLEDOCS_UPDATE_DOCUMENT_MARKDOWN` to replace the entire content of a document with Markdown-formatted text.
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["googledocs"]
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLEDOCS_UPDATE_DOCUMENT_MARKDOWN
|
||||
Parameters:
|
||||
- id (required): Document ID
|
||||
- markdown (required): Markdown content to replace entire document body
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Find and Replace Text
|
||||
Use `GOOGLEDOCS_REPLACE_ALL_TEXT` to replace all occurrences of a string in a document.
|
||||
```
|
||||
Tool: GOOGLEDOCS_REPLACE_ALL_TEXT
|
||||
Parameters:
|
||||
- document_id (required): Target document ID
|
||||
- find_text (required): Text to search for
|
||||
- replace_text (required): Replacement text
|
||||
- match_case: Case-sensitive matching (boolean)
|
||||
- search_by_regex: Use regex for find_text
|
||||
- tab_ids: Specific tabs to search
|
||||
```
|
||||
|
||||
### 5. Export Document as PDF
|
||||
Use `GOOGLEDOCS_EXPORT_DOCUMENT_AS_PDF` to export a Google Doc to PDF format.
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLEDOCS_EXPORT_DOCUMENT_AS_PDF
|
||||
Parameters:
|
||||
- file_id (required): Document file ID
|
||||
- filename: Output PDF filename
|
||||
```
|
||||
|
||||
### 6. Copy a Document
|
||||
Use `GOOGLEDOCS_COPY_DOCUMENT` to duplicate an existing Google Doc.
|
||||
```
|
||||
Tool: GOOGLEDOCS_COPY_DOCUMENT
|
||||
Parameters:
|
||||
- document_id (required): Source document ID to copy
|
||||
- title: Title for the new copy
|
||||
- include_shared_drives: Search shared drives for the source
|
||||
```
|
||||
|
||||
## Common Patterns
|
||||
|
||||
- **Search then edit**: Use `GOOGLEDOCS_SEARCH_DOCUMENTS` to find a document by name, then use the returned document ID with `GOOGLEDOCS_UPDATE_DOCUMENT_MARKDOWN` or `GOOGLEDOCS_REPLACE_ALL_TEXT` to modify it.
|
||||
- **Create from template**: Use `GOOGLEDOCS_COPY_DOCUMENT` to duplicate a template, then `GOOGLEDOCS_REPLACE_ALL_TEXT` to fill in placeholder text.
|
||||
- **Retrieve then update**: Use `GOOGLEDOCS_GET_DOCUMENT_BY_ID` to read current content, then apply edits with `GOOGLEDOCS_UPDATE_EXISTING_DOCUMENT`.
|
||||
- **Batch text insertion**: Use `GOOGLEDOCS_INSERT_TEXT_ACTION` to insert text at specific positions (by index) or append to the end of a document.
|
||||
- **Share documents**: Combine with `GOOGLEDRIVE_ADD_FILE_SHARING_PREFERENCE` (googledrive toolkit) to share documents after creation.
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- `GOOGLEDOCS_UPDATE_DOCUMENT_MARKDOWN` replaces the **entire** document content -- it does not append. Use it for full rewrites only.
|
||||
- `GOOGLEDOCS_INSERT_TEXT_ACTION` requires a precise `insertion_index` (character position). Set `append_to_end: true` to safely add text at the end.
|
||||
- `GOOGLEDOCS_UPDATE_EXISTING_DOCUMENT` requires constructing an `editDocs` request body with raw Google Docs API batch update requests -- consult the API documentation for the correct structure.
|
||||
- Document IDs and file IDs are the same value for Google Docs, but parameter names differ across tools (`id`, `document_id`, `file_id`).
|
||||
- `GOOGLEDOCS_SEARCH_DOCUMENTS` uses Google Drive search syntax for the `query` parameter (e.g., `name contains 'report'`).
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Google Docs-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `googledocs` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool | Key Parameters |
|
||||
|--------|------|----------------|
|
||||
| Create document | `GOOGLEDOCS_CREATE_DOCUMENT` | `title`, `text` |
|
||||
| Search documents | `GOOGLEDOCS_SEARCH_DOCUMENTS` | `query`, `max_results`, `modified_after` |
|
||||
| Get document by ID | `GOOGLEDOCS_GET_DOCUMENT_BY_ID` | `id` |
|
||||
| Update with Markdown | `GOOGLEDOCS_UPDATE_DOCUMENT_MARKDOWN` | `id`, `markdown` |
|
||||
| Programmatic edits | `GOOGLEDOCS_UPDATE_EXISTING_DOCUMENT` | `document_id`, `editDocs` |
|
||||
| Insert text | `GOOGLEDOCS_INSERT_TEXT_ACTION` | `document_id`, `text_to_insert`, `insertion_index` |
|
||||
| Find and replace | `GOOGLEDOCS_REPLACE_ALL_TEXT` | `document_id`, `find_text`, `replace_text` |
|
||||
| Export as PDF | `GOOGLEDOCS_EXPORT_DOCUMENT_AS_PDF` | `file_id`, `filename` |
|
||||
| Copy document | `GOOGLEDOCS_COPY_DOCUMENT` | `document_id`, `title` |
|
||||
|
||||
---
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,108 @@
|
||||
---
|
||||
name: googlemeet-automation
|
||||
description: "Automate Google Meet tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
description: "Automate Google Meet tasks via Rube MCP (Composio): create Meet spaces, schedule video conferences via Calendar events, manage meeting access. Always search tools first for current schemas."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Google Meet Automation via Rube MCP
|
||||
|
||||
Automate Google Meet operations through Composio's Google Meet toolkit via Rube MCP.
|
||||
Create Google Meet video conferences, schedule meetings with Meet links, and manage meeting spaces using Rube MCP (Composio).
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/googlemeet](https://composio.dev/toolkits/googlemeet)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Google Meet connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googlemeet`
|
||||
- Active connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googlemeet`
|
||||
- For scheduling meetings with attendees, also connect the `googlecalendar` toolkit
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `googlemeet`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
3. Optionally also connect `googlecalendar` for scheduling meetings with calendar events
|
||||
4. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
5. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. Create a Standalone Meet Space
|
||||
Use `GOOGLEMEET_CREATE_MEET` to create a new Google Meet meeting space with optional access configuration.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Google Meet operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: GOOGLEMEET_CREATE_MEET
|
||||
Description: Creates a new Google Meet space, optionally configuring
|
||||
its access type and entry points.
|
||||
Note: Call RUBE_SEARCH_TOOLS to get the full schema for this tool.
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
### 2. Schedule a Meeting with Google Meet Link
|
||||
Use `GOOGLECALENDAR_CREATE_EVENT` to create a calendar event that automatically generates a Google Meet link (enabled by default).
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Google Meet task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: GOOGLECALENDAR_CREATE_EVENT
|
||||
Parameters:
|
||||
- start_datetime (required): ISO 8601 format (e.g., "2025-01-16T13:00:00")
|
||||
- summary: Meeting title
|
||||
- attendees: List of email addresses
|
||||
- timezone: IANA timezone (e.g., "America/New_York")
|
||||
- event_duration_hour: Duration hours (default: 0)
|
||||
- event_duration_minutes: Duration minutes (default: 30, max: 59)
|
||||
- create_meeting_room: true (default) -- generates Meet link
|
||||
- description: Meeting agenda/notes
|
||||
- location: Physical or virtual location
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
### 3. Find Available Time Slots
|
||||
Use `GOOGLECALENDAR_FIND_FREE_SLOTS` before scheduling to find when participants are available.
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["googlemeet"]
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLECALENDAR_FIND_FREE_SLOTS
|
||||
Parameters:
|
||||
- items: List of calendar IDs to check (e.g., ["primary", "user@example.com"])
|
||||
- time_min: Start of time window (ISO format)
|
||||
- time_max: End of time window (ISO format)
|
||||
- timezone: IANA timezone
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Update an Existing Meeting
|
||||
Use `GOOGLECALENDAR_PATCH_EVENT` to modify meeting details, reschedule, or update attendees.
|
||||
```
|
||||
Tool: GOOGLECALENDAR_PATCH_EVENT
|
||||
Parameters:
|
||||
- calendar_id (required): Calendar ID (use "primary")
|
||||
- event_id (required): Event ID (from search/list)
|
||||
- summary: Updated title
|
||||
- start_time / end_time: Rescheduled times
|
||||
- attendees: Updated attendee list (replaces existing)
|
||||
- send_updates: Notification preference ("all", "externalOnly", "none")
|
||||
```
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
## Common Patterns
|
||||
|
||||
- **Quick meeting link**: Use `GOOGLEMEET_CREATE_MEET` for an instant meeting space without a calendar event.
|
||||
- **Scheduled meeting with attendees**: Use `GOOGLECALENDAR_CREATE_EVENT` with `create_meeting_room: true` (default) to create a calendar event with an embedded Meet link. Workspace accounts get a Meet link automatically.
|
||||
- **Check availability first**: Use `GOOGLECALENDAR_FIND_FREE_SLOTS` to find open time slots before scheduling with `GOOGLECALENDAR_CREATE_EVENT`.
|
||||
- **Resolve names to emails**: Use `GMAIL_SEARCH_PEOPLE` (gmail toolkit) to look up email addresses from names before adding attendees.
|
||||
- **Get current time**: Use `GOOGLECALENDAR_GET_CURRENT_DATE_TIME` with a timezone to get the current date/time for scheduling relative to "now".
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Attendees must be email addresses**: `GOOGLECALENDAR_CREATE_EVENT` only accepts email addresses for attendees, not names. Use `GMAIL_SEARCH_PEOPLE` to resolve names to emails first.
|
||||
- **Personal Gmail vs Workspace**: The `create_meeting_room` feature works best with Google Workspace accounts. Personal Gmail accounts will gracefully fallback to creating an event without a Meet link.
|
||||
- **start_datetime format**: Must be exact ISO 8601 (e.g., `2025-01-16T13:00:00`). Natural language like "tomorrow at 3pm" is NOT supported.
|
||||
- **Duration limits**: `event_duration_minutes` max is 59. For 1+ hour meetings, use `event_duration_hour` combined with `event_duration_minutes`.
|
||||
- **Timezone is critical**: Always provide `timezone` as a valid IANA identifier (e.g., `America/New_York`). Abbreviations like "EST" or "PST" are NOT valid.
|
||||
- **Event IDs are opaque**: To update or delete events, you must first retrieve the event ID using a search or list tool.
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Google Meet-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `googlemeet` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool | Key Parameters |
|
||||
|--------|------|----------------|
|
||||
| Create Meet space | `GOOGLEMEET_CREATE_MEET` | (see full schema via RUBE_SEARCH_TOOLS) |
|
||||
| Schedule meeting | `GOOGLECALENDAR_CREATE_EVENT` | `start_datetime`, `summary`, `attendees`, `timezone` |
|
||||
| Find free slots | `GOOGLECALENDAR_FIND_FREE_SLOTS` | `items`, `time_min`, `time_max`, `timezone` |
|
||||
| Update meeting | `GOOGLECALENDAR_PATCH_EVENT` | `calendar_id`, `event_id`, `summary`, `start_time` |
|
||||
| Get current time | `GOOGLECALENDAR_GET_CURRENT_DATE_TIME` | `timezone` |
|
||||
| Look up contacts | `GMAIL_SEARCH_PEOPLE` | `query` |
|
||||
|
||||
---
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,24 +1,22 @@
|
||||
---
|
||||
name: googlephotos-automation
|
||||
description: "Automate Google Photos tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
description: "Automate Google Photos tasks via Rube MCP (Composio): upload media, manage albums, search photos, batch add items, create and update albums. Always search tools first for current schemas."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Google Photos Automation via Rube MCP
|
||||
|
||||
Automate Google Photos operations through Composio's Google Photos toolkit via Rube MCP.
|
||||
Upload photos, manage albums, search media items, and batch-organize content in Google Photos using Rube MCP (Composio).
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/googlephotos](https://composio.dev/toolkits/googlephotos)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Google Photos connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googlephotos`
|
||||
- Active connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googlephotos`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
@@ -26,66 +24,101 @@ Automate Google Photos operations through Composio's Google Photos toolkit via R
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. List Albums
|
||||
Use `GOOGLEPHOTOS_LIST_ALBUMS` to retrieve all albums visible in the user's Albums tab.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Google Photos operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: GOOGLEPHOTOS_LIST_ALBUMS
|
||||
Parameters:
|
||||
- pageSize: Number of albums per page
|
||||
- pageToken: Pagination token
|
||||
- excludeNonAppCreatedData: Only show albums created by this app
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
### 2. Create a New Album
|
||||
Use `GOOGLEPHOTOS_CREATE_ALBUM` to create a new album in Google Photos.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Google Photos task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: GOOGLEPHOTOS_CREATE_ALBUM
|
||||
Parameters:
|
||||
- title (required): Album title
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
### 3. Upload Media
|
||||
Use `GOOGLEPHOTOS_UPLOAD_MEDIA` to upload an image or video file to Google Photos.
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["googlephotos"]
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLEPHOTOS_UPLOAD_MEDIA
|
||||
Parameters:
|
||||
- file_to_upload: Local file path to upload
|
||||
- url: URL of file to upload (alternative to file_to_upload)
|
||||
- file_name: Name for the uploaded file
|
||||
- description: Description/caption for the media item
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Batch Upload and Create Media Items
|
||||
Use `GOOGLEPHOTOS_BATCH_CREATE_MEDIA_ITEMS` to upload multiple files and create media items in one operation.
|
||||
```
|
||||
Tool: GOOGLEPHOTOS_BATCH_CREATE_MEDIA_ITEMS
|
||||
Parameters:
|
||||
- files: Local file paths to upload
|
||||
- urls: URLs of files to upload
|
||||
- media_files: Mixed input (files and URLs)
|
||||
- albumId: Album to add items to
|
||||
- albumPosition: Position within the album
|
||||
```
|
||||
|
||||
### 5. Search Media Items
|
||||
Use `GOOGLEPHOTOS_SEARCH_MEDIA_ITEMS` to search the user's photo library with filters.
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLEPHOTOS_SEARCH_MEDIA_ITEMS
|
||||
Parameters:
|
||||
- albumId: Filter by album
|
||||
- filters: Search filters (date ranges, content categories, media types)
|
||||
- orderBy: Sort order
|
||||
- pageSize: Results per page
|
||||
- pageToken: Pagination token
|
||||
```
|
||||
|
||||
### 6. Add Items to an Album
|
||||
Use `GOOGLEPHOTOS_BATCH_ADD_MEDIA_ITEMS` to add existing media items to an album.
|
||||
```
|
||||
Tool: GOOGLEPHOTOS_BATCH_ADD_MEDIA_ITEMS
|
||||
Parameters:
|
||||
- albumId (required): Target album ID
|
||||
- mediaItemIds (required): Array of media item IDs to add
|
||||
```
|
||||
|
||||
## Common Patterns
|
||||
|
||||
- **Create album then upload**: Use `GOOGLEPHOTOS_CREATE_ALBUM` to create an album, then `GOOGLEPHOTOS_BATCH_CREATE_MEDIA_ITEMS` with the album ID to upload and organize photos in one step.
|
||||
- **List then organize**: Use `GOOGLEPHOTOS_SEARCH_MEDIA_ITEMS` or `GOOGLEPHOTOS_LIST_MEDIA_ITEMS` to find media item IDs, then `GOOGLEPHOTOS_BATCH_ADD_MEDIA_ITEMS` to add them to albums.
|
||||
- **Update album metadata**: Use `GOOGLEPHOTOS_UPDATE_ALBUM` to change an album's title or cover photo.
|
||||
- **Get album details**: Use `GOOGLEPHOTOS_GET_ALBUM` with an album ID to retrieve full album information.
|
||||
- **Add enrichments**: Use `GOOGLEPHOTOS_ADD_ENRICHMENT` to add text overlays, locations, or map enrichments to album positions.
|
||||
- **Upload from URLs**: Use the `url` parameter in `GOOGLEPHOTOS_UPLOAD_MEDIA` or `urls` in `GOOGLEPHOTOS_BATCH_CREATE_MEDIA_ITEMS` to upload images directly from web URLs.
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- `GOOGLEPHOTOS_LIST_MEDIA_ITEMS` is **deprecated** -- prefer `GOOGLEPHOTOS_SEARCH_MEDIA_ITEMS` for listing and filtering media.
|
||||
- `GOOGLEPHOTOS_UPLOAD_MEDIA` supports images up to **200MB** and videos up to a larger limit. Exceeding these will fail.
|
||||
- Album IDs must be obtained from `GOOGLEPHOTOS_LIST_ALBUMS` or `GOOGLEPHOTOS_CREATE_ALBUM` responses -- they are opaque strings.
|
||||
- `GOOGLEPHOTOS_BATCH_ADD_MEDIA_ITEMS` can only add items to albums **created by the app** or albums the user owns.
|
||||
- The `filters` parameter in `GOOGLEPHOTOS_SEARCH_MEDIA_ITEMS` uses a specific Google Photos API filter structure -- consult the schema for date range and content category formats.
|
||||
- Media items created via the API may not immediately appear in the Google Photos web UI due to processing delays.
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Google Photos-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `googlephotos` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool | Key Parameters |
|
||||
|--------|------|----------------|
|
||||
| List albums | `GOOGLEPHOTOS_LIST_ALBUMS` | `pageSize`, `pageToken` |
|
||||
| Create album | `GOOGLEPHOTOS_CREATE_ALBUM` | `title` |
|
||||
| Get album | `GOOGLEPHOTOS_GET_ALBUM` | `albumId` |
|
||||
| Update album | `GOOGLEPHOTOS_UPDATE_ALBUM` | `albumId`, `title`, `coverPhotoMediaItemId` |
|
||||
| Upload media | `GOOGLEPHOTOS_UPLOAD_MEDIA` | `file_to_upload` or `url`, `description` |
|
||||
| Batch upload | `GOOGLEPHOTOS_BATCH_CREATE_MEDIA_ITEMS` | `files` or `urls`, `albumId` |
|
||||
| Search media | `GOOGLEPHOTOS_SEARCH_MEDIA_ITEMS` | `albumId`, `filters`, `pageSize` |
|
||||
| List media items | `GOOGLEPHOTOS_LIST_MEDIA_ITEMS` | `pageSize`, `pageToken` |
|
||||
| Add items to album | `GOOGLEPHOTOS_BATCH_ADD_MEDIA_ITEMS` | `albumId`, `mediaItemIds` |
|
||||
| Add enrichment | `GOOGLEPHOTOS_ADD_ENRICHMENT` | `albumId`, `newEnrichmentItem`, `albumPosition` |
|
||||
|
||||
---
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,24 +1,22 @@
|
||||
---
|
||||
name: googleslides-automation
|
||||
description: "Automate Google Slides tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
description: "Automate Google Slides tasks via Rube MCP (Composio): create presentations, add slides from Markdown, batch update, copy from templates, get thumbnails. Always search tools first for current schemas."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Google Slides Automation via Rube MCP
|
||||
|
||||
Automate Google Slides operations through Composio's Google Slides toolkit via Rube MCP.
|
||||
Create, edit, and manage Google Slides presentations programmatically using Rube MCP (Composio).
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/googleslides](https://composio.dev/toolkits/googleslides)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Google Slides connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googleslides`
|
||||
- Active connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googleslides`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
@@ -26,66 +24,93 @@ Automate Google Slides operations through Composio's Google Slides toolkit via R
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. Create a Blank Presentation
|
||||
Use `GOOGLESLIDES_PRESENTATIONS_CREATE` to initialize a new blank presentation.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Google Slides operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: GOOGLESLIDES_PRESENTATIONS_CREATE
|
||||
Parameters:
|
||||
- title (required): Title for the new presentation
|
||||
- presentationId (optional): Specific ID to assign (usually auto-generated)
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
### 2. Create Slides from Markdown
|
||||
Use `GOOGLESLIDES_CREATE_SLIDES_MARKDOWN` to generate a full presentation from Markdown text. Content is automatically split into slides.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Google Slides task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: GOOGLESLIDES_CREATE_SLIDES_MARKDOWN
|
||||
Parameters:
|
||||
- title (required): Presentation title
|
||||
- markdown_text (required): Markdown content (auto-split into slides)
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
### 3. Batch Update a Presentation
|
||||
Use `GOOGLESLIDES_PRESENTATIONS_BATCH_UPDATE` to apply updates to an existing presentation using Markdown or raw API requests.
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["googleslides"]
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLESLIDES_PRESENTATIONS_BATCH_UPDATE
|
||||
Parameters:
|
||||
- presentationId (required): Target presentation ID
|
||||
- markdown_text: Markdown content to update slides
|
||||
- requests: Raw Google Slides API batch update requests
|
||||
- writeControl: Write control settings
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Copy from Template
|
||||
Use `GOOGLESLIDES_PRESENTATIONS_COPY_FROM_TEMPLATE` to duplicate an existing presentation as a template.
|
||||
```
|
||||
Tool: GOOGLESLIDES_PRESENTATIONS_COPY_FROM_TEMPLATE
|
||||
Parameters:
|
||||
- template_presentation_id (required): Source template presentation ID
|
||||
- new_title (required): Title for the new copy
|
||||
- parent_folder_id (optional): Google Drive folder for the copy
|
||||
```
|
||||
|
||||
### 5. Get Presentation Details
|
||||
Use `GOOGLESLIDES_PRESENTATIONS_GET` to retrieve the current state of a presentation including all slides and elements.
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLESLIDES_PRESENTATIONS_GET
|
||||
Parameters:
|
||||
- presentationId (required): Presentation ID to retrieve
|
||||
- fields (optional): Specific fields to return
|
||||
```
|
||||
|
||||
### 6. Generate Slide Thumbnails
|
||||
Use `GOOGLESLIDES_PRESENTATIONS_PAGES_GET_THUMBNAIL` to generate a thumbnail image URL for a specific slide.
|
||||
```
|
||||
Tool: GOOGLESLIDES_PRESENTATIONS_PAGES_GET_THUMBNAIL
|
||||
Parameters:
|
||||
- presentationId (required): Presentation ID
|
||||
- pageObjectId (required): Page/slide object ID
|
||||
- thumbnailProperties.mimeType: Image format (e.g., PNG)
|
||||
- thumbnailProperties.thumbnailSize: Thumbnail size
|
||||
```
|
||||
|
||||
## Common Patterns
|
||||
|
||||
- **Markdown-first workflow**: Use `GOOGLESLIDES_CREATE_SLIDES_MARKDOWN` to quickly generate presentations from structured text. The tool auto-splits content into separate slides.
|
||||
- **Template-based generation**: Use `GOOGLESLIDES_PRESENTATIONS_COPY_FROM_TEMPLATE` to copy a styled template, then `GOOGLESLIDES_PRESENTATIONS_BATCH_UPDATE` to fill in content.
|
||||
- **Retrieve then modify**: Use `GOOGLESLIDES_PRESENTATIONS_GET` to inspect slide structure and object IDs, then `GOOGLESLIDES_PRESENTATIONS_BATCH_UPDATE` to make targeted changes.
|
||||
- **Export thumbnails**: Use `GOOGLESLIDES_PRESENTATIONS_PAGES_GET` to list page object IDs, then `GOOGLESLIDES_PRESENTATIONS_PAGES_GET_THUMBNAIL` to generate preview images.
|
||||
- **Share presentations**: Combine with `GOOGLEDRIVE_ADD_FILE_SHARING_PREFERENCE` (googledrive toolkit) to share after creation.
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- `GOOGLESLIDES_CREATE_SLIDES_MARKDOWN` creates a brand-new presentation each time -- it cannot append to an existing one.
|
||||
- `GOOGLESLIDES_PRESENTATIONS_BATCH_UPDATE` with raw `requests` requires knowledge of the Google Slides API request format. Prefer `markdown_text` for simpler updates.
|
||||
- Page object IDs must be obtained from `GOOGLESLIDES_PRESENTATIONS_GET` before using thumbnail or page-get tools.
|
||||
- The `presentationId` is the long alphanumeric string from the Google Slides URL (between `/d/` and `/edit`).
|
||||
- Copying from a template requires the authenticated user to have at least read access to the template presentation.
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Google Slides-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `googleslides` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool | Key Parameters |
|
||||
|--------|------|----------------|
|
||||
| Create blank presentation | `GOOGLESLIDES_PRESENTATIONS_CREATE` | `title` |
|
||||
| Create from Markdown | `GOOGLESLIDES_CREATE_SLIDES_MARKDOWN` | `title`, `markdown_text` |
|
||||
| Batch update slides | `GOOGLESLIDES_PRESENTATIONS_BATCH_UPDATE` | `presentationId`, `markdown_text` or `requests` |
|
||||
| Copy from template | `GOOGLESLIDES_PRESENTATIONS_COPY_FROM_TEMPLATE` | `template_presentation_id`, `new_title` |
|
||||
| Get presentation | `GOOGLESLIDES_PRESENTATIONS_GET` | `presentationId` |
|
||||
| Get page details | `GOOGLESLIDES_PRESENTATIONS_PAGES_GET` | `presentationId`, `pageObjectId` |
|
||||
| Get slide thumbnail | `GOOGLESLIDES_PRESENTATIONS_PAGES_GET_THUMBNAIL` | `presentationId`, `pageObjectId` |
|
||||
|
||||
---
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,24 +1,22 @@
|
||||
---
|
||||
name: googletasks-automation
|
||||
description: "Automate Google Tasks tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
description: "Automate Google Tasks via Rube MCP (Composio): create, list, update, delete, move, and bulk-insert tasks and task lists. Always search tools first for current schemas."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Google Tasks Automation via Rube MCP
|
||||
|
||||
Automate Google Tasks operations through Composio's Google Tasks toolkit via Rube MCP.
|
||||
Create, manage, organize, and bulk-operate on Google Tasks and task lists using Rube MCP (Composio).
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/googletasks](https://composio.dev/toolkits/googletasks)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Google Tasks connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googletasks`
|
||||
- Active connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googletasks`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
@@ -26,66 +24,113 @@ Automate Google Tasks operations through Composio's Google Tasks toolkit via Rub
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. List All Task Lists
|
||||
Use `GOOGLETASKS_LIST_TASK_LISTS` to fetch all available task lists for the authenticated user.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Google Tasks operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: GOOGLETASKS_LIST_TASK_LISTS
|
||||
Parameters:
|
||||
- maxResults: Maximum task lists to return
|
||||
- pageToken: Pagination token for next page
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
### 2. Create a New Task
|
||||
Use `GOOGLETASKS_INSERT_TASK` to add a new task to a specific task list.
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Google Tasks task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: GOOGLETASKS_INSERT_TASK
|
||||
Parameters:
|
||||
- tasklist_id (required): ID of the target task list
|
||||
- title (required): Task title
|
||||
- notes: Task description/notes
|
||||
- due: Due date in RFC3339 format (e.g., "2025-01-20T00:00:00.000Z")
|
||||
- status: "needsAction" or "completed"
|
||||
- task_parent: Parent task ID (to create subtask)
|
||||
- task_previous: Previous task ID (for ordering)
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
### 3. List All Tasks Across Lists
|
||||
Use `GOOGLETASKS_LIST_ALL_TASKS` to fetch tasks across all task lists with optional filters.
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["googletasks"]
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLETASKS_LIST_ALL_TASKS
|
||||
Parameters:
|
||||
- max_tasks_total: Maximum total tasks to return
|
||||
- showCompleted: Include completed tasks
|
||||
- showDeleted: Include deleted tasks
|
||||
- showHidden: Include hidden tasks
|
||||
- dueMin / dueMax: Filter by due date range
|
||||
- completedMin / completedMax: Filter by completion date
|
||||
- updatedMin: Filter by last update time
|
||||
- showAssigned: Include assigned tasks
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Update an Existing Task
|
||||
Use `GOOGLETASKS_UPDATE_TASK` to modify a task's title, notes, due date, or status.
|
||||
```
|
||||
Tool: GOOGLETASKS_UPDATE_TASK
|
||||
Parameters:
|
||||
- tasklist_id (required): Task list ID
|
||||
- task_id (required): Task ID to update
|
||||
- title: New title
|
||||
- notes: Updated notes
|
||||
- due: New due date (RFC3339)
|
||||
- status: "needsAction" or "completed"
|
||||
```
|
||||
|
||||
### 5. Bulk Insert Tasks
|
||||
Use `GOOGLETASKS_BULK_INSERT_TASKS` to create multiple tasks at once in a single operation.
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: GOOGLETASKS_BULK_INSERT_TASKS
|
||||
Parameters:
|
||||
- tasklist_id (required): Target task list ID
|
||||
- tasks (required): Array of task objects (each with title, notes, due, status)
|
||||
- batch_size: Number of tasks per batch request
|
||||
```
|
||||
|
||||
### 6. Delete or Clear Tasks
|
||||
Use `GOOGLETASKS_DELETE_TASK` to remove a specific task, or `GOOGLETASKS_CLEAR_TASKS` to permanently remove all completed tasks from a list.
|
||||
```
|
||||
Tool: GOOGLETASKS_DELETE_TASK
|
||||
Parameters:
|
||||
- tasklist_id (required): Task list ID
|
||||
- task_id (required): Task ID to delete
|
||||
|
||||
Tool: GOOGLETASKS_CLEAR_TASKS
|
||||
Parameters:
|
||||
- tasklist (required): Task list ID to clear completed tasks from
|
||||
```
|
||||
|
||||
## Common Patterns
|
||||
|
||||
- **Get task list ID first**: Always start with `GOOGLETASKS_LIST_TASK_LISTS` to discover available task lists and their IDs before creating or listing tasks.
|
||||
- **List then update**: Use `GOOGLETASKS_LIST_ALL_TASKS` or `GOOGLETASKS_LIST_TASKS` to find task IDs, then use `GOOGLETASKS_UPDATE_TASK` to modify them.
|
||||
- **Mark complete**: Update a task with `status: "completed"` using `GOOGLETASKS_UPDATE_TASK`.
|
||||
- **Create subtasks**: Use `GOOGLETASKS_INSERT_TASK` with the `task_parent` parameter set to the parent task's ID.
|
||||
- **Reorder tasks**: Use `GOOGLETASKS_MOVE_TASK` to change a task's position within its list or reparent it.
|
||||
- **Batch creation**: Use `GOOGLETASKS_BULK_INSERT_TASKS` for creating many tasks at once (e.g., importing from another system).
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- Both `tasklist_id` and `task_id` are **required** for `GOOGLETASKS_UPDATE_TASK`, `GOOGLETASKS_DELETE_TASK`, and `GOOGLETASKS_GET_TASK`. You cannot operate on a task without knowing which list it belongs to.
|
||||
- All date/time strings must be in **RFC3339 format** (e.g., `2025-01-20T00:00:00.000Z`). Other formats will be rejected.
|
||||
- `GOOGLETASKS_CLEAR_TASKS` permanently deletes all **completed** tasks from a list. This action is irreversible.
|
||||
- `GOOGLETASKS_LIST_ALL_TASKS` fetches across all lists but results may be paginated -- check for pagination tokens.
|
||||
- Task list IDs are not the same as task list names. Always resolve names to IDs using `GOOGLETASKS_LIST_TASK_LISTS`.
|
||||
- The default task list is typically named "My Tasks" but its ID is an opaque string, not "default" or "primary".
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Google Tasks-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `googletasks` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool | Key Parameters |
|
||||
|--------|------|----------------|
|
||||
| List task lists | `GOOGLETASKS_LIST_TASK_LISTS` | `maxResults`, `pageToken` |
|
||||
| List all tasks | `GOOGLETASKS_LIST_ALL_TASKS` | `max_tasks_total`, `showCompleted`, `dueMin` |
|
||||
| List tasks in a list | `GOOGLETASKS_LIST_TASKS` | `tasklist_id`, `maxResults`, `showCompleted` |
|
||||
| Get single task | `GOOGLETASKS_GET_TASK` | `tasklist_id`, `task_id` |
|
||||
| Create task | `GOOGLETASKS_INSERT_TASK` | `tasklist_id`, `title`, `notes`, `due` |
|
||||
| Bulk create tasks | `GOOGLETASKS_BULK_INSERT_TASKS` | `tasklist_id`, `tasks` |
|
||||
| Update task | `GOOGLETASKS_UPDATE_TASK` | `tasklist_id`, `task_id`, `title`, `status` |
|
||||
| Delete task | `GOOGLETASKS_DELETE_TASK` | `tasklist_id`, `task_id` |
|
||||
| Move/reorder task | `GOOGLETASKS_MOVE_TASK` | `tasklist_id`, `task_id` |
|
||||
| Clear completed | `GOOGLETASKS_CLEAR_TASKS` | `tasklist` |
|
||||
|
||||
---
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,145 @@
|
||||
---
|
||||
name: gorgias-automation
|
||||
description: "Automate Gorgias tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Gorgias Automation
|
||||
description: "Automate e-commerce customer support workflows in Gorgias -- manage tickets, customers, tags, and teams through natural language commands."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Gorgias Automation via Rube MCP
|
||||
# Gorgias Automation
|
||||
|
||||
Automate Gorgias operations through Composio's Gorgias toolkit via Rube MCP.
|
||||
Automate your Gorgias helpdesk operations directly from Claude Code. Create, update, and triage support tickets, manage customers, and organize your support team -- all without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/gorgias](https://composio.dev/toolkits/gorgias)
|
||||
**Toolkit docs:** [composio.dev/toolkits/gorgias](https://composio.dev/toolkits/gorgias)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Gorgias connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `gorgias`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your Claude Code config with URL: `https://rube.app/mcp`
|
||||
2. When prompted, authenticate your Gorgias account through the connection link provided
|
||||
3. Start automating your support workflows with natural language
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `gorgias`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List and Filter Tickets
|
||||
|
||||
Retrieve tickets with filtering by status, channel, assignee, date range, and more.
|
||||
|
||||
**Tool:** `GORGIAS_LIST_TICKETS`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Gorgias operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
List all open tickets from the email channel created in the last 7 days
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Key parameters:
|
||||
- `status` -- filter by ticket status (e.g., "open", "closed")
|
||||
- `channel` -- filter by channel (e.g., "email", "chat")
|
||||
- `assignee_user_id` / `assignee_team_id` -- filter by assigned agent or team
|
||||
- `created_from` / `created_to` -- ISO date range filters
|
||||
- `limit` (max 100) / `offset` -- pagination controls
|
||||
- `order_by` / `order_dir` -- sorting options
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Create and Update Tickets
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Create new tickets or update existing ones with assignment, priority, and status changes.
|
||||
|
||||
**Tools:** `GORGIAS_CREATE_TICKET`, `GORGIAS_UPDATE_TICKET`, `GORGIAS_GET_TICKET`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Gorgias task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Create a high-priority ticket for customer 12345 about a missing order with subject "Order #9876 not delivered"
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
- `GORGIAS_CREATE_TICKET` requires `customer_id`; accepts `subject`, `status`, `priority`, `channel`, `messages`, `tags`
|
||||
- `GORGIAS_UPDATE_TICKET` requires `ticket_id`; all other fields are optional partial updates
|
||||
- `GORGIAS_GET_TICKET` retrieves full ticket details by `ticket_id`
|
||||
|
||||
### 3. Manage Ticket Tags
|
||||
|
||||
Add tags to tickets for categorization, routing, and reporting.
|
||||
|
||||
**Tools:** `GORGIAS_ADD_TICKET_TAGS`, `GORGIAS_LIST_TICKET_TAGS`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["gorgias"]
|
||||
session_id: "your_session_id"
|
||||
Add tags 101 and 202 to ticket 5678, then show me all tags on that ticket
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
- `GORGIAS_ADD_TICKET_TAGS` requires `ticket_id` and `tag_ids` (array of integers)
|
||||
- `GORGIAS_LIST_TICKET_TAGS` requires `ticket_id` to retrieve current tags
|
||||
|
||||
### 4. Customer Management
|
||||
|
||||
Create new customers or merge duplicate customer records.
|
||||
|
||||
**Tools:** `GORGIAS_CREATE_CUSTOMER`, `GORGIAS_MERGE_CUSTOMERS`, `GORGIAS_LIST_CUSTOMERS`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Create a new customer named "Jane Doe" with email jane@example.com and phone channel
|
||||
```
|
||||
|
||||
- `GORGIAS_CREATE_CUSTOMER` requires `name`; accepts `email`, `channels` (array with `type` and `value`), `external_id`, `address`, `data`
|
||||
- `GORGIAS_MERGE_CUSTOMERS` requires `source_customer_id` and `target_customer_id` -- source is merged into target
|
||||
- `GORGIAS_LIST_CUSTOMERS` retrieves customers with filtering options
|
||||
|
||||
### 5. Team and Account Operations
|
||||
|
||||
List teams, retrieve account info, and inspect ticket custom fields.
|
||||
|
||||
**Tools:** `GORGIAS_LIST_TEAMS`, `GORGIAS_GET_TEAM`, `GORGIAS_GET_ACCOUNT`, `GORGIAS_LIST_TICKET_FIELD_VALUES`
|
||||
|
||||
```
|
||||
Show me all support teams in our Gorgias account
|
||||
```
|
||||
|
||||
- `GORGIAS_GET_ACCOUNT` returns account-level metrics and configuration
|
||||
- `GORGIAS_LIST_TEAMS` / `GORGIAS_GET_TEAM` manage team lookup
|
||||
- `GORGIAS_LIST_TICKET_FIELD_VALUES` returns custom field values for a given ticket
|
||||
|
||||
### 6. Activity and Event Tracking
|
||||
|
||||
Monitor ticket activity and customer event history.
|
||||
|
||||
**Tools:** `GORGIAS_LIST_EVENTS`
|
||||
|
||||
```
|
||||
List recent events to see what activity has happened across our support queue
|
||||
```
|
||||
|
||||
- `GORGIAS_LIST_EVENTS` provides an activity timeline with filtering options
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Pagination required:** `GORGIAS_LIST_TICKETS` uses `limit`/`offset` pagination. Failing to loop through pages will miss older tickets and produce incomplete data.
|
||||
- **Filter specificity:** Missing or overly broad filters on `GORGIAS_LIST_TICKETS` can overload the export or omit the desired reporting window. Always set `created_from`/`created_to` for time-bound queries.
|
||||
- **Custom fields are separate:** Key business KPIs may only exist in custom fields. You must query `GORGIAS_LIST_TICKET_FIELD_VALUES` explicitly to include them.
|
||||
- **Rate limits:** High-volume exports across `GORGIAS_LIST_TICKETS` and related endpoints can hit Gorgias rate limits. Add backoff and resume from the last offset.
|
||||
- **Auth errors:** 401/403 responses on any Gorgias tool indicate token or permission issues. Do not treat partial data as a complete dataset.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Gorgias-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `gorgias` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `GORGIAS_LIST_TICKETS` | List tickets with filters (status, channel, date, assignee) |
|
||||
| `GORGIAS_GET_TICKET` | Retrieve a specific ticket by ID |
|
||||
| `GORGIAS_CREATE_TICKET` | Create a new ticket (requires `customer_id`) |
|
||||
| `GORGIAS_UPDATE_TICKET` | Update ticket fields (requires `ticket_id`) |
|
||||
| `GORGIAS_ADD_TICKET_TAGS` | Add tags to a ticket |
|
||||
| `GORGIAS_LIST_TICKET_TAGS` | List all tags on a ticket |
|
||||
| `GORGIAS_LIST_TICKET_FIELD_VALUES` | List custom field values for a ticket |
|
||||
| `GORGIAS_CREATE_CUSTOMER` | Create a new customer (requires `name`) |
|
||||
| `GORGIAS_MERGE_CUSTOMERS` | Merge two customer records |
|
||||
| `GORGIAS_LIST_CUSTOMERS` | List customers with filters |
|
||||
| `GORGIAS_LIST_TEAMS` | List all teams |
|
||||
| `GORGIAS_GET_TEAM` | Retrieve a specific team |
|
||||
| `GORGIAS_GET_ACCOUNT` | Retrieve account information |
|
||||
| `GORGIAS_LIST_EVENTS` | List activity events with filters |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,117 @@
|
||||
---
|
||||
name: groqcloud-automation
|
||||
description: "Automate Groqcloud tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: GroqCloud Automation
|
||||
description: "Automate AI inference, chat completions, audio translation, and TTS voice management through GroqCloud's high-performance API via Composio"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Groqcloud Automation via Rube MCP
|
||||
# GroqCloud Automation
|
||||
|
||||
Automate Groqcloud operations through Composio's Groqcloud toolkit via Rube MCP.
|
||||
Automate AI inference workflows using GroqCloud's ultra-fast API -- chat completions, model discovery, audio translation, and TTS voice selection -- all orchestrated through the Composio MCP integration.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/groqcloud](https://composio.dev/toolkits/groqcloud)
|
||||
**Toolkit docs:** [composio.dev/toolkits/groqcloud](https://composio.dev/toolkits/groqcloud)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Groqcloud connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `groqcloud`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Connect your GroqCloud account through the Composio MCP server at `https://rube.app/mcp`
|
||||
2. The agent will prompt you with an authentication link if no active connection exists
|
||||
3. Once connected, all `GROQCLOUD_*` tools become available for execution
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `groqcloud`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Discover Available Models
|
||||
List all models available on GroqCloud to find valid model IDs before running inference.
|
||||
|
||||
**Tool:** `GROQCLOUD_LIST_MODELS`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Groqcloud operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
No parameters required -- returns all available models with metadata.
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Use this as a prerequisite before any chat completion call to ensure you reference a valid, non-deprecated model ID.
|
||||
|
||||
## Core Workflow Pattern
|
||||
---
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
### 2. Run Chat Completions
|
||||
Generate AI responses for conversational prompts using a specified GroqCloud model.
|
||||
|
||||
**Tool:** `GROQCLOUD_GROQ_CREATE_CHAT_COMPLETION`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `model` | string | Yes | Model ID from `GROQCLOUD_LIST_MODELS` |
|
||||
| `messages` | array | Yes | Ordered list of `{role, content}` objects (`system`, `user`, `assistant`) |
|
||||
| `temperature` | number | No | Sampling temperature 0-2 (default: 1) |
|
||||
| `max_completion_tokens` | integer | No | Max tokens to generate |
|
||||
| `top_p` | number | No | Nucleus sampling 0-1 (default: 1) |
|
||||
| `stop` | string/array | No | Up to 4 stop sequences |
|
||||
| `stream` | boolean | No | Enable SSE streaming (default: false) |
|
||||
|
||||
---
|
||||
|
||||
### 3. Inspect Model Details
|
||||
Retrieve detailed metadata for a specific model including context window and capabilities.
|
||||
|
||||
**Tool:** `GROQCLOUD_GROQ_RETRIEVE_MODEL`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `model` | string | Yes | Model identifier (e.g., `groq-1-large`) |
|
||||
|
||||
---
|
||||
|
||||
### 4. Translate Audio to English
|
||||
Translate non-English audio files into English text using Whisper models.
|
||||
|
||||
**Tool:** `GROQCLOUD_GROQ_CREATE_AUDIO_TRANSLATION`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `file_path` | string | Yes | Local path, HTTP(S) URL, or base64 data URL for audio |
|
||||
| `model` | string | No | Model ID (default: `whisper-large-v3`). Note: `whisper-large-v3-turbo` may not support translations |
|
||||
| `response_format` | string | No | `json`, `verbose_json`, or `text` (default: `json`) |
|
||||
| `temperature` | number | No | Sampling temperature 0-1 (default: 0) |
|
||||
|
||||
---
|
||||
|
||||
### 5. List TTS Voices
|
||||
Enumerate available text-to-speech voices for Groq PlayAI models to drive voice selection UX.
|
||||
|
||||
**Tool:** `GROQCLOUD_LIST_VOICES`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Groqcloud task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Returns the set of supported TTS voices. Note: this is a static list maintained manually.
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["groqcloud"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| **Nested model list** | `GROQCLOUD_LIST_MODELS` response may be nested at `response['data']['data']` -- do not assume a flat top-level array |
|
||||
| **Hard-coded model IDs break** | Always fetch model IDs dynamically via `GROQCLOUD_LIST_MODELS`; hard-coded names can break when models are deprecated or renamed |
|
||||
| **Audio format validation** | `GROQCLOUD_GROQ_CREATE_AUDIO_TRANSLATION` rejects invalid or unsupported audio formats silently -- validate inputs before calling |
|
||||
| **Model metadata drifts** | Data from `GROQCLOUD_GROQ_RETRIEVE_MODEL` (context window, features) can change as models update -- do not treat it as static |
|
||||
| **TTS voice changes** | Voice sets from `GROQCLOUD_LIST_VOICES` may shrink or rename over time -- handle missing voices gracefully |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Groqcloud-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `groqcloud` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Purpose |
|
||||
|-----------|---------|
|
||||
| `GROQCLOUD_LIST_MODELS` | List all available models and metadata |
|
||||
| `GROQCLOUD_GROQ_CREATE_CHAT_COMPLETION` | Generate chat-based AI completions |
|
||||
| `GROQCLOUD_GROQ_RETRIEVE_MODEL` | Get detailed info for a specific model |
|
||||
| `GROQCLOUD_GROQ_CREATE_AUDIO_TRANSLATION` | Translate non-English audio to English text |
|
||||
| `GROQCLOUD_LIST_VOICES` | Retrieve available TTS voices for PlayAI |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,123 @@
|
||||
---
|
||||
name: gumroad-automation
|
||||
description: "Automate Gumroad tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Gumroad Automation
|
||||
description: "Automate Gumroad product management, sales tracking, license verification, and webhook subscriptions using natural language through the Composio MCP integration."
|
||||
category: e-commerce
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Gumroad Automation via Rube MCP
|
||||
# Gumroad Automation
|
||||
|
||||
Automate Gumroad operations through Composio's Gumroad toolkit via Rube MCP.
|
||||
Automate your Gumroad storefront -- list products, track sales, verify licenses, and manage real-time webhooks -- all through natural language commands.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/gumroad](https://composio.dev/toolkits/gumroad)
|
||||
**Toolkit docs:** [composio.dev/toolkits/gumroad](https://composio.dev/toolkits/gumroad)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Gumroad connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `gumroad`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Gumroad account when prompted (API key authentication).
|
||||
3. Start issuing natural language commands to manage your Gumroad store.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `gumroad`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List All Products
|
||||
Retrieve every product in your authenticated Gumroad account to get product IDs for downstream operations.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Gumroad operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
**Tool:** `GUMROAD_LIST_PRODUCTS`
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Example prompt:**
|
||||
> "List all my Gumroad products"
|
||||
|
||||
## Core Workflow Pattern
|
||||
**Parameters:** None required -- returns all products for the authenticated account.
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Gumroad task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
### 2. Track Sales with Filters
|
||||
Retrieve successful sales with optional filtering by email, date range, product, or pagination.
|
||||
|
||||
### Step 2: Check Connection
|
||||
**Tool:** `GUMROAD_GET_SALES`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["gumroad"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Example prompt:**
|
||||
> "Show me all Gumroad sales from January 2025 for product prod_ABC123"
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Key parameters:**
|
||||
- `after` -- ISO8601 date/time to filter sales after (e.g., `2025-01-01T00:00:00Z`)
|
||||
- `before` -- ISO8601 date/time to filter sales before
|
||||
- `email` -- Filter by customer email address
|
||||
- `product_id` -- Filter by specific product ID
|
||||
- `page` -- Page number for paginated results (minimum 1)
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
---
|
||||
|
||||
### 3. Verify License Keys
|
||||
Check if a license key is valid against a specific product, inspect usage count, or verify membership entitlement.
|
||||
|
||||
**Tool:** `GUMROAD_VERIFY_LICENSE`
|
||||
|
||||
**Example prompt:**
|
||||
> "Verify license key ABCD-EFGH-IJKL-MNOP for product prod_ABC123"
|
||||
|
||||
**Key parameters (all required):**
|
||||
- `product_id` -- The product ID to verify against (required for products created on/after Jan 9, 2023)
|
||||
- `license_key` -- The license key string (e.g., `ABCD-EFGH-IJKL-MNOP`)
|
||||
- `increment_uses_count` -- Whether to increment usage count (defaults to true)
|
||||
|
||||
---
|
||||
|
||||
### 4. Subscribe to Webhook Events
|
||||
Set up real-time event notifications by subscribing your endpoint URL to specific Gumroad resource events.
|
||||
|
||||
**Tool:** `GUMROAD_SUBSCRIBE_TO_RESOURCE`
|
||||
|
||||
**Example prompt:**
|
||||
> "Subscribe my webhook https://example.com/hook to Gumroad sale events"
|
||||
|
||||
**Key parameters (all required):**
|
||||
- `resource_name` -- One of: `sale`, `refund`, `dispute`, `dispute_won`, `cancellation`, `subscription_updated`, `subscription_ended`, `subscription_restarted`
|
||||
- `post_url` -- Your endpoint URL that receives HTTP POST notifications
|
||||
|
||||
---
|
||||
|
||||
### 5. List Active Webhook Subscriptions
|
||||
Review existing webhook subscriptions for a given resource type before adding new ones to avoid duplicates.
|
||||
|
||||
**Tool:** `GUMROAD_GET_RESOURCE_SUBSCRIPTIONS`
|
||||
|
||||
**Example prompt:**
|
||||
> "Show all my active Gumroad webhook subscriptions for sale events"
|
||||
|
||||
**Key parameters (required):**
|
||||
- `resource_name` -- One of the eight supported event types (e.g., `sale`, `refund`)
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Product ID required for license verification**: Products created on or after January 9, 2023 require the `product_id` parameter. Older products may work without it but providing it is recommended.
|
||||
- **Pagination on sales**: Sales results are paginated. Always check if more pages exist by incrementing the `page` parameter.
|
||||
- **Webhook deduplication**: Before subscribing to a resource, use `GUMROAD_GET_RESOURCE_SUBSCRIPTIONS` to check for existing subscriptions and avoid duplicate webhooks.
|
||||
- **ISO8601 date format**: Date filters on sales must use ISO8601 format (e.g., `2025-01-01T00:00:00Z`), not plain dates.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Gumroad-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `gumroad` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Required Params |
|
||||
|---|---|---|
|
||||
| List products | `GUMROAD_LIST_PRODUCTS` | None |
|
||||
| Get sales | `GUMROAD_GET_SALES` | None (all optional filters) |
|
||||
| Verify license | `GUMROAD_VERIFY_LICENSE` | `product_id`, `license_key` |
|
||||
| Subscribe to events | `GUMROAD_SUBSCRIBE_TO_RESOURCE` | `resource_name`, `post_url` |
|
||||
| List webhook subs | `GUMROAD_GET_RESOURCE_SUBSCRIPTIONS` | `resource_name` |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,153 @@
|
||||
---
|
||||
name: harvest-automation
|
||||
description: "Automate Harvest tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Harvest Automation
|
||||
description: "Automate time tracking, project management, and invoicing workflows in Harvest -- log hours, manage projects, clients, and tasks through natural language commands."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Harvest Automation via Rube MCP
|
||||
# Harvest Automation
|
||||
|
||||
Automate Harvest operations through Composio's Harvest toolkit via Rube MCP.
|
||||
Automate your Harvest time tracking operations directly from Claude Code. Log time entries, manage projects and clients, create tasks, and pull reporting data -- all without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/harvest](https://composio.dev/toolkits/harvest)
|
||||
**Toolkit docs:** [composio.dev/toolkits/harvest](https://composio.dev/toolkits/harvest)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Harvest connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `harvest`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your Claude Code config with URL: `https://rube.app/mcp`
|
||||
2. When prompted, authenticate your Harvest account through the connection link provided
|
||||
3. Start automating your time tracking workflows with natural language
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `harvest`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Log and Manage Time Entries
|
||||
|
||||
Create, list, update, and retrieve time entries for accurate billing and reporting.
|
||||
|
||||
**Tools:** `HARVEST_CREATE_TIME_ENTRY`, `HARVEST_LIST_TIME_ENTRIES`, `HARVEST_GET_TIME_ENTRY`, `HARVEST_UPDATE_TIME_ENTRY`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Harvest operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Log 3.5 hours of development work on project 12345, task 67890 for today
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Key parameters for `HARVEST_CREATE_TIME_ENTRY`:
|
||||
- `project_id` (required) -- the project to log against
|
||||
- `task_id` (required) -- the task must be assigned to the project
|
||||
- `spent_date` (required) -- date in YYYY-MM-DD format
|
||||
- `hours` -- total hours (for duration-based accounts)
|
||||
- `started_time` / `ended_time` -- for timestamp-based accounts
|
||||
- `notes` -- description of work performed
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters for `HARVEST_LIST_TIME_ENTRIES`:
|
||||
- `from_date` / `to` -- date range filters (YYYY-MM-DD)
|
||||
- `project_id`, `client_id`, `task_id`, `user_id` -- entity filters
|
||||
- `is_billed` / `is_running` -- status filters
|
||||
- `page` / `per_page` (max 2000) -- pagination
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
### 2. Manage Projects
|
||||
|
||||
Create new projects and list existing ones with client and billing configuration.
|
||||
|
||||
**Tools:** `HARVEST_CREATE_PROJECT`, `HARVEST_LIST_PROJECTS`, `HARVEST_GET_PROJECT`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Harvest task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Create a billable project called "Website Redesign" for client 456 with Tasks billing and project budget
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
Key parameters for `HARVEST_CREATE_PROJECT`:
|
||||
- `name`, `client_id`, `is_billable`, `bill_by`, `budget_by` (all required)
|
||||
- `bill_by` options: `"Project"`, `"Tasks"`, `"People"`, `"none"`
|
||||
- `budget_by` options: `"project"`, `"project_cost"`, `"task"`, `"task_fees"`, `"person"`, `"none"`
|
||||
- Optional: `budget`, `hourly_rate`, `starts_on`, `ends_on`, `is_fixed_fee`
|
||||
|
||||
### 3. Manage Clients
|
||||
|
||||
Create and list clients that projects are organized under.
|
||||
|
||||
**Tools:** `HARVEST_CREATE_CLIENT`, `HARVEST_LIST_CLIENTS`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["harvest"]
|
||||
session_id: "your_session_id"
|
||||
List all active clients in our Harvest account
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
- `HARVEST_CREATE_CLIENT` requires `name`; accepts `address`, `currency`, `is_active`
|
||||
- `HARVEST_LIST_CLIENTS` supports `is_active` filter and pagination (`per_page` max 2000)
|
||||
|
||||
### 4. Manage Tasks
|
||||
|
||||
Create and list reusable task types for time tracking.
|
||||
|
||||
**Tools:** `HARVEST_CREATE_TASK`, `HARVEST_LIST_TASKS`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Create a new billable task called "Code Review" with a default rate of $150/hr
|
||||
```
|
||||
|
||||
- `HARVEST_CREATE_TASK` requires `name`; accepts `billable_by_default`, `default_hourly_rate`, `is_active`, `is_default`
|
||||
- `HARVEST_LIST_TASKS` supports `is_active`, `is_default` filters and pagination (`per_page` max 100)
|
||||
- Task names must be unique across all tasks (active and archived)
|
||||
|
||||
### 5. Time Entry Reporting
|
||||
|
||||
Pull time entries with date ranges and filters for billing summaries and utilization reports.
|
||||
|
||||
**Tools:** `HARVEST_LIST_TIME_ENTRIES`, `HARVEST_GET_TIME_ENTRY`
|
||||
|
||||
```
|
||||
Show me all unbilled time entries for project 789 from January 2026
|
||||
```
|
||||
|
||||
- Use `from_date` and `to` for date windowing
|
||||
- Filter with `is_billed: false` for unbilled entries
|
||||
- Combine `project_id`, `user_id`, `client_id` for cross-dimensional reporting
|
||||
- Paginate with `page` and `per_page` to gather complete datasets
|
||||
|
||||
### 6. Update and Correct Time Entries
|
||||
|
||||
Modify existing time entries to fix hours, reassign projects, or update notes.
|
||||
|
||||
**Tools:** `HARVEST_UPDATE_TIME_ENTRY`
|
||||
|
||||
```
|
||||
Update time entry 123456 to change the hours to 4.0 and add the note "Completed API integration"
|
||||
```
|
||||
|
||||
- Requires `time_entry_id`
|
||||
- Supports partial updates -- only include fields you want to change
|
||||
- Can update `hours`, `notes`, `project_id`, `task_id`, `spent_date`, `started_time`, `ended_time`
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Task assignment matters:** When creating time entries, the `task_id` must correspond to a task that is actually assigned to the specified `project_id`. Use project task assignments endpoint to verify, not just `HARVEST_LIST_TASKS` (which returns global tasks).
|
||||
- **Duration vs. timestamp tracking:** Harvest accounts are configured for either duration-based or timestamp-based tracking. `hours` is ignored on timestamp accounts; `started_time`/`ended_time` are ignored on duration accounts.
|
||||
- **Pagination limits vary:** `HARVEST_LIST_TIME_ENTRIES` and `HARVEST_LIST_CLIENTS` support up to 2000 per page, but `HARVEST_LIST_PROJECTS` and `HARVEST_LIST_TASKS` cap at 100 per page.
|
||||
- **Date format consistency:** All date parameters must use `YYYY-MM-DD` format. ISO 8601 with timezone is used for `updated_since` filters.
|
||||
- **Required fields for projects:** `HARVEST_CREATE_PROJECT` requires five fields: `name`, `client_id`, `is_billable`, `bill_by`, and `budget_by`. Missing any will cause a validation error.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Harvest-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `harvest` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `HARVEST_LIST_TIME_ENTRIES` | List time entries with date, project, client, user filters |
|
||||
| `HARVEST_CREATE_TIME_ENTRY` | Log a new time entry (requires `project_id`, `task_id`, `spent_date`) |
|
||||
| `HARVEST_GET_TIME_ENTRY` | Retrieve a specific time entry by ID |
|
||||
| `HARVEST_UPDATE_TIME_ENTRY` | Update an existing time entry (requires `time_entry_id`) |
|
||||
| `HARVEST_LIST_PROJECTS` | List projects with optional client filter |
|
||||
| `HARVEST_CREATE_PROJECT` | Create a new project with billing config |
|
||||
| `HARVEST_GET_PROJECT` | Retrieve a specific project by ID |
|
||||
| `HARVEST_LIST_CLIENTS` | List clients with active/inactive filter |
|
||||
| `HARVEST_CREATE_CLIENT` | Create a new client (requires `name`) |
|
||||
| `HARVEST_LIST_TASKS` | List reusable task types |
|
||||
| `HARVEST_CREATE_TASK` | Create a new task type (requires `name`) |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,121 @@
|
||||
---
|
||||
name: heygen-automation
|
||||
description: "Automate Heygen tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: HeyGen Automation
|
||||
description: "Automate AI video generation, avatar browsing, template-based video creation, and video status tracking through HeyGen's platform via Composio"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Heygen Automation via Rube MCP
|
||||
# HeyGen Automation
|
||||
|
||||
Automate Heygen operations through Composio's Heygen toolkit via Rube MCP.
|
||||
Automate AI-powered video creation workflows -- browse avatars and templates, generate personalized videos from templates, track processing status, and retrieve shareable URLs -- all orchestrated through the Composio MCP integration.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/heygen](https://composio.dev/toolkits/heygen)
|
||||
**Toolkit docs:** [composio.dev/toolkits/heygen](https://composio.dev/toolkits/heygen)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Heygen connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `heygen`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Connect your HeyGen account through the Composio MCP server at `https://rube.app/mcp`
|
||||
2. The agent will prompt you with an authentication link if no active connection exists
|
||||
3. Once connected, all `HEYGEN_*` tools become available for execution
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `heygen`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Browse Available Templates
|
||||
Retrieve pre-designed avatar templates from the HeyGen library for video creation.
|
||||
|
||||
**Tool:** `HEYGEN_V2_TEMPLATES`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Heygen operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
No parameters required -- returns template IDs, names, preview images, and customization options.
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Use this to discover templates before generating videos. Each template has a unique ID needed for generation.
|
||||
|
||||
## Core Workflow Pattern
|
||||
---
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
### 2. Inspect Template Details & Variables
|
||||
Retrieve the full structure of a template including all variables, scene mappings, and customization options.
|
||||
|
||||
**Tool:** `HEYGEN_RETRIEVE_TEMPLATE_DETAILS_V3`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `template_id` | string | Yes | Template ID from `HEYGEN_V2_TEMPLATES` or the HeyGen dashboard |
|
||||
|
||||
This is a **required prerequisite** before generating videos -- it tells you exactly which variables must be populated.
|
||||
|
||||
---
|
||||
|
||||
### 3. Browse Available Avatars
|
||||
List all realistic avatars available for video creation, useful for mapping characters to scenes.
|
||||
|
||||
**Tool:** `HEYGEN_V2_AVATARS`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Heygen task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
No parameters required -- returns avatar identifiers, names, and preview images.
|
||||
The list may be paginated; additional calls might be needed for the full set.
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["heygen"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
### 4. Generate Video from Template
|
||||
Create a customized video by populating a template with your variables and content.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tool:** `HEYGEN_V2_TEMPLATE_GENERATE`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Provide a video title and all template variables discovered via `HEYGEN_RETRIEVE_TEMPLATE_DETAILS_V3`. Every required variable must be supplied with exact names and types.
|
||||
|
||||
---
|
||||
|
||||
### 5. Check Video Processing Status
|
||||
Poll the processing status and retrieve metadata for a video being generated.
|
||||
|
||||
**Tool:** `HEYGEN_RETRIEVE_VIDEO_STATUS_DETAILS`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `video_id` | string | Yes | Video ID returned from the generation API |
|
||||
|
||||
Returned URLs expire after 7 days but can be regenerated by calling this endpoint again.
|
||||
|
||||
---
|
||||
|
||||
### 6. Get Shareable Video URL
|
||||
Generate a public, shareable link that allows anyone to view the video without authentication.
|
||||
|
||||
**Tool:** `HEYGEN_RETRIEVE_SHARABLE_VIDEO_URL`
|
||||
|
||||
Provide the `video_id` to receive a public URL for distribution.
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| **All template variables required** | `HEYGEN_V2_TEMPLATE_GENERATE` demands every variable from `HEYGEN_RETRIEVE_TEMPLATE_DETAILS_V3` with exact names and types -- missing or misnamed fields break scenes or fail generation |
|
||||
| **Always inspect templates first** | Never skip `HEYGEN_RETRIEVE_TEMPLATE_DETAILS_V3` before generation -- multi-scene templates have complex variable structures |
|
||||
| **Video URLs expire** | URLs from `HEYGEN_RETRIEVE_VIDEO_STATUS_DETAILS` expire after 7 days; regenerate by calling the endpoint again |
|
||||
| **Paginated avatar lists** | `HEYGEN_V2_AVATARS` may return paginated results -- additional calls may be needed for the full library |
|
||||
| **Processing time varies** | Video generation is asynchronous; poll `HEYGEN_RETRIEVE_VIDEO_STATUS_DETAILS` until status is complete before using output URLs |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Heygen-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `heygen` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Purpose |
|
||||
|-----------|---------|
|
||||
| `HEYGEN_V2_TEMPLATES` | List available video templates |
|
||||
| `HEYGEN_RETRIEVE_TEMPLATE_DETAILS_V3` | Get template variables and scene structure |
|
||||
| `HEYGEN_V2_AVATARS` | Browse available AI avatars |
|
||||
| `HEYGEN_V2_TEMPLATE_GENERATE` | Generate video from a template |
|
||||
| `HEYGEN_RETRIEVE_VIDEO_STATUS_DETAILS` | Check video processing status and get URLs |
|
||||
| `HEYGEN_RETRIEVE_SHARABLE_VIDEO_URL` | Get a public shareable video link |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,152 @@
|
||||
---
|
||||
name: hunter-automation
|
||||
description: "Automate Hunter tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Hunter Automation
|
||||
description: "Automate Hunter.io email intelligence -- search domains for email addresses, find specific contacts, verify email deliverability, manage leads, and monitor account usage -- using natural language through the Composio MCP integration."
|
||||
category: email-intelligence
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Hunter Automation via Rube MCP
|
||||
# Hunter Automation
|
||||
|
||||
Automate Hunter operations through Composio's Hunter toolkit via Rube MCP.
|
||||
Power your outreach with Hunter.io -- discover email addresses by domain, find specific people's emails, verify deliverability, save leads, and track your API usage -- all through natural language commands.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/hunter](https://composio.dev/toolkits/hunter)
|
||||
**Toolkit docs:** [composio.dev/toolkits/hunter](https://composio.dev/toolkits/hunter)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Hunter connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `hunter`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Hunter.io account when prompted (API key authentication).
|
||||
3. Start issuing natural language commands to find and verify emails.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `hunter`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Search Domain for Email Addresses
|
||||
Discover all publicly available email addresses for a given domain or company, with filtering by department, seniority, and type.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Hunter operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
**Tool:** `HUNTER_DOMAIN_SEARCH`
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Example prompt:**
|
||||
> "Find all executive email addresses at stripe.com using Hunter"
|
||||
|
||||
## Core Workflow Pattern
|
||||
**Key parameters:**
|
||||
- `domain` -- Domain to search (e.g., "stripe.com"). Required if `company` not provided.
|
||||
- `company` -- Company name to search (e.g., "Stripe"). Required if `domain` not provided.
|
||||
- `type` -- Filter by "personal" or "generic" emails
|
||||
- `seniority` -- Filter by levels: "junior", "senior", "executive" (array)
|
||||
- `department` -- Filter by departments: "executive", "it", "finance", "sales", etc. (array)
|
||||
- `required_field` -- Require specific fields: "full_name", "position", "phone_number" (array)
|
||||
- `limit` -- Max results per request (1-100, default 10; free/basic plans limited to 10)
|
||||
- `offset` -- Skip results for pagination (default 0)
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Hunter task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
### 2. Find a Specific Person's Email
|
||||
Infer the most likely email address for a person given their name and domain or company.
|
||||
|
||||
### Step 2: Check Connection
|
||||
**Tool:** `HUNTER_EMAIL_FINDER`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["hunter"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Example prompt:**
|
||||
> "Find the email for Alexis Ohanian at reddit.com using Hunter"
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Key parameters:**
|
||||
- `domain` -- Target domain (e.g., "reddit.com"). Takes precedence over `company`.
|
||||
- `company` -- Company name (e.g., "Reddit"). Used if domain not provided.
|
||||
- Name (one of these combinations required):
|
||||
- `first_name` + `last_name` (e.g., "Alexis" + "Ohanian")
|
||||
- `full_name` (e.g., "Alexis Ohanian")
|
||||
- `max_duration` -- Max request duration in seconds (3-20, default 10). Longer durations yield more accurate results.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
---
|
||||
|
||||
### 3. Verify Email Deliverability
|
||||
Check whether an email address is valid, deliverable, and safe to send to.
|
||||
|
||||
**Tool:** `HUNTER_EMAIL_VERIFIER`
|
||||
|
||||
**Example prompt:**
|
||||
> "Verify if john.doe@example.com is a valid email address"
|
||||
|
||||
**Key parameters:**
|
||||
- `email` (required) -- The email address to verify (e.g., "john.doe@example.com")
|
||||
|
||||
**Response includes:** verification status, deliverability score, MX record validation, and risk assessment.
|
||||
|
||||
---
|
||||
|
||||
### 4. Get Email Volume Estimates
|
||||
Check how many email addresses Hunter has for a domain or company -- this call is free and does not consume API credits.
|
||||
|
||||
**Tool:** `HUNTER_EMAIL_COUNT`
|
||||
|
||||
**Example prompt:**
|
||||
> "How many email addresses does Hunter have for stripe.com?"
|
||||
|
||||
**Key parameters:**
|
||||
- `domain` -- Domain to query (e.g., "stripe.com"). Required if `company` not provided.
|
||||
- `company` -- Company name (min 3 characters). Required if `domain` not provided.
|
||||
- `type` -- Filter count by "personal" or "generic" emails
|
||||
|
||||
**Returns:** Total count with breakdowns by type, department, and seniority level.
|
||||
|
||||
---
|
||||
|
||||
### 5. Save and Manage Leads
|
||||
Create or update leads by email in a single upsert call -- no need to check existence first.
|
||||
|
||||
**Tool:** `HUNTER_UPSERT_LEAD`
|
||||
|
||||
**Example prompt:**
|
||||
> "Save john@stripe.com as a lead in Hunter with name John Doe, position CTO"
|
||||
|
||||
**Key parameters:**
|
||||
- `email` -- Lead's email address (primary identifier for upsert)
|
||||
- Name, position, company, and other lead metadata
|
||||
|
||||
---
|
||||
|
||||
### 6. Check Account Usage and Limits
|
||||
Review your Hunter account plan details, remaining searches, and verification quotas before running bulk operations.
|
||||
|
||||
**Tool:** `HUNTER_ACCOUNT_INFORMATION`
|
||||
|
||||
**Example prompt:**
|
||||
> "How many Hunter API searches do I have left this month?"
|
||||
|
||||
**Key parameters:** None required.
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **HTTP 401 means invalid credentials**: `authentication_failed` errors indicate an invalid or expired API key. Fix before attempting bulk operations.
|
||||
- **Email counts are estimates**: `HUNTER_EMAIL_COUNT` returns approximate numbers for sizing and prioritization, not guaranteed retrievable email counts.
|
||||
- **Domain search uses offset pagination**: `HUNTER_DOMAIN_SEARCH` paginates via `limit`/`offset`. Do not assume the first page is complete -- continue fetching until results are empty or you hit a cap.
|
||||
- **Empty results are not errors**: `HUNTER_DOMAIN_SEARCH` can return `emails: []` with no error. Treat as "no data found" and continue, rather than retrying as a failure.
|
||||
- **Verification status nuances**: `accept_all` or `risky` statuses from `HUNTER_EMAIL_VERIFIER` indicate uncertainty. Exclude these from strict deliverability workflows or handle them separately.
|
||||
- **Free/basic plan limits**: Free and basic plans limit `HUNTER_DOMAIN_SEARCH` to 10 results per request. Higher limits require a paid plan.
|
||||
- **Domain format matters**: Use bare domains like "stripe.com" -- do not include protocol ("https://") or "www." prefix.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Hunter-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `hunter` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Required Params |
|
||||
|---|---|---|
|
||||
| Search domain emails | `HUNTER_DOMAIN_SEARCH` | `domain` or `company` |
|
||||
| Find person's email | `HUNTER_EMAIL_FINDER` | Name + (`domain` or `company`) |
|
||||
| Verify email | `HUNTER_EMAIL_VERIFIER` | `email` |
|
||||
| Get email count | `HUNTER_EMAIL_COUNT` | `domain` or `company` |
|
||||
| Save/update lead | `HUNTER_UPSERT_LEAD` | `email` |
|
||||
| Check account | `HUNTER_ACCOUNT_INFORMATION` | None |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,171 @@
|
||||
---
|
||||
name: instantly-automation
|
||||
description: "Automate Instantly tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Instantly Automation
|
||||
description: "Automate Instantly cold email outreach -- manage campaigns, sending accounts, lead lists, bulk lead imports, and campaign analytics -- using natural language through the Composio MCP integration."
|
||||
category: email-outreach
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Instantly Automation via Rube MCP
|
||||
# Instantly Automation
|
||||
|
||||
Automate Instantly operations through Composio's Instantly toolkit via Rube MCP.
|
||||
Automate your cold email outreach with Instantly -- create and manage campaigns with multi-step sequences, configure sending schedules, import leads in bulk, manage sending accounts, and track campaign performance -- all through natural language commands.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/instantly](https://composio.dev/toolkits/instantly)
|
||||
**Toolkit docs:** [composio.dev/toolkits/instantly](https://composio.dev/toolkits/instantly)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Instantly connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `instantly`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Instantly account when prompted (API key authentication).
|
||||
3. Start issuing natural language commands to manage your outreach campaigns.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `instantly`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List Sending Accounts
|
||||
Retrieve all email accounts configured in your Instantly workspace, with filtering by status and provider.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Instantly operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
**Tool:** `INSTANTLY_LIST_ACCOUNTS`
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Example prompt:**
|
||||
> "Show all active sending accounts in my Instantly workspace"
|
||||
|
||||
## Core Workflow Pattern
|
||||
**Key parameters:**
|
||||
- `status` -- Filter by status: `1` (Active), `2` (Paused), `-1` (Connection Error), `-2` (Soft Bounce Error), `-3` (Sending Error)
|
||||
- `provider_code` -- Filter by provider: `1` (Custom IMAP/SMTP), `2` (Google), `3` (Microsoft), `4` (AWS)
|
||||
- `search` -- Search by email substring or domain
|
||||
- `limit` -- Max items (1-100)
|
||||
- `starting_after` -- Pagination cursor from previous response
|
||||
- `tag_ids` -- Comma-separated tag UUIDs
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Instantly task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
### 2. Create a Campaign
|
||||
Launch a new outreach campaign with scheduling, email sequences, A/B testing variants, and sending configuration.
|
||||
|
||||
### Step 2: Check Connection
|
||||
**Tool:** `INSTANTLY_CREATE_CAMPAIGN`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["instantly"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Example prompt:**
|
||||
> "Create an Instantly campaign called 'Q1 Outreach' that sends Monday-Friday 9am-5pm Central time with a 3-step email sequence"
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Key parameters:**
|
||||
- `name` (required) -- Campaign name
|
||||
- `campaign_schedule` (required) -- Schedule configuration:
|
||||
- `schedules` (required) -- Array of schedule objects, each with:
|
||||
- `name` -- Schedule name
|
||||
- `timing` -- `{from: "09:00", to: "17:00"}` (HH:mm format)
|
||||
- `days` -- Map of day index strings "0" (Sun) to "6" (Sat) to booleans
|
||||
- `timezone` -- Supported values include "America/Chicago", "America/Detroit", "America/Boise", "America/Anchorage"
|
||||
- `start_date` / `end_date` -- ISO 8601 dates
|
||||
- `email_list` -- Array of sending account email addresses (must be pre-configured accounts; use `INSTANTLY_LIST_ACCOUNTS` to discover valid addresses)
|
||||
- `sequences` -- Array (only first element used) containing:
|
||||
- `steps` -- Array of step objects with:
|
||||
- `type` -- Must be "email"
|
||||
- `delay` -- Days before NEXT email (integer, min 0)
|
||||
- `variants` -- Array of `{subject, body}` objects for A/B testing
|
||||
- `daily_limit` -- Daily sending cap
|
||||
- `email_gap` -- Minutes between emails
|
||||
- `stop_on_reply` -- Stop campaign when lead replies (boolean)
|
||||
- `stop_on_auto_reply` -- Stop on auto-replies (boolean)
|
||||
- `open_tracking` / `link_tracking` -- Enable tracking (booleans)
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Timezone notes:**
|
||||
- Verified working: "America/Chicago" (Central), "America/Detroit" (Eastern), "America/Boise" (Mountain)
|
||||
- Auto-mapped: "America/New_York" maps to "America/Detroit", "America/Denver" maps to "America/Boise"
|
||||
- NOT supported: "America/Los_Angeles", "US/Pacific" -- use "America/Anchorage" or "America/Dawson" as alternatives
|
||||
|
||||
---
|
||||
|
||||
### 3. Update Campaign Settings
|
||||
Modify an existing campaign's schedule, sending limits, sequences, or tracking settings.
|
||||
|
||||
**Tool:** `INSTANTLY_UPDATE_CAMPAIGN`
|
||||
|
||||
**Example prompt:**
|
||||
> "Update my Instantly campaign to increase the daily limit to 100 and enable open tracking"
|
||||
|
||||
**Key parameters:**
|
||||
- `id` (required) -- Campaign UUID
|
||||
- Any combination of: `name`, `campaign_schedule`, `email_list`, `sequences`, `daily_limit`, `email_gap`, `stop_on_reply`, `open_tracking`, `link_tracking`, etc.
|
||||
- Set any parameter to `null` to unset it
|
||||
|
||||
---
|
||||
|
||||
### 4. Manage Lead Lists and Bulk Import
|
||||
Create dedicated lead lists and import prospects in bulk for campaign targeting.
|
||||
|
||||
**Tools:** `INSTANTLY_CREATE_LEAD_LIST`, `INSTANTLY_ADD_LEADS_BULK`
|
||||
|
||||
**Example prompt:**
|
||||
> "Create a lead list called 'Q1 Prospects' and add 50 leads to my Instantly campaign"
|
||||
|
||||
**Key parameters for creating lead lists:**
|
||||
- List name and configuration
|
||||
|
||||
**Key parameters for bulk lead import:**
|
||||
- Campaign or list ID to import into
|
||||
- Array of lead objects with email and metadata
|
||||
- Duplicate handling options
|
||||
- Lead verification settings
|
||||
|
||||
---
|
||||
|
||||
### 5. Review Campaign Details
|
||||
Retrieve full campaign configuration to verify settings, inspect sequences, or prepare for updates.
|
||||
|
||||
**Tool:** `INSTANTLY_GET_CAMPAIGN`
|
||||
|
||||
**Example prompt:**
|
||||
> "Show me the full details of my Instantly campaign"
|
||||
|
||||
**Key parameters:**
|
||||
- `id` (required) -- Campaign UUID
|
||||
|
||||
---
|
||||
|
||||
### 6. List All Campaigns
|
||||
Enumerate all campaigns in your workspace with optional filters and pagination.
|
||||
|
||||
**Tool:** `INSTANTLY_LIST_CAMPAIGNS`
|
||||
|
||||
**Example prompt:**
|
||||
> "List all my Instantly campaigns"
|
||||
|
||||
**Key parameters:**
|
||||
- Optional filters and pagination parameters
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Timezone support is limited**: The Instantly API accepts a restricted set of timezone strings. Pacific Time ("America/Los_Angeles") is NOT supported. Use "America/Anchorage" (UTC-9/UTC-8) or "America/Dawson" (UTC-7 year-round) as alternatives.
|
||||
- **Invalid schedule payloads cause 400 errors**: A malformed `campaign_schedule` (missing `days`, `from`, `to`, or `schedules`) triggers HTTP 400. Repeated 400s indicate payload issues, not transient failures.
|
||||
- **Sequences must be complete**: Each sequence step requires a valid `type` ("email"), `delay`, and at least one variant with both `subject` and `body`. Incomplete variants block campaign creation.
|
||||
- **Only first sequence element is used**: The API only processes `sequences[0]`. Additional sequences are ignored.
|
||||
- **email_list must reference existing accounts**: The `email_list` field requires email addresses of pre-configured sending accounts in your Instantly workspace, not arbitrary recipient addresses. Always use `INSTANTLY_LIST_ACCOUNTS` to discover valid sending addresses.
|
||||
- **401 scope errors on campaign creation**: Campaign creation can fail with "Invalid scope. Required: campaigns:create". Update your API key permissions before retrying writes.
|
||||
- **Read-back fields may differ**: Field names in `INSTANTLY_GET_CAMPAIGN` responses may differ from create payloads (e.g., `timing.from_` vs `timing.from`). Parse defensively.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Instantly-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `instantly` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Required Params |
|
||||
|---|---|---|
|
||||
| List sending accounts | `INSTANTLY_LIST_ACCOUNTS` | None (optional filters) |
|
||||
| Create campaign | `INSTANTLY_CREATE_CAMPAIGN` | `name`, `campaign_schedule` |
|
||||
| Update campaign | `INSTANTLY_UPDATE_CAMPAIGN` | `id` |
|
||||
| Get campaign details | `INSTANTLY_GET_CAMPAIGN` | `id` |
|
||||
| List campaigns | `INSTANTLY_LIST_CAMPAIGNS` | None (optional filters) |
|
||||
| Create lead list | `INSTANTLY_CREATE_LEAD_LIST` | List name |
|
||||
| Bulk import leads | `INSTANTLY_ADD_LEADS_BULK` | Campaign/list ID, leads |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,148 @@
|
||||
---
|
||||
name: jotform-automation
|
||||
description: "Automate Jotform tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Jotform Automation
|
||||
description: "Automate Jotform form listing, user management, activity history, folder organization, and plan inspection through natural language commands"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Jotform Automation via Rube MCP
|
||||
# Jotform Automation
|
||||
|
||||
Automate Jotform operations through Composio's Jotform toolkit via Rube MCP.
|
||||
Automate Jotform workflows -- list and search forms, inspect user details, browse activity history, manage folders and labels, and check plan limits -- all through natural language.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/jotform](https://composio.dev/toolkits/jotform)
|
||||
**Toolkit docs:** [composio.dev/toolkits/jotform](https://composio.dev/toolkits/jotform)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Jotform connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `jotform`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your environment: `https://rube.app/mcp`
|
||||
2. Connect your Jotform account when prompted (API key auth via Composio)
|
||||
3. Start issuing natural language commands for Jotform automation
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `jotform`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List and Search Forms
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Jotform operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Retrieve all forms created by the authenticated user with search, filtering, sorting, and pagination.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `JOTFORM_GET_USER_FORMS`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `search` -- search query to filter forms by name or content
|
||||
- `limit` -- number of forms to return
|
||||
- `offset` -- offset for pagination
|
||||
- `orderby` -- field to order by
|
||||
- `sorting` -- sorting direction: `ASC` or `DESC`
|
||||
- `folder` -- filter by folder ID
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Example prompt:
|
||||
> "List all my Jotform forms that contain 'feedback' in the name, sorted by most recent"
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Jotform task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. Get User Account Details
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["jotform"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Retrieve details about the authenticated user including account type, usage statistics, and limits.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tool:** `JOTFORM_GET_USER_DETAILS`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
No parameters required. Returns account info such as username, email, account type, form count, submission count, and usage limits.
|
||||
|
||||
Example prompt:
|
||||
> "Show me my Jotform account details and current usage"
|
||||
|
||||
---
|
||||
|
||||
### 3. Browse Activity History
|
||||
|
||||
Fetch user activity records for auditing, filtered by action type and date range.
|
||||
|
||||
**Tool:** `JOTFORM_GET_USER_HISTORY`
|
||||
|
||||
Key parameters:
|
||||
- `action` -- filter by action type (e.g., `formCreation`, `userLogin`, `formUpdate`, `apiKeyCreated`, `userLogout`)
|
||||
- `date` -- predefined date range: `lastWeek`, `lastMonth`, `last3Months`, `last6Months`, `lastYear`, `all`
|
||||
- `startDate` -- custom start date in `MM/DD/YYYY` format
|
||||
- `endDate` -- custom end date in `MM/DD/YYYY` format
|
||||
- `sortBy` -- sort order: `ASC` or `DESC`
|
||||
|
||||
Example prompt:
|
||||
> "Show me all form creation activity from the last month, sorted newest first"
|
||||
|
||||
---
|
||||
|
||||
### 4. Manage Folders and Labels
|
||||
|
||||
Browse the folder/label structure for organizing forms.
|
||||
|
||||
**Tool:** `JOTFORM_GET_USER_FOLDERS`
|
||||
|
||||
Key parameters:
|
||||
- `add_resources` -- set to `true` to include label resources (forms) in the response
|
||||
- `owner` -- owner username or workspace/team ID (conditionally required for some accounts)
|
||||
|
||||
> Jotform has migrated from folders to labels. This tool uses the `GET /user/labels` endpoint.
|
||||
|
||||
Example prompt:
|
||||
> "List all my Jotform folders with their forms included"
|
||||
|
||||
---
|
||||
|
||||
### 5. Check Plan Limits and Pricing
|
||||
|
||||
Retrieve details about a specific Jotform system plan to understand limits and capabilities.
|
||||
|
||||
**Tool:** `JOTFORM_GET_SYSTEM_PLAN`
|
||||
|
||||
Key parameters:
|
||||
- `planName` -- the plan to inspect (required): `FREE`, `BRONZE`, `SILVER`, `GOLD`, or `PLATINUM`
|
||||
|
||||
Example prompt:
|
||||
> "What are the limits on the Jotform GOLD plan?"
|
||||
|
||||
---
|
||||
|
||||
### 6. Full Form Management Workflow
|
||||
|
||||
Combine tools for comprehensive form management:
|
||||
|
||||
1. **Discover**: `JOTFORM_GET_USER_DETAILS` -- check account type and usage limits
|
||||
2. **Browse**: `JOTFORM_GET_USER_FORMS` -- list and search forms with filters
|
||||
3. **Organize**: `JOTFORM_GET_USER_FOLDERS` -- view folder structure with `add_resources=true`
|
||||
4. **Audit**: `JOTFORM_GET_USER_HISTORY` -- track form creation and modification activity
|
||||
5. **Plan**: `JOTFORM_GET_SYSTEM_PLAN` -- compare plan features before upgrading
|
||||
|
||||
Example prompt:
|
||||
> "Show me my account usage, list my recent forms, and tell me if I'm close to my plan limits"
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| API key authentication | Jotform uses API key auth, not OAuth -- ensure valid API key is configured in the connection |
|
||||
| Folders migrated to labels | The folders endpoint now maps to Jotform's labels system; the API behavior may differ from legacy folder documentation |
|
||||
| Date format for history | Custom date filters use `MM/DD/YYYY` format (e.g., `01/15/2026`), not ISO 8601 |
|
||||
| Plan name must be exact | `planName` values are case-sensitive enum: `FREE`, `BRONZE`, `SILVER`, `GOLD`, `PLATINUM` |
|
||||
| Pagination is offset-based | Forms use `limit`/`offset` pagination, not cursor or page-based |
|
||||
| Owner field conditionally required | `JOTFORM_GET_USER_FOLDERS` may require the `owner` parameter for workspace/team accounts |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Jotform-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `jotform` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Key Params |
|
||||
|--------|-----------|------------|
|
||||
| List forms | `JOTFORM_GET_USER_FORMS` | `search`, `limit`, `offset`, `orderby` |
|
||||
| Get user details | `JOTFORM_GET_USER_DETAILS` | (none) |
|
||||
| Activity history | `JOTFORM_GET_USER_HISTORY` | `action`, `date`, `startDate`, `endDate` |
|
||||
| List folders/labels | `JOTFORM_GET_USER_FOLDERS` | `add_resources`, `owner` |
|
||||
| Check plan | `JOTFORM_GET_SYSTEM_PLAN` | `planName` |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,163 @@
|
||||
---
|
||||
name: kommo-automation
|
||||
description: "Automate Kommo tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Kommo Automation
|
||||
description: "Automate Kommo CRM operations -- manage leads, pipelines, pipeline stages, tasks, and custom fields -- using natural language through the Composio MCP integration."
|
||||
category: crm
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Kommo Automation via Rube MCP
|
||||
# Kommo Automation
|
||||
|
||||
Automate Kommo operations through Composio's Kommo toolkit via Rube MCP.
|
||||
Manage your Kommo CRM sales pipeline -- list and filter leads, navigate pipeline stages, create and update deals, assign tasks, and work with custom fields -- all through natural language commands.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/kommo](https://composio.dev/toolkits/kommo)
|
||||
**Toolkit docs:** [composio.dev/toolkits/kommo](https://composio.dev/toolkits/kommo)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Kommo connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `kommo`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Kommo account when prompted (OAuth authentication).
|
||||
3. Start issuing natural language commands to manage your CRM.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `kommo`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Navigate Pipelines and Stages
|
||||
List all lead pipelines, then drill into specific pipeline stages to understand your sales funnel structure.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Kommo operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
**Tools:** `KOMMO_LIST_LEADS_PIPELINES`, `KOMMO_LIST_PIPELINE_STAGES`
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Example prompt:**
|
||||
> "Show all my Kommo pipelines and the stages in my main sales pipeline"
|
||||
|
||||
## Core Workflow Pattern
|
||||
**Key parameters for List Pipelines:** None required.
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
**Key parameters for List Stages:**
|
||||
- `pipeline_id` (required) -- The pipeline ID to list stages for
|
||||
- `with_description` -- Include stage descriptions in the response (boolean)
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Kommo task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. List and Filter Leads
|
||||
Retrieve leads with powerful filtering by pipeline, status, date ranges, responsible users, price, and more.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["kommo"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Tool:** `KOMMO_LIST_LEADS`
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Example prompt:**
|
||||
> "Show all leads in pipeline 12345 created this week, sorted by newest first"
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Key parameters:**
|
||||
- `query` -- Free-text search across all filled fields
|
||||
- `filter_pipeline_ids` -- Filter by pipeline IDs (array of integers)
|
||||
- `filter_status` -- Filter by status within a pipeline: `{"pipeline_id": 123, "status_id": 456}`
|
||||
- `filter_responsible_user_ids` -- Filter by assigned user IDs
|
||||
- `filter_names` -- Filter by lead names
|
||||
- `filter_price` -- Filter by deal value
|
||||
- `filter_created_at` -- Date range: `{"from": <unix_timestamp>, "to": <unix_timestamp>}`
|
||||
- `filter_updated_at` -- Date range for last update
|
||||
- `filter_closed_at` -- Date range for closure
|
||||
- `order_by_created_at` -- Sort: "asc" or "desc"
|
||||
- `order_by_updated_at` -- Sort by update date
|
||||
- `limit` -- Max 250 per page
|
||||
- `page` -- Page number for pagination
|
||||
- `with_params` -- Additional data: "contacts", "loss_reason", "catalog_elements", "source_id"
|
||||
|
||||
---
|
||||
|
||||
### 3. Create New Leads
|
||||
Add new deals to your Kommo pipeline with custom fields, tags, and pipeline placement.
|
||||
|
||||
**Tool:** `KOMMO_CREATE_LEAD`
|
||||
|
||||
**Example prompt:**
|
||||
> "Create a new lead called 'Acme Corp Deal' worth $50,000 in pipeline 12345"
|
||||
|
||||
**Key parameters:**
|
||||
- `name` (required) -- Name of the lead/deal
|
||||
- `price` -- Deal value (integer)
|
||||
- `pipeline_id` -- Pipeline to add the lead to
|
||||
- `status_id` -- Stage within the pipeline (defaults to first stage of main pipeline)
|
||||
- `responsible_user_id` -- Assigned user ID
|
||||
- `custom_fields_values` -- Array of custom field value objects
|
||||
- `tags_to_add` -- Array of tags (by name or ID)
|
||||
- `created_by` -- User ID of creator (0 for robot)
|
||||
- `loss_reason_id` -- Reason for loss (if applicable)
|
||||
|
||||
---
|
||||
|
||||
### 4. Update Existing Leads
|
||||
Modify lead properties including name, price, pipeline stage, responsible user, tags, and custom fields.
|
||||
|
||||
**Tool:** `KOMMO_UPDATE_LEAD`
|
||||
|
||||
**Example prompt:**
|
||||
> "Move lead 789 to stage 456 in pipeline 123 and update the price to $75,000"
|
||||
|
||||
**Key parameters:**
|
||||
- Lead ID (required)
|
||||
- Any combination of: `name`, `price`, `pipeline_id`, `status_id`, `responsible_user_id`, `tags_to_add`, `tags_to_delete`, `custom_fields_values`
|
||||
|
||||
---
|
||||
|
||||
### 5. Create Tasks
|
||||
Assign follow-up tasks linked to leads, contacts, or companies.
|
||||
|
||||
**Tool:** `KOMMO_CREATE_TASK`
|
||||
|
||||
**Example prompt:**
|
||||
> "Create a follow-up call task for lead 789 due tomorrow assigned to user 42"
|
||||
|
||||
**Key parameters:**
|
||||
- Task text/description
|
||||
- Entity type and ID (lead, contact, company)
|
||||
- Responsible user ID
|
||||
- Due date (Unix timestamp)
|
||||
- Task type
|
||||
|
||||
---
|
||||
|
||||
### 6. Discover Custom Fields
|
||||
List all custom fields for leads, contacts, or companies to understand your CRM schema.
|
||||
|
||||
**Tool:** `KOMMO_LIST_CUSTOM_FIELDS`
|
||||
|
||||
**Example prompt:**
|
||||
> "What custom fields are available for leads in Kommo?"
|
||||
|
||||
**Key parameters:**
|
||||
- Entity type (leads, contacts, companies)
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Date filters use Unix timestamps**: All date range filters (`filter_created_at`, `filter_updated_at`, `filter_closed_at`) require Unix timestamp format in `{"from": <timestamp>, "to": <timestamp>}` structure, not ISO8601 strings.
|
||||
- **Pipeline and stage IDs are required**: To filter leads by status, you need both `pipeline_id` and `status_id`. Always call `KOMMO_LIST_LEADS_PIPELINES` and `KOMMO_LIST_PIPELINE_STAGES` first to discover valid IDs.
|
||||
- **Max 250 leads per page**: The `limit` parameter caps at 250. For large datasets, implement pagination using the `page` parameter.
|
||||
- **Custom field values format**: Custom fields use a specific nested object format. Use `KOMMO_LIST_CUSTOM_FIELDS` to discover field IDs and expected value formats before setting values.
|
||||
- **Status filter requires both IDs**: The `filter_status` parameter requires both `pipeline_id` and `status_id` as a combined object -- you cannot filter by status alone.
|
||||
- **Created_by 0 means robot**: When setting `created_by` or `updated_by` to 0, the action is attributed to a robot/automation, not a human user.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Kommo-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `kommo` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Required Params |
|
||||
|---|---|---|
|
||||
| List pipelines | `KOMMO_LIST_LEADS_PIPELINES` | None |
|
||||
| List pipeline stages | `KOMMO_LIST_PIPELINE_STAGES` | `pipeline_id` |
|
||||
| List leads | `KOMMO_LIST_LEADS` | None (optional filters) |
|
||||
| Create lead | `KOMMO_CREATE_LEAD` | `name` |
|
||||
| Update lead | `KOMMO_UPDATE_LEAD` | Lead ID |
|
||||
| Create task | `KOMMO_CREATE_TASK` | Task details |
|
||||
| List custom fields | `KOMMO_LIST_CUSTOM_FIELDS` | Entity type |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,130 @@
|
||||
---
|
||||
name: launch-darkly-automation
|
||||
description: "Automate LaunchDarkly tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: LaunchDarkly Automation
|
||||
description: "Automate LaunchDarkly feature flag management -- list projects and environments, create and delete trigger workflows, and track code references via the Composio MCP integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# LaunchDarkly Automation via Rube MCP
|
||||
# LaunchDarkly Automation
|
||||
|
||||
Automate LaunchDarkly operations through Composio's LaunchDarkly toolkit via Rube MCP.
|
||||
Automate your LaunchDarkly feature flag workflows -- enumerate projects and environments, create webhook-driven flag triggers, manage trigger lifecycle, and audit code references across repositories.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/launch_darkly](https://composio.dev/toolkits/launch_darkly)
|
||||
**Toolkit docs:** [composio.dev/toolkits/launch_darkly](https://composio.dev/toolkits/launch_darkly)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active LaunchDarkly connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `launch_darkly`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client: `https://rube.app/mcp`
|
||||
2. Connect your LaunchDarkly account when prompted (API key authentication)
|
||||
3. Start using the workflows below
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `launch_darkly`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List Projects
|
||||
|
||||
Use `LAUNCH_DARKLY_LIST_PROJECTS` to discover all projects and their keys for subsequent operations.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "LaunchDarkly operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: LAUNCH_DARKLY_LIST_PROJECTS
|
||||
Inputs:
|
||||
- filter: string (e.g., "query:myproject" or "keys:proj1,proj2" or "tags:mytag")
|
||||
- expand: string (e.g., "environments" to include env list per project)
|
||||
- limit: integer (default 20)
|
||||
- offset: integer (pagination start index)
|
||||
- sort: string (e.g., "name" or "-name" for descending)
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
### 2. Get Environments for a Project
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Use `LAUNCH_DARKLY_GET_ENVIRONMENTS` to list all environments within a project (production, staging, test, etc.).
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific LaunchDarkly task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: LAUNCH_DARKLY_GET_ENVIRONMENTS
|
||||
Inputs:
|
||||
- project_key: string (required) -- e.g., "my-project", "default"
|
||||
- filter: string (e.g., "query:production")
|
||||
- limit: integer (default 20)
|
||||
- offset: integer (pagination)
|
||||
- sort: string (e.g., "name" or "-name")
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 3. Create a Flag Trigger Workflow
|
||||
|
||||
Use `LAUNCH_DARKLY_CREATE_TRIGGER_WORKFLOW` to set up automated flag toggles triggered by external events (webhooks, Datadog alerts, etc.).
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["launch_darkly"]
|
||||
session_id: "your_session_id"
|
||||
Tool: LAUNCH_DARKLY_CREATE_TRIGGER_WORKFLOW
|
||||
Inputs:
|
||||
- project_key: string (required)
|
||||
- feature_flag_key: string (required) -- e.g., "new-feature", "enable-dark-mode"
|
||||
- environment_key: string (required) -- e.g., "production", "staging"
|
||||
- integration_key: string (default "generic-trigger") -- or "datadog", "honeycomb", "dynatrace"
|
||||
- instructions: array of objects (optional):
|
||||
- kind: "flag_action" (fixed)
|
||||
- action: "turnFlagOn" | "turnFlagOff"
|
||||
- comment: string (optional) -- description of the trigger purpose
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
The trigger generates a unique webhook URL that can be called to execute the configured flag action.
|
||||
|
||||
### 4. Delete a Flag Trigger Workflow
|
||||
|
||||
Use `LAUNCH_DARKLY_DELETE_TRIGGER_WORKFLOW` to permanently remove a trigger and its URL.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: LAUNCH_DARKLY_DELETE_TRIGGER_WORKFLOW
|
||||
Inputs:
|
||||
- project_key: string (required)
|
||||
- feature_flag_key: string (required)
|
||||
- environment_key: string (required)
|
||||
- id: string (required) -- the trigger ID returned during creation
|
||||
```
|
||||
|
||||
**Warning:** Deletion is irreversible. The trigger and its URL cannot be recovered.
|
||||
|
||||
### 5. List Code Reference Repositories
|
||||
|
||||
Use `LAUNCH_DARKLY_LIST_CODE_REFERENCE_REPOSITORIES` to track where feature flags are used in your codebase.
|
||||
|
||||
```
|
||||
Tool: LAUNCH_DARKLY_LIST_CODE_REFERENCE_REPOSITORIES
|
||||
Inputs:
|
||||
- projKey: string (optional) -- filter by project key
|
||||
- flagKey: string (optional) -- filter by feature flag key
|
||||
- withBranches: string (any value to include branch data)
|
||||
- withReferencesForDefaultBranch: string (any value to include code refs for default branch)
|
||||
```
|
||||
|
||||
**Note:** Code references is an Enterprise feature requiring `code-reference-repository` write permissions.
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| Project key discovery | Always use `LAUNCH_DARKLY_LIST_PROJECTS` first to find valid project keys before calling other tools. |
|
||||
| Environment key format | Environment keys are lowercase slugs (e.g., "production", "test"), not display names. |
|
||||
| Trigger deletion is permanent | Once deleted via `LAUNCH_DARKLY_DELETE_TRIGGER_WORKFLOW`, the trigger URL is unrecoverable. |
|
||||
| Enterprise-only code refs | `LAUNCH_DARKLY_LIST_CODE_REFERENCE_REPOSITORIES` requires Enterprise plan and write permissions. |
|
||||
| Trigger instructions format | Each instruction object requires `kind: "flag_action"` (fixed constant) and `action` as either `turnFlagOn` or `turnFlagOff`. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with LaunchDarkly-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `launch_darkly` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `LAUNCH_DARKLY_LIST_PROJECTS` | List all projects with filtering and pagination |
|
||||
| `LAUNCH_DARKLY_GET_ENVIRONMENTS` | List environments within a project |
|
||||
| `LAUNCH_DARKLY_CREATE_TRIGGER_WORKFLOW` | Create a webhook-driven flag trigger |
|
||||
| `LAUNCH_DARKLY_DELETE_TRIGGER_WORKFLOW` | Permanently delete a flag trigger |
|
||||
| `LAUNCH_DARKLY_LIST_CODE_REFERENCE_REPOSITORIES` | List repos with code references to flags |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,135 @@
|
||||
---
|
||||
name: lemlist-automation
|
||||
description: "Automate Lemlist tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Lemlist Automation
|
||||
description: "Automate Lemlist multichannel outreach -- manage campaigns, enroll leads, add personalization variables, export campaign data, and handle unsubscribes via the Composio MCP integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Lemlist Automation via Rube MCP
|
||||
# Lemlist Automation
|
||||
|
||||
Automate Lemlist operations through Composio's Lemlist toolkit via Rube MCP.
|
||||
Automate your Lemlist multichannel outreach workflows -- manage campaigns, enroll leads at scale, enrich with custom variables, export campaign data, and clean up unsubscribes.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/lemlist](https://composio.dev/toolkits/lemlist)
|
||||
**Toolkit docs:** [composio.dev/toolkits/lemlist](https://composio.dev/toolkits/lemlist)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Lemlist connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `lemlist`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client: `https://rube.app/mcp`
|
||||
2. Connect your Lemlist account when prompted (API key authentication)
|
||||
3. Start using the workflows below
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `lemlist`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List and Discover Campaigns
|
||||
|
||||
Use `LEMLIST_GET_LIST_CAMPAIGNS` to enumerate all campaigns by status, with pagination support.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Lemlist operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: LEMLIST_GET_LIST_CAMPAIGNS
|
||||
Inputs:
|
||||
- status: "running" | "draft" | "archived" | "ended" | "paused" | "errors" (optional)
|
||||
- limit: integer (max 100, default 100)
|
||||
- offset: integer (pagination offset)
|
||||
- sortBy: "createdAt"
|
||||
- sortOrder: "asc" | "desc"
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Important:** The response may be wrapped as `{campaigns: [...], pagination: {...}}` instead of a flat list. Always extract from the `campaigns` key.
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Get Campaign Details
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Use `LEMLIST_GET_CAMPAIGN_BY_ID` to validate campaign configuration before writes.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Lemlist task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: LEMLIST_GET_CAMPAIGN_BY_ID
|
||||
Inputs:
|
||||
- campaignId: string (required) -- e.g., "cam_A1B2C3D4E5F6G7H8I9"
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 3. Enroll Leads into a Campaign
|
||||
|
||||
Use `LEMLIST_POST_CREATE_LEAD_IN_CAMPAIGN` to add leads with optional email finding, phone lookup, and LinkedIn enrichment.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["lemlist"]
|
||||
session_id: "your_session_id"
|
||||
Tool: LEMLIST_POST_CREATE_LEAD_IN_CAMPAIGN
|
||||
Inputs:
|
||||
- campaignId: string (required)
|
||||
- email: string (required)
|
||||
- firstName, lastName, companyName, companyDomain: string (optional)
|
||||
- jobTitle, phone, linkedinUrl, icebreaker: string (optional)
|
||||
- deduplicate: boolean (prevents cross-campaign duplicates)
|
||||
- findEmail, findPhone, verifyEmail, linkedinEnrichment: boolean (optional)
|
||||
- timezone: string (IANA format, e.g., "America/New_York")
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Bulk pattern:** Chunk leads into batches of ~50 and checkpoint progress between batches.
|
||||
|
||||
### 4. Add Custom Variables to a Lead
|
||||
|
||||
Use `LEMLIST_POST_ADD_VARIABLES_TO_LEAD` to enrich leads with personalization fields after enrollment.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: LEMLIST_POST_ADD_VARIABLES_TO_LEAD
|
||||
Inputs:
|
||||
- leadId: string (required) -- internal Lemlist lead ID (NOT email)
|
||||
- company: string (required) -- must match your company name in Lemlist
|
||||
- variables: object (required) -- key-value pairs, e.g., {"score": "42", "color": "yellow"}
|
||||
```
|
||||
|
||||
**Important:** This is NOT an upsert -- attempting to add variables that already exist will fail. Resolve the internal `leadId` via `LEMLIST_GET_RETRIEVE_LEAD_BY_EMAIL` if you only have the email address.
|
||||
|
||||
### 5. Export Campaign Leads
|
||||
|
||||
Use `LEMLIST_GET_EXPORT_CAMPAIGN_LEADS` to download leads with state filtering for reporting or QA.
|
||||
|
||||
```
|
||||
Tool: LEMLIST_GET_EXPORT_CAMPAIGN_LEADS
|
||||
Inputs:
|
||||
- campaignId: string (required)
|
||||
- (supports state filtering and JSON/CSV output)
|
||||
```
|
||||
|
||||
### 6. Unsubscribe Lead from Campaign
|
||||
|
||||
Use `LEMLIST_DELETE_UNSUBSCRIBE_LEAD_FROM_CAMPAIGN` to stop outreach by removing a lead from a campaign.
|
||||
|
||||
```
|
||||
Tool: LEMLIST_DELETE_UNSUBSCRIBE_LEAD_FROM_CAMPAIGN
|
||||
Inputs:
|
||||
- campaignId: string (required)
|
||||
- leadId or email: string (required)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| Wrapped campaign list | `LEMLIST_GET_LIST_CAMPAIGNS` may return `{campaigns: [...], pagination: {...}}` instead of a flat array. Always extract from the `campaigns` key. |
|
||||
| Cross-campaign deduplication | `LEMLIST_POST_CREATE_LEAD_IN_CAMPAIGN` with deduplication enabled fails with HTTP 500 "Lead already in other campaign" -- disable deduplication for intentional cross-campaign enrollment. |
|
||||
| Bulk import failures | Chunk bulk imports to ~50 per batch with checkpoints to avoid losing partial progress on intermittent failures. |
|
||||
| Invalid leadId | `LEMLIST_POST_ADD_VARIABLES_TO_LEAD` returns HTTP 400 "Invalid leadId" when using an email as the leadId -- resolve the internal ID via `LEMLIST_GET_RETRIEVE_LEAD_BY_EMAIL` first. |
|
||||
| Variable collisions | `LEMLIST_POST_ADD_VARIABLES_TO_LEAD` is not an upsert. Adding keys that already exist returns HTTP 400 "Variables X already exist". |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Lemlist-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `lemlist` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `LEMLIST_GET_LIST_CAMPAIGNS` | List all campaigns with status filter and pagination |
|
||||
| `LEMLIST_GET_CAMPAIGN_BY_ID` | Get detailed campaign info by ID |
|
||||
| `LEMLIST_POST_CREATE_LEAD_IN_CAMPAIGN` | Create and enroll a lead into a campaign |
|
||||
| `LEMLIST_POST_ADD_VARIABLES_TO_LEAD` | Add custom personalization variables to a lead |
|
||||
| `LEMLIST_GET_RETRIEVE_LEAD_BY_EMAIL` | Look up a lead by email address |
|
||||
| `LEMLIST_GET_EXPORT_CAMPAIGN_LEADS` | Export leads from a campaign with state filtering |
|
||||
| `LEMLIST_DELETE_UNSUBSCRIBE_LEAD_FROM_CAMPAIGN` | Remove a lead from a campaign |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,156 @@
|
||||
---
|
||||
name: lemon-squeezy-automation
|
||||
description: "Automate Lemon Squeezy tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Lemon Squeezy Automation
|
||||
description: "Automate Lemon Squeezy store management -- products, orders, subscriptions, customers, discounts, and checkout tracking -- using natural language through the Composio MCP integration."
|
||||
category: e-commerce
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Lemon Squeezy Automation via Rube MCP
|
||||
# Lemon Squeezy Automation
|
||||
|
||||
Automate Lemon Squeezy operations through Composio's Lemon Squeezy toolkit via Rube MCP.
|
||||
Manage your Lemon Squeezy digital products business -- track orders, monitor subscriptions, analyze customers, review discounts, and audit checkouts -- all through natural language commands.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/lemon_squeezy](https://composio.dev/toolkits/lemon_squeezy)
|
||||
**Toolkit docs:** [composio.dev/toolkits/lemon_squeezy](https://composio.dev/toolkits/lemon_squeezy)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Lemon Squeezy connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `lemon_squeezy`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Lemon Squeezy account when prompted (API key authentication).
|
||||
3. Start issuing natural language commands to manage your store.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `lemon_squeezy`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Discover Stores and Products
|
||||
List all stores to get store IDs, then retrieve products and variants for a specific store.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Lemon Squeezy operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
**Tools:** `LEMON_SQUEEZY_LIST_ALL_STORES`, `LEMON_SQUEEZY_LIST_ALL_PRODUCTS`, `LEMON_SQUEEZY_LIST_ALL_VARIANTS`
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Example prompt:**
|
||||
> "List all my Lemon Squeezy stores and their products"
|
||||
|
||||
## Core Workflow Pattern
|
||||
**Key parameters:**
|
||||
- `LEMON_SQUEEZY_LIST_ALL_STORES` -- No parameters required
|
||||
- `LEMON_SQUEEZY_LIST_ALL_PRODUCTS` -- Filter by `filter[store_id]`
|
||||
- `LEMON_SQUEEZY_LIST_ALL_VARIANTS` -- Filter by `filter[product_id]`, `filter[status]` (pending/draft/published)
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Lemon Squeezy task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
### 2. Track Orders and Order Items
|
||||
Retrieve all orders with optional filtering by store, user email, or order number, and drill into individual order items.
|
||||
|
||||
### Step 2: Check Connection
|
||||
**Tools:** `LEMON_SQUEEZY_LIST_ALL_ORDERS`, `LEMON_SQUEEZY_LIST_ALL_ORDER_ITEMS`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["lemon_squeezy"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Example prompt:**
|
||||
> "Show all orders from johndoe@example.com in my Lemon Squeezy store"
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Key parameters for orders:**
|
||||
- `filter[store_id]` -- Filter by store ID
|
||||
- `filter[user_email]` -- Filter by customer email
|
||||
- `filter[order_number]` -- Filter by specific order number
|
||||
- `page[number]` / `page[size]` -- Pagination (max 100 per page)
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Key parameters for order items:**
|
||||
- `filter[order_id]`, `filter[product_id]`, `filter[variant_id]` -- Filter by related entity
|
||||
|
||||
---
|
||||
|
||||
### 3. Monitor Subscriptions
|
||||
List all subscriptions with rich filtering options to track recurring revenue.
|
||||
|
||||
**Tool:** `LEMON_SQUEEZY_LIST_ALL_SUBSCRIPTIONS`
|
||||
|
||||
**Example prompt:**
|
||||
> "Show all active subscriptions in my Lemon Squeezy store"
|
||||
|
||||
**Key parameters:**
|
||||
- `filter[status]` -- Filter by status (e.g., `active`, `cancelled`)
|
||||
- `filter[store_id]` -- Filter by store
|
||||
- `filter[product_id]` -- Filter by product
|
||||
- `filter[user_email]` -- Filter by subscriber email
|
||||
- `filter[variant_id]` -- Filter by variant
|
||||
- `page[number]` / `page[size]` -- Pagination (max 100 per page)
|
||||
|
||||
---
|
||||
|
||||
### 4. Manage Customers
|
||||
Retrieve customer records with details including email, MRR, total revenue, and customer portal URLs.
|
||||
|
||||
**Tool:** `LEMON_SQUEEZY_LIST_ALL_CUSTOMERS`
|
||||
|
||||
**Example prompt:**
|
||||
> "Find the Lemon Squeezy customer with email johndoe@example.com"
|
||||
|
||||
**Key parameters:**
|
||||
- `filter[email]` -- Filter by exact email address
|
||||
- `filter[store_id]` -- Filter by store ID
|
||||
- `page[number]` / `page[size]` -- Pagination (max 100 per page)
|
||||
|
||||
---
|
||||
|
||||
### 5. Audit Discounts and Redemptions
|
||||
List all discount codes and track how they have been redeemed across orders.
|
||||
|
||||
**Tools:** `LEMON_SQUEEZY_LIST_ALL_DISCOUNTS`, `LEMON_SQUEEZY_LIST_ALL_DISCOUNT_REDEMPTIONS`
|
||||
|
||||
**Example prompt:**
|
||||
> "Show all discounts for store 12345 and their redemption history"
|
||||
|
||||
**Key parameters for discounts:**
|
||||
- `filter[store_id]` -- Filter by store
|
||||
- `page[number]` / `page[size]` -- Pagination
|
||||
|
||||
**Key parameters for redemptions:**
|
||||
- `filter[discount_id]` -- Filter by discount
|
||||
- `filter[order_id]` -- Filter by order
|
||||
|
||||
---
|
||||
|
||||
### 6. Review Checkouts
|
||||
List all checkout sessions with optional filtering by store or variant.
|
||||
|
||||
**Tool:** `LEMON_SQUEEZY_LIST_ALL_CHECKOUTS`
|
||||
|
||||
**Example prompt:**
|
||||
> "Show all checkouts for variant 42 in my Lemon Squeezy store"
|
||||
|
||||
**Key parameters:**
|
||||
- `filter[store_id]` -- Filter by store ID
|
||||
- `filter[variant_id]` -- Filter by variant ID
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Store ID is foundational**: Most filters require a `store_id`. Always call `LEMON_SQUEEZY_LIST_ALL_STORES` first to discover valid store IDs before filtering other resources.
|
||||
- **Pagination is mandatory for large datasets**: All list endpoints use `page[number]` / `page[size]` pagination (max 100 per page). Do not assume the first page is complete.
|
||||
- **Filter parameter naming**: Lemon Squeezy uses bracket notation for filters (e.g., `filter[store_id]`, `page[number]`). Ensure exact parameter names are used.
|
||||
- **Subscription invoices vs. orders**: Subscription invoices (`LEMON_SQUEEZY_LIST_ALL_SUBSCRIPTION_INVOICES`) are separate from one-time orders. Use the appropriate endpoint for your use case.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Lemon Squeezy-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `lemon_squeezy` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Required Params |
|
||||
|---|---|---|
|
||||
| List stores | `LEMON_SQUEEZY_LIST_ALL_STORES` | None |
|
||||
| List products | `LEMON_SQUEEZY_LIST_ALL_PRODUCTS` | None (optional filters) |
|
||||
| List variants | `LEMON_SQUEEZY_LIST_ALL_VARIANTS` | None (optional filters) |
|
||||
| List orders | `LEMON_SQUEEZY_LIST_ALL_ORDERS` | None (optional filters) |
|
||||
| List order items | `LEMON_SQUEEZY_LIST_ALL_ORDER_ITEMS` | None (optional filters) |
|
||||
| List subscriptions | `LEMON_SQUEEZY_LIST_ALL_SUBSCRIPTIONS` | None (optional filters) |
|
||||
| List customers | `LEMON_SQUEEZY_LIST_ALL_CUSTOMERS` | None (optional filters) |
|
||||
| List discounts | `LEMON_SQUEEZY_LIST_ALL_DISCOUNTS` | None (optional filters) |
|
||||
| List discount redemptions | `LEMON_SQUEEZY_LIST_ALL_DISCOUNT_REDEMPTIONS` | None (optional filters) |
|
||||
| List checkouts | `LEMON_SQUEEZY_LIST_ALL_CHECKOUTS` | None (optional filters) |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,149 @@
|
||||
---
|
||||
name: lever-automation
|
||||
description: "Automate Lever tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Lever Automation
|
||||
description: "Automate recruiting workflows in Lever ATS -- manage opportunities, job postings, requisitions, pipeline stages, and candidate tags through the Composio Lever integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Lever Automation via Rube MCP
|
||||
# Lever Automation
|
||||
|
||||
Automate Lever operations through Composio's Lever toolkit via Rube MCP.
|
||||
Automate your recruiting operations in **Lever ATS** directly from Claude Code. Manage job postings, track candidate pipelines, update requisitions, and query opportunities without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/lever](https://composio.dev/toolkits/lever)
|
||||
**Toolkit docs:** [composio.dev/toolkits/lever](https://composio.dev/toolkits/lever)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Lever connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `lever`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Lever account when prompted by running any Lever command. The agent will provide an OAuth link to authenticate.
|
||||
3. Ensure your Lever API key has sufficient scopes for the operations you need (read/write access to postings, opportunities, requisitions).
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `lever`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List and Filter Job Postings
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Lever operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Retrieve all job postings with optional filtering by state, team, department, location, or commitment type.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `LEVER_LIST_POSTINGS`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `state` -- filter by `published`, `internal`, `closed`, `draft`, `pending`, `rejected`
|
||||
- `team`, `department`, `location`, `commitment` -- narrow results by organizational attributes
|
||||
- `limit` (1-100) and `offset` -- paginate through large posting sets
|
||||
- `tag` -- filter by posting tag
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Example prompt: *"List all published engineering job postings in Lever"*
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Lever task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. Browse Candidate Opportunities
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["lever"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
List all opportunities in the hiring pipeline with rich filtering for pipeline analysis and candidate tracking.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tool:** `LEVER_LIST_OPPORTUNITIES`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Key parameters:
|
||||
- `posting_id`, `stage_id`, `tag` -- filter by posting, pipeline stage, or tag
|
||||
- `email`, `contact_id` -- find opportunities for a specific candidate
|
||||
- `archived` -- filter by archived status (`true`/`false`)
|
||||
- `created_at_start`, `created_at_end` -- date range filtering (ISO 8601)
|
||||
- `expand` -- expand `applications`, `contact`, `owner`, `stage`, `stageChanges`, `sources`, `sourcedBy` into full objects
|
||||
|
||||
Example prompt: *"Show me all active opportunities for the Senior Engineer posting, expanded with contact details"*
|
||||
|
||||
---
|
||||
|
||||
### 3. Get Opportunity Details
|
||||
|
||||
Fetch comprehensive details about a single candidate opportunity including contact info, stage progression, sources, and applications.
|
||||
|
||||
**Tool:** `LEVER_GET_OPPORTUNITY`
|
||||
|
||||
Key parameters:
|
||||
- `opportunity` (required) -- the unique opportunity UID
|
||||
- `expand` -- comma-separated fields to expand: `contact`, `stage`, `owner`
|
||||
|
||||
Example prompt: *"Get full details for opportunity 31c9716c-d4e3-47e8-a6a1-54078a1151d6 with contact and stage expanded"*
|
||||
|
||||
---
|
||||
|
||||
### 4. Manage Requisitions
|
||||
|
||||
Create, list, update, and delete requisitions to track headcount and hiring needs.
|
||||
|
||||
**Tools:** `LEVER_LIST_REQUISITIONS`, `LEVER_GET_REQUISITION`, `LEVER_UPDATE_REQUISITION`, `LEVER_DELETE_REQUISITION`
|
||||
|
||||
Update requires these fields:
|
||||
- `requisition` (required) -- UUID of the requisition
|
||||
- `requisitionCode` (required) -- unique code like `REQ-001`
|
||||
- `name` (required) -- requisition title
|
||||
- `headcountTotal` (required) -- number of positions (minimum 1)
|
||||
- `status` -- `open` or `closed`
|
||||
- Optional: `hiringManager`, `owner`, `department`, `team`, `location`, `compensationBand`
|
||||
|
||||
Example prompt: *"Update requisition REQ-001 to increase headcount to 3 and change status to open"*
|
||||
|
||||
---
|
||||
|
||||
### 5. View Pipeline Stages
|
||||
|
||||
Retrieve all hiring pipeline stages configured in your Lever account.
|
||||
|
||||
**Tool:** `LEVER_LIST_STAGES`
|
||||
|
||||
Key parameters:
|
||||
- `limit` (1-100) -- max items per page
|
||||
- `offset` -- pagination token from previous response
|
||||
|
||||
Example prompt: *"List all pipeline stages in our Lever account"*
|
||||
|
||||
---
|
||||
|
||||
### 6. Manage Tags
|
||||
|
||||
List all tags used to categorize candidates, opportunities, and postings.
|
||||
|
||||
**Tool:** `LEVER_LIST_TAGS`
|
||||
|
||||
Key parameters:
|
||||
- `limit` -- max items per page
|
||||
- `offset` -- pagination token
|
||||
|
||||
Example prompt: *"Show all candidate tags in Lever"*
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Pagination required for large datasets:** `LEVER_LIST_OPPORTUNITIES` and `LEVER_LIST_POSTINGS` default to 100 results max per page. Always check for an `offset` token in the response and iterate to get complete results.
|
||||
- **Expand parameter format:** The `expand` field on `LEVER_LIST_OPPORTUNITIES` accepts an array of strings, while on `LEVER_GET_OPPORTUNITY` and `LEVER_GET_REQUISITION` it accepts a comma-separated string. Follow the exact schema for each tool.
|
||||
- **Requisition updates are full replacements:** `LEVER_UPDATE_REQUISITION` requires all mandatory fields (`requisitionCode`, `name`, `headcountTotal`) even if you only want to change one field. Always fetch the current requisition first with `LEVER_GET_REQUISITION`.
|
||||
- **Timestamps:** Opportunity date filters use ISO 8601 format, while `LEVER_LIST_POSTINGS` uses Unix timestamps in milliseconds for `updated_at_start`.
|
||||
- **Connection scopes:** Write operations (update/delete requisitions) will fail if your API token lacks the necessary permissions, even if reads succeed.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Lever-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `lever` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `LEVER_LIST_POSTINGS` | List all job postings with filtering by state, team, department |
|
||||
| `LEVER_LIST_OPPORTUNITIES` | List candidate opportunities with pipeline filtering |
|
||||
| `LEVER_GET_OPPORTUNITY` | Get detailed info for a single opportunity |
|
||||
| `LEVER_GET_REQUISITION` | Retrieve a single requisition by ID |
|
||||
| `LEVER_LIST_REQUISITIONS` | List all requisitions with status/code filtering |
|
||||
| `LEVER_UPDATE_REQUISITION` | Update an existing requisition (full replacement) |
|
||||
| `LEVER_DELETE_REQUISITION` | Delete/archive a requisition |
|
||||
| `LEVER_LIST_STAGES` | List all pipeline stages |
|
||||
| `LEVER_LIST_TAGS` | List all tags for categorization |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,139 @@
|
||||
---
|
||||
name: mailerlite-automation
|
||||
description: "Automate Mailerlite tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: MailerLite Automation
|
||||
description: "Automate email marketing workflows including subscriber management, campaign analytics, group segmentation, and account monitoring through MailerLite via Composio"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Mailerlite Automation via Rube MCP
|
||||
# MailerLite Automation
|
||||
|
||||
Automate Mailerlite operations through Composio's Mailerlite toolkit via Rube MCP.
|
||||
Automate email marketing operations -- manage subscribers, analyze campaign performance, organize groups and segments, and monitor account health -- all orchestrated through the Composio MCP integration.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/mailerlite](https://composio.dev/toolkits/mailerlite)
|
||||
**Toolkit docs:** [composio.dev/toolkits/mailerlite](https://composio.dev/toolkits/mailerlite)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Mailerlite connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `mailerlite`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Connect your MailerLite account through the Composio MCP server at `https://rube.app/mcp`
|
||||
2. The agent will prompt you with an authentication link if no active connection exists
|
||||
3. Once connected, all `MAILERLITE_*` tools become available for execution
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `mailerlite`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Verify Account & Fetch Metadata
|
||||
Retrieve account details including plan limits and timezone to ensure consistent reporting.
|
||||
|
||||
**Tool:** `MAILERLITE_GET_ACCOUNT_INFO`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Mailerlite operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
No parameters required -- returns account metadata, plan details, and timezone configuration.
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Always run this first to establish plan constraints and timezone for consistent time-windowed queries.
|
||||
|
||||
## Core Workflow Pattern
|
||||
---
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
### 2. Get Account-Wide Performance Stats
|
||||
Retrieve aggregate subscriber counts, sent email totals, and engagement metrics for a health snapshot.
|
||||
|
||||
**Tool:** `MAILERLITE_GET_ACCOUNT_STATS`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Mailerlite task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
No parameters required -- returns overall subscriber counts, sent emails, and performance metrics.
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["mailerlite"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
### 3. List & Paginate Subscribers
|
||||
Retrieve subscribers with optional status filtering and cursor-based pagination.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tool:** `MAILERLITE_GET_SUBSCRIBERS`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `filter[status]` | string | No | Filter by: `active`, `unsubscribed`, `unconfirmed`, `bounced`, `junk` |
|
||||
| `limit` | integer | No | Subscribers per page (default: 25) |
|
||||
| `cursor` | string | No | Pagination cursor from previous response `meta.cursor` |
|
||||
| `include` | string | No | Set to `groups` to include group memberships |
|
||||
|
||||
**Important:** Loop with `meta.next_cursor` until `null` to build a complete subscriber list.
|
||||
|
||||
---
|
||||
|
||||
### 4. List & Analyze Campaigns
|
||||
Retrieve campaigns with optional status/type filters and page-based pagination.
|
||||
|
||||
**Tool:** `MAILERLITE_GET_CAMPAIGNS`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `filter[status]` | string | No | Filter by: `sent`, `draft`, `ready` |
|
||||
| `filter[type]` | string | No | Filter by: `regular`, `ab`, `resend`, `rss` |
|
||||
| `limit` | integer | No | Items per page (default: 25) |
|
||||
| `page` | integer | No | Page number (default: 1) |
|
||||
|
||||
**Important:** Paginate using `meta.last_page` to avoid omitting campaigns from historical analysis.
|
||||
|
||||
---
|
||||
|
||||
### 5. Manage Subscriber Groups
|
||||
List, filter, and sort subscriber groups for audience organization.
|
||||
|
||||
**Tool:** `MAILERLITE_GET_GROUPS`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `filter[name]` | string | No | Partial name match filter |
|
||||
| `limit` | integer | No | Max groups to return |
|
||||
| `page` | integer | No | Page number (starting from 1) |
|
||||
| `sort` | string | No | Sort by: `name`, `total`, `open_rate`, `click_rate`, `created_at` (prefix `-` for descending) |
|
||||
|
||||
---
|
||||
|
||||
### 6. Retrieve Audience Segments & Custom Fields
|
||||
Fetch segments and custom field definitions for advanced audience analysis.
|
||||
|
||||
**Tools:** `MAILERLITE_GET_SEGMENTS` and `MAILERLITE_GET_FIELDS`
|
||||
|
||||
**Segments:**
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `limit` | integer | No | Max segments to return (max 250) |
|
||||
| `page` | integer | No | Page number (starting from 1) |
|
||||
|
||||
**Fields:** No parameters required -- returns all custom field definitions.
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| **Subscriber pagination is cursor-based** | `MAILERLITE_GET_SUBSCRIBERS` uses `meta.next_cursor` -- you must loop until `null` or counts will be incomplete |
|
||||
| **Campaign pagination is page-based** | `MAILERLITE_GET_CAMPAIGNS` uses `page`/`limit` with `meta.last_page` -- stopping early omits campaigns and distorts trends |
|
||||
| **Sampling bias** | Computing engagement metrics from only the first page introduces bias; always aggregate across all pages |
|
||||
| **Nested response shape** | MailerLite payloads are nested under `results[i].response.data` with `data` and `meta` subkeys, not a flat `data` key -- parse accordingly |
|
||||
| **API quotas** | Subscriber listing is limited by MailerLite Connect API quotas -- plan batch operations accordingly |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Mailerlite-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `mailerlite` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Purpose |
|
||||
|-----------|---------|
|
||||
| `MAILERLITE_GET_ACCOUNT_INFO` | Verify auth and review account metadata |
|
||||
| `MAILERLITE_GET_ACCOUNT_STATS` | Get aggregate performance metrics |
|
||||
| `MAILERLITE_GET_SUBSCRIBERS` | List subscribers with filtering and pagination |
|
||||
| `MAILERLITE_GET_CAMPAIGNS` | List campaigns with status/type filters |
|
||||
| `MAILERLITE_GET_GROUPS` | List and sort subscriber groups |
|
||||
| `MAILERLITE_GET_SEGMENTS` | List audience segments |
|
||||
| `MAILERLITE_GET_FIELDS` | Retrieve custom field definitions |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,150 @@
|
||||
---
|
||||
name: microsoft-clarity-automation
|
||||
description: "Automate Microsoft Clarity tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Microsoft Clarity Automation
|
||||
description: "Automate user behavior analytics with Microsoft Clarity -- export heatmap data, session metrics, and engagement analytics segmented by browser, device, country, source, and more through the Composio Microsoft Clarity integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Microsoft Clarity Automation via Rube MCP
|
||||
# Microsoft Clarity Automation
|
||||
|
||||
Automate Microsoft Clarity operations through Composio's Microsoft Clarity toolkit via Rube MCP.
|
||||
Export **Microsoft Clarity** user behavior analytics directly from Claude Code. Pull heatmap data, session metrics, and engagement insights segmented by multiple dimensions without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/microsoft_clarity](https://composio.dev/toolkits/microsoft_clarity)
|
||||
**Toolkit docs:** [composio.dev/toolkits/microsoft_clarity](https://composio.dev/toolkits/microsoft_clarity)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Microsoft Clarity connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `microsoft_clarity`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Microsoft Clarity account when prompted. The agent will provide an authentication link.
|
||||
3. Ensure your Clarity project has sufficient data collection enabled for the dimensions you want to analyze.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `microsoft_clarity`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Export Recent Analytics Data
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Microsoft Clarity operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Export Clarity analytics data for the last 1-3 days, segmented by up to three dimensions simultaneously.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `MICROSOFT_CLARITY_DATA_EXPORT`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `numOfDays` (required) -- number of days to export: `1` (last 24h), `2` (last 48h), or `3` (last 72h)
|
||||
- `dimension1` -- first breakdown dimension
|
||||
- `dimension2` -- second breakdown dimension (optional)
|
||||
- `dimension3` -- third breakdown dimension (optional)
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Available dimensions:
|
||||
- `Browser` -- Chrome, Firefox, Safari, Edge, etc.
|
||||
- `Device` -- Desktop, Mobile, Tablet
|
||||
- `Country/Region` -- geographic location of users
|
||||
- `OS` -- Windows, macOS, iOS, Android, etc.
|
||||
- `Source` -- traffic source (e.g., google, direct, referral)
|
||||
- `Medium` -- traffic medium (organic, cpc, referral, etc.)
|
||||
- `Campaign` -- marketing campaign name
|
||||
- `Channel` -- traffic channel grouping
|
||||
- `URL` -- specific page URLs
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Microsoft Clarity task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
Example prompt: *"Export Clarity data for the last 24 hours broken down by Device and Country/Region"*
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["microsoft_clarity"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
### 2. Device Performance Analysis
|
||||
|
||||
### Step 3: Execute Tools
|
||||
Analyze how user behavior differs across device types to optimize responsive design.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Tool:** `MICROSOFT_CLARITY_DATA_EXPORT`
|
||||
|
||||
Configuration: `numOfDays: 3`, `dimension1: "Device"`, `dimension2: "Browser"`
|
||||
|
||||
Example prompt: *"Show me Clarity metrics for the last 3 days by Device and Browser"*
|
||||
|
||||
---
|
||||
|
||||
### 3. Traffic Source Breakdown
|
||||
|
||||
Understand which traffic sources drive the most engaged users.
|
||||
|
||||
**Tool:** `MICROSOFT_CLARITY_DATA_EXPORT`
|
||||
|
||||
Configuration: `numOfDays: 2`, `dimension1: "Source"`, `dimension2: "Medium"`
|
||||
|
||||
Example prompt: *"Export Clarity data for the last 48 hours broken down by Source and Medium"*
|
||||
|
||||
---
|
||||
|
||||
### 4. Geographic User Behavior
|
||||
|
||||
Analyze user engagement patterns across different countries and regions.
|
||||
|
||||
**Tool:** `MICROSOFT_CLARITY_DATA_EXPORT`
|
||||
|
||||
Configuration: `numOfDays: 3`, `dimension1: "Country/Region"`, `dimension2: "Device"`
|
||||
|
||||
Example prompt: *"Get Clarity data for the last 72 hours segmented by Country/Region and Device type"*
|
||||
|
||||
---
|
||||
|
||||
### 5. Page-Level Performance
|
||||
|
||||
Examine which specific URLs have the highest or lowest engagement metrics.
|
||||
|
||||
**Tool:** `MICROSOFT_CLARITY_DATA_EXPORT`
|
||||
|
||||
Configuration: `numOfDays: 1`, `dimension1: "URL"`, `dimension2: "Device"`
|
||||
|
||||
Example prompt: *"Export yesterday's Clarity data broken down by URL and Device"*
|
||||
|
||||
---
|
||||
|
||||
### 6. Campaign Attribution Analysis
|
||||
|
||||
Evaluate marketing campaign effectiveness through user behavior metrics.
|
||||
|
||||
**Tool:** `MICROSOFT_CLARITY_DATA_EXPORT`
|
||||
|
||||
Configuration: `numOfDays: 3`, `dimension1: "Campaign"`, `dimension2: "Channel"`, `dimension3: "Device"`
|
||||
|
||||
Example prompt: *"Show Clarity engagement data for the last 3 days by Campaign, Channel, and Device"*
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Limited time window:** Data export is limited to the last 1, 2, or 3 days only. The `numOfDays` parameter only accepts values of 1, 2, or 3. For longer historical analysis, you need to run exports periodically and aggregate them externally.
|
||||
- **Dimension name exact match:** Dimension values must match exactly as listed (e.g., `Country/Region` not `country` or `region`). Case and slashes matter.
|
||||
- **Maximum three dimensions:** You can segment by up to three dimensions per export. For more complex analysis, run multiple exports with different dimension combinations.
|
||||
- **Data availability lag:** Clarity data may have a short processing delay. Very recent sessions (last few minutes) may not appear in exports.
|
||||
- **Single tool limitation:** The Clarity integration currently offers only the data export tool. For heatmap visualizations and session recordings, use the Clarity web dashboard directly.
|
||||
- **Response size:** Exports with high-cardinality dimensions like `URL` combined with other dimensions can produce large response payloads. Consider narrowing your time window or using fewer dimensions.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Microsoft Clarity-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `microsoft_clarity` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `MICROSOFT_CLARITY_DATA_EXPORT` | Export analytics data with up to 3 dimensional breakdowns |
|
||||
|
||||
**Available Dimensions:**
|
||||
|
||||
| Dimension | Description |
|
||||
|---|---|
|
||||
| `Browser` | Web browser (Chrome, Firefox, Safari, etc.) |
|
||||
| `Device` | Device type (Desktop, Mobile, Tablet) |
|
||||
| `Country/Region` | Geographic location |
|
||||
| `OS` | Operating system |
|
||||
| `Source` | Traffic source |
|
||||
| `Medium` | Traffic medium |
|
||||
| `Campaign` | Marketing campaign |
|
||||
| `Channel` | Traffic channel grouping |
|
||||
| `URL` | Specific page URL |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,134 @@
|
||||
---
|
||||
name: mistral-ai-automation
|
||||
description: "Automate Mistral AI tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Mistral AI Automation
|
||||
description: "Automate Mistral AI operations -- manage files and libraries, upload documents for fine-tuning, batch processing, and OCR, track fine-tuning jobs, and build RAG pipelines via the Composio MCP integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Mistral AI Automation via Rube MCP
|
||||
# Mistral AI Automation
|
||||
|
||||
Automate Mistral AI operations through Composio's Mistral AI toolkit via Rube MCP.
|
||||
Automate your Mistral AI workflows -- upload files for fine-tuning, batch processing, and OCR, manage document libraries for RAG-enabled agents, list and retrieve files, track fine-tuning jobs, and integrate Mistral AI into cross-app data pipelines.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/mistral_ai](https://composio.dev/toolkits/mistral_ai)
|
||||
**Toolkit docs:** [composio.dev/toolkits/mistral_ai](https://composio.dev/toolkits/mistral_ai)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Mistral AI connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `mistral_ai`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client: `https://rube.app/mcp`
|
||||
2. Connect your Mistral AI account when prompted (API key authentication)
|
||||
3. Start using the workflows below
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `mistral_ai`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Upload Files to Mistral AI
|
||||
|
||||
Use `MISTRAL_AI_UPLOAD_FILE` to upload files for fine-tuning, batch processing, or OCR.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Mistral AI operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: MISTRAL_AI_UPLOAD_FILE
|
||||
Inputs:
|
||||
- file: object (required)
|
||||
- name: string -- destination filename (e.g., "training_data.jsonl")
|
||||
- mimetype: string -- MIME type (e.g., "application/pdf", "application/jsonl")
|
||||
- s3key: string -- S3 key of a previously downloaded/stored file
|
||||
- purpose: "fine-tune" | "batch" | "ocr" (default "fine-tune")
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Limits:** Maximum file size is 512 MB. For fine-tuning, only `.jsonl` files are supported.
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. List and Retrieve Files
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Use `MISTRAL_AI_LIST_FILES` to browse uploaded files with pagination, and `MISTRAL_AI_RETRIEVE_FILE` to get metadata for a specific file.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Mistral AI task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: MISTRAL_AI_LIST_FILES
|
||||
Inputs:
|
||||
- limit: integer (optional, min 1)
|
||||
- after: string (file ID cursor for next page)
|
||||
- order: "asc" | "desc" (default "desc")
|
||||
|
||||
Tool: MISTRAL_AI_RETRIEVE_FILE
|
||||
Inputs:
|
||||
- file_id: string (required) -- UUID obtained from List Files
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 3. Create Document Libraries
|
||||
|
||||
Use `MISTRAL_AI_CREATE_LIBRARY` to group documents into libraries for use with RAG-enabled Mistral AI agents.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["mistral_ai"]
|
||||
session_id: "your_session_id"
|
||||
Tool: MISTRAL_AI_CREATE_LIBRARY
|
||||
Inputs:
|
||||
- name: string (required) -- e.g., "Project Documents"
|
||||
- description: string (optional)
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Upload Documents to a Library
|
||||
|
||||
Use `MISTRAL_AI_UPLOAD_LIBRARY_DOCUMENT` to add documents to a library for RAG retrieval by Mistral AI agents.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: MISTRAL_AI_UPLOAD_LIBRARY_DOCUMENT
|
||||
- Requires library_id and file details
|
||||
- Call RUBE_GET_TOOL_SCHEMAS for full input schema before use
|
||||
```
|
||||
|
||||
### 5. List Libraries and Download Files
|
||||
|
||||
Use `MISTRAL_AI_LIST_LIBRARIES` to discover available document libraries, and `MISTRAL_AI_DOWNLOAD_FILE` to retrieve file content.
|
||||
|
||||
```
|
||||
Tool: MISTRAL_AI_LIST_LIBRARIES
|
||||
- Lists all document libraries with metadata (id, name, document counts)
|
||||
- Call RUBE_GET_TOOL_SCHEMAS for full input schema
|
||||
|
||||
Tool: MISTRAL_AI_DOWNLOAD_FILE
|
||||
- Downloads raw binary content of a previously uploaded file
|
||||
- Call RUBE_GET_TOOL_SCHEMAS for full input schema
|
||||
```
|
||||
|
||||
### 6. Track Fine-Tuning Jobs
|
||||
|
||||
Use `MISTRAL_AI_GET_FINE_TUNING_JOBS` to list and filter fine-tuning jobs by model, status, and creation time.
|
||||
|
||||
```
|
||||
Tool: MISTRAL_AI_GET_FINE_TUNING_JOBS
|
||||
- Supports filtering by model, status, creation time, and W&B integration
|
||||
- Call RUBE_GET_TOOL_SCHEMAS for full input schema
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| Fine-tune file format | Only `.jsonl` files are supported for fine-tuning uploads. Other formats will be rejected. |
|
||||
| File size limit | Maximum upload size is 512 MB per file. |
|
||||
| File object structure | `MISTRAL_AI_UPLOAD_FILE` requires an `s3key` referencing a previously stored file, not raw binary content. Use a download action first to stage files in S3. |
|
||||
| Pagination cursors | `MISTRAL_AI_LIST_FILES` uses cursor-based pagination via the `after` parameter (file ID). Continue fetching until no more results are returned. |
|
||||
| Library document processing | Uploaded library documents are processed asynchronously. They may not be immediately available for RAG queries after upload. |
|
||||
| Schema references | Several tools (`MISTRAL_AI_UPLOAD_LIBRARY_DOCUMENT`, `MISTRAL_AI_LIST_LIBRARIES`, `MISTRAL_AI_GET_FINE_TUNING_JOBS`, `MISTRAL_AI_DOWNLOAD_FILE`) require calling `RUBE_GET_TOOL_SCHEMAS` to load full input schemas before execution. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Mistral AI-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `mistral_ai` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `MISTRAL_AI_UPLOAD_FILE` | Upload files for fine-tuning, batch processing, or OCR |
|
||||
| `MISTRAL_AI_LIST_FILES` | List uploaded files with pagination |
|
||||
| `MISTRAL_AI_RETRIEVE_FILE` | Get metadata for a specific file by ID |
|
||||
| `MISTRAL_AI_DOWNLOAD_FILE` | Download content of an uploaded file |
|
||||
| `MISTRAL_AI_CREATE_LIBRARY` | Create a document library for RAG |
|
||||
| `MISTRAL_AI_LIST_LIBRARIES` | List all document libraries with metadata |
|
||||
| `MISTRAL_AI_UPLOAD_LIBRARY_DOCUMENT` | Add a document to a library for RAG |
|
||||
| `MISTRAL_AI_GET_FINE_TUNING_JOBS` | List and filter fine-tuning jobs |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,139 @@
|
||||
---
|
||||
name: neon-automation
|
||||
description: "Automate Neon tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Neon Automation
|
||||
description: "Automate Neon serverless Postgres operations -- manage projects, branches, databases, roles, and connection URIs via the Composio MCP integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Neon Automation via Rube MCP
|
||||
# Neon Automation
|
||||
|
||||
Automate Neon operations through Composio's Neon toolkit via Rube MCP.
|
||||
Automate your Neon serverless Postgres workflows -- list projects and branches, inspect databases, retrieve connection URIs, manage roles, and integrate Neon database operations into cross-app pipelines.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/neon](https://composio.dev/toolkits/neon)
|
||||
**Toolkit docs:** [composio.dev/toolkits/neon](https://composio.dev/toolkits/neon)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Neon connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `neon`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client: `https://rube.app/mcp`
|
||||
2. Connect your Neon account when prompted (API key authentication)
|
||||
3. Start using the workflows below
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `neon`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List Projects
|
||||
|
||||
Use `NEON_RETRIEVE_PROJECTS_LIST` to discover all projects associated with the authenticated user.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Neon operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: NEON_RETRIEVE_PROJECTS_LIST
|
||||
Inputs:
|
||||
- org_id: string (REQUIRED when using a personal API key)
|
||||
- limit: integer (1-400, default 10)
|
||||
- cursor: string (pagination cursor from previous response)
|
||||
- search: string (search by project name or ID, supports partial match)
|
||||
- timeout: integer (milliseconds; returns partial results on timeout)
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Important:** When using a personal API key, `org_id` is required. Retrieve it first via `NEON_GET_USER_ORGANIZATIONS`.
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Get Project Details
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Use `NEON_ACCESS_PROJECT_DETAILS_BY_ID` to inspect project configuration, owner info, and consumption metrics.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Neon task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: NEON_ACCESS_PROJECT_DETAILS_BY_ID
|
||||
Inputs:
|
||||
- project_id: string (required) -- format: "adjective-noun-number", e.g., "dry-smoke-26258271"
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 3. List Branches for a Project
|
||||
|
||||
Use `NEON_GET_BRANCHES_FOR_PROJECT` to enumerate branches (development stages) within a project.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["neon"]
|
||||
session_id: "your_session_id"
|
||||
Tool: NEON_GET_BRANCHES_FOR_PROJECT
|
||||
Inputs:
|
||||
- project_id: string (required)
|
||||
- search: string (optional, search by branch name or ID)
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. List Databases on a Branch
|
||||
|
||||
Use `NEON_FETCH_DATABASE_FOR_BRANCH` to inventory databases within a specific project and branch.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: NEON_FETCH_DATABASE_FOR_BRANCH
|
||||
Inputs:
|
||||
- project_id: string (required)
|
||||
- branch_id: string (required)
|
||||
```
|
||||
|
||||
### 5. Get Connection URI
|
||||
|
||||
Use `NEON_GET_PROJECT_CONNECTION_URI` to obtain a Postgres connection string for a project/branch/database.
|
||||
|
||||
```
|
||||
Tool: NEON_GET_PROJECT_CONNECTION_URI
|
||||
Inputs:
|
||||
- project_id: string (required)
|
||||
- database_name: string (required) -- e.g., "neondb"
|
||||
- role_name: string (required) -- e.g., "neondb_owner"
|
||||
- branch_id: string (optional, defaults to project default branch)
|
||||
- endpoint_id: string (optional, defaults to read-write endpoint)
|
||||
- pooled: boolean (optional, adds -pooler for connection pooling)
|
||||
```
|
||||
|
||||
**Security:** The returned URI includes credentials. Treat it as a secret -- do not log or share it.
|
||||
|
||||
### 6. Inspect Database Details and Roles
|
||||
|
||||
Use `NEON_RETRIEVE_BRANCH_DATABASE_DETAILS` to verify a database before connecting, and `NEON_GET_BRANCH_ROLES_FOR_PROJECT` to list available roles.
|
||||
|
||||
```
|
||||
Tool: NEON_RETRIEVE_BRANCH_DATABASE_DETAILS
|
||||
Inputs:
|
||||
- project_id: string (required)
|
||||
- branch_id: string (required)
|
||||
- database_name: string (required)
|
||||
|
||||
Tool: NEON_GET_BRANCH_ROLES_FOR_PROJECT
|
||||
Inputs:
|
||||
- project_id: string (required)
|
||||
- branch_id: string (required)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| org_id required | `NEON_RETRIEVE_PROJECTS_LIST` returns HTTP 400 "org_id is required" when using a personal API key. Call `NEON_GET_USER_ORGANIZATIONS` first. |
|
||||
| Incomplete pagination | Project lists may be incomplete without pagination. Iterate using `cursor` until it is empty. |
|
||||
| Rate limiting | `NEON_RETRIEVE_PROJECTS_LIST` returns HTTP 429 on bursty listing. Avoid redundant calls and back off before retrying. |
|
||||
| Invalid role/database pairing | `NEON_GET_PROJECT_CONNECTION_URI` returns 401/403 when the database_name/role_name pairing is invalid. Use `NEON_GET_BRANCH_ROLES_FOR_PROJECT` to select an allowed role. |
|
||||
| Connection URI is a secret | The returned URI includes credentials. Never log, display, or share it in plain text. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Neon-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `neon` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `NEON_RETRIEVE_PROJECTS_LIST` | List all Neon projects with pagination and search |
|
||||
| `NEON_ACCESS_PROJECT_DETAILS_BY_ID` | Get project configuration and consumption metrics |
|
||||
| `NEON_GET_BRANCHES_FOR_PROJECT` | List branches within a project |
|
||||
| `NEON_FETCH_DATABASE_FOR_BRANCH` | List databases on a specific branch |
|
||||
| `NEON_GET_PROJECT_CONNECTION_URI` | Get a Postgres connection URI (with credentials) |
|
||||
| `NEON_RETRIEVE_BRANCH_DATABASE_DETAILS` | Inspect database metadata and settings |
|
||||
| `NEON_GET_USER_ORGANIZATIONS` | List organizations for the authenticated user |
|
||||
| `NEON_CREATE_API_KEY_FOR_ORGANIZATION` | Create a new API key for an organization |
|
||||
| `NEON_GET_BRANCH_ROLES_FOR_PROJECT` | List roles available on a branch |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,231 @@
|
||||
---
|
||||
name: netsuite-automation
|
||||
description: "Automate Netsuite tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: NetSuite Automation
|
||||
description: "NetSuite Automation: manage customers, sales orders, invoices, inventory, and records via Oracle NetSuite ERP with SuiteQL queries"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Netsuite Automation via Rube MCP
|
||||
# NetSuite Automation
|
||||
|
||||
Automate Netsuite operations through Composio's Netsuite toolkit via Rube MCP.
|
||||
Automate Oracle NetSuite ERP operations including creating customers and sales orders, running SuiteQL queries, upserting records by external ID, and inspecting record metadata for comprehensive business management.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/netsuite](https://composio.dev/toolkits/netsuite)
|
||||
**Toolkit docs:** [composio.dev/toolkits/netsuite](https://composio.dev/toolkits/netsuite)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Netsuite connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `netsuite`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
This skill requires the **Rube MCP server** connected at `https://rube.app/mcp`.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `netsuite`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
Before executing any tools, ensure an active connection exists for the `netsuite` toolkit. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.
|
||||
|
||||
## Tool Discovery
|
||||
---
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. Create Sales Orders
|
||||
|
||||
Create customer orders with line items including item references, quantities, and pricing.
|
||||
|
||||
**Tool:** `NETSUITE_CREATE_SALES_ORDER`
|
||||
|
||||
**Key Parameters:**
|
||||
- `entity` (required) -- Customer reference: `{"id": "<internal_id>"}`
|
||||
- `item` (required) -- Container with `items` array, each containing:
|
||||
- `item` (required) -- Item reference: `{"id": "<internal_id>"}`
|
||||
- `quantity` (required) -- Units to order (non-negative)
|
||||
- `rate` -- Unit price (optional if item has default pricing)
|
||||
- `amount` -- Total line amount (alternative to rate)
|
||||
- `taxcode` -- Tax code reference: `{"id": "<internal_id>"}` (required if SuiteTax enabled)
|
||||
- `description` -- Line item notes
|
||||
- `tranDate` -- Transaction date in `YYYY-MM-DD` format
|
||||
- `memo` -- Header memo
|
||||
- `orderStatus` -- `"A"` (Pending Approval) or `"B"` (Pending Fulfillment)
|
||||
- `otherrefnum` -- External reference or PO number
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Netsuite operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: NETSUITE_CREATE_SALES_ORDER
|
||||
Arguments:
|
||||
entity: {"id": "1234"}
|
||||
item: {
|
||||
"items": [
|
||||
{"item": {"id": "56"}, "quantity": 10, "rate": 25.00},
|
||||
{"item": {"id": "78"}, "quantity": 5, "rate": 50.00}
|
||||
]
|
||||
}
|
||||
tranDate: "2026-02-11"
|
||||
memo: "Q1 bulk order"
|
||||
orderStatus: "B"
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
---
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Run SuiteQL Queries
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Execute ad-hoc SQL queries against NetSuite data with server-side paging.
|
||||
|
||||
**Tool:** `NETSUITE_RUN_SUITEQL_QUERY`
|
||||
|
||||
**Key Parameters:**
|
||||
- `q` (required) -- SuiteQL SELECT statement
|
||||
- `limit` -- Rows per page (default varies)
|
||||
- `offset` -- Zero-based index of first row (must be a multiple of `limit`)
|
||||
|
||||
**Examples:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Netsuite task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: NETSUITE_RUN_SUITEQL_QUERY
|
||||
Arguments:
|
||||
q: "SELECT id, companyname, email FROM customer WHERE isinactive = 'F' ORDER BY companyname"
|
||||
limit: 100
|
||||
offset: 0
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["netsuite"]
|
||||
session_id: "your_session_id"
|
||||
Tool: NETSUITE_RUN_SUITEQL_QUERY
|
||||
Arguments:
|
||||
q: "SELECT id, entitystatus, total FROM transaction WHERE type = 'SalesOrd' AND trandate >= '2026-01-01'"
|
||||
limit: 50
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
---
|
||||
|
||||
### 3. Create and Manage Customers
|
||||
|
||||
Create new customer records with subsidiary assignment and contact details.
|
||||
|
||||
**Tools:**
|
||||
- `NETSUITE_CREATE_CUSTOMER` -- Create a new customer
|
||||
- `NETSUITE_GET_CUSTOMER` -- Retrieve customer by internal ID
|
||||
- `NETSUITE_UPDATE_CUSTOMER` -- Update existing customer (PATCH semantics)
|
||||
|
||||
**Key Parameters for `NETSUITE_CREATE_CUSTOMER`:**
|
||||
- `body` (required) -- JSON object with customer data. Required fields:
|
||||
- `subsidiary` -- Object with `id` (subsidiary internal ID)
|
||||
- Either `companyName` (for businesses) or `firstName` + `lastName` (for individuals)
|
||||
- Optional: `email`, `phone`, `isPerson` (set to `"T"` for individuals), `comments`
|
||||
- `replace` -- Comma-separated sublist names to fully replace (e.g., `"contacts,addressbook"`)
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: NETSUITE_CREATE_CUSTOMER
|
||||
Arguments:
|
||||
body: {
|
||||
"companyName": "Acme Corp",
|
||||
"subsidiary": {"id": "1"},
|
||||
"email": "info@acme.com",
|
||||
"phone": "555-0100"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4. Upsert Records by External ID
|
||||
|
||||
Create or update records idempotently using an external identifier. Essential for sync workflows.
|
||||
|
||||
**Tool:** `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID`
|
||||
|
||||
**Key Parameters:**
|
||||
- `record_type` (required) -- Record type name, e.g., `"customer"`, `"salesorder"`, `"customrecord_myrec"`
|
||||
- `external_id` (required) -- External ID value (letters, numbers, underscore, hyphen only)
|
||||
- `body` (required) -- JSON object matching the record schema; include mandatory fields when creating
|
||||
|
||||
**Example:**
|
||||
```
|
||||
Tool: NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID
|
||||
Arguments:
|
||||
record_type: "customer"
|
||||
external_id: "CRM-CUST-42"
|
||||
body: {
|
||||
"companyName": "Acme Corp",
|
||||
"subsidiary": {"id": "1"},
|
||||
"email": "updated@acme.com"
|
||||
}
|
||||
```
|
||||
|
||||
> **Warning:** Idempotency depends on consistent external ID usage. Mismatches silently create additional records instead of updating.
|
||||
|
||||
---
|
||||
|
||||
### 5. Inspect Record Metadata
|
||||
|
||||
Discover available fields, data types, constraints, and requirements before creating or updating records.
|
||||
|
||||
**Tool:** `NETSUITE_GET_RECORD_METADATA`
|
||||
|
||||
**Key Parameters:**
|
||||
- `record_type` (required) -- e.g., `"customer"`, `"salesorder"`, `"invoice"`, `"vendor"`, `"employee"`, `"item"`
|
||||
- `accept` -- `"application/schema+json"` (default, JSON Schema) or `"application/swagger+json"` (OpenAPI 3.0)
|
||||
|
||||
**Example:**
|
||||
```
|
||||
Tool: NETSUITE_GET_RECORD_METADATA
|
||||
Arguments:
|
||||
record_type: "salesorder"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 6. List and Filter Records
|
||||
|
||||
Retrieve multiple records with optional filtering and pagination.
|
||||
|
||||
**Tool:** `NETSUITE_LIST_RECORDS`
|
||||
|
||||
**Key Parameters:**
|
||||
- `recordType` (required) -- e.g., `"customer"`, `"salesorder"`
|
||||
- `q` -- Filter expression using N/query operators, e.g., `"email START_WITH \"barbara\""`
|
||||
- `limit` -- Max records per page (1--1000, default 1000)
|
||||
- `offset` -- Zero-based index (must be divisible by limit)
|
||||
|
||||
**Supporting Tools:**
|
||||
- `NETSUITE_FILTER_RECORD_COLLECTION` -- Alternative filtering (secondary to SuiteQL)
|
||||
- `NETSUITE_GET_RECORD_SELECTED_FIELDS` -- Retrieve specific fields only (reduced payload)
|
||||
|
||||
---
|
||||
|
||||
## Recommended Execution Plan
|
||||
|
||||
1. **Inspect the record schema** using `NETSUITE_GET_RECORD_METADATA` to discover required fields
|
||||
2. **Search for existing records** using `NETSUITE_RUN_SUITEQL_QUERY` to avoid duplicates
|
||||
3. **Look up customer** by email using SuiteQL; fetch details with `NETSUITE_GET_CUSTOMER` if found
|
||||
4. **Create customer if needed** using `NETSUITE_CREATE_CUSTOMER` (ensure `subsidiary` is set)
|
||||
5. **Validate item internal IDs** using `NETSUITE_LIST_RECORDS` or SuiteQL
|
||||
6. **Create the sales order** using `NETSUITE_CREATE_SALES_ORDER` with validated references
|
||||
7. **Optionally upsert by external ID** using `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID` for sync workflows
|
||||
8. **Verify results** using `NETSUITE_GET_RECORD_SELECTED_FIELDS` to confirm pricing/totals
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| **Invalid item IDs** | `NETSUITE_CREATE_SALES_ORDER` throws USER_ERROR when item internal ID is invalid. Pre-validate via `NETSUITE_LIST_RECORDS` or `NETSUITE_RUN_SUITEQL_QUERY`. |
|
||||
| **Missing required fields** | `NETSUITE_CREATE_CUSTOMER` returns 400 when required fields (e.g., `subsidiary`) are missing. Always inspect with `NETSUITE_GET_RECORD_METADATA` first. |
|
||||
| **SuiteQL field names** | Query differences by account can cause empty results. Confirm field names via `NETSUITE_GET_RECORD_METADATA` when results look wrong. |
|
||||
| **Filter expression limits** | `NETSUITE_FILTER_RECORD_COLLECTION` may fail if filter syntax is unsupported. Treat as secondary to SuiteQL. |
|
||||
| **External ID idempotency** | `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID` depends on consistent external IDs. Mismatches silently create duplicates instead of updating. |
|
||||
| **SuiteTax line items** | Accounts with SuiteTax enabled require `taxcode` on every line item. Omitting it causes creation failures. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Netsuite-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `netsuite` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `NETSUITE_CREATE_SALES_ORDER` | Create a new sales order with line items |
|
||||
| `NETSUITE_RUN_SUITEQL_QUERY` | Execute ad-hoc SuiteQL queries with paging |
|
||||
| `NETSUITE_CREATE_CUSTOMER` | Create a new customer record |
|
||||
| `NETSUITE_GET_CUSTOMER` | Retrieve a customer by internal ID |
|
||||
| `NETSUITE_UPDATE_CUSTOMER` | Update an existing customer (PATCH) |
|
||||
| `NETSUITE_UPSERT_RECORD_BY_EXTERNAL_ID` | Create or update a record by external ID |
|
||||
| `NETSUITE_GET_RECORD_METADATA` | Inspect record schema and field definitions |
|
||||
| `NETSUITE_LIST_RECORDS` | List records with filtering and pagination |
|
||||
| `NETSUITE_FILTER_RECORD_COLLECTION` | Alternative record filtering |
|
||||
| `NETSUITE_GET_RECORD_SELECTED_FIELDS` | Retrieve specific fields from a record |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,148 @@
|
||||
---
|
||||
name: new-relic-automation
|
||||
description: "Automate New Relic tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: New Relic Automation
|
||||
description: "Automate New Relic observability workflows -- manage alert policies, notification channels, alert conditions, and monitor applications and browser apps via the Composio MCP integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# New Relic Automation via Rube MCP
|
||||
# New Relic Automation
|
||||
|
||||
Automate New Relic operations through Composio's New Relic toolkit via Rube MCP.
|
||||
Automate your New Relic observability workflows -- create and manage alert policies, configure notification channels (email, Slack, webhook, PagerDuty), monitor APM applications, inspect alert conditions, and integrate New Relic alerting into cross-app pipelines.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/new_relic](https://composio.dev/toolkits/new_relic)
|
||||
**Toolkit docs:** [composio.dev/toolkits/new_relic](https://composio.dev/toolkits/new_relic)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active New Relic connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `new_relic`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client: `https://rube.app/mcp`
|
||||
2. Connect your New Relic account when prompted (API key authentication)
|
||||
3. Start using the workflows below
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `new_relic`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List Alert Policies
|
||||
|
||||
Use `NEW_RELIC_GET_ALERT_POLICIES` to discover existing alert policies with optional filtering.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "New Relic operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: NEW_RELIC_GET_ALERT_POLICIES
|
||||
Inputs:
|
||||
- name: string (optional, partial match supported)
|
||||
- incident_preference: "PER_POLICY" | "PER_CONDITION" | "PER_CONDITION_AND_TARGET"
|
||||
- page: integer (1-indexed pagination)
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
### 2. Create an Alert Policy
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Use `NEW_RELIC_CREATE_ALERT_POLICY` to set up a new policy container for alert conditions.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific New Relic task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: NEW_RELIC_CREATE_ALERT_POLICY
|
||||
Inputs:
|
||||
- name: string (required) -- must be unique within the account
|
||||
- incident_preference: "PER_POLICY" | "PER_CONDITION" | "PER_CONDITION_AND_TARGET" (default: PER_POLICY)
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
**Incident preferences explained:**
|
||||
- `PER_POLICY` -- one issue per policy (recommended for most use cases)
|
||||
- `PER_CONDITION` -- one issue per alert condition
|
||||
- `PER_CONDITION_AND_TARGET` -- one issue per condition and signal/target
|
||||
|
||||
### 3. Create Alert Notification Channels
|
||||
|
||||
Use `NEW_RELIC_CREATE_ALERT_CHANNEL` to register notification endpoints for alert delivery.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["new_relic"]
|
||||
session_id: "your_session_id"
|
||||
Tool: NEW_RELIC_CREATE_ALERT_CHANNEL
|
||||
Inputs:
|
||||
- type: "email" | "slack" | "webhook" | "pagerduty" | "opsgenie" | "victorops" (required)
|
||||
- name: string (required) -- human-readable channel name
|
||||
- configuration: object (required) -- varies by type:
|
||||
Email: { recipients: "devops@example.com,oncall@example.com" }
|
||||
Slack: { url: "<slack_webhook_url>", channel: "alerts" }
|
||||
Webhook: { url: "https://hooks.example.com/alerts", auth_username, auth_password }
|
||||
PagerDuty: { service_key: "<integration_key>" }
|
||||
OpsGenie: { api_key, recipients, tags, teams }
|
||||
VictorOps: { key: "<api_key>", route_key: "<routing_key>" }
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Get Alert Conditions for a Policy
|
||||
|
||||
Use `NEW_RELIC_GET_ALERT_CONDITIONS` to inspect the conditions attached to a specific policy.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: NEW_RELIC_GET_ALERT_CONDITIONS
|
||||
Inputs:
|
||||
- policy_id: integer (required)
|
||||
```
|
||||
|
||||
### 5. Monitor Applications
|
||||
|
||||
Use `NEW_RELIC_GET_APPLICATIONS` and `NEW_RELIC_GET_BROWSER_APPLICATIONS` to list APM and browser-monitored apps.
|
||||
|
||||
```
|
||||
Tool: NEW_RELIC_GET_APPLICATIONS
|
||||
Inputs:
|
||||
- name: string (optional, case-insensitive partial match)
|
||||
- host: string (optional, case-insensitive partial match)
|
||||
- ids: string (optional, comma-separated list of app IDs)
|
||||
- page: integer (1-indexed)
|
||||
|
||||
Tool: NEW_RELIC_GET_BROWSER_APPLICATIONS
|
||||
Inputs:
|
||||
- filter[name]: string (optional, case-insensitive partial match)
|
||||
- page: integer (1-indexed)
|
||||
```
|
||||
|
||||
### 6. Manage Channels and Policies
|
||||
|
||||
Use `NEW_RELIC_UPDATE_ALERT_CHANNEL` to modify existing channels and `NEW_RELIC_DELETE_ALERT_POLICY` to remove policies.
|
||||
|
||||
```
|
||||
Tool: NEW_RELIC_UPDATE_ALERT_CHANNEL
|
||||
Inputs:
|
||||
- alert_channel_id: integer (required)
|
||||
- name: string (optional)
|
||||
- type: string (optional, only to change type)
|
||||
- configuration: object (optional, fields vary by type)
|
||||
|
||||
Tool: NEW_RELIC_DELETE_ALERT_POLICY
|
||||
Inputs:
|
||||
- policy_id: string (required) -- ID of the policy to delete
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| Unique policy names | `NEW_RELIC_CREATE_ALERT_POLICY` requires the name to be unique within the account. |
|
||||
| Channel config varies by type | The `configuration` object for `NEW_RELIC_CREATE_ALERT_CHANNEL` has different required fields per channel type (e.g., `recipients` for email, `service_key` for PagerDuty). |
|
||||
| Pagination required | All list endpoints return paginated results. Iterate pages until results are exhausted. |
|
||||
| Policy ID type mismatch | `NEW_RELIC_GET_ALERT_CONDITIONS` expects `policy_id` as an integer, while `NEW_RELIC_DELETE_ALERT_POLICY` expects it as a string. |
|
||||
| Channel-policy linking | After creating a channel, you must separately associate it with a policy for alerts to flow to that channel. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with New Relic-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `new_relic` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `NEW_RELIC_GET_ALERT_POLICIES` | List alert policies with optional filtering |
|
||||
| `NEW_RELIC_CREATE_ALERT_POLICY` | Create a new alert policy |
|
||||
| `NEW_RELIC_DELETE_ALERT_POLICY` | Delete an alert policy by ID |
|
||||
| `NEW_RELIC_CREATE_ALERT_CHANNEL` | Create a notification channel (email, Slack, webhook, etc.) |
|
||||
| `NEW_RELIC_GET_ALERT_CHANNELS` | List all configured alert channels |
|
||||
| `NEW_RELIC_UPDATE_ALERT_CHANNEL` | Update an existing alert channel |
|
||||
| `NEW_RELIC_GET_ALERT_CONDITIONS` | Get alert conditions for a policy |
|
||||
| `NEW_RELIC_GET_APPLICATIONS` | List APM applications |
|
||||
| `NEW_RELIC_GET_BROWSER_APPLICATIONS` | List browser-monitored applications |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,125 @@
|
||||
---
|
||||
name: omnisend-automation
|
||||
description: "Automate Omnisend tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Omnisend Automation
|
||||
description: "Automate ecommerce marketing workflows including contact management, bulk operations, and subscriber segmentation through Omnisend via Composio"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Omnisend Automation via Rube MCP
|
||||
# Omnisend Automation
|
||||
|
||||
Automate Omnisend operations through Composio's Omnisend toolkit via Rube MCP.
|
||||
Automate ecommerce marketing operations -- create and update contacts, manage subscriber lists with cursor pagination, run bulk batch operations, and segment audiences -- all orchestrated through the Composio MCP integration.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/omnisend](https://composio.dev/toolkits/omnisend)
|
||||
**Toolkit docs:** [composio.dev/toolkits/omnisend](https://composio.dev/toolkits/omnisend)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Omnisend connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `omnisend`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Connect your Omnisend account through the Composio MCP server at `https://rube.app/mcp`
|
||||
2. The agent will prompt you with an authentication link if no active connection exists
|
||||
3. Once connected, all `OMNISEND_*` tools become available for execution
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `omnisend`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Create or Update a Contact
|
||||
Upsert a contact by email identifier with subscription status, profile fields, and optional welcome message.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Omnisend operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
**Tool:** `OMNISEND_CREATE_OR_UPDATE_CONTACT`
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `identifiers` | array | Yes | At least one identifier object with `id` (email), `type` (`email`), optional `channels.email.status` (`subscribed`, `nonSubscribed`, `unsubscribed`), and `sendWelcomeMessage` (boolean) |
|
||||
| `firstName` | string | No | Contact's first name |
|
||||
| `lastName` | string | No | Contact's last name |
|
||||
| `gender` | string | No | `m` or `f` |
|
||||
| `birthdate` | string | No | Format: `YYYY-MM-DD` |
|
||||
| `country` | string | No | Full country name |
|
||||
| `countryCode` | string | No | ISO 3166-1 alpha-2 code (e.g., `US`) |
|
||||
| `city` | string | No | City name |
|
||||
| `address` | string | No | Street address |
|
||||
| `postalCode` | string | No | ZIP/postal code |
|
||||
|
||||
## Core Workflow Pattern
|
||||
---
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
### 2. List Contacts with Pagination
|
||||
Retrieve contacts in batches with optional filters for email, phone, status, segment, or tag.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Omnisend task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
**Tool:** `OMNISEND_LIST_CONTACTS`
|
||||
|
||||
### Step 2: Check Connection
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `limit` | integer | No | Results per page (default: 100, max: 250) |
|
||||
| `after` | string | No | Cursor for next page (base64-encoded ContactID) |
|
||||
| `before` | string | No | Cursor for previous page |
|
||||
| `email` | string | No | Filter by exact email address |
|
||||
| `phone` | string | No | Filter by full phone number with country code |
|
||||
| `status` | string | No | Filter by: `subscribed`, `nonSubscribed`, `unsubscribed` |
|
||||
| `segmentID` | integer | No | Filter by segment ID |
|
||||
| `tag` | string | No | Filter by tag (e.g., `VIP`) |
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["omnisend"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
---
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 3. Get Contact Details
|
||||
Retrieve the full profile for a single contact when you already have their contact ID.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Tool:** `OMNISEND_GET_CONTACT`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `contactId` | string | Yes | Unique contact identifier (e.g., `60e7412b1234567890abcdef`) |
|
||||
|
||||
---
|
||||
|
||||
### 4. Update an Existing Contact
|
||||
Patch specific fields on a contact by ID without overwriting the entire record.
|
||||
|
||||
**Tool:** `OMNISEND_UPDATE_CONTACT`
|
||||
|
||||
Requires the `contactId` and the fields to update. Retrieve the contact ID first via `OMNISEND_LIST_CONTACTS` or `OMNISEND_GET_CONTACT`.
|
||||
|
||||
---
|
||||
|
||||
### 5. Bulk Batch Operations
|
||||
Process many records asynchronously in a single call -- contacts, products, orders, events, or categories.
|
||||
|
||||
**Tool:** `OMNISEND_CREATE_BATCH`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `method` | string | Yes | `POST` or `PUT` |
|
||||
| `endpoint` | string | Yes | Target: `contacts`, `orders`, `products`, `events`, `categories` |
|
||||
| `items` | array | Yes | Array of payload objects for each operation |
|
||||
| `eventID` | string | Conditional | Required when endpoint is `events` |
|
||||
|
||||
Use batch operations to avoid rate limits when processing large data sets.
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| **Identifier required** | `OMNISEND_CREATE_OR_UPDATE_CONTACT` requires at least one identifier in the `identifiers` array -- only `email` type is supported |
|
||||
| **Cursor-based pagination** | `OMNISEND_LIST_CONTACTS` uses base64-encoded `after`/`before` cursors, not page numbers -- follow cursors to avoid incomplete data |
|
||||
| **Contact ID resolution** | `OMNISEND_UPDATE_CONTACT` requires a `contactId` -- always resolve it first via list or get operations |
|
||||
| **Batch method constraints** | `OMNISEND_CREATE_BATCH` only accepts `POST` or `PUT` methods -- no `DELETE` or `PATCH` |
|
||||
| **Event ID dependency** | When batching events, the `eventID` parameter is mandatory -- omitting it causes the batch to fail |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Omnisend-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `omnisend` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Purpose |
|
||||
|-----------|---------|
|
||||
| `OMNISEND_CREATE_OR_UPDATE_CONTACT` | Create or upsert a contact by email |
|
||||
| `OMNISEND_LIST_CONTACTS` | List contacts with filtering and cursor pagination |
|
||||
| `OMNISEND_GET_CONTACT` | Get full profile for a single contact by ID |
|
||||
| `OMNISEND_UPDATE_CONTACT` | Patch specific fields on an existing contact |
|
||||
| `OMNISEND_CREATE_BATCH` | Bulk async operations for contacts, products, orders, events |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,122 @@
|
||||
---
|
||||
name: openai-automation
|
||||
description: "Automate OpenAI tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: OpenAI Automation
|
||||
description: "Automate OpenAI API operations -- generate responses with multimodal and structured output support, create embeddings, generate images, and list models via the Composio MCP integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# OpenAI Automation via Rube MCP
|
||||
# OpenAI Automation
|
||||
|
||||
Automate OpenAI operations through Composio's OpenAI toolkit via Rube MCP.
|
||||
Automate your OpenAI API workflows -- generate text with the Responses API (including multimodal image+text inputs and structured JSON outputs), create embeddings for search and clustering, generate images with DALL-E and GPT Image models, and list available models.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/openai](https://composio.dev/toolkits/openai)
|
||||
**Toolkit docs:** [composio.dev/toolkits/openai](https://composio.dev/toolkits/openai)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active OpenAI connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `openai`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client: `https://rube.app/mcp`
|
||||
2. Connect your OpenAI account when prompted (API key authentication)
|
||||
3. Start using the workflows below
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `openai`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Generate a Response (Text, Multimodal, Structured)
|
||||
|
||||
Use `OPENAI_CREATE_RESPONSE` for one-shot model responses including text, image analysis, OCR, and structured JSON outputs.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "OpenAI operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: OPENAI_CREATE_RESPONSE
|
||||
Inputs:
|
||||
- model: string (required) -- e.g., "gpt-5", "gpt-4o", "o3-mini"
|
||||
- input: string | array (required)
|
||||
Simple: "Explain quantum computing"
|
||||
Multimodal: [
|
||||
{ role: "user", content: [
|
||||
{ type: "input_text", text: "What is in this image?" },
|
||||
{ type: "input_image", image_url: { url: "https://..." } }
|
||||
]}
|
||||
]
|
||||
- temperature: number (0-2, optional -- not supported with reasoning models)
|
||||
- max_output_tokens: integer (optional)
|
||||
- reasoning: { effort: "none" | "minimal" | "low" | "medium" | "high" }
|
||||
- text: object (structured output config)
|
||||
- format: { type: "json_schema", name: "...", schema: {...}, strict: true }
|
||||
- tools: array (function, code_interpreter, file_search, web_search)
|
||||
- tool_choice: "auto" | "none" | "required" | { type: "function", function: { name: "..." } }
|
||||
- store: boolean (false to opt out of model distillation)
|
||||
- stream: boolean
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Structured output example:** Set `text.format` to `{ type: "json_schema", name: "person", schema: { type: "object", properties: { name: { type: "string" }, age: { type: "integer" } }, required: ["name", "age"], additionalProperties: false }, strict: true }`.
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Create Embeddings
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Use `OPENAI_CREATE_EMBEDDINGS` for vector search, clustering, recommendations, and RAG pipelines.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific OpenAI task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: OPENAI_CREATE_EMBEDDINGS
|
||||
Inputs:
|
||||
- input: string | string[] | int[] | int[][] (required) -- max 8192 tokens, max 2048 items
|
||||
- model: string (required) -- "text-embedding-3-small", "text-embedding-3-large", "text-embedding-ada-002"
|
||||
- dimensions: integer (optional, only for text-embedding-3 and later)
|
||||
- encoding_format: "float" | "base64" (default "float")
|
||||
- user: string (optional, end-user ID for abuse monitoring)
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 3. Generate Images
|
||||
|
||||
Use `OPENAI_CREATE_IMAGE` to create images from text prompts using GPT Image or DALL-E models.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["openai"]
|
||||
session_id: "your_session_id"
|
||||
Tool: OPENAI_CREATE_IMAGE
|
||||
Inputs:
|
||||
- model: string (required) -- "gpt-image-1", "gpt-image-1.5", "dall-e-3", "dall-e-2"
|
||||
- prompt: string (required) -- max 32000 chars (GPT Image), 4000 (DALL-E 3), 1000 (DALL-E 2)
|
||||
- size: "1024x1024" | "1536x1024" | "1024x1536" | "auto" | "256x256" | "512x512" | "1792x1024" | "1024x1792"
|
||||
- quality: "standard" | "hd" | "auto" | "high" | "medium" | "low"
|
||||
- n: integer (1-10; DALL-E 3 supports n=1 only)
|
||||
- background: "transparent" | "opaque" | "auto" (GPT Image models only)
|
||||
- style: "vivid" | "natural" (DALL-E 3 only)
|
||||
- user: string (optional)
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. List Available Models
|
||||
|
||||
Use `OPENAI_LIST_MODELS` to discover which models are accessible with your API key.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: OPENAI_LIST_MODELS
|
||||
Inputs: (none)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| DALL-E deprecation | DALL-E 2 and DALL-E 3 are deprecated and will stop being supported on 05/12/2026. Prefer GPT Image models. |
|
||||
| DALL-E 3 single image only | `OPENAI_CREATE_IMAGE` with DALL-E 3 only supports `n=1`. Use GPT Image models or DALL-E 2 for multiple images. |
|
||||
| Token limits for embeddings | Input must not exceed 8192 tokens per item and 2048 items per batch for embedding models. |
|
||||
| Reasoning model restrictions | `temperature` and `top_p` are not supported with reasoning models (o3-mini, etc.). Use `reasoning.effort` instead. |
|
||||
| Structured output strict mode | When `strict: true` in json_schema format, ALL schema properties must be listed in the `required` array. |
|
||||
| Prompt length varies by model | Image prompt max lengths differ: 32000 (GPT Image), 4000 (DALL-E 3), 1000 (DALL-E 2). |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with OpenAI-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `openai` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `OPENAI_CREATE_RESPONSE` | Generate text/multimodal responses with structured output support |
|
||||
| `OPENAI_CREATE_EMBEDDINGS` | Create text embeddings for search, clustering, and RAG |
|
||||
| `OPENAI_CREATE_IMAGE` | Generate images from text prompts |
|
||||
| `OPENAI_LIST_MODELS` | List all models available to your API key |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,162 @@
|
||||
---
|
||||
name: pandadoc-automation
|
||||
description: "Automate Pandadoc tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: PandaDoc Automation
|
||||
description: "Automate document workflows with PandaDoc -- create documents from files, manage contacts, organize folders, set up webhooks, create templates, and track document status through the Composio PandaDoc integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Pandadoc Automation via Rube MCP
|
||||
# PandaDoc Automation
|
||||
|
||||
Automate Pandadoc operations through Composio's Pandadoc toolkit via Rube MCP.
|
||||
Manage **PandaDoc** document workflows directly from Claude Code. Create documents from uploaded files, manage recipients and contacts, organize with folders, set up event webhooks, create templates, and track document status without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/pandadoc](https://composio.dev/toolkits/pandadoc)
|
||||
**Toolkit docs:** [composio.dev/toolkits/pandadoc](https://composio.dev/toolkits/pandadoc)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Pandadoc connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `pandadoc`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your PandaDoc account when prompted. The agent will provide an OAuth link to authenticate.
|
||||
3. Ensure your PandaDoc workspace has the appropriate plan for the features you need (e.g., e-signatures, templates, webhooks).
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `pandadoc`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Create a Document from File
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Pandadoc operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Upload a PDF, DOCX, or RTF file to create a new PandaDoc document with designated recipients for signing and tracking.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `PANDADOC_CREATE_DOCUMENT_FROM_FILE`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `name` (required) -- document name
|
||||
- `recipients` (required) -- array of recipient objects, each with:
|
||||
- `email` (required) -- recipient email
|
||||
- `first_name`, `last_name` -- recipient name
|
||||
- `role` -- `signer` (default), `approver`, or `cc` (must be unique per recipient)
|
||||
- `signing_order` -- numeric order (if set for one, must be set for all)
|
||||
- `file` -- uploaded file object with `name`, `mimetype`, and `s3key`
|
||||
- `url` -- alternatively, a public HTTPS URL to the file
|
||||
- `parse_form_fields` (default false) -- parse PDF form fields
|
||||
- `tags` -- array of strings for categorization
|
||||
- `owner` -- document owner (email or membership_id)
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Example prompt: *"Create a PandaDoc document from contract.pdf with john@example.com as signer and jane@example.com as approver"*
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Pandadoc task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. Get Document Details
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["pandadoc"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Fetch comprehensive metadata for a document including recipients, fields, tokens, pricing, tags, and content-block references.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tool:** `PANDADOC_GET_DOCUMENT_DETAILS`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Key parameters:
|
||||
- `id` (required) -- the unique document identifier (e.g., `BhVzRcxH9Z2LgfPPGXFUqa`)
|
||||
|
||||
Use this to check document status, inspect recipient completion, review field values, or gather metadata for reporting.
|
||||
|
||||
Example prompt: *"Get the full details and status for PandaDoc document BhVzRcxH9Z2LgfPPGXFUqa"*
|
||||
|
||||
---
|
||||
|
||||
### 3. Manage Contacts
|
||||
|
||||
Create new contacts or update existing ones in PandaDoc. Contacts are matched by email -- if a contact with the given email exists, it gets updated; otherwise, a new one is created.
|
||||
|
||||
**Tool:** `PANDADOC_CREATE_OR_UPDATE_CONTACT`
|
||||
|
||||
Key parameters:
|
||||
- `email` (required) -- contact email address
|
||||
- `first_name`, `last_name` -- contact name
|
||||
- `company` -- company name
|
||||
- `job_title` -- role/title
|
||||
- `phone` -- phone number
|
||||
- `street_address`, `city`, `state`, `postal_code`, `country` -- address fields
|
||||
|
||||
Example prompt: *"Create a PandaDoc contact for john.doe@example.com at Acme Corp as Software Engineer"*
|
||||
|
||||
---
|
||||
|
||||
### 4. Organize with Folders
|
||||
|
||||
Create folders and move documents to organize your PandaDoc workspace.
|
||||
|
||||
**Tools:** `PANDADOC_CREATE_FOLDER`, `PANDADOC_LIST_DOCUMENT_FOLDERS`, `PANDADOC_MOVE_DOCUMENT_TO_FOLDER`
|
||||
|
||||
For creating folders:
|
||||
- `name` (required) -- folder name
|
||||
- `parent_uuid` -- parent folder UUID for nested structures
|
||||
|
||||
Example prompt: *"Create a 'Q1 2026 Contracts' folder in PandaDoc and move document BhVzRcxH9Z to it"*
|
||||
|
||||
---
|
||||
|
||||
### 5. Set Up Webhooks
|
||||
|
||||
Create webhook subscriptions to receive real-time notifications when document events occur.
|
||||
|
||||
**Tool:** `PANDADOC_CREATE_WEBHOOK`
|
||||
|
||||
Key parameters:
|
||||
- `name` (required) -- descriptive name for the webhook
|
||||
- `url` (required) -- endpoint URL for notifications
|
||||
- `triggers` (required) -- event types: `document_state_changed`, `recipient_completed`, `document_updated`, etc.
|
||||
- `active` (default true) -- enable/disable the webhook
|
||||
- `payload` -- additional data to include: `fields`, `products`, `metadata`, `tokens`, `pricing`
|
||||
|
||||
Example prompt: *"Set up a PandaDoc webhook to notify https://api.example.com/hooks when documents change state or recipients complete"*
|
||||
|
||||
---
|
||||
|
||||
### 6. Create Templates
|
||||
|
||||
Create reusable templates from PDF files or from scratch with structured content blocks.
|
||||
|
||||
**Tool:** `PANDADOC_CREATE_TEMPLATE`
|
||||
|
||||
Key parameters:
|
||||
- `name` (required) -- template name
|
||||
- `file_path` -- path to PDF file for template creation
|
||||
- `content` -- structured content object with `title` and `blocks` array for building from scratch
|
||||
- `description` -- template description
|
||||
- `tags` -- categorization tags
|
||||
|
||||
Example prompt: *"Create a PandaDoc template called 'Standard NDA' from the nda-template.pdf file"*
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Unique recipient roles:** PandaDoc API does not allow duplicate roles within a single document. Each recipient must have a unique `role` value (e.g., `signer`, `signer_2`, `approver`, `cc`).
|
||||
- **Signing order consistency:** If you specify `signing_order` for any recipient, you must specify it for ALL recipients in the document. Partial ordering will cause errors.
|
||||
- **File upload requirements:** Either `file` (with `s3key`) or `url` must be provided for document creation, not both. The URL must be publicly accessible HTTPS.
|
||||
- **Contact upsert behavior:** `PANDADOC_CREATE_OR_UPDATE_CONTACT` matches by email. If you need to update a contact's email itself, you must create a new contact and handle the old one separately.
|
||||
- **Document ID format:** Document IDs are alphanumeric strings (e.g., `BhVzRcxH9Z2LgfPPGXFUqa`). They are returned when documents are created and can be found via the PandaDoc dashboard.
|
||||
- **Webhook event naming:** Trigger event names must match exactly (e.g., `document_state_changed`, not `stateChanged` or `state_changed`). Check PandaDoc API docs for the complete list.
|
||||
- **Folder operations require UUIDs:** Moving documents requires both the document ID and the destination folder UUID. List folders first to get the correct UUID.
|
||||
- **Template content blocks:** When creating templates from scratch, the `blocks` array must contain valid content block objects per PandaDoc's schema. Check their API documentation for supported block types.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Pandadoc-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `pandadoc` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `PANDADOC_CREATE_DOCUMENT_FROM_FILE` | Create a document from PDF/DOCX/RTF with recipients |
|
||||
| `PANDADOC_GET_DOCUMENT_DETAILS` | Get full document metadata, status, and fields |
|
||||
| `PANDADOC_CREATE_OR_UPDATE_CONTACT` | Create or update a contact by email |
|
||||
| `PANDADOC_CREATE_FOLDER` | Create a folder for document organization |
|
||||
| `PANDADOC_LIST_DOCUMENT_FOLDERS` | List all document folders |
|
||||
| `PANDADOC_MOVE_DOCUMENT_TO_FOLDER` | Move a document to a specific folder |
|
||||
| `PANDADOC_CREATE_WEBHOOK` | Set up event notification webhooks |
|
||||
| `PANDADOC_CREATE_TEMPLATE` | Create a reusable document template |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,128 @@
|
||||
---
|
||||
name: phantombuster-automation
|
||||
description: "Automate Phantombuster tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: PhantomBuster Automation
|
||||
description: "Automate lead generation, web scraping, and social media data extraction workflows through PhantomBuster's cloud platform via Composio"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Phantombuster Automation via Rube MCP
|
||||
# PhantomBuster Automation
|
||||
|
||||
Automate Phantombuster operations through Composio's Phantombuster toolkit via Rube MCP.
|
||||
Automate cloud-based data extraction and lead generation -- manage agents and scripts, monitor organization resources and usage, track container execution, and solve captcha challenges -- all orchestrated through the Composio MCP integration.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/phantombuster](https://composio.dev/toolkits/phantombuster)
|
||||
**Toolkit docs:** [composio.dev/toolkits/phantombuster](https://composio.dev/toolkits/phantombuster)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Phantombuster connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `phantombuster`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Connect your PhantomBuster account through the Composio MCP server at `https://rube.app/mcp`
|
||||
2. The agent will prompt you with an authentication link if no active connection exists
|
||||
3. Once connected, all `PHANTOMBUSTER_*` tools become available for execution
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `phantombuster`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List All Agents
|
||||
Fetch every agent associated with your account or organization to inventory automation workflows.
|
||||
|
||||
**Tool:** `PHANTOMBUSTER_GET_AGENTS_FETCH_ALL`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Phantombuster operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
No parameters required -- returns all agents with IDs and metadata.
|
||||
Authenticate your API key first.
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Use agent IDs from this response when fetching containers or monitoring specific automations.
|
||||
|
||||
## Core Workflow Pattern
|
||||
---
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
### 2. List All Scripts
|
||||
Retrieve all scripts available under your account (without code bodies) for script management.
|
||||
|
||||
**Tool:** `PHANTOMBUSTER_GET_SCRIPTS_FETCH_ALL`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Phantombuster task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
No parameters required -- returns script metadata without source code.
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
### 3. Monitor Organization Resources & Quotas
|
||||
Check your organization's current resource usage and quota limits to plan automation capacity.
|
||||
|
||||
**Tool:** `PHANTOMBUSTER_GET_ORGS_FETCH_RESOURCES`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["phantombuster"]
|
||||
session_id: "your_session_id"
|
||||
No parameters required -- returns resource allocation and current usage metrics.
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
---
|
||||
|
||||
### 4. Retrieve Agent Containers
|
||||
Fetch all execution containers for a specific agent to monitor run history and status.
|
||||
|
||||
**Tool:** `PHANTOMBUSTER_GET_CONTAINERS_FETCH_ALL`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `agentId` | string | Yes | Agent ID from `PHANTOMBUSTER_GET_AGENTS_FETCH_ALL` |
|
||||
|
||||
---
|
||||
|
||||
### 5. Export Agent Usage Report
|
||||
Download a CSV report of all agents' run statistics for your organization.
|
||||
|
||||
**Tool:** `PHANTOMBUSTER_GET_ORGS_EXPORT_AGENT_USAGE`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Returns a downloadable CSV with comprehensive agent execution statistics.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 6. Solve hCaptcha Challenges
|
||||
Obtain a valid hCaptcha token for automated form submissions or scraping flows that require captcha solving.
|
||||
|
||||
**Tool:** `PHANTOMBUSTER_POST_HCAPTCHA`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `siteKey` | string | Yes | Public site key of the hCaptcha widget |
|
||||
| `pageUrl` | string | Yes | Full URL of the page with the captcha |
|
||||
| `proxy` | string | No | Proxy URL (e.g., `http://user:pass@host:port`) |
|
||||
| `userAgent` | string | No | Custom User-Agent string to simulate |
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| **Agent ID required for containers** | `PHANTOMBUSTER_GET_CONTAINERS_FETCH_ALL` requires a valid `agentId` -- always resolve it first via `PHANTOMBUSTER_GET_AGENTS_FETCH_ALL` |
|
||||
| **API key authentication** | All PhantomBuster tools require a valid API key connection -- verify authentication before calling any tools |
|
||||
| **Script bodies not included** | `PHANTOMBUSTER_GET_SCRIPTS_FETCH_ALL` returns metadata only, not source code |
|
||||
| **Organization scope** | Resource and usage tools operate at the organization level tied to your API key -- ensure the correct org is targeted |
|
||||
| **Branch operations** | `PHANTOMBUSTER_GET_BRANCHES_FETCH_ALL` and `PHANTOMBUSTER_GET_BRANCHES_DIFF` are for advanced script versioning -- use them to assess staging vs. release changes before deployment |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Phantombuster-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `phantombuster` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Purpose |
|
||||
|-----------|---------|
|
||||
| `PHANTOMBUSTER_GET_AGENTS_FETCH_ALL` | List all agents in your account |
|
||||
| `PHANTOMBUSTER_GET_SCRIPTS_FETCH_ALL` | List all scripts (metadata only) |
|
||||
| `PHANTOMBUSTER_GET_ORGS_FETCH_RESOURCES` | Check organization resource usage and quotas |
|
||||
| `PHANTOMBUSTER_GET_CONTAINERS_FETCH_ALL` | Get all containers for a specific agent |
|
||||
| `PHANTOMBUSTER_GET_ORGS_EXPORT_AGENT_USAGE` | Export agent usage as CSV |
|
||||
| `PHANTOMBUSTER_POST_HCAPTCHA` | Solve hCaptcha challenges for automation |
|
||||
| `PHANTOMBUSTER_GET_ORGS_FETCH` | Fetch organization details |
|
||||
| `PHANTOMBUSTER_GET_ORGS_FETCH_AGENT_GROUPS` | Get agent groups and ordering |
|
||||
| `PHANTOMBUSTER_GET_BRANCHES_FETCH_ALL` | List all script branches |
|
||||
| `PHANTOMBUSTER_GET_BRANCHES_DIFF` | Compare staging vs. release branches |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,150 @@
|
||||
---
|
||||
name: prismic-automation
|
||||
description: "Automate Prismic tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Prismic Automation
|
||||
description: "Automate headless CMS operations in Prismic -- query documents, search content, retrieve custom types, and manage repository refs through the Composio Prismic integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Prismic Automation via Rube MCP
|
||||
# Prismic Automation
|
||||
|
||||
Automate Prismic operations through Composio's Prismic toolkit via Rube MCP.
|
||||
Manage your **Prismic** headless CMS directly from Claude Code. Query documents by type, full-text search content, inspect custom types, and work with repository refs for content versioning.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/prismic](https://composio.dev/toolkits/prismic)
|
||||
**Toolkit docs:** [composio.dev/toolkits/prismic](https://composio.dev/toolkits/prismic)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Prismic connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `prismic`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your Prismic account when prompted. The agent will provide an authentication link.
|
||||
3. Most content queries require a `ref` token. Always start by calling `PRISMIC_REPOSITORY_API_GET_REFS` or `PRISMIC_REPOSITORY_API_GET_INFO` to obtain the master ref.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `prismic`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Get Repository Info and Refs
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Prismic operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Retrieve comprehensive repository metadata including available refs (content versions), custom types, languages, tags, and bookmarks. This is typically your first API call.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tools:** `PRISMIC_REPOSITORY_API_GET_INFO`, `PRISMIC_REPOSITORY_API_GET_REFS`
|
||||
|
||||
## Core Workflow Pattern
|
||||
No parameters required -- these endpoints return the full repository configuration. The `refs` field is critical since refs are required for all content queries.
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Example prompt: *"Get my Prismic repository info and the current master ref"*
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Prismic task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. Query Documents with Predicates
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["prismic"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Fetch documents using Prismic's predicate query syntax with full pagination and filtering support.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tool:** `PRISMIC_CONTENT_API_QUERY_DOCUMENTS`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Key parameters:
|
||||
- `ref` (required) -- content release reference ID (typically the master ref)
|
||||
- `q` -- predicate query, e.g., `[[at(document.type, "page")]]`
|
||||
- `page` (min 1) and `pageSize` (1-100) -- pagination
|
||||
- `lang` -- language code, e.g., `en-us` (default `*` for all)
|
||||
- `orderings` -- sort order, e.g., `[my.article.date desc]`
|
||||
- `fetch` -- comma-separated fields to fetch, reducing response size
|
||||
- `fetchLinks` -- resolve linked document fields inline
|
||||
|
||||
Example prompt: *"Query all published blog posts in Prismic, sorted by date descending, in English"*
|
||||
|
||||
---
|
||||
|
||||
### 3. Fetch Documents by Type
|
||||
|
||||
Retrieve all documents of a specific custom type with automatic master ref resolution.
|
||||
|
||||
**Tool:** `PRISMIC_GET_DOCUMENTS_BY_TYPE`
|
||||
|
||||
Key parameters:
|
||||
- `type` (required) -- custom type API ID, e.g., `blog_post`, `article`, `page`
|
||||
- `page` (default 1) and `pageSize` (1-100, default 20)
|
||||
- `lang` -- language code filter
|
||||
- `orderings` -- sort order, e.g., `[my.article.date desc]`
|
||||
- `after` -- cursor-based pagination for deep pagination beyond page 50
|
||||
|
||||
Example prompt: *"Get all blog_post documents in Prismic, 20 per page"*
|
||||
|
||||
---
|
||||
|
||||
### 4. Full-Text Search
|
||||
|
||||
Search across all text fields in documents for specified terms. Case-insensitive, matches on root words.
|
||||
|
||||
**Tool:** `PRISMIC_CONTENT_API_GET_DOCUMENTS_WITH_FULLTEXT_SEARCH`
|
||||
|
||||
Key parameters:
|
||||
- `q` (required) -- full-text predicate, e.g., `[[fulltext(document, "machine learning")]]`
|
||||
- `page`, `pageSize`, `lang`, `orderings` -- same pagination/filtering as other queries
|
||||
|
||||
Example prompt: *"Search all Prismic documents for 'machine learning'"*
|
||||
|
||||
---
|
||||
|
||||
### 5. Get a Single Document by ID
|
||||
|
||||
Retrieve a specific document by its unique identifier.
|
||||
|
||||
**Tool:** `PRISMIC_GET_DOCUMENT_BY_ID`
|
||||
|
||||
Key parameters:
|
||||
- `document_id` (required) -- unique document identifier
|
||||
- `ref` (required) -- content ref from repository
|
||||
- `lang` -- optional language filter
|
||||
|
||||
Example prompt: *"Fetch Prismic document Xx2KLhEAAJljVWaA"*
|
||||
|
||||
---
|
||||
|
||||
### 6. List Custom Types
|
||||
|
||||
Discover all custom types (content models) defined in the repository, including their structure definitions.
|
||||
|
||||
**Tool:** `PRISMIC_TYPES_API_GET_TYPES`
|
||||
|
||||
Key parameters:
|
||||
- `limit` -- max number of types to return per page
|
||||
- `page` -- page number (1-indexed)
|
||||
- `sort` -- sort order, e.g., `name`
|
||||
|
||||
Example prompt: *"List all custom types in my Prismic repository"*
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Ref is required for all content queries:** You must obtain a valid `ref` (typically the master ref) from `PRISMIC_REPOSITORY_API_GET_REFS` or `PRISMIC_REPOSITORY_API_GET_INFO` before querying any documents. Queries without a ref will fail.
|
||||
- **Predicate syntax requires double brackets:** Prismic queries use double square brackets: `[[at(document.type, "page")]]`. For multiple predicates, combine them: `[[at(document.type, "blog")][at(document.tags, ["featured"])]]`.
|
||||
- **Deep pagination limit:** Standard page-based pagination may fail beyond page 50. For deep pagination, use the `after` parameter with the last document ID from your previous result set.
|
||||
- **pageSize cap is 100:** Requesting more than 100 documents per page will be rejected. Use pagination to iterate through larger result sets.
|
||||
- **Language filtering:** The default language filter is `*` (all languages). If you need documents in a specific locale, always pass `lang` explicitly (e.g., `en-us`, `fr-fr`).
|
||||
- **Integration fields require separate ref:** When using `PRISMIC_CONTENT_API_GET_DOCUMENTS_WITH_INTEGRATION_FIELDS`, you need an `integrationFieldsRef` in addition to the standard content `ref`.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Prismic-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `prismic` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `PRISMIC_REPOSITORY_API_GET_INFO` | Get repository metadata, refs, types, languages |
|
||||
| `PRISMIC_REPOSITORY_API_GET_REFS` | List all refs (master + releases) |
|
||||
| `PRISMIC_TYPES_API_GET_TYPES` | List all custom types / content models |
|
||||
| `PRISMIC_CONTENT_API_QUERY_DOCUMENTS` | Query documents with predicates and pagination |
|
||||
| `PRISMIC_GET_DOCUMENTS_BY_TYPE` | Fetch documents filtered by custom type |
|
||||
| `PRISMIC_GET_DOCUMENT_BY_ID` | Retrieve a single document by ID |
|
||||
| `PRISMIC_CONTENT_API_GET_DOCUMENTS_WITH_FULLTEXT_SEARCH` | Full-text search across all documents |
|
||||
| `PRISMIC_CONTENT_API_GET_DOCUMENTS_WITH_PREDICATES` | Filter documents with multiple predicate conditions |
|
||||
| `PRISMIC_CONTENT_API_GET_DOCUMENTS_WITH_INTEGRATION_FIELDS` | Fetch documents with integration fields data |
|
||||
| `PRISMIC_GET_DOCUMENTS_ORDERED` | Fetch documents sorted by specified fields |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,157 @@
|
||||
---
|
||||
name: productboard-automation
|
||||
description: "Automate Productboard tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Productboard Automation
|
||||
description: "Automate product management workflows in Productboard -- manage features, notes, objectives, components, and releases through natural language commands."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Productboard Automation via Rube MCP
|
||||
# Productboard Automation
|
||||
|
||||
Automate Productboard operations through Composio's Productboard toolkit via Rube MCP.
|
||||
Automate your Productboard product management operations directly from Claude Code. Create notes from customer feedback, browse features and objectives, link entities, and track releases -- all without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/productboard](https://composio.dev/toolkits/productboard)
|
||||
**Toolkit docs:** [composio.dev/toolkits/productboard](https://composio.dev/toolkits/productboard)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Productboard connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `productboard`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your Claude Code config with URL: `https://rube.app/mcp`
|
||||
2. When prompted, authenticate your Productboard account through the connection link provided
|
||||
3. Start automating your product management workflows with natural language
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `productboard`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Manage Customer Notes
|
||||
|
||||
Create notes from customer feedback and organize them with tags, links, and followers.
|
||||
|
||||
**Tools:** `PRODUCTBOARD_CREATE_NOTE`, `PRODUCTBOARD_LIST_NOTES`, `PRODUCTBOARD_ADD_NOTE_TAG`, `PRODUCTBOARD_ADD_NOTE_FOLLOWERS`, `PRODUCTBOARD_CREATE_NOTE_LINK`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Productboard operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Create a note titled "Mobile app crash report" with content from customer feedback, tagged "bug" and linked to feature abc-123
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Key parameters for `PRODUCTBOARD_CREATE_NOTE`:
|
||||
- `title` (required) and `content` (required) -- note title and body
|
||||
- `customer_email` or `user.email` -- attribute to a customer/user
|
||||
- `tags` -- array of tag strings for categorization
|
||||
- `display_url` -- URL linked from the note title
|
||||
- `source` -- origin system with `origin` and `record_id`
|
||||
- `company` -- associate with a company
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters for `PRODUCTBOARD_LIST_NOTES`:
|
||||
- `createdFrom` / `createdTo` -- ISO 8601 date range
|
||||
- `last` -- relative time window (e.g., `"6m"`, `"10d"`, `"24h"`)
|
||||
- `term` -- full-text search by title or content
|
||||
- `allTags` / `anyTag` -- filter by tags (cannot combine both)
|
||||
- `featureId`, `companyId`, `ownerEmail`, `source` -- entity filters
|
||||
- `pageLimit` (max 100) / `pageCursor` -- pagination
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
### 2. Browse and Retrieve Features
|
||||
|
||||
List all features/subfeatures and retrieve detailed information.
|
||||
|
||||
**Tools:** `PRODUCTBOARD_LIST_FEATURES`, `PRODUCTBOARD_RETRIEVE_FEATURE`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Productboard task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
List the first 50 features in Productboard, then get details on feature abc-def-123
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
- `PRODUCTBOARD_LIST_FEATURES` supports `pageLimit` (default 100) and `pageOffset` for pagination
|
||||
- `PRODUCTBOARD_RETRIEVE_FEATURE` requires feature `id` (UUID) to get complete details
|
||||
|
||||
### 3. Objectives and Key Results (OKRs)
|
||||
|
||||
List objectives, view feature-objective links, and browse key results.
|
||||
|
||||
**Tools:** `PRODUCTBOARD_LIST_OBJECTIVES`, `PRODUCTBOARD_LIST_FEATURE_OBJECTIVES`, `PRODUCTBOARD_LIST_KEY_RESULTS`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["productboard"]
|
||||
session_id: "your_session_id"
|
||||
Show me all in-progress objectives owned by alice@example.com
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
Key parameters for `PRODUCTBOARD_LIST_OBJECTIVES`:
|
||||
- `status.name` -- filter by status (e.g., `"In Progress"`)
|
||||
- `owner.email` -- filter by owner email
|
||||
- `parent.id` -- filter by parent objective
|
||||
- `archived` -- filter by archived state
|
||||
|
||||
`PRODUCTBOARD_LIST_FEATURE_OBJECTIVES`:
|
||||
- Requires `id` (UUID) of a **top-level feature** (not subfeatures)
|
||||
- Supports `pageCursor` for pagination
|
||||
|
||||
### 4. Component Management
|
||||
|
||||
List product components for organizing features and the product hierarchy.
|
||||
|
||||
**Tool:** `PRODUCTBOARD_LIST_COMPONENTS`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
List all components in our Productboard workspace
|
||||
```
|
||||
|
||||
- Supports `page_limit` and `page_offset` for pagination
|
||||
- Follow `links.next` for additional pages
|
||||
|
||||
### 5. Release Tracking
|
||||
|
||||
View feature-release assignments with state and date filters.
|
||||
|
||||
**Tool:** `PRODUCTBOARD_LIST_FEATURE_RELEASE_ASSIGNMENTS`
|
||||
|
||||
```
|
||||
Show all active release assignments for feature abc-123
|
||||
```
|
||||
|
||||
- Filter by `feature.id`, `release.id`, `release.state` (planned, active, closed)
|
||||
- Date range filters: `release.timeframe.endDate.from` and `release.timeframe.endDate.to` (YYYY-MM-DD)
|
||||
|
||||
### 6. Link Notes to Features
|
||||
|
||||
Connect customer feedback notes to product features for insight aggregation.
|
||||
|
||||
**Tool:** `PRODUCTBOARD_CREATE_NOTE_LINK`
|
||||
|
||||
```
|
||||
Link note 3fa85f64-5717 to feature 1b6c8c76-8f5d for tracking
|
||||
```
|
||||
|
||||
- Requires `noteId` (UUID) and `entityId` (UUID of feature, component, or product)
|
||||
- Use after creating notes to ensure feedback is connected to the right product areas
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Top-level features only for objectives:** `PRODUCTBOARD_LIST_FEATURE_OBJECTIVES` only works with top-level feature IDs, not subfeature IDs. Use `PRODUCTBOARD_LIST_FEATURES` to identify which features are top-level.
|
||||
- **Tag filter exclusivity:** `allTags` and `anyTag` cannot be combined in `PRODUCTBOARD_LIST_NOTES`. Choose one filter strategy per query.
|
||||
- **Relative vs. absolute dates:** The `last` parameter (e.g., `"24h"`) cannot be combined with `createdFrom`/`createdTo` in `PRODUCTBOARD_LIST_NOTES`. Use one approach, not both.
|
||||
- **Cursor-based pagination:** Follow `links.next` or use `pageCursor` from responses for multi-page results. Offset-based and cursor-based pagination are used on different endpoints -- check each tool.
|
||||
- **Note attribution:** Either `user.email` or `customer_email` must be provided in `PRODUCTBOARD_CREATE_NOTE` to attribute feedback. Without it, the note will have no customer association.
|
||||
- **UUID formats required:** All entity IDs (features, notes, components) must be valid UUIDs. Passing malformed IDs causes 400 errors.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Productboard-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `productboard` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `PRODUCTBOARD_CREATE_NOTE` | Create a customer feedback note (requires `title`, `content`) |
|
||||
| `PRODUCTBOARD_LIST_NOTES` | List notes with search, date, and tag filters |
|
||||
| `PRODUCTBOARD_ADD_NOTE_TAG` | Add a tag to a note |
|
||||
| `PRODUCTBOARD_ADD_NOTE_FOLLOWERS` | Add followers to a note by email |
|
||||
| `PRODUCTBOARD_CREATE_NOTE_LINK` | Link a note to a feature/component (requires `noteId`, `entityId`) |
|
||||
| `PRODUCTBOARD_LIST_FEATURES` | List all features with pagination |
|
||||
| `PRODUCTBOARD_RETRIEVE_FEATURE` | Get detailed feature info by UUID |
|
||||
| `PRODUCTBOARD_LIST_OBJECTIVES` | List objectives with status/owner filters |
|
||||
| `PRODUCTBOARD_LIST_FEATURE_OBJECTIVES` | List objectives linked to a top-level feature |
|
||||
| `PRODUCTBOARD_LIST_KEY_RESULTS` | List key results for objectives |
|
||||
| `PRODUCTBOARD_LIST_COMPONENTS` | List product components with pagination |
|
||||
| `PRODUCTBOARD_LIST_FEATURE_RELEASE_ASSIGNMENTS` | List feature-release assignments with filters |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,160 @@
|
||||
---
|
||||
name: quickbooks-automation
|
||||
description: "Automate Quickbooks tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: QuickBooks Automation
|
||||
description: "QuickBooks Automation: manage invoices, customers, accounts, and payments in QuickBooks Online for streamlined bookkeeping"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Quickbooks Automation via Rube MCP
|
||||
# QuickBooks Automation
|
||||
|
||||
Automate Quickbooks operations through Composio's Quickbooks toolkit via Rube MCP.
|
||||
Automate QuickBooks Online operations including creating invoices, managing customers, querying accounts, and listing invoices for financial reporting.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/quickbooks](https://composio.dev/toolkits/quickbooks)
|
||||
**Toolkit docs:** [composio.dev/toolkits/quickbooks](https://composio.dev/toolkits/quickbooks)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Quickbooks connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `quickbooks`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
This skill requires the **Rube MCP server** connected at `https://rube.app/mcp`.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `quickbooks`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
Before executing any tools, ensure an active connection exists for the `quickbooks` toolkit. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.
|
||||
|
||||
## Tool Discovery
|
||||
---
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. Create an Invoice
|
||||
|
||||
Create a new invoice for a customer with line items.
|
||||
|
||||
**Tool:** `QUICKBOOKS_CREATE_INVOICE`
|
||||
|
||||
**Key Parameters:**
|
||||
- `customer_id` (required) -- ID of the customer (CustomerRef.value)
|
||||
- `lines` (required) -- Array of line item objects. Each must include:
|
||||
- `DetailType` -- e.g., `"SalesItemLineDetail"`
|
||||
- `Amount` -- Line item total
|
||||
- `SalesItemLineDetail` -- Object with `ItemRef` containing `value` (item ID)
|
||||
- `minorversion` -- Optional API version parameter
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Quickbooks operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: QUICKBOOKS_CREATE_INVOICE
|
||||
Arguments:
|
||||
customer_id: "21"
|
||||
lines: [
|
||||
{
|
||||
"DetailType": "SalesItemLineDetail",
|
||||
"Amount": 150.00,
|
||||
"SalesItemLineDetail": {
|
||||
"ItemRef": {"value": "1", "name": "Services"}
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Prerequisites:** Resolve the customer ID using `QUICKBOOKS_READ_CUSTOMER` or create one with `QUICKBOOKS_CREATE_CUSTOMER`. Resolve item/account IDs using `QUICKBOOKS_QUERY_ACCOUNT`.
|
||||
|
||||
## Core Workflow Pattern
|
||||
---
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
### 2. Manage Customers
|
||||
|
||||
Create and read customer records.
|
||||
|
||||
**Tools:**
|
||||
- `QUICKBOOKS_CREATE_CUSTOMER` -- Create a new customer
|
||||
- `QUICKBOOKS_READ_CUSTOMER` -- Read a customer by ID
|
||||
|
||||
**Key Parameters for `QUICKBOOKS_CREATE_CUSTOMER`:**
|
||||
- `display_name` -- Display name (must be unique across customers, vendors, employees; max 500 chars)
|
||||
- `given_name` -- First name (max 100 chars)
|
||||
- `family_name` -- Last name (max 100 chars)
|
||||
- `middle_name` -- Middle name (max 100 chars)
|
||||
- `title` -- Title, e.g., `"Mr."`, `"Dr."` (max 16 chars)
|
||||
- `suffix` -- Name suffix, e.g., `"Jr."` (max 16 chars)
|
||||
|
||||
> At least one of `display_name`, `title`, `given_name`, `middle_name`, `family_name`, or `suffix` is required.
|
||||
|
||||
**Key Parameters for `QUICKBOOKS_READ_CUSTOMER`:**
|
||||
- `customer_id` (required) -- ID of the customer to read
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Quickbooks task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: QUICKBOOKS_CREATE_CUSTOMER
|
||||
Arguments:
|
||||
display_name: "Acme Corporation"
|
||||
given_name: "John"
|
||||
family_name: "Doe"
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
### 3. Query and Read Accounts
|
||||
|
||||
Retrieve account information for use in invoice line items and financial reporting.
|
||||
|
||||
**Tools:**
|
||||
- `QUICKBOOKS_QUERY_ACCOUNT` -- Execute a query against accounts
|
||||
- `QUICKBOOKS_READ_ACCOUNT` -- Read a specific account by ID
|
||||
|
||||
**Key Parameters for `QUICKBOOKS_QUERY_ACCOUNT`:**
|
||||
- `query` (required) -- SQL-like query string, e.g., `"SELECT * FROM Account WHERE AccountType = 'Income'"`
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["quickbooks"]
|
||||
session_id: "your_session_id"
|
||||
Tool: QUICKBOOKS_QUERY_ACCOUNT
|
||||
Arguments:
|
||||
query: "SELECT * FROM Account WHERE AccountType = 'Income' MAXRESULTS 10"
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
### 4. List and Filter Invoices
|
||||
|
||||
Retrieve invoices with optional pagination and filtering.
|
||||
|
||||
**Tool:** `QUICKBOOKS_LIST_INVOICES`
|
||||
|
||||
**Steps:**
|
||||
1. Call `QUICKBOOKS_LIST_INVOICES` with pagination parameters
|
||||
2. Use `start_position` and `max_results` to page through results
|
||||
3. Filter by specific criteria as needed
|
||||
|
||||
---
|
||||
|
||||
## Recommended Execution Plan
|
||||
|
||||
1. **Resolve the customer** using `QUICKBOOKS_READ_CUSTOMER` (if you have a customer ID) or create one with `QUICKBOOKS_CREATE_CUSTOMER`
|
||||
2. **Resolve item/revenue accounts** using `QUICKBOOKS_QUERY_ACCOUNT` and `QUICKBOOKS_READ_ACCOUNT` to get account or item IDs for invoice line items
|
||||
3. **Create the invoice** using `QUICKBOOKS_CREATE_INVOICE` with the resolved `customer_id` and well-formed line items
|
||||
4. **Verify creation** using `QUICKBOOKS_LIST_INVOICES` to locate the new invoice by ID or DocNumber
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| **Invalid references** | `QUICKBOOKS_CREATE_INVOICE` fails if `customer_id` or `ItemRef.value` point to non-existent or inactive records. Always resolve IDs first. |
|
||||
| **Line item validation** | Incorrect `DetailType` or missing `SalesItemLineDetail` fields cause schema/validation errors during invoice creation. |
|
||||
| **Pagination** | `QUICKBOOKS_LIST_INVOICES` uses `start_position` and `max_results`. Incomplete pagination settings can miss invoices in larger books. |
|
||||
| **Sync tokens** | Any later edits require the latest `SyncToken` from a fresh invoice read. Stale sync tokens cause update rejections. |
|
||||
| **Rate limits** | QuickBooks enforces per-minute and daily API caps. High-volume runs should include backoff to avoid throttling errors. |
|
||||
| **DisplayName uniqueness** | Customer `display_name` must be unique across all Customer, Vendor, and Employee objects. Duplicates cause creation failures. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Quickbooks-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `quickbooks` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `QUICKBOOKS_CREATE_INVOICE` | Create a new invoice with line items |
|
||||
| `QUICKBOOKS_READ_CUSTOMER` | Read a customer record by ID |
|
||||
| `QUICKBOOKS_CREATE_CUSTOMER` | Create a new customer record |
|
||||
| `QUICKBOOKS_QUERY_ACCOUNT` | Query accounts with SQL-like syntax |
|
||||
| `QUICKBOOKS_READ_ACCOUNT` | Read a specific account by ID |
|
||||
| `QUICKBOOKS_LIST_INVOICES` | List invoices with pagination |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,203 @@
|
||||
---
|
||||
name: ramp-automation
|
||||
description: "Automate Ramp tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Ramp Automation
|
||||
description: "Ramp Automation: manage corporate card transactions, reimbursements, users, and expense tracking via the Ramp platform"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Ramp Automation via Rube MCP
|
||||
# Ramp Automation
|
||||
|
||||
Automate Ramp operations through Composio's Ramp toolkit via Rube MCP.
|
||||
Automate Ramp corporate finance operations including retrieving transactions, managing reimbursements, searching expenses, viewing card details, and listing users for expense management and accounting workflows.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/ramp](https://composio.dev/toolkits/ramp)
|
||||
**Toolkit docs:** [composio.dev/toolkits/ramp](https://composio.dev/toolkits/ramp)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Ramp connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `ramp`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
This skill requires the **Rube MCP server** connected at `https://rube.app/mcp`.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `ramp`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
Before executing any tools, ensure an active connection exists for the `ramp` toolkit. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.
|
||||
|
||||
## Tool Discovery
|
||||
---
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
## Core Workflows
|
||||
|
||||
### 1. List All Transactions
|
||||
|
||||
Retrieve all corporate card transactions with comprehensive filtering options.
|
||||
|
||||
**Tool:** `RAMP_GET_ALL_TRANSACTIONS`
|
||||
|
||||
**Key Parameters:**
|
||||
- `from_date` -- Transactions after this date (ISO 8601 datetime)
|
||||
- `to_date` -- Transactions before this date (ISO 8601 datetime, default: today)
|
||||
- `user_id` -- Filter by user UUID
|
||||
- `card_id` -- Filter by physical card UUID
|
||||
- `department_id` -- Filter by department UUID
|
||||
- `merchant_id` -- Filter by merchant UUID
|
||||
- `entity_id` -- Filter by business entity UUID
|
||||
- `min_amount` / `max_amount` -- Amount range filter (USD)
|
||||
- `state` -- Transaction state; set to `"ALL"` to include declined transactions
|
||||
- `approval_status` -- Filter by approval status
|
||||
- `sync_status` -- Filter by ERP sync status (supersedes `sync_ready` and `has_no_sync_commits`)
|
||||
- `has_no_sync_commits` -- `true` for unsynced transactions
|
||||
- `sync_ready` -- `true` for transactions ready to sync to ERP
|
||||
- `requires_memo` -- `true` for transactions missing required memos
|
||||
- `include_merchant_data` -- `true` to include full purchase data from merchant
|
||||
- `page_size` -- Results per page (2--100, default: 20)
|
||||
- `start` -- Pagination cursor: ID of last entity from previous page
|
||||
- `order_by_date_desc` / `order_by_date_asc` -- Sort by date
|
||||
- `order_by_amount_desc` / `order_by_amount_asc` -- Sort by amount
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Ramp operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: RAMP_GET_ALL_TRANSACTIONS
|
||||
Arguments:
|
||||
from_date: "2026-02-01T00:00:00Z"
|
||||
to_date: "2026-02-11T23:59:59Z"
|
||||
page_size: 50
|
||||
order_by_date_desc: true
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
---
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Search Transactions
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Search transactions by merchant name, memo, or other transaction details.
|
||||
|
||||
**Tool:** `RAMP_SEARCH_TRANSACTIONS`
|
||||
|
||||
**Key Parameters:**
|
||||
- `query` (required) -- Search text for merchant name, memo, or other details
|
||||
- All filter parameters from `RAMP_GET_ALL_TRANSACTIONS` are also available
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Ramp task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: RAMP_SEARCH_TRANSACTIONS
|
||||
Arguments:
|
||||
query: "AWS"
|
||||
from_date: "2026-01-01T00:00:00Z"
|
||||
page_size: 25
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
### 3. Get Transaction Details
|
||||
|
||||
Retrieve complete details of a specific transaction including merchant details, receipts, accounting codes, and dispute information.
|
||||
|
||||
**Tool:** `RAMP_GET_TRANSACTION`
|
||||
|
||||
**Key Parameters:**
|
||||
- `transaction_id` (required) -- ID of the transaction
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["ramp"]
|
||||
session_id: "your_session_id"
|
||||
Tool: RAMP_GET_TRANSACTION
|
||||
Arguments:
|
||||
transaction_id: "txn_abc123def456"
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
---
|
||||
|
||||
### 4. Manage Reimbursements
|
||||
|
||||
List and retrieve reimbursement records for approval workflows and expense analysis.
|
||||
|
||||
**Tools:**
|
||||
- `RAMP_LIST_REIMBURSEMENTS` -- List reimbursements with filtering
|
||||
- `RAMP_GET_REIMBURSEMENT` -- Get complete details of a specific reimbursement
|
||||
|
||||
**Key Parameters for `RAMP_LIST_REIMBURSEMENTS`:**
|
||||
- `user_id` -- Filter by employee UUID
|
||||
- `entity_id` -- Filter by business entity UUID
|
||||
- `from_date` / `to_date` -- Date range for creation date
|
||||
- `from_submitted_at` / `to_submitted_at` -- Date range for submission date
|
||||
- `from_transaction_date` / `to_transaction_date` -- Underlying transaction date range
|
||||
- `awaiting_approval_by_user_id` -- Filter for reimbursements pending a specific approver
|
||||
- `sync_status` -- Filter by ERP sync status
|
||||
- `has_no_sync_commits` -- `true` for unsynced reimbursements
|
||||
- `sync_ready` -- `true` for reimbursements ready to sync
|
||||
- `direction` -- `"BUSINESS_TO_USER"` (default) or `"USER_TO_BUSINESS"` (repayments)
|
||||
- `page_size` -- Results per page (2--100, default: 20)
|
||||
- `start` -- Pagination cursor
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: RAMP_LIST_REIMBURSEMENTS
|
||||
Arguments:
|
||||
from_date: "2026-02-01T00:00:00Z"
|
||||
sync_ready: true
|
||||
page_size: 50
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5. List Users and Get My Transactions
|
||||
|
||||
View organization users and personal transaction history.
|
||||
|
||||
**Tools:**
|
||||
- `RAMP_LIST_USERS` -- List users with filtering by department, role, location, entity
|
||||
- `RAMP_GET_MY_TRANSACTIONS` -- Get transactions for the authenticated user
|
||||
|
||||
**Key Parameters for `RAMP_LIST_USERS`:**
|
||||
- `department_id` -- Filter by department UUID
|
||||
- `role` -- Filter by user role
|
||||
- `email` -- Filter by email address
|
||||
- `employee_id` -- Filter by employee ID
|
||||
- `entity_id` -- Filter by business entity UUID
|
||||
- `location_id` -- Filter by location UUID
|
||||
- `page_size` -- Results per page (2--100, default: 20)
|
||||
|
||||
**Example:**
|
||||
```
|
||||
Tool: RAMP_LIST_USERS
|
||||
Arguments:
|
||||
role: "ADMIN"
|
||||
page_size: 50
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 6. View Card Details and Accounting Fields
|
||||
|
||||
Retrieve card information and custom accounting field configurations.
|
||||
|
||||
**Tools:**
|
||||
- `RAMP_GET_CARD` -- Get detailed card information (spending limits, cardholder, fulfillment status)
|
||||
- `RAMP_FETCH_CUSTOM_ACCOUNTING_FIELD` -- Fetch custom accounting field definitions
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| **Pagination required** | All list endpoints return paginated results. Use the `start` parameter with the ID of the last entity from the previous page to iterate. |
|
||||
| **Date format** | All date parameters must be ISO 8601 datetime format (e.g., `"2026-02-11T00:00:00Z"`). Plain date strings will fail. |
|
||||
| **sync_status priority** | When `sync_status` is set, it supersedes both `has_no_sync_commits` and `sync_ready` parameters. |
|
||||
| **Amount filters in USD** | `min_amount` and `max_amount` are in USD. Ensure correct currency context when filtering. |
|
||||
| **state=ALL for declined** | By default, declined transactions are excluded. Set `state: "ALL"` to include them in results. |
|
||||
| **page_size bounds** | Must be between 2 and 100. Default is 20. Values outside this range cause errors. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Ramp-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `ramp` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `RAMP_GET_ALL_TRANSACTIONS` | List all transactions with filtering |
|
||||
| `RAMP_SEARCH_TRANSACTIONS` | Search transactions by text query |
|
||||
| `RAMP_GET_TRANSACTION` | Get details of a specific transaction |
|
||||
| `RAMP_GET_MY_TRANSACTIONS` | Get authenticated user's transactions |
|
||||
| `RAMP_LIST_REIMBURSEMENTS` | List reimbursements with filtering |
|
||||
| `RAMP_GET_REIMBURSEMENT` | Get details of a specific reimbursement |
|
||||
| `RAMP_LIST_USERS` | List organization users |
|
||||
| `RAMP_GET_CARD` | Get card details |
|
||||
| `RAMP_FETCH_CUSTOM_ACCOUNTING_FIELD` | Fetch custom accounting field config |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,138 @@
|
||||
---
|
||||
name: replicate-automation
|
||||
description: "Automate Replicate tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Replicate Automation
|
||||
description: "Automate Replicate AI model operations -- run predictions, upload files, inspect model schemas, list versions, and manage prediction history via the Composio MCP integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Replicate Automation via Rube MCP
|
||||
# Replicate Automation
|
||||
|
||||
Automate Replicate operations through Composio's Replicate toolkit via Rube MCP.
|
||||
Automate your Replicate AI model workflows -- run predictions on any public model (image generation, LLMs, audio, video), upload input files, inspect model schemas and documentation, list model versions, and track prediction history.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/replicate](https://composio.dev/toolkits/replicate)
|
||||
**Toolkit docs:** [composio.dev/toolkits/replicate](https://composio.dev/toolkits/replicate)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Replicate connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `replicate`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client: `https://rube.app/mcp`
|
||||
2. Connect your Replicate account when prompted (API token authentication)
|
||||
3. Start using the workflows below
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `replicate`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Get Model Details and Schema
|
||||
|
||||
Use `REPLICATE_MODELS_GET` to inspect a model's input/output schema before running predictions.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Replicate operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: REPLICATE_MODELS_GET
|
||||
Inputs:
|
||||
- model_owner: string (required) -- e.g., "meta", "black-forest-labs", "stability-ai"
|
||||
- model_name: string (required) -- e.g., "meta-llama-3-8b-instruct", "flux-1.1-pro"
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Important:** Each model has unique input keys and types. Always check the `openapi_schema` from this response before constructing prediction inputs.
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Run a Prediction
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Use `REPLICATE_MODELS_PREDICTIONS_CREATE` to run inference on any model with optional synchronous waiting and webhooks.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Replicate task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: REPLICATE_MODELS_PREDICTIONS_CREATE
|
||||
Inputs:
|
||||
- model_owner: string (required) -- e.g., "meta", "black-forest-labs"
|
||||
- model_name: string (required) -- e.g., "flux-1.1-pro", "sdxl"
|
||||
- input: object (required) -- model-specific inputs, e.g., { "prompt": "A sunset over mountains" }
|
||||
- wait_for: integer (1-60 seconds, optional) -- synchronous wait for completion
|
||||
- cancel_after: string (optional) -- max execution time, e.g., "300s", "5m"
|
||||
- webhook: string (optional) -- HTTPS URL for async completion notifications
|
||||
- webhook_events_filter: array (optional) -- ["start", "output", "logs", "completed"]
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
**Sync vs Async:** Use `wait_for` (1-60s) for fast models. For long-running jobs, omit it and use webhooks or poll via `REPLICATE_PREDICTIONS_LIST`.
|
||||
|
||||
### 3. Upload Files for Model Input
|
||||
|
||||
Use `REPLICATE_CREATE_FILE` to upload images, documents, or other binary inputs that models need.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["replicate"]
|
||||
session_id: "your_session_id"
|
||||
Tool: REPLICATE_CREATE_FILE
|
||||
Inputs:
|
||||
- content: string (required) -- base64-encoded file content
|
||||
- filename: string (required) -- e.g., "input.png", "audio.wav" (max 255 bytes UTF-8)
|
||||
- content_type: string (default "application/octet-stream") -- MIME type
|
||||
- metadata: object (optional) -- custom JSON metadata
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Read Model Documentation
|
||||
|
||||
Use `REPLICATE_MODELS_README_GET` to access a model's README in Markdown format for detailed usage instructions.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: REPLICATE_MODELS_README_GET
|
||||
Inputs:
|
||||
- model_owner: string (required)
|
||||
- model_name: string (required)
|
||||
```
|
||||
|
||||
### 5. List Model Versions
|
||||
|
||||
Use `REPLICATE_MODELS_VERSIONS_LIST` to see all available versions of a model, sorted newest first.
|
||||
|
||||
```
|
||||
Tool: REPLICATE_MODELS_VERSIONS_LIST
|
||||
Inputs:
|
||||
- model_owner: string (required)
|
||||
- model_name: string (required)
|
||||
```
|
||||
|
||||
### 6. Track Prediction History and Files
|
||||
|
||||
Use `REPLICATE_PREDICTIONS_LIST` to retrieve prediction history, and `REPLICATE_FILES_GET`/`REPLICATE_FILES_LIST` to manage uploaded files.
|
||||
|
||||
```
|
||||
Tool: REPLICATE_PREDICTIONS_LIST
|
||||
- Lists all predictions for the authenticated user with pagination
|
||||
|
||||
Tool: REPLICATE_FILES_LIST
|
||||
- Lists uploaded files, most recent first
|
||||
|
||||
Tool: REPLICATE_FILES_GET
|
||||
- Get details of a specific file by ID
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| Model-specific input keys | Each model has unique input keys and types. Using the wrong key causes validation errors. Always call `REPLICATE_MODELS_GET` first to check the `openapi_schema`. |
|
||||
| File upload encoding | `REPLICATE_CREATE_FILE` requires base64-encoded content. Binary files treated as text (UTF-8) will fail with decode errors. |
|
||||
| Public vs deployment paths | Public models must be run via `REPLICATE_MODELS_PREDICTIONS_CREATE`. Using deployment-oriented paths causes HTTP 404 failures. |
|
||||
| Sync wait limits | `wait_for` supports 1-60 seconds only. Long-running jobs need async handling via webhooks or polling `REPLICATE_PREDICTIONS_LIST`. |
|
||||
| Image model constraints | Image models like flux-1.1-pro have specific constraints (e.g., max width/height 1440px, valid aspect ratios). Check the model schema first. |
|
||||
| Stale file references | Heavy usage creates many uploads. Routinely check `REPLICATE_FILES_LIST` to avoid using stale `file_id` references. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Replicate-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `replicate` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `REPLICATE_MODELS_GET` | Get model details, schema, and metadata |
|
||||
| `REPLICATE_MODELS_PREDICTIONS_CREATE` | Run a prediction on a model |
|
||||
| `REPLICATE_CREATE_FILE` | Upload a file for model input |
|
||||
| `REPLICATE_MODELS_README_GET` | Get model README documentation |
|
||||
| `REPLICATE_MODELS_VERSIONS_LIST` | List all versions of a model |
|
||||
| `REPLICATE_PREDICTIONS_LIST` | List prediction history with pagination |
|
||||
| `REPLICATE_FILES_LIST` | List uploaded files |
|
||||
| `REPLICATE_FILES_GET` | Get file details by ID |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,56 @@
|
||||
---
|
||||
name: ring-central-automation
|
||||
description: "Automate RingCentral tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: RingCentral Automation
|
||||
description: "RingCentral automation via Rube MCP -- toolkit not currently available in Composio; no RING_CENTRAL_ tools found"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# RingCentral Automation via Rube MCP
|
||||
# RingCentral Automation
|
||||
|
||||
Automate RingCentral operations through Composio's RingCentral toolkit via Rube MCP.
|
||||
> **Status: Toolkit Not Available** -- RUBE_SEARCH_TOOLS returned no `ring_central`-specific tools. The RingCentral toolkit is not currently available in Composio's tool catalog. Searches returned tools from unrelated toolkits (ClickSend, Telnyx, Slack) instead.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/ring_central](https://composio.dev/toolkits/ring_central)
|
||||
**Toolkit docs:** [composio.dev/toolkits/ring_central](https://composio.dev/toolkits/ring_central)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active RingCentral connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `ring_central`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `ring_central`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "RingCentral operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific RingCentral task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["ring_central"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with RingCentral-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `ring_central` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
1. Add the Rube MCP server to your environment: `https://rube.app/mcp`
|
||||
2. Check availability by calling `RUBE_SEARCH_TOOLS` with RingCentral-related queries
|
||||
3. If `RING_CENTRAL_*` tools appear in the future, connect via `RUBE_MANAGE_CONNECTIONS` with toolkit `ring_central`
|
||||
|
||||
---
|
||||
|
||||
## Current Status
|
||||
|
||||
As of the last tool discovery scan, no `RING_CENTRAL_*` tool slugs were returned by RUBE_SEARCH_TOOLS. Queries for RingCentral messaging, call logs, fax, and extension management all returned tools from other toolkits:
|
||||
|
||||
- SMS/messaging queries returned **ClickSend** tools (`CLICKSEND_CREATE_SMS_SEND`, etc.)
|
||||
- Call management queries returned **Pipedrive** call log tools
|
||||
- Telephony/VoIP queries returned **Telnyx** notification tools
|
||||
- Fax queries returned **ClickSend** fax automation tools
|
||||
|
||||
This indicates the `ring_central` toolkit either has no tools registered or is not yet integrated into the Composio platform.
|
||||
|
||||
---
|
||||
|
||||
## Alternatives
|
||||
|
||||
If you need telephony, SMS, or communication automation, consider these available toolkits:
|
||||
|
||||
| Need | Alternative Toolkit | Example Tool |
|
||||
|------|-------------------|--------------|
|
||||
| SMS messaging | ClickSend | `CLICKSEND_CREATE_SMS_SEND` |
|
||||
| VoIP/telephony | Telnyx | `TELNYX_CREATE_NOTIFICATION_CHANNEL` |
|
||||
| Team messaging | Slack / Webex | `SLACK_SEND_MESSAGE` / `WEBEX_MESSAGING_CREATE_MESSAGE` |
|
||||
|
||||
---
|
||||
|
||||
## When Tools Become Available
|
||||
|
||||
Once RingCentral tools are added to Composio, this skill should be updated with real tool slugs, schemas, and pitfalls following the same pattern as other automation skills in this collection.
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,161 @@
|
||||
---
|
||||
name: semrush-automation
|
||||
description: "Automate Semrush tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: SEMrush Automation
|
||||
description: "Automate SEO analysis with SEMrush -- research keywords, analyze domain organic rankings, audit backlinks, assess keyword difficulty, and discover related terms through the Composio SEMrush integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Semrush Automation via Rube MCP
|
||||
# SEMrush Automation
|
||||
|
||||
Automate Semrush operations through Composio's Semrush toolkit via Rube MCP.
|
||||
Run **SEMrush** SEO analytics directly from Claude Code. Analyze domain keywords, audit backlink profiles, research keyword difficulty, discover related terms, and track organic page performance without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/semrush](https://composio.dev/toolkits/semrush)
|
||||
**Toolkit docs:** [composio.dev/toolkits/semrush](https://composio.dev/toolkits/semrush)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Semrush connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `semrush`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Connect your SEMrush account when prompted. The agent will provide an authentication link.
|
||||
3. All SEMrush tools require a `database` parameter specifying the regional database (e.g., `us`, `uk`, `de`). Choose the correct region for your target audience.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `semrush`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Domain Organic Keywords Analysis
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Semrush operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Retrieve all organic search keywords for a domain, including positions, traffic estimates, CPC, and keyword difficulty.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `SEMRUSH_DOMAIN_ORGANIC_SEARCH_KEYWORDS`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `domain` (required) -- e.g., `example.com`
|
||||
- `database` (required) -- regional database code (e.g., `us`, `uk`, `de`)
|
||||
- `display_limit` (default 10000) and `display_offset` (default 0) -- pagination
|
||||
- `display_sort` -- sort by position, traffic, volume, etc. (e.g., `tr_desc` for traffic descending)
|
||||
- `display_date` -- historical data in `YYYYMM15` format (monthly) or `YYYYMMDD` (daily)
|
||||
- `export_columns` -- specify columns like `Ph` (phrase), `Po` (position), `Nq` (volume), `Tr` (traffic), `Kd` (difficulty)
|
||||
- `display_filter` -- filter by specific columns
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Example prompt: *"Get the top 100 organic keywords for example.com in the US database, sorted by traffic"*
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Semrush task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. Keyword Overview and Batch Analysis
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["semrush"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Get detailed metrics for individual keywords or analyze up to 100 keywords at once.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tools:** `SEMRUSH_KEYWORD_OVERVIEW_ONE_DATABASE`, `SEMRUSH_BATCH_KEYWORD_OVERVIEW`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
For single keyword:
|
||||
- `phrase` (required) -- keyword to investigate
|
||||
- `database` (required) -- regional database
|
||||
|
||||
For batch (up to 100 keywords):
|
||||
- `phrase` (required) -- semicolon-separated keywords (max 255 chars total)
|
||||
- `database` (required) -- regional database
|
||||
- `export_columns` -- `Ph` (phrase), `Nq` (volume), `Cp` (CPC), `Co` (competition), `Kd` (difficulty), `In` (intent)
|
||||
|
||||
Example prompt: *"Get keyword metrics for 'seo services;content marketing;link building' in the US database"*
|
||||
|
||||
---
|
||||
|
||||
### 3. Domain Organic Pages Report
|
||||
|
||||
Discover which URLs on a domain drive the most organic traffic and visibility.
|
||||
|
||||
**Tool:** `SEMRUSH_DOMAIN_ORGANIC_PAGES`
|
||||
|
||||
Key parameters:
|
||||
- `domain` (required) -- target domain
|
||||
- `database` (required) -- regional database
|
||||
- `display_sort` -- e.g., `pc_desc` for traffic share descending
|
||||
- `display_limit` and `display_offset` -- pagination
|
||||
- `export_columns` -- `Ur` (URL), `Pc` (traffic %), `Tg` (traffic), `Tr` (traffic cost)
|
||||
|
||||
Example prompt: *"Show the top 50 organic pages for example.com ranked by traffic share"*
|
||||
|
||||
---
|
||||
|
||||
### 4. Backlink Profile Overview
|
||||
|
||||
Get a summary of backlinks for a domain including Authority Score, link types, and referring domain counts.
|
||||
|
||||
**Tool:** `SEMRUSH_BACKLINKS_OVERVIEW`
|
||||
|
||||
Key parameters:
|
||||
- `target` (required) -- domain, subdomain, or full URL
|
||||
- `target_type` (required) -- `root_domain`, `domain`, or `url`
|
||||
- `export_columns` -- `ascore` (Authority Score), `total` (total backlinks), `domains_num` (referring domains), `follows_num`, `nofollows_num`, etc.
|
||||
|
||||
Example prompt: *"Get the backlink overview for example.com including Authority Score and referring domain count"*
|
||||
|
||||
---
|
||||
|
||||
### 5. Keyword Difficulty Assessment
|
||||
|
||||
Score how hard it is to rank in the top 10 for specific keywords (0-100 scale).
|
||||
|
||||
**Tool:** `SEMRUSH_KEYWORD_DIFFICULTY`
|
||||
|
||||
Key parameters:
|
||||
- `phrase` (required) -- keyword to analyze
|
||||
- `database` (required) -- regional database
|
||||
- `export_columns` -- `Ph` (phrase), `Kd` (difficulty score)
|
||||
|
||||
Example prompt: *"What is the keyword difficulty for 'best project management software' in the US?"*
|
||||
|
||||
---
|
||||
|
||||
### 6. Discover Related Keywords
|
||||
|
||||
Find synonyms, variations, and related terms for a seed keyword to expand your content strategy.
|
||||
|
||||
**Tool:** `SEMRUSH_RELATED_KEYWORDS`
|
||||
|
||||
Key parameters:
|
||||
- `phrase` (required) -- seed keyword
|
||||
- `database` (required) -- regional database
|
||||
- `display_limit` (default 10000) -- max results
|
||||
- `display_sort` -- e.g., `nq_desc` for volume descending, `kd_asc` for easiest first
|
||||
- `export_columns` -- `Ph`, `Nq`, `Kd`, `Cp`, `Co`, `Rr` (relatedness score)
|
||||
|
||||
Example prompt: *"Find related keywords for 'project management' in the US, sorted by search volume"*
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Pagination is essential:** `SEMRUSH_DOMAIN_ORGANIC_SEARCH_KEYWORDS` and `SEMRUSH_DOMAIN_ORGANIC_PAGES` can return very large datasets. Always use `display_limit` and `display_offset` instead of assuming a single page is complete.
|
||||
- **CSV-style responses:** Many SEMrush tools return data as CSV-style text in a single field (e.g., `data/keyword_data`). You must parse rows and columns before analysis or joining reports.
|
||||
- **"ERROR 50 :: NOTHING FOUND":** This literal string means the domain or keyword has no data in that database. Treat it as a valid zero-result response, not a transport error.
|
||||
- **Batch keyword limits:** `SEMRUSH_BATCH_KEYWORD_OVERVIEW` may return HTTP 400 for problematic or oversized batches (max 255 chars total for the `phrase` field). Shrink batches or fall back to `SEMRUSH_KEYWORD_OVERVIEW_ONE_DATABASE` for individual lookups.
|
||||
- **Date format:** Historical dates must use `YYYYMM15` format for monthly data (e.g., `20231015`). Using an incorrect format will return unexpected results.
|
||||
- **Regional database matters:** Always use the correct regional database for your target audience. Results for `us` vs `uk` can differ dramatically in volume, CPC, and rankings.
|
||||
- **Column codes:** Export columns use short codes (`Ph`, `Nq`, `Kd`, etc.). Avoid over-narrowing `export_columns` so key metrics like traffic, CPC, position, and difficulty are retained.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Semrush-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `semrush` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `SEMRUSH_DOMAIN_ORGANIC_SEARCH_KEYWORDS` | Organic keywords for a domain with positions and traffic |
|
||||
| `SEMRUSH_KEYWORD_OVERVIEW_ONE_DATABASE` | Single keyword metrics (volume, CPC, difficulty) |
|
||||
| `SEMRUSH_BATCH_KEYWORD_OVERVIEW` | Batch metrics for up to 100 keywords |
|
||||
| `SEMRUSH_DOMAIN_ORGANIC_PAGES` | Top organic pages for a domain by traffic |
|
||||
| `SEMRUSH_BACKLINKS_OVERVIEW` | Backlink profile summary with Authority Score |
|
||||
| `SEMRUSH_BACKLINKS` | Detailed backlinks list for a target |
|
||||
| `SEMRUSH_KEYWORD_DIFFICULTY` | Keyword difficulty score (0-100) |
|
||||
| `SEMRUSH_RELATED_KEYWORDS` | Related/similar keywords for a seed phrase |
|
||||
| `SEMRUSH_CATEGORIES` | Domain categories with confidence ratings |
|
||||
| `SEMRUSH_DOMAIN_ORGANIC_SUBDOMAINS` | Subdomain-level organic rankings breakdown |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,197 @@
|
||||
---
|
||||
name: share-point-automation
|
||||
description: "Automate SharePoint tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: SharePoint Automation
|
||||
description: "SharePoint Automation: manage sites, lists, documents, folders, pages, and search content across SharePoint and OneDrive"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# SharePoint Automation via Rube MCP
|
||||
# SharePoint Automation
|
||||
|
||||
Automate SharePoint operations through Composio's SharePoint toolkit via Rube MCP.
|
||||
Automate SharePoint operations including managing sites, lists, documents, folders, and pages. Integrates with both SharePoint REST API and Microsoft Graph via OneDrive.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/share_point](https://composio.dev/toolkits/share_point)
|
||||
**Toolkit docs:** [composio.dev/toolkits/share_point](https://composio.dev/toolkits/share_point)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active SharePoint connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `share_point`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
This skill requires the **Rube MCP server** connected at `https://rube.app/mcp`.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `share_point`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
Before executing any tools, ensure active connections exist for the `share_point` and `one_drive` toolkits. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.
|
||||
|
||||
## Tool Discovery
|
||||
> **Note:** Many OneDrive/SharePoint tools only work with organizational Microsoft 365 accounts (Azure AD/Entra ID). Personal Microsoft accounts are NOT supported.
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
---
|
||||
|
||||
## Core Workflows
|
||||
|
||||
### 1. List and Browse Sites
|
||||
|
||||
Retrieve site details and enumerate subsites to discover the SharePoint topology.
|
||||
|
||||
**Tools:**
|
||||
- `ONE_DRIVE_GET_SITE_DETAILS` -- Get metadata for a specific site by ID
|
||||
- `ONE_DRIVE_LIST_SITE_SUBSITES` -- List all subsites of a parent site
|
||||
|
||||
**Key Parameters:**
|
||||
- `site_id` (required) -- Composite format: `hostname,site-collection-guid,web-guid` (e.g., `"contoso.sharepoint.com,da60e844-...,712a596e-..."`)
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "SharePoint operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: ONE_DRIVE_GET_SITE_DETAILS
|
||||
Arguments:
|
||||
site_id: "contoso.sharepoint.com,2C712604-1370-44E7-A1F5-426573FDA80A,2D2244C3-251A-49EA-93A8-39E1C3A060FE"
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
---
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Manage Lists
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Create lists, enumerate existing lists, and retrieve list items.
|
||||
|
||||
**Tools:**
|
||||
- `SHARE_POINT_LIST_ALL_LISTS` -- Retrieve all lists on a site (supports OData filter, select, orderby, top)
|
||||
- `SHARE_POINT_SHAREPOINT_CREATE_LIST` -- Create a new list with a specified template
|
||||
- `ONE_DRIVE_LIST_SITE_LISTS` -- List all lists under a site via Microsoft Graph
|
||||
- `ONE_DRIVE_GET_SHAREPOINT_LIST_ITEMS` -- Retrieve items from a specific list
|
||||
|
||||
**Key Parameters for `SHARE_POINT_SHAREPOINT_CREATE_LIST`:**
|
||||
- `name` (required) -- List name
|
||||
- `template` (required) -- Template type: `"genericList"`, `"documentLibrary"`, `"tasks"`, etc.
|
||||
- `description` -- Optional description
|
||||
|
||||
**Key Parameters for `SHARE_POINT_LIST_ALL_LISTS`:**
|
||||
- `filter` -- OData filter, e.g., `"Hidden eq false"`
|
||||
- `select` -- Properties to return, e.g., `"Title,Id"`
|
||||
- `orderby` -- Sort expression, e.g., `"Title desc"`
|
||||
- `top` -- Limit results count
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific SharePoint task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: SHARE_POINT_SHAREPOINT_CREATE_LIST
|
||||
Arguments:
|
||||
name: "Project Tasks"
|
||||
template: "tasks"
|
||||
description: "Task tracking for Q1 deliverables"
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
### 3. Manage Folders and Files
|
||||
|
||||
Create folders, list files within folders, and navigate the document library.
|
||||
|
||||
**Tools:**
|
||||
- `SHARE_POINT_SHAREPOINT_CREATE_FOLDER` -- Create a new folder in a document library
|
||||
- `SHARE_POINT_LIST_FILES_IN_FOLDER` -- List files within a folder by server-relative URL
|
||||
- `SHARE_POINT_GET_FOLDER_BY_SERVER_RELATIVE_URL` -- Get folder metadata by path
|
||||
|
||||
**Key Parameters for `SHARE_POINT_SHAREPOINT_CREATE_FOLDER`:**
|
||||
- `folder_name` (required) -- Name of the folder to create
|
||||
- `document_library` -- Target library (default: `"Shared Documents"`)
|
||||
- `relative_path` -- Additional path within the library
|
||||
|
||||
**Key Parameters for `SHARE_POINT_LIST_FILES_IN_FOLDER`:**
|
||||
- `folder_name` (required) -- Server-relative URL, e.g., `"/Shared Documents"`
|
||||
- `select` -- Comma-separated properties, e.g., `"Name,ServerRelativeUrl,Length"`
|
||||
- `top` -- Limit results count
|
||||
- `orderby` -- Sort expression, e.g., `"Name desc"`
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["share_point"]
|
||||
session_id: "your_session_id"
|
||||
Tool: SHARE_POINT_LIST_FILES_IN_FOLDER
|
||||
Arguments:
|
||||
folder_name: "/Shared Documents/Reports"
|
||||
select: "Name,ServerRelativeUrl,Length"
|
||||
top: 50
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
---
|
||||
|
||||
### 4. Search SharePoint Content
|
||||
|
||||
Use Keyword Query Language (KQL) to search documents, list items, and other content across the site.
|
||||
|
||||
**Tool:** `SHARE_POINT_SEARCH_QUERY`
|
||||
|
||||
**Key Parameters:**
|
||||
- `querytext` (required) -- KQL query, e.g., `"project report"`, `"FileType:docx"`, `"Author:\"John Doe\""`
|
||||
- `rowlimit` -- Max results per request (default ~50, max 500)
|
||||
- `startrow` -- Zero-based offset for pagination
|
||||
- `selectproperties` -- Properties to return, e.g., `"Title,Author,Path"`
|
||||
- `refinementfilters` -- Narrow results, e.g., `"FileType:equals(\"docx\")"`
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: SHARE_POINT_SEARCH_QUERY
|
||||
Arguments:
|
||||
querytext: "IsDocument:1 FileType:pdf"
|
||||
rowlimit: 25
|
||||
selectproperties: "Title,Author,Path,LastModifiedTime"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5. Track List Changes (Delta Query)
|
||||
|
||||
Use delta queries to get incremental changes (created, updated, deleted items) without reading the entire list.
|
||||
|
||||
**Tool:** `ONE_DRIVE_LIST_SHAREPOINT_LIST_ITEMS_DELTA`
|
||||
|
||||
**Key Parameters:**
|
||||
- `site_id` (required) -- Composite site ID
|
||||
- `list_id` (required) -- List GUID
|
||||
- `token` -- Omit for initial sync; pass `"latest"` for empty response with token; pass previous token for changes since
|
||||
- `expand` -- e.g., `"fields($select=ColumnA,ColumnB)"`
|
||||
- `top` -- Max items per response
|
||||
|
||||
---
|
||||
|
||||
### 6. Retrieve Site Page Content
|
||||
|
||||
Read modern SharePoint Site Pages content including canvas web parts.
|
||||
|
||||
**Tool:** `SHARE_POINT_GET_SITE_PAGE_CONTENT`
|
||||
|
||||
**Key Parameters:**
|
||||
- `page_file_name` -- File name with `.aspx` extension, e.g., `"Home.aspx"`
|
||||
- `item_id` -- Alternative: list item ID of the page
|
||||
- `render_as` -- `"raw"` (default), `"text"`, or `"html"`
|
||||
- `site` -- Optional site name scope
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| **Site ID format** | Must be composite: `hostname,site-collection-guid,web-guid`. Incorrect format causes 400 errors. |
|
||||
| **Personal accounts unsupported** | `ONE_DRIVE_LIST_SITE_LISTS` and Graph-based tools only work with organizational M365 accounts, not personal MSA/Outlook.com accounts. |
|
||||
| **OData filter syntax** | SharePoint OData filters use specific syntax. Test filters incrementally; unsupported expressions may silently return empty results. |
|
||||
| **Pagination** | Use `skiptoken` for server-side paging in list operations. Incomplete pagination settings can miss results. |
|
||||
| **Folder paths** | Must use server-relative URLs (e.g., `/Shared Documents`) not absolute URLs. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with SharePoint-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `share_point` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `ONE_DRIVE_GET_SITE_DETAILS` | Get metadata for a SharePoint site |
|
||||
| `ONE_DRIVE_LIST_SITE_SUBSITES` | List subsites of a parent site |
|
||||
| `ONE_DRIVE_LIST_SITE_LISTS` | List all lists under a site (Graph API) |
|
||||
| `ONE_DRIVE_LIST_SHAREPOINT_LIST_ITEMS_DELTA` | Track incremental list changes |
|
||||
| `ONE_DRIVE_GET_SHAREPOINT_LIST_ITEMS` | Retrieve items from a list |
|
||||
| `ONE_DRIVE_LIST_DRIVES` | List available drives for a user/site/group |
|
||||
| `ONE_DRIVE_LIST_SITE_COLUMNS` | List column definitions for a site |
|
||||
| `SHARE_POINT_LIST_ALL_LISTS` | Retrieve all lists on a site (REST API) |
|
||||
| `SHARE_POINT_SHAREPOINT_CREATE_LIST` | Create a new SharePoint list |
|
||||
| `SHARE_POINT_SHAREPOINT_CREATE_FOLDER` | Create a folder in a document library |
|
||||
| `SHARE_POINT_LIST_FILES_IN_FOLDER` | List files in a folder |
|
||||
| `SHARE_POINT_SEARCH_QUERY` | Search content using KQL |
|
||||
| `SHARE_POINT_GET_SITE_PAGE_CONTENT` | Retrieve Site Page content |
|
||||
| `SHARE_POINT_GET_FOLDER_BY_SERVER_RELATIVE_URL` | Get folder metadata by path |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,158 @@
|
||||
---
|
||||
name: shortcut-automation
|
||||
description: "Automate Shortcut tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Shortcut Automation
|
||||
description: "Automate project management workflows in Shortcut -- create stories, manage tasks, track epics, and organize workflows through natural language commands."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Shortcut Automation via Rube MCP
|
||||
# Shortcut Automation
|
||||
|
||||
Automate Shortcut operations through Composio's Shortcut toolkit via Rube MCP.
|
||||
Automate your Shortcut project management operations directly from Claude Code. Create and list stories, add tasks and comments, batch-create stories, and navigate workflows -- all without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/shortcut](https://composio.dev/toolkits/shortcut)
|
||||
**Toolkit docs:** [composio.dev/toolkits/shortcut](https://composio.dev/toolkits/shortcut)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Shortcut connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `shortcut`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your Claude Code config with URL: `https://rube.app/mcp`
|
||||
2. When prompted, authenticate your Shortcut account through the connection link provided
|
||||
3. Start automating your project management workflows with natural language
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `shortcut`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Create Stories
|
||||
|
||||
Add new stories to your Shortcut workspace with full configuration.
|
||||
|
||||
**Tool:** `SHORTCUT_CREATE_STORY`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Shortcut operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Create a feature story called "Add dark mode support" in workflow state 500000001 with estimate 5 and label "frontend"
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Key parameters for `SHORTCUT_CREATE_STORY`:
|
||||
- `name` (required) -- the story title
|
||||
- `workflow_state_id` -- the workflow state to place the story in (recommended over `project_id`)
|
||||
- `story_type` -- `"feature"`, `"bug"`, or `"chore"`
|
||||
- `description` -- story body/description
|
||||
- `estimate` -- numeric point estimate (or null for unestimated)
|
||||
- `epic_id` -- associate with an epic
|
||||
- `iteration_id` -- associate with an iteration
|
||||
- `labels` -- array of label objects with `name` (and optional `color`, `description`)
|
||||
- `owner_ids` -- array of member UUIDs to assign
|
||||
- `deadline` -- due date in ISO 8601 format
|
||||
- `tasks` -- inline task array with `description` and optional `complete`, `owner_ids`
|
||||
- `comments` -- inline comment array with `text`
|
||||
- `story_links` -- link stories with `verb` (`"blocks"`, `"duplicates"`, `"relates to"`)
|
||||
|
||||
## Core Workflow Pattern
|
||||
**Important:** Either `workflow_state_id` or `project_id` must be provided, but not both. `workflow_state_id` is recommended as Projects are being sunset in Shortcut.
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
### 2. Batch Create Stories
|
||||
|
||||
Create multiple stories in a single API call.
|
||||
|
||||
**Tool:** `SHORTCUT_CREATE_MULTIPLE_STORIES`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Shortcut task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Create 3 bug stories: "Login page 500 error", "Cart total rounding issue", and "Search results empty state broken"
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
- Requires `stories` array where each element follows the same schema as `SHORTCUT_CREATE_STORY`
|
||||
- Each story in the array requires `name`
|
||||
- Efficient for bulk imports, sprint planning, or template-based story creation
|
||||
|
||||
### 3. List Stories in a Project
|
||||
|
||||
Retrieve all stories within a specific project.
|
||||
|
||||
**Tool:** `SHORTCUT_LIST_STORIES`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["shortcut"]
|
||||
session_id: "your_session_id"
|
||||
List all stories in project 42 with their descriptions
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
- Requires `project__public__id` (integer project ID)
|
||||
- Optional `includes_description: true` to include story descriptions in the response
|
||||
- Returns all stories with their attributes (status, type, estimate, etc.)
|
||||
|
||||
### 4. Manage Story Tasks
|
||||
|
||||
Create tasks (checklists) within stories for tracking sub-work.
|
||||
|
||||
**Tool:** `SHORTCUT_CREATE_TASK`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Add a task "Write unit tests for dark mode toggle" to story 12345
|
||||
```
|
||||
|
||||
Key parameters:
|
||||
- `story__public__id` (required) -- the parent story ID
|
||||
- `description` (required) -- the task description
|
||||
- `complete` -- boolean, defaults to false
|
||||
- `owner_ids` -- array of member UUIDs to assign the task
|
||||
- `external_id` -- ID from an external tool if imported
|
||||
|
||||
### 5. Add Story Comments
|
||||
|
||||
Post comments on stories for discussion and documentation.
|
||||
|
||||
**Tool:** `SHORTCUT_CREATE_STORY_COMMENT`
|
||||
|
||||
```
|
||||
Add a comment to story 12345: "Reviewed the implementation -- looks good, but needs accessibility testing"
|
||||
```
|
||||
|
||||
Key parameters:
|
||||
- `story__public__id` (required) -- the story ID
|
||||
- `text` (required) -- the comment body
|
||||
- `author_id` -- member UUID (defaults to API token owner)
|
||||
- `parent_id` -- ID of parent comment for threaded replies
|
||||
|
||||
### 6. Workflow and Project Discovery
|
||||
|
||||
List workflows and projects to resolve IDs for story creation.
|
||||
|
||||
**Tools:** `SHORTCUT_LIST_WORKFLOWS`, `SHORTCUT_LIST_PROJECTS`
|
||||
|
||||
```
|
||||
Show me all workflows in our Shortcut workspace so I can find the right workflow state ID
|
||||
```
|
||||
|
||||
- `SHORTCUT_LIST_WORKFLOWS` returns all workflows with their states (IDs, names, types)
|
||||
- `SHORTCUT_LIST_PROJECTS` returns all projects with their attributes
|
||||
- Use these to discover valid `workflow_state_id` and `project_id` values before creating stories
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **`workflow_state_id` vs `project_id`:** `SHORTCUT_CREATE_STORY` requires exactly one of these. Providing both or neither causes a rejection. Prefer `workflow_state_id` since Projects are being sunset.
|
||||
- **Projects are being sunset:** Shortcut is deprecating Projects in favor of workflow-based organization. Use `workflow_state_id` for new stories.
|
||||
- **Label creation is inline:** Labels in the `labels` array are created on-the-fly if they do not exist. The `name` field is required for each label object.
|
||||
- **Story type defaults:** If `story_type` is omitted, it defaults to `"feature"`. Always set it explicitly for bugs and chores.
|
||||
- **Batch limits:** `SHORTCUT_CREATE_MULTIPLE_STORIES` processes all stories in a single request. Very large batches may time out -- keep batches under 25 stories.
|
||||
- **Integer IDs for stories/projects:** Story and project IDs are integers, not UUIDs. Member and group IDs are UUIDs. Mixing these formats causes errors.
|
||||
- **`move_to` positioning:** The `move_to` field (`"first"` or `"last"`) moves the story within its workflow state, not across states.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Shortcut-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `shortcut` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `SHORTCUT_CREATE_STORY` | Create a single story (requires `name` + `workflow_state_id` or `project_id`) |
|
||||
| `SHORTCUT_CREATE_MULTIPLE_STORIES` | Batch-create multiple stories (requires `stories` array) |
|
||||
| `SHORTCUT_LIST_STORIES` | List stories in a project (requires `project__public__id`) |
|
||||
| `SHORTCUT_CREATE_TASK` | Create a task in a story (requires `story__public__id`, `description`) |
|
||||
| `SHORTCUT_CREATE_STORY_COMMENT` | Add a comment to a story (requires `story__public__id`, `text`) |
|
||||
| `SHORTCUT_CREATE_STORY_FROM_TEMPLATE` | Create a story from a template |
|
||||
| `SHORTCUT_LIST_WORKFLOWS` | List all workflows and their states |
|
||||
| `SHORTCUT_LIST_PROJECTS` | List all projects |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,127 @@
|
||||
---
|
||||
name: snowflake-automation
|
||||
description: "Automate Snowflake tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Snowflake Automation
|
||||
description: "Automate Snowflake data warehouse operations -- list databases, schemas, and tables, execute SQL statements, and manage data workflows via the Composio MCP integration."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Snowflake Automation via Rube MCP
|
||||
# Snowflake Automation
|
||||
|
||||
Automate Snowflake operations through Composio's Snowflake toolkit via Rube MCP.
|
||||
Automate your Snowflake data warehouse workflows -- discover databases, browse schemas and tables, execute arbitrary SQL (SELECT, DDL, DML), and integrate Snowflake data operations into cross-app pipelines.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/snowflake](https://composio.dev/toolkits/snowflake)
|
||||
**Toolkit docs:** [composio.dev/toolkits/snowflake](https://composio.dev/toolkits/snowflake)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Snowflake connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `snowflake`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Composio MCP server to your client: `https://rube.app/mcp`
|
||||
2. Connect your Snowflake account when prompted (account credentials or key-pair authentication)
|
||||
3. Start using the workflows below
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `snowflake`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List Databases
|
||||
|
||||
Use `SNOWFLAKE_SHOW_DATABASES` to discover available databases with optional filtering and Time Travel support.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Snowflake operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: SNOWFLAKE_SHOW_DATABASES
|
||||
Inputs:
|
||||
- like_pattern: string (SQL wildcard, e.g., "%test%") -- case-insensitive
|
||||
- starts_with: string (e.g., "PROD") -- case-sensitive
|
||||
- limit: integer (max 10000)
|
||||
- history: boolean (include dropped databases within Time Travel retention)
|
||||
- terse: boolean (return subset of columns: created_on, name, kind, database_name, schema_name)
|
||||
- role: string (role to use for execution)
|
||||
- warehouse: string (optional, not required for SHOW DATABASES)
|
||||
- timeout: integer (seconds)
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
### 2. Browse Schemas
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Use `SNOWFLAKE_SHOW_SCHEMAS` to list schemas within a database or across the account.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Snowflake task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: SNOWFLAKE_SHOW_SCHEMAS
|
||||
Inputs:
|
||||
- database: string (database context)
|
||||
- in_scope: "ACCOUNT" | "DATABASE" | "<specific_database_name>"
|
||||
- like_pattern: string (SQL wildcard filter)
|
||||
- starts_with: string (case-sensitive prefix)
|
||||
- limit: integer (max 10000)
|
||||
- history: boolean (include dropped schemas)
|
||||
- terse: boolean (subset columns only)
|
||||
- role, warehouse, timeout: string/integer (optional)
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 3. List Tables
|
||||
|
||||
Use `SNOWFLAKE_SHOW_TABLES` to discover tables with metadata including row counts, sizes, and clustering keys.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["snowflake"]
|
||||
session_id: "your_session_id"
|
||||
Tool: SNOWFLAKE_SHOW_TABLES
|
||||
Inputs:
|
||||
- database: string (database context)
|
||||
- schema: string (schema context)
|
||||
- in_scope: "ACCOUNT" | "DATABASE" | "SCHEMA" | "<specific_name>"
|
||||
- like_pattern: string (e.g., "%customer%")
|
||||
- starts_with: string (e.g., "FACT", "DIM", "TEMP")
|
||||
- limit: integer (max 10000)
|
||||
- history: boolean (include dropped tables)
|
||||
- terse: boolean (subset columns only)
|
||||
- role, warehouse, timeout: string/integer (optional)
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 4. Execute SQL Statements
|
||||
|
||||
Use `SNOWFLAKE_EXECUTE_SQL` for SELECT queries, DDL (CREATE/ALTER/DROP), and DML (INSERT/UPDATE/DELETE) with parameterized bindings.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: SNOWFLAKE_EXECUTE_SQL
|
||||
Inputs:
|
||||
- statement: string (required) -- SQL statement(s), semicolon-separated for multi-statement
|
||||
- database: string (case-sensitive, falls back to DEFAULT_NAMESPACE)
|
||||
- schema_name: string (case-sensitive)
|
||||
- warehouse: string (case-sensitive, required for compute-bound queries)
|
||||
- role: string (case-sensitive, falls back to DEFAULT_ROLE)
|
||||
- bindings: object (parameterized query values to prevent SQL injection)
|
||||
- parameters: object (Snowflake session-level parameters)
|
||||
- timeout: integer (seconds; 0 = max 604800s)
|
||||
```
|
||||
|
||||
**Examples:**
|
||||
- `"SELECT * FROM my_table LIMIT 100;"`
|
||||
- `"CREATE TABLE test (id INT, name STRING);"`
|
||||
- `"ALTER SESSION SET QUERY_TAG='mytag'; SELECT COUNT(*) FROM my_table;"`
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| Case sensitivity | Database, schema, warehouse, and role names are case-sensitive in `SNOWFLAKE_EXECUTE_SQL`. |
|
||||
| Warehouse required for compute | SELECT and DML queries require a running warehouse. SHOW commands do not. |
|
||||
| Multi-statement execution | Multiple statements separated by semicolons execute in sequence automatically. |
|
||||
| SQL injection prevention | Always use the `bindings` parameter for user-supplied values to prevent injection attacks. |
|
||||
| Pagination with LIMIT | `SHOW` commands support `limit` (max 10000) and `from_name` for cursor-based pagination. |
|
||||
| Time Travel | Set `history: true` to include dropped objects still within the retention period. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Snowflake-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `snowflake` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `SNOWFLAKE_SHOW_DATABASES` | List databases with filtering and Time Travel support |
|
||||
| `SNOWFLAKE_SHOW_SCHEMAS` | List schemas within a database or account-wide |
|
||||
| `SNOWFLAKE_SHOW_TABLES` | List tables with metadata (row count, size, clustering) |
|
||||
| `SNOWFLAKE_EXECUTE_SQL` | Execute SQL: SELECT, DDL, DML with parameterized bindings |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,186 @@
|
||||
---
|
||||
name: spotify-automation
|
||||
description: "Automate Spotify tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Spotify Automation
|
||||
description: "Automate Spotify workflows including playlist management, music search, playback control, and user profile access via Composio"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Spotify Automation via Rube MCP
|
||||
# Spotify Automation
|
||||
|
||||
Automate Spotify operations through Composio's Spotify toolkit via Rube MCP.
|
||||
Automate Spotify operations -- manage playlists, search the music catalog, control playback, browse albums and tracks, and access user profiles -- all orchestrated through the Composio MCP integration.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/spotify](https://composio.dev/toolkits/spotify)
|
||||
**Toolkit docs:** [composio.dev/toolkits/spotify](https://composio.dev/toolkits/spotify)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Spotify connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `spotify`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Connect your Spotify account through the Composio MCP server at `https://rube.app/mcp`
|
||||
2. The agent will prompt you with an authentication link if no active connection exists
|
||||
3. Once connected, all `SPOTIFY_*` tools become available for execution
|
||||
4. **Note:** Some features (playback control) require a Spotify Premium subscription
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `spotify`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Get Current User Profile
|
||||
Retrieve comprehensive profile information for the authenticated Spotify user.
|
||||
|
||||
**Tool:** `SPOTIFY_GET_CURRENT_USER_S_PROFILE`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Spotify operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
No parameters required.
|
||||
Returns: display name, email, country, subscription level (premium/free),
|
||||
explicit content settings, profile images, follower count, and Spotify URIs.
|
||||
Required scopes: user-read-private, user-read-email.
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
---
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Search the Spotify Catalog
|
||||
Find albums, artists, playlists, tracks, shows, episodes, or audiobooks by keyword.
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
**Tool:** `SPOTIFY_SEARCH_FOR_ITEM`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Spotify task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `q` | string | Yes | Search query keywords |
|
||||
| `type` | array | Yes | Item types: `album`, `artist`, `playlist`, `track`, `show`, `episode`, `audiobook` |
|
||||
| `limit` | integer | No | Results to return (default: 20) |
|
||||
| `offset` | integer | No | Offset for pagination (default: 0) |
|
||||
| `market` | string | No | ISO 3166-1 alpha-2 country code |
|
||||
| `include_external` | string | No | Set to `audio` to include external content |
|
||||
|
||||
### Step 2: Check Connection
|
||||
**Note:** Audiobooks are only available in US, UK, Canada, Ireland, New Zealand, and Australia.
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["spotify"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
---
|
||||
|
||||
### Step 3: Execute Tools
|
||||
### 3. Manage Playlists
|
||||
Browse, create, modify, and populate playlists.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Get a user's playlists:**
|
||||
|
||||
**Tool:** `SPOTIFY_GET_USER_S_PLAYLISTS`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `user_id` | string | Yes | Spotify user ID |
|
||||
| `limit` | integer | No | Max playlists, 1-50 (default: 20) |
|
||||
| `offset` | integer | No | Pagination offset, 0-100000 (default: 0) |
|
||||
|
||||
**Get current user's playlists:**
|
||||
|
||||
**Tool:** `SPOTIFY_GET_CURRENT_USER_S_PLAYLISTS`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `limit` | integer | No | Max playlists, 1-50 (default: 20) |
|
||||
| `offset` | integer | No | Pagination offset, 0-100000 (default: 0) |
|
||||
|
||||
**Get playlist details:**
|
||||
|
||||
**Tool:** `SPOTIFY_GET_PLAYLIST`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `playlist_id` | string | Yes | Spotify playlist ID (e.g., `3cEYpjA9oz9GiPac4AsH4n`) |
|
||||
| `fields` | string | No | Comma-separated field filter to reduce response size |
|
||||
| `market` | string | No | ISO country code for market-specific content |
|
||||
| `additional_types` | string | No | `track,episode` to include podcast episodes |
|
||||
|
||||
**Update playlist details:**
|
||||
|
||||
**Tool:** `SPOTIFY_CHANGE_PLAYLIST_DETAILS`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `playlist_id` | string | Yes | Playlist ID (must be owned by current user) |
|
||||
| `name` | string | No | New playlist name |
|
||||
| `description` | string | No | New playlist description |
|
||||
| `public` | boolean | No | Public/private toggle |
|
||||
| `collaborative` | boolean | No | Collaborative mode (only on non-public playlists) |
|
||||
|
||||
---
|
||||
|
||||
### 4. Browse Playlist Items & Add Tracks
|
||||
View tracks in a playlist and add new items.
|
||||
|
||||
**Tool:** `SPOTIFY_GET_PLAYLIST_ITEMS`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `playlist_id` | string | Yes | Spotify playlist ID |
|
||||
| `limit` | integer | No | Items per page, 1-50 (default: 20) |
|
||||
| `offset` | integer | No | Pagination offset (default: 0) |
|
||||
| `fields` | string | No | Field filter (e.g., `items(track(name,id))`) |
|
||||
| `market` | string | No | ISO country code |
|
||||
| `additional_types` | string | No | `track,episode` for podcast episodes |
|
||||
|
||||
**Tool:** `SPOTIFY_ADD_ITEMS_TO_PLAYLIST`
|
||||
|
||||
Add tracks or episodes to a playlist using Spotify URIs.
|
||||
|
||||
---
|
||||
|
||||
### 5. Get Track & Album Details
|
||||
Retrieve catalog information for individual tracks and albums.
|
||||
|
||||
**Tool:** `SPOTIFY_GET_TRACK` -- Get details for a single track by Spotify ID.
|
||||
|
||||
**Tool:** `SPOTIFY_GET_ALBUM` -- Get comprehensive album data including track listing, artist info, cover art, and popularity.
|
||||
|
||||
---
|
||||
|
||||
### 6. Control Playback
|
||||
Start, resume, or change playback on the user's active device.
|
||||
|
||||
**Tool:** `SPOTIFY_START_RESUME_PLAYBACK`
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `context_uri` | string | No | Spotify URI of album, artist, or playlist (cannot combine with `uris`) |
|
||||
| `uris` | array | No | List of track URIs to play (cannot combine with `context_uri`) |
|
||||
| `offset` | object | No | Starting position: `{position: 5}` or `{uri: 'spotify:track:...'}` |
|
||||
| `position_ms` | integer | No | Start position in milliseconds |
|
||||
| `device_id` | string | No | Target device ID (defaults to active device) |
|
||||
|
||||
**Requirements:** Spotify Premium subscription and at least one active device.
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| **Premium required for playback** | `SPOTIFY_START_RESUME_PLAYBACK` returns 403 if the user does not have Spotify Premium |
|
||||
| **Active device required** | Playback control returns 404 if no Spotify device (mobile, desktop, web, speaker) is active |
|
||||
| **context_uri vs uris are exclusive** | Cannot use both `context_uri` and `uris` in the same playback call |
|
||||
| **Collaborative playlists** | `collaborative` can only be set to `true` on non-public playlists (`public` must be `false`) |
|
||||
| **Playlist ownership** | `SPOTIFY_CHANGE_PLAYLIST_DETAILS` only works on playlists owned by the authenticated user |
|
||||
| **Audiobook market restrictions** | Audiobooks via search are only available in US, UK, Canada, Ireland, New Zealand, and Australia |
|
||||
| **Max 11000 playlists** | Users are limited to approximately 11,000 playlists via `SPOTIFY_CREATE_PLAYLIST` |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Spotify-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `spotify` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Purpose |
|
||||
|-----------|---------|
|
||||
| `SPOTIFY_GET_CURRENT_USER_S_PROFILE` | Get authenticated user's profile |
|
||||
| `SPOTIFY_SEARCH_FOR_ITEM` | Search catalog for tracks, albums, artists, etc. |
|
||||
| `SPOTIFY_GET_USER_S_PLAYLISTS` | Get playlists for any user |
|
||||
| `SPOTIFY_GET_CURRENT_USER_S_PLAYLISTS` | Get current user's playlists |
|
||||
| `SPOTIFY_GET_PLAYLIST` | Get detailed playlist info |
|
||||
| `SPOTIFY_GET_PLAYLIST_ITEMS` | List tracks/episodes in a playlist |
|
||||
| `SPOTIFY_CHANGE_PLAYLIST_DETAILS` | Update playlist name, description, visibility |
|
||||
| `SPOTIFY_CREATE_PLAYLIST` | Create a new playlist |
|
||||
| `SPOTIFY_ADD_ITEMS_TO_PLAYLIST` | Add tracks/episodes to a playlist |
|
||||
| `SPOTIFY_GET_TRACK` | Get track details by ID |
|
||||
| `SPOTIFY_GET_ALBUM` | Get album details by ID |
|
||||
| `SPOTIFY_START_RESUME_PLAYBACK` | Start or resume playback on a device |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,166 @@
|
||||
---
|
||||
name: survey-monkey-automation
|
||||
description: "Automate SurveyMonkey tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: SurveyMonkey Automation
|
||||
description: "Automate SurveyMonkey survey creation, response collection, collector management, and survey discovery through natural language commands"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# SurveyMonkey Automation via Rube MCP
|
||||
# SurveyMonkey Automation
|
||||
|
||||
Automate SurveyMonkey operations through Composio's SurveyMonkey toolkit via Rube MCP.
|
||||
Automate SurveyMonkey survey workflows -- create surveys, list and search existing surveys, manage collectors and distribution links, retrieve responses, and inspect survey details -- all through natural language.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/survey_monkey](https://composio.dev/toolkits/survey_monkey)
|
||||
**Toolkit docs:** [composio.dev/toolkits/survey_monkey](https://composio.dev/toolkits/survey_monkey)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active SurveyMonkey connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `survey_monkey`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your environment: `https://rube.app/mcp`
|
||||
2. Connect your SurveyMonkey account when prompted (OAuth flow via Composio)
|
||||
3. Start issuing natural language commands for SurveyMonkey automation
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `survey_monkey`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Create a New Survey
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "SurveyMonkey operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Create a new empty survey that can be further configured with questions and pages.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `SURVEY_MONKEY_CREATE_SURVEY`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `title` -- survey title displayed to respondents (required)
|
||||
- `nickname` -- optional internal name for organizing surveys (not shown to respondents)
|
||||
- `language` -- ISO 639-1 language code (default `en`); examples: `es`, `fr`, `de`
|
||||
- `footer` -- whether to display SurveyMonkey branding footer (default `true`)
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
> The created survey starts with one empty page and no questions. Use the returned `survey_id` with other actions to add content and configure collectors.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific SurveyMonkey task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
Example prompt:
|
||||
> "Create a new survey titled 'Customer Satisfaction Q1 2026'"
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["survey_monkey"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
### 2. List and Search Surveys
|
||||
|
||||
### Step 3: Execute Tools
|
||||
Enumerate all surveys in your account with filtering, sorting, and pagination.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Tool:** `SURVEY_MONKEY_GET_SURVEYS`
|
||||
|
||||
Key parameters:
|
||||
- `title` -- search by survey title (partial match)
|
||||
- `sort_by` -- sort by `title`, `date_modified`, or `num_responses`
|
||||
- `sort_order` -- `ASC` or `DESC`
|
||||
- `page` / `per_page` -- pagination controls (default 50 per page, max 100)
|
||||
- `include` -- additional fields: `response_count`, `date_modified`, `date_created`, `question_count`, `page_count`, `category`, `language`, `folder_id`
|
||||
- `folder_id` -- filter to surveys in a specific folder
|
||||
- `start_modified_at` / `end_modified_at` -- date range filter (format: `YYYY-MM-DDTHH:MM:SS`)
|
||||
|
||||
Example prompt:
|
||||
> "List all my surveys sorted by most recent modification, include response counts"
|
||||
|
||||
---
|
||||
|
||||
### 3. Get Survey Details
|
||||
|
||||
Retrieve comprehensive metadata for a specific survey including configuration, question/page counts, response counts, and all relevant URLs.
|
||||
|
||||
**Tool:** `SURVEY_MONKEY_GET_SURVEY_DETAILS`
|
||||
|
||||
Key parameters:
|
||||
- `survey_id` -- the unique survey identifier (required)
|
||||
|
||||
Returns: title, language, question_count, page_count, response_count, URLs for preview/edit/analyze/collect, button text, and timestamps.
|
||||
|
||||
Example prompt:
|
||||
> "Show me the full details and response count for survey 123456789"
|
||||
|
||||
---
|
||||
|
||||
### 4. Manage Collectors and Distribution Links
|
||||
|
||||
Retrieve collectors (distribution channels) for a survey to get shareable links and monitor response progress.
|
||||
|
||||
**Tool:** `SURVEY_MONKEY_GET_COLLECTORS`
|
||||
|
||||
Key parameters:
|
||||
- `survey_id` -- the survey to get collectors for (required)
|
||||
- `include` -- additional fields: `type`, `status`, `response_count`, `date_created`, `date_modified`, `url`
|
||||
- `name` -- partial match filter on collector name
|
||||
- `sort_by` -- sort by `id`, `date_modified`, `type`, `status`, or `name`
|
||||
- `sort_order` -- `ASC` or `DESC`
|
||||
- `page` / `per_page` -- pagination (default 50, max 1000)
|
||||
- `start_date` / `end_date` -- filter by creation date (format: `YYYY-MM-DDTHH:MM:SS`)
|
||||
|
||||
Example prompt:
|
||||
> "Get all collectors for survey 123456789, include URLs and response counts"
|
||||
|
||||
---
|
||||
|
||||
### 5. Retrieve Survey Responses
|
||||
|
||||
Fetch response data for a specific survey with comprehensive filtering options.
|
||||
|
||||
**Tool:** `SURVEY_MONKEY_GET_RESPONSES`
|
||||
|
||||
Key parameters:
|
||||
- `survey_id` -- the survey to retrieve responses from (required)
|
||||
- `status` -- filter by `completed`, `partial`, `overquota`, or `disqualified`
|
||||
- `page` / `per_page` -- pagination (default 50, max 1000)
|
||||
- `sort_order` -- `ASC` or `DESC` (sorted by `date_modified`)
|
||||
- `start_created_at` / `end_created_at` -- filter by creation date range (ISO 8601)
|
||||
- `start_modified_at` / `end_modified_at` -- filter by modification date range
|
||||
- `email` -- filter by respondent email
|
||||
- `first_name` / `last_name` -- filter by respondent name
|
||||
- `ip` -- filter by IP address
|
||||
- `total_time_min` / `total_time_max` / `total_time_units` -- filter by completion time
|
||||
|
||||
Example prompt:
|
||||
> "Get all completed responses for survey 123456789 from the last 30 days"
|
||||
|
||||
---
|
||||
|
||||
### 6. Full Survey Lifecycle Workflow
|
||||
|
||||
Combine tools for end-to-end survey management:
|
||||
|
||||
1. **Create**: `SURVEY_MONKEY_CREATE_SURVEY` -- create the survey, store the `survey_id`
|
||||
2. **Distribute**: `SURVEY_MONKEY_GET_COLLECTORS` -- retrieve the collector link to share with respondents
|
||||
3. **Monitor**: `SURVEY_MONKEY_GET_SURVEY_DETAILS` -- check response counts and survey status
|
||||
4. **Collect**: `SURVEY_MONKEY_GET_RESPONSES` -- retrieve completed responses, filter by `status=completed`
|
||||
5. **Audit**: `SURVEY_MONKEY_GET_SURVEYS` -- browse and find surveys if `survey_id` is lost
|
||||
|
||||
Example prompt:
|
||||
> "Create a survey called 'Event Feedback', then show me how to distribute it"
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| Pagination required | `SURVEY_MONKEY_GET_COLLECTORS` and `SURVEY_MONKEY_GET_RESPONSES` require managing `page`/`per_page` for large surveys to avoid missing data |
|
||||
| Status filtering critical | `SURVEY_MONKEY_GET_RESPONSES` returns partial, overquota, and disqualified entries unless filtered -- use `status=completed` for reliable data |
|
||||
| No shareable link on create | `SURVEY_MONKEY_CREATE_SURVEY` does not create a distribution link -- use `SURVEY_MONKEY_GET_COLLECTORS` to get shareable URLs |
|
||||
| Survey ID storage | Losing track of `survey_id` forces reliance on `SURVEY_MONKEY_GET_SURVEYS` which is slower -- store IDs immediately after creation |
|
||||
| Question ID mapping | Question IDs and answer formats from responses must be carefully mapped; use `SURVEY_MONKEY_GET_SURVEY_DETAILS` to understand the structure |
|
||||
| Date format | Date filters use `YYYY-MM-DDTHH:MM:SS` format, not ISO 8601 with timezone |
|
||||
| Empty survey on create | New surveys start with one empty page and no questions -- further configuration is needed |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with SurveyMonkey-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `survey_monkey` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Key Params |
|
||||
|--------|-----------|------------|
|
||||
| Create survey | `SURVEY_MONKEY_CREATE_SURVEY` | `title`, `language`, `nickname` |
|
||||
| List surveys | `SURVEY_MONKEY_GET_SURVEYS` | `title`, `sort_by`, `include`, `page` |
|
||||
| Get survey details | `SURVEY_MONKEY_GET_SURVEY_DETAILS` | `survey_id` |
|
||||
| List collectors | `SURVEY_MONKEY_GET_COLLECTORS` | `survey_id`, `include`, `sort_by` |
|
||||
| Get responses | `SURVEY_MONKEY_GET_RESPONSES` | `survey_id`, `status`, `start_created_at` |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,157 @@
|
||||
---
|
||||
name: toggl-automation
|
||||
description: "Automate Toggl tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Toggl Automation
|
||||
description: "Automate time tracking workflows in Toggl Track -- create time entries, manage projects, clients, tags, and workspaces through natural language commands."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Toggl Automation via Rube MCP
|
||||
# Toggl Automation
|
||||
|
||||
Automate Toggl operations through Composio's Toggl toolkit via Rube MCP.
|
||||
Automate your Toggl Track time tracking operations directly from Claude Code. Log time, manage projects and clients, organize with tags, and control workspaces -- all without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/toggl](https://composio.dev/toolkits/toggl)
|
||||
**Toolkit docs:** [composio.dev/toolkits/toggl](https://composio.dev/toolkits/toggl)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Toggl connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `toggl`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your Claude Code config with URL: `https://rube.app/mcp`
|
||||
2. When prompted, authenticate your Toggl Track account through the connection link provided
|
||||
3. Start automating your time tracking workflows with natural language
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `toggl`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Create and Stop Time Entries
|
||||
|
||||
Log time with project, task, and tag associations, or start/stop timers.
|
||||
|
||||
**Tools:** `TOGGL_CREATE_TIME_ENTRY`, `TOGGL_PATCH_STOP_TIME_ENTRY`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Toggl operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Start a time entry in workspace 123456 for project 78910 tagged "meeting" and "design" with description "Design review session"
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Key parameters for `TOGGL_CREATE_TIME_ENTRY`:
|
||||
- `workspace_id` (required) -- target workspace
|
||||
- `created_with` (required) -- client application name (e.g., `"api_client"`)
|
||||
- `start` (required) -- ISO 8601 timestamp
|
||||
- `stop` -- ISO 8601 end time; omit to leave the entry running
|
||||
- `duration` -- duration in seconds; omit for running entries
|
||||
- `project_id` -- associate with a project
|
||||
- `task_id` -- associate with a task
|
||||
- `tags` -- array of tag name strings (not IDs)
|
||||
- `description` -- description of the work
|
||||
- `billable` -- billable status
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters for `TOGGL_PATCH_STOP_TIME_ENTRY`:
|
||||
- `workspace_id` (required) and `time_entry_id` (required)
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
### 2. Manage Projects
|
||||
|
||||
Create new projects and list existing ones with client details and pagination.
|
||||
|
||||
**Tools:** `TOGGL_CREATE_PROJECT`, `TOGGL_GET_PROJECTS`, `TOGGL_GET_PROJECT_DETAILS`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Toggl task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Create a private billable project called "Q1 Marketing Campaign" in workspace 123456 for client 78910
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
Key parameters for `TOGGL_CREATE_PROJECT`:
|
||||
- `workspace_id` (required) and `name` (required)
|
||||
- `client_id`, `billable`, `is_private`, `active`, `color`
|
||||
- `estimated_hours`, `rate`, `fixed_fee`, `currency` (premium features)
|
||||
|
||||
Key parameters for `TOGGL_GET_PROJECTS`:
|
||||
- `workspace_id` (required)
|
||||
- `page` / `page_size` (1-200) for pagination
|
||||
- `since` / `until` -- Unix timestamps for modification filtering (last 3 months only)
|
||||
- `clients: true` to include full client details
|
||||
|
||||
### 3. Manage Clients
|
||||
|
||||
Create and list clients within a workspace.
|
||||
|
||||
**Tools:** `TOGGL_CREATE_CLIENT`, `TOGGL_GET_LIST_CLIENTS`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["toggl"]
|
||||
session_id: "your_session_id"
|
||||
List all active clients in workspace 123456, then create a new client called "Acme Corp"
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
- `TOGGL_CREATE_CLIENT` requires `workspace_id` and `name`; accepts `notes`, `external_reference`
|
||||
- `TOGGL_GET_LIST_CLIENTS` requires `workspace_id`; supports `status` (`"active"`, `"archived"`, `"both"`) and `name` (case-insensitive search)
|
||||
|
||||
### 4. Tags and Workspace Preferences
|
||||
|
||||
Retrieve tags for categorization and check workspace settings.
|
||||
|
||||
**Tools:** `TOGGL_GET_TAGS`, `TOGGL_GET_WORKSPACE_PREFERENCES`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Show me all tags in workspace 123456 and the workspace preferences
|
||||
```
|
||||
|
||||
- `TOGGL_GET_TAGS` requires `workspace_id`; returns tag IDs and names
|
||||
- `TOGGL_GET_WORKSPACE_PREFERENCES` requires `workspace_id`; returns pricing plan and display settings
|
||||
|
||||
### 5. Workspace Discovery
|
||||
|
||||
List all workspaces the authenticated user belongs to.
|
||||
|
||||
**Tool:** `TOGGL_GET_USER_WORKSPACES`
|
||||
|
||||
```
|
||||
What Toggl workspaces do I have access to?
|
||||
```
|
||||
|
||||
- No parameters required
|
||||
- Returns all workspaces with IDs, names, and metadata
|
||||
- Use this first to discover workspace IDs for other operations
|
||||
|
||||
### 6. User Project Visibility
|
||||
|
||||
List projects visible to the authenticated user.
|
||||
|
||||
**Tool:** `TOGGL_GET_USER_PROJECTS`
|
||||
|
||||
```
|
||||
Show me all projects I can see across my workspaces
|
||||
```
|
||||
|
||||
- Returns projects the authenticated user has access to
|
||||
- Use alongside `TOGGL_GET_PROJECTS` for workspace-scoped views
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Tags use names, not IDs:** `TOGGL_CREATE_TIME_ENTRY` accepts tag names as strings in the `tags` array, unlike many APIs that use IDs. Use `TOGGL_GET_TAGS` to verify available tag names.
|
||||
- **`created_with` is required:** Every time entry must include `created_with` (e.g., `"api_client"`). Missing this field causes silent failures.
|
||||
- **Duration is in seconds:** The `duration` parameter on time entries is in seconds, not hours. 1 hour = 3600 seconds.
|
||||
- **`since` timestamp restriction:** The `since` filter on `TOGGL_GET_PROJECTS` only allows timestamps within the last 3 months. Older queries will be rejected.
|
||||
- **Premium features gated:** Custom colors, templates, fixed fees, and hourly rates on projects require a premium Toggl plan. Non-premium accounts will get errors when using these fields.
|
||||
- **Workspace ID required everywhere:** Nearly all Toggl tools require `workspace_id`. Always call `TOGGL_GET_USER_WORKSPACES` first to resolve it.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Toggl-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `toggl` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `TOGGL_CREATE_TIME_ENTRY` | Create a time entry or running timer (requires `workspace_id`, `created_with`, `start`) |
|
||||
| `TOGGL_PATCH_STOP_TIME_ENTRY` | Stop a running time entry (requires `workspace_id`, `time_entry_id`) |
|
||||
| `TOGGL_GET_PROJECTS` | List projects in a workspace with pagination |
|
||||
| `TOGGL_GET_PROJECT_DETAILS` | Get details for a specific project |
|
||||
| `TOGGL_CREATE_PROJECT` | Create a new project (requires `workspace_id`, `name`) |
|
||||
| `TOGGL_GET_LIST_CLIENTS` | List clients with status/name filters (requires `workspace_id`) |
|
||||
| `TOGGL_CREATE_CLIENT` | Create a new client (requires `workspace_id`, `name`) |
|
||||
| `TOGGL_GET_TAGS` | List all tags in a workspace (requires `workspace_id`) |
|
||||
| `TOGGL_GET_WORKSPACE_PREFERENCES` | Get workspace settings (requires `workspace_id`) |
|
||||
| `TOGGL_GET_USER_WORKSPACES` | List all workspaces for the authenticated user |
|
||||
| `TOGGL_GET_USER_PROJECTS` | List projects visible to the authenticated user |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,153 @@
|
||||
---
|
||||
name: uploadcare-automation
|
||||
description: "Automate Uploadcare tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Uploadcare Automation
|
||||
description: "Automate Uploadcare file management including listing, storing, inspecting, downloading, and organizing file groups through natural language commands"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Uploadcare Automation via Rube MCP
|
||||
# Uploadcare Automation
|
||||
|
||||
Automate Uploadcare operations through Composio's Uploadcare toolkit via Rube MCP.
|
||||
Automate Uploadcare file handling workflows -- list project files, permanently store uploads, retrieve file metadata, get download URLs, and manage file groups -- all through natural language.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/uploadcare](https://composio.dev/toolkits/uploadcare)
|
||||
**Toolkit docs:** [composio.dev/toolkits/uploadcare](https://composio.dev/toolkits/uploadcare)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Uploadcare connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `uploadcare`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your environment: `https://rube.app/mcp`
|
||||
2. Connect your Uploadcare account when prompted (API key auth via Composio)
|
||||
3. Start issuing natural language commands for Uploadcare automation
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `uploadcare`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. List Project Files
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Uploadcare operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Browse uploaded files in your Uploadcare project with filtering, sorting, and pagination.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `UPLOADCARE_LIST_FILES`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `stored` -- filter by storage status: `"true"` for stored, `"false"` for unstored
|
||||
- `removed` -- filter by removal status: `"true"` for removed, `"false"` for active
|
||||
- `ordering` -- sort by `datetime_uploaded` (ascending) or `-datetime_uploaded` (descending)
|
||||
- `limit` -- files per page, 1-1000 (default 100)
|
||||
- `offset` -- zero-based pagination offset
|
||||
- `from_date` -- ISO 8601 timestamp to filter files uploaded after this date
|
||||
- `to_date` -- ISO 8601 timestamp to filter files uploaded before this date
|
||||
- `include` -- set to `"total"` to include total file count in response
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Example prompt:
|
||||
> "List the 50 most recently uploaded stored files in my Uploadcare project"
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Uploadcare task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. Store a File Permanently
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["uploadcare"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Mark an uploaded file as permanently stored. By default, Uploadcare files are temporary and will be deleted after 24 hours unless stored.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tool:** `UPLOADCARE_STORE_FILE`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Key parameters:
|
||||
- `uuid` -- UUID of the file to store (required); must be in `8-4-4-4-12` hex format (e.g., `3e55317b-23d1-4f35-9b4c-b9accb7b53f4`)
|
||||
|
||||
> Always store files after upload to prevent automatic deletion.
|
||||
|
||||
Example prompt:
|
||||
> "Permanently store the file with UUID 3e55317b-23d1-4f35-9b4c-b9accb7b53f4"
|
||||
|
||||
---
|
||||
|
||||
### 3. Get File Metadata
|
||||
|
||||
Retrieve detailed information about a specific file including size, MIME type, CDN URL, image dimensions, and more.
|
||||
|
||||
**Tool:** `UPLOADCARE_GET_FILE_INFO`
|
||||
|
||||
Key parameters:
|
||||
- `uuid` -- the UUID of the file to inspect (required); format: `8-4-4-4-12` hex
|
||||
|
||||
Returns: filename, size, MIME type, CDN URL, upload date, storage status, image info (dimensions, color mode), and more.
|
||||
|
||||
Example prompt:
|
||||
> "Get the metadata and dimensions for file 3e0923f2-e05a-4b37-9f0d-343b981c9d70"
|
||||
|
||||
---
|
||||
|
||||
### 4. Get a Temporary Download URL
|
||||
|
||||
Retrieve a temporary direct download link for a specific file.
|
||||
|
||||
**Tool:** `UPLOADCARE_GET_FILE_DOWNLOAD_URL`
|
||||
|
||||
Key parameters:
|
||||
- `file_id` -- the unique file identifier (required)
|
||||
|
||||
Returns a time-limited URL that can be used for direct file download.
|
||||
|
||||
Example prompt:
|
||||
> "Get a download link for file 3e0923f2-e05a-4b37-9f0d-343b981c9d70"
|
||||
|
||||
---
|
||||
|
||||
### 5. Browse File Groups
|
||||
|
||||
List file groups in your project. Groups are collections of files uploaded together.
|
||||
|
||||
**Tool:** `UPLOADCARE_LIST_GROUPS`
|
||||
|
||||
Key parameters:
|
||||
- `limit` -- groups per page, 1-1000 (default 20)
|
||||
- `offset` -- zero-based pagination offset (default 0)
|
||||
- `ordering` -- sort by `datetime_created` (ascending) or `-datetime_created` (descending)
|
||||
|
||||
Example prompt:
|
||||
> "List my 10 most recent file groups"
|
||||
|
||||
---
|
||||
|
||||
### 6. File Lifecycle Workflow
|
||||
|
||||
Combine tools for end-to-end file management:
|
||||
|
||||
1. **Upload**: Files are uploaded via Uploadcare's upload API or widget (outside this toolkit)
|
||||
2. **Store**: `UPLOADCARE_STORE_FILE` -- mark files as permanent to prevent auto-deletion
|
||||
3. **Inspect**: `UPLOADCARE_GET_FILE_INFO` -- verify metadata, check dimensions and MIME type
|
||||
4. **Share**: `UPLOADCARE_GET_FILE_DOWNLOAD_URL` -- generate a temporary download link
|
||||
5. **Browse**: `UPLOADCARE_LIST_FILES` -- audit all files with status and date filters
|
||||
6. **Groups**: `UPLOADCARE_LIST_GROUPS` -- review batch uploads
|
||||
|
||||
Example prompt:
|
||||
> "Store file abc-123, then get its metadata and a download link"
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| Auto-deletion of unstored files | Uploaded files are temporary by default and deleted after 24 hours -- always call `UPLOADCARE_STORE_FILE` to persist them |
|
||||
| UUID format strict | File UUIDs must be in exact `8-4-4-4-12` hex format (e.g., `3e55317b-23d1-4f35-9b4c-b9accb7b53f4`); invalid formats will be rejected |
|
||||
| Filter values are strings | The `stored` and `removed` parameters accept string values `"true"` or `"false"`, not booleans |
|
||||
| Temporary download URLs | URLs from `UPLOADCARE_GET_FILE_DOWNLOAD_URL` are time-limited and will expire |
|
||||
| Pagination is offset-based | Use `offset` + `limit` for pagination; there are no cursor-based pagination tokens |
|
||||
| No upload tool | File uploads happen through Uploadcare's upload API or widget, not through this toolkit -- these tools manage already-uploaded files |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Uploadcare-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `uploadcare` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Key Params |
|
||||
|--------|-----------|------------|
|
||||
| List files | `UPLOADCARE_LIST_FILES` | `stored`, `ordering`, `limit`, `offset` |
|
||||
| Store file | `UPLOADCARE_STORE_FILE` | `uuid` |
|
||||
| Get file info | `UPLOADCARE_GET_FILE_INFO` | `uuid` |
|
||||
| Get download URL | `UPLOADCARE_GET_FILE_DOWNLOAD_URL` | `file_id` |
|
||||
| List groups | `UPLOADCARE_LIST_GROUPS` | `limit`, `offset`, `ordering` |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,40 @@
|
||||
---
|
||||
name: wave-accounting-automation
|
||||
description: "Automate Wave Accounting tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Wave Accounting Automation
|
||||
description: "Wave Accounting toolkit is not currently available as a native integration. No Wave-specific tools were found in the Composio platform. This skill is a placeholder pending future integration."
|
||||
category: accounting
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Wave Accounting Automation via Rube MCP
|
||||
# Wave Accounting Automation
|
||||
|
||||
Automate Wave Accounting operations through Composio's Wave Accounting toolkit via Rube MCP.
|
||||
> **Note:** The Wave Accounting toolkit (`wave_accounting`) does not currently have native tools available in the Composio platform. Searches for Wave Accounting-specific tools return results from other accounting/invoicing platforms (Stripe, Zoho Invoice) instead.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/wave_accounting](https://composio.dev/toolkits/wave_accounting)
|
||||
**Toolkit docs:** [composio.dev/toolkits/wave_accounting](https://composio.dev/toolkits/wave_accounting)
|
||||
|
||||
## Prerequisites
|
||||
---
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Wave Accounting connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `wave_accounting`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
## Status
|
||||
|
||||
This integration is **not yet available** with native Wave Accounting tools. When Wave Accounting tools become available in Composio, this skill file will be updated with real tool slugs, workflows, and pitfalls.
|
||||
|
||||
For accounting and invoicing automation needs, consider these alternatives that are available today:
|
||||
- **Stripe** -- Payment processing, invoicing, and subscription management
|
||||
- **Zoho Invoice** -- Invoice creation, payment tracking, and contact management
|
||||
- **QuickBooks** -- Full accounting suite with invoicing and expense tracking
|
||||
- **FreshBooks** -- Cloud accounting with time tracking and invoicing
|
||||
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `wave_accounting`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Wave Accounting operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Wave Accounting task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["wave_accounting"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Wave Accounting-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `wave_accounting` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
1. Add the Composio MCP server to your client configuration:
|
||||
```
|
||||
https://rube.app/mcp
|
||||
```
|
||||
2. Check back for Wave Accounting integration availability.
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,176 @@
|
||||
---
|
||||
name: webex-automation
|
||||
description: "Automate Webex tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Webex Automation
|
||||
description: "Automate Cisco Webex messaging, rooms, teams, webhooks, and people management through natural language commands"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Webex Automation via Rube MCP
|
||||
# Webex Automation
|
||||
|
||||
Automate Webex operations through Composio's Webex toolkit via Rube MCP.
|
||||
Automate Cisco Webex collaboration workflows -- send messages, manage rooms and teams, configure webhooks, and look up people -- all through natural language.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/webex](https://composio.dev/toolkits/webex)
|
||||
**Toolkit docs:** [composio.dev/toolkits/webex](https://composio.dev/toolkits/webex)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Webex connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `webex`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your environment: `https://rube.app/mcp`
|
||||
2. Connect your Webex account when prompted (OAuth flow via Composio)
|
||||
3. Start issuing natural language commands for Webex automation
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `webex`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Send a Message to a Room or Person
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Webex operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Post plain text, markdown, file attachments, or Adaptive Cards to any Webex room or directly to a person.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `WEBEX_MESSAGING_CREATE_MESSAGE`
|
||||
|
||||
## Core Workflow Pattern
|
||||
Key parameters:
|
||||
- `roomId` -- target room ID (use `WEBEX_MESSAGING_LIST_ROOMS` to find it)
|
||||
- `toPersonEmail` -- send a private 1:1 message instead (mutually exclusive with `roomId`)
|
||||
- `text` -- plain text content (max 7439 bytes)
|
||||
- `markdown` -- markdown-formatted content (takes precedence over `text`)
|
||||
- `files` -- list of public URLs for file attachments (one file per message)
|
||||
- `attachments` -- Adaptive Card JSON (one card per message)
|
||||
- `parentId` -- reply to a specific message as a threaded response
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Example prompt:
|
||||
> "Send a markdown message to room Y2lz... saying **Deploy completed** with a link to the release notes"
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Webex task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
---
|
||||
|
||||
### Step 2: Check Connection
|
||||
### 2. List and Discover Rooms
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["webex"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Browse all rooms you belong to, filtered by type, team, or sorted by activity.
|
||||
|
||||
### Step 3: Execute Tools
|
||||
**Tool:** `WEBEX_MESSAGING_LIST_ROOMS`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
Key parameters:
|
||||
- `type` -- filter by `direct` (1:1) or `group`
|
||||
- `teamId` -- limit to rooms in a specific team
|
||||
- `sortBy` -- sort by `id`, `lastactivity`, or `created`
|
||||
- `max` -- limit results (1-1000, default 100)
|
||||
|
||||
Follow-up with `WEBEX_MESSAGING_GET_ROOM_DETAILS` to get full metadata for a specific room including title, type, lock status, creator, and timestamps.
|
||||
|
||||
Example prompt:
|
||||
> "List my 10 most recently active group rooms in Webex"
|
||||
|
||||
---
|
||||
|
||||
### 3. Manage Webhooks for Event-Driven Automation
|
||||
|
||||
Create webhooks to receive real-time HTTP POST notifications when Webex resources change.
|
||||
|
||||
**Tool:** `WEBEX_WEBHOOKS_CREATE_WEBHOOK`
|
||||
|
||||
Key parameters:
|
||||
- `name` -- human-friendly webhook name (required)
|
||||
- `targetUrl` -- URL that receives POST notifications (required)
|
||||
- `resource` -- what to monitor: `messages`, `rooms`, `memberships`, `meetings`, `recordings`, `meetingParticipants`, `telephony_calls`, etc. (required)
|
||||
- `event` -- trigger type: `created`, `updated`, `deleted`, `started`, `ended`, `joined`, `left` (required)
|
||||
- `filter` -- scope notifications (e.g., `roomId=<id>` or `hostEmail=<email>`)
|
||||
- `secret` -- optional HMAC secret for payload signature verification
|
||||
- `ownedBy` -- `creator` for personal or `org` for organization-wide webhooks
|
||||
|
||||
Supporting tools:
|
||||
- `WEBEX_LIST_WEBHOOKS` -- list all registered webhooks with optional `max` and `ownedBy` filters
|
||||
- `WEBEX_WEBHOOKS_GET_WEBHOOK` -- inspect a specific webhook by `webhookId`
|
||||
|
||||
Example prompt:
|
||||
> "Create a webhook called 'New Messages' that POSTs to https://my-app.com/hook whenever a message is created in room Y2lz..."
|
||||
|
||||
---
|
||||
|
||||
### 4. Manage Team Memberships
|
||||
|
||||
Add people to Webex teams and optionally grant moderator privileges.
|
||||
|
||||
**Tool:** `WEBEX_MESSAGING_CREATE_TEAM_MEMBERSHIP`
|
||||
|
||||
Key parameters:
|
||||
- `teamId` -- the team to add the person to (required)
|
||||
- `personEmail` -- email of the person to add
|
||||
- `personId` -- Webex person ID (alternative to email)
|
||||
- `isModerator` -- set to `true` for moderator access (default `false`)
|
||||
|
||||
Use `WEBEX_LIST_TEAMS` to discover available teams first.
|
||||
|
||||
Example prompt:
|
||||
> "Add alice@example.com as a moderator to team Y2lz..."
|
||||
|
||||
---
|
||||
|
||||
### 5. Audit Room Memberships
|
||||
|
||||
Check who is in a room, verify a specific person's membership, or list memberships across teams.
|
||||
|
||||
**Tool:** `WEBEX_MESSAGING_LIST_MEMBERSHIPS`
|
||||
|
||||
Key parameters:
|
||||
- `roomId` -- list all members of a specific room
|
||||
- `personEmail` -- check if a person is a member (requires `roomId`)
|
||||
- `personId` -- check by Webex person ID (requires `roomId`)
|
||||
- `teamId` -- filter by team association
|
||||
- `max` -- limit results
|
||||
|
||||
Example prompt:
|
||||
> "List all members of room Y2lz... and tell me who the moderators are"
|
||||
|
||||
---
|
||||
|
||||
### 6. Search and Look Up People
|
||||
|
||||
Look up people in your Webex organization by email, display name, or ID.
|
||||
|
||||
**Tool:** `WEBEX_PEOPLE_LIST_PEOPLE`
|
||||
|
||||
Use to resolve names to person IDs before sending direct messages or adding team members.
|
||||
|
||||
Example prompt:
|
||||
> "Find the Webex person ID for bob@company.com"
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| Webhook auto-disable | Target URL must respond with HTTP 2xx; 100 failures in 5 minutes disables the webhook automatically |
|
||||
| Message size limit | Both `text` and `markdown` have a 7439-byte maximum |
|
||||
| One file per message | The `files` array accepts a list but only one attachment is actually supported per message |
|
||||
| One card per message | Only one Adaptive Card attachment is supported per message |
|
||||
| Mutually exclusive targets | `roomId` and `toPersonEmail`/`toPersonId` cannot be used together when sending messages |
|
||||
| Room update requires title | `WEBEX_UPDATE_ROOM` always requires the `title` parameter, even when only changing lock status or team |
|
||||
| orgPublicSpaces conflicts | Cannot combine `orgPublicSpaces` with `teamId`, `type`, or `sortBy` when listing rooms |
|
||||
| Webhook read scope | Creating a webhook requires `read` scope on the monitored resource type |
|
||||
| Membership filter requires roomId | `personEmail` and `personId` filters in list memberships require `roomId` unless you are a Compliance Officer |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Webex-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `webex` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Key Params |
|
||||
|--------|-----------|------------|
|
||||
| Send message | `WEBEX_MESSAGING_CREATE_MESSAGE` | `roomId`, `text`/`markdown`, `toPersonEmail` |
|
||||
| List rooms | `WEBEX_MESSAGING_LIST_ROOMS` | `type`, `sortBy`, `max` |
|
||||
| Get room details | `WEBEX_MESSAGING_GET_ROOM_DETAILS` | `roomId` |
|
||||
| Update room | `WEBEX_UPDATE_ROOM` | `roomId`, `title` |
|
||||
| Delete message | `WEBEX_MESSAGING_DELETE_MESSAGE` | `messageId` |
|
||||
| Get message details | `WEBEX_MESSAGING_GET_MESSAGE_DETAILS` | `messageId` |
|
||||
| Create webhook | `WEBEX_WEBHOOKS_CREATE_WEBHOOK` | `name`, `targetUrl`, `resource`, `event` |
|
||||
| List webhooks | `WEBEX_LIST_WEBHOOKS` | `max`, `ownedBy` |
|
||||
| Get webhook | `WEBEX_WEBHOOKS_GET_WEBHOOK` | `webhookId` |
|
||||
| Add team member | `WEBEX_MESSAGING_CREATE_TEAM_MEMBERSHIP` | `teamId`, `personEmail`, `isModerator` |
|
||||
| List memberships | `WEBEX_MESSAGING_LIST_MEMBERSHIPS` | `roomId`, `personEmail`, `max` |
|
||||
| List people | `WEBEX_PEOPLE_LIST_PEOPLE` | email, displayName, ID filters |
|
||||
| List teams | `WEBEX_LIST_TEAMS` | `max` |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,145 @@
|
||||
---
|
||||
name: workday-automation
|
||||
description: "Automate Workday tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Workday Automation
|
||||
description: "Automate HR operations in Workday -- manage workers, time off requests, absence balances, and employee data through natural language commands."
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Workday Automation via Rube MCP
|
||||
# Workday Automation
|
||||
|
||||
Automate Workday operations through Composio's Workday toolkit via Rube MCP.
|
||||
Automate your Workday HR operations directly from Claude Code. Look up workers, create time off requests, check absence balances, and validate time off eligibility -- all without leaving your terminal.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/workday](https://composio.dev/toolkits/workday)
|
||||
**Toolkit docs:** [composio.dev/toolkits/workday](https://composio.dev/toolkits/workday)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Workday connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `workday`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your Claude Code config with URL: `https://rube.app/mcp`
|
||||
2. When prompted, authenticate your Workday account through the connection link provided
|
||||
3. Start automating your HR workflows with natural language
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `workday`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Search and List Workers
|
||||
|
||||
Retrieve worker information with search and pagination.
|
||||
|
||||
**Tool:** `WORKDAY_LIST_WORKERS`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Workday operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Search for workers named "Sarah" and include terminated employees
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
Key parameters:
|
||||
- `search` -- search by name or worker ID (case-insensitive, space-delimited for OR search)
|
||||
- `includeTerminatedWorkers` -- include terminated workers in results
|
||||
- `limit` (default 20, max 100) / `offset` -- pagination controls
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Create Time Off Requests
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Submit time off requests for workers with full business process support.
|
||||
|
||||
**Tool:** `WORKDAY_CREATE_TIME_OFF_REQUEST`
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Workday task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Create a vacation request for worker abc123 for March 15-17, 2026 (8 hours each day)
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
Key parameters:
|
||||
- `ID` (required) -- Workday worker ID
|
||||
- `businessProcessParameters` (required) -- must include `action` with `id` field (use `"d9e4223e446c11de98360015c5e6daf6"` for submit action)
|
||||
- `days` (required) -- array of time off entries, each with:
|
||||
- `date` (required) -- date in `yyyy-mm-dd` format
|
||||
- `timeOffType` (required) -- object with `id` of the eligible absence type
|
||||
- `dailyQuantity` -- hours or days quantity
|
||||
- `comment`, `start`, `end`, `position`, `reason` -- optional fields
|
||||
- `businessProcessParameters.comment` -- optional business process comment
|
||||
|
||||
### 3. Check Time Off Eligibility
|
||||
|
||||
Validate which dates a worker can take off before submitting a request.
|
||||
|
||||
**Tool:** `WORKDAY_GET_WORKER_VALID_TIME_OFF_DATES`
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["workday"]
|
||||
session_id: "your_session_id"
|
||||
Check if worker abc123 is eligible to take time off on March 15, 2026
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
Key parameters:
|
||||
- `ID` (required) -- Workday worker ID
|
||||
- `date` -- specific date to validate (`yyyy-mm-dd`)
|
||||
- `position` -- filter by specific position ID
|
||||
- `timeOff` -- filter by specific time off plan/type ID
|
||||
- `limit` (max 100) / `offset` -- pagination
|
||||
|
||||
### 4. View Absence Balances
|
||||
|
||||
Check remaining time off balances for workers across all plans.
|
||||
|
||||
**Tool:** `WORKDAY_LIST_ABSENCE_BALANCES`
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Show me absence balances for all workers in the organization
|
||||
```
|
||||
|
||||
- Retrieves balances for time off plans and leave of absence types
|
||||
- Can be filtered by worker ID, category, and effective date
|
||||
|
||||
### 5. Get Current User Profile
|
||||
|
||||
Retrieve the authenticated worker's profile information.
|
||||
|
||||
**Tool:** `WORKDAY_GET_CURRENT_USER`
|
||||
|
||||
```
|
||||
Show me my Workday profile information
|
||||
```
|
||||
|
||||
- No parameters required
|
||||
- Returns the authenticated worker's profile
|
||||
- Use this first to get the worker ID for subsequent operations
|
||||
|
||||
### 6. View Time Off History
|
||||
|
||||
Retrieve time off details and history for a specific worker.
|
||||
|
||||
**Tool:** `WORKDAY_GET_WORKER_TIME_OFF_DETAILS`
|
||||
|
||||
```
|
||||
Show me the time off history for worker abc123
|
||||
```
|
||||
|
||||
- Retrieves a collection of time off details for the specified worker
|
||||
- Useful for auditing time off usage and remaining balances
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
- **Worker ID resolution:** Always call `WORKDAY_GET_CURRENT_USER` or `WORKDAY_LIST_WORKERS` first to resolve Workday worker IDs. Worker IDs are Workday-specific UUIDs, not employee numbers.
|
||||
- **Time off type IDs must be valid:** The `timeOffType.id` in `WORKDAY_CREATE_TIME_OFF_REQUEST` must reference a valid eligible absence type for that worker. Use the "Get Worker Eligible Absence Types" flow to discover valid type IDs.
|
||||
- **Submit action ID:** The `businessProcessParameters.action.id` should be `"d9e4223e446c11de98360015c5e6daf6"` for the submit action. Using an incorrect ID will cause the business process to fail.
|
||||
- **Date format:** All date fields use `yyyy-mm-dd` format. ISO 8601 with timestamps is not accepted for date-only fields.
|
||||
- **Pagination limits:** The maximum `limit` is 100 across all Workday endpoints. Default is 20. Always paginate for complete datasets.
|
||||
- **Business process approval:** Creating a time off request initiates the business process but does not guarantee approval. The request enters the normal approval workflow.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Workday-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `workday` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|---|---|
|
||||
| `WORKDAY_LIST_WORKERS` | Search and list workers with staffing info |
|
||||
| `WORKDAY_GET_CURRENT_USER` | Get the authenticated worker's profile |
|
||||
| `WORKDAY_CREATE_TIME_OFF_REQUEST` | Submit a time off request (requires `ID`, `businessProcessParameters`, `days`) |
|
||||
| `WORKDAY_GET_WORKER_VALID_TIME_OFF_DATES` | Check time off date eligibility (requires `ID`) |
|
||||
| `WORKDAY_LIST_ABSENCE_BALANCES` | Retrieve absence balances across time off plans |
|
||||
| `WORKDAY_GET_WORKER_TIME_OFF_DETAILS` | Get time off history for a worker |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,208 @@
|
||||
---
|
||||
name: xero-automation
|
||||
description: "Automate Xero tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Xero Automation
|
||||
description: "Xero Automation: manage invoices, contacts, payments, bank transactions, and accounts in Xero for cloud-based bookkeeping"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
---
|
||||
|
||||
# Xero Automation via Rube MCP
|
||||
# Xero Automation
|
||||
|
||||
Automate Xero operations through Composio's Xero toolkit via Rube MCP.
|
||||
Automate Xero accounting operations including managing invoices, contacts, payments, bank transactions, and chart of accounts for small business bookkeeping.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/xero](https://composio.dev/toolkits/xero)
|
||||
**Toolkit docs:** [composio.dev/toolkits/xero](https://composio.dev/toolkits/xero)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Xero connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `xero`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
This skill requires the **Rube MCP server** connected at `https://rube.app/mcp`.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `xero`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
Before executing any tools, ensure an active connection exists for the `xero` toolkit. If no connection is active, initiate one via `RUBE_MANAGE_CONNECTIONS`.
|
||||
|
||||
## Tool Discovery
|
||||
**Multi-tenant:** If you manage multiple Xero organizations, first call `XERO_GET_CONNECTIONS` to list active tenants and obtain the correct `tenant_id` for subsequent calls.
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
---
|
||||
|
||||
## Core Workflows
|
||||
|
||||
### 1. List and Filter Invoices
|
||||
|
||||
Retrieve invoices with filtering by status, contact, date range, and pagination.
|
||||
|
||||
**Tool:** `XERO_LIST_INVOICES`
|
||||
|
||||
**Key Parameters:**
|
||||
- `Statuses` -- Comma-separated status filter: `"DRAFT"`, `"SUBMITTED"`, `"AUTHORISED"`, `"PAID"`
|
||||
- `ContactIDs` -- Comma-separated Contact IDs to filter by
|
||||
- `InvoiceIDs` -- Comma-separated Invoice IDs to filter by
|
||||
- `where` -- OData-style filter, e.g., `"Status==\"AUTHORISED\" AND Total>100"`
|
||||
- `order` -- Sort expression, e.g., `"Date DESC"`, `"InvoiceNumber ASC"`
|
||||
- `page` -- Page number for pagination
|
||||
- `If-Modified-Since` -- UTC timestamp; returns only invoices modified since this date
|
||||
- `tenant_id` -- Xero organization ID (uses first tenant if omitted)
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Xero operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
Tool: XERO_LIST_INVOICES
|
||||
Arguments:
|
||||
Statuses: "AUTHORISED,PAID"
|
||||
order: "Date DESC"
|
||||
page: 1
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
---
|
||||
|
||||
## Core Workflow Pattern
|
||||
### 2. Manage Contacts
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
Retrieve and search contacts for use in invoices and transactions.
|
||||
|
||||
**Tool:** `XERO_GET_CONTACTS`
|
||||
|
||||
**Key Parameters:**
|
||||
- `searchTerm` -- Case-insensitive search across Name, FirstName, LastName, Email, ContactNumber
|
||||
- `ContactID` -- Fetch a single contact by ID
|
||||
- `where` -- OData filter, e.g., `"ContactStatus==\"ACTIVE\""`
|
||||
- `page`, `pageSize` -- Pagination controls
|
||||
- `order` -- Sort, e.g., `"UpdatedDateUTC DESC"`
|
||||
- `includeArchived` -- Include archived contacts when `true`
|
||||
- `summaryOnly` -- Lightweight response when `true`
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Xero task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
Tool: XERO_GET_CONTACTS
|
||||
Arguments:
|
||||
searchTerm: "acme"
|
||||
page: 1
|
||||
pageSize: 25
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
> **Note:** On high-volume accounts, some `where` filters (e.g., `IsCustomer`, `IsSupplier`) may be rejected by Xero. Fall back to `searchTerm` or pagination.
|
||||
|
||||
---
|
||||
|
||||
### 3. Create Payments
|
||||
|
||||
Link an invoice to a bank account by creating a payment record.
|
||||
|
||||
**Tool:** `XERO_CREATE_PAYMENT`
|
||||
|
||||
**Key Parameters:**
|
||||
- `InvoiceID` (required) -- Xero Invoice ID the payment applies to
|
||||
- `AccountID` (required) -- Bank account ID for the payment
|
||||
- `Amount` (required) -- Payment amount (number)
|
||||
- `Date` -- Payment date in `YYYY-MM-DD` format
|
||||
- `Reference` -- Payment reference or description
|
||||
- `CurrencyRate` -- Exchange rate for foreign currency payments
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["xero"]
|
||||
session_id: "your_session_id"
|
||||
Tool: XERO_CREATE_PAYMENT
|
||||
Arguments:
|
||||
InvoiceID: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
|
||||
AccountID: "b2c3d4e5-f6a7-8901-bcde-f12345678901"
|
||||
Amount: 1500.00
|
||||
Date: "2026-02-11"
|
||||
Reference: "Payment for INV-0042"
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
---
|
||||
|
||||
### 4. Create Bank Transactions
|
||||
|
||||
Record spend (payments out) or receive (money in) bank transactions.
|
||||
|
||||
**Tool:** `XERO_CREATE_BANK_TRANSACTION`
|
||||
|
||||
**Key Parameters:**
|
||||
- `Type` (required) -- `"SPEND"` (payment out) or `"RECEIVE"` (money in)
|
||||
- `ContactID` (required) -- Xero Contact ID
|
||||
- `BankAccountCode` (required) -- Bank account code from chart of accounts
|
||||
- `LineItems` (required) -- Array of line items, each with:
|
||||
- `Description` (required) -- Line item description
|
||||
- `UnitAmount` (required) -- Unit price
|
||||
- `AccountCode` (required) -- Account code for categorization
|
||||
- `Quantity` -- Quantity (default 1)
|
||||
- `TaxType` -- Tax type: `"OUTPUT"`, `"INPUT"`, `"NONE"`
|
||||
- `Date` -- Transaction date in `YYYY-MM-DD` format
|
||||
- `Reference` -- Transaction reference
|
||||
- `Status` -- `"AUTHORISED"` or `"DELETED"`
|
||||
- `CurrencyCode` -- e.g., `"USD"`, `"EUR"`
|
||||
|
||||
**Example:**
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
Tool: XERO_CREATE_BANK_TRANSACTION
|
||||
Arguments:
|
||||
Type: "SPEND"
|
||||
ContactID: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
|
||||
BankAccountCode: "090"
|
||||
LineItems: [
|
||||
{
|
||||
"Description": "Office supplies",
|
||||
"UnitAmount": 75.00,
|
||||
"AccountCode": "429",
|
||||
"Quantity": 1,
|
||||
"TaxType": "INPUT"
|
||||
}
|
||||
]
|
||||
Date: "2026-02-11"
|
||||
Reference: "Feb office supplies"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5. List Payments and Bank Transactions
|
||||
|
||||
Review existing payments and bank transaction history.
|
||||
|
||||
**Tools:**
|
||||
- `XERO_LIST_PAYMENTS` -- List payments linking invoices to bank transactions
|
||||
- `XERO_LIST_BANK_TRANSACTIONS` -- List spend/receive bank transactions
|
||||
|
||||
**Common Parameters:**
|
||||
- `where` -- OData filter, e.g., `"Status==\"AUTHORISED\""`
|
||||
- `order` -- Sort expression, e.g., `"Date DESC"`
|
||||
- `page` -- Page number for pagination
|
||||
- `If-Modified-Since` -- Incremental updates since timestamp
|
||||
- `tenant_id` -- Organization ID
|
||||
|
||||
---
|
||||
|
||||
### 6. View Chart of Accounts and Connections
|
||||
|
||||
**Tools:**
|
||||
- `XERO_LIST_ACCOUNTS` -- Retrieve all account codes for categorizing transactions
|
||||
- `XERO_GET_CONNECTIONS` -- List active Xero tenant connections
|
||||
- `XERO_LIST_ATTACHMENTS` -- List attachments on an entity (invoice, contact, etc.)
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Detail |
|
||||
|---------|--------|
|
||||
| **Multi-tenant routing** | If `tenant_id` is omitted, the first connected tenant is used. Always verify the correct tenant with `XERO_GET_CONNECTIONS` when managing multiple organizations. |
|
||||
| **High-volume filter rejection** | On large accounts, some `where` filters like `IsCustomer`/`IsSupplier` may be rejected. Fall back to `searchTerm` with pagination. |
|
||||
| **OData filter syntax** | Use double-equals (`==`) in OData filters, e.g., `Status==\"AUTHORISED\"`. Single `=` causes errors. |
|
||||
| **Pagination required** | Most list endpoints paginate results. Always check for additional pages and continue fetching until complete. |
|
||||
| **Date format** | All dates must be in `YYYY-MM-DD` format. Timestamps for `If-Modified-Since` must be full ISO 8601 UTC datetime. |
|
||||
| **Bank account codes** | `BankAccountCode` in bank transactions must match a valid code from the chart of accounts. Use `XERO_LIST_ACCOUNTS` to discover valid codes. |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Xero-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `xero` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Tool Slug | Description |
|
||||
|-----------|-------------|
|
||||
| `XERO_LIST_INVOICES` | List invoices with filtering and pagination |
|
||||
| `XERO_GET_CONTACTS` | Retrieve and search contacts |
|
||||
| `XERO_CREATE_PAYMENT` | Create a payment linking invoice to bank account |
|
||||
| `XERO_CREATE_BANK_TRANSACTION` | Record a spend or receive bank transaction |
|
||||
| `XERO_LIST_PAYMENTS` | List payment records |
|
||||
| `XERO_LIST_BANK_TRANSACTIONS` | List bank transactions |
|
||||
| `XERO_LIST_ACCOUNTS` | Retrieve chart of accounts |
|
||||
| `XERO_GET_CONNECTIONS` | List active Xero tenant connections |
|
||||
| `XERO_LIST_ATTACHMENTS` | List attachments on an entity |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,200 @@
|
||||
---
|
||||
name: zoho-books-automation
|
||||
description: "Automate Zoho Books tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Zoho Books Automation
|
||||
description: "Automate Zoho Books accounting workflows including invoice creation, bill management, contact lookup, payment tracking, and multi-organization support through natural language commands"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Zoho Books Automation via Rube MCP
|
||||
# Zoho Books Automation
|
||||
|
||||
Automate Zoho Books operations through Composio's Zoho Books toolkit via Rube MCP.
|
||||
Automate Zoho Books accounting workflows -- create and manage invoices, track bills and payments, look up contacts, export PDFs, and handle multi-organization setups -- all through natural language.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/zoho_books](https://composio.dev/toolkits/zoho_books)
|
||||
**Toolkit docs:** [composio.dev/toolkits/zoho_books](https://composio.dev/toolkits/zoho_books)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Zoho Books connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `zoho_books`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
1. Add the Rube MCP server to your environment: `https://rube.app/mcp`
|
||||
2. Connect your Zoho Books account when prompted (OAuth flow via Composio)
|
||||
3. Start issuing natural language commands for Zoho Books automation
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `zoho_books`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
---
|
||||
|
||||
## Tool Discovery
|
||||
## Core Workflows
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
### 1. Discover Organizations
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Zoho Books operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
Retrieve all organizations for the authenticated user. This is a prerequisite since `organization_id` is required by nearly every other endpoint.
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
**Tool:** `ZOHO_BOOKS_LIST_ORGANIZATIONS`
|
||||
|
||||
## Core Workflow Pattern
|
||||
No parameters required. Returns organization IDs, names, and metadata.
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
> Always call this first to obtain the `organization_id` needed by all other Zoho Books tools.
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Zoho Books task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
Example prompt:
|
||||
> "List my Zoho Books organizations"
|
||||
|
||||
### Step 2: Check Connection
|
||||
---
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["zoho_books"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
### 2. Create and Manage Invoices
|
||||
|
||||
### Step 3: Execute Tools
|
||||
Create invoices with line items, manage existing invoices, and export them as PDFs.
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
**Create:** `ZOHO_BOOKS_CREATE_INVOICE`
|
||||
|
||||
Key parameters:
|
||||
- `organization_id` -- target organization (required)
|
||||
- `customer_id` -- customer to bill (required)
|
||||
- `line_items` -- array of line items (required), each with:
|
||||
- `item_id` or `name` -- reference existing item or create ad-hoc line
|
||||
- `quantity`, `rate` -- amount details
|
||||
- `description`, `tax_id`, `discount` -- optional details
|
||||
- `date` / `due_date` -- dates in `YYYY-MM-DD` format
|
||||
- `invoice_number` -- custom number (set `ignore_auto_number_generation=true`)
|
||||
- `discount` / `discount_type` -- invoice-level discount (`entity_level` or `item_level`)
|
||||
- `notes` / `terms` -- printed on the invoice
|
||||
- `send` -- email the invoice immediately after creation
|
||||
- `payment_terms` -- number of days for payment
|
||||
|
||||
**List:** `ZOHO_BOOKS_LIST_INVOICES`
|
||||
|
||||
Key parameters:
|
||||
- `organization_id` (required)
|
||||
- `status` -- `sent`, `draft`, `overdue`, `paid`, `void`, `unpaid`, `partially_paid`, `viewed`
|
||||
- `customer_id` / `customer_name` -- filter by customer
|
||||
- `date_start` / `date_end` -- date range filter (`YYYY-MM-DD`)
|
||||
- `search_text` -- search invoice number, reference, or customer name
|
||||
- `sort_column` / `sort_order` -- sort by `date`, `due_date`, `total`, `balance`, etc.
|
||||
- `page` / `per_page` -- pagination (max 200 per page)
|
||||
|
||||
**Get details:** `ZOHO_BOOKS_GET_INVOICE` -- fetch by `invoice_id` with `accept` format: `json`, `pdf`, or `html`
|
||||
|
||||
**Delete:** `ZOHO_BOOKS_DELETE_INVOICE` -- remove by `invoice_id`
|
||||
|
||||
**Bulk export:** `ZOHO_BOOKS_BULK_EXPORT_INVOICES_PDF` -- merge up to 25 invoices into a single PDF
|
||||
|
||||
**Bulk print:** `ZOHO_BOOKS_BULK_PRINT_INVOICES` -- generate a combined print-ready PDF for up to 25 invoices
|
||||
|
||||
Example prompt:
|
||||
> "Create an invoice for customer 1234567890 with 2 line items: 10 units of Widget A at $25 each, and 5 units of Widget B at $50 each, due in 30 days"
|
||||
|
||||
---
|
||||
|
||||
### 3. Track and Manage Bills
|
||||
|
||||
List, view, and update vendor bills with comprehensive filtering.
|
||||
|
||||
**List:** `ZOHO_BOOKS_LIST_BILLS`
|
||||
|
||||
Key parameters:
|
||||
- `organization_id` (required)
|
||||
- `status` -- `paid`, `open`, `overdue`, `void`, `partially_paid`
|
||||
- `vendor_id` / `vendor_name_contains` -- filter by vendor
|
||||
- `bill_number` / `bill_number_contains` -- filter by bill number
|
||||
- `date_start` / `date_end` -- date range filter
|
||||
- `total_greater_than` / `total_less_than` -- amount range filters
|
||||
- `sort_column` / `sort_order` -- sort by `vendor_name`, `bill_number`, `date`, `due_date`, `total`, etc.
|
||||
- `page` / `per_page` -- pagination (max 200)
|
||||
|
||||
**Get details:** `ZOHO_BOOKS_GET_BILL` -- fetch full bill by `bill_id` and `organization_id`
|
||||
|
||||
**Update:** `ZOHO_BOOKS_UPDATE_BILL` -- modify existing bill (requires `bill_id`, `organization_id`, `vendor_id`, `bill_number`)
|
||||
|
||||
Example prompt:
|
||||
> "List all overdue bills for my organization, sorted by due date"
|
||||
|
||||
---
|
||||
|
||||
### 4. Look Up Contacts
|
||||
|
||||
Search and filter contacts (customers and vendors) for use in invoices and bills.
|
||||
|
||||
**Tool:** `ZOHO_BOOKS_LIST_CONTACTS`
|
||||
|
||||
Key parameters:
|
||||
- `organization_id` (required)
|
||||
- `contact_type` -- `customer` or `vendor`
|
||||
- `contact_name_contains` / `contact_name_startswith` -- name filters
|
||||
- `email_contains` / `email_startswith` -- email filters
|
||||
- `company_name_contains` -- company name filter
|
||||
- `filter_by` -- status filter: `Status.Active`, `Status.Inactive`, `Status.Duplicate`, etc.
|
||||
- `search_text` -- search by contact name or notes (max 100 chars)
|
||||
- `sort_column` -- sort by `contact_name`, `email`, `outstanding_receivable_amount`, `created_time`, etc.
|
||||
- `page` / `per_page` -- pagination (max 200)
|
||||
|
||||
Example prompt:
|
||||
> "Find all active customers whose company name contains 'Acme'"
|
||||
|
||||
---
|
||||
|
||||
### 5. Track Invoice Payments
|
||||
|
||||
List all payments recorded against a specific invoice.
|
||||
|
||||
**Tool:** `ZOHO_BOOKS_LIST_INVOICE_PAYMENTS`
|
||||
|
||||
Key parameters:
|
||||
- `invoice_id` -- the invoice to check (required)
|
||||
- `organization_id` -- the organization (required)
|
||||
|
||||
Returns all payment transactions applied to the invoice including amounts, dates, and payment methods.
|
||||
|
||||
Example prompt:
|
||||
> "Show all payments recorded against invoice 451025000000123045"
|
||||
|
||||
---
|
||||
|
||||
### 6. Full Invoicing Workflow
|
||||
|
||||
Combine tools for end-to-end invoice management:
|
||||
|
||||
1. **Organization**: `ZOHO_BOOKS_LIST_ORGANIZATIONS` -- get `organization_id`
|
||||
2. **Contacts**: `ZOHO_BOOKS_LIST_CONTACTS` -- find or verify `customer_id`
|
||||
3. **Create**: `ZOHO_BOOKS_CREATE_INVOICE` -- create invoice with line items
|
||||
4. **Review**: `ZOHO_BOOKS_GET_INVOICE` -- fetch invoice details or PDF
|
||||
5. **Track**: `ZOHO_BOOKS_LIST_INVOICE_PAYMENTS` -- monitor payment status
|
||||
6. **Export**: `ZOHO_BOOKS_BULK_EXPORT_INVOICES_PDF` -- batch export for records
|
||||
|
||||
Example prompt:
|
||||
> "Find the customer ID for 'Acme Corp', create an invoice for them with consulting services, and then get the PDF"
|
||||
|
||||
---
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
| Pitfall | Details |
|
||||
|---------|---------|
|
||||
| Organization ID always required | Nearly every endpoint requires `organization_id` -- always call `ZOHO_BOOKS_LIST_ORGANIZATIONS` first |
|
||||
| Line items required for invoices | `ZOHO_BOOKS_CREATE_INVOICE` requires at least one line item with either `item_id` or `name` |
|
||||
| Invoice ID format | Use the numeric `invoice_id` from the invoice object (e.g., `7472322000000264123`), not the encoded ID from `invoice_url` |
|
||||
| Bulk limits | Both `ZOHO_BOOKS_BULK_EXPORT_INVOICES_PDF` and `ZOHO_BOOKS_BULK_PRINT_INVOICES` accept a maximum of 25 invoice IDs |
|
||||
| Pagination max 200 | All list endpoints cap at 200 records per page -- iterate pages for complete results |
|
||||
| Bill update requires all fields | `ZOHO_BOOKS_UPDATE_BILL` requires `bill_id`, `organization_id`, `vendor_id`, and `bill_number` even for partial updates |
|
||||
| Date format | All date parameters use `YYYY-MM-DD` format |
|
||||
| response_option undocumented | `ZOHO_BOOKS_LIST_INVOICES` has an undocumented `response_option` parameter (0=full, 1=full+totals, 2=counts only) that may change without notice |
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Zoho Books-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `zoho_books` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
| Action | Tool Slug | Key Params |
|
||||
|--------|-----------|------------|
|
||||
| List organizations | `ZOHO_BOOKS_LIST_ORGANIZATIONS` | (none) |
|
||||
| Create invoice | `ZOHO_BOOKS_CREATE_INVOICE` | `organization_id`, `customer_id`, `line_items` |
|
||||
| List invoices | `ZOHO_BOOKS_LIST_INVOICES` | `organization_id`, `status`, `date_start` |
|
||||
| Get invoice | `ZOHO_BOOKS_GET_INVOICE` | `invoice_id`, `organization_id`, `accept` |
|
||||
| Delete invoice | `ZOHO_BOOKS_DELETE_INVOICE` | `invoice_id`, `organization_id` |
|
||||
| Bulk export PDF | `ZOHO_BOOKS_BULK_EXPORT_INVOICES_PDF` | `organization_id`, `invoice_ids` |
|
||||
| Bulk print | `ZOHO_BOOKS_BULK_PRINT_INVOICES` | `organization_id`, `invoice_ids` |
|
||||
| List bills | `ZOHO_BOOKS_LIST_BILLS` | `organization_id`, `status`, `vendor_id` |
|
||||
| Get bill | `ZOHO_BOOKS_GET_BILL` | `bill_id`, `organization_id` |
|
||||
| Update bill | `ZOHO_BOOKS_UPDATE_BILL` | `bill_id`, `organization_id`, `vendor_id` |
|
||||
| List contacts | `ZOHO_BOOKS_LIST_CONTACTS` | `organization_id`, `contact_type`, `search_text` |
|
||||
| List payments | `ZOHO_BOOKS_LIST_INVOICE_PAYMENTS` | `invoice_id`, `organization_id` |
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
@@ -1,91 +1,57 @@
|
||||
---
|
||||
name: zoho-desk-automation
|
||||
description: "Automate Zoho Desk tasks via Rube MCP (Composio). Always search tools first for current schemas."
|
||||
name: Zoho Desk Automation
|
||||
description: "Zoho Desk automation via Rube MCP -- toolkit not currently available in Composio; no ZOHO_DESK_ tools found"
|
||||
requires:
|
||||
mcp: [rube]
|
||||
mcp:
|
||||
- rube
|
||||
---
|
||||
|
||||
# Zoho Desk Automation via Rube MCP
|
||||
# Zoho Desk Automation
|
||||
|
||||
Automate Zoho Desk operations through Composio's Zoho Desk toolkit via Rube MCP.
|
||||
> **Status: Toolkit Not Available** -- RUBE_SEARCH_TOOLS returned no `zoho_desk`-specific tools. The Zoho Desk toolkit is not currently available in Composio's tool catalog. Searches returned tools from unrelated helpdesk and CRM toolkits instead.
|
||||
|
||||
**Toolkit docs**: [composio.dev/toolkits/zoho_desk](https://composio.dev/toolkits/zoho_desk)
|
||||
**Toolkit docs:** [composio.dev/toolkits/zoho_desk](https://composio.dev/toolkits/zoho_desk)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
||||
- Active Zoho Desk connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `zoho_desk`
|
||||
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
|
||||
|
||||
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
||||
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `zoho_desk`
|
||||
3. If connection is not ACTIVE, follow the returned auth link to complete setup
|
||||
4. Confirm connection status shows ACTIVE before running any workflows
|
||||
|
||||
## Tool Discovery
|
||||
|
||||
Always discover available tools before executing workflows:
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "Zoho Desk operations", known_fields: ""}]
|
||||
session: {generate_id: true}
|
||||
```
|
||||
|
||||
This returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.
|
||||
|
||||
## Core Workflow Pattern
|
||||
|
||||
### Step 1: Discover Available Tools
|
||||
|
||||
```
|
||||
RUBE_SEARCH_TOOLS
|
||||
queries: [{use_case: "your specific Zoho Desk task"}]
|
||||
session: {id: "existing_session_id"}
|
||||
```
|
||||
|
||||
### Step 2: Check Connection
|
||||
|
||||
```
|
||||
RUBE_MANAGE_CONNECTIONS
|
||||
toolkits: ["zoho_desk"]
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
|
||||
### Step 3: Execute Tools
|
||||
|
||||
```
|
||||
RUBE_MULTI_EXECUTE_TOOL
|
||||
tools: [{
|
||||
tool_slug: "TOOL_SLUG_FROM_SEARCH",
|
||||
arguments: {/* schema-compliant args from search results */}
|
||||
}]
|
||||
memory: {}
|
||||
session_id: "your_session_id"
|
||||
```
|
||||
|
||||
## Known Pitfalls
|
||||
|
||||
- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`
|
||||
- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools
|
||||
- **Schema compliance**: Use exact field names and types from the search results
|
||||
- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)
|
||||
- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows
|
||||
- **Pagination**: Check responses for pagination tokens and continue fetching until complete
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Operation | Approach |
|
||||
|-----------|----------|
|
||||
| Find tools | `RUBE_SEARCH_TOOLS` with Zoho Desk-specific use case |
|
||||
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `zoho_desk` |
|
||||
| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |
|
||||
| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |
|
||||
| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |
|
||||
1. Add the Rube MCP server to your environment: `https://rube.app/mcp`
|
||||
2. Check availability by calling `RUBE_SEARCH_TOOLS` with Zoho Desk-related queries
|
||||
3. If `ZOHO_DESK_*` tools appear in the future, connect via `RUBE_MANAGE_CONNECTIONS` with toolkit `zoho_desk`
|
||||
|
||||
---
|
||||
|
||||
## Current Status
|
||||
|
||||
As of the last tool discovery scan, no `ZOHO_DESK_*` tool slugs were returned by RUBE_SEARCH_TOOLS. Queries for Zoho Desk ticket management, contacts, agents, and departments all returned tools from other toolkits:
|
||||
|
||||
- Ticket creation queries returned **Freshdesk** (`FRESHDESK_CREATE_TICKET`), **HubSpot** (`HUBSPOT_CREATE_TICKET`), and **Zendesk** (`ZENDESK_CREATE_ZENDESK_TICKET`) tools
|
||||
- Contact listing queries returned **Zoho Invoice** (`ZOHO_INVOICE_LIST_CONTACTS`) tools
|
||||
- Agent/department queries returned **Zoho CRM** (`ZOHO_GET_ZOHO_USERS`) tools
|
||||
|
||||
This indicates the `zoho_desk` toolkit either has no tools registered or is not yet integrated into the Composio platform.
|
||||
|
||||
---
|
||||
|
||||
## Alternatives
|
||||
|
||||
If you need helpdesk and support ticket automation, consider these available toolkits:
|
||||
|
||||
| Need | Alternative Toolkit | Example Tools |
|
||||
|------|-------------------|---------------|
|
||||
| Ticket management | Freshdesk | `FRESHDESK_CREATE_TICKET`, `FRESHDESK_UPDATE_TICKET` |
|
||||
| Ticket management | Zendesk | `ZENDESK_CREATE_ZENDESK_TICKET` |
|
||||
| Ticket management | HubSpot | `HUBSPOT_CREATE_TICKET`, `HUBSPOT_LIST_TICKETS` |
|
||||
| CRM records | Zoho CRM | `ZOHO_CREATE_ZOHO_RECORD`, `ZOHO_GET_ZOHO_USERS` |
|
||||
| Contact management | Zoho Invoice | `ZOHO_INVOICE_LIST_CONTACTS` |
|
||||
|
||||
---
|
||||
|
||||
## When Tools Become Available
|
||||
|
||||
Once Zoho Desk tools are added to Composio, this skill should be updated with real tool slugs, schemas, and pitfalls following the same pattern as other automation skills in this collection.
|
||||
|
||||
---
|
||||
|
||||
*Powered by [Composio](https://composio.dev)*
|
||||
|
||||
Reference in New Issue
Block a user