{"id":"0ad3785f-9c6e-4851-915d-23217bb0f44d","entityType":"agent","slug":"clawhub-byungkyu-api-gateway","name":"API Gateway","canonicalUrl":"https://www.xpersona.co/agent/clawhub-byungkyu-api-gateway","canonicalPath":"/agent/clawhub-byungkyu-api-gateway","generatedAt":"2026-10-09T03:31:50.825Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"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... 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","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 29.8K downloads reported by the source. Last updated 4/15/2026.","installCommand":"clawhub skill install kn75240wq8bnv2qm2xgry748jd80b9r0:api-gateway","sourceUrl":"https://clawhub.ai/byungkyu/api-gateway","homepage":"https://clawhub.ai/byungkyu/api-gateway","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/byungkyu/api-gateway","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":83,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to... "},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No protocol or capability metadata is available."},"protocols":[],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":0,"capabilityMatrix":{"rows":[],"flattenedTokens":""}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"stars":null,"forks":null,"downloads":29766,"packageName":null,"latestVersion":"1.0.54","tractionLabel":"29.8K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-02-28T16:49:07.299Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-02-28T16:49:07.299Z","lastIndexedAt":null,"nextCrawlAt":"2026-03-01T16:49:07.299Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.54","createdAt":"2026-02-28T02:13:08.484Z","changelog":"- 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.","fileCount":123,"zipByteSize":166508},{"version":"1.0.53","createdAt":"2026-02-28T02:03:23.039Z","changelog":"No changes detected in this version. - Version 1.0.53 has no file changes compared to the previous release.","fileCount":123,"zipByteSize":166506},{"version":"1.0.52","createdAt":"2026-02-28T01:33:34.358Z","changelog":"- 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.","fileCount":null,"zipByteSize":null},{"version":"1.0.51","createdAt":"2026-02-26T10:49:06.067Z","changelog":"Version 1.0.51 - Added squarespace.md to the references directory.","fileCount":null,"zipByteSize":null},{"version":"1.0.50","createdAt":"2026-02-24T23:05:14.288Z","changelog":"No file changes detected for version 1.0.50. - No updates or modifications were made in this version. - Functionality and documentation remain unchanged.","fileCount":null,"zipByteSize":null},{"version":"1.0.49","createdAt":"2026-02-24T22:49:33.856Z","changelog":"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.","fileCount":null,"zipByteSize":null},{"version":"1.0.48","createdAt":"2026-02-24T12:16:09.346Z","changelog":"- Added support for the Granola service (`granola`, proxied at `mcp.granola.ai`) to the API Gateway. - New documentation file `references/granola.md` included. - Updated the Supported Services table to reflect the addition.","fileCount":null,"zipByteSize":null},{"version":"1.0.47","createdAt":"2026-02-23T23:05:36.862Z","changelog":"- Added documentation references for PostHog and Sentry integrations. - No changes to core functionality or API—documentation only.","fileCount":null,"zipByteSize":null}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install kn75240wq8bnv2qm2xgry748jd80b9r0:api-gateway","setupComplexity":"low","setupSteps":["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.","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."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/contract\"","curl -s \"https://www.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-10-09T03:31:50.822Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-byungkyu-api-gateway/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"readme":"Skill: API Gateway\n\nOwner: byungkyu\n\nSummary: Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to...\n\nTags: latest:1.0.54\n\nVersion history:\n\nv1.0.54 | 2026-02-28T02:13:08.484Z | user\n\n- Minor update to documentation: GitHub is now highlighted in the API list in the skill description.\n- No changes to code or functionality.\n- Clarified supported services, with updated wording in the API overview.\n\nv1.0.53 | 2026-02-28T02:03:23.039Z | user\n\nNo changes detected in this version.\n\n- Version 1.0.53 has no file changes compared to the previous release.\n\nv1.0.52 | 2026-02-28T01:33:34.358Z | user\n\n- Added three new reference files: references/manus.md, references/reducto.md, and references/zoho-projects.md.\n- No changes were made to the existing documentation or code logic.\n\nv1.0.51 | 2026-02-26T10:49:06.067Z | user\n\nVersion 1.0.51\n\n- Added squarespace.md to the references directory.\n\nv1.0.50 | 2026-02-24T23:05:14.288Z | user\n\nNo file changes detected for version 1.0.50.\n\n- No updates or modifications were made in this version.\n- Functionality and documentation remain unchanged.\n\nv1.0.49 | 2026-02-24T22:49:33.856Z | user\n\nNo file changes were detected in this release.\n\n- No updates or modifications were made to the skill's files or documentation.\n- Behavior and features remain the same as the previous version.\n\nv1.0.48 | 2026-02-24T12:16:09.346Z | user\n\n- Added support for the Granola service (`granola`, proxied at `mcp.granola.ai`) to the API Gateway.\n- New documentation file `references/granola.md` included.\n- Updated the Supported Services table to reflect the addition.\n\nv1.0.47 | 2026-02-23T23:05:36.862Z | user\n\n- Added documentation references for PostHog and Sentry integrations.\n- No changes to core functionality or API—documentation only.\n\nv1.0.46 | 2026-02-22T07:55:07.722Z | user\n\n- Added guidance to use this skill when users want to interact with external services.\n- No other changes detected.\n\nv1.0.45 | 2026-02-22T04:02:27.756Z | user\n\n- No file or documentation changes detected in this version.\n- Version update only; functionality and documentation remain unchanged.\n\nv1.0.44 | 2026-02-21T22:07:51.000Z | user\n\n- Broader description: Now highlights support for 100+ APIs (including Google Workspace, Microsoft 365, Notion, Slack, Airtable, HubSpot, etc.).\n- Security description simplified for clarity; details about API key and OAuth remain.\n- The compatibility section has been streamlined and moved.\n- No code, behavioral, or API changes—documentation/metadata update only.\n\nv1.0.43 | 2026-02-21T20:47:32.709Z | user\n\n- No changes detected in this release.\n- Version: 1.0.43 remains unchanged from the previous version.\n\nv1.0.42 | 2026-02-20T22:58:56.489Z | user\n\n- Added YouTube to the list of supported third-party services in the description.\n- Updated description to highlight support for YouTube integration.\n- No code or logic changes detected.\n\nv1.0.41 | 2026-02-19T22:10:23.459Z | user\n\n- Updated the description for greater clarity and brevity regarding OAuth integration.\n- No functional or behavioral changes; documentation only.\n\nv1.0.40 | 2026-02-19T22:06:33.008Z | user\n\n- Updated the skill description to clarify that it enables easy integration with third-party APIs using managed OAuth connections.\n- No functional or behavioral changes introduced.\n\nv1.0.39 | 2026-02-19T21:58:03.678Z | user\n\n- Clarified security model: The MATON_API_KEY alone cannot access any third-party services without explicit OAuth authorization by the user.\n- Improved skill description for clearer guidance on authentication and access control.\n- Removed references to some third-party services in the summary for accuracy.\n- No changes to code, features, or API endpoints.\n\nv1.0.38 | 2026-02-19T20:29:21.415Z | user\n\n- Updated description to highlight support for 100+ APIs, including popular services (Google Workspace, Outlook, Notion, GitHub, Stripe, HubSpot, Salesforce, Airtable, LinkedIn, and more).\n- Improved clarity about OAuth-based access and security.\n- No code or functional changes detected; documentation only update.\n\nv1.0.37 | 2026-02-19T19:32:18.739Z | user\n\nNo changes detected in this release.\n\n- Version 1.0.37 was published without any file changes.\n- No updates to features, documentation, or configuration.\n\nv1.0.36 | 2026-02-19T11:49:31.848Z | user\n\n- Added new documentation file: references/microsoft-teams.md\n- No changes to core functionality or existing APIs.\n\nv1.0.35 | 2026-02-18T07:03:20.201Z | user\n\n- No file changes detected in this version.\n- No user-facing or internal modifications introduced.\n- Functionality and documentation remain the same as the previous release.\n\nv1.0.34 | 2026-02-18T02:09:18.447Z | user\n\n- Added initial documentation for Zoho Bookings integration in `references/zoho-bookings.md`.\n- No changes to core functionality or API; this release is documentation-focused.\n\nv1.0.33 | 2026-02-17T20:12:00.709Z | user\n\nNo changes detected in this version.\n\n- No file changes were made in version 1.0.33.\n- No updates to features, documentation, or functionality.\n\nv1.0.32 | 2026-02-16T22:48:24.108Z | auto\n\n- Updated documentation for the Google Drive API in references/google-drive.md.\n- No changes to functionality or code; this release contains documentation updates only.\n\nv1.0.31 | 2026-02-15T09:45:55.023Z | user\n\n- Added support for Dropbox Business as a new third-party integration.\n- Added related documentation file: references/dropbox-business.md.\n- Updated the Supported Services table to include Dropbox Business.\n\nv1.0.30 | 2026-02-14T21:09:05.947Z | user\n\n- Added four new reference files for Firebase, Google BigQuery, Google Classroom, and Snapchat APIs.\n- Updated supported services list to include Firebase, Google BigQuery, Google Classroom, and Snapchat.\n\nv1.0.29 | 2026-02-14T02:53:06.180Z | user\n\n- Clarified in the description that access to third-party APIs is scoped to explicit OAuth connections; the API key alone does not grant access.\n- Updated description and instructions for improved clarity and emphasis on security and explicit authorization.\n- No functional changes; documentation enhancements only.\n\nv1.0.28 | 2026-02-14T02:46:53.991Z | user\n\n- Added new third-party API references: Clockify, GetResponse, Motion, and Toggl Track.\n- Updated the Supported Services table to include Clockify, GetResponse, Motion, and Toggl Track.\n- No changes to core functionality or API; documentation and reference improvements only.\n\nv1.0.27 | 2026-02-13T12:16:21.980Z | user\n\n- Added Confluence (`confluence`) to the list of supported services in the API gateway.\n- Created a new documentation file: `references/confluence.md`.\n\nv1.0.26 | 2026-02-13T02:40:43.734Z | user\n\n- Added Cal.com integration as a supported service on the API gateway.\n- Introduced a new reference file: references/cal-com.md with usage details for Cal.com.\n- Updated the documentation to include Cal.com in the supported services table.\n\nv1.0.25 | 2026-02-12T19:46:27.511Z | user\n\n- Added new reference documentation files for Clio, Netlify, PDF.co, and Podio APIs.\n- Improved skill coverage and resources for third-party API integrations.\n\nv1.0.24 | 2026-02-12T11:24:28.854Z | user\n\n- Added support and documentation for new services: Coda, CompanyCam, ElevenLabs, Instantly, Lemlist, and Mailgun.\n- Updated the Supported Services table in SKILL.md to include these newly added integrations.\n- Included reference documentation files for each new service under the `references/` directory.\n\nv1.0.23 | 2026-02-11T11:50:58.465Z | user\n\n- Added `homepage` metadata field with the value \"https://maton.ai\".\n- No other functional or documentation changes detected.\n\nv1.0.22 | 2026-02-11T11:48:37.065Z | user\n\n- Added support for Beehiiv, Fireflies, and SendGrid APIs.\n- New reference documentation files: references/beehiiv.md, references/fireflies.md, and references/sendgrid.md.\n- Updated the supported services table to include beehiiv and fireflies.\n\nv1.0.21 | 2026-02-10T20:31:56.421Z | user\n\n- Added a `clawdbot` metadata block specifying required environment variable `MATON_API_KEY`.\n- No other changes to functionality or documentation.\n\nv1.0.20 | 2026-02-10T12:33:51.746Z | user\n\n- No code or documentation changes detected in this version.\n- Version bumped to 1.0.20; functionality remains unchanged.\n\nv1.0.19 | 2026-02-10T12:32:29.179Z | user\n\n- Added integration references for CallRail, ClickSend, and WordPress APIs.\n- Listed CallRail, ClickSend, and WordPress as supported services in the documentation.\n\nv1.0.18 | 2026-02-10T02:14:33.335Z | user\n\n- Added support for ActiveCampaign, Brevo, Dropbox, and Twilio as new proxied apps.\n- Updated documentation to include the new services in the supported services table.\n- Introduced reference files for ActiveCampaign, Brevo, Dropbox, and Twilio with usage details.\n\nv1.0.17 | 2026-02-09T11:51:21.158Z | user\n\n- Added support for 10 new third-party APIs: Box, ClickFunnels, Cognito Forms, MailerLite, ManyChat, Quo, SignNow, Systeme, Tally, and Vimeo.\n- Updated the Supported Services table in the documentation to include these new integrations.\n\nv1.0.16 | 2026-02-08T09:49:16.598Z | user\n\n- Added support for Basecamp, Gumroad, and Keap services to the API gateway.\n- Updated documentation to include Basecamp (`basecamp`), Gumroad (`gumroad`), and Keap (`keap`) in the supported services table.\n- Added new reference files: references/basecamp.md, references/gumroad.md, and references/keap.md.\n\nv1.0.15 | 2026-02-08T01:43:48.414Z | user\n\n- Added an important clarification that all gateway API paths must start with the connection's app name (e.g., `/google-mail/gmail/v1/...`).\n- Updated documentation to highlight this path requirement for correct routing to third-party APIs.\n\nv1.0.14 | 2026-02-07T20:35:57.704Z | user\n\n- Added support for Microsoft To Do and Telegram third-party APIs.\n- Included new reference documentation files: microsoft-to-do.md and telegram.md.\n- Updated the supported services table to list Microsoft To Do and Telegram as available integrations.\n\nv1.0.13 | 2026-02-07T11:24:18.063Z | user\n\n- Added support for new third-party integrations: Constant Contact, Eventbrite, Google Contacts, Google Merchant, Google Tasks, Jobber, LinkedIn, OneDrive, Square, and TickTick.\n- Expanded Supported Services table to include all new apps with corresponding routing and base URL details.\n- Added new API reference files for each of the newly supported services in the references directory.\n\nv1.0.12 | 2026-02-07T02:36:47.173Z | user\n\n- Added support for Kit and Microsoft Excel as proxied services.\n- Included new reference guides: references/kit.md and references/microsoft-excel.md.\n- Updated the Supported Services table and references list to reflect the new services.\n\nv1.0.11 | 2026-02-06T23:20:22.118Z | auto\n\n- Added support for Acuity Scheduling, Google Workspace Admin, and Todoist.\n- Updated the Supported Services table in documentation to reflect new providers.\n- Introduced new reference guides for each of the above services under the references/ directory.\n- Cleaned up documentation and removed outdated troubleshooting information.\n\nv1.0.10 | 2026-02-06T12:16:27.295Z | user\n\nAdded support and documentation for Zoho business apps.\n\n- Added eight new reference guides: Zoho Bigin, Books, Calendar, CRM, Inventory, Mail, People, and Recruit.\n- 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.\n- Users can now proxy native API calls to these Zoho services using managed authentication.\n\nv1.0.9 | 2026-02-06T04:06:33.456Z | user\n\n- Added support for Attio, GitHub, Linear, and Monday.com as new proxied services.\n- Provided new reference files for Attio, GitHub, Linear, and Monday.com integration details.\n- Updated the supported services table and routing guides to include the new providers.\n\nv1.0.8 | 2026-02-06T02:20:15.846Z | user\n\n- Replaced all Bash/cURL API examples with equivalent Python (using urllib) scripts for usage, connection management, and authentication instructions.\n- Kept all endpoint details and responses unchanged, ensuring functionality is the same.\n- Updated the documentation to reflect example usage in Python throughout for a more programmatic workflow.\n\nv1.0.7 | 2026-02-05T01:33:21.326Z | user\n\n- Added support and documentation for Klaviyo, Mailchimp, WhatsApp Business, and WooCommerce APIs.\n- Updated supported services table to include newly added providers.\n- Added new reference guides: klaviyo.md, mailchimp.md, whatsapp-business.md, and woocommerce.md.\n- Minor improvements to environment variable usage examples in authentication and connection sections.\n\nv1.0.6 | 2026-02-04T08:32:14.258Z | user\n\n- Added support and documentation for Pipedrive, Trello, and YouTube APIs.\n- Updated the Supported Services table to include Pipedrive, Trello, and YouTube.\n- Included new routing guides: references/pipedrive.md, references/trello.md, and references/youtube.md.\n\nv1.0.5 | 2026-02-03T23:10:44.977Z | user\n\n- 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.\n- No functional or interface changes; documentation update only.\n- All usage instructions, API coverage, and connection management details remain unchanged.\n\nv1.0.4 | 2026-02-03T19:27:43.151Z | user\n\n- Added detailed reference documentation for Asana, Calendly, ClickUp, Fathom, Google Meet, Google Play, Google Slides, and Outlook in the references directory.\n- Updated SKILL.md to include new supported services: Google Meet, Google Play, Google Slides, and Outlook.\n- Expanded supported services table and routing guide to reflect new integrations.\n- No breaking changes; existing API behavior is unchanged.\n\nv1.0.3 | 2026-02-03T11:29:21.158Z | user\n\n- Added support and documentation for new services: Asana, Calendly, ClickUp, and Fathom.\n- Updated the Supported Services table and references section to include new providers.\n- No changes to existing API usage or connection management.\n\nv1.0.2 | 2026-02-03T08:44:01.554Z | user\n\n- Removed the reference file for Shopify (references/shopify.md) from the documentation.\n- The Shopify-specific routing guide is no longer available in the references section.\n\nv1.0.1 | 2026-02-01T08:46:56.692Z | user\n\nhttps://github.com/maton-ai/api-gateway-skill\n\n- Removed CONTRIBUTING.md and README.md files for a leaner distribution.\n- Streamlined SKILL.md: greatly reduced the skill description, removing detailed usage scenarios, trigger phrases, and granular supported actions.\n- Left only a high-level overview of the API gateway's purpose and examples, focusing on essential usage and supported endpoints.\n- Documentation no longer lists specific triggers or user scenarios—refer to service docs for details.\n\nv1.0.0 | 2026-02-01T08:37:47.126Z | user\n\nhttps://github.com/maton-ai/api-gateway-skill\n\nInitial release of the api-gateway skill.\n\n- Provides an API gateway to interact with third-party services using managed OAuth.\n- 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.\n- Enables automations such as sending messages, reading data, creating records, updating, and deleting across supported apps.\n- Automatically injects OAuth tokens for seamless authentication.\n- Includes guidance for when to invoke the skill and common user scenarios.\n\nArchive index:\n\nArchive v1.0.54: 123 files, 166508 bytes\n\nFiles: 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)\n\nFile v1.0.54:SKILL.md\n\n---\nname: api-gateway\ndescription: |\n  Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth.\n  Use this skill when users want to interact with external services.\n  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).\ncompatibility: Requires network access and valid Maton API key\nmetadata:\n  author: maton\n  version: \"1.0\"\n  clawdbot:\n    emoji: 🧠\n    homepage: \"https://maton.ai\"\n    requires:\n      env:\n        - MATON_API_KEY\n---\n\n# API Gateway\n\nPassthrough 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.\n\n## Quick Start\n\n```bash\n# Native Slack API call\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()\nreq = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n\n## Base URL\n\n```\nhttps://gateway.maton.ai/{app}/{native-api-path}\n```\n\nReplace `{app}` with the service name and `{native-api-path}` with the actual API endpoint path.\n\nIMPORTANT: 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`.\n\n## Authentication\n\nAll requests require the Maton API key in the Authorization header:\n\n```\nAuthorization: Bearer $MATON_API_KEY\n```\n\nThe API gateway automatically injects the appropriate OAuth token for the target service.\n\n**Environment Variable:** You can set your API key as the `MATON_API_KEY` environment variable:\n\n```bash\nexport MATON_API_KEY=\"YOUR_API_KEY\"\n```\n\n## Getting Your API Key\n\n1. Sign in or create an account at [maton.ai](https://maton.ai)\n2. Go to [maton.ai/settings](https://maton.ai/settings)\n3. Click the copy button on the right side of API Key section to copy it\n\n## Connection Management\n\nConnection management uses a separate base URL: `https://ctrl.maton.ai`\n\n### List Connections\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n**Query Parameters (optional):**\n- `app` - Filter by service name (e.g., `slack`, `hubspot`, `salesforce`)\n- `status` - Filter by connection status (`ACTIVE`, `PENDING`, `FAILED`)\n\n**Response:**\n```json\n{\n  \"connections\": [\n    {\n      \"connection_id\": \"21fd90f9-5935-43cd-b6c8-bde9d915ca80\",\n      \"status\": \"ACTIVE\",\n      \"creation_time\": \"2025-12-08T07:20:53.488460Z\",\n      \"last_updated_time\": \"2026-01-31T20:03:32.593153Z\",\n      \"url\": \"https://connect.maton.ai/?session_token=5e9...\",\n      \"app\": \"slack\",\n      \"metadata\": {}\n    }\n  ]\n}\n```\n\n### Create Connection\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'app': 'slack'}).encode()\nreq = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Get Connection\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n**Response:**\n```json\n{\n  \"connection\": {\n    \"connection_id\": \"21fd90f9-5935-43cd-b6c8-bde9d915ca80\",\n    \"status\": \"ACTIVE\",\n    \"creation_time\": \"2025-12-08T07:20:53.488460Z\",\n    \"last_updated_time\": \"2026-01-31T20:03:32.593153Z\",\n    \"url\": \"https://connect.maton.ai/?session_token=5e9...\",\n    \"app\": \"slack\",\n    \"metadata\": {}\n  }\n}\n```\n\nOpen the returned URL in a browser to complete OAuth.\n\n### Delete Connection\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Specifying Connection\n\nIf 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:\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()\nreq = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nreq.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\nIf omitted, the gateway uses the default (oldest) active connection for that app.\n\n## Supported Services\n\n| Service | App Name | Base URL Proxied |\n|---------|----------|------------------|\n| ActiveCampaign | `active-campaign` | `{account}.api-us1.com` |\n| Acuity Scheduling | `acuity-scheduling` | `acuityscheduling.com` |\n| Airtable | `airtable` | `api.airtable.com` |\n| Apollo | `apollo` | `api.apollo.io` |\n| Asana | `asana` | `app.asana.com` |\n| Attio | `attio` | `api.attio.com` |\n| Basecamp | `basecamp` | `3.basecampapi.com` |\n| beehiiv | `beehiiv` | `api.beehiiv.com` |\n| Box | `box` | `api.box.com` |\n| Brevo | `brevo` | `api.brevo.com` |\n| Calendly | `calendly` | `api.calendly.com` |\n| Cal.com | `cal-com` | `api.cal.com` |\n| CallRail | `callrail` | `api.callrail.com` |\n| Chargebee | `chargebee` | `{subdomain}.chargebee.com` |\n| ClickFunnels | `clickfunnels` | `{subdomain}.myclickfunnels.com` |\n| ClickSend | `clicksend` | `rest.clicksend.com` |\n| ClickUp | `clickup` | `api.clickup.com` |\n| Clockify | `clockify` | `api.clockify.me` |\n| Coda | `coda` | `coda.io` |\n| Confluence | `confluence` | `api.atlassian.com` |\n| CompanyCam | `companycam` | `api.companycam.com` |\n| Cognito Forms | `cognito-forms` | `www.cognitoforms.com` |\n| Constant Contact | `constant-contact` | `api.cc.email` |\n| Dropbox | `dropbox` | `api.dropboxapi.com` |\n| Dropbox Business | `dropbox-business` | `api.dropboxapi.com` |\n| ElevenLabs | `elevenlabs` | `api.elevenlabs.io` |\n| Eventbrite | `eventbrite` | `www.eventbriteapi.com` |\n| Fathom | `fathom` | `api.fathom.ai` |\n| Firebase | `firebase` | `firebase.googleapis.com` |\n| Fireflies | `fireflies` | `api.fireflies.ai` |\n| GetResponse | `getresponse` | `api.getresponse.com` |\n| GitHub | `github` | `api.github.com` |\n| Gumroad | `gumroad` | `api.gumroad.com` |\n| Granola | `granola` | `mcp.granola.ai` (MCP) |\n| Google Ads | `google-ads` | `googleads.googleapis.com` |\n| Google BigQuery | `google-bigquery` | `bigquery.googleapis.com` |\n| Google Analytics Admin | `google-analytics-admin` | `analyticsadmin.googleapis.com` |\n| Google Analytics Data | `google-analytics-data` | `analyticsdata.googleapis.com` |\n| Google Calendar | `google-calendar` | `www.googleapis.com` |\n| Google Classroom | `google-classroom` | `classroom.googleapis.com` |\n| Google Contacts | `google-contacts` | `people.googleapis.com` |\n| Google Docs | `google-docs` | `docs.googleapis.com` |\n| Google Drive | `google-drive` | `www.googleapis.com` |\n| Google Forms | `google-forms` | `forms.googleapis.com` |\n| Gmail | `google-mail` | `gmail.googleapis.com` |\n| Google Merchant | `google-merchant` | `merchantapi.googleapis.com` |\n| Google Meet | `google-meet` | `meet.googleapis.com` |\n| Google Play | `google-play` | `androidpublisher.googleapis.com` |\n| Google Search Console | `google-search-console` | `www.googleapis.com` |\n| Google Sheets | `google-sheets` | `sheets.googleapis.com` |\n| Google Slides | `google-slides` | `slides.googleapis.com` |\n| Google Tasks | `google-tasks` | `tasks.googleapis.com` |\n| Google Workspace Admin | `google-workspace-admin` | `admin.googleapis.com` |\n| HubSpot | `hubspot` | `api.hubapi.com` |\n| Instantly | `instantly` | `api.instantly.ai` |\n| Jira | `jira` | `api.atlassian.com` |\n| Jobber | `jobber` | `api.getjobber.com` |\n| JotForm | `jotform` | `api.jotform.com` |\n| Keap | `keap` | `api.infusionsoft.com` |\n| Kit | `kit` | `api.kit.com` |\n| Klaviyo | `klaviyo` | `a.klaviyo.com` |\n| Lemlist | `lemlist` | `api.lemlist.com` |\n| Linear | `linear` | `api.linear.app` |\n| LinkedIn | `linkedin` | `api.linkedin.com` |\n| Mailchimp | `mailchimp` | `{dc}.api.mailchimp.com` |\n| MailerLite | `mailerlite` | `connect.mailerlite.com` |\n| Mailgun | `mailgun` | `api.mailgun.net` |\n| ManyChat | `manychat` | `api.manychat.com` |\n| Manus | `manus` | `api.manus.ai` |\n| Microsoft Excel | `microsoft-excel` | `graph.microsoft.com` |\n| Microsoft Teams | `microsoft-teams` | `graph.microsoft.com` |\n| Microsoft To Do | `microsoft-to-do` | `graph.microsoft.com` |\n| Monday.com | `monday` | `api.monday.com` |\n| Motion | `motion` | `api.usemotion.com` |\n| Netlify | `netlify` | `api.netlify.com` |\n| Notion | `notion` | `api.notion.com` |\n| OneDrive | `one-drive` | `graph.microsoft.com` |\n| Outlook | `outlook` | `graph.microsoft.com` |\n| PDF.co | `pdf-co` | `api.pdf.co` |\n| Pipedrive | `pipedrive` | `api.pipedrive.com` |\n| Podio | `podio` | `api.podio.com` |\n| PostHog | `posthog` | `{subdomain}.posthog.com` |\n| QuickBooks | `quickbooks` | `quickbooks.api.intuit.com` |\n| Quo | `quo` | `api.openphone.com` |\n| Reducto | `reducto` | `platform.reducto.ai` |\n| Salesforce | `salesforce` | `{instance}.salesforce.com` |\n| Sentry | `sentry` | `{subdomain}.sentry.io` |\n| SignNow | `signnow` | `api.signnow.com` |\n| Slack | `slack` | `slack.com` |\n| Snapchat | `snapchat` | `adsapi.snapchat.com` |\n| Square | `squareup` | `connect.squareup.com` |\n| Squarespace | `squarespace` | `api.squarespace.com` |\n| Stripe | `stripe` | `api.stripe.com` |\n| Systeme.io | `systeme` | `api.systeme.io` |\n| Tally | `tally` | `api.tally.so` |\n| Telegram | `telegram` | `api.telegram.org` |\n| TickTick | `ticktick` | `api.ticktick.com` |\n| Todoist | `todoist` | `api.todoist.com` |\n| Toggl Track | `toggl-track` | `api.track.toggl.com` |\n| Trello | `trello` | `api.trello.com` |\n| Twilio | `twilio` | `api.twilio.com` |\n| Typeform | `typeform` | `api.typeform.com` |\n| Vimeo | `vimeo` | `api.vimeo.com` |\n| WhatsApp Business | `whatsapp-business` | `graph.facebook.com` |\n| WooCommerce | `woocommerce` | `{store-url}/wp-json/wc/v3` |\n| WordPress.com | `wordpress` | `public-api.wordpress.com` |\n| Xero | `xero` | `api.xero.com` |\n| YouTube | `youtube` | `www.googleapis.com` |\n| Zoho Bigin | `zoho-bigin` | `www.zohoapis.com` |\n| Zoho Bookings | `zoho-bookings` | `www.zohoapis.com` |\n| Zoho Books | `zoho-books` | `www.zohoapis.com` |\n| Zoho Calendar | `zoho-calendar` | `calendar.zoho.com` |\n| Zoho CRM | `zoho-crm` | `www.zohoapis.com` |\n| Zoho Inventory | `zoho-inventory` | `www.zohoapis.com` |\n| Zoho Mail | `zoho-mail` | `mail.zoho.com` |\n| Zoho People | `zoho-people` | `people.zoho.com` |\n| Zoho Projects | `zoho-projects` | `projectsapi.zoho.com` |\n| Zoho Recruit | `zoho-recruit` | `recruit.zoho.com` |\n\nSee [references/](references/) for detailed routing guides per provider:\n- [ActiveCampaign](references/active-campaign.md) - Contacts, deals, tags, lists, automations, campaigns\n- [Acuity Scheduling](references/acuity-scheduling.md) - Appointments, calendars, clients, availability\n- [Airtable](references/airtable.md) - Records, bases, tables\n- [Apollo](references/apollo.md) - People search, enrichment, contacts\n- [Asana](references/asana.md) - Tasks, projects, workspaces, webhooks\n- [Attio](references/attio.md) - People, companies, records, tasks\n- [Basecamp](references/basecamp.md) - Projects, to-dos, messages, schedules, documents\n- [beehiiv](references/beehiiv.md) - Publications, subscriptions, posts, custom fields\n- [Box](references/box.md) - Files, folders, collaborations, shared links\n- [Brevo](references/brevo.md) - Contacts, email campaigns, transactional emails, templates\n- [Calendly](references/calendly.md) - Event types, scheduled events, availability, webhooks\n- [Cal.com](references/cal-com.md) - Event types, bookings, schedules, availability slots, webhooks\n- [CallRail](references/callrail.md) - Calls, trackers, companies, tags, analytics\n- [Chargebee](references/chargebee.md) - Subscriptions, customers, invoices\n- [ClickFunnels](references/clickfunnels.md) - Contacts, products, orders, courses, webhooks\n- [ClickSend](references/clicksend.md) - SMS, MMS, voice messages, contacts, lists\n- [ClickUp](references/clickup.md) - Tasks, lists, folders, spaces, webhooks\n- [Clockify](references/clockify.md) - Time tracking, projects, clients, tasks, workspaces\n- [Coda](references/coda.md) - Docs, pages, tables, rows, formulas, controls\n- [Confluence](references/confluence.md) - Pages, spaces, blogposts, comments, attachments\n- [CompanyCam](references/companycam.md) - Projects, photos, users, tags, groups, documents\n- [Cognito Forms](references/cognito-forms.md) - Forms, entries, documents, files\n- [Constant Contact](references/constant-contact.md) - Contacts, email campaigns, lists, segments\n- [Dropbox](references/dropbox.md) - Files, folders, search, metadata, revisions, tags\n- [Dropbox Business](references/dropbox-business.md) - Team members, groups, team folders, devices, audit logs\n- [ElevenLabs](references/elevenlabs.md) - Text-to-speech, voice cloning, sound effects, audio processing\n- [Eventbrite](references/eventbrite.md) - Events, venues, tickets, orders, attendees\n- [Fathom](references/fathom.md) - Meeting recordings, transcripts, summaries, webhooks\n- [Firebase](references/firebase.md) - Projects, web apps, Android apps, iOS apps, configurations\n- [Fireflies](references/fireflies.md) - Meeting transcripts, summaries, AskFred AI, channels\n- [GetResponse](references/getresponse.md) - Campaigns, contacts, newsletters, autoresponders, tags, segments\n- [GitHub](references/github.md) - Repositories, issues, pull requests, commits\n- [Gumroad](references/gumroad.md) - Products, sales, subscribers, licenses, webhooks\n- [Granola](references/granola.md) - Meeting notes, transcripts, queries (MCP)\n- [Google Ads](references/google-ads.md) - Campaigns, ad groups, GAQL queries\n- [Google Analytics Admin](references/google-analytics-admin.md) - Reports, dimensions, metrics\n- [Google Analytics Data](references/google-analytics-data.md) - Reports, dimensions, metrics\n- [Google BigQuery](references/google-bigquery.md) - Datasets, tables, jobs, SQL queries\n- [Google Calendar](references/google-calendar.md) - Events, calendars, free/busy\n- [Google Classroom](references/google-classroom.md) - Courses, coursework, students, teachers, announcements\n- [Google Contacts](references/google-contacts.md) - Contacts, contact groups, people search\n- [Google Docs](references/google-docs.md) - Document creation, batch updates\n- [Google Drive](references/google-drive.md) - Files, folders, permissions\n- [Google Forms](references/google-forms.md) - Forms, questions, responses\n- [Gmail](references/google-mail.md) - Messages, threads, labels\n- [Google Meet](references/google-meet.md) - Spaces, conference records, participants\n- [Google Merchant](references/google-merchant.md) - Products, inventories, promotions, reports\n- [Google Play](references/google-play.md) - In-app products, subscriptions, reviews\n- [Google Search Console](references/google-search-console.md) - Search analytics, sitemaps\n- [Google Sheets](references/google-sheets.md) - Values, ranges, formatting\n- [Google Slides](references/google-slides.md) - Presentations, slides, formatting\n- [Google Tasks](references/google-tasks.md) - Task lists, tasks, subtasks\n- [Google Workspace Admin](references/google-workspace-admin.md) - Users, groups, org units, domains, roles\n- [HubSpot](references/hubspot.md) - Contacts, companies, deals\n- [Instantly](references/instantly.md) - Campaigns, leads, accounts, email outreach\n- [Jira](references/jira.md) - Issues, projects, JQL queries\n- [Jobber](references/jobber.md) - Clients, jobs, invoices, quotes (GraphQL)\n- [JotForm](references/jotform.md) - Forms, submissions, webhooks\n- [Keap](references/keap.md) - Contacts, companies, tags, tasks, opportunities, campaigns\n- [Kit](references/kit.md) - Subscribers, tags, forms, sequences, broadcasts\n- [Klaviyo](references/klaviyo.md) - Profiles, lists, campaigns, flows, events\n- [Lemlist](references/lemlist.md) - Campaigns, leads, activities, schedules, unsubscribes\n- [Linear](references/linear.md) - Issues, projects, teams, cycles (GraphQL)\n- [LinkedIn](references/linkedin.md) - Profile, posts, shares, media uploads\n- [Mailchimp](references/mailchimp.md) - Audiences, campaigns, templates, automations\n- [MailerLite](references/mailerlite.md) - Subscribers, groups, campaigns, automations, forms\n- [Mailgun](references/mailgun.md) - Email sending, domains, routes, templates, mailing lists, suppressions\n- [ManyChat](references/manychat.md) - Subscribers, tags, flows, messaging\n- [Manus](references/manus.md) - AI agent tasks, projects, files, webhooks\n- [Microsoft Excel](references/microsoft-excel.md) - Workbooks, worksheets, ranges, tables, charts\n- [Microsoft Teams](references/microsoft-teams.md) - Teams, channels, messages, members, chats\n- [Microsoft To Do](references/microsoft-to-do.md) - Task lists, tasks, checklist items, linked resources\n- [Monday.com](references/monday.md) - Boards, items, columns, groups (GraphQL)\n- [Motion](references/motion.md) - Tasks, projects, workspaces, schedules\n- [Netlify](references/netlify.md) - Sites, deploys, builds, DNS, environment variables\n- [Notion](references/notion.md) - Pages, databases, blocks\n- [OneDrive](references/one-drive.md) - Files, folders, drives, sharing\n- [Outlook](references/outlook.md) - Mail, calendar, contacts\n- [PDF.co](references/pdf-co.md) - PDF conversion, merge, split, edit, text extraction, barcodes\n- [Pipedrive](references/pipedrive.md) - Deals, persons, organizations, activities\n- [Podio](references/podio.md) - Organizations, workspaces, apps, items, tasks, comments\n- [PostHog](references/posthog.md) - Product analytics, feature flags, session recordings, experiments, HogQL queries\n- [QuickBooks](references/quickbooks.md) - Customers, invoices, reports\n- [Quo](references/quo.md) - Calls, messages, contacts, conversations, webhooks\n- [Reducto](references/reducto.md) - Document parsing, extraction, splitting, editing\n- [Salesforce](references/salesforce.md) - SOQL, sObjects, CRUD\n- [SignNow](references/signnow.md) - Documents, templates, invites, e-signatures\n- [SendGrid](references/sendgrid.md) - Email sending, contacts, templates, suppressions, statistics\n- [Sentry](references/sentry.md) - Issues, events, projects, teams, releases\n- [Slack](references/slack.md) - Messages, channels, users\n- [Snapchat](references/snapchat.md) - Ad accounts, campaigns, ad squads, ads, creatives, audiences\n- [Square](references/squareup.md) - Payments, customers, orders, catalog, inventory, invoices\n- [Squarespace](references/squarespace.md) - Products, inventory, orders, profiles, transactions\n- [Stripe](references/stripe.md) - Customers, subscriptions, payments\n- [Systeme.io](references/systeme.md) - Contacts, tags, courses, communities, webhooks\n- [Tally](references/tally.md) - Forms, submissions, workspaces, webhooks\n- [Telegram](references/telegram.md) - Messages, chats, bots, updates, polls\n- [TickTick](references/ticktick.md) - Tasks, projects, task lists\n- [Todoist](references/todoist.md) - Tasks, projects, sections, labels, comments\n- [Toggl Track](references/toggl-track.md) - Time entries, projects, clients, tags, workspaces\n- [Trello](references/trello.md) - Boards, lists, cards, checklists\n- [Twilio](references/twilio.md) - SMS, voice calls, phone numbers, messaging\n- [Typeform](references/typeform.md) - Forms, responses, insights\n- [Vimeo](references/vimeo.md) - Videos, folders, albums, comments, likes\n- [WhatsApp Business](references/whatsapp-business.md) - Messages, templates, media\n- [WooCommerce](references/woocommerce.md) - Products, orders, customers, coupons\n- [WordPress.com](references/wordpress.md) - Posts, pages, sites, users, settings\n- [Xero](references/xero.md) - Contacts, invoices, reports\n- [YouTube](references/youtube.md) - Videos, playlists, channels, subscriptions\n- [Zoho Bigin](references/zoho-bigin.md) - Contacts, companies, pipelines, products\n- [Zoho Bookings](references/zoho-bookings.md) - Appointments, services, staff, workspaces\n- [Zoho Books](references/zoho-books.md) - Invoices, contacts, bills, expenses\n- [Zoho Calendar](references/zoho-calendar.md) - Calendars, events, attendees, reminders\n- [Zoho CRM](references/zoho-crm.md) - Leads, contacts, accounts, deals, search\n- [Zoho Inventory](references/zoho-inventory.md) - Items, sales orders, invoices, purchase orders, bills\n- [Zoho Mail](references/zoho-mail.md) - Messages, folders, labels, attachments\n- [Zoho People](references/zoho-people.md) - Employees, departments, designations, attendance, leave\n- [Zoho Projects](references/zoho-projects.md) - Projects, tasks, milestones, tasklists, comments\n- [Zoho Recruit](references/zoho-recruit.md) - Candidates, job openings, interviews, applications\n\n## Examples\n\n### Slack - Post Message (Native API)\n\n```bash\n# Native Slack API: POST https://slack.com/api/chat.postMessage\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()\nreq = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json; charset=utf-8')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### HubSpot - Create Contact (Native API)\n\n```bash\n# Native HubSpot API: POST https://api.hubapi.com/crm/v3/objects/contacts\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'properties': {'email': 'john@example.com', 'firstname': 'John', 'lastname': 'Doe'}}).encode()\nreq = urllib.request.Request('https://gateway.maton.ai/hubspot/crm/v3/objects/contacts', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Google Sheets - Get Spreadsheet Values (Native API)\n\n```bash\n# Native Sheets API: GET https://sheets.googleapis.com/v4/spreadsheets/{id}/values/{range}\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://gateway.maton.ai/google-sheets/v4/spreadsheets/122BS1sFN2RKL8AOUQjkLdubzOwgqzPT64KfZ2rvYI4M/values/Sheet1!A1:B2')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Salesforce - SOQL Query (Native API)\n\n```bash\n# Native Salesforce API: GET https://{instance}.salesforce.com/services/data/v64.0/query?q=...\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://gateway.maton.ai/salesforce/services/data/v64.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Airtable - List Tables (Native API)\n\n```bash\n# Native Airtable API: GET https://api.airtable.com/v0/meta/bases/{id}/tables\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://gateway.maton.ai/airtable/v0/meta/bases/appgqan2NzWGP5sBK/tables')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Notion - Query Database (Native API)\n\n```bash\n# Native Notion API: POST https://api.notion.com/v1/data_sources/{id}/query\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({}).encode()\nreq = urllib.request.Request('https://gateway.maton.ai/notion/v1/data_sources/23702dc5-9a3b-8001-9e1c-000b5af0a980/query', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nreq.add_header('Notion-Version', '2025-09-03')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Stripe - List Customers (Native API)\n\n```bash\n# Native Stripe API: GET https://api.stripe.com/v1/customers\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://gateway.maton.ai/stripe/v1/customers?limit=10')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n## Code Examples\n\n### JavaScript (Node.js)\n\n```javascript\nconst response = await fetch('https://gateway.maton.ai/slack/api/chat.postMessage', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application/json',\n    'Authorization': `Bearer ${process.env.MATON_API_KEY}`\n  },\n  body: JSON.stringify({ channel: 'C0123456', text: 'Hello!' })\n});\n```\n\n### Python\n\n```python\nimport os\nimport requests\n\nresponse = requests.post(\n    'https://gateway.maton.ai/slack/api/chat.postMessage',\n    headers={'Authorization': f'Bearer {os.environ[\"MATON_API_KEY\"]}'},\n    json={'channel': 'C0123456', 'text': 'Hello!'}\n)\n```\n\n## Error Handling\n\n| Status | Meaning |\n|--------|---------|\n| 400 | Missing connection for the requested app |\n| 401 | Invalid or missing Maton API key |\n| 429 | Rate limited (10 requests/second per account) |\n| 500 | Internal Server Error |\n| 4xx/5xx | Passthrough error from the target API |\n\nErrors from the target API are passed through with their original status codes and response bodies.\n\n### Troubleshooting: API Key Issues\n\n1. Check that the `MATON_API_KEY` environment variable is set:\n\n```bash\necho $MATON_API_KEY\n```\n\n2. Verify the API key is valid by listing connections:\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Troubleshooting: Invalid App Name\n\n1. Verify your URL path starts with the correct app name. The path must begin with `/google-mail/`. For example:\n\n- Correct: `https://gateway.maton.ai/google-mail/gmail/v1/users/me/messages`\n- Incorrect: `https://gateway.maton.ai/gmail/v1/users/me/messages`\n\n2. Ensure you have an active connection for the app. List your connections to verify:\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-mail&status=ACTIVE')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Troubleshooting: Server Error\n\nA 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.\n\n## Rate Limits\n\n- 10 requests per second per account\n- Target API rate limits also apply\n\n## Notes\n\n- When using curl with URLs containing brackets (`fields[]`, `sort[]`, `records[]`), use the `-g` flag to disable glob parsing\n- When piping curl output to `jq`, environment variables may not expand correctly in some shells, which can cause \"Invalid API key\" errors\n\n## Tips\n\n1. **Use native API docs**: Refer to each service's official API documentation for endpoint paths and parameters.\n\n2. **Headers are forwarded**: Custom headers (except `Host` and `Authorization`) are forwarded to the target API.\n\n3. **Query params work**: URL query parameters are passed through to the target API.\n\n4. **All HTTP methods supported**: GET, POST, PUT, PATCH, DELETE are all supported.\n\n5. **QuickBooks special case**: Use `:realmId` in the path and it will be replaced with the connected realm ID.\n\n## Optional\n\n- [Github](https://github.com/maton-ai/api-gateway-skill)\n- [API Reference](https://www.maton.ai/docs/api-reference)\n- [Maton Community](https://discord.com/invite/dBfFAcefs2)\n- [Maton Support](mailto:support@maton.ai)\n\nFile v1.0.54:_meta.json\n\n{\n  \"ownerId\": \"kn75240wq8bnv2qm2xgry748jd80b9r0\",\n  \"slug\": \"api-gateway\",\n  \"version\": \"1.0.54\",\n  \"publishedAt\": 1772244788484\n}\n\nFile v1.0.54:references/active-campaign.md\n\n# ActiveCampaign Routing Reference\n\n**App name:** `active-campaign`\n**Base URL proxied:** `{account}.api-us1.com`\n\n## API Path Pattern\n\n```\n/active-campaign/api/3/{resource}\n```\n\n## Common Endpoints\n\n### Contacts\n\n#### List Contacts\n```bash\nGET /active-campaign/api/3/contacts\n```\n\n#### Get Contact\n```bash\nGET /active-campaign/api/3/contacts/{contactId}\n```\n\n#### Create Contact\n```bash\nPOST /active-campaign/api/3/contacts\nContent-Type: application/json\n\n{\n  \"contact\": {\n    \"email\": \"user@example.com\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\"\n  }\n}\n```\n\n#### Update Contact\n```bash\nPUT /active-campaign/api/3/contacts/{contactId}\n```\n\n#### Delete Contact\n```bash\nDELETE /active-campaign/api/3/contacts/{contactId}\n```\n\n### Tags\n\n#### List Tags\n```bash\nGET /active-campaign/api/3/tags\n```\n\n#### Create Tag\n```bash\nPOST /active-campaign/api/3/tags\nContent-Type: application/json\n\n{\n  \"tag\": {\n    \"tag\": \"Tag Name\",\n    \"tagType\": \"contact\"\n  }\n}\n```\n\n### Contact Tags\n\n#### Add Tag to Contact\n```bash\nPOST /active-campaign/api/3/contactTags\nContent-Type: application/json\n\n{\n  \"contactTag\": {\n    \"contact\": \"1\",\n    \"tag\": \"1\"\n  }\n}\n```\n\n#### Remove Tag from Contact\n```bash\nDELETE /active-campaign/api/3/contactTags/{contactTagId}\n```\n\n### Lists\n\n#### List All Lists\n```bash\nGET /active-campaign/api/3/lists\n```\n\n#### Create List\n```bash\nPOST /active-campaign/api/3/lists\n```\n\n### Deals\n\n#### List Deals\n```bash\nGET /active-campaign/api/3/deals\n```\n\n#### Create Deal\n```bash\nPOST /active-campaign/api/3/deals\nContent-Type: application/json\n\n{\n  \"deal\": {\n    \"title\": \"New Deal\",\n    \"value\": \"10000\",\n    \"currency\": \"usd\",\n    \"contact\": \"1\",\n    \"stage\": \"1\"\n  }\n}\n```\n\n### Deal Stages & Pipelines\n\n#### List Deal Stages\n```bash\nGET /active-campaign/api/3/dealStages\n```\n\n#### List Pipelines (Deal Groups)\n```bash\nGET /active-campaign/api/3/dealGroups\n```\n\n### Automations\n\n#### List Automations\n```bash\nGET /active-campaign/api/3/automations\n```\n\n### Campaigns\n\n#### List Campaigns\n```bash\nGET /active-campaign/api/3/campaigns\n```\n\n### Users\n\n#### List Users\n```bash\nGET /active-campaign/api/3/users\n```\n\n### Accounts\n\n#### List Accounts\n```bash\nGET /active-campaign/api/3/accounts\n```\n\n### Custom Fields\n\n#### List Fields\n```bash\nGET /active-campaign/api/3/fields\n```\n\n### Notes\n\n#### List Notes\n```bash\nGET /active-campaign/api/3/notes\n```\n\n### Webhooks\n\n#### List Webhooks\n```bash\nGET /active-campaign/api/3/webhooks\n```\n\n## Pagination\n\nUses offset-based pagination:\n\n```bash\nGET /active-campaign/api/3/contacts?limit=20&offset=0\n```\n\n**Parameters:**\n- `limit` - Results per page (default: 20)\n- `offset` - Starting index\n\nResponse includes meta with total:\n```json\n{\n  \"contacts\": [...],\n  \"meta\": {\n    \"total\": \"150\"\n  }\n}\n```\n\n## Notes\n\n- All endpoints require `/api/3/` prefix\n- Request bodies use singular resource names (e.g., `{\"contact\": {...}}`)\n- IDs returned as strings\n- Rate limit: 5 requests per second per account\n- DELETE returns 200 OK (not 204)\n\n## Resources\n\n- [ActiveCampaign API Overview](https://developers.activecampaign.com/reference/overview)\n- [Developer Portal](https://developers.activecampaign.com/)\n- [Contacts API](https://developers.activecampaign.com/reference/list-all-contacts)\n\nFile v1.0.54:references/acuity-scheduling.md\n\n# Acuity Scheduling Routing Reference\n\n**App name:** `acuity-scheduling`\n**Base URL proxied:** `acuityscheduling.com`\n\n## API Path Pattern\n\n```\n/acuity-scheduling/api/v1/{resource}\n```\n\nThe gateway automatically prepends `/api/v1` when proxying to Acuity.\n\n## Common Endpoints\n\n### Get Account Info\n```bash\nGET /acuity-scheduling/api/v1/me\n```\n\n### List Appointments\n```bash\nGET /acuity-scheduling/api/v1/appointments?max=100&minDate=2026-02-01\n```\n\n### Get Appointment\n```bash\nGET /acuity-scheduling/api/v1/appointments/{id}\n```\n\n### Create Appointment\n```bash\nPOST /acuity-scheduling/api/v1/appointments\nContent-Type: application/json\n\n{\n  \"datetime\": \"2026-02-15T09:00\",\n  \"appointmentTypeID\": 123,\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"john@example.com\"\n}\n```\n\n### Update Appointment\n```bash\nPUT /acuity-scheduling/api/v1/appointments/{id}\nContent-Type: application/json\n\n{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Smith\"\n}\n```\n\n### Cancel Appointment\n```bash\nPUT /acuity-scheduling/api/v1/appointments/{id}/cancel\n```\n\n### Reschedule Appointment\n```bash\nPUT /acuity-scheduling/api/v1/appointments/{id}/reschedule\nContent-Type: application/json\n\n{\n  \"datetime\": \"2026-02-20T10:00\"\n}\n```\n\n### List Calendars\n```bash\nGET /acuity-scheduling/api/v1/calendars\n```\n\n### List Appointment Types\n```bash\nGET /acuity-scheduling/api/v1/appointment-types\n```\n\n### Get Available Dates\n```bash\nGET /acuity-scheduling/api/v1/availability/dates?month=2026-02&appointmentTypeID=123\n```\n\n### Get Available Times\n```bash\nGET /acuity-scheduling/api/v1/availability/times?date=2026-02-04&appointmentTypeID=123\n```\n\n### List Clients\n```bash\nGET /acuity-scheduling/api/v1/clients?search=John\n```\n\n### Create Client\n```bash\nPOST /acuity-scheduling/api/v1/clients\nContent-Type: application/json\n\n{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"john@example.com\"\n}\n```\n\n### List Blocks\n```bash\nGET /acuity-scheduling/api/v1/blocks?calendarID=1234\n```\n\n### Create Block\n```bash\nPOST /acuity-scheduling/api/v1/blocks\nContent-Type: application/json\n\n{\n  \"start\": \"2026-02-15T12:00\",\n  \"end\": \"2026-02-15T13:00\",\n  \"calendarID\": 1234\n}\n```\n\n### Delete Block\n```bash\nDELETE /acuity-scheduling/api/v1/blocks/{id}\n```\n\n### List Forms\n```bash\nGET /acuity-scheduling/api/v1/forms\n```\n\n### List Labels\n```bash\nGET /acuity-scheduling/api/v1/labels\n```\n\n## Notes\n\n- Datetime values must be parseable by PHP's `strtotime()` function\n- Timezones use IANA format (e.g., \"America/New_York\")\n- Use `max` parameter to limit results (default: 100)\n- Use `minDate` and `maxDate` for date-range filtering\n- Client update/delete only works for clients with existing appointments\n- Rescheduling requires the new datetime to be an available time slot\n\n## Resources\n\n- [Acuity Scheduling API Quick Start](https://developers.acuityscheduling.com/reference/quick-start)\n- [Appointments API](https://developers.acuityscheduling.com/reference/get-appointments)\n- [Availability API](https://developers.acuityscheduling.com/reference/get-availability-dates)\n- [OAuth2 Documentation](https://developers.acuityscheduling.com/docs/oauth2)\n\nFile v1.0.54:references/airtable.md\n\n# Airtable Routing Reference\n\n**App name:** `airtable`\n**Base URL proxied:** `api.airtable.com`\n\n## API Path Pattern\n\n```\n/airtable/v0/{baseId}/{tableIdOrName}\n```\n\n## Common Endpoints\n\n### List Records\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?maxRecords=100\n```\n\nWith view:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?view=Grid%20view&maxRecords=100\n```\n\nWith filter formula:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?filterByFormula={Status}='Active'\n```\n\nWith field selection:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?fields[]=Name&fields[]=Status&fields[]=Email\n```\n\nWith sorting:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?sort[0][field]=Created&sort[0][direction]=desc\n```\n\n### Get Record\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}/{recordId}\n```\n\n### Create Records\n```bash\nPOST /airtable/v0/{baseId}/{tableIdOrName}\nContent-Type: application/json\n\n{\n  \"records\": [\n    {\n      \"fields\": {\n        \"Name\": \"New Record\",\n        \"Status\": \"Active\",\n        \"Email\": \"test@example.com\"\n      }\n    }\n  ]\n}\n```\n\n### Update Records (PATCH - partial update)\n```bash\nPATCH /airtable/v0/{baseId}/{tableIdOrName}\nContent-Type: application/json\n\n{\n  \"records\": [\n    {\n      \"id\": \"recXXXXXXXXXXXXXX\",\n      \"fields\": {\n        \"Status\": \"Completed\"\n      }\n    }\n  ]\n}\n```\n\n### Update Records (PUT - full replace)\n```bash\nPUT /airtable/v0/{baseId}/{tableIdOrName}\nContent-Type: application/json\n\n{\n  \"records\": [\n    {\n      \"id\": \"recXXXXXXXXXXXXXX\",\n      \"fields\": {\n        \"Name\": \"Updated Name\",\n        \"Status\": \"Active\"\n      }\n    }\n  ]\n}\n```\n\n### Delete Records\n```bash\nDELETE /airtable/v0/{baseId}/{tableIdOrName}?records[]=recXXXXX&records[]=recYYYYY\n```\n\n### List Bases\n```bash\nGET /airtable/v0/meta/bases\n```\n\n### Get Base Schema\n```bash\nGET /airtable/v0/meta/bases/{baseId}/tables\n```\n\n## Pagination\n\n**Parameters:**\n- `pageSize` - Number of records per request (max 100, default 100)\n- `maxRecords` - Maximum total records across all pages\n- `offset` - Cursor for next page (returned in response)\n\nResponse includes `offset` when more records exist:\n```json\n{\n  \"records\": [...],\n  \"offset\": \"itrXXXXXXXXXXX\"\n}\n```\n\nUse offset for next page:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?pageSize=50&offset=itrXXXXXXXXXXX\n```\n\n## Notes\n\n- Authentication is automatic via OAuth\n- Base IDs start with `app`\n- Table IDs start with `tbl` (can also use table name)\n- Record IDs start with `rec`\n- Maximum 100 records per request for create/update\n- Maximum 10 records per delete request\n- Filter formulas use Airtable formula syntax\n\n## Resources\n\n- [API Overview](https://airtable.com/developers/web/api/introduction)\n- [List Records](https://airtable.com/developers/web/api/list-records)\n- [Create Records](https://airtable.com/developers/web/api/create-records)\n- [Update Records](https://airtable.com/developers/web/api/update-record)\n- [Delete Records](https://airtable.com/developers/web/api/delete-record)\n- [Formula Reference](https://support.airtable.com/docs/formula-field-reference)\n\nFile v1.0.54:references/apollo.md\n\n# Apollo Routing Reference\n\n**App name:** `apollo`\n**Base URL proxied:** `api.apollo.io`\n\n## API Path Pattern\n\n```\n/apollo/v1/{endpoint}\n```\n\n## Common Endpoints\n\n### People\n\n#### Search People\n```bash\nPOST /apollo/v1/mixed_people/api_search\nContent-Type: application/json\n\n{\n  \"q_organization_name\": \"Google\",\n  \"page\": 1,\n  \"per_page\": 25\n}\n```\n\n#### Get Person\n```bash\nGET /apollo/v1/people/{personId}\n```\n\n#### Enrich Person\n```bash\nPOST /apollo/v1/people/match\nContent-Type: application/json\n\n{\n  \"email\": \"john@example.com\"\n}\n```\n\nOr by LinkedIn:\n```bash\nPOST /apollo/v1/people/match\nContent-Type: application/json\n\n{\n  \"linkedin_url\": \"https://linkedin.com/in/johndoe\"\n}\n```\n\n### Organizations\n\n#### Search Organizations\n```bash\nPOST /apollo/v1/organizations/search\nContent-Type: application/json\n\n{\n  \"q_organization_name\": \"Google\",\n  \"page\": 1,\n  \"per_page\": 25\n}\n```\n\n#### Enrich Organization\n```bash\nPOST /apollo/v1/organizations/enrich\nContent-Type: application/json\n\n{\n  \"domain\": \"google.com\"\n}\n```\n\n### Contacts\n\n#### Search Contacts\n```bash\nPOST /apollo/v1/contacts/search\nContent-Type: application/json\n\n{\n  \"page\": 1,\n  \"per_page\": 25\n}\n```\n\n#### Create Contact\n```bash\nPOST /apollo/v1/contacts\nContent-Type: application/json\n\n{\n  \"first_name\": \"John\",\n  \"last_name\": \"Doe\",\n  \"email\": \"john@example.com\",\n  \"organization_name\": \"Acme Corp\"\n}\n```\n\n#### Update Contact\n```bash\nPUT /apollo/v1/contacts/{contactId}\nContent-Type: application/json\n\n{\n  \"first_name\": \"Jane\"\n}\n```\n\n### Accounts\n\n#### Search Accounts\n```bash\nPOST /apollo/v1/accounts/search\nContent-Type: application/json\n\n{\n  \"page\": 1,\n  \"per_page\": 25\n}\n```\n\n#### Create Account\n```bash\nPOST /apollo/v1/accounts\nContent-Type: application/json\n\n{\n  \"name\": \"Acme Corp\",\n  \"domain\": \"acme.com\"\n}\n```\n\n### Sequences\n\n#### Search Sequences\n```bash\nPOST /apollo/v1/emailer_campaigns/search\nContent-Type: application/json\n\n{\n  \"page\": 1,\n  \"per_page\": 25\n}\n```\n\n#### Add Contact to Sequence\n```bash\nPOST /apollo/v1/emailer_campaigns/{campaignId}/add_contact_ids\nContent-Type: application/json\n\n{\n  \"contact_ids\": [\"contact_id_1\", \"contact_id_2\"]\n}\n```\n\n### Email\n\n#### Search Email Messages\n```bash\nPOST /apollo/v1/emailer_messages/search\nContent-Type: application/json\n\n{\n  \"contact_id\": \"{contactId}\"\n}\n```\n\n### Labels\n\n#### List Labels\n```bash\nGET /apollo/v1/labels\n```\n\n## Search Filters\n\nCommon search parameters:\n- `q_organization_name` - Company name\n- `q_person_title` - Job title\n- `person_locations` - Array of locations\n- `organization_num_employees_ranges` - Employee count ranges\n- `q_keywords` - General keyword search\n\n## Notes\n\n- Authentication is automatic - the router injects the API key\n- Pagination uses `page` and `per_page` parameters in POST body\n- Most list endpoints use POST with `/search` suffix (not GET)\n- Email enrichment consumes credits\n- Rate limits apply per endpoint\n- `people/search` and `mixed_people/search` are deprecated - use `mixed_people/api_search` instead\n\n## Resources\n\n- [API Overview](https://docs.apollo.io/reference/introduction)\n- [Search People](https://docs.apollo.io/reference/people-api-search.md)\n- [Enrich Person](https://docs.apollo.io/reference/people-enrichment.md)\n- [Search Organizations](https://docs.apollo.io/reference/organization-search.md)\n- [Enrich Organization](https://docs.apollo.io/reference/organization-enrichment.md)\n- [Search Contacts](https://docs.apollo.io/reference/search-for-contacts.md)\n- [Create Contact](https://docs.apollo.io/reference/create-a-contact.md)\n- [Update Contact](https://docs.apollo.io/reference/update-a-contact.md)\n- [Search Accounts](https://docs.apollo.io/reference/search-for-accounts.md)\n- [Create Account](https://docs.apollo.io/reference/create-an-account.md)\n- [Search Sequences](https://docs.apollo.io/reference/search-for-sequences.md)\n- [Add Contacts to Sequence](https://docs.apollo.io/reference/add-contacts-to-sequence.md)\n- [Search Email Messages](https://docs.apollo.io/reference/search-for-outreach-emails.md)\n- [List Labels](https://docs.apollo.io/reference/get-a-list-of-all-lists.md)\n- [LLM Reference](https://docs.apollo.io/llms.txt)\n\nFile v1.0.54:references/asana.md\n\n# Asana Routing Reference\n\n**App name:** `asana`\n**Base URL proxied:** `app.asana.com`\n\n## API Path Pattern\n\n```\n/asana/api/1.0/{resource}\n```\n\n## Common Endpoints\n\n### Get Current User\n```bash\nGET /asana/api/1.0/users/me\n```\n\n### List Workspaces\n```bash\nGET /asana/api/1.0/workspaces\n```\n\n### List Tasks\n```bash\nGET /asana/api/1.0/tasks?project=PROJECT_GID&opt_fields=name,completed,due_on\n```\n\n### Get a Task\n```bash\nGET /asana/api/1.0/tasks/{task_gid}\n```\n\n### Create a Task\n```bash\nPOST /asana/api/1.0/tasks\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"name\": \"New task\",\n    \"projects\": [\"PROJECT_GID\"],\n    \"assignee\": \"USER_GID\",\n    \"due_on\": \"2025-03-20\",\n    \"notes\": \"Task description\"\n  }\n}\n```\n\n### Update a Task\n```bash\nPUT /asana/api/1.0/tasks/{task_gid}\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"completed\": true\n  }\n}\n```\n\n### Delete a Task\n```bash\nDELETE /asana/api/1.0/tasks/{task_gid}\n```\n\n### Get Subtasks\n```bash\nGET /asana/api/1.0/tasks/{task_gid}/subtasks\n```\n\n### Create Subtask\n```bash\nPOST /asana/api/1.0/tasks/{task_gid}/subtasks\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"name\": \"Subtask name\"\n  }\n}\n```\n\n### List Projects\n```bash\nGET /asana/api/1.0/projects?workspace=WORKSPACE_GID&opt_fields=name,owner,due_date\n```\n\n### Get a Project\n```bash\nGET /asana/api/1.0/projects/{project_gid}\n```\n\n### Create a Project\n```bash\nPOST /asana/api/1.0/projects\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"name\": \"New Project\",\n    \"workspace\": \"WORKSPACE_GID\"\n  }\n}\n```\n\n### List Users in Workspace\n```bash\nGET /asana/api/1.0/workspaces/{workspace_gid}/users?opt_fields=name,email\n```\n\n### Create Webhook\n```bash\nPOST /asana/api/1.0/webhooks\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"resource\": \"PROJECT_OR_TASK_GID\",\n    \"target\": \"https://example.com/webhook\",\n    \"filters\": [\n      {\n        \"resource_type\": \"task\",\n        \"action\": \"changed\",\n        \"fields\": [\"completed\", \"due_on\"]\n      }\n    ]\n  }\n}\n```\n\n### Delete Webhook\n```bash\nDELETE /asana/api/1.0/webhooks/{webhook_gid}\n```\n\n## Notes\n\n- Resource IDs (GIDs) are strings\n- Timestamps are in ISO 8601 format\n- Use `opt_fields` to specify which fields to return in responses\n- Workspaces are the highest-level organizational unit\n- Use cursor-based pagination with `offset` parameter\n- Webhook creation requires the target URL to respond with 200 status\n\n## Resources\n\n- [Asana API Overview](https://developers.asana.com)\n- [API Reference](https://developers.asana.com/reference)\n- [Tasks](https://developers.asana.com/reference/tasks)\n- [Projects](https://developers.asana.com/reference/projects)\n- [Workspaces](https://developers.asana.com/reference/workspaces)\n- [Webhooks](https://developers.asana.com/reference/webhooks)\n- [LLM Reference](https://developers.asana.com/llms.txt)\n\nFile v1.0.54:references/attio.md\n\n# Attio Routing Reference\n\n**App name:** `attio`\n**Base URL proxied:** `api.attio.com`\n\n## API Path Pattern\n\n```\n/attio/v2/{resource}\n```\n\n## Common Endpoints\n\n### List Objects\n```bash\nGET /attio/v2/objects\n```\n\n### Get Object\n```bash\nGET /attio/v2/objects/{object}\n```\n\n### List Attributes\n```bash\nGET /attio/v2/objects/{object}/attributes\n```\n\n### Query Records\n```bash\nPOST /attio/v2/objects/{object}/records/query\nContent-Type: application/json\n\n{\n  \"limit\": 50,\n  \"offset\": 0\n}\n```\n\n### Get Record\n```bash\nGET /attio/v2/objects/{object}/records/{record_id}\n```\n\n### Create Record\n```bash\nPOST /attio/v2/objects/{object}/records\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"values\": {\n      \"name\": [{\"first_name\": \"John\", \"last_name\": \"Doe\", \"full_name\": \"John Doe\"}],\n      \"email_addresses\": [\"john@example.com\"]\n    }\n  }\n}\n```\n\n### Update Record\n```bash\nPATCH /attio/v2/objects/{object}/records/{record_id}\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"values\": {\n      \"job_title\": \"Engineer\"\n    }\n  }\n}\n```\n\n### Delete Record\n```bash\nDELETE /attio/v2/objects/{object}/records/{record_id}\n```\n\n### List Tasks\n```bash\nGET /attio/v2/tasks?limit=50\n```\n\n### Create Task\n```bash\nPOST /attio/v2/tasks\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"content\": \"Task description\",\n    \"format\": \"plaintext\",\n    \"deadline_at\": null,\n    \"assignees\": [],\n    \"linked_records\": []\n  }\n}\n```\n\n### List Workspace Members\n```bash\nGET /attio/v2/workspace_members\n```\n\n### Identify Self\n```bash\nGET /attio/v2/self\n```\n\n### Notes\n\n#### List Notes\n```bash\nGET /attio/v2/notes?limit=50&parent_object={object}&parent_record_id={record_id}\n```\n\n#### Get Note\n```bash\nGET /attio/v2/notes/{note_id}\n```\n\n#### Create Note\n```bash\nPOST /attio/v2/notes\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"format\": \"plaintext\",\n    \"title\": \"Meeting Summary\",\n    \"content\": \"Note content here\",\n    \"parent_object\": \"companies\",\n    \"parent_record_id\": \"{record_id}\",\n    \"created_by_actor\": {\n      \"type\": \"workspace-member\",\n      \"id\": \"{workspace_member_id}\"\n    }\n  }\n}\n```\n\n#### Delete Note\n```bash\nDELETE /attio/v2/notes/{note_id}\n```\n\n### Comments\n\n#### Create Comment on Record\n```bash\nPOST /attio/v2/comments\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"format\": \"plaintext\",\n    \"content\": \"Comment text\",\n    \"author\": {\n      \"type\": \"workspace-member\",\n      \"id\": \"{workspace_member_id}\"\n    },\n    \"record\": {\n      \"object\": \"companies\",\n      \"record_id\": \"{record_id}\"\n    }\n  }\n}\n```\n\n#### Reply to Comment Thread\n```bash\nPOST /attio/v2/comments\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"format\": \"plaintext\",\n    \"content\": \"This is a reply\",\n    \"author\": {\n      \"type\": \"workspace-member\",\n      \"id\": \"{workspace_member_id}\"\n    },\n    \"thread_id\": \"{thread_id}\"\n  }\n}\n```\n\n### Lists\n\n#### List All Lists\n```bash\nGET /attio/v2/lists\n```\n\n#### Get List\n```bash\nGET /attio/v2/lists/{list_id}\n```\n\n### List Entries\n\n#### Query List Entries\n```bash\nPOST /attio/v2/lists/{list}/entries/query\nContent-Type: application/json\n\n{\n  \"limit\": 50,\n  \"offset\": 0\n}\n```\n\n#### Create List Entry\n```bash\nPOST /attio/v2/lists/{list}/entries\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"parent_record_id\": \"{record_id}\",\n    \"parent_object\": \"companies\",\n    \"entry_values\": {}\n  }\n}\n```\n\n#### Get List Entry\n```bash\nGET /attio/v2/lists/{list}/entries/{entry_id}\n```\n\n#### Update List Entry\n```bash\nPATCH /attio/v2/lists/{list}/entries/{entry_id}\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"entry_values\": {\n      \"status\": \"Active\"\n    }\n  }\n}\n```\n\n#### Delete List Entry\n```bash\nDELETE /attio/v2/lists/{list}/entries/{entry_id}\n```\n\n### Meetings\n\n#### List Meetings\n```bash\nGET /attio/v2/meetings?limit=50\n```\n\n#### Get Meeting\n```bash\nGET /attio/v2/meetings/{meeting_id}\n```\n\n### Call Recordings\n\n#### List Call Recordings for Meeting\n```bash\nGET /attio/v2/meetings/{meeting_id}/call_recordings?limit=50\n```\n\n#### Get Call Recording\n```bash\nGET /attio/v2/meetings/{meeting_id}/call_recordings/{call_recording_id}\n```\n\n## Usage Notes\n\n- Object slugs are lowercase snake_case (e.g., `people`, `companies`)\n- Record IDs are UUIDs\n- For personal-name attributes, include `full_name` when creating records\n- Task creation requires `format`, `deadline_at`, `assignees`, and `linked_records` fields\n- Note creation requires `format`, `content`, `parent_object`, and `parent_record_id`\n- Comment creation requires `format`, `content`, `author`, plus one of `record`, `entry`, or `thread_id`\n- Meetings use cursor-based pagination\n- Rate limits: 100 read/sec, 25 write/sec\n- Pagination uses `limit` and `offset` parameters (or `cursor` for meetings)\n\n## Resources\n\n- [Attio API Overview](https://docs.attio.com/rest-api/overview)\n- [Attio API Reference](https://docs.attio.com/rest-api/endpoint-reference)\n- [Records API](https://docs.attio.com/rest-api/endpoint-reference/records)\n\nFile v1.0.54:references/basecamp.md\n\n# Basecamp Routing Reference\n\n**App name:** `basecamp`\n**Base URL proxied:** `3.basecampapi.com/{account_id}`\n\nNote: The gateway automatically injects the account ID from the OAuth connection.\n\n## API Path Pattern\n\n```\n/basecamp/{resource}.json\n```\n\nAll paths must end with `.json`.\n\n## Common Endpoints\n\n### Get Current User\n```bash\nGET /basecamp/my/profile.json\n```\n\n### List People\n```bash\nGET /basecamp/people.json\n```\n\n### List Projects\n```bash\nGET /basecamp/projects.json\n```\n\n### Get Project\n```bash\nGET /basecamp/projects/{project_id}.json\n```\n\nReturns project with `dock` array containing tool IDs.\n\n### Create Project\n```bash\nPOST /basecamp/projects.json\nContent-Type: application/json\n\n{\n  \"name\": \"Project Name\",\n  \"description\": \"Description\"\n}\n```\n\n### Get Todoset\n```bash\nGET /basecamp/buckets/{project_id}/todosets/{todoset_id}.json\n```\n\n### List Todolists\n```bash\nGET /basecamp/buckets/{project_id}/todosets/{todoset_id}/todolists.json\n```\n\n### List Todos\n```bash\nGET /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json\n```\n\n### Create Todo\n```bash\nPOST /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json\nContent-Type: application/json\n\n{\n  \"content\": \"Todo content\",\n  \"due_on\": \"2026-02-15\",\n  \"assignee_ids\": [123]\n}\n```\n\n### Complete Todo\n```bash\nPOST /basecamp/buckets/{project_id}/todos/{todo_id}/completion.json\n```\n\n### Get Message Board\n```bash\nGET /basecamp/buckets/{project_id}/message_boards/{message_board_id}.json\n```\n\n### List Messages\n```bash\nGET /basecamp/buckets/{project_id}/message_boards/{message_board_id}/messages.json\n```\n\n### Get Schedule\n```bash\nGET /basecamp/buckets/{project_id}/schedules/{schedule_id}.json\n```\n\n### List Schedule Entries\n```bash\nGET /basecamp/buckets/{project_id}/schedules/{schedule_id}/entries.json\n```\n\n### Get Vault (Documents)\n```bash\nGET /basecamp/buckets/{project_id}/vaults/{vault_id}.json\n```\n\n### List Documents\n```bash\nGET /basecamp/buckets/{project_id}/vaults/{vault_id}/documents.json\n```\n\n### List Campfires\n```bash\nGET /basecamp/chats.json\n```\n\n### Trash Recording\n```bash\nPUT /basecamp/buckets/{project_id}/recordings/{recording_id}/status/trashed.json\n```\n\n## Key Concepts\n\n- **Bucket**: Project content container (bucket_id = project_id)\n- **Dock**: Per-project tool list with `id`, `name`, `enabled`\n- **Recording**: Any content item (todos, messages, documents)\n\n## Pagination\n\nUses `Link` header with `rel=\"next\"`:\n```\nLink: <url>; rel=\"next\"\nX-Total-Count: 150\n```\n\n## Notes\n\n- All paths must end with `.json`\n- Gateway injects account ID automatically\n- Uses Basecamp 4 API (bc3-api)\n- Rate limit: ~50 requests per 10 seconds per IP\n- Check `enabled: true` in dock before using tools\n\n## Resources\n\n- [Basecamp 4 API Documentation](https://github.com/basecamp/bc3-api)\n- [API Endpoints](https://github.com/basecamp/bc3-api#endpoints)\n\nFile v1.0.54:references/beehiiv.md\n\n# beehiiv Routing Reference\n\n**App name:** `beehiiv`\n**Base URL proxied:** `api.beehiiv.com`\n\n## API Path Pattern\n\n```\n/beehiiv/v2/{resource}\n```\n\n## Common Endpoints\n\n### Publications\n\n#### List Publications\n```bash\nGET /beehiiv/v2/publications\n```\n\n#### Get Publication\n```bash\nGET /beehiiv/v2/publications/{publication_id}\n```\n\n### Subscriptions\n\n#### List Subscriptions\n```bash\nGET /beehiiv/v2/publications/{publication_id}/subscriptions\n```\n\n#### Get Subscription by ID\n```bash\nGET /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}\n```\n\n#### Get Subscription by Email\n```bash\nGET /beehiiv/v2/publications/{publication_id}/subscriptions/by_email/{email}\n```\n\n#### Create Subscription\n```bash\nPOST /beehiiv/v2/publications/{publication_id}/subscriptions\nContent-Type: application/json\n\n{\n  \"email\": \"subscriber@example.com\",\n  \"utm_source\": \"api\"\n}\n```\n\n#### Update Subscription\n```bash\nPATCH /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}\n```\n\n#### Delete Subscription\n```bash\nDELETE /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}\n```\n\n### Posts\n\n#### List Posts\n```bash\nGET /beehiiv/v2/publications/{publication_id}/posts\n```\n\n#### Get Post\n```bash\nGET /beehiiv/v2/publications/{publication_id}/posts/{post_id}\n```\n\n### Custom Fields\n\n#### List Custom Fields\n```bash\nGET /beehiiv/v2/publications/{publication_id}/custom_fields\n```\n\n#### Create Custom Field\n```bash\nPOST /beehiiv/v2/publications/{publication_id}/custom_fields\n```\n\n### Segments\n\n```bash\nGET /beehiiv/v2/publications/{publication_id}/segments\nGET /beehiiv/v2/publications/{publication_id}/segments/{segment_id}\n```\n\n### Tiers\n\n```bash\nGET /beehiiv/v2/publications/{publication_id}/tiers\nPOST /beehiiv/v2/publications/{publication_id}/tiers\nPATCH /beehiiv/v2/publications/{publication_id}/tiers/{tier_id}\n```\n\n### Automations\n\n```bash\nGET /beehiiv/v2/publications/{publication_id}/automations\nGET /beehiiv/v2/publications/{publication_id}/automations/{automation_id}\n```\n\n## Pagination\n\nCursor-based (recommended) or page-based (deprecated):\n\n```bash\n# Cursor-based\nGET /beehiiv/v2/publications/{pub_id}/subscriptions?limit=10&cursor={next_cursor}\n\n# Page-based (max 100 pages)\nGET /beehiiv/v2/publications?page=2&limit=10\n```\n\n## Notes\n\n- Publication IDs start with `pub_`\n- Subscription IDs start with `sub_`\n- Timestamps are Unix timestamps\n- Cursor-based pagination is recommended\n- Page-based pagination limited to 100 pages\n\n## Resources\n\n- [beehiiv Developer Documentation](https://developers.beehiiv.com/)\n- [beehiiv API Reference](https://developers.beehiiv.com/api-reference)\n\nFile v1.0.54:references/box.md\n\n# Box Routing Reference\n\n**App name:** `box`\n**Base URL proxied:** `api.box.com`\n\n## API Path Pattern\n\n```\n/box/2.0/{resource}\n```\n\n## Common Endpoints\n\n### Get Current User\n```bash\nGET /box/2.0/users/me\n```\n\n### Get User\n```bash\nGET /box/2.0/users/{user_id}\n```\n\n### Get Folder\n```bash\nGET /box/2.0/folders/{folder_id}\n```\n\nRoot folder ID is `0`.\n\n### List Folder Items\n```bash\nGET /box/2.0/folders/{folder_id}/items\nGET /box/2.0/folders/{folder_id}/items?limit=100&offset=0\n```\n\n### Create Folder\n```bash\nPOST /box/2.0/folders\nContent-Type: application/json\n\n{\n  \"name\": \"New Folder\",\n  \"parent\": {\"id\": \"0\"}\n}\n```\n\n### Update Folder\n```bash\nPUT /box/2.0/folders/{folder_id}\nContent-Type: application/json\n\n{\n  \"name\": \"Updated Name\",\n  \"description\": \"Description\"\n}\n```\n\n### Copy Folder\n```bash\nPOST /box/2.0/folders/{folder_id}/copy\nContent-Type: application/json\n\n{\n  \"name\": \"Copied Folder\",\n  \"parent\": {\"id\": \"0\"}\n}\n```\n\n### Delete Folder\n```bash\nDELETE /box/2.0/folders/{folder_id}\nDELETE /box/2.0/folders/{folder_id}?recursive=true\n```\n\n### Get File\n```bash\nGET /box/2.0/files/{file_id}\n```\n\n### Download File\n```bash\nGET /box/2.0/files/{file_id}/content\n```\n\n### Update File\n```bash\nPUT /box/2.0/files/{file_id}\n```\n\n### Copy File\n```bash\nPOST /box/2.0/files/{file_id}/copy\n```\n\n### Delete File\n```bash\nDELETE /box/2.0/files/{file_id}\n```\n\n### Create Shared Link\n```bash\nPUT /box/2.0/folders/{folder_id}\nContent-Type: application/json\n\n{\n  \"shared_link\": {\"access\": \"open\"}\n}\n```\n\n### List Collaborations\n```bash\nGET /box/2.0/folders/{folder_id}/collaborations\n```\n\n### Create Collaboration\n```bash\nPOST /box/2.0/collaborations\nContent-Type: application/json\n\n{\n  \"item\": {\"type\": \"folder\", \"id\": \"123\"},\n  \"accessible_by\": {\"type\": \"user\", \"login\": \"user@example.com\"},\n  \"role\": \"editor\"\n}\n```\n\n### Search\n```bash\nGET /box/2.0/search?query=keyword\n```\n\n### Events\n```bash\nGET /box/2.0/events\n```\n\n### Trash\n```bash\nGET /box/2.0/folders/trash/items\nDELETE /box/2.0/files/{file_id}/trash\nDELETE /box/2.0/folders/{folder_id}/trash\n```\n\n### Collections\n```bash\nGET /box/2.0/collections\nGET /box/2.0/collections/{collection_id}/items\n```\n\n### Recent Items\n```bash\nGET /box/2.0/recent_items\n```\n\n### Webhooks\n```bash\nGET /box/2.0/webhooks\nPOST /box/2.0/webhooks\nDELETE /box/2.0/webhooks/{webhook_id}\n```\n\n## Pagination\n\nOffset-based pagination:\n```bash\nGET /box/2.0/folders/0/items?limit=100&offset=0\n```\n\nResponse:\n```json\n{\n  \"total_count\": 250,\n  \"entries\": [...],\n  \"offset\": 0,\n  \"limit\": 100\n}\n```\n\n## Notes\n\n- Root folder ID is `0`\n- File uploads use `upload.box.com` (different base URL)\n- Delete operations return 204 No Content\n- Some operations require enterprise admin permissions\n- Use `fields` parameter to select specific fields\n\n## Resources\n\n- [Box API Reference](https://developer.box.com/reference)\n- [Box Developer Documentation](https://developer.box.com/guides)\n\nFile v1.0.54:references/brevo.md\n\n# Brevo Routing Reference\n\n**App name:** `brevo`\n**Base URL proxied:** `api.brevo.com`\n\n## API Path Pattern\n\n```\n/brevo/v3/{resource}\n```\n\n## Common Endpoints\n\n### Account\n\n```bash\nGET /brevo/v3/account\n```\n\n### Contacts\n\n#### List Contacts\n```bash\nGET /brevo/v3/contacts?limit=50&offset=0\n```\n\n#### Get Contact\n```bash\nGET /brevo/v3/contacts/{identifier}\n```\n\n#### Create Contact\n```bash\nPOST /brevo/v3/contacts\nContent-Type: application/json\n\n{\n  \"email\": \"contact@example.com\",\n  \"attributes\": {\"FIRSTNAME\": \"John\", \"LASTNAME\": \"Doe\"},\n  \"listIds\": [2]\n}\n```\n\n#### Update Contact\n```bash\nPUT /brevo/v3/contacts/{identifier}\nContent-Type: application/json\n\n{\n  \"attributes\": {\"FIRSTNAME\": \"Updated\"}\n}\n```\n\n#### Delete Contact\n```bash\nDELETE /brevo/v3/contacts/{identifier}\n```\n\n### Lists\n\n#### List All Lists\n```bash\nGET /brevo/v3/contacts/lists\n```\n\n#### Create List\n```bash\nPOST /brevo/v3/contacts/lists\nContent-Type: application/json\n\n{\n  \"name\": \"New List\",\n  \"folderId\": 1\n}\n```\n\n#### Add Contacts to List\n```bash\nPOST /brevo/v3/contacts/lists/{listId}/contacts/add\nContent-Type: application/json\n\n{\n  \"emails\": [\"contact@example.com\"]\n}\n```\n\n### Folders\n\n#### List Folders\n```bash\nGET /brevo/v3/contacts/folders\n```\n\n#### Create Folder\n```bash\nPOST /brevo/v3/contacts/folders\nContent-Type: application/json\n\n{\n  \"name\": \"New Folder\"\n}\n```\n\n### Transactional Emails\n\n#### Send Email\n```bash\nPOST /brevo/v3/smtp/email\nContent-Type: application/json\n\n{\n  \"sender\": {\"name\": \"John\", \"email\": \"john@example.com\"},\n  \"to\": [{\"email\": \"recipient@example.com\", \"name\": \"Jane\"}],\n  \"subject\": \"Hello!\",\n  \"htmlContent\": \"<html><body><h1>Hi!</h1></body></html>\"\n}\n```\n\n#### Get Email Statistics\n```bash\nGET /brevo/v3/smtp/statistics/events?limit=50\n```\n\n### Email Templates\n\n#### List Templates\n```bash\nGET /brevo/v3/smtp/templates\n```\n\n#### Create Template\n```bash\nPOST /brevo/v3/smtp/templates\nContent-Type: application/json\n\n{\n  \"sender\": {\"name\": \"Company\", \"email\": \"noreply@company.com\"},\n  \"templateName\": \"Welcome Email\",\n  \"subject\": \"Welcome {{params.name}}!\",\n  \"htmlContent\": \"<html><body><h1>Hello {{params.name}}!</h1></body></html>\"\n}\n```\n\n### Email Campaigns\n\n#### List Campaigns\n```bash\nGET /brevo/v3/emailCampaigns\n```\n\n#### Create Campaign\n```bash\nPOST /brevo/v3/emailCampaigns\nContent-Type: application/json\n\n{\n  \"name\": \"Newsletter\",\n  \"subject\": \"Monthly Update\",\n  \"sender\": {\"name\": \"Company\", \"email\": \"news@company.com\"},\n  \"htmlContent\": \"<html><body><h1>News</h1></body></html>\",\n  \"recipients\": {\"listIds\": [2]}\n}\n```\n\n#### Send Campaign\n```bash\nPOST /brevo/v3/emailCampaigns/{campaignId}/sendNow\n```\n\n### Senders\n\n#### List Senders\n```bash\nGET /brevo/v3/senders\n```\n\n#### Create Sender\n```bash\nPOST /brevo/v3/senders\nContent-Type: application/json\n\n{\n  \"name\": \"Marketing\",\n  \"email\": \"marketing@company.com\"\n}\n```\n\n### Attributes\n\n#### List Attributes\n```bash\nGET /brevo/v3/contacts/attributes\n```\n\n## Pagination\n\nBrevo uses offset-based pagination:\n\n```bash\nGET /brevo/v3/contacts?limit=50&offset=0\n```\n\n**Parameters:**\n- `limit` - Results per page (max varies by endpoint, typically 500)\n- `offset` - Starting index (0-based)\n\nResponse includes count:\n```json\n{\n  \"contacts\": [...],\n  \"count\": 150\n}\n```\n\n## Notes\n\n- All endpoints require `/v3/` prefix\n- Attribute names must be UPPERCASE\n- Contact identifiers: email, phone, or ID\n- Template parameters: `{{params.name}}` syntax\n- PUT/DELETE return 204 No Content on success\n- Rate limit: 300 calls/min (free), higher on paid plans\n\n## Resources\n\n- [Brevo API Overview](https://developers.brevo.com/)\n- [API Key Concepts](https://developers.brevo.com/docs/how-it-works)\n- [Manage Contacts](https://developers.brevo.com/docs/synchronise-contact-lists)\n- [Send Transactional Email](https://developers.brevo.com/docs/send-a-transactional-email)\n\nArchive v1.0.53: 123 files, 166506 bytes\n\nFiles: 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)\n\nFile v1.0.53:SKILL.md\n\n---\nname: api-gateway\ndescription: |\n  Connect to 100+ APIs (Google Workspace, Microsoft 365, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth.\n  Use this skill when users want to interact with external services.\n  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).\ncompatibility: Requires network access and valid Maton API key\nmetadata:\n  author: maton\n  version: \"1.0\"\n  clawdbot:\n    emoji: 🧠\n    homepage: \"https://maton.ai\"\n    requires:\n      env:\n        - MATON_API_KEY\n---\n\n# API Gateway\n\nPassthrough 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.\n\n## Quick Start\n\n```bash\n# Native Slack API call\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()\nreq = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n\n## Base URL\n\n```\nhttps://gateway.maton.ai/{app}/{native-api-path}\n```\n\nReplace `{app}` with the service name and `{native-api-path}` with the actual API endpoint path.\n\nIMPORTANT: 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`.\n\n## Authentication\n\nAll requests require the Maton API key in the Authorization header:\n\n```\nAuthorization: Bearer $MATON_API_KEY\n```\n\nThe API gateway automatically injects the appropriate OAuth token for the target service.\n\n**Environment Variable:** You can set your API key as the `MATON_API_KEY` environment variable:\n\n```bash\nexport MATON_API_KEY=\"YOUR_API_KEY\"\n```\n\n## Getting Your API Key\n\n1. Sign in or create an account at [maton.ai](https://maton.ai)\n2. Go to [maton.ai/settings](https://maton.ai/settings)\n3. Click the copy button on the right side of API Key section to copy it\n\n## Connection Management\n\nConnection management uses a separate base URL: `https://ctrl.maton.ai`\n\n### List Connections\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n**Query Parameters (optional):**\n- `app` - Filter by service name (e.g., `slack`, `hubspot`, `salesforce`)\n- `status` - Filter by connection status (`ACTIVE`, `PENDING`, `FAILED`)\n\n**Response:**\n```json\n{\n  \"connections\": [\n    {\n      \"connection_id\": \"21fd90f9-5935-43cd-b6c8-bde9d915ca80\",\n      \"status\": \"ACTIVE\",\n      \"creation_time\": \"2025-12-08T07:20:53.488460Z\",\n      \"last_updated_time\": \"2026-01-31T20:03:32.593153Z\",\n      \"url\": \"https://connect.maton.ai/?session_token=5e9...\",\n      \"app\": \"slack\",\n      \"metadata\": {}\n    }\n  ]\n}\n```\n\n### Create Connection\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'app': 'slack'}).encode()\nreq = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Get Connection\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n**Response:**\n```json\n{\n  \"connection\": {\n    \"connection_id\": \"21fd90f9-5935-43cd-b6c8-bde9d915ca80\",\n    \"status\": \"ACTIVE\",\n    \"creation_time\": \"2025-12-08T07:20:53.488460Z\",\n    \"last_updated_time\": \"2026-01-31T20:03:32.593153Z\",\n    \"url\": \"https://connect.maton.ai/?session_token=5e9...\",\n    \"app\": \"slack\",\n    \"metadata\": {}\n  }\n}\n```\n\nOpen the returned URL in a browser to complete OAuth.\n\n### Delete Connection\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Specifying Connection\n\nIf 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:\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()\nreq = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nreq.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\nIf omitted, the gateway uses the default (oldest) active connection for that app.\n\n## Supported Services\n\n| Service | App Name | Base URL Proxied |\n|---------|----------|------------------|\n| ActiveCampaign | `active-campaign` | `{account}.api-us1.com` |\n| Acuity Scheduling | `acuity-scheduling` | `acuityscheduling.com` |\n| Airtable | `airtable` | `api.airtable.com` |\n| Apollo | `apollo` | `api.apollo.io` |\n| Asana | `asana` | `app.asana.com` |\n| Attio | `attio` | `api.attio.com` |\n| Basecamp | `basecamp` | `3.basecampapi.com` |\n| beehiiv | `beehiiv` | `api.beehiiv.com` |\n| Box | `box` | `api.box.com` |\n| Brevo | `brevo` | `api.brevo.com` |\n| Calendly | `calendly` | `api.calendly.com` |\n| Cal.com | `cal-com` | `api.cal.com` |\n| CallRail | `callrail` | `api.callrail.com` |\n| Chargebee | `chargebee` | `{subdomain}.chargebee.com` |\n| ClickFunnels | `clickfunnels` | `{subdomain}.myclickfunnels.com` |\n| ClickSend | `clicksend` | `rest.clicksend.com` |\n| ClickUp | `clickup` | `api.clickup.com` |\n| Clockify | `clockify` | `api.clockify.me` |\n| Coda | `coda` | `coda.io` |\n| Confluence | `confluence` | `api.atlassian.com` |\n| CompanyCam | `companycam` | `api.companycam.com` |\n| Cognito Forms | `cognito-forms` | `www.cognitoforms.com` |\n| Constant Contact | `constant-contact` | `api.cc.email` |\n| Dropbox | `dropbox` | `api.dropboxapi.com` |\n| Dropbox Business | `dropbox-business` | `api.dropboxapi.com` |\n| ElevenLabs | `elevenlabs` | `api.elevenlabs.io` |\n| Eventbrite | `eventbrite` | `www.eventbriteapi.com` |\n| Fathom | `fathom` | `api.fathom.ai` |\n| Firebase | `firebase` | `firebase.googleapis.com` |\n| Fireflies | `fireflies` | `api.fireflies.ai` |\n| GetResponse | `getresponse` | `api.getresponse.com` |\n| GitHub | `github` | `api.github.com` |\n| Gumroad | `gumroad` | `api.gumroad.com` |\n| Granola | `granola` | `mcp.granola.ai` (MCP) |\n| Google Ads | `google-ads` | `googleads.googleapis.com` |\n| Google BigQuery | `google-bigquery` | `bigquery.googleapis.com` |\n| Google Analytics Admin | `google-analytics-admin` | `analyticsadmin.googleapis.com` |\n| Google Analytics Data | `google-analytics-data` | `analyticsdata.googleapis.com` |\n| Google Calendar | `google-calendar` | `www.googleapis.com` |\n| Google Classroom | `google-classroom` | `classroom.googleapis.com` |\n| Google Contacts | `google-contacts` | `people.googleapis.com` |\n| Google Docs | `google-docs` | `docs.googleapis.com` |\n| Google Drive | `google-drive` | `www.googleapis.com` |\n| Google Forms | `google-forms` | `forms.googleapis.com` |\n| Gmail | `google-mail` | `gmail.googleapis.com` |\n| Google Merchant | `google-merchant` | `merchantapi.googleapis.com` |\n| Google Meet | `google-meet` | `meet.googleapis.com` |\n| Google Play | `google-play` | `androidpublisher.googleapis.com` |\n| Google Search Console | `google-search-console` | `www.googleapis.com` |\n| Google Sheets | `google-sheets` | `sheets.googleapis.com` |\n| Google Slides | `google-slides` | `slides.googleapis.com` |\n| Google Tasks | `google-tasks` | `tasks.googleapis.com` |\n| Google Workspace Admin | `google-workspace-admin` | `admin.googleapis.com` |\n| HubSpot | `hubspot` | `api.hubapi.com` |\n| Instantly | `instantly` | `api.instantly.ai` |\n| Jira | `jira` | `api.atlassian.com` |\n| Jobber | `jobber` | `api.getjobber.com` |\n| JotForm | `jotform` | `api.jotform.com` |\n| Keap | `keap` | `api.infusionsoft.com` |\n| Kit | `kit` | `api.kit.com` |\n| Klaviyo | `klaviyo` | `a.klaviyo.com` |\n| Lemlist | `lemlist` | `api.lemlist.com` |\n| Linear | `linear` | `api.linear.app` |\n| LinkedIn | `linkedin` | `api.linkedin.com` |\n| Mailchimp | `mailchimp` | `{dc}.api.mailchimp.com` |\n| MailerLite | `mailerlite` | `connect.mailerlite.com` |\n| Mailgun | `mailgun` | `api.mailgun.net` |\n| ManyChat | `manychat` | `api.manychat.com` |\n| Manus | `manus` | `api.manus.ai` |\n| Microsoft Excel | `microsoft-excel` | `graph.microsoft.com` |\n| Microsoft Teams | `microsoft-teams` | `graph.microsoft.com` |\n| Microsoft To Do | `microsoft-to-do` | `graph.microsoft.com` |\n| Monday.com | `monday` | `api.monday.com` |\n| Motion | `motion` | `api.usemotion.com` |\n| Netlify | `netlify` | `api.netlify.com` |\n| Notion | `notion` | `api.notion.com` |\n| OneDrive | `one-drive` | `graph.microsoft.com` |\n| Outlook | `outlook` | `graph.microsoft.com` |\n| PDF.co | `pdf-co` | `api.pdf.co` |\n| Pipedrive | `pipedrive` | `api.pipedrive.com` |\n| Podio | `podio` | `api.podio.com` |\n| PostHog | `posthog` | `{subdomain}.posthog.com` |\n| QuickBooks | `quickbooks` | `quickbooks.api.intuit.com` |\n| Quo | `quo` | `api.openphone.com` |\n| Reducto | `reducto` | `platform.reducto.ai` |\n| Salesforce | `salesforce` | `{instance}.salesforce.com` |\n| Sentry | `sentry` | `{subdomain}.sentry.io` |\n| SignNow | `signnow` | `api.signnow.com` |\n| Slack | `slack` | `slack.com` |\n| Snapchat | `snapchat` | `adsapi.snapchat.com` |\n| Square | `squareup` | `connect.squareup.com` |\n| Squarespace | `squarespace` | `api.squarespace.com` |\n| Stripe | `stripe` | `api.stripe.com` |\n| Systeme.io | `systeme` | `api.systeme.io` |\n| Tally | `tally` | `api.tally.so` |\n| Telegram | `telegram` | `api.telegram.org` |\n| TickTick | `ticktick` | `api.ticktick.com` |\n| Todoist | `todoist` | `api.todoist.com` |\n| Toggl Track | `toggl-track` | `api.track.toggl.com` |\n| Trello | `trello` | `api.trello.com` |\n| Twilio | `twilio` | `api.twilio.com` |\n| Typeform | `typeform` | `api.typeform.com` |\n| Vimeo | `vimeo` | `api.vimeo.com` |\n| WhatsApp Business | `whatsapp-business` | `graph.facebook.com` |\n| WooCommerce | `woocommerce` | `{store-url}/wp-json/wc/v3` |\n| WordPress.com | `wordpress` | `public-api.wordpress.com` |\n| Xero | `xero` | `api.xero.com` |\n| YouTube | `youtube` | `www.googleapis.com` |\n| Zoho Bigin | `zoho-bigin` | `www.zohoapis.com` |\n| Zoho Bookings | `zoho-bookings` | `www.zohoapis.com` |\n| Zoho Books | `zoho-books` | `www.zohoapis.com` |\n| Zoho Calendar | `zoho-calendar` | `calendar.zoho.com` |\n| Zoho CRM | `zoho-crm` | `www.zohoapis.com` |\n| Zoho Inventory | `zoho-inventory` | `www.zohoapis.com` |\n| Zoho Mail | `zoho-mail` | `mail.zoho.com` |\n| Zoho People | `zoho-people` | `people.zoho.com` |\n| Zoho Projects | `zoho-projects` | `projectsapi.zoho.com` |\n| Zoho Recruit | `zoho-recruit` | `recruit.zoho.com` |\n\nSee [references/](references/) for detailed routing guides per provider:\n- [ActiveCampaign](references/active-campaign.md) - Contacts, deals, tags, lists, automations, campaigns\n- [Acuity Scheduling](references/acuity-scheduling.md) - Appointments, calendars, clients, availability\n- [Airtable](references/airtable.md) - Records, bases, tables\n- [Apollo](references/apollo.md) - People search, enrichment, contacts\n- [Asana](references/asana.md) - Tasks, projects, workspaces, webhooks\n- [Attio](references/attio.md) - People, companies, records, tasks\n- [Basecamp](references/basecamp.md) - Projects, to-dos, messages, schedules, documents\n- [beehiiv](references/beehiiv.md) - Publications, subscriptions, posts, custom fields\n- [Box](references/box.md) - Files, folders, collaborations, shared links\n- [Brevo](references/brevo.md) - Contacts, email campaigns, transactional emails, templates\n- [Calendly](references/calendly.md) - Event types, scheduled events, availability, webhooks\n- [Cal.com](references/cal-com.md) - Event types, bookings, schedules, availability slots, webhooks\n- [CallRail](references/callrail.md) - Calls, trackers, companies, tags, analytics\n- [Chargebee](references/chargebee.md) - Subscriptions, customers, invoices\n- [ClickFunnels](references/clickfunnels.md) - Contacts, products, orders, courses, webhooks\n- [ClickSend](references/clicksend.md) - SMS, MMS, voice messages, contacts, lists\n- [ClickUp](references/clickup.md) - Tasks, lists, folders, spaces, webhooks\n- [Clockify](references/clockify.md) - Time tracking, projects, clients, tasks, workspaces\n- [Coda](references/coda.md) - Docs, pages, tables, rows, formulas, controls\n- [Confluence](references/confluence.md) - Pages, spaces, blogposts, comments, attachments\n- [CompanyCam](references/companycam.md) - Projects, photos, users, tags, groups, documents\n- [Cognito Forms](references/cognito-forms.md) - Forms, entries, documents, files\n- [Constant Contact](references/constant-contact.md) - Contacts, email campaigns, lists, segments\n- [Dropbox](references/dropbox.md) - Files, folders, search, metadata, revisions, tags\n- [Dropbox Business](references/dropbox-business.md) - Team members, groups, team folders, devices, audit logs\n- [ElevenLabs](references/elevenlabs.md) - Text-to-speech, voice cloning, sound effects, audio processing\n- [Eventbrite](references/eventbrite.md) - Events, venues, tickets, orders, attendees\n- [Fathom](references/fathom.md) - Meeting recordings, transcripts, summaries, webhooks\n- [Firebase](references/firebase.md) - Projects, web apps, Android apps, iOS apps, configurations\n- [Fireflies](references/fireflies.md) - Meeting transcripts, summaries, AskFred AI, channels\n- [GetResponse](references/getresponse.md) - Campaigns, contacts, newsletters, autoresponders, tags, segments\n- [GitHub](references/github.md) - Repositories, issues, pull requests, commits\n- [Gumroad](references/gumroad.md) - Products, sales, subscribers, licenses, webhooks\n- [Granola](references/granola.md) - Meeting notes, transcripts, queries (MCP)\n- [Google Ads](references/google-ads.md) - Campaigns, ad groups, GAQL queries\n- [Google Analytics Admin](references/google-analytics-admin.md) - Reports, dimensions, metrics\n- [Google Analytics Data](references/google-analytics-data.md) - Reports, dimensions, metrics\n- [Google BigQuery](references/google-bigquery.md) - Datasets, tables, jobs, SQL queries\n- [Google Calendar](references/google-calendar.md) - Events, calendars, free/busy\n- [Google Classroom](references/google-classroom.md) - Courses, coursework, students, teachers, announcements\n- [Google Contacts](references/google-contacts.md) - Contacts, contact groups, people search\n- [Google Docs](references/google-docs.md) - Document creation, batch updates\n- [Google Drive](references/google-drive.md) - Files, folders, permissions\n- [Google Forms](references/google-forms.md) - Forms, questions, responses\n- [Gmail](references/google-mail.md) - Messages, threads, labels\n- [Google Meet](references/google-meet.md) - Spaces, conference records, participants\n- [Google Merchant](references/google-merchant.md) - Products, inventories, promotions, reports\n- [Google Play](references/google-play.md) - In-app products, subscriptions, reviews\n- [Google Search Console](references/google-search-console.md) - Search analytics, sitemaps\n- [Google Sheets](references/google-sheets.md) - Values, ranges, formatting\n- [Google Slides](references/google-slides.md) - Presentations, slides, formatting\n- [Google Tasks](references/google-tasks.md) - Task lists, tasks, subtasks\n- [Google Workspace Admin](references/google-workspace-admin.md) - Users, groups, org units, domains, roles\n- [HubSpot](references/hubspot.md) - Contacts, companies, deals\n- [Instantly](references/instantly.md) - Campaigns, leads, accounts, email outreach\n- [Jira](references/jira.md) - Issues, projects, JQL queries\n- [Jobber](references/jobber.md) - Clients, jobs, invoices, quotes (GraphQL)\n- [JotForm](references/jotform.md) - Forms, submissions, webhooks\n- [Keap](references/keap.md) - Contacts, companies, tags, tasks, opportunities, campaigns\n- [Kit](references/kit.md) - Subscribers, tags, forms, sequences, broadcasts\n- [Klaviyo](references/klaviyo.md) - Profiles, lists, campaigns, flows, events\n- [Lemlist](references/lemlist.md) - Campaigns, leads, activities, schedules, unsubscribes\n- [Linear](references/linear.md) - Issues, projects, teams, cycles (GraphQL)\n- [LinkedIn](references/linkedin.md) - Profile, posts, shares, media uploads\n- [Mailchimp](references/mailchimp.md) - Audiences, campaigns, templates, automations\n- [MailerLite](references/mailerlite.md) - Subscribers, groups, campaigns, automations, forms\n- [Mailgun](references/mailgun.md) - Email sending, domains, routes, templates, mailing lists, suppressions\n- [ManyChat](references/manychat.md) - Subscribers, tags, flows, messaging\n- [Manus](references/manus.md) - AI agent tasks, projects, files, webhooks\n- [Microsoft Excel](references/microsoft-excel.md) - Workbooks, worksheets, ranges, tables, charts\n- [Microsoft Teams](references/microsoft-teams.md) - Teams, channels, messages, members, chats\n- [Microsoft To Do](references/microsoft-to-do.md) - Task lists, tasks, checklist items, linked resources\n- [Monday.com](references/monday.md) - Boards, items, columns, groups (GraphQL)\n- [Motion](references/motion.md) - Tasks, projects, workspaces, schedules\n- [Netlify](references/netlify.md) - Sites, deploys, builds, DNS, environment variables\n- [Notion](references/notion.md) - Pages, databases, blocks\n- [OneDrive](references/one-drive.md) - Files, folders, drives, sharing\n- [Outlook](references/outlook.md) - Mail, calendar, contacts\n- [PDF.co](references/pdf-co.md) - PDF conversion, merge, split, edit, text extraction, barcodes\n- [Pipedrive](references/pipedrive.md) - Deals, persons, organizations, activities\n- [Podio](references/podio.md) - Organizations, workspaces, apps, items, tasks, comments\n- [PostHog](references/posthog.md) - Product analytics, feature flags, session recordings, experiments, HogQL queries\n- [QuickBooks](references/quickbooks.md) - Customers, invoices, reports\n- [Quo](references/quo.md) - Calls, messages, contacts, conversations, webhooks\n- [Reducto](references/reducto.md) - Document parsing, extraction, splitting, editing\n- [Salesforce](references/salesforce.md) - SOQL, sObjects, CRUD\n- [SignNow](references/signnow.md) - Documents, templates, invites, e-signatures\n- [SendGrid](references/sendgrid.md) - Email sending, contacts, templates, suppressions, statistics\n- [Sentry](references/sentry.md) - Issues, events, projects, teams, releases\n- [Slack](references/slack.md) - Messages, channels, users\n- [Snapchat](references/snapchat.md) - Ad accounts, campaigns, ad squads, ads, creatives, audiences\n- [Square](references/squareup.md) - Payments, customers, orders, catalog, inventory, invoices\n- [Squarespace](references/squarespace.md) - Products, inventory, orders, profiles, transactions\n- [Stripe](references/stripe.md) - Customers, subscriptions, payments\n- [Systeme.io](references/systeme.md) - Contacts, tags, courses, communities, webhooks\n- [Tally](references/tally.md) - Forms, submissions, workspaces, webhooks\n- [Telegram](references/telegram.md) - Messages, chats, bots, updates, polls\n- [TickTick](references/ticktick.md) - Tasks, projects, task lists\n- [Todoist](references/todoist.md) - Tasks, projects, sections, labels, comments\n- [Toggl Track](references/toggl-track.md) - Time entries, projects, clients, tags, workspaces\n- [Trello](references/trello.md) - Boards, lists, cards, checklists\n- [Twilio](references/twilio.md) - SMS, voice calls, phone numbers, messaging\n- [Typeform](references/typeform.md) - Forms, responses, insights\n- [Vimeo](references/vimeo.md) - Videos, folders, albums, comments, likes\n- [WhatsApp Business](references/whatsapp-business.md) - Messages, templates, media\n- [WooCommerce](references/woocommerce.md) - Products, orders, customers, coupons\n- [WordPress.com](references/wordpress.md) - Posts, pages, sites, users, settings\n- [Xero](references/xero.md) - Contacts, invoices, reports\n- [YouTube](references/youtube.md) - Videos, playlists, channels, subscriptions\n- [Zoho Bigin](references/zoho-bigin.md) - Contacts, companies, pipelines, products\n- [Zoho Bookings](references/zoho-bookings.md) - Appointments, services, staff, workspaces\n- [Zoho Books](references/zoho-books.md) - Invoices, contacts, bills, expenses\n- [Zoho Calendar](references/zoho-calendar.md) - Calendars, events, attendees, reminders\n- [Zoho CRM](references/zoho-crm.md) - Leads, contacts, accounts, deals, search\n- [Zoho Inventory](references/zoho-inventory.md) - Items, sales orders, invoices, purchase orders, bills\n- [Zoho Mail](references/zoho-mail.md) - Messages, folders, labels, attachments\n- [Zoho People](references/zoho-people.md) - Employees, departments, designations, attendance, leave\n- [Zoho Projects](references/zoho-projects.md) - Projects, tasks, milestones, tasklists, comments\n- [Zoho Recruit](references/zoho-recruit.md) - Candidates, job openings, interviews, applications\n\n## Examples\n\n### Slack - Post Message (Native API)\n\n```bash\n# Native Slack API: POST https://slack.com/api/chat.postMessage\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()\nreq = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json; charset=utf-8')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### HubSpot - Create Contact (Native API)\n\n```bash\n# Native HubSpot API: POST https://api.hubapi.com/crm/v3/objects/contacts\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'properties': {'email': 'john@example.com', 'firstname': 'John', 'lastname': 'Doe'}}).encode()\nreq = urllib.request.Request('https://gateway.maton.ai/hubspot/crm/v3/objects/contacts', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Google Sheets - Get Spreadsheet Values (Native API)\n\n```bash\n# Native Sheets API: GET https://sheets.googleapis.com/v4/spreadsheets/{id}/values/{range}\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://gateway.maton.ai/google-sheets/v4/spreadsheets/122BS1sFN2RKL8AOUQjkLdubzOwgqzPT64KfZ2rvYI4M/values/Sheet1!A1:B2')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Salesforce - SOQL Query (Native API)\n\n```bash\n# Native Salesforce API: GET https://{instance}.salesforce.com/services/data/v64.0/query?q=...\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://gateway.maton.ai/salesforce/services/data/v64.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Airtable - List Tables (Native API)\n\n```bash\n# Native Airtable API: GET https://api.airtable.com/v0/meta/bases/{id}/tables\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://gateway.maton.ai/airtable/v0/meta/bases/appgqan2NzWGP5sBK/tables')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Notion - Query Database (Native API)\n\n```bash\n# Native Notion API: POST https://api.notion.com/v1/data_sources/{id}/query\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({}).encode()\nreq = urllib.request.Request('https://gateway.maton.ai/notion/v1/data_sources/23702dc5-9a3b-8001-9e1c-000b5af0a980/query', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nreq.add_header('Notion-Version', '2025-09-03')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Stripe - List Customers (Native API)\n\n```bash\n# Native Stripe API: GET https://api.stripe.com/v1/customers\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://gateway.maton.ai/stripe/v1/customers?limit=10')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n## Code Examples\n\n### JavaScript (Node.js)\n\n```javascript\nconst response = await fetch('https://gateway.maton.ai/slack/api/chat.postMessage', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application/json',\n    'Authorization': `Bearer ${process.env.MATON_API_KEY}`\n  },\n  body: JSON.stringify({ channel: 'C0123456', text: 'Hello!' })\n});\n```\n\n### Python\n\n```python\nimport os\nimport requests\n\nresponse = requests.post(\n    'https://gateway.maton.ai/slack/api/chat.postMessage',\n    headers={'Authorization': f'Bearer {os.environ[\"MATON_API_KEY\"]}'},\n    json={'channel': 'C0123456', 'text': 'Hello!'}\n)\n```\n\n## Error Handling\n\n| Status | Meaning |\n|--------|---------|\n| 400 | Missing connection for the requested app |\n| 401 | Invalid or missing Maton API key |\n| 429 | Rate limited (10 requests/second per account) |\n| 500 | Internal Server Error |\n| 4xx/5xx | Passthrough error from the target API |\n\nErrors from the target API are passed through with their original status codes and response bodies.\n\n### Troubleshooting: API Key Issues\n\n1. Check that the `MATON_API_KEY` environment variable is set:\n\n```bash\necho $MATON_API_KEY\n```\n\n2. Verify the API key is valid by listing connections:\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Troubleshooting: Invalid App Name\n\n1. Verify your URL path starts with the correct app name. The path must begin with `/google-mail/`. For example:\n\n- Correct: `https://gateway.maton.ai/google-mail/gmail/v1/users/me/messages`\n- Incorrect: `https://gateway.maton.ai/gmail/v1/users/me/messages`\n\n2. Ensure you have an active connection for the app. List your connections to verify:\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-mail&status=ACTIVE')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n### Troubleshooting: Server Error\n\nA 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.\n\n## Rate Limits\n\n- 10 requests per second per account\n- Target API rate limits also apply\n\n## Notes\n\n- When using curl with URLs containing brackets (`fields[]`, `sort[]`, `records[]`), use the `-g` flag to disable glob parsing\n- When piping curl output to `jq`, environment variables may not expand correctly in some shells, which can cause \"Invalid API key\" errors\n\n## Tips\n\n1. **Use native API docs**: Refer to each service's official API documentation for endpoint paths and parameters.\n\n2. **Headers are forwarded**: Custom headers (except `Host` and `Authorization`) are forwarded to the target API.\n\n3. **Query params work**: URL query parameters are passed through to the target API.\n\n4. **All HTTP methods supported**: GET, POST, PUT, PATCH, DELETE are all supported.\n\n5. **QuickBooks special case**: Use `:realmId` in the path and it will be replaced with the connected realm ID.\n\n## Optional\n\n- [Github](https://github.com/maton-ai/api-gateway-skill)\n- [API Reference](https://www.maton.ai/docs/api-reference)\n- [Maton Community](https://discord.com/invite/dBfFAcefs2)\n- [Maton Support](mailto:support@maton.ai)\n\nFile v1.0.53:_meta.json\n\n{\n  \"ownerId\": \"kn75240wq8bnv2qm2xgry748jd80b9r0\",\n  \"slug\": \"api-gateway\",\n  \"version\": \"1.0.53\",\n  \"publishedAt\": 1772244203039\n}\n\nFile v1.0.53:references/active-campaign.md\n\n# ActiveCampaign Routing Reference\n\n**App name:** `active-campaign`\n**Base URL proxied:** `{account}.api-us1.com`\n\n## API Path Pattern\n\n```\n/active-campaign/api/3/{resource}\n```\n\n## Common Endpoints\n\n### Contacts\n\n#### List Contacts\n```bash\nGET /active-campaign/api/3/contacts\n```\n\n#### Get Contact\n```bash\nGET /active-campaign/api/3/contacts/{contactId}\n```\n\n#### Create Contact\n```bash\nPOST /active-campaign/api/3/contacts\nContent-Type: application/json\n\n{\n  \"contact\": {\n    \"email\": \"user@example.com\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\"\n  }\n}\n```\n\n#### Update Contact\n```bash\nPUT /active-campaign/api/3/contacts/{contactId}\n```\n\n#### Delete Contact\n```bash\nDELETE /active-campaign/api/3/contacts/{contactId}\n```\n\n### Tags\n\n#### List Tags\n```bash\nGET /active-campaign/api/3/tags\n```\n\n#### Create Tag\n```bash\nPOST /active-campaign/api/3/tags\nContent-Type: application/json\n\n{\n  \"tag\": {\n    \"tag\": \"Tag Name\",\n    \"tagType\": \"contact\"\n  }\n}\n```\n\n### Contact Tags\n\n#### Add Tag to Contact\n```bash\nPOST /active-campaign/api/3/contactTags\nContent-Type: application/json\n\n{\n  \"contactTag\": {\n    \"contact\": \"1\",\n    \"tag\": \"1\"\n  }\n}\n```\n\n#### Remove Tag from Contact\n```bash\nDELETE /active-campaign/api/3/contactTags/{contactTagId}\n```\n\n### Lists\n\n#### List All Lists\n```bash\nGET /active-campaign/api/3/lists\n```\n\n#### Create List\n```bash\nPOST /active-campaign/api/3/lists\n```\n\n### Deals\n\n#### List Deals\n```bash\nGET /active-campaign/api/3/deals\n```\n\n#### Create Deal\n```bash\nPOST /active-campaign/api/3/deals\nContent-Type: application/json\n\n{\n  \"deal\": {\n    \"title\": \"New Deal\",\n    \"value\": \"10000\",\n    \"currency\": \"usd\",\n    \"contact\": \"1\",\n    \"stage\": \"1\"\n  }\n}\n```\n\n### Deal Stages & Pipelines\n\n#### List Deal Stages\n```bash\nGET /active-campaign/api/3/dealStages\n```\n\n#### List Pipelines (Deal Groups)\n```bash\nGET /active-campaign/api/3/dealGroups\n```\n\n### Automations\n\n#### List Automations\n```bash\nGET /active-campaign/api/3/automations\n```\n\n### Campaigns\n\n#### List Campaigns\n```bash\nGET /active-campaign/api/3/campaigns\n```\n\n### Users\n\n#### List Users\n```bash\nGET /active-campaign/api/3/users\n```\n\n### Accounts\n\n#### List Accounts\n```bash\nGET /active-campaign/api/3/accounts\n```\n\n### Custom Fields\n\n#### List Fields\n```bash\nGET /active-campaign/api/3/fields\n```\n\n### Notes\n\n#### List Notes\n```bash\nGET /active-campaign/api/3/notes\n```\n\n### Webhooks\n\n#### List Webhooks\n```bash\nGET /active-campaign/api/3/webhooks\n```\n\n## Pagination\n\nUses offset-based pagination:\n\n```bash\nGET /active-campaign/api/3/contacts?limit=20&offset=0\n```\n\n**Parameters:**\n- `limit` - Results per page (default: 20)\n- `offset` - Starting index\n\nResponse includes meta with total:\n```json\n{\n  \"contacts\": [...],\n  \"meta\": {\n    \"total\": \"150\"\n  }\n}\n```\n\n## Notes\n\n- All endpoints require `/api/3/` prefix\n- Request bodies use singular resource names (e.g., `{\"contact\": {...}}`)\n- IDs returned as strings\n- Rate limit: 5 requests per second per account\n- DELETE returns 200 OK (not 204)\n\n## Resources\n\n- [ActiveCampaign API Overview](https://developers.activecampaign.com/reference/overview)\n- [Developer Portal](https://developers.activecampaign.com/)\n- [Contacts API](https://developers.activecampaign.com/reference/list-all-contacts)\n\nFile v1.0.53:references/acuity-scheduling.md\n\n# Acuity Scheduling Routing Reference\n\n**App name:** `acuity-scheduling`\n**Base URL proxied:** `acuityscheduling.com`\n\n## API Path Pattern\n\n```\n/acuity-scheduling/api/v1/{resource}\n```\n\nThe gateway automatically prepends `/api/v1` when proxying to Acuity.\n\n## Common Endpoints\n\n### Get Account Info\n```bash\nGET /acuity-scheduling/api/v1/me\n```\n\n### List Appointments\n```bash\nGET /acuity-scheduling/api/v1/appointments?max=100&minDate=2026-02-01\n```\n\n### Get Appointment\n```bash\nGET /acuity-scheduling/api/v1/appointments/{id}\n```\n\n### Create Appointment\n```bash\nPOST /acuity-scheduling/api/v1/appointments\nContent-Type: application/json\n\n{\n  \"datetime\": \"2026-02-15T09:00\",\n  \"appointmentTypeID\": 123,\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"john@example.com\"\n}\n```\n\n### Update Appointment\n```bash\nPUT /acuity-scheduling/api/v1/appointments/{id}\nContent-Type: application/json\n\n{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Smith\"\n}\n```\n\n### Cancel Appointment\n```bash\nPUT /acuity-scheduling/api/v1/appointments/{id}/cancel\n```\n\n### Reschedule Appointment\n```bash\nPUT /acuity-scheduling/api/v1/appointments/{id}/reschedule\nContent-Type: application/json\n\n{\n  \"datetime\": \"2026-02-20T10:00\"\n}\n```\n\n### List Calendars\n```bash\nGET /acuity-scheduling/api/v1/calendars\n```\n\n### List Appointment Types\n```bash\nGET /acuity-scheduling/api/v1/appointment-types\n```\n\n### Get Available Dates\n```bash\nGET /acuity-scheduling/api/v1/availability/dates?month=2026-02&appointmentTypeID=123\n```\n\n### Get Available Times\n```bash\nGET /acuity-scheduling/api/v1/availability/times?date=2026-02-04&appointmentTypeID=123\n```\n\n### List Clients\n```bash\nGET /acuity-scheduling/api/v1/clients?search=John\n```\n\n### Create Client\n```bash\nPOST /acuity-scheduling/api/v1/clients\nContent-Type: application/json\n\n{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"john@example.com\"\n}\n```\n\n### List Blocks\n```bash\nGET /acuity-scheduling/api/v1/blocks?calendarID=1234\n```\n\n### Create Block\n```bash\nPOST /acuity-scheduling/api/v1/blocks\nContent-Type: application/json\n\n{\n  \"start\": \"2026-02-15T12:00\",\n  \"end\": \"2026-02-15T13:00\",\n  \"calendarID\": 1234\n}\n```\n\n### Delete Block\n```bash\nDELETE /acuity-scheduling/api/v1/blocks/{id}\n```\n\n### List Forms\n```bash\nGET /acuity-scheduling/api/v1/forms\n```\n\n### List Labels\n```bash\nGET /acuity-scheduling/api/v1/labels\n```\n\n## Notes\n\n- Datetime values must be parseable by PHP's `strtotime()` function\n- Timezones use IANA format (e.g., \"America/New_York\")\n- Use `max` parameter to limit results (default: 100)\n- Use `minDate` and `maxDate` for date-range filtering\n- Client update/delete only works for clients with existing appointments\n- Rescheduling requires the new datetime to be an available time slot\n\n## Resources\n\n- [Acuity Scheduling API Quick Start](https://developers.acuityscheduling.com/reference/quick-start)\n- [Appointments API](https://developers.acuityscheduling.com/reference/get-appointments)\n- [Availability API](https://developers.acuityscheduling.com/reference/get-availability-dates)\n- [OAuth2 Documentation](https://developers.acuityscheduling.com/docs/oauth2)\n\nFile v1.0.53:references/airtable.md\n\n# Airtable Routing Reference\n\n**App name:** `airtable`\n**Base URL proxied:** `api.airtable.com`\n\n## API Path Pattern\n\n```\n/airtable/v0/{baseId}/{tableIdOrName}\n```\n\n## Common Endpoints\n\n### List Records\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?maxRecords=100\n```\n\nWith view:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?view=Grid%20view&maxRecords=100\n```\n\nWith filter formula:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?filterByFormula={Status}='Active'\n```\n\nWith field selection:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?fields[]=Name&fields[]=Status&fields[]=Email\n```\n\nWith sorting:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?sort[0][field]=Created&sort[0][direction]=desc\n```\n\n### Get Record\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}/{recordId}\n```\n\n### Create Records\n```bash\nPOST /airtable/v0/{baseId}/{tableIdOrName}\nContent-Type: application/json\n\n{\n  \"records\": [\n    {\n      \"fields\": {\n        \"Name\": \"New Record\",\n        \"Status\": \"Active\",\n        \"Email\": \"test@example.com\"\n      }\n    }\n  ]\n}\n```\n\n### Update Records (PATCH - partial update)\n```bash\nPATCH /airtable/v0/{baseId}/{tableIdOrName}\nContent-Type: application/json\n\n{\n  \"records\": [\n    {\n      \"id\": \"recXXXXXXXXXXXXXX\",\n      \"fields\": {\n        \"Status\": \"Completed\"\n      }\n    }\n  ]\n}\n```\n\n### Update Records (PUT - full replace)\n```bash\nPUT /airtable/v0/{baseId}/{tableIdOrName}\nContent-Type: application/json\n\n{\n  \"records\": [\n    {\n      \"id\": \"recXXXXXXXXXXXXXX\",\n      \"fields\": {\n        \"Name\": \"Updated Name\",\n        \"Status\": \"Active\"\n      }\n    }\n  ]\n}\n```\n\n### Delete Records\n```bash\nDELETE /airtable/v0/{baseId}/{tableIdOrName}?records[]=recXXXXX&records[]=recYYYYY\n```\n\n### List Bases\n```bash\nGET /airtable/v0/meta/bases\n```\n\n### Get Base Schema\n```bash\nGET /airtable/v0/meta/bases/{baseId}/tables\n```\n\n## Pagination\n\n**Parameters:**\n- `pageSize` - Number of records per request (max 100, default 100)\n- `maxRecords` - Maximum total records across all pages\n- `offset` - Cursor for next page (returned in response)\n\nResponse includes `offset` when more records exist:\n```json\n{\n  \"records\": [...],\n  \"offset\": \"itrXXXXXXXXXXX\"\n}\n```\n\nUse offset for next page:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?pageSize=50&offset=itrXXXXXXXXXXX\n```\n\n## Notes\n\n- Authentication is automatic via OAuth\n- Base IDs start with `app`\n- Table IDs start with `tbl` (can also use table name)\n- Record IDs start with `rec`\n- Maximum 100 records per request for create/update\n- Maximum 10 records per delete request\n- Filter formulas use Airtable formula syntax\n\n## Resources\n\n- [API Overview](https://airtable.com/developers/web/api/introduction)\n- [List Records](https://airtable.com/developers/web/api/list-records)\n- [Create Records](https://airtable.com/developers/web/api/create-records)\n- [Update Records](https://airtable.com/developers/web/api/update-record)\n- [Delete Records](https://airtable.com/developers/web/api/delete-record)\n- [Formula Reference](https://support.airtable.com/docs/formula-field-reference)\n\nFile v1.0.53:references/apollo.md\n\n# Apollo Routing Reference\n\n**App name:** `apollo`\n**Base URL proxied:** `api.apollo.io`\n\n## API Path Pattern\n\n```\n/apollo/v1/{endpoint}\n```\n\n## Common Endpoints\n\n### People\n\n#### Search People\n```bash\nPOST /apollo/v1/mixed_people/api_search\nContent-Type: application/json\n\n{\n  \"q_organization_name\": \"Google\",\n  \"page\": 1,\n  \"per_page\": 25\n}\n```\n\n#### Get Person\n```bash\nGET /apollo/v1/people/{personId}\n```\n\n#### Enrich Person\n```bash\nPOST /apollo/v1/people/match\nContent-Type: application/json\n\n{\n  \"email\": \"john@example.com\"\n}\n```\n\nOr by LinkedIn:\n```bash\nPOST /apollo/v1/people/match\nContent-Type: application/json\n\n{\n  \"linkedin_url\": \"https://linkedin.com/in/johndoe\"\n}\n```\n\n### Organizations\n\n#### Search Organizations\n```bash\nPOST /apollo/v1/organizations/search\nContent-Type: application/json\n\n{\n  \"q_organization_name\": \"Google\",\n  \"page\": 1,\n  \"per_page\": 25\n}\n```\n\n#### Enrich Organization\n```bash\nPOST /apollo/v1/organizations/enrich\nContent-Type: application/json\n\n{\n  \"domain\": \"google.com\"\n}\n```\n\n### Contacts\n\n#### Search Contacts\n```bash\nPOST /apollo/v1/contacts/search\nContent-Type: application/json\n\n{\n  \"page\": 1,\n  \"per_page\": 25\n}\n```\n\n#### Create Contact\n```bash\nPOST /apollo/v1/contacts\nContent-Type: application/json\n\n{\n  \"first_name\": \"John\",\n  \"last_name\": \"Doe\",\n  \"email\": \"john@example.com\",\n  \"organization_name\": \"Acme Corp\"\n}\n```\n\n#### Update Contact\n```bash\nPUT /apollo/v1/contacts/{contactId}\nContent-Type: application/json\n\n{\n  \"first_name\": \"Jane\"\n}\n```\n\n### Accounts\n\n#### Search Accounts\n```bash\nPOST /apollo/v1/accounts/search\nContent-Type: application/json\n\n{\n  \"page\": 1,\n  \"per_page\": 25\n}\n```\n\n#### Create Account\n```bash\nPOST /apollo/v1/accounts\nContent-Type: application/json\n\n{\n  \"name\": \"Acme Corp\",\n  \"domain\": \"acme.com\"\n}\n```\n\n### Sequences\n\n#### Search Sequences\n```bash\nPOST /apollo/v1/emailer_campaigns/search\nContent-Type: application/json\n\n{\n  \"page\": 1,\n  \"per_page\": 25\n}\n```\n\n#### Add Contact to Sequence\n```bash\nPOST /apollo/v1/emailer_campaigns/{campaignId}/add_contact_ids\nContent-Type: application/json\n\n{\n  \"contact_ids\": [\"contact_id_1\", \"contact_id_2\"]\n}\n```\n\n### Email\n\n#### Search Email Messages\n```bash\nPOST /apollo/v1/emailer_messages/search\nContent-Type: application/json\n\n{\n  \"contact_id\": \"{contactId}\"\n}\n```\n\n### Labels\n\n#### List Labels\n```bash\nGET /apollo/v1/labels\n```\n\n## Search Filters\n\nCommon search parameters:\n- `q_organization_name` - Company name\n- `q_person_title` - Job title\n- `person_locations` - Array of locations\n- `organization_num_employees_ranges` - Employee count ranges\n- `q_keywords` - General keyword search\n\n## Notes\n\n- Authentication is automatic - the router injects the API key\n- Pagination uses `page` and `per_page` parameters in POST body\n- Most list endpoints use POST with `/search` suffix (not GET)\n- Email enrichment consumes credits\n- Rate limits apply per endpoint\n- `people/search` and `mixed_people/search` are deprecated - use `mixed_people/api_search` instead\n\n## Resources\n\n- [API Overview](https://docs.apollo.io/reference/introduction)\n- [Search People](https://docs.apollo.io/reference/people-api-search.md)\n- [Enrich Person](https://docs.apollo.io/reference/people-enrichment.md)\n- [Search Organizations](https://docs.apollo.io/reference/organization-search.md)\n- [Enrich Organization](https://docs.apollo.io/reference/organization-enrichment.md)\n- [Search Contacts](https://docs.apollo.io/reference/search-for-contacts.md)\n- [Create Contact](https://docs.apollo.io/reference/create-a-contact.md)\n- [Update Contact](https://docs.apollo.io/reference/update-a-contact.md)\n- [Search Accounts](https://docs.apollo.io/reference/search-for-accounts.md)\n- [Create Account](https://docs.apollo.io/reference/create-an-account.md)\n- [Search Sequences](https://docs.apollo.io/reference/search-for-sequences.md)\n- [Add Contacts to Sequence](https://docs.apollo.io/reference/add-contacts-to-sequence.md)\n- [Search Email Messages](https://docs.apollo.io/reference/search-for-outreach-emails.md)\n- [List Labels](https://docs.apollo.io/reference/get-a-list-of-all-lists.md)\n- [LLM Reference](https://docs.apollo.io/llms.txt)\n\nFile v1.0.53:references/asana.md\n\n# Asana Routing Reference\n\n**App name:** `asana`\n**Base URL proxied:** `app.asana.com`\n\n## API Path Pattern\n\n```\n/asana/api/1.0/{resource}\n```\n\n## Common Endpoints\n\n### Get Current User\n```bash\nGET /asana/api/1.0/users/me\n```\n\n### List Workspaces\n```bash\nGET /asana/api/1.0/workspaces\n```\n\n### List Tasks\n```bash\nGET /asana/api/1.0/tasks?project=PROJECT_GID&opt_fields=name,completed,due_on\n```\n\n### Get a Task\n```bash\nGET /asana/api/1.0/tasks/{task_gid}\n```\n\n### Create a Task\n```bash\nPOST /asana/api/1.0/tasks\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"name\": \"New task\",\n    \"projects\": [\"PROJECT_GID\"],\n    \"assignee\": \"USER_GID\",\n    \"due_on\": \"2025-03-20\",\n    \"notes\": \"Task description\"\n  }\n}\n```\n\n### Update a Task\n```bash\nPUT /asana/api/1.0/tasks/{task_gid}\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"completed\": true\n  }\n}\n```\n\n### Delete a Task\n```bash\nDELETE /asana/api/1.0/tasks/{task_gid}\n```\n\n### Get Subtasks\n```bash\nGET /asana/api/1.0/tasks/{task_gid}/subtasks\n```\n\n### Create Subtask\n```bash\nPOST /asana/api/1.0/tasks/{task_gid}/subtasks\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"name\": \"Subtask name\"\n  }\n}\n```\n\n### List Projects\n```bash\nGET /asana/api/1.0/projects?workspace=WORKSPACE_GID&opt_fields=name,owner,due_date\n```\n\n### Get a Project\n```bash\nGET /asana/api/1.0/projects/{project_gid}\n```\n\n### Create a Project\n```bash\nPOST /asana/api/1.0/projects\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"name\": \"New Project\",\n    \"workspace\": \"WORKSPACE_GID\"\n  }\n}\n```\n\n### List Users in Workspace\n```bash\nGET /asana/api/1.0/workspaces/{workspace_gid}/users?opt_fields=name,email\n```\n\n### Create Webhook\n```bash\nPOST /asana/api/1.0/webhooks\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"resource\": \"PROJECT_OR_TASK_GID\",\n    \"target\": \"https://example.com/webhook\",\n    \"filters\": [\n      {\n        \"resource_type\": \"task\",\n        \"action\": \"changed\",\n        \"fields\": [\"completed\", \"due_on\"]\n      }\n    ]\n  }\n}\n```\n\n### Delete Webhook\n```bash\nDELETE /asana/api/1.0/webhooks/{webhook_gid}\n```\n\n## Notes\n\n- Resource IDs (GIDs) are strings\n- Timestamps are in ISO 8601 format\n- Use `opt_fields` to specify which fields to return in responses\n- Workspaces are the highest-level organizational unit\n- Use cursor-based pagination with `offset` parameter\n- Webhook creation requires the target URL to respond with 200 status\n\n## Resources\n\n- [Asana API Overview](https://developers.asana.com)\n- [API Reference](https://developers.asana.com/reference)\n- [Tasks](https://developers.asana.com/reference/tasks)\n- [Projects](https://developers.asana.com/reference/projects)\n- [Workspaces](https://developers.asana.com/reference/workspaces)\n- [Webhooks](https://developers.asana.com/reference/webhooks)\n- [LLM Reference](https://developers.asana.com/llms.txt)\n\nFile v1.0.53:references/attio.md\n\n# Attio Routing Reference\n\n**App name:** `attio`\n**Base URL proxied:** `api.attio.com`\n\n## API Path Pattern\n\n```\n/attio/v2/{resource}\n```\n\n## Common Endpoints\n\n### List Objects\n```bash\nGET /attio/v2/objects\n```\n\n### Get Object\n```bash\nGET /attio/v2/objects/{object}\n```\n\n### List Attributes\n```bash\nGET /attio/v2/objects/{object}/attributes\n```\n\n### Query Records\n```bash\nPOST /attio/v2/objects/{object}/records/query\nContent-Type: application/json\n\n{\n  \"limit\": 50,\n  \"offset\": 0\n}\n```\n\n### Get Record\n```bash\nGET /attio/v2/objects/{object}/records/{record_id}\n```\n\n### Create Record\n```bash\nPOST /attio/v2/objects/{object}/records\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"values\": {\n      \"name\": [{\"first_name\": \"John\", \"last_name\": \"Doe\", \"full_name\": \"John Doe\"}],\n      \"email_addresses\": [\"john@example.com\"]\n    }\n  }\n}\n```\n\n### Update Record\n```bash\nPATCH /attio/v2/objects/{object}/records/{record_id}\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"values\": {\n      \"job_title\": \"Engineer\"\n    }\n  }\n}\n```\n\n### Delete Record\n```bash\nDELETE /attio/v2/objects/{object}/records/{record_id}\n```\n\n### List Tasks\n```bash\nGET /attio/v2/tasks?limit=50\n```\n\n### Create Task\n```bash\nPOST /attio/v2/tasks\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"content\": \"Task description\",\n    \"format\": \"plaintext\",\n    \"deadline_at\": null,\n    \"assignees\": [],\n    \"linked_records\": []\n  }\n}\n```\n\n### List Workspace Members\n```bash\nGET /attio/v2/workspace_members\n```\n\n### Identify Self\n```bash\nGET /attio/v2/self\n```\n\n### Notes\n\n#### List Notes\n```bash\nGET /attio/v2/notes?limit=50&parent_object={object}&parent_record_id={record_id}\n```\n\n#### Get Note\n```bash\nGET /attio/v2/notes/{note_id}\n```\n\n#### Create Note\n```bash\nPOST /attio/v2/notes\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"format\": \"plaintext\",\n    \"title\": \"Meeting Summary\",\n    \"content\": \"Note content here\",\n    \"parent_object\": \"companies\",\n    \"parent_record_id\": \"{record_id}\",\n    \"created_by_actor\": {\n      \"type\": \"workspace-member\",\n      \"id\": \"{workspace_member_id}\"\n    }\n  }\n}\n```\n\n#### Delete Note\n```bash\nDELETE /attio/v2/notes/{note_id}\n```\n\n### Comments\n\n#### Create Comment on Record\n```bash\nPOST /attio/v2/comments\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"format\": \"plaintext\",\n    \"content\": \"Comment text\",\n    \"author\": {\n      \"type\": \"workspace-member\",\n      \"id\": \"{workspace_member_id}\"\n    },\n    \"record\": {\n      \"object\": \"companies\",\n      \"record_id\": \"{record_id}\"\n    }\n  }\n}\n```\n\n#### Reply to Comment Thread\n```bash\nPOST /attio/v2/comments\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"format\": \"plaintext\",\n    \"content\": \"This is a reply\",\n    \"author\": {\n      \"type\": \"workspace-member\",\n      \"id\": \"{workspace_member_id}\"\n    },\n    \"thread_id\": \"{thread_id}\"\n  }\n}\n```\n\n### Lists\n\n#### List All Lists\n```bash\nGET /attio/v2/lists\n```\n\n#### Get List\n```bash\nGET /attio/v2/lists/{list_id}\n```\n\n### List Entries\n\n#### Query List Entries\n```bash\nPOST /attio/v2/lists/{list}/entries/query\nContent-Type: application/json\n\n{\n  \"limit\": 50,\n  \"offset\": 0\n}\n```\n\n#### Create List Entry\n```bash\nPOST /attio/v2/lists/{list}/entries\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"parent_record_id\": \"{record_id}\",\n    \"parent_object\": \"companies\",\n    \"entry_values\": {}\n  }\n}\n```\n\n#### Get List Entry\n```bash\nGET /attio/v2/lists/{list}/entries/{entry_id}\n```\n\n#### Update List Entry\n```bash\nPATCH /attio/v2/lists/{list}/entries/{entry_id}\nContent-Type: application/json\n\n{\n  \"data\": {\n    \"entry_values\": {\n      \"status\": \"Active\"\n    }\n  }\n}\n```\n\n#### Delete List Entry\n```bash\nDELETE /attio/v2/lists/{list}/entries/{entry_id}\n```\n\n### Meetings\n\n#### List Meetings\n```bash\nGET /attio/v2/meetings?limit=50\n```\n\n#### Get Meeting\n```bash\nGET /attio/v2/meetings/{meeting_id}\n```\n\n### Call Recordings\n\n#### List Call Recordings for Meeting\n```bash\nGET /attio/v2/meetings/{meeting_id}/call_recordings?limit=50\n```\n\n#### Get Call Recording\n```bash\nGET /attio/v2/meetings/{meeting_id}/call_recordings/{call_recording_id}\n```\n\n## Usage Notes\n\n- Object slugs are lowercase snake_case (e.g., `people`, `companies`)\n- Record IDs are UUIDs\n- For personal-name attributes, include `full_name` when creating records\n- Task creation requires `format`, `deadline_at`, `assignees`, and `linked_records` fields\n- Note creation requires `format`, `content`, `parent_object`, and `parent_record_id`\n- Comment creation requires `format`, `content`, `author`, plus one of `record`, `entry`, or `thread_id`\n- Meetings use cursor-based pagination\n- Rate limits: 100 read/sec, 25 write/sec\n- Pagination uses `limit` and `offset` parameters (or `cursor` for meetings)\n\n## Resources\n\n- [Attio API Overview](https://docs.attio.com/rest-api/overview)\n- [Attio API Reference](https://docs.attio.com/rest-api/endpoint-reference)\n- [Records API](https://docs.attio.com/rest-api/endpoint-reference/records)\n\nFile v1.0.53:references/basecamp.md\n\n# Basecamp Routing Reference\n\n**App name:** `basecamp`\n**Base URL proxied:** `3.basecampapi.com/{account_id}`\n\nNote: The gateway automatically injects the account ID from the OAuth connection.\n\n## API Path Pattern\n\n```\n/basecamp/{resource}.json\n```\n\nAll paths must end with `.json`.\n\n## Common Endpoints\n\n### Get Current User\n```bash\nGET /basecamp/my/profile.json\n```\n\n### List People\n```bash\nGET /basecamp/people.json\n```\n\n### List Projects\n```bash\nGET /basecamp/projects.json\n```\n\n### Get Project\n```bash\nGET /basecamp/projects/{project_id}.json\n```\n\nReturns project with `dock` array containing tool IDs.\n\n### Create Project\n```bash\nPOST /basecamp/projects.json\nContent-Type: application/json\n\n{\n  \"name\": \"Project Name\",\n  \"description\": \"Description\"\n}\n```\n\n### Get Todoset\n```bash\nGET /basecamp/buckets/{project_id}/todosets/{todoset_id}.json\n```\n\n### List Todolists\n```bash\nGET /basecamp/buckets/{project_id}/todosets/{todoset_id}/todolists.json\n```\n\n### List Todos\n```bash\nGET /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json\n```\n\n### Create Todo\n```bash\nPOST /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json\nContent-Type: application/json\n\n{\n  \"content\": \"Todo content\",\n  \"due_on\": \"2026-02-15\",\n  \"assignee_ids\": [123]\n}\n```\n\n### Complete Todo\n```bash\nPOST /basecamp/buckets/{project_id}/todos/{todo_id}/completion.json\n```\n\n### Get Message Board\n```bash\nGET /basecamp/buckets/{project_id}/message_boards/{message_board_id}.json\n```\n\n### List Messages\n```bash\nGET /basecamp/buckets/{project_id}/message_boards/{message_board_id}/messages.json\n```\n\n### Get Schedule\n```bash\nGET /basecamp/buckets/{project_id}/schedules/{schedule_id}.json\n```\n\n### List Schedule Entries\n```bash\nGET /basecamp/buckets/{project_id}/schedules/{schedule_id}/entries.json\n```\n\n### Get Vault (Documents)\n```bash\nGET /basecamp/buckets/{project_id}/vaults/{vault_id}.json\n```\n\n### List Documents\n```bash\nGET /basecamp/buckets/{project_id}/vaults/{vault_id}/documents.json\n```\n\n### List Campfires\n```bash\nGET /basecamp/chats.json\n```\n\n### Trash Recording\n```bash\nPUT /basecamp/buckets/{project_id}/recordings/{recording_id}/status/trashed.json\n```\n\n## Key Concepts\n\n- **Bucket**: Project content container (bucket_id = project_id)\n- **Dock**: Per-project tool list with `id`, `name`, `enabled`\n- **Recording**: Any content item (todos, messages, documents)\n\n## Pagination\n\nUses `Link` header with `rel=\"next\"`:\n```\nLink: <url>; rel=\"next\"\nX-Total-Count: 150\n```\n\n## Notes\n\n- All paths must end with `.json`\n- Gateway injects account ID automatically\n- Uses Basecamp 4 API (bc3-api)\n- Rate limit: ~50 requests per 10 seconds per IP\n- Check `enabled: true` in dock before using tools\n\n## Resources\n\n- [Basecamp 4 API Documentation](https://github.com/basecamp/bc3-api)\n- [API Endpoints](https://github.com/basecamp/bc3-api#endpoints)\n\nFile v1.0.53:references/beehiiv.md\n\n# beehiiv Routing Reference\n\n**App name:** `beehiiv`\n**Base URL proxied:** `api.beehiiv.com`\n\n## API Path Pattern\n\n```\n/beehiiv/v2/{resource}\n```\n\n## Common Endpoints\n\n### Publications\n\n#### List Publications\n```bash\nGET /beehiiv/v2/publications\n```\n\n#### Get Publication\n```bash\nGET /beehiiv/v2/publications/{publication_id}\n```\n\n### Subscriptions\n\n#### List Subscriptions\n```bash\nGET /beehiiv/v2/publications/{publication_id}/subscriptions\n```\n\n#### Get Subscription by ID\n```bash\nGET /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}\n```\n\n#### Get Subscription by Email\n```bash\nGET /beehiiv/v2/publications/{publication_id}/subscriptions/by_email/{email}\n```\n\n#### Create Subscription\n```bash\nPOST /beehiiv/v2/publications/{publication_id}/subscriptions\nContent-Type: application/json\n\n{\n  \"email\": \"subscriber@example.com\",\n  \"utm_source\": \"api\"\n}\n```\n\n#### Update Subscription\n```bash\nPATCH /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}\n```\n\n#### Delete Subscription\n```bash\nDELETE /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}\n```\n\n### Posts\n\n#### List Posts\n```bash\nGET /beehiiv/v2/publications/{publication_id}/posts\n```\n\n#### Get Post\n```bash\nGET /beehiiv/v2/publications/{publication_id}/posts/{post_id}\n```\n\n### Custom Fields\n\n#### List Custom Fields\n```bash\nGET /beehiiv/v2/publications/{publication_id}/custom_fields\n```\n\n#### Create Custom Field\n```bash\nPOST /beehiiv/v2/publications/{publication_id}/custom_fields\n```\n\n### Segments\n\n```bash\nGET /beehiiv/v2/publications/{publication_id}/segments\nGET /beehiiv/v2/publications/{publication_id}/segments/{segment_id}\n```\n\n### Tiers\n\n```bash\nGET /beehiiv/v2/publications/{publication_id}/tiers\nPOST /beehiiv/v2/publications/{publication_id}/tiers\nPATCH /beehiiv/v2/publications/{publication_id}/tiers/{tier_id}\n```\n\n### Automations\n\n```bash\nGET /beehiiv/v2/publications/{publication_id}/automations\nGET /beehiiv/v2/publications/{publication_id}/automations/{automation_id}\n```\n\n## Pagination\n\nCursor-based (recommended) or page-based (deprecated):\n\n```bash\n# Cursor-based\nGET /beehiiv/v2/publications/{pub_id}/subscriptions?limit=10&cursor={next_cursor}\n\n# Page-based (max 100 pages)\nGET /beehiiv/v2/publications?page=2&limit=10\n```\n\n## Notes\n\n- Publication IDs start with `pub_`\n- Subscription IDs start with `sub_`\n- Timestamps are Unix timestamps\n- Cursor-based pagination is recommended\n- Page-based pagination limited to 100 pages\n\n## Resources\n\n- [beehiiv Developer Documentation](https://developers.beehiiv.com/)\n- [beehiiv API Reference](https://developers.beehiiv.com/api-reference)\n\nFile v1.0.53:references/box.md\n\n# Box Routing Reference\n\n**App name:** `box`\n**Base URL proxied:** `api.box.com`\n\n## API Path Pattern\n\n```\n/box/2.0/{resource}\n```\n\n## Common Endpoints\n\n### Get Current User\n```bash\nGET /box/2.0/users/me\n```\n\n### Get User\n```bash\nGET /box/2.0/users/{user_id}\n```\n\n### Get Folder\n```bash\nGET /box/2.0/folders/{folder_id}\n```\n\nRoot folder ID is `0`.\n\n### List Folder Items\n```bash\nGET /box/2.0/folders/{folder_id}/items\nGET /box/2.0/folders/{folder_id}/items?limit=100&offset=0\n```\n\n### Create Folder\n```bash\nPOST /box/2.0/folders\nContent-Type: application/json\n\n{\n  \"name\": \"New Folder\",\n  \"parent\": {\"id\": \"0\"}\n}\n```\n\n### Update Folder\n```bash\nPUT /box/2.0/folders/{folder_id}\nContent-Type: application/json\n\n{\n  \"name\": \"Updated Name\",\n  \"description\": \"Description\"\n}\n```\n\n### Copy Folder\n```bash\nPOST /box/2.0/folders/{folder_id}/copy\nContent-Type: application/json\n\n{\n  \"name\": \"Copied Folder\",\n  \"parent\": {\"id\": \"0\"}\n}\n```\n\n### Delete Folder\n```bash\nDELETE /box/2.0/folders/{folder_id}\nDELETE /box/2.0/folders/{folder_id}?recursive=true\n```\n\n### Get File\n```bash\nGET /box/2.0/files/{file_id}\n```\n\n### Download File\n```bash\nGET /box/2.0/files/{file_id}/content\n```\n\n### Update File\n```bash\nPUT /box/2.0/files/{file_id}\n```\n\n### Copy File\n```bash\nPOST /box/2.0/files/{file_id}/copy\n```\n\n### Delete File\n```bash\nDELETE /box/2.0/files/{file_id}\n```\n\n### Create Shared Link\n```bash\nPUT /box/2.0/folders/{folder_id}\nContent-Type: application/json\n\n{\n  \"shared_link\": {\"access\": \"open\"}\n}\n```\n\n### List Collaborations\n```bash\nGET /box/2.0/folders/{folder_id}/collaborations\n```\n\n### Create Collaboration\n```bash\nPOST /box/2.0/collaborations\nContent-Type: application/json\n\n{\n  \"item\": {\"type\": \"folder\", \"id\": \"123\"},\n  \"accessible_by\": {\"type\": \"user\", \"login\": \"user@example.com\"},\n  \"role\": \"editor\"\n}\n```\n\n### Search\n```bash\nGET /box/2.0/search?query=keyword\n```\n\n### Events\n```bash\nGET /box/2.0/events\n```\n\n### Trash\n```bash\nGET /box/2.0/folders/trash/items\nDELETE /box/2.0/files/{file_id}/trash\nDELETE /box/2.0/folders/{folder_id}/trash\n```\n\n### Collections\n```bash\nGET /box/2.0/collections\nGET /box/2.0/collections/{collection_id}/items\n```\n\n### Recent Items\n```bash\nGET /box/2.0/recent_items\n```\n\n### Webhooks\n```bash\nGET /box/2.0/webhooks\nPOST /box/2.0/webhooks\nDELETE /box/2.0/webhooks/{webhook_id}\n```\n\n## Pagination\n\nOffset-based pagination:\n```bash\nGET /box/2.0/folders/0/items?limit=100&offset=0\n```\n\nResponse:\n```json\n{\n  \"total_count\": 250,\n  \"entries\": [...],\n  \"offset\": 0,\n  \"limit\": 100\n}\n```\n\n## Notes\n\n- Root folder ID is `0`\n- File uploads use `upload.box.com` (different base URL)\n- Delete operations return 204 No Content\n- Some operations require enterprise admin permissions\n- Use `fields` parameter to select specific fields\n\n## Resources\n\n- [Box API Reference](https://developer.box.com/reference)\n- [Box Developer Documentation](https://developer.box.com/guides)\n\nFile v1.0.53:references/brevo.md\n\n# Brevo Routing Reference\n\n**App name:** `brevo`\n**Base URL proxied:** `api.brevo.com`\n\n## API Path Pattern\n\n```\n/brevo/v3/{resource}\n```\n\n## Common Endpoints\n\n### Account\n\n```bash\nGET /brevo/v3/account\n```\n\n### Contacts\n\n#### List Contacts\n```bash\nGET /brevo/v3/contacts?limit=50&offset=0\n```\n\n#### Get Contact\n```bash\nGET /brevo/v3/contacts/{identifier}\n```\n\n#### Create Contact\n```bash\nPOST /brevo/v3/contacts\nContent-Type: application/json\n\n{\n  \"email\": \"contact@example.com\",\n  \"attributes\": {\"FIRSTNAME\": \"John\", \"LASTNAME\": \"Doe\"},\n  \"listIds\": [2]\n}\n```\n\n#### Update Contact\n```bash\nPUT /brevo/v3/contacts/{identifier}\nContent-Type: application/json\n\n{\n  \"attributes\": {\"FIRSTNAME\": \"Updated\"}\n}\n```\n\n#### Delete Contact\n```bash\nDELETE /brevo/v3/contacts/{identifier}\n```\n\n### Lists\n\n#### List All Lists\n```bash\nGET /brevo/v3/contacts/lists\n```\n\n#### Create List\n```bash\nPOST /brevo/v3/contacts/lists\nContent-Type: application/json\n\n{\n  \"name\": \"New List\",\n  \"folderId\": 1\n}\n```\n\n#### Add Contacts to List\n```bash\nPOST /brevo/v3/contacts/lists/{listId}/contacts/add\nContent-Type: application/json\n\n{\n  \"emails\": [\"contact@example.com\"]\n}\n```\n\n### Folders\n\n#### List Folders\n```bash\nGET /brevo/v3/contacts/folders\n```\n\n#### Create Folder\n```bash\nPOST /brevo/v3/contacts/folders\nContent-Type: application/json\n\n{\n  \"name\": \"New Folder\"\n}\n```\n\n### Transactional Emails\n\n#### Send Email\n```bash\nPOST /brevo/v3/smtp/email\nContent-Type: application/json\n\n{\n  \"sender\": {\"name\": \"John\", \"email\": \"john@example.com\"},\n  \"to\": [{\"email\": \"recipient@example.com\", \"name\": \"Jane\"}],\n  \"subject\": \"Hello!\",\n  \"htmlContent\": \"<html><body><h1>Hi!</h1></body></html>\"\n}\n```\n\n#### Get Email Statistics\n```bash\nGET /brevo/v3/smtp/statistics/events?limit=50\n```\n\n### Email Templates\n\n#### List Templates\n```bash\nGET /brevo/v3/smtp/templates\n```\n\n#### Create Template\n```bash\nPOST /brevo/v3/smtp/templates\nContent-Type: application/json\n\n{\n  \"sender\": {\"name\": \"Company\", \"email\": \"noreply@company.com\"},\n  \"templateName\": \"Welcome Email\",\n  \"subject\": \"Welcome {{params.name}}!\",\n  \"htmlContent\": \"<html><body><h1>Hello {{params.name}}!</h1></body></html>\"\n}\n```\n\n### Email Campaigns\n\n#### List Campaigns\n```bash\nGET /brevo/v3/emailCampaigns\n```\n\n#### Create Campaign\n```bash\nPOST /brevo/v3/emailCampaigns\nContent-Type: application/json\n\n{\n  \"name\": \"Newsletter\",\n  \"subject\": \"Monthly Update\",\n  \"sender\": {\"name\": \"Company\", \"email\": \"news@company.com\"},\n  \"htmlContent\": \"<html><body><h1>News</h1></body></html>\",\n  \"recipients\": {\"listIds\": [2]}\n}\n```\n\n#### Send Campaign\n```bash\nPOST /brevo/v3/emailCampaigns/{campaignId}/sendNow\n```\n\n### Senders\n\n#### List Senders\n```bash\nGET /brevo/v3/senders\n```\n\n#### Create Sender\n```bash\nPOST /brevo/v3/senders\nContent-Type: application/json\n\n{\n  \"name\": \"Marketing\",\n  \"email\": \"marketing@company.com\"\n}\n```\n\n### Attributes\n\n#### List Attributes\n```bash\nGET /brevo/v3/contacts/attributes\n```\n\n## Pagination\n\nBrevo uses offset-based pagination:\n\n```bash\nGET /brevo/v3/contacts?limit=50&offset=0\n```\n\n**Parameters:**\n- `limit` - Results per page (max varies by endpoint, typically 500)\n- `offset` - Starting index (0-based)\n\nResponse includes count:\n```json\n{\n  \"contacts\": [...],\n  \"count\": 150\n}\n```\n\n## Notes\n\n- All endpoints require `/v3/` prefix\n- Attribute names must be UPPERCASE\n- Contact identifiers: email, phone, or ID\n- Template parameters: `{{params.name}}` syntax\n- PUT/DELETE return 204 No Content on success\n- Rate limit: 300 calls/min (free), higher on paid plans\n\n## Resources\n\n- [Brevo API Overview](https://developers.brevo.com/)\n- [API Key Concepts](https://developers.brevo.com/docs/how-it-works)\n- [Manage Contacts](https://developers.brevo.com/docs/synchronise-contact-lists)\n- [Send Transactional Email](https://developers.brevo.com/docs/send-a-transactional-email)","readmeExcerpt":"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","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# Native Slack API call\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()\nreq = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF"},{"language":"text","snippet":"https://gateway.maton.ai/{app}/{native-api-path}"},{"language":"text","snippet":"Authorization: Bearer $MATON_API_KEY"},{"language":"bash","snippet":"export MATON_API_KEY=\"YOUR_API_KEY\""},{"language":"bash","snippet":"python <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF"},{"language":"json","snippet":"{\n  \"connections\": [\n    {\n      \"connection_id\": \"21fd90f9-5935-43cd-b6c8-bde9d915ca80\",\n      \"status\": \"ACTIVE\",\n      \"creation_time\": \"2025-12-08T07:20:53.488460Z\",\n      \"last_updated_time\": \"2026-01-31T20:03:32.593153Z\",\n      \"url\": \"https://connect.maton.ai/?session_token=5e9...\",\n      \"app\": \"slack\",\n      \"metadata\": {}\n    }\n  ]\n}"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: api-gateway\ndescription: |\n  Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth.\n  Use this skill when users want to interact with external services.\n  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).\ncompatibility: Requires network access and valid Maton API key\nmetadata:\n  author: maton\n  version: \"1.0\"\n  clawdbot:\n    emoji: 🧠\n    homepage: \"https://maton.ai\"\n    requires:\n      env:\n        - MATON_API_KEY\n---\n\n# API Gateway\n\nPassthrough 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.\n\n## Quick Start\n\n```bash\n# Native Slack API call\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()\nreq = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n\n## Base URL\n\n```\nhttps://gateway.maton.ai/{app}/{native-api-path}\n```\n\nReplace `{app}` with the service name and `{native-api-path}` with the actual API endpoint path.\n\nIMPORTANT: 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`.\n\n## Authentication\n\nAll requests require the Maton API key in the Authorization header:\n\n```\nAuthorization: Bearer $MATON_API_KEY\n```\n\nThe API gateway automatically injects the appropriate OAuth token for the target service.\n\n**Environment Variable:** You can set your API key as the `MATON_API_KEY` environment variable:\n\n```bash\nexport MATON_API_KEY=\"YOUR_API_KEY\"\n```\n\n## Getting Your API Key\n\n1. Sign in or create an account at [maton.ai](https://maton.ai)\n2. Go to [maton.ai/settings](https://maton.ai/settings)\n3. Click the copy button on the right side of API Key section to copy it\n\n## Connection Management\n\nConnection management uses a separate base URL: `https://ctrl.maton.ai`\n\n### List Connections\n\n```bash\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n```\n\n**Query Parameters (optional):**\n- `app` - Filter by service name (e.g., `slack`, `hub"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn75240wq8bnv2qm2xgry748jd80b9r0\",\n  \"slug\": \"api-gateway\",\n  \"version\": \"1.0.54\",\n  \"publishedAt\": 1772244788484\n}"},{"path":"references/active-campaign.md","content":"# ActiveCampaign Routing Reference\n\n**App name:** `active-campaign`\n**Base URL proxied:** `{account}.api-us1.com`\n\n## API Path Pattern\n\n```\n/active-campaign/api/3/{resource}\n```\n\n## Common Endpoints\n\n### Contacts\n\n#### List Contacts\n```bash\nGET /active-campaign/api/3/contacts\n```\n\n#### Get Contact\n```bash\nGET /active-campaign/api/3/contacts/{contactId}\n```\n\n#### Create Contact\n```bash\nPOST /active-campaign/api/3/contacts\nContent-Type: application/json\n\n{\n  \"contact\": {\n    \"email\": \"user@example.com\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\"\n  }\n}\n```\n\n#### Update Contact\n```bash\nPUT /active-campaign/api/3/contacts/{contactId}\n```\n\n#### Delete Contact\n```bash\nDELETE /active-campaign/api/3/contacts/{contactId}\n```\n\n### Tags\n\n#### List Tags\n```bash\nGET /active-campaign/api/3/tags\n```\n\n#### Create Tag\n```bash\nPOST /active-campaign/api/3/tags\nContent-Type: application/json\n\n{\n  \"tag\": {\n    \"tag\": \"Tag Name\",\n    \"tagType\": \"contact\"\n  }\n}\n```\n\n### Contact Tags\n\n#### Add Tag to Contact\n```bash\nPOST /active-campaign/api/3/contactTags\nContent-Type: application/json\n\n{\n  \"contactTag\": {\n    \"contact\": \"1\",\n    \"tag\": \"1\"\n  }\n}\n```\n\n#### Remove Tag from Contact\n```bash\nDELETE /active-campaign/api/3/contactTags/{contactTagId}\n```\n\n### Lists\n\n#### List All Lists\n```bash\nGET /active-campaign/api/3/lists\n```\n\n#### Create List\n```bash\nPOST /active-campaign/api/3/lists\n```\n\n### Deals\n\n#### List Deals\n```bash\nGET /active-campaign/api/3/deals\n```\n\n#### Create Deal\n```bash\nPOST /active-campaign/api/3/deals\nContent-Type: application/json\n\n{\n  \"deal\": {\n    \"title\": \"New Deal\",\n    \"value\": \"10000\",\n    \"currency\": \"usd\",\n    \"contact\": \"1\",\n    \"stage\": \"1\"\n  }\n}\n```\n\n### Deal Stages & Pipelines\n\n#### List Deal Stages\n```bash\nGET /active-campaign/api/3/dealStages\n```\n\n#### List Pipelines (Deal Groups)\n```bash\nGET /active-campaign/api/3/dealGroups\n```\n\n### Automations\n\n#### List Automations\n```bash\nGET /active-campaign/api/3/automations\n```\n\n### Campaigns\n\n#### List Campaigns\n```bash\nGET /active-campaign/api/3/campaigns\n```\n\n### Users\n\n#### List Users\n```bash\nGET /active-campaign/api/3/users\n```\n\n### Accounts\n\n#### List Accounts\n```bash\nGET /active-campaign/api/3/accounts\n```\n\n### Custom Fields\n\n#### List Fields\n```bash\nGET /active-campaign/api/3/fields\n```\n\n### Notes\n\n#### List Notes\n```bash\nGET /active-campaign/api/3/notes\n```\n\n### Webhooks\n\n#### List Webhooks\n```bash\nGET /active-campaign/api/3/webhooks\n```\n\n## Pagination\n\nUses offset-based pagination:\n\n```bash\nGET /active-campaign/api/3/contacts?limit=20&offset=0\n```\n\n**Parameters:**\n- `limit` - Results per page (default: 20)\n- `offset` - Starting index\n\nResponse includes meta with total:\n```json\n{\n  \"contacts\": [...],\n  \"meta\": {\n    \"total\": \"150\"\n  }\n}\n```\n\n## Notes\n\n- All endpoints require `/api/3/` prefix\n- Request bodies use singular resource names (e.g., `{\"contact\": {...}}`)\n- IDs returned as strings\n- Rate limit: 5 requests per second per account\n- DELETE returns 200 OK (not 204)\n\n## Resources\n\n- "},{"path":"references/acuity-scheduling.md","content":"# Acuity Scheduling Routing Reference\n\n**App name:** `acuity-scheduling`\n**Base URL proxied:** `acuityscheduling.com`\n\n## API Path Pattern\n\n```\n/acuity-scheduling/api/v1/{resource}\n```\n\nThe gateway automatically prepends `/api/v1` when proxying to Acuity.\n\n## Common Endpoints\n\n### Get Account Info\n```bash\nGET /acuity-scheduling/api/v1/me\n```\n\n### List Appointments\n```bash\nGET /acuity-scheduling/api/v1/appointments?max=100&minDate=2026-02-01\n```\n\n### Get Appointment\n```bash\nGET /acuity-scheduling/api/v1/appointments/{id}\n```\n\n### Create Appointment\n```bash\nPOST /acuity-scheduling/api/v1/appointments\nContent-Type: application/json\n\n{\n  \"datetime\": \"2026-02-15T09:00\",\n  \"appointmentTypeID\": 123,\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"john@example.com\"\n}\n```\n\n### Update Appointment\n```bash\nPUT /acuity-scheduling/api/v1/appointments/{id}\nContent-Type: application/json\n\n{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Smith\"\n}\n```\n\n### Cancel Appointment\n```bash\nPUT /acuity-scheduling/api/v1/appointments/{id}/cancel\n```\n\n### Reschedule Appointment\n```bash\nPUT /acuity-scheduling/api/v1/appointments/{id}/reschedule\nContent-Type: application/json\n\n{\n  \"datetime\": \"2026-02-20T10:00\"\n}\n```\n\n### List Calendars\n```bash\nGET /acuity-scheduling/api/v1/calendars\n```\n\n### List Appointment Types\n```bash\nGET /acuity-scheduling/api/v1/appointment-types\n```\n\n### Get Available Dates\n```bash\nGET /acuity-scheduling/api/v1/availability/dates?month=2026-02&appointmentTypeID=123\n```\n\n### Get Available Times\n```bash\nGET /acuity-scheduling/api/v1/availability/times?date=2026-02-04&appointmentTypeID=123\n```\n\n### List Clients\n```bash\nGET /acuity-scheduling/api/v1/clients?search=John\n```\n\n### Create Client\n```bash\nPOST /acuity-scheduling/api/v1/clients\nContent-Type: application/json\n\n{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"john@example.com\"\n}\n```\n\n### List Blocks\n```bash\nGET /acuity-scheduling/api/v1/blocks?calendarID=1234\n```\n\n### Create Block\n```bash\nPOST /acuity-scheduling/api/v1/blocks\nContent-Type: application/json\n\n{\n  \"start\": \"2026-02-15T12:00\",\n  \"end\": \"2026-02-15T13:00\",\n  \"calendarID\": 1234\n}\n```\n\n### Delete Block\n```bash\nDELETE /acuity-scheduling/api/v1/blocks/{id}\n```\n\n### List Forms\n```bash\nGET /acuity-scheduling/api/v1/forms\n```\n\n### List Labels\n```bash\nGET /acuity-scheduling/api/v1/labels\n```\n\n## Notes\n\n- Datetime values must be parseable by PHP's `strtotime()` function\n- Timezones use IANA format (e.g., \"America/New_York\")\n- Use `max` parameter to limit results (default: 100)\n- Use `minDate` and `maxDate` for date-range filtering\n- Client update/delete only works for clients with existing appointments\n- Rescheduling requires the new datetime to be an available time slot\n\n## Resources\n\n- [Acuity Scheduling API Quick Start](https://developers.acuityscheduling.com/reference/quick-start)\n- [Appointments API](https://developers.acuityscheduling.com/reference/get-appointments)\n- [Availability API](https://developers.acuityscheduling.com/refe"},{"path":"references/airtable.md","content":"# Airtable Routing Reference\n\n**App name:** `airtable`\n**Base URL proxied:** `api.airtable.com`\n\n## API Path Pattern\n\n```\n/airtable/v0/{baseId}/{tableIdOrName}\n```\n\n## Common Endpoints\n\n### List Records\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?maxRecords=100\n```\n\nWith view:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?view=Grid%20view&maxRecords=100\n```\n\nWith filter formula:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?filterByFormula={Status}='Active'\n```\n\nWith field selection:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?fields[]=Name&fields[]=Status&fields[]=Email\n```\n\nWith sorting:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?sort[0][field]=Created&sort[0][direction]=desc\n```\n\n### Get Record\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}/{recordId}\n```\n\n### Create Records\n```bash\nPOST /airtable/v0/{baseId}/{tableIdOrName}\nContent-Type: application/json\n\n{\n  \"records\": [\n    {\n      \"fields\": {\n        \"Name\": \"New Record\",\n        \"Status\": \"Active\",\n        \"Email\": \"test@example.com\"\n      }\n    }\n  ]\n}\n```\n\n### Update Records (PATCH - partial update)\n```bash\nPATCH /airtable/v0/{baseId}/{tableIdOrName}\nContent-Type: application/json\n\n{\n  \"records\": [\n    {\n      \"id\": \"recXXXXXXXXXXXXXX\",\n      \"fields\": {\n        \"Status\": \"Completed\"\n      }\n    }\n  ]\n}\n```\n\n### Update Records (PUT - full replace)\n```bash\nPUT /airtable/v0/{baseId}/{tableIdOrName}\nContent-Type: application/json\n\n{\n  \"records\": [\n    {\n      \"id\": \"recXXXXXXXXXXXXXX\",\n      \"fields\": {\n        \"Name\": \"Updated Name\",\n        \"Status\": \"Active\"\n      }\n    }\n  ]\n}\n```\n\n### Delete Records\n```bash\nDELETE /airtable/v0/{baseId}/{tableIdOrName}?records[]=recXXXXX&records[]=recYYYYY\n```\n\n### List Bases\n```bash\nGET /airtable/v0/meta/bases\n```\n\n### Get Base Schema\n```bash\nGET /airtable/v0/meta/bases/{baseId}/tables\n```\n\n## Pagination\n\n**Parameters:**\n- `pageSize` - Number of records per request (max 100, default 100)\n- `maxRecords` - Maximum total records across all pages\n- `offset` - Cursor for next page (returned in response)\n\nResponse includes `offset` when more records exist:\n```json\n{\n  \"records\": [...],\n  \"offset\": \"itrXXXXXXXXXXX\"\n}\n```\n\nUse offset for next page:\n```bash\nGET /airtable/v0/{baseId}/{tableIdOrName}?pageSize=50&offset=itrXXXXXXXXXXX\n```\n\n## Notes\n\n- Authentication is automatic via OAuth\n- Base IDs start with `app`\n- Table IDs start with `tbl` (can also use table name)\n- Record IDs start with `rec`\n- Maximum 100 records per request for create/update\n- Maximum 10 records per delete request\n- Filter formulas use Airtable formula syntax\n\n## Resources\n\n- [API Overview](https://airtable.com/developers/web/api/introduction)\n- [List Records](https://airtable.com/developers/web/api/list-records)\n- [Create Records](https://airtable.com/developers/web/api/create-records)\n- [Update Records](https://airtable.com/developers/web/api/update-record)\n- [Delete Records](https://airtable.com/developers/web/api/delete-record)\n- [Formula Reference](http"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"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","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1132,"uniquenessScore":50,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"agent-directory","verified":false,"confidence":"low","updatedAt":"2026-10-09T03:31:50.825Z","emptyReason":"No close protocol neighbors were found."},"items":[],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[]}}}