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.
#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.
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
payloadargument and the meaning ofNone, - 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
Agent-ready behavior
list_recipes: summary withrecipe_ref, name, status, last run. Raw recipe IDs hidden; opt in withinclude_ids=True(needed bylist_jobs(recipe_id=...)).list_jobs: summary withjob_ref, status, start/end timestamps. Tolerant input:recipe_idaccepts a raw ID or a recipe dict.run_recipe_triggertakes the trigger URL directly (no catalog lookup).
#PipedreamToolSet
Agent-ready behavior
list_workflows: summary withworkflow_ref, name, active flag, trigger URL, last update. Raw workflow IDs hidden; opt in withinclude_ids=True(needed byget_workflow).- Tolerant input:
get_workflowaccepts a raw ID or a workflow dict fromlist_workflows(include_ids=True).
#MakeToolSet
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 withscenario_ref, name, active flag, team, last edit. Raw scenario IDs hidden; opt in withinclude_ids=True(needed byget_scenario,list_executions).list_executions: summary withexecution_ref, status, duration, started/finished timestamps. Tolerant input:scenario_idaccepts a raw ID or a scenario dict.
#N8nToolSet
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 withworkflow_ref, name, active flag, tag names, updated timestamp. Raw workflow IDs hidden; opt in withinclude_ids=True(needed byget_workflow,activate_workflow,list_executions(workflow_id=...)).list_executions: summary withexecution_ref, status, mode, started/finished timestamps. Opt in for the raw execution ID.- Tolerant inputs:
get_workflow,activate_workflow,list_executionsaccept raw IDs or workflow dicts.
#ComposioToolSet
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 withapp_ref, name, description, categories, logo URL. Opt in for the raw app ID/slug.list_actions: summary withaction_ref, name, app, description, use case. The actionnameis what callers pass toexecute_action. Opt in for the raw action ID.list_connections: summary withconnection_ref, app name, status, created. Opt in forconnected_account_id(needed byexecute_action).- Tolerant inputs:
execute_actionaccepts a raw action name or an action dict fromlist_actions(include_ids=True), andconnected_account_idaccepts a raw ID or a connection dict.
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={...})