BusinessMCP Assistant API

The AI business analyst and its tasks.

Operations 4

GET /tasks List tasks (Assistant threads) — titles and status, never message bodies #
POST /tasks Create a task #
POST /runs Queue a run of the AI business analyst #
GET /runs Poll a run: status, the latest reply and pending approvals #

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/businessmcp-com:businessmcp-com-assistant-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

businessmcp-com-assistant-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: BusinessMCP Assistant API
  version: 3.0.0
  description: 'The BI REST API: read your contacts, accounts and analytics sessions, send server-side events, export CSV, and drive the AI business analyst. Authenticate with a workspace key as `Authorization: Bearer mcph_...` (create one in Settings → API & access, or through the headless signup). Every key runs under its access policy; fields outside its data classes come back redacted. The same data and the full tool set are on the MCP endpoint.'
  contact:
    url: https://businessmcp.com/contact
servers:
- url: https://businessmcp.com/api/v1
security:
- bearer: []
tags:
- name: Assistant
  description: The AI business analyst and its tasks.
paths:
  /tasks:
    get:
      operationId: listTasks
      summary: List tasks (Assistant threads) — titles and status, never message bodies
      description: 'Rate limits: 600 requests/minute per key and 3000/minute per workspace (read bucket).'
      tags:
      - Assistant
      parameters:
      - name: status
        in: query
        description: Thread status, or `all` (default).
        schema:
          type: string
          default: all
      - name: dept
        in: query
        description: Department label.
        schema:
          type: string
      responses:
        '200':
          description: Up to 50 tasks.
          content:
            application/json:
              schema:
                type: object
                properties:
                  tasks:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        title:
                          type: string
                        dept:
                          type: string
                        status:
                          type: string
                        agent_name:
                          type: string
                        last_message_at:
                          type: string
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '401':
          description: Missing, invalid or revoked mcph_ key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '402':
          description: Plan quota reached or plan required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '403':
          description: Refused by the key’s access policy or role.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '404':
          description: Not found in this workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '429':
          description: Rate limited (empty body).
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait.
        '500':
          description: Internal error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '503':
          description: A backend was unavailable; retry when retryable is true.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
    post:
      operationId: createTask
      summary: Create a task
      description: 'Needs a key whose policy may act and holds the `crm_actions` class. Rate limits: 600 requests/minute per key and 3000/minute per workspace (read bucket).'
      tags:
      - Assistant
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  maxLength: 120
                dept:
                  type: string
                  default: Operations
                message:
                  type: string
              required:
              - title
      responses:
        '201':
          description: Created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  created:
                    const: true
                  task_id:
                    type: string
                  title:
                    type: string
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '401':
          description: Missing, invalid or revoked mcph_ key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '402':
          description: Plan quota reached or plan required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '403':
          description: Refused by the key’s access policy or role.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '404':
          description: Not found in this workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '429':
          description: Rate limited (empty body).
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait.
        '500':
          description: Internal error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '503':
          description: A backend was unavailable; retry when retryable is true.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
  /runs:
    post:
      operationId: startRun
      summary: Queue a run of the AI business analyst
      description: 'Same analyst, policy and approval gates as the dashboard and the MCP endpoint. Poll GET /runs for the reply. Rate limits: 20 runs/minute per key and 60/minute per workspace, on top of the plan’s AI quota.'
      tags:
      - Assistant
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                prompt:
                  type: string
                thread_id:
                  type: string
                  description: Continue an existing thread.
                mode:
                  type: string
                  enum:
                  - normal
                  - deep
                  default: normal
              required:
              - prompt
            example:
              prompt: Which channels drove signups last week?
      responses:
        '202':
          description: Queued.
          content:
            application/json:
              schema:
                type: object
                properties:
                  thread_id:
                    type: string
                  message_id:
                    type: string
                  status:
                    const: queued
                  poll:
                    type: string
                  dashboard_url:
                    type: string
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '401':
          description: Missing, invalid or revoked mcph_ key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '402':
          description: Plan quota reached or plan required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '403':
          description: Refused by the key’s access policy or role.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '404':
          description: Not found in this workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '429':
          description: Rate limited (empty body).
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait.
        '500':
          description: Internal error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '503':
          description: A backend was unavailable; retry when retryable is true.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
    get:
      operationId: getRun
      summary: 'Poll a run: status, the latest reply and pending approvals'
      description: 'Rate limits: 20 requests/minute per key and 60/minute per workspace.'
      tags:
      - Assistant
      parameters:
      - name: thread_id
        in: query
        required: true
        description: From POST /runs.
        schema:
          type: string
      responses:
        '200':
          description: The conversation so far.
          content:
            application/json:
              schema:
                type: object
                properties:
                  thread_id:
                    type: string
                  title:
                    type: string
                  status:
                    type: string
                    enum:
                    - running
                    - idle
                  run_status:
                    type:
                    - string
                    - 'null'
                  reply:
                    type:
                    - string
                    - 'null'
                  pending_approvals:
                    type: array
                    items:
                      type: object
                      properties:
                        approval_id:
                          type: string
                        label:
                          type: string
                  messages:
                    type: array
                    items:
                      type: object
                      properties:
                        role:
                          type: string
                        content:
                          type: string
                        created_at:
                          type: string
                  dashboard_url:
                    type: string
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '401':
          description: Missing, invalid or revoked mcph_ key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '402':
          description: Plan quota reached or plan required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '403':
          description: Refused by the key’s access policy or role.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '404':
          description: Not found in this workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '429':
          description: Rate limited (empty body).
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait.
        '500':
          description: Internal error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
        '503':
          description: A backend was unavailable; retry when retryable is true.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolError'
components:
  schemas:
    SimpleError:
      type: object
      properties:
        ok:
          const: false
        error:
          type: string
        detail:
          type: string
      required:
      - error
    ToolError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
              - not_permitted
              - quota_exceeded
              - plan_required
              - not_connected
              - not_found
              - invalid_input
              - unknown_goal
              - upstream_failed
              - backend_unavailable
              - thread_required
              - unavailable
              - internal
              - rate_limited
            message:
              type: string
            hint:
              type: string
            retryable:
              type: boolean
            upgrade_url:
              type: string
            details:
              type: object
          required:
          - code
          - message
          - retryable
      required:
      - error
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: A BusinessMCP workspace key (mcph_…).
externalDocs:
  description: API reference
  url: https://businessmcp.com/docs/api