home / skills / composiohq / awesome-claude-skills / affinda-automation

affinda-automation skill

/affinda-automation

This skill automates Affinda tasks via Rube MCP, always discovering current tool schemas before execution to ensure accuracy and adaptability.

npx playbooks add skill composiohq/awesome-claude-skills --skill affinda-automation

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
2.9 KB
---
name: affinda-automation
description: "Automate Affinda tasks via Rube MCP (Composio). Always search tools first for current schemas."
requires:
  mcp: [rube]
---

# Affinda Automation via Rube MCP

Automate Affinda operations through Composio's Affinda toolkit via Rube MCP.

**Toolkit docs**: [composio.dev/toolkits/affinda](https://composio.dev/toolkits/affinda)

## Prerequisites

- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Affinda connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `affinda`
- 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 `affinda`
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: "Affinda 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 Affinda task"}]
session: {id: "existing_session_id"}
```

### Step 2: Check Connection

```
RUBE_MANAGE_CONNECTIONS
toolkits: ["affinda"]
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 Affinda-specific use case |
| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `affinda` |
| 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` |

---
*Powered by [Composio](https://composio.dev)*

Overview

This skill automates Affinda tasks by orchestrating Composio’s Affinda toolkit through a Rube MCP endpoint. It provides a repeatable pattern for discovering tools, validating connections, and executing schema-compliant workflows. The guide emphasizes always searching tools first, managing connections, and handling session and memory parameters correctly.

How this skill works

The skill inspects the Rube MCP tool registry via RUBE_SEARCH_TOOLS to fetch current tool slugs, input schemas, and recommended execution plans. It then validates an active Affinda connection with RUBE_MANAGE_CONNECTIONS and runs actions via RUBE_MULTI_EXECUTE_TOOL (or RUBE_REMOTE_WORKBENCH for bulk jobs), always passing the memory and a session id. It enforces schema compliance, session reuse within a workflow, and pagination handling for full results.

When to use it

  • Automate document extraction, classification, or Affinda processing at scale.
  • Integrate Affinda capabilities into multi-step agent workflows managed by Rube MCP.
  • Run bulk or scheduled Affinda jobs while preserving session context and memory.
  • When tool schemas may change and you need dynamic discovery before execution.
  • When you require a single control plane (Rube MCP) for multiple composio toolkits.

Best practices

  • Always call RUBE_SEARCH_TOOLS first to retrieve current tool slugs and exact input schemas.
  • Verify toolkit connection with RUBE_MANAGE_CONNECTIONS and confirm status is ACTIVE before executing any tool.
  • Pass a session_id for the workflow and reuse it across calls; generate new ids for new workflows.
  • Include a memory parameter in RUBE_MULTI_EXECUTE_TOOL calls, even if empty ({}).
  • Respect schema field names and types exactly as returned. Handle pagination tokens and iterate until results are complete.

Example use cases

  • One-off document parsing: discover the parser tool, confirm Affinda connection, then execute parsing for a single document with the returned schema fields.
  • Bulk extraction pipeline: use RUBE_SEARCH_TOOLS, then RUBE_REMOTE_WORKBENCH run_composio_tool() to process large batches with session tracking.
  • Scheduled ingestion: create a new session, paginate through sources, and run extraction tasks in batches respecting schema definitions.

FAQ

What must I do before executing an Affinda tool?

Always call RUBE_SEARCH_TOOLS to fetch current tool slugs and schemas, then confirm the Affinda connection is ACTIVE via RUBE_MANAGE_CONNECTIONS.

Can I hardcode tool slugs and arguments?

No. Tool schemas change. Never hardcode slugs or input fields—always use the results from RUBE_SEARCH_TOOLS for accuracy.

Is memory required when invoking tools?

Yes. Include the memory parameter in RUBE_MULTI_EXECUTE_TOOL calls. It may be an empty object ({}), but it must be present.