Skip to main content
POST
/
api
/
tools
/
call
Call Tool
curl --request POST \
  --url https://api.example.com/api/tools/call \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "tool": "<string>",
  "input": {}
}
'

Endpoint

POST https://app.outlit.ai/api/tools/call

Authentication

Authorization
string
required
Outlit API key using the Bearer ok_... format.

Request Body

{
  "tool": "outlit_list_customers",
  "input": {
    "limit": 10,
    "billingStatus": "PAYING"
  }
}
tool
string
required
Customer intelligence tool name. Must be one of the supported tool names below.
input
object
default:"{}"
Tool-specific input object. The input is validated against the shared @outlit/tools contract before the tool runs.

Supported Tools

ToolPurpose
outlit_list_customersBrowse and filter customers by billing status, activity recency, revenue, traits, or name
outlit_list_usersBrowse and filter users by journey stage, activity recency, customer, traits, email, or name
outlit_get_customerGet full details for one customer, with optional related sections
outlit_get_timelineGet chronological customer activity across product, billing, support, and conversation channels
outlit_list_factsBrowse stored customer facts and evidence
outlit_get_factRetrieve one exact customer fact
outlit_get_sourceRetrieve one exact source record behind a fact or search result
outlit_search_customer_contextSearch customer context semantically
outlit_queryRun SQL against customer intelligence tables
outlit_schemaInspect available SQL schema tables
Tool input schemas are published by @outlit/tools as customerToolContracts. Use that package when building schema-driven clients or model tool definitions.

Examples

List Paying Customers

curl -X POST https://app.outlit.ai/api/tools/call \
  -H "Authorization: Bearer ok_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "outlit_list_customers",
    "input": {
      "billingStatus": "PAYING",
      "limit": 10
    }
  }'

Get Customer Details

{
  "tool": "outlit_get_customer",
  "input": {
    "customer": "acme.com",
    "include": ["users", "revenue", "recentTimeline"],
    "timeframe": "30d"
  }
}

Search Customer Context

{
  "tool": "outlit_search_customer_context",
  "input": {
    "customer": "acme.com",
    "query": "What renewal concerns came up recently?",
    "topK": 5
  }
}

Response

The response is the selected tool’s JSON result. List tools return paginated collections; exact lookup tools return the matched record or an error when the record cannot be found. Example list response:
{
  "items": [
    {
      "id": "cus_123",
      "name": "Acme",
      "domain": "acme.com",
      "billingStatus": "PAYING",
      "mrrCents": 25000,
      "lastActivityAt": "2026-04-10T18:22:11.000Z"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "cursor_abc",
    "total": 128
  }
}

Error Responses

Invalid JSON, unknown tool names, or invalid tool inputs return 400:
{
  "error": "Invalid tool input",
  "details": [
    {
      "path": ["limit"],
      "message": "Too big: expected number to be <=1000"
    }
  ]
}
Invalid credentials return 401. Plan API-call limits can return 402 or 429 with a stable billing code.