Xpersona Agent
API Gateway
Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to... Skill: API Gateway Owner: byungkyu Summary: Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to... Tags: latest:1.0.54 Version history: v1.0.54 | 2026-02-28T02:13:08.484Z | user - Minor update to documentation: GitHub is now highlighted in the API list in the skill description. - No changes to code or functionalit
clawhub skill install kn75240wq8bnv2qm2xgry748jd80b9r0:api-gatewayOverall rank
#62
Adoption
29.8K downloads
Trust
Unknown
Freshness
Feb 28, 2026
Freshness
Last checked Feb 28, 2026
Best For
API Gateway is best for general automation workflows where documented compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, CLAWHUB, runtime-metrics, public facts pack
Overview
Key links, install path, reliability highlights, and the shortest practical read before diving into the crawl record.
Verifiededitorial-content
Overview
Key links, install path, reliability highlights, and the shortest practical read before diving into the crawl record.
Overview
Executive Summary
Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to... Skill: API Gateway Owner: byungkyu Summary: Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to... Tags: latest:1.0.54 Version history: v1.0.54 | 2026-02-28T02:13:08.484Z | user - Minor update to documentation: GitHub is now highlighted in the API list in the skill description. - No changes to code or functionalit Capability contract not published. No trust telemetry is available yet. 29.8K downloads reported by the source. Last updated 4/15/2026.
Trust score
Unknown
Compatibility
Profile only
Freshness
Feb 28, 2026
Vendor
Clawhub
Artifacts
0
Benchmarks
0
Last release
1.0.54
Install & run
Setup Snapshot
clawhub skill install kn75240wq8bnv2qm2xgry748jd80b9r0:api-gateway- 1
Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- 2
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Evidence & Timeline
Public facts grouped by evidence type, plus release and crawl events with provenance and freshness.
Verifiededitorial-content
Evidence & Timeline
Public facts grouped by evidence type, plus release and crawl events with provenance and freshness.
Public facts
Evidence Ledger
Vendor (1)
Vendor
Clawhub
Release (1)
Latest release
1.0.54
Adoption (1)
Adoption signal
29.8K downloads
Security (1)
Handshake status
UNKNOWN
Artifacts & Docs
Parameters, dependencies, examples, extracted files, editorial overview, and the complete README when available.
Self-declaredCLAWHUB
Artifacts & Docs
Parameters, dependencies, examples, extracted files, editorial overview, and the complete README when available.
Captured outputs
Artifacts Archive
Extracted files
5
Examples
6
Snippets
0
Languages
Unknown
Executable Examples
bash
# Native Slack API call
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFtext
https://gateway.maton.ai/{app}/{native-api-path}text
Authorization: Bearer $MATON_API_KEY
bash
export MATON_API_KEY="YOUR_API_KEY"
bash
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOFjson
{
"connections": [
{
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=5e9...",
"app": "slack",
"metadata": {}
}
]
}Extracted Files
SKILL.md
---
name: api-gateway
description: |
Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth.
Use this skill when users want to interact with external services.
Security: The MATON_API_KEY authenticates with Maton.ai but grants NO access to third-party services by itself. Each service requires explicit OAuth authorization by the user through Maton's connect flow. Access is strictly scoped to connections the user has authorized. Provided by Maton (https://maton.ai).
compatibility: Requires network access and valid Maton API key
metadata:
author: maton
version: "1.0"
clawdbot:
emoji: đź§
homepage: "https://maton.ai"
requires:
env:
- MATON_API_KEY
---
# API Gateway
Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by [Maton](https://maton.ai). The API gateway lets you call native API endpoints directly.
## Quick Start
```bash
# Native Slack API call
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
```
## Base URL
```
https://gateway.maton.ai/{app}/{native-api-path}
```
Replace `{app}` with the service name and `{native-api-path}` with the actual API endpoint path.
IMPORTANT: The URL path MUST start with the connection's app name (eg. `/google-mail/...`). This prefix tells the gateway which app connection to use. For example, the native Gmail API path starts with `gmail/v1/`, so full paths look like `/google-mail/gmail/v1/users/me/messages`.
## Authentication
All requests require the Maton API key in the Authorization header:
```
Authorization: Bearer $MATON_API_KEY
```
The API gateway automatically injects the appropriate OAuth token for the target service.
**Environment Variable:** You can set your API key as the `MATON_API_KEY` environment variable:
```bash
export MATON_API_KEY="YOUR_API_KEY"
```
## Getting Your API Key
1. Sign in or create an account at [maton.ai](https://maton.ai)
2. Go to [maton.ai/settings](https://maton.ai/settings)
3. Click the copy button on the right side of API Key section to copy it
## Connection Management
Connection management uses a separate base URL: `https://ctrl.maton.ai`
### List Connections
```bash
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
```
**Query Parameters (optional):**
- `app` - Filter by service name (e.g., `slack`, `hub_meta.json
{
"ownerId": "kn75240wq8bnv2qm2xgry748jd80b9r0",
"slug": "api-gateway",
"version": "1.0.54",
"publishedAt": 1772244788484
}references/active-campaign.md
# ActiveCampaign Routing Reference
**App name:** `active-campaign`
**Base URL proxied:** `{account}.api-us1.com`
## API Path Pattern
```
/active-campaign/api/3/{resource}
```
## Common Endpoints
### Contacts
#### List Contacts
```bash
GET /active-campaign/api/3/contacts
```
#### Get Contact
```bash
GET /active-campaign/api/3/contacts/{contactId}
```
#### Create Contact
```bash
POST /active-campaign/api/3/contacts
Content-Type: application/json
{
"contact": {
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe"
}
}
```
#### Update Contact
```bash
PUT /active-campaign/api/3/contacts/{contactId}
```
#### Delete Contact
```bash
DELETE /active-campaign/api/3/contacts/{contactId}
```
### Tags
#### List Tags
```bash
GET /active-campaign/api/3/tags
```
#### Create Tag
```bash
POST /active-campaign/api/3/tags
Content-Type: application/json
{
"tag": {
"tag": "Tag Name",
"tagType": "contact"
}
}
```
### Contact Tags
#### Add Tag to Contact
```bash
POST /active-campaign/api/3/contactTags
Content-Type: application/json
{
"contactTag": {
"contact": "1",
"tag": "1"
}
}
```
#### Remove Tag from Contact
```bash
DELETE /active-campaign/api/3/contactTags/{contactTagId}
```
### Lists
#### List All Lists
```bash
GET /active-campaign/api/3/lists
```
#### Create List
```bash
POST /active-campaign/api/3/lists
```
### Deals
#### List Deals
```bash
GET /active-campaign/api/3/deals
```
#### Create Deal
```bash
POST /active-campaign/api/3/deals
Content-Type: application/json
{
"deal": {
"title": "New Deal",
"value": "10000",
"currency": "usd",
"contact": "1",
"stage": "1"
}
}
```
### Deal Stages & Pipelines
#### List Deal Stages
```bash
GET /active-campaign/api/3/dealStages
```
#### List Pipelines (Deal Groups)
```bash
GET /active-campaign/api/3/dealGroups
```
### Automations
#### List Automations
```bash
GET /active-campaign/api/3/automations
```
### Campaigns
#### List Campaigns
```bash
GET /active-campaign/api/3/campaigns
```
### Users
#### List Users
```bash
GET /active-campaign/api/3/users
```
### Accounts
#### List Accounts
```bash
GET /active-campaign/api/3/accounts
```
### Custom Fields
#### List Fields
```bash
GET /active-campaign/api/3/fields
```
### Notes
#### List Notes
```bash
GET /active-campaign/api/3/notes
```
### Webhooks
#### List Webhooks
```bash
GET /active-campaign/api/3/webhooks
```
## Pagination
Uses offset-based pagination:
```bash
GET /active-campaign/api/3/contacts?limit=20&offset=0
```
**Parameters:**
- `limit` - Results per page (default: 20)
- `offset` - Starting index
Response includes meta with total:
```json
{
"contacts": [...],
"meta": {
"total": "150"
}
}
```
## Notes
- All endpoints require `/api/3/` prefix
- Request bodies use singular resource names (e.g., `{"contact": {...}}`)
- IDs returned as strings
- Rate limit: 5 requests per second per account
- DELETE returns 200 OK (not 204)
## Resources
- references/acuity-scheduling.md
# Acuity Scheduling Routing Reference
**App name:** `acuity-scheduling`
**Base URL proxied:** `acuityscheduling.com`
## API Path Pattern
```
/acuity-scheduling/api/v1/{resource}
```
The gateway automatically prepends `/api/v1` when proxying to Acuity.
## Common Endpoints
### Get Account Info
```bash
GET /acuity-scheduling/api/v1/me
```
### List Appointments
```bash
GET /acuity-scheduling/api/v1/appointments?max=100&minDate=2026-02-01
```
### Get Appointment
```bash
GET /acuity-scheduling/api/v1/appointments/{id}
```
### Create Appointment
```bash
POST /acuity-scheduling/api/v1/appointments
Content-Type: application/json
{
"datetime": "2026-02-15T09:00",
"appointmentTypeID": 123,
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com"
}
```
### Update Appointment
```bash
PUT /acuity-scheduling/api/v1/appointments/{id}
Content-Type: application/json
{
"firstName": "Jane",
"lastName": "Smith"
}
```
### Cancel Appointment
```bash
PUT /acuity-scheduling/api/v1/appointments/{id}/cancel
```
### Reschedule Appointment
```bash
PUT /acuity-scheduling/api/v1/appointments/{id}/reschedule
Content-Type: application/json
{
"datetime": "2026-02-20T10:00"
}
```
### List Calendars
```bash
GET /acuity-scheduling/api/v1/calendars
```
### List Appointment Types
```bash
GET /acuity-scheduling/api/v1/appointment-types
```
### Get Available Dates
```bash
GET /acuity-scheduling/api/v1/availability/dates?month=2026-02&appointmentTypeID=123
```
### Get Available Times
```bash
GET /acuity-scheduling/api/v1/availability/times?date=2026-02-04&appointmentTypeID=123
```
### List Clients
```bash
GET /acuity-scheduling/api/v1/clients?search=John
```
### Create Client
```bash
POST /acuity-scheduling/api/v1/clients
Content-Type: application/json
{
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com"
}
```
### List Blocks
```bash
GET /acuity-scheduling/api/v1/blocks?calendarID=1234
```
### Create Block
```bash
POST /acuity-scheduling/api/v1/blocks
Content-Type: application/json
{
"start": "2026-02-15T12:00",
"end": "2026-02-15T13:00",
"calendarID": 1234
}
```
### Delete Block
```bash
DELETE /acuity-scheduling/api/v1/blocks/{id}
```
### List Forms
```bash
GET /acuity-scheduling/api/v1/forms
```
### List Labels
```bash
GET /acuity-scheduling/api/v1/labels
```
## Notes
- Datetime values must be parseable by PHP's `strtotime()` function
- Timezones use IANA format (e.g., "America/New_York")
- Use `max` parameter to limit results (default: 100)
- Use `minDate` and `maxDate` for date-range filtering
- Client update/delete only works for clients with existing appointments
- Rescheduling requires the new datetime to be an available time slot
## Resources
- [Acuity Scheduling API Quick Start](https://developers.acuityscheduling.com/reference/quick-start)
- [Appointments API](https://developers.acuityscheduling.com/reference/get-appointments)
- [Availability API](https://developers.acuityscheduling.com/refereferences/airtable.md
# Airtable Routing Reference
**App name:** `airtable`
**Base URL proxied:** `api.airtable.com`
## API Path Pattern
```
/airtable/v0/{baseId}/{tableIdOrName}
```
## Common Endpoints
### List Records
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}?maxRecords=100
```
With view:
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}?view=Grid%20view&maxRecords=100
```
With filter formula:
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}?filterByFormula={Status}='Active'
```
With field selection:
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}?fields[]=Name&fields[]=Status&fields[]=Email
```
With sorting:
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}?sort[0][field]=Created&sort[0][direction]=desc
```
### Get Record
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}/{recordId}
```
### Create Records
```bash
POST /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"fields": {
"Name": "New Record",
"Status": "Active",
"Email": "test@example.com"
}
}
]
}
```
### Update Records (PATCH - partial update)
```bash
PATCH /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {
"Status": "Completed"
}
}
]
}
```
### Update Records (PUT - full replace)
```bash
PUT /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {
"Name": "Updated Name",
"Status": "Active"
}
}
]
}
```
### Delete Records
```bash
DELETE /airtable/v0/{baseId}/{tableIdOrName}?records[]=recXXXXX&records[]=recYYYYY
```
### List Bases
```bash
GET /airtable/v0/meta/bases
```
### Get Base Schema
```bash
GET /airtable/v0/meta/bases/{baseId}/tables
```
## Pagination
**Parameters:**
- `pageSize` - Number of records per request (max 100, default 100)
- `maxRecords` - Maximum total records across all pages
- `offset` - Cursor for next page (returned in response)
Response includes `offset` when more records exist:
```json
{
"records": [...],
"offset": "itrXXXXXXXXXXX"
}
```
Use offset for next page:
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}?pageSize=50&offset=itrXXXXXXXXXXX
```
## Notes
- Authentication is automatic via OAuth
- Base IDs start with `app`
- Table IDs start with `tbl` (can also use table name)
- Record IDs start with `rec`
- Maximum 100 records per request for create/update
- Maximum 10 records per delete request
- Filter formulas use Airtable formula syntax
## Resources
- [API Overview](https://airtable.com/developers/web/api/introduction)
- [List Records](https://airtable.com/developers/web/api/list-records)
- [Create Records](https://airtable.com/developers/web/api/create-records)
- [Update Records](https://airtable.com/developers/web/api/update-record)
- [Delete Records](https://airtable.com/developers/web/api/delete-record)
- [Formula Reference](httpEditorial read
Docs & README
Docs source
CLAWHUB
Editorial quality
ready
Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to... Skill: API Gateway Owner: byungkyu Summary: Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to... Tags: latest:1.0.54 Version history: v1.0.54 | 2026-02-28T02:13:08.484Z | user - Minor update to documentation: GitHub is now highlighted in the API list in the skill description. - No changes to code or functionalit
Full README
Skill: API Gateway
Owner: byungkyu
Summary: Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to...
Tags: latest:1.0.54
Version history:
v1.0.54 | 2026-02-28T02:13:08.484Z | user
- Minor update to documentation: GitHub is now highlighted in the API list in the skill description.
- No changes to code or functionality.
- Clarified supported services, with updated wording in the API overview.
v1.0.53 | 2026-02-28T02:03:23.039Z | user
No changes detected in this version.
- Version 1.0.53 has no file changes compared to the previous release.
v1.0.52 | 2026-02-28T01:33:34.358Z | user
- Added three new reference files: references/manus.md, references/reducto.md, and references/zoho-projects.md.
- No changes were made to the existing documentation or code logic.
v1.0.51 | 2026-02-26T10:49:06.067Z | user
Version 1.0.51
- Added squarespace.md to the references directory.
v1.0.50 | 2026-02-24T23:05:14.288Z | user
No file changes detected for version 1.0.50.
- No updates or modifications were made in this version.
- Functionality and documentation remain unchanged.
v1.0.49 | 2026-02-24T22:49:33.856Z | user
No file changes were detected in this release.
- No updates or modifications were made to the skill's files or documentation.
- Behavior and features remain the same as the previous version.
v1.0.48 | 2026-02-24T12:16:09.346Z | user
- Added support for the Granola service (
granola, proxied atmcp.granola.ai) to the API Gateway. - New documentation file
references/granola.mdincluded. - Updated the Supported Services table to reflect the addition.
v1.0.47 | 2026-02-23T23:05:36.862Z | user
- Added documentation references for PostHog and Sentry integrations.
- No changes to core functionality or API—documentation only.
v1.0.46 | 2026-02-22T07:55:07.722Z | user
- Added guidance to use this skill when users want to interact with external services.
- No other changes detected.
v1.0.45 | 2026-02-22T04:02:27.756Z | user
- No file or documentation changes detected in this version.
- Version update only; functionality and documentation remain unchanged.
v1.0.44 | 2026-02-21T22:07:51.000Z | user
- Broader description: Now highlights support for 100+ APIs (including Google Workspace, Microsoft 365, Notion, Slack, Airtable, HubSpot, etc.).
- Security description simplified for clarity; details about API key and OAuth remain.
- The compatibility section has been streamlined and moved.
- No code, behavioral, or API changes—documentation/metadata update only.
v1.0.43 | 2026-02-21T20:47:32.709Z | user
- No changes detected in this release.
- Version: 1.0.43 remains unchanged from the previous version.
v1.0.42 | 2026-02-20T22:58:56.489Z | user
- Added YouTube to the list of supported third-party services in the description.
- Updated description to highlight support for YouTube integration.
- No code or logic changes detected.
v1.0.41 | 2026-02-19T22:10:23.459Z | user
- Updated the description for greater clarity and brevity regarding OAuth integration.
- No functional or behavioral changes; documentation only.
v1.0.40 | 2026-02-19T22:06:33.008Z | user
- Updated the skill description to clarify that it enables easy integration with third-party APIs using managed OAuth connections.
- No functional or behavioral changes introduced.
v1.0.39 | 2026-02-19T21:58:03.678Z | user
- Clarified security model: The MATON_API_KEY alone cannot access any third-party services without explicit OAuth authorization by the user.
- Improved skill description for clearer guidance on authentication and access control.
- Removed references to some third-party services in the summary for accuracy.
- No changes to code, features, or API endpoints.
v1.0.38 | 2026-02-19T20:29:21.415Z | user
- Updated description to highlight support for 100+ APIs, including popular services (Google Workspace, Outlook, Notion, GitHub, Stripe, HubSpot, Salesforce, Airtable, LinkedIn, and more).
- Improved clarity about OAuth-based access and security.
- No code or functional changes detected; documentation only update.
v1.0.37 | 2026-02-19T19:32:18.739Z | user
No changes detected in this release.
- Version 1.0.37 was published without any file changes.
- No updates to features, documentation, or configuration.
v1.0.36 | 2026-02-19T11:49:31.848Z | user
- Added new documentation file: references/microsoft-teams.md
- No changes to core functionality or existing APIs.
v1.0.35 | 2026-02-18T07:03:20.201Z | user
- No file changes detected in this version.
- No user-facing or internal modifications introduced.
- Functionality and documentation remain the same as the previous release.
v1.0.34 | 2026-02-18T02:09:18.447Z | user
- Added initial documentation for Zoho Bookings integration in
references/zoho-bookings.md. - No changes to core functionality or API; this release is documentation-focused.
v1.0.33 | 2026-02-17T20:12:00.709Z | user
No changes detected in this version.
- No file changes were made in version 1.0.33.
- No updates to features, documentation, or functionality.
v1.0.32 | 2026-02-16T22:48:24.108Z | auto
- Updated documentation for the Google Drive API in references/google-drive.md.
- No changes to functionality or code; this release contains documentation updates only.
v1.0.31 | 2026-02-15T09:45:55.023Z | user
- Added support for Dropbox Business as a new third-party integration.
- Added related documentation file: references/dropbox-business.md.
- Updated the Supported Services table to include Dropbox Business.
v1.0.30 | 2026-02-14T21:09:05.947Z | user
- Added four new reference files for Firebase, Google BigQuery, Google Classroom, and Snapchat APIs.
- Updated supported services list to include Firebase, Google BigQuery, Google Classroom, and Snapchat.
v1.0.29 | 2026-02-14T02:53:06.180Z | user
- Clarified in the description that access to third-party APIs is scoped to explicit OAuth connections; the API key alone does not grant access.
- Updated description and instructions for improved clarity and emphasis on security and explicit authorization.
- No functional changes; documentation enhancements only.
v1.0.28 | 2026-02-14T02:46:53.991Z | user
- Added new third-party API references: Clockify, GetResponse, Motion, and Toggl Track.
- Updated the Supported Services table to include Clockify, GetResponse, Motion, and Toggl Track.
- No changes to core functionality or API; documentation and reference improvements only.
v1.0.27 | 2026-02-13T12:16:21.980Z | user
- Added Confluence (
confluence) to the list of supported services in the API gateway. - Created a new documentation file:
references/confluence.md.
v1.0.26 | 2026-02-13T02:40:43.734Z | user
- Added Cal.com integration as a supported service on the API gateway.
- Introduced a new reference file: references/cal-com.md with usage details for Cal.com.
- Updated the documentation to include Cal.com in the supported services table.
v1.0.25 | 2026-02-12T19:46:27.511Z | user
- Added new reference documentation files for Clio, Netlify, PDF.co, and Podio APIs.
- Improved skill coverage and resources for third-party API integrations.
v1.0.24 | 2026-02-12T11:24:28.854Z | user
- Added support and documentation for new services: Coda, CompanyCam, ElevenLabs, Instantly, Lemlist, and Mailgun.
- Updated the Supported Services table in SKILL.md to include these newly added integrations.
- Included reference documentation files for each new service under the
references/directory.
v1.0.23 | 2026-02-11T11:50:58.465Z | user
- Added
homepagemetadata field with the value "https://maton.ai". - No other functional or documentation changes detected.
v1.0.22 | 2026-02-11T11:48:37.065Z | user
- Added support for Beehiiv, Fireflies, and SendGrid APIs.
- New reference documentation files: references/beehiiv.md, references/fireflies.md, and references/sendgrid.md.
- Updated the supported services table to include beehiiv and fireflies.
v1.0.21 | 2026-02-10T20:31:56.421Z | user
- Added a
clawdbotmetadata block specifying required environment variableMATON_API_KEY. - No other changes to functionality or documentation.
v1.0.20 | 2026-02-10T12:33:51.746Z | user
- No code or documentation changes detected in this version.
- Version bumped to 1.0.20; functionality remains unchanged.
v1.0.19 | 2026-02-10T12:32:29.179Z | user
- Added integration references for CallRail, ClickSend, and WordPress APIs.
- Listed CallRail, ClickSend, and WordPress as supported services in the documentation.
v1.0.18 | 2026-02-10T02:14:33.335Z | user
- Added support for ActiveCampaign, Brevo, Dropbox, and Twilio as new proxied apps.
- Updated documentation to include the new services in the supported services table.
- Introduced reference files for ActiveCampaign, Brevo, Dropbox, and Twilio with usage details.
v1.0.17 | 2026-02-09T11:51:21.158Z | user
- Added support for 10 new third-party APIs: Box, ClickFunnels, Cognito Forms, MailerLite, ManyChat, Quo, SignNow, Systeme, Tally, and Vimeo.
- Updated the Supported Services table in the documentation to include these new integrations.
v1.0.16 | 2026-02-08T09:49:16.598Z | user
- Added support for Basecamp, Gumroad, and Keap services to the API gateway.
- Updated documentation to include Basecamp (
basecamp), Gumroad (gumroad), and Keap (keap) in the supported services table. - Added new reference files: references/basecamp.md, references/gumroad.md, and references/keap.md.
v1.0.15 | 2026-02-08T01:43:48.414Z | user
- Added an important clarification that all gateway API paths must start with the connection's app name (e.g.,
/google-mail/gmail/v1/...). - Updated documentation to highlight this path requirement for correct routing to third-party APIs.
v1.0.14 | 2026-02-07T20:35:57.704Z | user
- Added support for Microsoft To Do and Telegram third-party APIs.
- Included new reference documentation files: microsoft-to-do.md and telegram.md.
- Updated the supported services table to list Microsoft To Do and Telegram as available integrations.
v1.0.13 | 2026-02-07T11:24:18.063Z | user
- Added support for new third-party integrations: Constant Contact, Eventbrite, Google Contacts, Google Merchant, Google Tasks, Jobber, LinkedIn, OneDrive, Square, and TickTick.
- Expanded Supported Services table to include all new apps with corresponding routing and base URL details.
- Added new API reference files for each of the newly supported services in the references directory.
v1.0.12 | 2026-02-07T02:36:47.173Z | user
- Added support for Kit and Microsoft Excel as proxied services.
- Included new reference guides: references/kit.md and references/microsoft-excel.md.
- Updated the Supported Services table and references list to reflect the new services.
v1.0.11 | 2026-02-06T23:20:22.118Z | auto
- Added support for Acuity Scheduling, Google Workspace Admin, and Todoist.
- Updated the Supported Services table in documentation to reflect new providers.
- Introduced new reference guides for each of the above services under the references/ directory.
- Cleaned up documentation and removed outdated troubleshooting information.
v1.0.10 | 2026-02-06T12:16:27.295Z | user
Added support and documentation for Zoho business apps.
- Added eight new reference guides: Zoho Bigin, Books, Calendar, CRM, Inventory, Mail, People, and Recruit.
- Updated the Supported Services table to include Zoho Bigin, Books, Calendar, CRM, Inventory, Mail, People, and Recruit with their respective app names and base URLs.
- Users can now proxy native API calls to these Zoho services using managed authentication.
v1.0.9 | 2026-02-06T04:06:33.456Z | user
- Added support for Attio, GitHub, Linear, and Monday.com as new proxied services.
- Provided new reference files for Attio, GitHub, Linear, and Monday.com integration details.
- Updated the supported services table and routing guides to include the new providers.
v1.0.8 | 2026-02-06T02:20:15.846Z | user
- Replaced all Bash/cURL API examples with equivalent Python (using urllib) scripts for usage, connection management, and authentication instructions.
- Kept all endpoint details and responses unchanged, ensuring functionality is the same.
- Updated the documentation to reflect example usage in Python throughout for a more programmatic workflow.
v1.0.7 | 2026-02-05T01:33:21.326Z | user
- Added support and documentation for Klaviyo, Mailchimp, WhatsApp Business, and WooCommerce APIs.
- Updated supported services table to include newly added providers.
- Added new reference guides: klaviyo.md, mailchimp.md, whatsapp-business.md, and woocommerce.md.
- Minor improvements to environment variable usage examples in authentication and connection sections.
v1.0.6 | 2026-02-04T08:32:14.258Z | user
- Added support and documentation for Pipedrive, Trello, and YouTube APIs.
- Updated the Supported Services table to include Pipedrive, Trello, and YouTube.
- Included new routing guides: references/pipedrive.md, references/trello.md, and references/youtube.md.
v1.0.5 | 2026-02-03T23:10:44.977Z | user
- Added a prominent troubleshooting section for 500 Internal Server Errors, explaining that these typically result from expired OAuth refresh tokens and detailing how to resolve by creating a new connection and retrying with its ID.
- No functional or interface changes; documentation update only.
- All usage instructions, API coverage, and connection management details remain unchanged.
v1.0.4 | 2026-02-03T19:27:43.151Z | user
- Added detailed reference documentation for Asana, Calendly, ClickUp, Fathom, Google Meet, Google Play, Google Slides, and Outlook in the references directory.
- Updated SKILL.md to include new supported services: Google Meet, Google Play, Google Slides, and Outlook.
- Expanded supported services table and routing guide to reflect new integrations.
- No breaking changes; existing API behavior is unchanged.
v1.0.3 | 2026-02-03T11:29:21.158Z | user
- Added support and documentation for new services: Asana, Calendly, ClickUp, and Fathom.
- Updated the Supported Services table and references section to include new providers.
- No changes to existing API usage or connection management.
v1.0.2 | 2026-02-03T08:44:01.554Z | user
- Removed the reference file for Shopify (references/shopify.md) from the documentation.
- The Shopify-specific routing guide is no longer available in the references section.
v1.0.1 | 2026-02-01T08:46:56.692Z | user
https://github.com/maton-ai/api-gateway-skill
- Removed CONTRIBUTING.md and README.md files for a leaner distribution.
- Streamlined SKILL.md: greatly reduced the skill description, removing detailed usage scenarios, trigger phrases, and granular supported actions.
- Left only a high-level overview of the API gateway's purpose and examples, focusing on essential usage and supported endpoints.
- Documentation no longer lists specific triggers or user scenarios—refer to service docs for details.
v1.0.0 | 2026-02-01T08:37:47.126Z | user
https://github.com/maton-ai/api-gateway-skill
Initial release of the api-gateway skill.
- Provides an API gateway to interact with third-party services using managed OAuth.
- Supports a wide range of platforms: Slack, HubSpot, Salesforce, Google Workspace (Gmail, Sheets, Calendar, Drive, Docs, Forms), Stripe, Shopify, QuickBooks, Xero, Airtable, Notion, Jira, and more.
- Enables automations such as sending messages, reading data, creating records, updating, and deleting across supported apps.
- Automatically injects OAuth tokens for seamless authentication.
- Includes guidance for when to invoke the skill and common user scenarios.
Archive index:
Archive v1.0.54: 123 files, 166508 bytes
Files: LICENSE.txt (1072b), references/active-campaign.md (3233b), references/acuity-scheduling.md (3108b), references/airtable.md (3054b), references/apollo.md (4131b), references/asana.md (2805b), references/attio.md (4912b), references/basecamp.md (2849b), references/beehiiv.md (2633b), references/box.md (2892b), references/brevo.md (3825b), references/cal-com.md (3463b), references/calendly.md (2685b), references/callrail.md (3152b), references/chargebee.md (5609b), references/clickfunnels.md (5461b), references/clicksend.md (2397b), references/clickup.md (2978b), references/clio.md (6245b), references/clockify.md (3805b), references/coda.md (3646b), references/cognito-forms.md (2477b), references/companycam.md (3693b), references/confluence.md (4703b), references/constant-contact.md (2536b), references/dropbox-business.md (11936b), references/dropbox.md (3130b), references/elevenlabs.md (1816b), references/eventbrite.md (4273b), references/fathom.md (1956b), references/firebase.md (3125b), references/fireflies.md (1892b), references/getresponse.md (2851b), references/github.md (2511b), references/google-ads.md (3954b), references/google-analytics-admin.md (5851b), references/google-analytics-data.md (4250b), references/google-bigquery.md (3994b), references/google-calendar.md (3814b), references/google-classroom.md (2689b), references/google-contacts.md (3340b), references/google-docs.md (3020b), references/google-drive.md (5252b), references/google-forms.md (4249b), references/google-mail.md (3647b), references/google-meet.md (2800b), references/google-merchant.md (5110b), references/google-play.md (3842b), references/google-search-console.md (3917b), references/google-sheets.md (6195b), references/google-slides.md (4609b), references/google-tasks.md (3121b), references/google-workspace-admin.md (4708b), references/granola.md (1875b), references/gumroad.md (3378b), references/hubspot.md (10065b), references/instantly.md (3024b), references/jira.md (4573b), references/jobber.md (3700b), references/jotform.md (3717b), references/keap.md (3134b), references/kit.md (3415b), references/klaviyo.md (3913b), references/lemlist.md (2490b), references/linear.md (4412b), references/linkedin.md (5546b), references/mailchimp.md (4197b), references/mailerlite.md (4108b), references/mailgun.md (4845b), references/manus.md (2426b), references/manychat.md (3674b), references/microsoft-excel.md (3895b), references/microsoft-teams.md (5999b), references/microsoft-to-do.md (3685b), references/monday.md (4550b), references/motion.md (2741b), references/netlify.md (3701b), references/notion.md (8043b), references/one-drive.md (2305b), references/outlook.md (4180b)
File v1.0.54:SKILL.md
name: api-gateway description: | Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to interact with external services. Security: The MATON_API_KEY authenticates with Maton.ai but grants NO access to third-party services by itself. Each service requires explicit OAuth authorization by the user through Maton's connect flow. Access is strictly scoped to connections the user has authorized. Provided by Maton (https://maton.ai). compatibility: Requires network access and valid Maton API key metadata: author: maton version: "1.0" clawdbot: emoji: đź§ homepage: "https://maton.ai" requires: env: - MATON_API_KEY
API Gateway
Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by Maton. The API gateway lets you call native API endpoints directly.
Quick Start
# Native Slack API call
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Base URL
https://gateway.maton.ai/{app}/{native-api-path}
Replace {app} with the service name and {native-api-path} with the actual API endpoint path.
IMPORTANT: The URL path MUST start with the connection's app name (eg. /google-mail/...). This prefix tells the gateway which app connection to use. For example, the native Gmail API path starts with gmail/v1/, so full paths look like /google-mail/gmail/v1/users/me/messages.
Authentication
All requests require the Maton API key in the Authorization header:
Authorization: Bearer $MATON_API_KEY
The API gateway automatically injects the appropriate OAuth token for the target service.
Environment Variable: You can set your API key as the MATON_API_KEY environment variable:
export MATON_API_KEY="YOUR_API_KEY"
Getting Your API Key
- Sign in or create an account at maton.ai
- Go to maton.ai/settings
- Click the copy button on the right side of API Key section to copy it
Connection Management
Connection management uses a separate base URL: https://ctrl.maton.ai
List Connections
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Query Parameters (optional):
app- Filter by service name (e.g.,slack,hubspot,salesforce)status- Filter by connection status (ACTIVE,PENDING,FAILED)
Response:
{
"connections": [
{
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=5e9...",
"app": "slack",
"metadata": {}
}
]
}
Create Connection
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'slack'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Get Connection
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Response:
{
"connection": {
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=5e9...",
"app": "slack",
"metadata": {}
}
}
Open the returned URL in a browser to complete OAuth.
Delete Connection
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Specifying Connection
If you have multiple connections for the same app, you can specify which connection to use by adding the Maton-Connection header with the connection ID:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If omitted, the gateway uses the default (oldest) active connection for that app.
Supported Services
| Service | App Name | Base URL Proxied |
|---------|----------|------------------|
| ActiveCampaign | active-campaign | {account}.api-us1.com |
| Acuity Scheduling | acuity-scheduling | acuityscheduling.com |
| Airtable | airtable | api.airtable.com |
| Apollo | apollo | api.apollo.io |
| Asana | asana | app.asana.com |
| Attio | attio | api.attio.com |
| Basecamp | basecamp | 3.basecampapi.com |
| beehiiv | beehiiv | api.beehiiv.com |
| Box | box | api.box.com |
| Brevo | brevo | api.brevo.com |
| Calendly | calendly | api.calendly.com |
| Cal.com | cal-com | api.cal.com |
| CallRail | callrail | api.callrail.com |
| Chargebee | chargebee | {subdomain}.chargebee.com |
| ClickFunnels | clickfunnels | {subdomain}.myclickfunnels.com |
| ClickSend | clicksend | rest.clicksend.com |
| ClickUp | clickup | api.clickup.com |
| Clockify | clockify | api.clockify.me |
| Coda | coda | coda.io |
| Confluence | confluence | api.atlassian.com |
| CompanyCam | companycam | api.companycam.com |
| Cognito Forms | cognito-forms | www.cognitoforms.com |
| Constant Contact | constant-contact | api.cc.email |
| Dropbox | dropbox | api.dropboxapi.com |
| Dropbox Business | dropbox-business | api.dropboxapi.com |
| ElevenLabs | elevenlabs | api.elevenlabs.io |
| Eventbrite | eventbrite | www.eventbriteapi.com |
| Fathom | fathom | api.fathom.ai |
| Firebase | firebase | firebase.googleapis.com |
| Fireflies | fireflies | api.fireflies.ai |
| GetResponse | getresponse | api.getresponse.com |
| GitHub | github | api.github.com |
| Gumroad | gumroad | api.gumroad.com |
| Granola | granola | mcp.granola.ai (MCP) |
| Google Ads | google-ads | googleads.googleapis.com |
| Google BigQuery | google-bigquery | bigquery.googleapis.com |
| Google Analytics Admin | google-analytics-admin | analyticsadmin.googleapis.com |
| Google Analytics Data | google-analytics-data | analyticsdata.googleapis.com |
| Google Calendar | google-calendar | www.googleapis.com |
| Google Classroom | google-classroom | classroom.googleapis.com |
| Google Contacts | google-contacts | people.googleapis.com |
| Google Docs | google-docs | docs.googleapis.com |
| Google Drive | google-drive | www.googleapis.com |
| Google Forms | google-forms | forms.googleapis.com |
| Gmail | google-mail | gmail.googleapis.com |
| Google Merchant | google-merchant | merchantapi.googleapis.com |
| Google Meet | google-meet | meet.googleapis.com |
| Google Play | google-play | androidpublisher.googleapis.com |
| Google Search Console | google-search-console | www.googleapis.com |
| Google Sheets | google-sheets | sheets.googleapis.com |
| Google Slides | google-slides | slides.googleapis.com |
| Google Tasks | google-tasks | tasks.googleapis.com |
| Google Workspace Admin | google-workspace-admin | admin.googleapis.com |
| HubSpot | hubspot | api.hubapi.com |
| Instantly | instantly | api.instantly.ai |
| Jira | jira | api.atlassian.com |
| Jobber | jobber | api.getjobber.com |
| JotForm | jotform | api.jotform.com |
| Keap | keap | api.infusionsoft.com |
| Kit | kit | api.kit.com |
| Klaviyo | klaviyo | a.klaviyo.com |
| Lemlist | lemlist | api.lemlist.com |
| Linear | linear | api.linear.app |
| LinkedIn | linkedin | api.linkedin.com |
| Mailchimp | mailchimp | {dc}.api.mailchimp.com |
| MailerLite | mailerlite | connect.mailerlite.com |
| Mailgun | mailgun | api.mailgun.net |
| ManyChat | manychat | api.manychat.com |
| Manus | manus | api.manus.ai |
| Microsoft Excel | microsoft-excel | graph.microsoft.com |
| Microsoft Teams | microsoft-teams | graph.microsoft.com |
| Microsoft To Do | microsoft-to-do | graph.microsoft.com |
| Monday.com | monday | api.monday.com |
| Motion | motion | api.usemotion.com |
| Netlify | netlify | api.netlify.com |
| Notion | notion | api.notion.com |
| OneDrive | one-drive | graph.microsoft.com |
| Outlook | outlook | graph.microsoft.com |
| PDF.co | pdf-co | api.pdf.co |
| Pipedrive | pipedrive | api.pipedrive.com |
| Podio | podio | api.podio.com |
| PostHog | posthog | {subdomain}.posthog.com |
| QuickBooks | quickbooks | quickbooks.api.intuit.com |
| Quo | quo | api.openphone.com |
| Reducto | reducto | platform.reducto.ai |
| Salesforce | salesforce | {instance}.salesforce.com |
| Sentry | sentry | {subdomain}.sentry.io |
| SignNow | signnow | api.signnow.com |
| Slack | slack | slack.com |
| Snapchat | snapchat | adsapi.snapchat.com |
| Square | squareup | connect.squareup.com |
| Squarespace | squarespace | api.squarespace.com |
| Stripe | stripe | api.stripe.com |
| Systeme.io | systeme | api.systeme.io |
| Tally | tally | api.tally.so |
| Telegram | telegram | api.telegram.org |
| TickTick | ticktick | api.ticktick.com |
| Todoist | todoist | api.todoist.com |
| Toggl Track | toggl-track | api.track.toggl.com |
| Trello | trello | api.trello.com |
| Twilio | twilio | api.twilio.com |
| Typeform | typeform | api.typeform.com |
| Vimeo | vimeo | api.vimeo.com |
| WhatsApp Business | whatsapp-business | graph.facebook.com |
| WooCommerce | woocommerce | {store-url}/wp-json/wc/v3 |
| WordPress.com | wordpress | public-api.wordpress.com |
| Xero | xero | api.xero.com |
| YouTube | youtube | www.googleapis.com |
| Zoho Bigin | zoho-bigin | www.zohoapis.com |
| Zoho Bookings | zoho-bookings | www.zohoapis.com |
| Zoho Books | zoho-books | www.zohoapis.com |
| Zoho Calendar | zoho-calendar | calendar.zoho.com |
| Zoho CRM | zoho-crm | www.zohoapis.com |
| Zoho Inventory | zoho-inventory | www.zohoapis.com |
| Zoho Mail | zoho-mail | mail.zoho.com |
| Zoho People | zoho-people | people.zoho.com |
| Zoho Projects | zoho-projects | projectsapi.zoho.com |
| Zoho Recruit | zoho-recruit | recruit.zoho.com |
See references/ for detailed routing guides per provider:
- ActiveCampaign - Contacts, deals, tags, lists, automations, campaigns
- Acuity Scheduling - Appointments, calendars, clients, availability
- Airtable - Records, bases, tables
- Apollo - People search, enrichment, contacts
- Asana - Tasks, projects, workspaces, webhooks
- Attio - People, companies, records, tasks
- Basecamp - Projects, to-dos, messages, schedules, documents
- beehiiv - Publications, subscriptions, posts, custom fields
- Box - Files, folders, collaborations, shared links
- Brevo - Contacts, email campaigns, transactional emails, templates
- Calendly - Event types, scheduled events, availability, webhooks
- Cal.com - Event types, bookings, schedules, availability slots, webhooks
- CallRail - Calls, trackers, companies, tags, analytics
- Chargebee - Subscriptions, customers, invoices
- ClickFunnels - Contacts, products, orders, courses, webhooks
- ClickSend - SMS, MMS, voice messages, contacts, lists
- ClickUp - Tasks, lists, folders, spaces, webhooks
- Clockify - Time tracking, projects, clients, tasks, workspaces
- Coda - Docs, pages, tables, rows, formulas, controls
- Confluence - Pages, spaces, blogposts, comments, attachments
- CompanyCam - Projects, photos, users, tags, groups, documents
- Cognito Forms - Forms, entries, documents, files
- Constant Contact - Contacts, email campaigns, lists, segments
- Dropbox - Files, folders, search, metadata, revisions, tags
- Dropbox Business - Team members, groups, team folders, devices, audit logs
- ElevenLabs - Text-to-speech, voice cloning, sound effects, audio processing
- Eventbrite - Events, venues, tickets, orders, attendees
- Fathom - Meeting recordings, transcripts, summaries, webhooks
- Firebase - Projects, web apps, Android apps, iOS apps, configurations
- Fireflies - Meeting transcripts, summaries, AskFred AI, channels
- GetResponse - Campaigns, contacts, newsletters, autoresponders, tags, segments
- GitHub - Repositories, issues, pull requests, commits
- Gumroad - Products, sales, subscribers, licenses, webhooks
- Granola - Meeting notes, transcripts, queries (MCP)
- Google Ads - Campaigns, ad groups, GAQL queries
- Google Analytics Admin - Reports, dimensions, metrics
- Google Analytics Data - Reports, dimensions, metrics
- Google BigQuery - Datasets, tables, jobs, SQL queries
- Google Calendar - Events, calendars, free/busy
- Google Classroom - Courses, coursework, students, teachers, announcements
- Google Contacts - Contacts, contact groups, people search
- Google Docs - Document creation, batch updates
- Google Drive - Files, folders, permissions
- Google Forms - Forms, questions, responses
- Gmail - Messages, threads, labels
- Google Meet - Spaces, conference records, participants
- Google Merchant - Products, inventories, promotions, reports
- Google Play - In-app products, subscriptions, reviews
- Google Search Console - Search analytics, sitemaps
- Google Sheets - Values, ranges, formatting
- Google Slides - Presentations, slides, formatting
- Google Tasks - Task lists, tasks, subtasks
- Google Workspace Admin - Users, groups, org units, domains, roles
- HubSpot - Contacts, companies, deals
- Instantly - Campaigns, leads, accounts, email outreach
- Jira - Issues, projects, JQL queries
- Jobber - Clients, jobs, invoices, quotes (GraphQL)
- JotForm - Forms, submissions, webhooks
- Keap - Contacts, companies, tags, tasks, opportunities, campaigns
- Kit - Subscribers, tags, forms, sequences, broadcasts
- Klaviyo - Profiles, lists, campaigns, flows, events
- Lemlist - Campaigns, leads, activities, schedules, unsubscribes
- Linear - Issues, projects, teams, cycles (GraphQL)
- LinkedIn - Profile, posts, shares, media uploads
- Mailchimp - Audiences, campaigns, templates, automations
- MailerLite - Subscribers, groups, campaigns, automations, forms
- Mailgun - Email sending, domains, routes, templates, mailing lists, suppressions
- ManyChat - Subscribers, tags, flows, messaging
- Manus - AI agent tasks, projects, files, webhooks
- Microsoft Excel - Workbooks, worksheets, ranges, tables, charts
- Microsoft Teams - Teams, channels, messages, members, chats
- Microsoft To Do - Task lists, tasks, checklist items, linked resources
- Monday.com - Boards, items, columns, groups (GraphQL)
- Motion - Tasks, projects, workspaces, schedules
- Netlify - Sites, deploys, builds, DNS, environment variables
- Notion - Pages, databases, blocks
- OneDrive - Files, folders, drives, sharing
- Outlook - Mail, calendar, contacts
- PDF.co - PDF conversion, merge, split, edit, text extraction, barcodes
- Pipedrive - Deals, persons, organizations, activities
- Podio - Organizations, workspaces, apps, items, tasks, comments
- PostHog - Product analytics, feature flags, session recordings, experiments, HogQL queries
- QuickBooks - Customers, invoices, reports
- Quo - Calls, messages, contacts, conversations, webhooks
- Reducto - Document parsing, extraction, splitting, editing
- Salesforce - SOQL, sObjects, CRUD
- SignNow - Documents, templates, invites, e-signatures
- SendGrid - Email sending, contacts, templates, suppressions, statistics
- Sentry - Issues, events, projects, teams, releases
- Slack - Messages, channels, users
- Snapchat - Ad accounts, campaigns, ad squads, ads, creatives, audiences
- Square - Payments, customers, orders, catalog, inventory, invoices
- Squarespace - Products, inventory, orders, profiles, transactions
- Stripe - Customers, subscriptions, payments
- Systeme.io - Contacts, tags, courses, communities, webhooks
- Tally - Forms, submissions, workspaces, webhooks
- Telegram - Messages, chats, bots, updates, polls
- TickTick - Tasks, projects, task lists
- Todoist - Tasks, projects, sections, labels, comments
- Toggl Track - Time entries, projects, clients, tags, workspaces
- Trello - Boards, lists, cards, checklists
- Twilio - SMS, voice calls, phone numbers, messaging
- Typeform - Forms, responses, insights
- Vimeo - Videos, folders, albums, comments, likes
- WhatsApp Business - Messages, templates, media
- WooCommerce - Products, orders, customers, coupons
- WordPress.com - Posts, pages, sites, users, settings
- Xero - Contacts, invoices, reports
- YouTube - Videos, playlists, channels, subscriptions
- Zoho Bigin - Contacts, companies, pipelines, products
- Zoho Bookings - Appointments, services, staff, workspaces
- Zoho Books - Invoices, contacts, bills, expenses
- Zoho Calendar - Calendars, events, attendees, reminders
- Zoho CRM - Leads, contacts, accounts, deals, search
- Zoho Inventory - Items, sales orders, invoices, purchase orders, bills
- Zoho Mail - Messages, folders, labels, attachments
- Zoho People - Employees, departments, designations, attendance, leave
- Zoho Projects - Projects, tasks, milestones, tasklists, comments
- Zoho Recruit - Candidates, job openings, interviews, applications
Examples
Slack - Post Message (Native API)
# Native Slack API: POST https://slack.com/api/chat.postMessage
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json; charset=utf-8')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
HubSpot - Create Contact (Native API)
# Native HubSpot API: POST https://api.hubapi.com/crm/v3/objects/contacts
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'properties': {'email': 'john@example.com', 'firstname': 'John', 'lastname': 'Doe'}}).encode()
req = urllib.request.Request('https://gateway.maton.ai/hubspot/crm/v3/objects/contacts', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Google Sheets - Get Spreadsheet Values (Native API)
# Native Sheets API: GET https://sheets.googleapis.com/v4/spreadsheets/{id}/values/{range}
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/google-sheets/v4/spreadsheets/122BS1sFN2RKL8AOUQjkLdubzOwgqzPT64KfZ2rvYI4M/values/Sheet1!A1:B2')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Salesforce - SOQL Query (Native API)
# Native Salesforce API: GET https://{instance}.salesforce.com/services/data/v64.0/query?q=...
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/salesforce/services/data/v64.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Airtable - List Tables (Native API)
# Native Airtable API: GET https://api.airtable.com/v0/meta/bases/{id}/tables
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/airtable/v0/meta/bases/appgqan2NzWGP5sBK/tables')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Notion - Query Database (Native API)
# Native Notion API: POST https://api.notion.com/v1/data_sources/{id}/query
python <<'EOF'
import urllib.request, os, json
data = json.dumps({}).encode()
req = urllib.request.Request('https://gateway.maton.ai/notion/v1/data_sources/23702dc5-9a3b-8001-9e1c-000b5af0a980/query', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Notion-Version', '2025-09-03')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Stripe - List Customers (Native API)
# Native Stripe API: GET https://api.stripe.com/v1/customers
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/stripe/v1/customers?limit=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Code Examples
JavaScript (Node.js)
const response = await fetch('https://gateway.maton.ai/slack/api/chat.postMessage', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({ channel: 'C0123456', text: 'Hello!' })
});
Python
import os
import requests
response = requests.post(
'https://gateway.maton.ai/slack/api/chat.postMessage',
headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
json={'channel': 'C0123456', 'text': 'Hello!'}
)
Error Handling
| Status | Meaning | |--------|---------| | 400 | Missing connection for the requested app | | 401 | Invalid or missing Maton API key | | 429 | Rate limited (10 requests/second per account) | | 500 | Internal Server Error | | 4xx/5xx | Passthrough error from the target API |
Errors from the target API are passed through with their original status codes and response bodies.
Troubleshooting: API Key Issues
- Check that the
MATON_API_KEYenvironment variable is set:
echo $MATON_API_KEY
- Verify the API key is valid by listing connections:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Troubleshooting: Invalid App Name
- Verify your URL path starts with the correct app name. The path must begin with
/google-mail/. For example:
- Correct:
https://gateway.maton.ai/google-mail/gmail/v1/users/me/messages - Incorrect:
https://gateway.maton.ai/gmail/v1/users/me/messages
- Ensure you have an active connection for the app. List your connections to verify:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-mail&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Troubleshooting: Server Error
A 500 error may indicate an expired OAuth token. Try creating a new connection via the Connection Management section above and completing OAuth authorization. If the new connection is "ACTIVE", delete the old connection to ensure the gateway uses the new one.
Rate Limits
- 10 requests per second per account
- Target API rate limits also apply
Notes
- When using curl with URLs containing brackets (
fields[],sort[],records[]), use the-gflag to disable glob parsing - When piping curl output to
jq, environment variables may not expand correctly in some shells, which can cause "Invalid API key" errors
Tips
-
Use native API docs: Refer to each service's official API documentation for endpoint paths and parameters.
-
Headers are forwarded: Custom headers (except
HostandAuthorization) are forwarded to the target API. -
Query params work: URL query parameters are passed through to the target API.
-
All HTTP methods supported: GET, POST, PUT, PATCH, DELETE are all supported.
-
QuickBooks special case: Use
:realmIdin the path and it will be replaced with the connected realm ID.
Optional
File v1.0.54:_meta.json
{ "ownerId": "kn75240wq8bnv2qm2xgry748jd80b9r0", "slug": "api-gateway", "version": "1.0.54", "publishedAt": 1772244788484 }
File v1.0.54:references/active-campaign.md
ActiveCampaign Routing Reference
App name: active-campaign
Base URL proxied: {account}.api-us1.com
API Path Pattern
/active-campaign/api/3/{resource}
Common Endpoints
Contacts
List Contacts
GET /active-campaign/api/3/contacts
Get Contact
GET /active-campaign/api/3/contacts/{contactId}
Create Contact
POST /active-campaign/api/3/contacts
Content-Type: application/json
{
"contact": {
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe"
}
}
Update Contact
PUT /active-campaign/api/3/contacts/{contactId}
Delete Contact
DELETE /active-campaign/api/3/contacts/{contactId}
Tags
List Tags
GET /active-campaign/api/3/tags
Create Tag
POST /active-campaign/api/3/tags
Content-Type: application/json
{
"tag": {
"tag": "Tag Name",
"tagType": "contact"
}
}
Contact Tags
Add Tag to Contact
POST /active-campaign/api/3/contactTags
Content-Type: application/json
{
"contactTag": {
"contact": "1",
"tag": "1"
}
}
Remove Tag from Contact
DELETE /active-campaign/api/3/contactTags/{contactTagId}
Lists
List All Lists
GET /active-campaign/api/3/lists
Create List
POST /active-campaign/api/3/lists
Deals
List Deals
GET /active-campaign/api/3/deals
Create Deal
POST /active-campaign/api/3/deals
Content-Type: application/json
{
"deal": {
"title": "New Deal",
"value": "10000",
"currency": "usd",
"contact": "1",
"stage": "1"
}
}
Deal Stages & Pipelines
List Deal Stages
GET /active-campaign/api/3/dealStages
List Pipelines (Deal Groups)
GET /active-campaign/api/3/dealGroups
Automations
List Automations
GET /active-campaign/api/3/automations
Campaigns
List Campaigns
GET /active-campaign/api/3/campaigns
Users
List Users
GET /active-campaign/api/3/users
Accounts
List Accounts
GET /active-campaign/api/3/accounts
Custom Fields
List Fields
GET /active-campaign/api/3/fields
Notes
List Notes
GET /active-campaign/api/3/notes
Webhooks
List Webhooks
GET /active-campaign/api/3/webhooks
Pagination
Uses offset-based pagination:
GET /active-campaign/api/3/contacts?limit=20&offset=0
Parameters:
limit- Results per page (default: 20)offset- Starting index
Response includes meta with total:
{
"contacts": [...],
"meta": {
"total": "150"
}
}
Notes
- All endpoints require
/api/3/prefix - Request bodies use singular resource names (e.g.,
{"contact": {...}}) - IDs returned as strings
- Rate limit: 5 requests per second per account
- DELETE returns 200 OK (not 204)
Resources
File v1.0.54:references/acuity-scheduling.md
Acuity Scheduling Routing Reference
App name: acuity-scheduling
Base URL proxied: acuityscheduling.com
API Path Pattern
/acuity-scheduling/api/v1/{resource}
The gateway automatically prepends /api/v1 when proxying to Acuity.
Common Endpoints
Get Account Info
GET /acuity-scheduling/api/v1/me
List Appointments
GET /acuity-scheduling/api/v1/appointments?max=100&minDate=2026-02-01
Get Appointment
GET /acuity-scheduling/api/v1/appointments/{id}
Create Appointment
POST /acuity-scheduling/api/v1/appointments
Content-Type: application/json
{
"datetime": "2026-02-15T09:00",
"appointmentTypeID": 123,
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com"
}
Update Appointment
PUT /acuity-scheduling/api/v1/appointments/{id}
Content-Type: application/json
{
"firstName": "Jane",
"lastName": "Smith"
}
Cancel Appointment
PUT /acuity-scheduling/api/v1/appointments/{id}/cancel
Reschedule Appointment
PUT /acuity-scheduling/api/v1/appointments/{id}/reschedule
Content-Type: application/json
{
"datetime": "2026-02-20T10:00"
}
List Calendars
GET /acuity-scheduling/api/v1/calendars
List Appointment Types
GET /acuity-scheduling/api/v1/appointment-types
Get Available Dates
GET /acuity-scheduling/api/v1/availability/dates?month=2026-02&appointmentTypeID=123
Get Available Times
GET /acuity-scheduling/api/v1/availability/times?date=2026-02-04&appointmentTypeID=123
List Clients
GET /acuity-scheduling/api/v1/clients?search=John
Create Client
POST /acuity-scheduling/api/v1/clients
Content-Type: application/json
{
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com"
}
List Blocks
GET /acuity-scheduling/api/v1/blocks?calendarID=1234
Create Block
POST /acuity-scheduling/api/v1/blocks
Content-Type: application/json
{
"start": "2026-02-15T12:00",
"end": "2026-02-15T13:00",
"calendarID": 1234
}
Delete Block
DELETE /acuity-scheduling/api/v1/blocks/{id}
List Forms
GET /acuity-scheduling/api/v1/forms
List Labels
GET /acuity-scheduling/api/v1/labels
Notes
- Datetime values must be parseable by PHP's
strtotime()function - Timezones use IANA format (e.g., "America/New_York")
- Use
maxparameter to limit results (default: 100) - Use
minDateandmaxDatefor date-range filtering - Client update/delete only works for clients with existing appointments
- Rescheduling requires the new datetime to be an available time slot
Resources
File v1.0.54:references/airtable.md
Airtable Routing Reference
App name: airtable
Base URL proxied: api.airtable.com
API Path Pattern
/airtable/v0/{baseId}/{tableIdOrName}
Common Endpoints
List Records
GET /airtable/v0/{baseId}/{tableIdOrName}?maxRecords=100
With view:
GET /airtable/v0/{baseId}/{tableIdOrName}?view=Grid%20view&maxRecords=100
With filter formula:
GET /airtable/v0/{baseId}/{tableIdOrName}?filterByFormula={Status}='Active'
With field selection:
GET /airtable/v0/{baseId}/{tableIdOrName}?fields[]=Name&fields[]=Status&fields[]=Email
With sorting:
GET /airtable/v0/{baseId}/{tableIdOrName}?sort[0][field]=Created&sort[0][direction]=desc
Get Record
GET /airtable/v0/{baseId}/{tableIdOrName}/{recordId}
Create Records
POST /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"fields": {
"Name": "New Record",
"Status": "Active",
"Email": "test@example.com"
}
}
]
}
Update Records (PATCH - partial update)
PATCH /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {
"Status": "Completed"
}
}
]
}
Update Records (PUT - full replace)
PUT /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {
"Name": "Updated Name",
"Status": "Active"
}
}
]
}
Delete Records
DELETE /airtable/v0/{baseId}/{tableIdOrName}?records[]=recXXXXX&records[]=recYYYYY
List Bases
GET /airtable/v0/meta/bases
Get Base Schema
GET /airtable/v0/meta/bases/{baseId}/tables
Pagination
Parameters:
pageSize- Number of records per request (max 100, default 100)maxRecords- Maximum total records across all pagesoffset- Cursor for next page (returned in response)
Response includes offset when more records exist:
{
"records": [...],
"offset": "itrXXXXXXXXXXX"
}
Use offset for next page:
GET /airtable/v0/{baseId}/{tableIdOrName}?pageSize=50&offset=itrXXXXXXXXXXX
Notes
- Authentication is automatic via OAuth
- Base IDs start with
app - Table IDs start with
tbl(can also use table name) - Record IDs start with
rec - Maximum 100 records per request for create/update
- Maximum 10 records per delete request
- Filter formulas use Airtable formula syntax
Resources
File v1.0.54:references/apollo.md
Apollo Routing Reference
App name: apollo
Base URL proxied: api.apollo.io
API Path Pattern
/apollo/v1/{endpoint}
Common Endpoints
People
Search People
POST /apollo/v1/mixed_people/api_search
Content-Type: application/json
{
"q_organization_name": "Google",
"page": 1,
"per_page": 25
}
Get Person
GET /apollo/v1/people/{personId}
Enrich Person
POST /apollo/v1/people/match
Content-Type: application/json
{
"email": "john@example.com"
}
Or by LinkedIn:
POST /apollo/v1/people/match
Content-Type: application/json
{
"linkedin_url": "https://linkedin.com/in/johndoe"
}
Organizations
Search Organizations
POST /apollo/v1/organizations/search
Content-Type: application/json
{
"q_organization_name": "Google",
"page": 1,
"per_page": 25
}
Enrich Organization
POST /apollo/v1/organizations/enrich
Content-Type: application/json
{
"domain": "google.com"
}
Contacts
Search Contacts
POST /apollo/v1/contacts/search
Content-Type: application/json
{
"page": 1,
"per_page": 25
}
Create Contact
POST /apollo/v1/contacts
Content-Type: application/json
{
"first_name": "John",
"last_name": "Doe",
"email": "john@example.com",
"organization_name": "Acme Corp"
}
Update Contact
PUT /apollo/v1/contacts/{contactId}
Content-Type: application/json
{
"first_name": "Jane"
}
Accounts
Search Accounts
POST /apollo/v1/accounts/search
Content-Type: application/json
{
"page": 1,
"per_page": 25
}
Create Account
POST /apollo/v1/accounts
Content-Type: application/json
{
"name": "Acme Corp",
"domain": "acme.com"
}
Sequences
Search Sequences
POST /apollo/v1/emailer_campaigns/search
Content-Type: application/json
{
"page": 1,
"per_page": 25
}
Add Contact to Sequence
POST /apollo/v1/emailer_campaigns/{campaignId}/add_contact_ids
Content-Type: application/json
{
"contact_ids": ["contact_id_1", "contact_id_2"]
}
Search Email Messages
POST /apollo/v1/emailer_messages/search
Content-Type: application/json
{
"contact_id": "{contactId}"
}
Labels
List Labels
GET /apollo/v1/labels
Search Filters
Common search parameters:
q_organization_name- Company nameq_person_title- Job titleperson_locations- Array of locationsorganization_num_employees_ranges- Employee count rangesq_keywords- General keyword search
Notes
- Authentication is automatic - the router injects the API key
- Pagination uses
pageandper_pageparameters in POST body - Most list endpoints use POST with
/searchsuffix (not GET) - Email enrichment consumes credits
- Rate limits apply per endpoint
people/searchandmixed_people/searchare deprecated - usemixed_people/api_searchinstead
Resources
- API Overview
- Search People
- Enrich Person
- Search Organizations
- Enrich Organization
- Search Contacts
- Create Contact
- Update Contact
- Search Accounts
- Create Account
- Search Sequences
- Add Contacts to Sequence
- Search Email Messages
- List Labels
- LLM Reference
File v1.0.54:references/asana.md
Asana Routing Reference
App name: asana
Base URL proxied: app.asana.com
API Path Pattern
/asana/api/1.0/{resource}
Common Endpoints
Get Current User
GET /asana/api/1.0/users/me
List Workspaces
GET /asana/api/1.0/workspaces
List Tasks
GET /asana/api/1.0/tasks?project=PROJECT_GID&opt_fields=name,completed,due_on
Get a Task
GET /asana/api/1.0/tasks/{task_gid}
Create a Task
POST /asana/api/1.0/tasks
Content-Type: application/json
{
"data": {
"name": "New task",
"projects": ["PROJECT_GID"],
"assignee": "USER_GID",
"due_on": "2025-03-20",
"notes": "Task description"
}
}
Update a Task
PUT /asana/api/1.0/tasks/{task_gid}
Content-Type: application/json
{
"data": {
"completed": true
}
}
Delete a Task
DELETE /asana/api/1.0/tasks/{task_gid}
Get Subtasks
GET /asana/api/1.0/tasks/{task_gid}/subtasks
Create Subtask
POST /asana/api/1.0/tasks/{task_gid}/subtasks
Content-Type: application/json
{
"data": {
"name": "Subtask name"
}
}
List Projects
GET /asana/api/1.0/projects?workspace=WORKSPACE_GID&opt_fields=name,owner,due_date
Get a Project
GET /asana/api/1.0/projects/{project_gid}
Create a Project
POST /asana/api/1.0/projects
Content-Type: application/json
{
"data": {
"name": "New Project",
"workspace": "WORKSPACE_GID"
}
}
List Users in Workspace
GET /asana/api/1.0/workspaces/{workspace_gid}/users?opt_fields=name,email
Create Webhook
POST /asana/api/1.0/webhooks
Content-Type: application/json
{
"data": {
"resource": "PROJECT_OR_TASK_GID",
"target": "https://example.com/webhook",
"filters": [
{
"resource_type": "task",
"action": "changed",
"fields": ["completed", "due_on"]
}
]
}
}
Delete Webhook
DELETE /asana/api/1.0/webhooks/{webhook_gid}
Notes
- Resource IDs (GIDs) are strings
- Timestamps are in ISO 8601 format
- Use
opt_fieldsto specify which fields to return in responses - Workspaces are the highest-level organizational unit
- Use cursor-based pagination with
offsetparameter - Webhook creation requires the target URL to respond with 200 status
Resources
File v1.0.54:references/attio.md
Attio Routing Reference
App name: attio
Base URL proxied: api.attio.com
API Path Pattern
/attio/v2/{resource}
Common Endpoints
List Objects
GET /attio/v2/objects
Get Object
GET /attio/v2/objects/{object}
List Attributes
GET /attio/v2/objects/{object}/attributes
Query Records
POST /attio/v2/objects/{object}/records/query
Content-Type: application/json
{
"limit": 50,
"offset": 0
}
Get Record
GET /attio/v2/objects/{object}/records/{record_id}
Create Record
POST /attio/v2/objects/{object}/records
Content-Type: application/json
{
"data": {
"values": {
"name": [{"first_name": "John", "last_name": "Doe", "full_name": "John Doe"}],
"email_addresses": ["john@example.com"]
}
}
}
Update Record
PATCH /attio/v2/objects/{object}/records/{record_id}
Content-Type: application/json
{
"data": {
"values": {
"job_title": "Engineer"
}
}
}
Delete Record
DELETE /attio/v2/objects/{object}/records/{record_id}
List Tasks
GET /attio/v2/tasks?limit=50
Create Task
POST /attio/v2/tasks
Content-Type: application/json
{
"data": {
"content": "Task description",
"format": "plaintext",
"deadline_at": null,
"assignees": [],
"linked_records": []
}
}
List Workspace Members
GET /attio/v2/workspace_members
Identify Self
GET /attio/v2/self
Notes
List Notes
GET /attio/v2/notes?limit=50&parent_object={object}&parent_record_id={record_id}
Get Note
GET /attio/v2/notes/{note_id}
Create Note
POST /attio/v2/notes
Content-Type: application/json
{
"data": {
"format": "plaintext",
"title": "Meeting Summary",
"content": "Note content here",
"parent_object": "companies",
"parent_record_id": "{record_id}",
"created_by_actor": {
"type": "workspace-member",
"id": "{workspace_member_id}"
}
}
}
Delete Note
DELETE /attio/v2/notes/{note_id}
Comments
Create Comment on Record
POST /attio/v2/comments
Content-Type: application/json
{
"data": {
"format": "plaintext",
"content": "Comment text",
"author": {
"type": "workspace-member",
"id": "{workspace_member_id}"
},
"record": {
"object": "companies",
"record_id": "{record_id}"
}
}
}
Reply to Comment Thread
POST /attio/v2/comments
Content-Type: application/json
{
"data": {
"format": "plaintext",
"content": "This is a reply",
"author": {
"type": "workspace-member",
"id": "{workspace_member_id}"
},
"thread_id": "{thread_id}"
}
}
Lists
List All Lists
GET /attio/v2/lists
Get List
GET /attio/v2/lists/{list_id}
List Entries
Query List Entries
POST /attio/v2/lists/{list}/entries/query
Content-Type: application/json
{
"limit": 50,
"offset": 0
}
Create List Entry
POST /attio/v2/lists/{list}/entries
Content-Type: application/json
{
"data": {
"parent_record_id": "{record_id}",
"parent_object": "companies",
"entry_values": {}
}
}
Get List Entry
GET /attio/v2/lists/{list}/entries/{entry_id}
Update List Entry
PATCH /attio/v2/lists/{list}/entries/{entry_id}
Content-Type: application/json
{
"data": {
"entry_values": {
"status": "Active"
}
}
}
Delete List Entry
DELETE /attio/v2/lists/{list}/entries/{entry_id}
Meetings
List Meetings
GET /attio/v2/meetings?limit=50
Get Meeting
GET /attio/v2/meetings/{meeting_id}
Call Recordings
List Call Recordings for Meeting
GET /attio/v2/meetings/{meeting_id}/call_recordings?limit=50
Get Call Recording
GET /attio/v2/meetings/{meeting_id}/call_recordings/{call_recording_id}
Usage Notes
- Object slugs are lowercase snake_case (e.g.,
people,companies) - Record IDs are UUIDs
- For personal-name attributes, include
full_namewhen creating records - Task creation requires
format,deadline_at,assignees, andlinked_recordsfields - Note creation requires
format,content,parent_object, andparent_record_id - Comment creation requires
format,content,author, plus one ofrecord,entry, orthread_id - Meetings use cursor-based pagination
- Rate limits: 100 read/sec, 25 write/sec
- Pagination uses
limitandoffsetparameters (orcursorfor meetings)
Resources
File v1.0.54:references/basecamp.md
Basecamp Routing Reference
App name: basecamp
Base URL proxied: 3.basecampapi.com/{account_id}
Note: The gateway automatically injects the account ID from the OAuth connection.
API Path Pattern
/basecamp/{resource}.json
All paths must end with .json.
Common Endpoints
Get Current User
GET /basecamp/my/profile.json
List People
GET /basecamp/people.json
List Projects
GET /basecamp/projects.json
Get Project
GET /basecamp/projects/{project_id}.json
Returns project with dock array containing tool IDs.
Create Project
POST /basecamp/projects.json
Content-Type: application/json
{
"name": "Project Name",
"description": "Description"
}
Get Todoset
GET /basecamp/buckets/{project_id}/todosets/{todoset_id}.json
List Todolists
GET /basecamp/buckets/{project_id}/todosets/{todoset_id}/todolists.json
List Todos
GET /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json
Create Todo
POST /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json
Content-Type: application/json
{
"content": "Todo content",
"due_on": "2026-02-15",
"assignee_ids": [123]
}
Complete Todo
POST /basecamp/buckets/{project_id}/todos/{todo_id}/completion.json
Get Message Board
GET /basecamp/buckets/{project_id}/message_boards/{message_board_id}.json
List Messages
GET /basecamp/buckets/{project_id}/message_boards/{message_board_id}/messages.json
Get Schedule
GET /basecamp/buckets/{project_id}/schedules/{schedule_id}.json
List Schedule Entries
GET /basecamp/buckets/{project_id}/schedules/{schedule_id}/entries.json
Get Vault (Documents)
GET /basecamp/buckets/{project_id}/vaults/{vault_id}.json
List Documents
GET /basecamp/buckets/{project_id}/vaults/{vault_id}/documents.json
List Campfires
GET /basecamp/chats.json
Trash Recording
PUT /basecamp/buckets/{project_id}/recordings/{recording_id}/status/trashed.json
Key Concepts
- Bucket: Project content container (bucket_id = project_id)
- Dock: Per-project tool list with
id,name,enabled - Recording: Any content item (todos, messages, documents)
Pagination
Uses Link header with rel="next":
Link: <url>; rel="next"
X-Total-Count: 150
Notes
- All paths must end with
.json - Gateway injects account ID automatically
- Uses Basecamp 4 API (bc3-api)
- Rate limit: ~50 requests per 10 seconds per IP
- Check
enabled: truein dock before using tools
Resources
File v1.0.54:references/beehiiv.md
beehiiv Routing Reference
App name: beehiiv
Base URL proxied: api.beehiiv.com
API Path Pattern
/beehiiv/v2/{resource}
Common Endpoints
Publications
List Publications
GET /beehiiv/v2/publications
Get Publication
GET /beehiiv/v2/publications/{publication_id}
Subscriptions
List Subscriptions
GET /beehiiv/v2/publications/{publication_id}/subscriptions
Get Subscription by ID
GET /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}
Get Subscription by Email
GET /beehiiv/v2/publications/{publication_id}/subscriptions/by_email/{email}
Create Subscription
POST /beehiiv/v2/publications/{publication_id}/subscriptions
Content-Type: application/json
{
"email": "subscriber@example.com",
"utm_source": "api"
}
Update Subscription
PATCH /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}
Delete Subscription
DELETE /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}
Posts
List Posts
GET /beehiiv/v2/publications/{publication_id}/posts
Get Post
GET /beehiiv/v2/publications/{publication_id}/posts/{post_id}
Custom Fields
List Custom Fields
GET /beehiiv/v2/publications/{publication_id}/custom_fields
Create Custom Field
POST /beehiiv/v2/publications/{publication_id}/custom_fields
Segments
GET /beehiiv/v2/publications/{publication_id}/segments
GET /beehiiv/v2/publications/{publication_id}/segments/{segment_id}
Tiers
GET /beehiiv/v2/publications/{publication_id}/tiers
POST /beehiiv/v2/publications/{publication_id}/tiers
PATCH /beehiiv/v2/publications/{publication_id}/tiers/{tier_id}
Automations
GET /beehiiv/v2/publications/{publication_id}/automations
GET /beehiiv/v2/publications/{publication_id}/automations/{automation_id}
Pagination
Cursor-based (recommended) or page-based (deprecated):
# Cursor-based
GET /beehiiv/v2/publications/{pub_id}/subscriptions?limit=10&cursor={next_cursor}
# Page-based (max 100 pages)
GET /beehiiv/v2/publications?page=2&limit=10
Notes
- Publication IDs start with
pub_ - Subscription IDs start with
sub_ - Timestamps are Unix timestamps
- Cursor-based pagination is recommended
- Page-based pagination limited to 100 pages
Resources
File v1.0.54:references/box.md
Box Routing Reference
App name: box
Base URL proxied: api.box.com
API Path Pattern
/box/2.0/{resource}
Common Endpoints
Get Current User
GET /box/2.0/users/me
Get User
GET /box/2.0/users/{user_id}
Get Folder
GET /box/2.0/folders/{folder_id}
Root folder ID is 0.
List Folder Items
GET /box/2.0/folders/{folder_id}/items
GET /box/2.0/folders/{folder_id}/items?limit=100&offset=0
Create Folder
POST /box/2.0/folders
Content-Type: application/json
{
"name": "New Folder",
"parent": {"id": "0"}
}
Update Folder
PUT /box/2.0/folders/{folder_id}
Content-Type: application/json
{
"name": "Updated Name",
"description": "Description"
}
Copy Folder
POST /box/2.0/folders/{folder_id}/copy
Content-Type: application/json
{
"name": "Copied Folder",
"parent": {"id": "0"}
}
Delete Folder
DELETE /box/2.0/folders/{folder_id}
DELETE /box/2.0/folders/{folder_id}?recursive=true
Get File
GET /box/2.0/files/{file_id}
Download File
GET /box/2.0/files/{file_id}/content
Update File
PUT /box/2.0/files/{file_id}
Copy File
POST /box/2.0/files/{file_id}/copy
Delete File
DELETE /box/2.0/files/{file_id}
Create Shared Link
PUT /box/2.0/folders/{folder_id}
Content-Type: application/json
{
"shared_link": {"access": "open"}
}
List Collaborations
GET /box/2.0/folders/{folder_id}/collaborations
Create Collaboration
POST /box/2.0/collaborations
Content-Type: application/json
{
"item": {"type": "folder", "id": "123"},
"accessible_by": {"type": "user", "login": "user@example.com"},
"role": "editor"
}
Search
GET /box/2.0/search?query=keyword
Events
GET /box/2.0/events
Trash
GET /box/2.0/folders/trash/items
DELETE /box/2.0/files/{file_id}/trash
DELETE /box/2.0/folders/{folder_id}/trash
Collections
GET /box/2.0/collections
GET /box/2.0/collections/{collection_id}/items
Recent Items
GET /box/2.0/recent_items
Webhooks
GET /box/2.0/webhooks
POST /box/2.0/webhooks
DELETE /box/2.0/webhooks/{webhook_id}
Pagination
Offset-based pagination:
GET /box/2.0/folders/0/items?limit=100&offset=0
Response:
{
"total_count": 250,
"entries": [...],
"offset": 0,
"limit": 100
}
Notes
- Root folder ID is
0 - File uploads use
upload.box.com(different base URL) - Delete operations return 204 No Content
- Some operations require enterprise admin permissions
- Use
fieldsparameter to select specific fields
Resources
File v1.0.54:references/brevo.md
Brevo Routing Reference
App name: brevo
Base URL proxied: api.brevo.com
API Path Pattern
/brevo/v3/{resource}
Common Endpoints
Account
GET /brevo/v3/account
Contacts
List Contacts
GET /brevo/v3/contacts?limit=50&offset=0
Get Contact
GET /brevo/v3/contacts/{identifier}
Create Contact
POST /brevo/v3/contacts
Content-Type: application/json
{
"email": "contact@example.com",
"attributes": {"FIRSTNAME": "John", "LASTNAME": "Doe"},
"listIds": [2]
}
Update Contact
PUT /brevo/v3/contacts/{identifier}
Content-Type: application/json
{
"attributes": {"FIRSTNAME": "Updated"}
}
Delete Contact
DELETE /brevo/v3/contacts/{identifier}
Lists
List All Lists
GET /brevo/v3/contacts/lists
Create List
POST /brevo/v3/contacts/lists
Content-Type: application/json
{
"name": "New List",
"folderId": 1
}
Add Contacts to List
POST /brevo/v3/contacts/lists/{listId}/contacts/add
Content-Type: application/json
{
"emails": ["contact@example.com"]
}
Folders
List Folders
GET /brevo/v3/contacts/folders
Create Folder
POST /brevo/v3/contacts/folders
Content-Type: application/json
{
"name": "New Folder"
}
Transactional Emails
Send Email
POST /brevo/v3/smtp/email
Content-Type: application/json
{
"sender": {"name": "John", "email": "john@example.com"},
"to": [{"email": "recipient@example.com", "name": "Jane"}],
"subject": "Hello!",
"htmlContent": "<html><body><h1>Hi!</h1></body></html>"
}
Get Email Statistics
GET /brevo/v3/smtp/statistics/events?limit=50
Email Templates
List Templates
GET /brevo/v3/smtp/templates
Create Template
POST /brevo/v3/smtp/templates
Content-Type: application/json
{
"sender": {"name": "Company", "email": "noreply@company.com"},
"templateName": "Welcome Email",
"subject": "Welcome {{params.name}}!",
"htmlContent": "<html><body><h1>Hello {{params.name}}!</h1></body></html>"
}
Email Campaigns
List Campaigns
GET /brevo/v3/emailCampaigns
Create Campaign
POST /brevo/v3/emailCampaigns
Content-Type: application/json
{
"name": "Newsletter",
"subject": "Monthly Update",
"sender": {"name": "Company", "email": "news@company.com"},
"htmlContent": "<html><body><h1>News</h1></body></html>",
"recipients": {"listIds": [2]}
}
Send Campaign
POST /brevo/v3/emailCampaigns/{campaignId}/sendNow
Senders
List Senders
GET /brevo/v3/senders
Create Sender
POST /brevo/v3/senders
Content-Type: application/json
{
"name": "Marketing",
"email": "marketing@company.com"
}
Attributes
List Attributes
GET /brevo/v3/contacts/attributes
Pagination
Brevo uses offset-based pagination:
GET /brevo/v3/contacts?limit=50&offset=0
Parameters:
limit- Results per page (max varies by endpoint, typically 500)offset- Starting index (0-based)
Response includes count:
{
"contacts": [...],
"count": 150
}
Notes
- All endpoints require
/v3/prefix - Attribute names must be UPPERCASE
- Contact identifiers: email, phone, or ID
- Template parameters:
{{params.name}}syntax - PUT/DELETE return 204 No Content on success
- Rate limit: 300 calls/min (free), higher on paid plans
Resources
Archive v1.0.53: 123 files, 166506 bytes
Files: LICENSE.txt (1072b), references/active-campaign.md (3233b), references/acuity-scheduling.md (3108b), references/airtable.md (3054b), references/apollo.md (4131b), references/asana.md (2805b), references/attio.md (4912b), references/basecamp.md (2849b), references/beehiiv.md (2633b), references/box.md (2892b), references/brevo.md (3825b), references/cal-com.md (3463b), references/calendly.md (2685b), references/callrail.md (3152b), references/chargebee.md (5609b), references/clickfunnels.md (5461b), references/clicksend.md (2397b), references/clickup.md (2978b), references/clio.md (6245b), references/clockify.md (3805b), references/coda.md (3646b), references/cognito-forms.md (2477b), references/companycam.md (3693b), references/confluence.md (4703b), references/constant-contact.md (2536b), references/dropbox-business.md (11936b), references/dropbox.md (3130b), references/elevenlabs.md (1816b), references/eventbrite.md (4273b), references/fathom.md (1956b), references/firebase.md (3125b), references/fireflies.md (1892b), references/getresponse.md (2851b), references/github.md (2511b), references/google-ads.md (3954b), references/google-analytics-admin.md (5851b), references/google-analytics-data.md (4250b), references/google-bigquery.md (3994b), references/google-calendar.md (3814b), references/google-classroom.md (2689b), references/google-contacts.md (3340b), references/google-docs.md (3020b), references/google-drive.md (5252b), references/google-forms.md (4249b), references/google-mail.md (3647b), references/google-meet.md (2800b), references/google-merchant.md (5110b), references/google-play.md (3842b), references/google-search-console.md (3917b), references/google-sheets.md (6195b), references/google-slides.md (4609b), references/google-tasks.md (3121b), references/google-workspace-admin.md (4708b), references/granola.md (1875b), references/gumroad.md (3378b), references/hubspot.md (10065b), references/instantly.md (3024b), references/jira.md (4573b), references/jobber.md (3700b), references/jotform.md (3717b), references/keap.md (3134b), references/kit.md (3415b), references/klaviyo.md (3913b), references/lemlist.md (2490b), references/linear.md (4412b), references/linkedin.md (5546b), references/mailchimp.md (4197b), references/mailerlite.md (4108b), references/mailgun.md (4845b), references/manus.md (2426b), references/manychat.md (3674b), references/microsoft-excel.md (3895b), references/microsoft-teams.md (5999b), references/microsoft-to-do.md (3685b), references/monday.md (4550b), references/motion.md (2741b), references/netlify.md (3701b), references/notion.md (8043b), references/one-drive.md (2305b), references/outlook.md (4180b)
File v1.0.53:SKILL.md
name: api-gateway description: | Connect to 100+ APIs (Google Workspace, Microsoft 365, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to interact with external services. Security: The MATON_API_KEY authenticates with Maton.ai but grants NO access to third-party services by itself. Each service requires explicit OAuth authorization by the user through Maton's connect flow. Access is strictly scoped to connections the user has authorized. Provided by Maton (https://maton.ai). compatibility: Requires network access and valid Maton API key metadata: author: maton version: "1.0" clawdbot: emoji: đź§ homepage: "https://maton.ai" requires: env: - MATON_API_KEY
API Gateway
Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by Maton. The API gateway lets you call native API endpoints directly.
Quick Start
# Native Slack API call
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Base URL
https://gateway.maton.ai/{app}/{native-api-path}
Replace {app} with the service name and {native-api-path} with the actual API endpoint path.
IMPORTANT: The URL path MUST start with the connection's app name (eg. /google-mail/...). This prefix tells the gateway which app connection to use. For example, the native Gmail API path starts with gmail/v1/, so full paths look like /google-mail/gmail/v1/users/me/messages.
Authentication
All requests require the Maton API key in the Authorization header:
Authorization: Bearer $MATON_API_KEY
The API gateway automatically injects the appropriate OAuth token for the target service.
Environment Variable: You can set your API key as the MATON_API_KEY environment variable:
export MATON_API_KEY="YOUR_API_KEY"
Getting Your API Key
- Sign in or create an account at maton.ai
- Go to maton.ai/settings
- Click the copy button on the right side of API Key section to copy it
Connection Management
Connection management uses a separate base URL: https://ctrl.maton.ai
List Connections
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Query Parameters (optional):
app- Filter by service name (e.g.,slack,hubspot,salesforce)status- Filter by connection status (ACTIVE,PENDING,FAILED)
Response:
{
"connections": [
{
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=5e9...",
"app": "slack",
"metadata": {}
}
]
}
Create Connection
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'slack'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Get Connection
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Response:
{
"connection": {
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=5e9...",
"app": "slack",
"metadata": {}
}
}
Open the returned URL in a browser to complete OAuth.
Delete Connection
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Specifying Connection
If you have multiple connections for the same app, you can specify which connection to use by adding the Maton-Connection header with the connection ID:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If omitted, the gateway uses the default (oldest) active connection for that app.
Supported Services
| Service | App Name | Base URL Proxied |
|---------|----------|------------------|
| ActiveCampaign | active-campaign | {account}.api-us1.com |
| Acuity Scheduling | acuity-scheduling | acuityscheduling.com |
| Airtable | airtable | api.airtable.com |
| Apollo | apollo | api.apollo.io |
| Asana | asana | app.asana.com |
| Attio | attio | api.attio.com |
| Basecamp | basecamp | 3.basecampapi.com |
| beehiiv | beehiiv | api.beehiiv.com |
| Box | box | api.box.com |
| Brevo | brevo | api.brevo.com |
| Calendly | calendly | api.calendly.com |
| Cal.com | cal-com | api.cal.com |
| CallRail | callrail | api.callrail.com |
| Chargebee | chargebee | {subdomain}.chargebee.com |
| ClickFunnels | clickfunnels | {subdomain}.myclickfunnels.com |
| ClickSend | clicksend | rest.clicksend.com |
| ClickUp | clickup | api.clickup.com |
| Clockify | clockify | api.clockify.me |
| Coda | coda | coda.io |
| Confluence | confluence | api.atlassian.com |
| CompanyCam | companycam | api.companycam.com |
| Cognito Forms | cognito-forms | www.cognitoforms.com |
| Constant Contact | constant-contact | api.cc.email |
| Dropbox | dropbox | api.dropboxapi.com |
| Dropbox Business | dropbox-business | api.dropboxapi.com |
| ElevenLabs | elevenlabs | api.elevenlabs.io |
| Eventbrite | eventbrite | www.eventbriteapi.com |
| Fathom | fathom | api.fathom.ai |
| Firebase | firebase | firebase.googleapis.com |
| Fireflies | fireflies | api.fireflies.ai |
| GetResponse | getresponse | api.getresponse.com |
| GitHub | github | api.github.com |
| Gumroad | gumroad | api.gumroad.com |
| Granola | granola | mcp.granola.ai (MCP) |
| Google Ads | google-ads | googleads.googleapis.com |
| Google BigQuery | google-bigquery | bigquery.googleapis.com |
| Google Analytics Admin | google-analytics-admin | analyticsadmin.googleapis.com |
| Google Analytics Data | google-analytics-data | analyticsdata.googleapis.com |
| Google Calendar | google-calendar | www.googleapis.com |
| Google Classroom | google-classroom | classroom.googleapis.com |
| Google Contacts | google-contacts | people.googleapis.com |
| Google Docs | google-docs | docs.googleapis.com |
| Google Drive | google-drive | www.googleapis.com |
| Google Forms | google-forms | forms.googleapis.com |
| Gmail | google-mail | gmail.googleapis.com |
| Google Merchant | google-merchant | merchantapi.googleapis.com |
| Google Meet | google-meet | meet.googleapis.com |
| Google Play | google-play | androidpublisher.googleapis.com |
| Google Search Console | google-search-console | www.googleapis.com |
| Google Sheets | google-sheets | sheets.googleapis.com |
| Google Slides | google-slides | slides.googleapis.com |
| Google Tasks | google-tasks | tasks.googleapis.com |
| Google Workspace Admin | google-workspace-admin | admin.googleapis.com |
| HubSpot | hubspot | api.hubapi.com |
| Instantly | instantly | api.instantly.ai |
| Jira | jira | api.atlassian.com |
| Jobber | jobber | api.getjobber.com |
| JotForm | jotform | api.jotform.com |
| Keap | keap | api.infusionsoft.com |
| Kit | kit | api.kit.com |
| Klaviyo | klaviyo | a.klaviyo.com |
| Lemlist | lemlist | api.lemlist.com |
| Linear | linear | api.linear.app |
| LinkedIn | linkedin | api.linkedin.com |
| Mailchimp | mailchimp | {dc}.api.mailchimp.com |
| MailerLite | mailerlite | connect.mailerlite.com |
| Mailgun | mailgun | api.mailgun.net |
| ManyChat | manychat | api.manychat.com |
| Manus | manus | api.manus.ai |
| Microsoft Excel | microsoft-excel | graph.microsoft.com |
| Microsoft Teams | microsoft-teams | graph.microsoft.com |
| Microsoft To Do | microsoft-to-do | graph.microsoft.com |
| Monday.com | monday | api.monday.com |
| Motion | motion | api.usemotion.com |
| Netlify | netlify | api.netlify.com |
| Notion | notion | api.notion.com |
| OneDrive | one-drive | graph.microsoft.com |
| Outlook | outlook | graph.microsoft.com |
| PDF.co | pdf-co | api.pdf.co |
| Pipedrive | pipedrive | api.pipedrive.com |
| Podio | podio | api.podio.com |
| PostHog | posthog | {subdomain}.posthog.com |
| QuickBooks | quickbooks | quickbooks.api.intuit.com |
| Quo | quo | api.openphone.com |
| Reducto | reducto | platform.reducto.ai |
| Salesforce | salesforce | {instance}.salesforce.com |
| Sentry | sentry | {subdomain}.sentry.io |
| SignNow | signnow | api.signnow.com |
| Slack | slack | slack.com |
| Snapchat | snapchat | adsapi.snapchat.com |
| Square | squareup | connect.squareup.com |
| Squarespace | squarespace | api.squarespace.com |
| Stripe | stripe | api.stripe.com |
| Systeme.io | systeme | api.systeme.io |
| Tally | tally | api.tally.so |
| Telegram | telegram | api.telegram.org |
| TickTick | ticktick | api.ticktick.com |
| Todoist | todoist | api.todoist.com |
| Toggl Track | toggl-track | api.track.toggl.com |
| Trello | trello | api.trello.com |
| Twilio | twilio | api.twilio.com |
| Typeform | typeform | api.typeform.com |
| Vimeo | vimeo | api.vimeo.com |
| WhatsApp Business | whatsapp-business | graph.facebook.com |
| WooCommerce | woocommerce | {store-url}/wp-json/wc/v3 |
| WordPress.com | wordpress | public-api.wordpress.com |
| Xero | xero | api.xero.com |
| YouTube | youtube | www.googleapis.com |
| Zoho Bigin | zoho-bigin | www.zohoapis.com |
| Zoho Bookings | zoho-bookings | www.zohoapis.com |
| Zoho Books | zoho-books | www.zohoapis.com |
| Zoho Calendar | zoho-calendar | calendar.zoho.com |
| Zoho CRM | zoho-crm | www.zohoapis.com |
| Zoho Inventory | zoho-inventory | www.zohoapis.com |
| Zoho Mail | zoho-mail | mail.zoho.com |
| Zoho People | zoho-people | people.zoho.com |
| Zoho Projects | zoho-projects | projectsapi.zoho.com |
| Zoho Recruit | zoho-recruit | recruit.zoho.com |
See references/ for detailed routing guides per provider:
- ActiveCampaign - Contacts, deals, tags, lists, automations, campaigns
- Acuity Scheduling - Appointments, calendars, clients, availability
- Airtable - Records, bases, tables
- Apollo - People search, enrichment, contacts
- Asana - Tasks, projects, workspaces, webhooks
- Attio - People, companies, records, tasks
- Basecamp - Projects, to-dos, messages, schedules, documents
- beehiiv - Publications, subscriptions, posts, custom fields
- Box - Files, folders, collaborations, shared links
- Brevo - Contacts, email campaigns, transactional emails, templates
- Calendly - Event types, scheduled events, availability, webhooks
- Cal.com - Event types, bookings, schedules, availability slots, webhooks
- CallRail - Calls, trackers, companies, tags, analytics
- Chargebee - Subscriptions, customers, invoices
- ClickFunnels - Contacts, products, orders, courses, webhooks
- ClickSend - SMS, MMS, voice messages, contacts, lists
- ClickUp - Tasks, lists, folders, spaces, webhooks
- Clockify - Time tracking, projects, clients, tasks, workspaces
- Coda - Docs, pages, tables, rows, formulas, controls
- Confluence - Pages, spaces, blogposts, comments, attachments
- CompanyCam - Projects, photos, users, tags, groups, documents
- Cognito Forms - Forms, entries, documents, files
- Constant Contact - Contacts, email campaigns, lists, segments
- Dropbox - Files, folders, search, metadata, revisions, tags
- Dropbox Business - Team members, groups, team folders, devices, audit logs
- ElevenLabs - Text-to-speech, voice cloning, sound effects, audio processing
- Eventbrite - Events, venues, tickets, orders, attendees
- Fathom - Meeting recordings, transcripts, summaries, webhooks
- Firebase - Projects, web apps, Android apps, iOS apps, configurations
- Fireflies - Meeting transcripts, summaries, AskFred AI, channels
- GetResponse - Campaigns, contacts, newsletters, autoresponders, tags, segments
- GitHub - Repositories, issues, pull requests, commits
- Gumroad - Products, sales, subscribers, licenses, webhooks
- Granola - Meeting notes, transcripts, queries (MCP)
- Google Ads - Campaigns, ad groups, GAQL queries
- Google Analytics Admin - Reports, dimensions, metrics
- Google Analytics Data - Reports, dimensions, metrics
- Google BigQuery - Datasets, tables, jobs, SQL queries
- Google Calendar - Events, calendars, free/busy
- Google Classroom - Courses, coursework, students, teachers, announcements
- Google Contacts - Contacts, contact groups, people search
- Google Docs - Document creation, batch updates
- Google Drive - Files, folders, permissions
- Google Forms - Forms, questions, responses
- Gmail - Messages, threads, labels
- Google Meet - Spaces, conference records, participants
- Google Merchant - Products, inventories, promotions, reports
- Google Play - In-app products, subscriptions, reviews
- Google Search Console - Search analytics, sitemaps
- Google Sheets - Values, ranges, formatting
- Google Slides - Presentations, slides, formatting
- Google Tasks - Task lists, tasks, subtasks
- Google Workspace Admin - Users, groups, org units, domains, roles
- HubSpot - Contacts, companies, deals
- Instantly - Campaigns, leads, accounts, email outreach
- Jira - Issues, projects, JQL queries
- Jobber - Clients, jobs, invoices, quotes (GraphQL)
- JotForm - Forms, submissions, webhooks
- Keap - Contacts, companies, tags, tasks, opportunities, campaigns
- Kit - Subscribers, tags, forms, sequences, broadcasts
- Klaviyo - Profiles, lists, campaigns, flows, events
- Lemlist - Campaigns, leads, activities, schedules, unsubscribes
- Linear - Issues, projects, teams, cycles (GraphQL)
- LinkedIn - Profile, posts, shares, media uploads
- Mailchimp - Audiences, campaigns, templates, automations
- MailerLite - Subscribers, groups, campaigns, automations, forms
- Mailgun - Email sending, domains, routes, templates, mailing lists, suppressions
- ManyChat - Subscribers, tags, flows, messaging
- Manus - AI agent tasks, projects, files, webhooks
- Microsoft Excel - Workbooks, worksheets, ranges, tables, charts
- Microsoft Teams - Teams, channels, messages, members, chats
- Microsoft To Do - Task lists, tasks, checklist items, linked resources
- Monday.com - Boards, items, columns, groups (GraphQL)
- Motion - Tasks, projects, workspaces, schedules
- Netlify - Sites, deploys, builds, DNS, environment variables
- Notion - Pages, databases, blocks
- OneDrive - Files, folders, drives, sharing
- Outlook - Mail, calendar, contacts
- PDF.co - PDF conversion, merge, split, edit, text extraction, barcodes
- Pipedrive - Deals, persons, organizations, activities
- Podio - Organizations, workspaces, apps, items, tasks, comments
- PostHog - Product analytics, feature flags, session recordings, experiments, HogQL queries
- QuickBooks - Customers, invoices, reports
- Quo - Calls, messages, contacts, conversations, webhooks
- Reducto - Document parsing, extraction, splitting, editing
- Salesforce - SOQL, sObjects, CRUD
- SignNow - Documents, templates, invites, e-signatures
- SendGrid - Email sending, contacts, templates, suppressions, statistics
- Sentry - Issues, events, projects, teams, releases
- Slack - Messages, channels, users
- Snapchat - Ad accounts, campaigns, ad squads, ads, creatives, audiences
- Square - Payments, customers, orders, catalog, inventory, invoices
- Squarespace - Products, inventory, orders, profiles, transactions
- Stripe - Customers, subscriptions, payments
- Systeme.io - Contacts, tags, courses, communities, webhooks
- Tally - Forms, submissions, workspaces, webhooks
- Telegram - Messages, chats, bots, updates, polls
- TickTick - Tasks, projects, task lists
- Todoist - Tasks, projects, sections, labels, comments
- Toggl Track - Time entries, projects, clients, tags, workspaces
- Trello - Boards, lists, cards, checklists
- Twilio - SMS, voice calls, phone numbers, messaging
- Typeform - Forms, responses, insights
- Vimeo - Videos, folders, albums, comments, likes
- WhatsApp Business - Messages, templates, media
- WooCommerce - Products, orders, customers, coupons
- WordPress.com - Posts, pages, sites, users, settings
- Xero - Contacts, invoices, reports
- YouTube - Videos, playlists, channels, subscriptions
- Zoho Bigin - Contacts, companies, pipelines, products
- Zoho Bookings - Appointments, services, staff, workspaces
- Zoho Books - Invoices, contacts, bills, expenses
- Zoho Calendar - Calendars, events, attendees, reminders
- Zoho CRM - Leads, contacts, accounts, deals, search
- Zoho Inventory - Items, sales orders, invoices, purchase orders, bills
- Zoho Mail - Messages, folders, labels, attachments
- Zoho People - Employees, departments, designations, attendance, leave
- Zoho Projects - Projects, tasks, milestones, tasklists, comments
- Zoho Recruit - Candidates, job openings, interviews, applications
Examples
Slack - Post Message (Native API)
# Native Slack API: POST https://slack.com/api/chat.postMessage
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json; charset=utf-8')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
HubSpot - Create Contact (Native API)
# Native HubSpot API: POST https://api.hubapi.com/crm/v3/objects/contacts
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'properties': {'email': 'john@example.com', 'firstname': 'John', 'lastname': 'Doe'}}).encode()
req = urllib.request.Request('https://gateway.maton.ai/hubspot/crm/v3/objects/contacts', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Google Sheets - Get Spreadsheet Values (Native API)
# Native Sheets API: GET https://sheets.googleapis.com/v4/spreadsheets/{id}/values/{range}
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/google-sheets/v4/spreadsheets/122BS1sFN2RKL8AOUQjkLdubzOwgqzPT64KfZ2rvYI4M/values/Sheet1!A1:B2')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Salesforce - SOQL Query (Native API)
# Native Salesforce API: GET https://{instance}.salesforce.com/services/data/v64.0/query?q=...
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/salesforce/services/data/v64.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Airtable - List Tables (Native API)
# Native Airtable API: GET https://api.airtable.com/v0/meta/bases/{id}/tables
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/airtable/v0/meta/bases/appgqan2NzWGP5sBK/tables')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Notion - Query Database (Native API)
# Native Notion API: POST https://api.notion.com/v1/data_sources/{id}/query
python <<'EOF'
import urllib.request, os, json
data = json.dumps({}).encode()
req = urllib.request.Request('https://gateway.maton.ai/notion/v1/data_sources/23702dc5-9a3b-8001-9e1c-000b5af0a980/query', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Notion-Version', '2025-09-03')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Stripe - List Customers (Native API)
# Native Stripe API: GET https://api.stripe.com/v1/customers
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/stripe/v1/customers?limit=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Code Examples
JavaScript (Node.js)
const response = await fetch('https://gateway.maton.ai/slack/api/chat.postMessage', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({ channel: 'C0123456', text: 'Hello!' })
});
Python
import os
import requests
response = requests.post(
'https://gateway.maton.ai/slack/api/chat.postMessage',
headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
json={'channel': 'C0123456', 'text': 'Hello!'}
)
Error Handling
| Status | Meaning | |--------|---------| | 400 | Missing connection for the requested app | | 401 | Invalid or missing Maton API key | | 429 | Rate limited (10 requests/second per account) | | 500 | Internal Server Error | | 4xx/5xx | Passthrough error from the target API |
Errors from the target API are passed through with their original status codes and response bodies.
Troubleshooting: API Key Issues
- Check that the
MATON_API_KEYenvironment variable is set:
echo $MATON_API_KEY
- Verify the API key is valid by listing connections:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Troubleshooting: Invalid App Name
- Verify your URL path starts with the correct app name. The path must begin with
/google-mail/. For example:
- Correct:
https://gateway.maton.ai/google-mail/gmail/v1/users/me/messages - Incorrect:
https://gateway.maton.ai/gmail/v1/users/me/messages
- Ensure you have an active connection for the app. List your connections to verify:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-mail&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Troubleshooting: Server Error
A 500 error may indicate an expired OAuth token. Try creating a new connection via the Connection Management section above and completing OAuth authorization. If the new connection is "ACTIVE", delete the old connection to ensure the gateway uses the new one.
Rate Limits
- 10 requests per second per account
- Target API rate limits also apply
Notes
- When using curl with URLs containing brackets (
fields[],sort[],records[]), use the-gflag to disable glob parsing - When piping curl output to
jq, environment variables may not expand correctly in some shells, which can cause "Invalid API key" errors
Tips
-
Use native API docs: Refer to each service's official API documentation for endpoint paths and parameters.
-
Headers are forwarded: Custom headers (except
HostandAuthorization) are forwarded to the target API. -
Query params work: URL query parameters are passed through to the target API.
-
All HTTP methods supported: GET, POST, PUT, PATCH, DELETE are all supported.
-
QuickBooks special case: Use
:realmIdin the path and it will be replaced with the connected realm ID.
Optional
File v1.0.53:_meta.json
{ "ownerId": "kn75240wq8bnv2qm2xgry748jd80b9r0", "slug": "api-gateway", "version": "1.0.53", "publishedAt": 1772244203039 }
File v1.0.53:references/active-campaign.md
ActiveCampaign Routing Reference
App name: active-campaign
Base URL proxied: {account}.api-us1.com
API Path Pattern
/active-campaign/api/3/{resource}
Common Endpoints
Contacts
List Contacts
GET /active-campaign/api/3/contacts
Get Contact
GET /active-campaign/api/3/contacts/{contactId}
Create Contact
POST /active-campaign/api/3/contacts
Content-Type: application/json
{
"contact": {
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe"
}
}
Update Contact
PUT /active-campaign/api/3/contacts/{contactId}
Delete Contact
DELETE /active-campaign/api/3/contacts/{contactId}
Tags
List Tags
GET /active-campaign/api/3/tags
Create Tag
POST /active-campaign/api/3/tags
Content-Type: application/json
{
"tag": {
"tag": "Tag Name",
"tagType": "contact"
}
}
Contact Tags
Add Tag to Contact
POST /active-campaign/api/3/contactTags
Content-Type: application/json
{
"contactTag": {
"contact": "1",
"tag": "1"
}
}
Remove Tag from Contact
DELETE /active-campaign/api/3/contactTags/{contactTagId}
Lists
List All Lists
GET /active-campaign/api/3/lists
Create List
POST /active-campaign/api/3/lists
Deals
List Deals
GET /active-campaign/api/3/deals
Create Deal
POST /active-campaign/api/3/deals
Content-Type: application/json
{
"deal": {
"title": "New Deal",
"value": "10000",
"currency": "usd",
"contact": "1",
"stage": "1"
}
}
Deal Stages & Pipelines
List Deal Stages
GET /active-campaign/api/3/dealStages
List Pipelines (Deal Groups)
GET /active-campaign/api/3/dealGroups
Automations
List Automations
GET /active-campaign/api/3/automations
Campaigns
List Campaigns
GET /active-campaign/api/3/campaigns
Users
List Users
GET /active-campaign/api/3/users
Accounts
List Accounts
GET /active-campaign/api/3/accounts
Custom Fields
List Fields
GET /active-campaign/api/3/fields
Notes
List Notes
GET /active-campaign/api/3/notes
Webhooks
List Webhooks
GET /active-campaign/api/3/webhooks
Pagination
Uses offset-based pagination:
GET /active-campaign/api/3/contacts?limit=20&offset=0
Parameters:
limit- Results per page (default: 20)offset- Starting index
Response includes meta with total:
{
"contacts": [...],
"meta": {
"total": "150"
}
}
Notes
- All endpoints require
/api/3/prefix - Request bodies use singular resource names (e.g.,
{"contact": {...}}) - IDs returned as strings
- Rate limit: 5 requests per second per account
- DELETE returns 200 OK (not 204)
Resources
File v1.0.53:references/acuity-scheduling.md
Acuity Scheduling Routing Reference
App name: acuity-scheduling
Base URL proxied: acuityscheduling.com
API Path Pattern
/acuity-scheduling/api/v1/{resource}
The gateway automatically prepends /api/v1 when proxying to Acuity.
Common Endpoints
Get Account Info
GET /acuity-scheduling/api/v1/me
List Appointments
GET /acuity-scheduling/api/v1/appointments?max=100&minDate=2026-02-01
Get Appointment
GET /acuity-scheduling/api/v1/appointments/{id}
Create Appointment
POST /acuity-scheduling/api/v1/appointments
Content-Type: application/json
{
"datetime": "2026-02-15T09:00",
"appointmentTypeID": 123,
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com"
}
Update Appointment
PUT /acuity-scheduling/api/v1/appointments/{id}
Content-Type: application/json
{
"firstName": "Jane",
"lastName": "Smith"
}
Cancel Appointment
PUT /acuity-scheduling/api/v1/appointments/{id}/cancel
Reschedule Appointment
PUT /acuity-scheduling/api/v1/appointments/{id}/reschedule
Content-Type: application/json
{
"datetime": "2026-02-20T10:00"
}
List Calendars
GET /acuity-scheduling/api/v1/calendars
List Appointment Types
GET /acuity-scheduling/api/v1/appointment-types
Get Available Dates
GET /acuity-scheduling/api/v1/availability/dates?month=2026-02&appointmentTypeID=123
Get Available Times
GET /acuity-scheduling/api/v1/availability/times?date=2026-02-04&appointmentTypeID=123
List Clients
GET /acuity-scheduling/api/v1/clients?search=John
Create Client
POST /acuity-scheduling/api/v1/clients
Content-Type: application/json
{
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com"
}
List Blocks
GET /acuity-scheduling/api/v1/blocks?calendarID=1234
Create Block
POST /acuity-scheduling/api/v1/blocks
Content-Type: application/json
{
"start": "2026-02-15T12:00",
"end": "2026-02-15T13:00",
"calendarID": 1234
}
Delete Block
DELETE /acuity-scheduling/api/v1/blocks/{id}
List Forms
GET /acuity-scheduling/api/v1/forms
List Labels
GET /acuity-scheduling/api/v1/labels
Notes
- Datetime values must be parseable by PHP's
strtotime()function - Timezones use IANA format (e.g., "America/New_York")
- Use
maxparameter to limit results (default: 100) - Use
minDateandmaxDatefor date-range filtering - Client update/delete only works for clients with existing appointments
- Rescheduling requires the new datetime to be an available time slot
Resources
File v1.0.53:references/airtable.md
Airtable Routing Reference
App name: airtable
Base URL proxied: api.airtable.com
API Path Pattern
/airtable/v0/{baseId}/{tableIdOrName}
Common Endpoints
List Records
GET /airtable/v0/{baseId}/{tableIdOrName}?maxRecords=100
With view:
GET /airtable/v0/{baseId}/{tableIdOrName}?view=Grid%20view&maxRecords=100
With filter formula:
GET /airtable/v0/{baseId}/{tableIdOrName}?filterByFormula={Status}='Active'
With field selection:
GET /airtable/v0/{baseId}/{tableIdOrName}?fields[]=Name&fields[]=Status&fields[]=Email
With sorting:
GET /airtable/v0/{baseId}/{tableIdOrName}?sort[0][field]=Created&sort[0][direction]=desc
Get Record
GET /airtable/v0/{baseId}/{tableIdOrName}/{recordId}
Create Records
POST /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"fields": {
"Name": "New Record",
"Status": "Active",
"Email": "test@example.com"
}
}
]
}
Update Records (PATCH - partial update)
PATCH /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {
"Status": "Completed"
}
}
]
}
Update Records (PUT - full replace)
PUT /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {
"Name": "Updated Name",
"Status": "Active"
}
}
]
}
Delete Records
DELETE /airtable/v0/{baseId}/{tableIdOrName}?records[]=recXXXXX&records[]=recYYYYY
List Bases
GET /airtable/v0/meta/bases
Get Base Schema
GET /airtable/v0/meta/bases/{baseId}/tables
Pagination
Parameters:
pageSize- Number of records per request (max 100, default 100)maxRecords- Maximum total records across all pagesoffset- Cursor for next page (returned in response)
Response includes offset when more records exist:
{
"records": [...],
"offset": "itrXXXXXXXXXXX"
}
Use offset for next page:
GET /airtable/v0/{baseId}/{tableIdOrName}?pageSize=50&offset=itrXXXXXXXXXXX
Notes
- Authentication is automatic via OAuth
- Base IDs start with
app - Table IDs start with
tbl(can also use table name) - Record IDs start with
rec - Maximum 100 records per request for create/update
- Maximum 10 records per delete request
- Filter formulas use Airtable formula syntax
Resources
File v1.0.53:references/apollo.md
Apollo Routing Reference
App name: apollo
Base URL proxied: api.apollo.io
API Path Pattern
/apollo/v1/{endpoint}
Common Endpoints
People
Search People
POST /apollo/v1/mixed_people/api_search
Content-Type: application/json
{
"q_organization_name": "Google",
"page": 1,
"per_page": 25
}
Get Person
GET /apollo/v1/people/{personId}
Enrich Person
POST /apollo/v1/people/match
Content-Type: application/json
{
"email": "john@example.com"
}
Or by LinkedIn:
POST /apollo/v1/people/match
Content-Type: application/json
{
"linkedin_url": "https://linkedin.com/in/johndoe"
}
Organizations
Search Organizations
POST /apollo/v1/organizations/search
Content-Type: application/json
{
"q_organization_name": "Google",
"page": 1,
"per_page": 25
}
Enrich Organization
POST /apollo/v1/organizations/enrich
Content-Type: application/json
{
"domain": "google.com"
}
Contacts
Search Contacts
POST /apollo/v1/contacts/search
Content-Type: application/json
{
"page": 1,
"per_page": 25
}
Create Contact
POST /apollo/v1/contacts
Content-Type: application/json
{
"first_name": "John",
"last_name": "Doe",
"email": "john@example.com",
"organization_name": "Acme Corp"
}
Update Contact
PUT /apollo/v1/contacts/{contactId}
Content-Type: application/json
{
"first_name": "Jane"
}
Accounts
Search Accounts
POST /apollo/v1/accounts/search
Content-Type: application/json
{
"page": 1,
"per_page": 25
}
Create Account
POST /apollo/v1/accounts
Content-Type: application/json
{
"name": "Acme Corp",
"domain": "acme.com"
}
Sequences
Search Sequences
POST /apollo/v1/emailer_campaigns/search
Content-Type: application/json
{
"page": 1,
"per_page": 25
}
Add Contact to Sequence
POST /apollo/v1/emailer_campaigns/{campaignId}/add_contact_ids
Content-Type: application/json
{
"contact_ids": ["contact_id_1", "contact_id_2"]
}
Search Email Messages
POST /apollo/v1/emailer_messages/search
Content-Type: application/json
{
"contact_id": "{contactId}"
}
Labels
List Labels
GET /apollo/v1/labels
Search Filters
Common search parameters:
q_organization_name- Company nameq_person_title- Job titleperson_locations- Array of locationsorganization_num_employees_ranges- Employee count rangesq_keywords- General keyword search
Notes
- Authentication is automatic - the router injects the API key
- Pagination uses
pageandper_pageparameters in POST body - Most list endpoints use POST with
/searchsuffix (not GET) - Email enrichment consumes credits
- Rate limits apply per endpoint
people/searchandmixed_people/searchare deprecated - usemixed_people/api_searchinstead
Resources
- API Overview
- Search People
- Enrich Person
- Search Organizations
- Enrich Organization
- Search Contacts
- Create Contact
- Update Contact
- Search Accounts
- Create Account
- Search Sequences
- Add Contacts to Sequence
- Search Email Messages
- List Labels
- LLM Reference
File v1.0.53:references/asana.md
Asana Routing Reference
App name: asana
Base URL proxied: app.asana.com
API Path Pattern
/asana/api/1.0/{resource}
Common Endpoints
Get Current User
GET /asana/api/1.0/users/me
List Workspaces
GET /asana/api/1.0/workspaces
List Tasks
GET /asana/api/1.0/tasks?project=PROJECT_GID&opt_fields=name,completed,due_on
Get a Task
GET /asana/api/1.0/tasks/{task_gid}
Create a Task
POST /asana/api/1.0/tasks
Content-Type: application/json
{
"data": {
"name": "New task",
"projects": ["PROJECT_GID"],
"assignee": "USER_GID",
"due_on": "2025-03-20",
"notes": "Task description"
}
}
Update a Task
PUT /asana/api/1.0/tasks/{task_gid}
Content-Type: application/json
{
"data": {
"completed": true
}
}
Delete a Task
DELETE /asana/api/1.0/tasks/{task_gid}
Get Subtasks
GET /asana/api/1.0/tasks/{task_gid}/subtasks
Create Subtask
POST /asana/api/1.0/tasks/{task_gid}/subtasks
Content-Type: application/json
{
"data": {
"name": "Subtask name"
}
}
List Projects
GET /asana/api/1.0/projects?workspace=WORKSPACE_GID&opt_fields=name,owner,due_date
Get a Project
GET /asana/api/1.0/projects/{project_gid}
Create a Project
POST /asana/api/1.0/projects
Content-Type: application/json
{
"data": {
"name": "New Project",
"workspace": "WORKSPACE_GID"
}
}
List Users in Workspace
GET /asana/api/1.0/workspaces/{workspace_gid}/users?opt_fields=name,email
Create Webhook
POST /asana/api/1.0/webhooks
Content-Type: application/json
{
"data": {
"resource": "PROJECT_OR_TASK_GID",
"target": "https://example.com/webhook",
"filters": [
{
"resource_type": "task",
"action": "changed",
"fields": ["completed", "due_on"]
}
]
}
}
Delete Webhook
DELETE /asana/api/1.0/webhooks/{webhook_gid}
Notes
- Resource IDs (GIDs) are strings
- Timestamps are in ISO 8601 format
- Use
opt_fieldsto specify which fields to return in responses - Workspaces are the highest-level organizational unit
- Use cursor-based pagination with
offsetparameter - Webhook creation requires the target URL to respond with 200 status
Resources
File v1.0.53:references/attio.md
Attio Routing Reference
App name: attio
Base URL proxied: api.attio.com
API Path Pattern
/attio/v2/{resource}
Common Endpoints
List Objects
GET /attio/v2/objects
Get Object
GET /attio/v2/objects/{object}
List Attributes
GET /attio/v2/objects/{object}/attributes
Query Records
POST /attio/v2/objects/{object}/records/query
Content-Type: application/json
{
"limit": 50,
"offset": 0
}
Get Record
GET /attio/v2/objects/{object}/records/{record_id}
Create Record
POST /attio/v2/objects/{object}/records
Content-Type: application/json
{
"data": {
"values": {
"name": [{"first_name": "John", "last_name": "Doe", "full_name": "John Doe"}],
"email_addresses": ["john@example.com"]
}
}
}
Update Record
PATCH /attio/v2/objects/{object}/records/{record_id}
Content-Type: application/json
{
"data": {
"values": {
"job_title": "Engineer"
}
}
}
Delete Record
DELETE /attio/v2/objects/{object}/records/{record_id}
List Tasks
GET /attio/v2/tasks?limit=50
Create Task
POST /attio/v2/tasks
Content-Type: application/json
{
"data": {
"content": "Task description",
"format": "plaintext",
"deadline_at": null,
"assignees": [],
"linked_records": []
}
}
List Workspace Members
GET /attio/v2/workspace_members
Identify Self
GET /attio/v2/self
Notes
List Notes
GET /attio/v2/notes?limit=50&parent_object={object}&parent_record_id={record_id}
Get Note
GET /attio/v2/notes/{note_id}
Create Note
POST /attio/v2/notes
Content-Type: application/json
{
"data": {
"format": "plaintext",
"title": "Meeting Summary",
"content": "Note content here",
"parent_object": "companies",
"parent_record_id": "{record_id}",
"created_by_actor": {
"type": "workspace-member",
"id": "{workspace_member_id}"
}
}
}
Delete Note
DELETE /attio/v2/notes/{note_id}
Comments
Create Comment on Record
POST /attio/v2/comments
Content-Type: application/json
{
"data": {
"format": "plaintext",
"content": "Comment text",
"author": {
"type": "workspace-member",
"id": "{workspace_member_id}"
},
"record": {
"object": "companies",
"record_id": "{record_id}"
}
}
}
Reply to Comment Thread
POST /attio/v2/comments
Content-Type: application/json
{
"data": {
"format": "plaintext",
"content": "This is a reply",
"author": {
"type": "workspace-member",
"id": "{workspace_member_id}"
},
"thread_id": "{thread_id}"
}
}
Lists
List All Lists
GET /attio/v2/lists
Get List
GET /attio/v2/lists/{list_id}
List Entries
Query List Entries
POST /attio/v2/lists/{list}/entries/query
Content-Type: application/json
{
"limit": 50,
"offset": 0
}
Create List Entry
POST /attio/v2/lists/{list}/entries
Content-Type: application/json
{
"data": {
"parent_record_id": "{record_id}",
"parent_object": "companies",
"entry_values": {}
}
}
Get List Entry
GET /attio/v2/lists/{list}/entries/{entry_id}
Update List Entry
PATCH /attio/v2/lists/{list}/entries/{entry_id}
Content-Type: application/json
{
"data": {
"entry_values": {
"status": "Active"
}
}
}
Delete List Entry
DELETE /attio/v2/lists/{list}/entries/{entry_id}
Meetings
List Meetings
GET /attio/v2/meetings?limit=50
Get Meeting
GET /attio/v2/meetings/{meeting_id}
Call Recordings
List Call Recordings for Meeting
GET /attio/v2/meetings/{meeting_id}/call_recordings?limit=50
Get Call Recording
GET /attio/v2/meetings/{meeting_id}/call_recordings/{call_recording_id}
Usage Notes
- Object slugs are lowercase snake_case (e.g.,
people,companies) - Record IDs are UUIDs
- For personal-name attributes, include
full_namewhen creating records - Task creation requires
format,deadline_at,assignees, andlinked_recordsfields - Note creation requires
format,content,parent_object, andparent_record_id - Comment creation requires
format,content,author, plus one ofrecord,entry, orthread_id - Meetings use cursor-based pagination
- Rate limits: 100 read/sec, 25 write/sec
- Pagination uses
limitandoffsetparameters (orcursorfor meetings)
Resources
File v1.0.53:references/basecamp.md
Basecamp Routing Reference
App name: basecamp
Base URL proxied: 3.basecampapi.com/{account_id}
Note: The gateway automatically injects the account ID from the OAuth connection.
API Path Pattern
/basecamp/{resource}.json
All paths must end with .json.
Common Endpoints
Get Current User
GET /basecamp/my/profile.json
List People
GET /basecamp/people.json
List Projects
GET /basecamp/projects.json
Get Project
GET /basecamp/projects/{project_id}.json
Returns project with dock array containing tool IDs.
Create Project
POST /basecamp/projects.json
Content-Type: application/json
{
"name": "Project Name",
"description": "Description"
}
Get Todoset
GET /basecamp/buckets/{project_id}/todosets/{todoset_id}.json
List Todolists
GET /basecamp/buckets/{project_id}/todosets/{todoset_id}/todolists.json
List Todos
GET /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json
Create Todo
POST /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json
Content-Type: application/json
{
"content": "Todo content",
"due_on": "2026-02-15",
"assignee_ids": [123]
}
Complete Todo
POST /basecamp/buckets/{project_id}/todos/{todo_id}/completion.json
Get Message Board
GET /basecamp/buckets/{project_id}/message_boards/{message_board_id}.json
List Messages
GET /basecamp/buckets/{project_id}/message_boards/{message_board_id}/messages.json
Get Schedule
GET /basecamp/buckets/{project_id}/schedules/{schedule_id}.json
List Schedule Entries
GET /basecamp/buckets/{project_id}/schedules/{schedule_id}/entries.json
Get Vault (Documents)
GET /basecamp/buckets/{project_id}/vaults/{vault_id}.json
List Documents
GET /basecamp/buckets/{project_id}/vaults/{vault_id}/documents.json
List Campfires
GET /basecamp/chats.json
Trash Recording
PUT /basecamp/buckets/{project_id}/recordings/{recording_id}/status/trashed.json
Key Concepts
- Bucket: Project content container (bucket_id = project_id)
- Dock: Per-project tool list with
id,name,enabled - Recording: Any content item (todos, messages, documents)
Pagination
Uses Link header with rel="next":
Link: <url>; rel="next"
X-Total-Count: 150
Notes
- All paths must end with
.json - Gateway injects account ID automatically
- Uses Basecamp 4 API (bc3-api)
- Rate limit: ~50 requests per 10 seconds per IP
- Check
enabled: truein dock before using tools
Resources
File v1.0.53:references/beehiiv.md
beehiiv Routing Reference
App name: beehiiv
Base URL proxied: api.beehiiv.com
API Path Pattern
/beehiiv/v2/{resource}
Common Endpoints
Publications
List Publications
GET /beehiiv/v2/publications
Get Publication
GET /beehiiv/v2/publications/{publication_id}
Subscriptions
List Subscriptions
GET /beehiiv/v2/publications/{publication_id}/subscriptions
Get Subscription by ID
GET /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}
Get Subscription by Email
GET /beehiiv/v2/publications/{publication_id}/subscriptions/by_email/{email}
Create Subscription
POST /beehiiv/v2/publications/{publication_id}/subscriptions
Content-Type: application/json
{
"email": "subscriber@example.com",
"utm_source": "api"
}
Update Subscription
PATCH /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}
Delete Subscription
DELETE /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}
Posts
List Posts
GET /beehiiv/v2/publications/{publication_id}/posts
Get Post
GET /beehiiv/v2/publications/{publication_id}/posts/{post_id}
Custom Fields
List Custom Fields
GET /beehiiv/v2/publications/{publication_id}/custom_fields
Create Custom Field
POST /beehiiv/v2/publications/{publication_id}/custom_fields
Segments
GET /beehiiv/v2/publications/{publication_id}/segments
GET /beehiiv/v2/publications/{publication_id}/segments/{segment_id}
Tiers
GET /beehiiv/v2/publications/{publication_id}/tiers
POST /beehiiv/v2/publications/{publication_id}/tiers
PATCH /beehiiv/v2/publications/{publication_id}/tiers/{tier_id}
Automations
GET /beehiiv/v2/publications/{publication_id}/automations
GET /beehiiv/v2/publications/{publication_id}/automations/{automation_id}
Pagination
Cursor-based (recommended) or page-based (deprecated):
# Cursor-based
GET /beehiiv/v2/publications/{pub_id}/subscriptions?limit=10&cursor={next_cursor}
# Page-based (max 100 pages)
GET /beehiiv/v2/publications?page=2&limit=10
Notes
- Publication IDs start with
pub_ - Subscription IDs start with
sub_ - Timestamps are Unix timestamps
- Cursor-based pagination is recommended
- Page-based pagination limited to 100 pages
Resources
File v1.0.53:references/box.md
Box Routing Reference
App name: box
Base URL proxied: api.box.com
API Path Pattern
/box/2.0/{resource}
Common Endpoints
Get Current User
GET /box/2.0/users/me
Get User
GET /box/2.0/users/{user_id}
Get Folder
GET /box/2.0/folders/{folder_id}
Root folder ID is 0.
List Folder Items
GET /box/2.0/folders/{folder_id}/items
GET /box/2.0/folders/{folder_id}/items?limit=100&offset=0
Create Folder
POST /box/2.0/folders
Content-Type: application/json
{
"name": "New Folder",
"parent": {"id": "0"}
}
Update Folder
PUT /box/2.0/folders/{folder_id}
Content-Type: application/json
{
"name": "Updated Name",
"description": "Description"
}
Copy Folder
POST /box/2.0/folders/{folder_id}/copy
Content-Type: application/json
{
"name": "Copied Folder",
"parent": {"id": "0"}
}
Delete Folder
DELETE /box/2.0/folders/{folder_id}
DELETE /box/2.0/folders/{folder_id}?recursive=true
Get File
GET /box/2.0/files/{file_id}
Download File
GET /box/2.0/files/{file_id}/content
Update File
PUT /box/2.0/files/{file_id}
Copy File
POST /box/2.0/files/{file_id}/copy
Delete File
DELETE /box/2.0/files/{file_id}
Create Shared Link
PUT /box/2.0/folders/{folder_id}
Content-Type: application/json
{
"shared_link": {"access": "open"}
}
List Collaborations
GET /box/2.0/folders/{folder_id}/collaborations
Create Collaboration
POST /box/2.0/collaborations
Content-Type: application/json
{
"item": {"type": "folder", "id": "123"},
"accessible_by": {"type": "user", "login": "user@example.com"},
"role": "editor"
}
Search
GET /box/2.0/search?query=keyword
Events
GET /box/2.0/events
Trash
GET /box/2.0/folders/trash/items
DELETE /box/2.0/files/{file_id}/trash
DELETE /box/2.0/folders/{folder_id}/trash
Collections
GET /box/2.0/collections
GET /box/2.0/collections/{collection_id}/items
Recent Items
GET /box/2.0/recent_items
Webhooks
GET /box/2.0/webhooks
POST /box/2.0/webhooks
DELETE /box/2.0/webhooks/{webhook_id}
Pagination
Offset-based pagination:
GET /box/2.0/folders/0/items?limit=100&offset=0
Response:
{
"total_count": 250,
"entries": [...],
"offset": 0,
"limit": 100
}
Notes
- Root folder ID is
0 - File uploads use
upload.box.com(different base URL) - Delete operations return 204 No Content
- Some operations require enterprise admin permissions
- Use
fieldsparameter to select specific fields
Resources
File v1.0.53:references/brevo.md
Brevo Routing Reference
App name: brevo
Base URL proxied: api.brevo.com
API Path Pattern
/brevo/v3/{resource}
Common Endpoints
Account
GET /brevo/v3/account
Contacts
List Contacts
GET /brevo/v3/contacts?limit=50&offset=0
Get Contact
GET /brevo/v3/contacts/{identifier}
Create Contact
POST /brevo/v3/contacts
Content-Type: application/json
{
"email": "contact@example.com",
"attributes": {"FIRSTNAME": "John", "LASTNAME": "Doe"},
"listIds": [2]
}
Update Contact
PUT /brevo/v3/contacts/{identifier}
Content-Type: application/json
{
"attributes": {"FIRSTNAME": "Updated"}
}
Delete Contact
DELETE /brevo/v3/contacts/{identifier}
Lists
List All Lists
GET /brevo/v3/contacts/lists
Create List
POST /brevo/v3/contacts/lists
Content-Type: application/json
{
"name": "New List",
"folderId": 1
}
Add Contacts to List
POST /brevo/v3/contacts/lists/{listId}/contacts/add
Content-Type: application/json
{
"emails": ["contact@example.com"]
}
Folders
List Folders
GET /brevo/v3/contacts/folders
Create Folder
POST /brevo/v3/contacts/folders
Content-Type: application/json
{
"name": "New Folder"
}
Transactional Emails
Send Email
POST /brevo/v3/smtp/email
Content-Type: application/json
{
"sender": {"name": "John", "email": "john@example.com"},
"to": [{"email": "recipient@example.com", "name": "Jane"}],
"subject": "Hello!",
"htmlContent": "<html><body><h1>Hi!</h1></body></html>"
}
Get Email Statistics
GET /brevo/v3/smtp/statistics/events?limit=50
Email Templates
List Templates
GET /brevo/v3/smtp/templates
Create Template
POST /brevo/v3/smtp/templates
Content-Type: application/json
{
"sender": {"name": "Company", "email": "noreply@company.com"},
"templateName": "Welcome Email",
"subject": "Welcome {{params.name}}!",
"htmlContent": "<html><body><h1>Hello {{params.name}}!</h1></body></html>"
}
Email Campaigns
List Campaigns
GET /brevo/v3/emailCampaigns
Create Campaign
POST /brevo/v3/emailCampaigns
Content-Type: application/json
{
"name": "Newsletter",
"subject": "Monthly Update",
"sender": {"name": "Company", "email": "news@company.com"},
"htmlContent": "<html><body><h1>News</h1></body></html>",
"recipients": {"listIds": [2]}
}
Send Campaign
POST /brevo/v3/emailCampaigns/{campaignId}/sendNow
Senders
List Senders
GET /brevo/v3/senders
Create Sender
POST /brevo/v3/senders
Content-Type: application/json
{
"name": "Marketing",
"email": "marketing@company.com"
}
Attributes
List Attributes
GET /brevo/v3/contacts/attributes
Pagination
Brevo uses offset-based pagination:
GET /brevo/v3/contacts?limit=50&offset=0
Parameters:
limit- Results per page (max varies by endpoint, typically 500)offset- Starting index (0-based)
Response includes count:
{
"contacts": [...],
"count": 150
}
Notes
- All endpoints require
/v3/prefix - Attribute names must be UPPERCASE
- Contact identifiers: email, phone, or ID
- Template parameters:
{{params.name}}syntax - PUT/DELETE return 204 No Content on success
- Rate limit: 300 calls/min (free), higher on paid plans
Resources
API & Reliability
Machine endpoints, contract coverage, trust signals, runtime metrics, benchmarks, and guardrails for agent-to-agent use.
MissingCLAWHUB
API & Reliability
Machine endpoints, contract coverage, trust signals, runtime metrics, benchmarks, and guardrails for agent-to-agent use.
Machine interfaces
Contract & API
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
Invocation examples
curl -s "https://xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/snapshot"
curl -s "https://xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/contract"
curl -s "https://xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/trust"
Operational fit
Reliability & Benchmarks
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Machine Appendix
Raw contract, invocation, trust, capability, facts, and change-event payloads for machine-side inspection.
MissingCLAWHUB
Machine Appendix
Raw contract, invocation, trust, capability, facts, and change-event payloads for machine-side inspection.
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": []
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "CLAWHUB",
"generatedAt": "2026-04-17T04:20:34.423Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [],
"flattenedTokens": ""
}Facts JSON
[
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/byungkyu/api-gateway",
"sourceUrl": "https://clawhub.ai/byungkyu/api-gateway",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "29.8K downloads",
"href": "https://clawhub.ai/byungkyu/api-gateway",
"sourceUrl": "https://clawhub.ai/byungkyu/api-gateway",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.0.54",
"href": "https://clawhub.ai/byungkyu/api-gateway",
"sourceUrl": "https://clawhub.ai/byungkyu/api-gateway",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-02-28T02:13:08.484Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "release",
"title": "Release 1.0.54",
"description": "- Minor update to documentation: GitHub is now highlighted in the API list in the skill description. - No changes to code or functionality. - Clarified supported services, with updated wording in the API overview.",
"href": "https://clawhub.ai/byungkyu/api-gateway",
"sourceUrl": "https://clawhub.ai/byungkyu/api-gateway",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-02-28T02:13:08.484Z",
"isPublic": true
}
]