ClawLink Execution API

Run a tool against the user's connected apps

Operations 1

POST /api/tools/{name}/execute Execute a tool #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/claw-link-dev:claw-link-dev-execution-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

claw-link-dev-execution-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ClawLink Agent Execution API
  version: 1.0.0
  summary: Tool discovery and execution for AI agents
  description: 'ClawLink connects AI agents to 100+ external apps (Gmail, Slack, Notion, GitHub, and more) through one hosted account. This document describes the agent-facing surface: tool discovery, tool execution, the MCP endpoint, and the two credential registration flows. How authentication works, including the human-approval requirement, is documented at https://claw-link.dev/auth.md. All other routes on claw-link.dev (dashboard, billing, connect pages) are browser-facing and not part of this API.'
  contact:
    name: ClawLink
    url: https://claw-link.dev
servers:
- url: https://claw-link.dev
security:
- ApiKeyHeader: []
- BearerAuth: []
tags:
- name: Execution
  description: Run a tool against the user's connected apps
paths:
  /api/tools/{name}/execute:
    post:
      tags:
      - Execution
      operationId: executeTool
      summary: Execute a tool
      description: 'Runs the named tool against the user''s connected app. Write and destructive tools are refused with HTTP 412 unless the request sets "confirmed": true. When the user has several connections for one app, pass "connectionId" to pick one; omitting it uses the default connection. On failure, read "error.message" and "hint": they are written for agent self-correction.'
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                arguments:
                  type: object
                  description: Tool arguments matching the input schema from describeTool. If "arguments" is omitted, all top-level body fields except connectionId, confirmed, and files are treated as the arguments.
                  additionalProperties: true
                connectionId:
                  type:
                  - integer
                  - string
                  description: Connection id from the user's account. Omit to use the default connection for the tool's integration.
                confirmed:
                  type: boolean
                  description: Required as true for write and destructive tools.
                files:
                  type: array
                  description: File attachments for tools with file-uploadable fields. Total decoded size is capped at 100 MB per request (HTTP 413 above it).
                  items:
                    $ref: '#/components/schemas/FileAttachment'
              additionalProperties: true
      responses:
        '200':
          description: Execution succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionResult'
        '400':
          description: Invalid arguments or malformed files envelope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionResult'
        '401':
          description: Missing or invalid API key, or the connection needs re-authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionResult'
        '402':
          description: Billing limit reached
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionResult'
        '403':
          description: The connection is missing OAuth scopes the tool needs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionResult'
        '404':
          description: Tool not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionResult'
        '409':
          description: No connection for the integration, or several connections and no connectionId given
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionResult'
        '412':
          description: 'Confirmation required: re-send with "confirmed": true after the user approves'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionResult'
        '413':
          description: Files envelope over the 100 MB cap
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Integration configuration problem
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionResult'
        '429':
          description: Provider rate limit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionResult'
        '503':
          description: Upstream provider unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionResult'
        default:
          description: Execution failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionResult'
components:
  schemas:
    Error:
      type: object
      required:
      - error
      properties:
        error:
          type: string
    ExecutionResult:
      type: object
      description: Execution envelope returned for both success and failure. On failure, "error.message" and "hint" are written for agent self-correction; "details" may carry additional lines.
      required:
      - ok
      properties:
        ok:
          type: boolean
        result:
          description: Tool output on success. Large outputs may be replaced by a compact offload envelope for clients that opt in.
        data:
          description: Alias of result carried for compatibility.
        error:
          type:
          - object
          - 'null'
          properties:
            code:
              type: string
              description: Machine-readable code, for example needs_connection, confirmation_required, tool_not_found.
            type:
              type: string
              description: Error class, for example validation, auth, missing_scopes, rate_limit.
            message:
              type: string
          additionalProperties: true
        hint:
          type: string
          description: Actionable next step for the agent.
        details:
          type: array
          items:
            type: string
        requiresConfirmation:
          type: boolean
        canonical:
          type: object
          description: Canonical execution summary.
          additionalProperties: true
      additionalProperties: true
    FileAttachment:
      type: object
      required:
      - pointer
      - name
      - mimetype
      - md5
      - dataBase64
      properties:
        pointer:
          type: string
          description: JSON pointer to the file-uploadable field in the arguments this attachment fills.
        name:
          type: string
          description: File name.
        mimetype:
          type: string
        md5:
          type: string
          description: MD5 hex digest of the raw bytes.
        dataBase64:
          type: string
          description: Base64-encoded file bytes.
  securitySchemes:
    ApiKeyHeader:
      type: apiKey
      in: header
      name: x-clawlink-api-key
      description: A cllk_live_ API key obtained through one of the registration flows.
    BearerAuth:
      type: http
      scheme: bearer
      description: The same cllk_live_ key as a bearer token. Both header forms are accepted on every authenticated endpoint.
    OAuth2:
      type: oauth2
      description: For remote MCP clients calling /api/mcp. Discovery starts at https://claw-link.dev/.well-known/oauth-protected-resource; client registration follows the authorization server metadata.
      flows:
        authorizationCode:
          authorizationUrl: https://clerk.claw-link.dev/oauth/authorize
          tokenUrl: https://clerk.claw-link.dev/oauth/token
          refreshUrl: https://clerk.claw-link.dev/oauth/token
          scopes:
            openid: Identify the authorizing user
            email: Read the user's email address
            profile: Read basic profile information
externalDocs:
  description: ClawLink documentation
  url: https://docs.claw-link.dev