Kadoa MCP server
28 operations0 webhooks
Web data extraction with Kadoa - build and manage workflows that scrape a site on a schedule, read the extracted rows and the changes Kadoa detects between runs, and manage the schemas, variables and delivery destinations those workflows use.
Try Kadoa with your agent
Connect Kadoa, then paste this into Claude, ChatGPT or Cursor. For ideas from other apps, see the use cases.
Using Corsair, show me what you can do in Kadoa on my account, then run one read-only example and show me the result.
Kadoa tools and triggers
Tools are what your agent can do in Kadoa through Corsair's MCP server. Triggers are the Kadoa events a routine can start from.
Workflows
- ConnectorsRead-only
Destinations that receive this workflow’s results after each run, with the format each takes
workflows.connectors
- CreateDestructive
Create a workflow from a prompt, an existing schema, inline entity and fields, or a template; every URL must belong to one website. Spends Kadoa credits once it runs
workflows.create
- DataRead-only
Extracted rows of a workflow’s latest published run, with filters, sorting and paging; `limit: 0` streams every row at once
workflows.data
- DeleteDestructive
Delete a workflow along with its run history and stored data; it cannot be restored
workflows.delete
- GetRead-only
One workflow with its sources, schema, schedule, latest run state and pending fields
workflows.get
- HistoryRead-only
Past runs of a workflow with their state, record count and errors, paged or by run ID
workflows.history
- Job StatusRead-only
Where a run stands: IN_PROGRESS, FINISHED, FAILED, NOT_SUPPORTED or FAILED_INSUFFICIENT_FUNDS, with any errors
workflows.jobStatus
- ListRead-only
List workflows by name, ID, state or tag, with paging by skip; `statusFilters: ["group:attention"]` returns the ones waiting on you
workflows.list
- PauseWrite
Pause a workflow so its schedule stops starting runs; workflows.resume turns it back on
workflows.pause
- ResumeDestructive
Unpause a paused workflow, or resume a preview or error workflow; a 202 means a fresh preview run was started and returned a jobId
workflows.resume
- RunDestructive
Start a run and get a jobId back at once; spends Kadoa credits. Follow it with workflows.jobStatus({ workflowId, jobId }), or read the result with workflows.data
workflows.run
- ScheduleWrite
Set when a workflow’s next run starts, as a UTC time; the workflow needs a schedule for this to work
workflows.schedule
- StopWrite
Stop the workflow’s active run; queued steps are dropped and the step already running may finish
workflows.stop
- Update MetadataWrite
Change a workflow’s name, description, tags, sources, record limit, schedule, location or monitored fields
workflows.updateMetadata
Schemas
- CreateWrite
Create an extraction schema from typed data fields or classification fields, for workflows to reuse
schemas.create
- DeleteDestructive
Delete a schema and every revision of it; it cannot be restored
schemas.delete
- GetRead-only
One extraction schema with its fields and entity
schemas.get
- ListRead-only
Every extraction schema the caller can see
schemas.list
- UpdateWrite
Rename a schema, change its entity, or publish a new revision from replacement fields; workflows on the old revision keep it
schemas.update
Variables
- CreateWrite
Create a string, number, object or array variable, or a secret held by Kadoa or read from your Google Secret Manager
variables.create
- DeleteDestructive
Delete a variable; a secret still bound to a connection is refused with a 409
variables.delete
- GetRead-only
One variable by ID; a secret comes back without its value
variables.get
- ListRead-only
Team variables with their keys and values, optionally limited to one workflow’s; a secret’s value is never returned
variables.list
- UpdateWrite
Change a variable’s key or value; a stored value cannot change type, and a secret’s new value is written only
variables.update
Changes
- GetRead-only
One detected data change with its differences and current data
changes.get
- ListRead-only
Data changes detected across workflows in a date window, with the changed fields and counts; `exclude` drops the large arrays
changes.list
Locations
- ListRead-only
Countries a workflow can scrape from, with their ISO codes
locations.list
Triggers
- ListRead-only
Triggers where this workflow is the source, plus the incoming ones that start it
triggers.list
Connect Kadoa to Claude, ChatGPT or Cursor
- 1
Connect Kadoa in Corsair
Add your Kadoa API key once in Corsair. Corsair stores the credential encrypted and makes the Kadoa API calls for your agent, so it never goes into a prompt or a config file. Connect Kadoa
If your link lets the agent add apps, you can skip this: it gives you a sign-in link the first time it needs Kadoa. On a ChatGPT personal plan, connect Kadoa here first.
- 2
Add Corsair's MCP server to your agent
Every client uses the same address:
https://mcp.corsair.dev/mcpOpen Customize → Connectors → Add custom connector, paste the address, then select Connect.Add a custom MCP server with the address and choose OAuth. Personal plans get read tools only.Add to CursorOr add this to~/.cursor/mcp.json. Cursor opens Corsair to sign in the first time it connects.{ "mcpServers": { "corsair": { "url": "https://mcp.corsair.dev/mcp" } } }Run this, then run/mcpin Claude Code to sign in.claude mcp add --transport http corsair https://mcp.corsair.dev/mcpCodex, Gemini CLI, VS Code, Zed and other clients with OAuth sign-in work the same way. Clients without it, such as GitHub Copilot's coding agent, use a link's own address and an API key. Setup for every client
- 3
Sign in and choose what needs your approval
Your client opens Corsair to sign in. Pick a link: the apps your agent can use and a mode that decides what it may do without asking. In the default Cautious mode, Kadoa's read and write operations run right away and its 6 destructive operations wait for your approval. Strict mode asks before every write and refuses destructive operations, and Read mode allows reads only.
FAQ
Install corsair and @corsair-dev/kadoa, add the Kadoa plugin, and connect with an API key. Then call methods like corsair.kadoa.api.changes.get() from your app. Corsair keeps each tenant isolated.
Yes. Kadoa requires an API key from your Kadoa account or developer dashboard. Create credentials with access that matches what you automate, then paste them into Corsair or connect through managed auth in Hub.
Yes. One Corsair client can hit Kadoa, GitHub, Notion, Stripe, and the rest. Trigger Kadoa from a webhook, push updates to Slack, or chain actions across plugins. Same tenant context across integrations, plain TypeScript.
Teams use Corsair for web data extraction with Kadoa - build and manage workflows that scrape a site on a schedule, read the extracted rows and the changes Kadoa detects between runs, and manage the schemas, variables and delivery destinations those workflows use. Common builds include sync jobs, admin tooling, and agents that call Kadoa APIs from your backend.
The SDK is open source. Self-host and you pay Corsair nothing for the integration layer. Hub bills for hosted auth and execution, not per Kadoa API call. Hub has a generous free tier. For hobby projects you can probably run the whole thing on free. Paid plans start to matter with more tenants or heavier traffic.
We maintain @corsair-dev/kadoa in the open repo. When Kadoa ships API changes, upgrade the package. Your call sites stay typed. You should not need to rewrite the integration layer each time.
No. Corsair does not read your Kadoa data or hold individual access credentials. Credentials stay in your database. API calls run on your instance. We do not store Kadoa data on your behalf.
Yes. Add https://mcp.corsair.dev/mcp as a custom connector or MCP server in Claude, ChatGPT, Cursor, VS Code, Claude Code, Codex or any client that supports remote MCP servers with OAuth sign-in, then sign in to Corsair. On ChatGPT personal plans, custom servers currently get read tools only.
Yes. Put Kadoa on a link in Strict mode and every write waits for your approval, while destructive actions are refused. The default Cautious mode asks only before the 6 destructive Kadoa operations. You can change a link's mode at hub.corsair.dev/me.