An AI agent that runs your online business: products, orders, customers, email, and sites.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Delegate a job to the Crevio agent and wait for the result. The agent works your account through the Crevio API and every connected integration (products, customers, orders, email, socials, sites, research) and replies in `result`. Each job is a full agent run that takes from half a minute to several minutes, so use it for work that needs judgement or writing. If the run is still going when the wait ends, the reply has wait_timed_out: true — then call wait_for_run with its id and never call ask_crevio again, which would do the job twice. Run ids do not expire, and only the user who started a run can read it.
What you want done, in natural language, with all the context needed — the agent does not see your conversation.
faster thinks less, for simple jobs where latency matters more than depth; smarter (default) thinks it through.
autonomous (default) acts without review; supervised pauses in needs_input for your approval before each gated write (pending_approval_ids) and otherwise finishes with its proposal; read_only forbids writes.
Always pass one, unique to this request. Retrying with the same key within an hour returns the run the first call started instead of doing the job twice.
Ask for a JSON reply instead of prose: a JSON Schema, or OpenAI's {type: "json_schema", json_schema: {schema}}. The settled run then carries the parsed value in `json`, validated against the schema, or why it failed in `json_error`.
How long to wait for the run to finish before returning. Defaults to, and is capped at, 300 s when your client accepts a streamed reply (text/event-stream), 90 s otherwise. The run keeps going when the wait ends first.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Delegate a job to the Crevio agent and wait for the result. The agent works your account through the Crevio API and every connected integration (products, customers, orders, email, socials, sites, research) and replies in `result`. Each job is a full agent run that takes from half a minute to several minutes, so use it for work that needs judgement or writing. If the run is still going when the wait ends, the reply has wait_timed_out: true — then call wait_for_run with its id and never call ask_crevio again, which would do the job twice. Run ids do not expire, and only the user who started a run can read it.
| Argument | Type | Description |
|---|---|---|
| speed | string | faster thinks less, for simple jobs where latency matters more than depth; smarter (default) thinks it through. |
| message* | string | What you want done, in natural language, with all the context needed — the agent does not see your conversation. |
| approval_mode | string | autonomous (default) acts without review; supervised pauses in needs_input for your approval before each gated write (pending_approval_ids) and otherwise finishes with its proposal; read_only forbids writes. |
| idempotency_key | string | Always pass one, unique to this request. Retrying with the same key within an hour returns the run the first call started instead of doing the job twice. |
| response_format | object | Ask for a JSON reply instead of prose: a JSON Schema, or OpenAI's {type: "json_schema", json_schema: {schema}}. The settled run then carries the parsed value in `json`, validated against the schema, or why it failed in `json_error`. |
| timeout_seconds | integer | How long to wait for the run to finish before returning. Defaults to, and is capped at, 300 s when your client accepts a streamed reply (text/event-stream), 90 s otherwise. The run keeps going when the wait ends first. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message"
],
"properties": {
"speed": {
"enum": [
"faster",
"smarter"
],
"type": "string",
"description": "faster thinks less, for simple jobs where latency matters more than depth; smarter (default) thinks it through."
},
"message": {
"type": "string",
"maxLength": 10000,
"description": "What you want done, in natural language, with all the context needed — the agent does not see your conversation."
},
"approval_mode": {
"enum": [
"autonomous",
"supervised",
"read_only"
],
"type": "string",
"description": "autonomous (default) acts without review; supervised pauses in needs_input for your approval before each gated write (pending_approval_ids) and otherwise finishes with its proposal; read_only forbids writes."
},
"idempotency_key": {
"type": "string",
"maxLength": 255,
"description": "Always pass one, unique to this request. Retrying with the same key within an hour returns the run the first call started instead of doing the job twice."
},
"response_format": {
"type": "object",
"description": "Ask for a JSON reply instead of prose: a JSON Schema, or OpenAI's {type: \"json_schema\", json_schema: {schema}}. The settled run then carries the parsed value in `json`, validated against the schema, or why it failed in `json_error`."
},
"timeout_seconds": {
"type": "integer",
"maximum": 300,
"minimum": 0,
"description": "How long to wait for the run to finish before returning. Defaults to, and is capped at, 300 s when your client accepts a streamed reply (text/event-stream), 90 s otherwise. The run keeps going when the wait ends first."
}
}
}Stop a run that is pending, running, or waiting for input, and its media generations still in flight. A run mid-step finishes that step first: it returns with cancel_requested_at set and settles as cancelled moments later (wait_for_run to confirm). Repeating it is harmless.
| Argument | Type | Description |
|---|---|---|
| run_id* | string | A run id (trun_...). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"run_id"
],
"properties": {
"run_id": {
"type": "string",
"description": "A run id (trun_...)."
}
}
}Cancel a script run that has not started yet. A running script runs to its end or its timeout.
| Argument | Type | Description |
|---|---|---|
| run_id* | string | A script run id (srun_...). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"run_id"
],
"properties": {
"run_id": {
"type": "string",
"description": "A script run id (srun_...)."
}
}
}Get a chat's title, kind, and latest run.
| Argument | Type | Description |
|---|---|---|
| chat_id* | string | A chat id (aichat_...). A run id works too — it resolves to that run's chat. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"chat_id"
],
"properties": {
"chat_id": {
"type": "string",
"description": "A chat id (aichat_...). A run id works too — it resolves to that run's chat."
}
}
}Exchange an artifact id (art_...) from a run's or script run's `artifacts` for a download link. The link needs no credentials and expires after 15 minutes; ask again for a fresh one.
| Argument | Type | Description |
|---|---|---|
| file_id* | string | An artifact id (art_...). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "An artifact id (art_...)."
}
}
}Fetch a run's current status, summary, pending approvals, and (once settled) the agent's final reply.
| Argument | Type | Description |
|---|---|---|
| run_id* | string | A run id (trun_...). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"run_id"
],
"properties": {
"run_id": {
"type": "string",
"description": "A run id (trun_...)."
}
}
}Read a script run's status, and its result once it has finished.
| Argument | Type | Description |
|---|---|---|
| run_id* | string | A script run id (srun_...). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"run_id"
],
"properties": {
"run_id": {
"type": "string",
"description": "A script run id (srun_...)."
}
}
}List the account's audit events, newest first: access and configuration changes, approvals, API key use, and (at the full capture level) the agent's tool calls.
| Argument | Type | Description |
|---|---|---|
| after | string | ISO-8601 time; only events at or after it. |
| limit | integer | Default 50. |
| action | string | Only this action, e.g. connection.execute or approval.approve. |
| entity_id | string | |
| actor_type | string | |
| entity_type | string | Only events about this kind of record, e.g. integration_approval. |
| ending_before | string | Return the page before this id — the first id from the previous page. |
| starting_after | string | Return the page after this id — the last id from the previous page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"after": {
"type": "string",
"description": "ISO-8601 time; only events at or after it."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Default 50."
},
"action": {
"type": "string",
"description": "Only this action, e.g. connection.execute or approval.approve."
},
"entity_id": {
"type": "string"
},
"actor_type": {
"enum": [
"agent",
"user",
"api",
"system"
],
"type": "string"
},
"entity_type": {
"type": "string",
"description": "Only events about this kind of record, e.g. integration_approval."
},
"ending_before": {
"type": "string",
"description": "Return the page before this id — the first id from the previous page."
},
"starting_after": {
"type": "string",
"description": "Return the page after this id — the last id from the previous page."
}
}
}List the account's chats, newest first.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 20. |
| search | string | Only chats whose title matches. |
| ending_before | string | Return the page before this id — the first id from the previous page. |
| starting_after | string | Return the page after this id — the last id from the previous page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Default 20."
},
"search": {
"type": "string",
"description": "Only chats whose title matches."
},
"ending_before": {
"type": "string",
"description": "Return the page before this id — the first id from the previous page."
},
"starting_after": {
"type": "string",
"description": "Return the page after this id — the last id from the previous page."
}
}
}List one namespace's functions — the name a script calls, its parameters, whether it only reads, whether it needs approval, and a snippet run_script accepts. crevioApi has hundreds of operations: narrow it with `search`.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 10. |
| offset | integer | Skip this many matches — the count already seen. |
| search | string | Keywords, best match first — ranked over name, description and parameters, so not every word has to match. |
| namespace* | string | A namespace from list_integrations, e.g. crevioApi or pdGmail. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"namespace"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Default 10."
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "Skip this many matches — the count already seen."
},
"search": {
"type": "string",
"description": "Keywords, best match first — ranked over name, description and parameters, so not every word has to match."
},
"namespace": {
"type": "string",
"description": "A namespace from list_integrations, e.g. crevioApi or pdGmail."
}
}
}List what a script can call: the Crevio API (crevioApi), Crevio's own tools (platform), and every integration you can use, each as a namespace under `tools`, plus the account's other connected apps and their status. Then list a namespace's functions with list_integration_tools.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Read a chat's messages, oldest first. Returns the most recent `limit` messages; page back through older ones with starting_after.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 50. |
| chat_id* | string | A chat id (aichat_...). A run id works too — it resolves to that run's chat. |
| ending_before | string | Return the messages older than this id — the first id of the previous page. Paging walks backwards through history, since the default page is the tail. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"chat_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Default 50."
},
"chat_id": {
"type": "string",
"description": "A chat id (aichat_...). A run id works too — it resolves to that run's chat."
},
"ending_before": {
"type": "string",
"description": "Return the messages older than this id — the first id of the previous page. Paging walks backwards through history, since the default page is the tail."
}
}
}List the account's task runs, newest first — delegated jobs and scheduled tasks alike. Filter by status, task, or chat.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 20. |
| status | string | Only runs in this state. |
| chat_id | string | Only the runs of this chat (aichat_...): its first run and every send_message after it. A run id works too. |
| task_id | string | Only runs of this task (task_...). |
| ending_before | string | Return the page before this id — the first id from the previous page. |
| starting_after | string | Return the page after this id — the last id from the previous page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Default 20."
},
"status": {
"enum": [
"pending",
"running",
"completed",
"failed",
"needs_input",
"timed_out",
"unknown",
"skipped",
"cancelled"
],
"type": "string",
"description": "Only runs in this state."
},
"chat_id": {
"type": "string",
"description": "Only the runs of this chat (aichat_...): its first run and every send_message after it. A run id works too."
},
"task_id": {
"type": "string",
"description": "Only runs of this task (task_...)."
},
"ending_before": {
"type": "string",
"description": "Return the page before this id — the first id from the previous page."
},
"starting_after": {
"type": "string",
"description": "Return the page after this id — the last id from the previous page."
}
}
}Approve or deny the integration actions a run is paused on (status needs_input with pending_approval_ids). Submit a decision for every pending id at once; the run resumes in the background.
| Argument | Type | Description |
|---|---|---|
| run_id* | string | A run id (trun_...). |
| approvals* | array | One decision per pending approval id — the run stays paused until every one is answered. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"run_id",
"approvals"
],
"properties": {
"run_id": {
"type": "string",
"description": "A run id (trun_...)."
},
"approvals": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"approved"
],
"properties": {
"id": {
"type": "string",
"description": "A pending approval id from the run's pending_approval_ids."
},
"reason": {
"type": "string",
"description": "Why it was denied (optional)."
},
"approved": {
"type": "boolean",
"description": "True to let the action run, false to deny it."
}
}
},
"minItems": 1,
"description": "One decision per pending approval id — the run stays paused until every one is answered."
}
}
}Run JavaScript on the account's computer with bun — no agent turn — and wait for its result. `tools.<namespace>.<function>(args)` calls anything list_integration_tools shows (every call returns its result and throws on failure; top-level await works), and the script's last expression is its result. Chain calls and transform data in one run, e.g. `const { data } = await tools.crevioApi.listOrders({ status: "succeeded" }); data.length`. Runs as you, and only for account admins. If the wait ends first the reply has wait_timed_out: true and the run id: continue with wait_for_script_run — calling run_script again runs it twice unless you reuse the idempotency_key. Run ids do not expire, and only the user who started a run can read it. At most 4 runs in flight per user. `args` reach the script as the global `args` (and process.argv). Files the script writes into the directory named by the global `outputDir` (20 at most, 50 MB each) come back as `artifacts`; get a download link with get_file_download_url.
| Argument | Type | Description |
|---|---|---|
| args | array | Values the script reads from the global `args`. |
| code* | string | The JavaScript to run. |
| wait_seconds | integer | How long to wait for the script to finish before returning. Defaults to, and is capped at, 300 s when your client accepts a streamed reply (text/event-stream), 90 s otherwise. The script keeps going when the wait ends first. |
| idempotency_key | string | Always pass one, unique to this request. Retrying with the same key within an hour returns the run the first call started instead of doing the job twice. |
Continue a chat with follow-up instructions or answers — the agent keeps its context. Resumes a run waiting in needs_input, or queues a new run when the last one finished. Returns run_busy while a run is still in progress. Optionally waits for the reply.
| Argument | Type | Description |
|---|---|---|
| chat_id* | string | A chat id (aichat_...). A run id works too — it resolves to that run's chat. |
| message* | string | The follow-up to send into the conversation. |
| idempotency_key | string | Always pass one, unique to this message. Retrying with the same key returns the run the first call started instead of sending the message twice. |
| response_format | object | Ask for a JSON reply instead of prose: a JSON Schema, or OpenAI's {type: "json_schema", json_schema: {schema}}. The settled run then carries the parsed value in `json`, validated against the schema, or why it failed in `json_error`. |
| timeout_seconds | integer | Seconds to wait for the reply before returning (default 0: return the new run immediately). Capped like ask_crevio's wait. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"chat_id",
"message"
],
"properties": {
"chat_id": {
"type": "string",
"description": "A chat id (aichat_...). A run id works too — it resolves to that run's chat."
},
"message": {
"type": "string",
"maxLength": 10000,
"description": "The follow-up to send into the conversation."
},
"idempotency_key": {
"type": "string",
"maxLength": 255,
"description": "Always pass one, unique to this message. Retrying with the same key returns the run the first call started instead of sending the message twice."
},
"response_format": {
"type": "object",
"description": "Ask for a JSON reply instead of prose: a JSON Schema, or OpenAI's {type: \"json_schema\", json_schema: {schema}}. The settled run then carries the parsed value in `json`, validated against the schema, or why it failed in `json_error`."
},
"timeout_seconds": {
"type": "integer",
"maximum": 300,
"minimum": 0,
"description": "Seconds to wait for the reply before returning (default 0: return the new run immediately). Capped like ask_crevio's wait."
}
}
}Open a chat with the Crevio agent and queue a run, without waiting. Returns the run immediately — its `chat_id` is the conversation to continue with send_message. Follow the run with wait_for_run or get_run.
| Argument | Type | Description |
|---|---|---|
| speed | string | faster thinks less, for simple jobs where latency matters more than depth; smarter (default) thinks it through. |
| message* | string | What you want done, in natural language, with all the context needed — the agent does not see your conversation. |
| approval_mode | string | autonomous (default) acts without review; supervised pauses in needs_input for your approval before each gated write (pending_approval_ids) and otherwise finishes with its proposal; read_only forbids writes. |
| idempotency_key | string | Always pass one, unique to this request. Retrying with the same key within an hour returns the run the first call started instead of doing the job twice. |
| response_format | object | Ask for a JSON reply instead of prose: a JSON Schema, or OpenAI's {type: "json_schema", json_schema: {schema}}. The settled run then carries the parsed value in `json`, validated against the schema, or why it failed in `json_error`. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message"
],
"properties": {
"speed": {
"enum": [
"faster",
"smarter"
],
"type": "string",
"description": "faster thinks less, for simple jobs where latency matters more than depth; smarter (default) thinks it through."
},
"message": {
"type": "string",
"maxLength": 10000,
"description": "What you want done, in natural language, with all the context needed — the agent does not see your conversation."
},
"approval_mode": {
"enum": [
"autonomous",
"supervised",
"read_only"
],
"type": "string",
"description": "autonomous (default) acts without review; supervised pauses in needs_input for your approval before each gated write (pending_approval_ids) and otherwise finishes with its proposal; read_only forbids writes."
},
"idempotency_key": {
"type": "string",
"maxLength": 255,
"description": "Always pass one, unique to this request. Retrying with the same key within an hour returns the run the first call started instead of doing the job twice."
},
"response_format": {
"type": "object",
"description": "Ask for a JSON reply instead of prose: a JSON Schema, or OpenAI's {type: \"json_schema\", json_schema: {schema}}. The settled run then carries the parsed value in `json`, validated against the schema, or why it failed in `json_error`."
}
}
}Wait for a run to settle (completed, failed, cancelled, or needs_input) and return it with the agent's final reply. If it is still running when the wait ends, the reply has wait_timed_out: true — call wait_for_run again.
| Argument | Type | Description |
|---|---|---|
| run_id* | string | A run id (trun_...). |
| timeout_seconds | integer | How long to wait for the run to finish before returning. Defaults to, and is capped at, 300 s when your client accepts a streamed reply (text/event-stream), 90 s otherwise. The run keeps going when the wait ends first. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"run_id"
],
"properties": {
"run_id": {
"type": "string",
"description": "A run id (trun_...)."
},
"timeout_seconds": {
"type": "integer",
"maximum": 300,
"minimum": 0,
"description": "How long to wait for the run to finish before returning. Defaults to, and is capped at, 300 s when your client accepts a streamed reply (text/event-stream), 90 s otherwise. The run keeps going when the wait ends first."
}
}
}Wait for a script run to finish and return its result. If it is still running when the wait ends, the reply has wait_timed_out: true — call again.
| Argument | Type | Description |
|---|---|---|
| run_id* | string | A script run id (srun_...). |
| wait_seconds | integer | How long to wait for the script to finish before returning. Defaults to, and is capped at, 300 s when your client accepts a streamed reply (text/event-stream), 90 s otherwise. The script keeps going when the wait ends first. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"run_id"
],
"properties": {
"run_id": {
"type": "string",
"description": "A script run id (srun_...)."
},
"wait_seconds": {
"type": "integer",
"maximum": 300,
"minimum": 0,
"description": "How long to wait for the script to finish before returning. Defaults to, and is capped at, 300 s when your client accepts a streamed reply (text/event-stream), 90 s otherwise. The script keeps going when the wait ends first."
}
}
}Identify the account, user, and credential behind this connection, with plan, credit balance, rate limits, and the tools available. Only needed to troubleshoot the connection or check credits and limits — other tools already act on this account.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}| timeout_seconds | integer | How long the script may run (default 300). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"code"
],
"properties": {
"args": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
},
"maxItems": 16,
"description": "Values the script reads from the global `args`."
},
"code": {
"type": "string",
"maxLength": 100000,
"description": "The JavaScript to run."
},
"wait_seconds": {
"type": "integer",
"maximum": 300,
"minimum": 0,
"description": "How long to wait for the script to finish before returning. Defaults to, and is capped at, 300 s when your client accepts a streamed reply (text/event-stream), 90 s otherwise. The script keeps going when the wait ends first."
},
"idempotency_key": {
"type": "string",
"maxLength": 255,
"description": "Always pass one, unique to this request. Retrying with the same key within an hour returns the run the first call started instead of doing the job twice."
},
"timeout_seconds": {
"type": "integer",
"maximum": 600,
"minimum": 1,
"description": "How long the script may run (default 300)."
}
}
}