Skip to content

Documentation navigation

Partner Hubs

Workato, Pipedream, Make, n8n, Composio, and the Zapier connector.

#Partner hub connectors

maivn-tools ships six connectors that bridge into the major integration-platform partners. Each one trades direct provider coverage for breadth: instead of implementing every provider's API natively, the host platform's catalog (Zapier, Workato, Pipedream, Make, n8n, Composio) is exposed as Agent-ready tools.

ConnectorTrigger styleAuth
ZapierConnectorConfigured webhook triggersSecret webhook URLs
WorkatoToolSetRecipe metadata + on-demand triggersWorkato API token
PipedreamToolSetWorkflow metadata + HTTP triggersPipedream bearer token
MakeToolSetScenario metadata + webhook URLsMake API token
N8nToolSetWorkflow metadata + activate/deactivate + webhooksn8n API key
ComposioToolSetAction catalog + executeComposio API key

#Agent-ready behavior (overview)

The five method-based toolsets (Workato, Pipedream, Make, n8n, Composio) use the standard summary pattern -- list tools return compact summaries with response-local display refs (recipe_ref, job_ref, workflow_ref, execution_ref, scenario_ref, app_ref, action_ref, connection_ref). Raw provider IDs are hidden by default and exposed via include_ids=True when a follow-up tool (get_*, activate_workflow, invoke_http_trigger, execute_action) needs them.

Write tools that take an identifier (get_workflow, activate_workflow, get_scenario, list_executions, execute_action) accept either a raw ID or the resource dict from the matching list tool. Webhook-trigger tools (run_recipe_trigger, invoke_http_trigger, trigger_webhook for Make / n8n) take the trigger URL directly -- they bypass the catalog by design.

These connectors do not mark their trigger tools destructive. A triggered workflow can still create, change or delete data through its configured steps. Review the workflow and restrict provider credentials before registering it.

#ZapierConnector

Map each Zap's catch URL to a logical name. The connector creates one trigger_<name> callable per entry.

Python
from maivn_tools import ZapierConnector, register_connector

zapier = ZapierConnector(
    webhook_urls={
        "new_lead": "https://hooks.zapier.com/hooks/catch/123/abc",
        "deal_won": "https://hooks.zapier.com/hooks/catch/123/def",
    },
)

The current connector exposes the configured webhook triggers. It does not accept an nla_api_key or expose Natural Language Actions methods.

Agent-ready behavior

Zapier is the builder-style connector in this group: tool names are dynamic (one trigger_<name> per configured webhook URL), so it does not use @toolset / @toolify. Instead of _ref summaries, the agent-ready improvements live in the dynamically generated docstrings:

  • Each per-webhook trigger_<name> tool gets a docstring that:
    • names the specific webhook ("Trigger the 'new_lead' Zapier webhook by POSTing the payload."),
    • describes the response contract ({"status": ..., "url": ..., "delivered": True}),
    • documents the payload argument and the meaning of None,
    • explains that the Zap definition lives in Zapier -- this tool just delivers the payload.

There is no summary stripper because there is nothing to summarize -- each generated tool sends a payload to its configured webhook URL.

#WorkatoToolSet

ToolPermissionDescription
list_recipes(page, per_page, include_ids=False)READRecipes accessible to the token.
list_jobs(recipe_id, page, per_page, status, include_ids=False)READJob history for a recipe.
run_recipe_trigger(trigger_url, payload)WRITEPOST to an on-demand recipe trigger URL.

Agent-ready behavior

  • list_recipes: summary with recipe_ref, name, status, last run. Raw recipe IDs hidden; opt in with include_ids=True (needed by list_jobs(recipe_id=...)).
  • list_jobs: summary with job_ref, status, start/end timestamps. Tolerant input: recipe_id accepts a raw ID or a recipe dict.
  • run_recipe_trigger takes the trigger URL directly (no catalog lookup).

#PipedreamToolSet

ToolPermissionDescription
list_workflows(after, include_ids=False)READList workflows.
get_workflow(workflow_id)READFetch one workflow.
invoke_http_trigger(trigger_url, payload)WRITEPOST to a workflow HTTP trigger URL.

Agent-ready behavior

  • list_workflows: summary with workflow_ref, name, active flag, trigger URL, last update. Raw workflow IDs hidden; opt in with include_ids=True (needed by get_workflow).
  • Tolerant input: get_workflow accepts a raw ID or a workflow dict from list_workflows(include_ids=True).

#MakeToolSet

ToolPermissionDescription
list_scenarios(team_id, limit, offset, include_ids=False)READList scenarios.
get_scenario(scenario_id)READFetch one scenario.
list_executions(scenario_id, limit, offset, include_ids=False)READList scenario executions.
trigger_webhook(webhook_url, payload)WRITEPOST to a scenario's webhook URL.

base_url is region-specific. Use https://us1.make.com/api/v2 for the US zone or https://eu1.make.com/api/v2 for the EU zone.

Agent-ready behavior

  • list_scenarios: summary with scenario_ref, name, active flag, team, last edit. Raw scenario IDs hidden; opt in with include_ids=True (needed by get_scenario, list_executions).
  • list_executions: summary with execution_ref, status, duration, started/finished timestamps. Tolerant input: scenario_id accepts a raw ID or a scenario dict.

#N8nToolSet

ToolPermissionDescription
list_workflows(active, limit, cursor, include_ids=False)READList workflows.
get_workflow(workflow_id)READFetch one workflow.
activate_workflow(workflow_id, active)WRITEActivate or deactivate.
list_executions(workflow_id, status, limit, cursor, include_ids=False)READList executions.
trigger_webhook(webhook_url, payload)WRITEPOST to a workflow webhook URL.

n8n is most often self-hosted; configure base_url to point at the instance and create an API key under Settings -> API.

Agent-ready behavior

  • list_workflows: summary with workflow_ref, name, active flag, tag names, updated timestamp. Raw workflow IDs hidden; opt in with include_ids=True (needed by get_workflow, activate_workflow, list_executions(workflow_id=...)).
  • list_executions: summary with execution_ref, status, mode, started/finished timestamps. Opt in for the raw execution ID.
  • Tolerant inputs: get_workflow, activate_workflow, list_executions accept raw IDs or workflow dicts.

#ComposioToolSet

ToolPermissionDescription
list_apps(include_ids=False)READList apps in the Composio catalog.
list_actions(app, use_case, limit, include_ids=False)READList actions, optionally filtered.
list_connections(app, include_ids=False)READList the user's connected accounts.
execute_action(action_name, connected_account_id, input)WRITEExecute a single action.

execute_action posts to /v1/actions/<name>/execute with the supplied input mapping; consult the Composio docs for the per-action schema.

Agent-ready behavior

  • list_apps: summary with app_ref, name, description, categories, logo URL. Opt in for the raw app ID/slug.
  • list_actions: summary with action_ref, name, app, description, use case. The action name is what callers pass to execute_action. Opt in for the raw action ID.
  • list_connections: summary with connection_ref, app name, status, created. Opt in for connected_account_id (needed by execute_action).
  • Tolerant inputs: execute_action accepts a raw action name or an action dict from list_actions(include_ids=True), and connected_account_id accepts a raw ID or a connection dict.
Python
apps = composio.list_apps()  # summaries safe to show
actions = composio.list_actions(app="github", include_ids=True)
composio.execute_action(actions["actions"][0], connected_account_id=conn, input={...})