overslash_call
Invoke any service action — read, write, or delete — or resume a pending approval. This is the general-purpose tool; clients should surface a confirmation prompt before invocation unless the action is known to be read-only (in which case overslash_read is preferred).
Pre-release
Parameters
| Field | Type | Default | Notes |
|---|---|---|---|
service | string | — | Instance name (e.g. gmail_work). Pass the service field from an overslash_search result, not the template key. Required for a fresh call. |
action | string | — | Action name. Required for a fresh call. |
params | object | {} | Action arguments. |
approval_id | string | — | Resume a previously-approved action. Mutually exclusive with service/action/params. |
verbose | boolean | false | Return the full result including response headers and the untruncated raw body. The default compact shape (status_code, duration_ms, parsed body capped at ~8 KB) is enough for almost every call. Ignored on approval replays. |
The tool accepts exactly two input shapes: a fresh call (service + action + optional params) or an approval resume (approval_id alone).
Calling a service action
{
"service": "gmail_work",
"action": "send_email",
"params": { "to": "alice@example.com", "subject": "Hi", "body": "..." }
}Calling raw HTTP
Raw HTTP — the Service + HTTP verb shape (service + method + path, including the synthetic http pseudo-service) — is not exposed through this MCP tool. The overslash_call input schema accepts only service/action/params/approval_id/verbose and rejects everything else. Use the REST endpoint POST /v1/actions/call for raw HTTP verb calls:
{ "service": "stripe_prod", "method": "GET", "path": "/v1/customers?limit=10" }Resuming a pending approval
{ "approval_id": "550e8400-e29b-41d4-a716-446655440000" }Result shape
The result is tagged by a status field: called, pending_approval, or denied. A failed call returns a typed error envelope instead (see Error).
Success
{
"status": "called",
"result": { "status_code": 200, "duration_ms": 245, "body": { "id": "..." } },
"action_description": "Send an email via Gmail"
}result is the compact shape by default (headers dropped, body parsed as JSON, capped at ~8 KB). Pass verbose: true to get status_code, headers, the raw body string, duration_ms, and any filtered_body.
Approval raised
When the action needs sign-off, the call returns pending_approval rather than executing:
{
"status": "pending_approval",
"approval_id": "550e8400-e29b-41d4-a716-446655440000",
"approval_url": "https://app.overslash.com/approvals/550e8400-...",
"action_description": "Send email to alice@example.com",
"expires_at": "2026-05-25T14:30:00Z",
"relationship": "self",
"suggested_tiers": [
{ "keys": ["gmail_work:send_email:alice@example.com"], "description": "this recipient" },
{ "keys": ["gmail_work:send_email:*"], "description": "anyone" }
],
"auto_call_on_approve": true,
"risk": "med",
"permission_keys": ["gmail_work:send_email:alice@example.com"]
}relationshiptells you which tool resolves the approval:"self"→overslash_approve_self;"downstream"→overslash_approve.auto_call_on_approvecontrols what happens once it's allowed.true(default): the gateway auto-replays the call in the background and the result lands on the execution record via webhook/audit — no follow-up call needed.false: the requesting agent is in deferred-execution mode and must replay explicitly by re-calling this tool with theapproval_id.- A pending approval expires 15 minutes after the user allows it.
Error
A failed call returns a typed error envelope keyed by error:
{ "error": "needs_authentication", "connection_id": "1111...", "auth_url": "https://app/connect-authorize?id=abc" }Typed codes include needs_authentication (carries auth_url + connection_id), reauth_required, missing_scopes, credential_missing, and not_in_your_chain. A user rejection comes back as { "status": "denied", "reason": "..." }.
Examples
A write that requires approval, then the resume once it's been allowed in deferred-execution mode:
// 1. Fresh call → approval raised
{ "service": "gmail_work", "action": "send_email", "params": { "to": "alice@example.com" } }
// → { "status": "pending_approval", "approval_id": "550e...", "auto_call_on_approve": false, ... }
// 2. After the user allows it (auto_call_on_approve was false), replay:
{ "approval_id": "550e8400-e29b-41d4-a716-446655440000" }
// → { "status": "called", "result": { "status_code": 200, ... } }