mcp skill:
you choose exactly which inputs the agent fills. Unlike the curated providers, Zapier ships no
pre-built actions — every customer’s server exposes a different set, so the “pack” is the
discover-and-freeze flow itself.
Authenticate every request with a secret API key:
Authorization: Bearer flowyte_sk_…. The kind is
zapier. You pay Zapier’s task pricing on your own plan; Flowyte adds no markup.How it works
1
Connect your Zapier MCP endpoint
Paste the MCP server URL from your Zapier account — no OAuth. Flowyte runs
initialize +
tools/list and reports how many actions are equipped.2
List the equipped tools
Read the tools you’ve equipped — plus whether it’s a
classic or agentic server.3
Resolve the action (agentic servers)
Pick the specific action; Flowyte resolves it to a concrete, closed schema, pinning any dynamic
parents (spreadsheet → worksheet → column) along the way. Classic servers already expose a closed
schema per tool, so this step is a no-op for them.
4
Probe a tool (optional)
Run a write once to see what it returns, so you can pick what the agent reads back (skip it for
fire-and-forget sends that don’t read anything).
5
Freeze a tool into a skill
Pin the constant arguments, expose the ones the agent fills, and allow-list any fields it reads back.
1. Connect
Zapier connects with an API-key-style credential: paste your Zapier MCP server endpoint URL (the secret is embedded in the URL). It’s encrypted at rest and never echoed back. ThetoolCount in the
response is how many actions are equipped — the connect wizard shows it (or a designed empty state at 0).
2. List the equipped tools
GET /integrations/zapier/tools runs tools/list against your endpoint and returns each equipped
tool’s name, description, and raw JSON-Schema inputSchema — the discovery step for authoring a skill.
The envelope also carries serverMode:
serverMode: "agentic" means your server exposes a few generic executor tools
(execute_zapier_read_action, …) instead of one tool per action — and that’s fully supported. Pick
the specific action you want; Flowyte calls POST /integrations/zapier/tools/{tool}/resolve to
resolve it to a concrete, closed, pinnable schema (materializing dynamic fields once their parents are
pinned), then you freeze it exactly like a classic tool. See Connect Zapier.3. Probe a tool (optional)
An MCP tool has no output schema and Zapier has no sandbox, so to learn which fields a tool returns you run it once and inspect the response.POST /integrations/{kind}/tools/{tool}/probe executes the
real action with your args — you must set acknowledge_execution: true — and returns the response
flattened to dotted leaf paths (with a name-based PII class per leaf) to allow-list at freeze time.
4. Freeze a tool into a skill
POST /agents/{agentId}/integrations/zapier/mcp-skills turns one equipped tool into a skill. Only the
operator-exposed params become the skill’s parameters; pinned args are locked on at runtime.
Every schema-required input must be pinned or exposed; any allowedFields the agent reads back (dotted
leaf paths from the probe) are deny-by-default. Because an MCP tool carries no read/write metadata
the skill lands fail-closed as a write — it confirms with the caller and runs one at a time — which
is exactly right for the write actions Zapier is for. Bulk/broadcast-shaped tools are refused.
Send a write in the background (fireAndForget)
Some write actions are pure sends — log the call, create a lead, add a note, tag a contact, fire a
downstream Zap — where nothing on the call reads the result back. Zapier’s action executor isn’t fast
(an agentic server’s execute_zapier_write_action commonly takes 10+ seconds), so blocking a
live turn on one wastes time the caller can feel. Add "fireAndForget": true to the freeze request for
a write action and:
- the agent still confirms with the caller first —
fireAndForgetnever touches the confirm gate, it only changes what happens after the caller says yes; - on the confirmed call, Flowyte hands the exact same pinned + validated arguments to a durable background queue and tells the caller it’s done immediately, instead of blocking the turn on the live Zapier call;
- a background worker completes the real send off-turn, with automatic retries and de-duplication (a retried confirmation is never sent twice);
- if the send ultimately fails, the caller is not told — they’re already gone. The failure shows up as a failed step on the call’s Observe receipt and fires an internal alert, so an operator can follow up.
fireAndForget fits a write that sends and forgets — nothing on the call reads the result. Leave
it off — the default — for a write whose result the agent reads back to the caller. To read caller
data, use the caller-context store,
not a live Zapier call.In the API
Full walkthrough: Connect Zapier.