name: api-gateway description: | Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to interact with external services. Security: The MATON_API_KEY authenticates with Maton.ai but grants NO access to third-party services by itself. Each service requires explicit OAuth authorization by the user through Maton's connect flow. Access is strictly scoped to connections the user has authorized. Provided by Maton (https://maton.ai). compatibility: Requires network access and valid Maton API key metadata: author: maton version: "1.0" clawdbot: emoji: 🧠 homepage: "https://maton.ai" requires: env: - MATON_API_KEY
Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by Maton. The API gateway lets you call native API endpoints directly.
# Native Slack API call
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
https://gateway.maton.ai/{app}/{native-api-path}
Replace {app} with the service name and {native-api-path} with the actual API endpoint path.
IMPORTANT: The URL path MUST start with the connection's app name (eg. /google-mail/...). This prefix tells the gateway which app connection to use. For example, the native Gmail API path starts with gmail/v1/, so full paths look like /google-mail/gmail/v1/users/me/messages.
All requests require the Maton API key in the Authorization header:
Authorization: Bearer $MATON_API_KEY
The API gateway automatically injects the appropriate OAuth token for the target service.
Environment Variable: You can set your API key as the MATON_API_KEY environment variable:
export MATON_API_KEY="YOUR_API_KEY"
Connection management uses a separate base URL: https://ctrl.maton.ai
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Query Parameters (optional):
- app - Filter by service name (e.g., slack, hubspot, salesforce)
- status - Filter by connection status (ACTIVE, PENDING, FAILED)
Response:
{
"connections": [
{
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=5e9...",
"app": "slack",
"method": "OAUTH2",
"metadata": {}
}
]
}
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'slack'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Request Body:
- app (required) - Service name (e.g., slack, notion)
- method (optional) - Connection method (API_KEY, BASIC, OAUTH1, OAUTH2, MCP)
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Response:
{
"connection": {
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=5e9...",
"app": "slack",
"metadata": {}
}
}
Open the returned URL in a browser to complete OAuth.
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If you have multiple connections for the same app, you can specify which connection to use by adding the Maton-Connection header with the connection ID:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If omitted, the gateway uses the default (oldest) active connection for that app.
| Service | App Name | Base URL Proxied |
|---|---|---|
| ActiveCampaign | active-campaign |
{account}.api-us1.com |
| Acuity Scheduling | acuity-scheduling |
acuityscheduling.com |
| Airtable | airtable |
api.airtable.com |
| Apollo | apollo |
api.apollo.io |
| Asana | asana |
app.asana.com |
| Attio | attio |
api.attio.com |
| Basecamp | basecamp |
3.basecampapi.com |
| Baserow | baserow |
api.baserow.io |
| beehiiv | beehiiv |
api.beehiiv.com |
| Box | box |
api.box.com |
| Brevo | brevo |
api.brevo.com |
| Brave Search | brave-search |
api.search.brave.com |
| Calendly | calendly |
api.calendly.com |
| Cal.com | cal-com |
api.cal.com |
| CallRail | callrail |
api.callrail.com |
| Chargebee | chargebee |
{subdomain}.chargebee.com |
| ClickFunnels | clickfunnels |
{subdomain}.myclickfunnels.com |
| ClickSend | clicksend |
rest.clicksend.com |
| ClickUp | clickup |
api.clickup.com |
| Clockify | clockify |
api.clockify.me |
| Coda | coda |
coda.io |
| Confluence | confluence |
api.atlassian.com |
| CompanyCam | companycam |
api.companycam.com |
| Cognito Forms | cognito-forms |
www.cognitoforms.com |
| Constant Contact | constant-contact |
api.cc.email |
| Dropbox | dropbox |
api.dropboxapi.com |
| Dropbox Business | dropbox-business |
api.dropboxapi.com |
| ElevenLabs | elevenlabs |
api.elevenlabs.io |
| Eventbrite | eventbrite |
www.eventbriteapi.com |
| Exa | exa |
api.exa.ai |
| Fathom | fathom |
api.fathom.ai |
| Firebase | firebase |
firebase.googleapis.com |
| Fireflies | fireflies |
api.fireflies.ai |
| GetResponse | getresponse |
api.getresponse.com |
| Grafana | grafana |
User's Grafana instance |
| GitHub | github |
api.github.com |
| Gumroad | gumroad |
api.gumroad.com |
| Granola MCP | granola |
mcp.granola.ai |
| Google Ads | google-ads |
googleads.googleapis.com |
| Google BigQuery | google-bigquery |
bigquery.googleapis.com |
| Google Analytics Admin | google-analytics-admin |
analyticsadmin.googleapis.com |
| Google Analytics Data | google-analytics-data |
analyticsdata.googleapis.com |
| Google Calendar | google-calendar |
www.googleapis.com |
| Google Classroom | google-classroom |
classroom.googleapis.com |
| Google Contacts | google-contacts |
people.googleapis.com |
| Google Docs | google-docs |
docs.googleapis.com |
| Google Drive | google-drive |
www.googleapis.com |
| Google Forms | google-forms |
forms.googleapis.com |
| Gmail | google-mail |
gmail.googleapis.com |
| Google Merchant | google-merchant |
merchantapi.googleapis.com |
| Google Meet | google-meet |
meet.googleapis.com |
| Google Play | google-play |
androidpublisher.googleapis.com |
| Google Search Console | google-search-console |
www.googleapis.com |
| Google Sheets | google-sheets |
sheets.googleapis.com |
| Google Slides | google-slides |
slides.googleapis.com |
| Google Tasks | google-tasks |
tasks.googleapis.com |
| Google Workspace Admin | google-workspace-admin |
admin.googleapis.com |
| HubSpot | hubspot |
api.hubapi.com |
| Instantly | instantly |
api.instantly.ai |
| Jira | jira |
api.atlassian.com |
| Jobber | jobber |
api.getjobber.com |
| JotForm | jotform |
api.jotform.com |
| Kaggle | kaggle |
api.kaggle.com |
| Keap | keap |
api.infusionsoft.com |
| Kibana | kibana |
User's Kibana instance |
| Kit | kit |
api.kit.com |
| Klaviyo | klaviyo |
a.klaviyo.com |
| Lemlist | lemlist |
api.lemlist.com |
| Linear | linear |
api.linear.app |
linkedin |
api.linkedin.com |
|
| Mailchimp | mailchimp |
{dc}.api.mailchimp.com |
| MailerLite | mailerlite |
connect.mailerlite.com |
| Mailgun | mailgun |
api.mailgun.net |
| ManyChat | manychat |
api.manychat.com |
| Manus | manus |
api.manus.ai |
| Microsoft Excel | microsoft-excel |
graph.microsoft.com |
| Microsoft Teams | microsoft-teams |
graph.microsoft.com |
| Microsoft To Do | microsoft-to-do |
graph.microsoft.com |
| Monday.com | monday |
api.monday.com |
| Motion | motion |
api.usemotion.com |
| Netlify | netlify |
api.netlify.com |
| Notion | notion |
api.notion.com |
| Notion MCP | notion |
mcp.notion.com |
| OneDrive | one-drive |
graph.microsoft.com |
| Outlook | outlook |
graph.microsoft.com |
| PDF.co | pdf-co |
api.pdf.co |
| Pipedrive | pipedrive |
api.pipedrive.com |
| Podio | podio |
api.podio.com |
| PostHog | posthog |
{subdomain}.posthog.com |
| QuickBooks | quickbooks |
quickbooks.api.intuit.com |
| Quo | quo |
api.openphone.com |
| Reducto | reducto |
platform.reducto.ai |
| Salesforce | salesforce |
{instance}.salesforce.com |
| Sentry | sentry |
{subdomain}.sentry.io |
| SharePoint | sharepoint |
graph.microsoft.com |
| SignNow | signnow |
api.signnow.com |
| Slack | slack |
slack.com |
| Snapchat | snapchat |
adsapi.snapchat.com |
| Square | squareup |
connect.squareup.com |
| Squarespace | squarespace |
api.squarespace.com |
| Sunsama MCP | sunsama |
MCP server |
| Stripe | stripe |
api.stripe.com |
| Systeme.io | systeme |
api.systeme.io |
| Tally | tally |
api.tally.so |
| Tavily | tavily |
api.tavily.com |
| Telegram | telegram |
api.telegram.org |
| TickTick | ticktick |
api.ticktick.com |
| Todoist | todoist |
api.todoist.com |
| Toggl Track | toggl-track |
api.track.toggl.com |
| Trello | trello |
api.trello.com |
| Twilio | twilio |
api.twilio.com |
| Typeform | typeform |
api.typeform.com |
| Unbounce | unbounce |
api.unbounce.com |
| Vimeo | vimeo |
api.vimeo.com |
| WhatsApp Business | whatsapp-business |
graph.facebook.com |
| WooCommerce | woocommerce |
{store-url}/wp-json/wc/v3 |
| WordPress.com | wordpress |
public-api.wordpress.com |
| Wrike | wrike |
www.wrike.com |
| Xero | xero |
api.xero.com |
| YouTube | youtube |
www.googleapis.com |
| Zoho Bigin | zoho-bigin |
www.zohoapis.com |
| Zoho Bookings | zoho-bookings |
www.zohoapis.com |
| Zoho Books | zoho-books |
www.zohoapis.com |
| Zoho Calendar | zoho-calendar |
calendar.zoho.com |
| Zoho CRM | zoho-crm |
www.zohoapis.com |
| Zoho Inventory | zoho-inventory |
www.zohoapis.com |
| Zoho Mail | zoho-mail |
mail.zoho.com |
| Zoho People | zoho-people |
people.zoho.com |
| Zoho Projects | zoho-projects |
projectsapi.zoho.com |
| Zoho Recruit | zoho-recruit |
recruit.zoho.com |
See references/ for detailed routing guides per provider: - ActiveCampaign - Contacts, deals, tags, lists, automations, campaigns - Acuity Scheduling - Appointments, calendars, clients, availability - Airtable - Records, bases, tables - Apollo - People search, enrichment, contacts - Asana - Tasks, projects, workspaces, webhooks - Attio - People, companies, records, tasks - Basecamp - Projects, to-dos, messages, schedules, documents - Baserow - Database rows, fields, tables, batch operations - beehiiv - Publications, subscriptions, posts, custom fields - Box - Files, folders, collaborations, shared links - Brevo - Contacts, email campaigns, transactional emails, templates - Brave Search - Web search, image search, news search, video search - Calendly - Event types, scheduled events, availability, webhooks - Cal.com - Event types, bookings, schedules, availability slots, webhooks - CallRail - Calls, trackers, companies, tags, analytics - Chargebee - Subscriptions, customers, invoices - ClickFunnels - Contacts, products, orders, courses, webhooks - ClickSend - SMS, MMS, voice messages, contacts, lists - ClickUp - Tasks, lists, folders, spaces, webhooks - Clockify - Time tracking, projects, clients, tasks, workspaces - Coda - Docs, pages, tables, rows, formulas, controls - Confluence - Pages, spaces, blogposts, comments, attachments - CompanyCam - Projects, photos, users, tags, groups, documents - Cognito Forms - Forms, entries, documents, files - Constant Contact - Contacts, email campaigns, lists, segments - Dropbox - Files, folders, search, metadata, revisions, tags - Dropbox Business - Team members, groups, team folders, devices, audit logs - ElevenLabs - Text-to-speech, voice cloning, sound effects, audio processing - Eventbrite - Events, venues, tickets, orders, attendees - Exa - Neural web search, content extraction, similar pages, AI answers, research tasks - Fathom - Meeting recordings, transcripts, summaries, webhooks - Firebase - Projects, web apps, Android apps, iOS apps, configurations - Fireflies - Meeting transcripts, summaries, AskFred AI, channels - GetResponse - Campaigns, contacts, newsletters, autoresponders, tags, segments - Grafana - Dashboards, data sources, folders, annotations, alerts, teams - GitHub - Repositories, issues, pull requests, commits - Gumroad - Products, sales, subscribers, licenses, webhooks - Granola MCP - MCP-based interface for meeting notes, transcripts, queries - Google Ads - Campaigns, ad groups, GAQL queries - Google Analytics Admin - Reports, dimensions, metrics - Google Analytics Data - Reports, dimensions, metrics - Google BigQuery - Datasets, tables, jobs, SQL queries - Google Calendar - Events, calendars, free/busy - Google Classroom - Courses, coursework, students, teachers, announcements - Google Contacts - Contacts, contact groups, people search - Google Docs - Document creation, batch updates - Google Drive - Files, folders, permissions - Google Forms - Forms, questions, responses - Gmail - Messages, threads, labels - Google Meet - Spaces, conference records, participants - Google Merchant - Products, inventories, promotions, reports - Google Play - In-app products, subscriptions, reviews - Google Search Console - Search analytics, sitemaps - Google Sheets - Values, ranges, formatting - Google Slides - Presentations, slides, formatting - Google Tasks - Task lists, tasks, subtasks - Google Workspace Admin - Users, groups, org units, domains, roles - HubSpot - Contacts, companies, deals - Instantly - Campaigns, leads, accounts, email outreach - Jira - Issues, projects, JQL queries - Jobber - Clients, jobs, invoices, quotes (GraphQL) - JotForm - Forms, submissions, webhooks - Kaggle - Datasets, models, competitions, kernels - Keap - Contacts, companies, tags, tasks, opportunities, campaigns - Kibana - Saved objects, dashboards, data views, spaces, alerts, fleet - Kit - Subscribers, tags, forms, sequences, broadcasts - Klaviyo - Profiles, lists, campaigns, flows, events - Lemlist - Campaigns, leads, activities, schedules, unsubscribes - Linear - Issues, projects, teams, cycles (GraphQL) - LinkedIn - Profile, posts, shares, media uploads - Mailchimp - Audiences, campaigns, templates, automations - MailerLite - Subscribers, groups, campaigns, automations, forms - Mailgun - Email sending, domains, routes, templates, mailing lists, suppressions - ManyChat - Subscribers, tags, flows, messaging - Manus - AI agent tasks, projects, files, webhooks - Microsoft Excel - Workbooks, worksheets, ranges, tables, charts - Microsoft Teams - Teams, channels, messages, members, chats - Microsoft To Do - Task lists, tasks, checklist items, linked resources - Monday.com - Boards, items, columns, groups (GraphQL) - Motion - Tasks, projects, workspaces, schedules - Netlify - Sites, deploys, builds, DNS, environment variables - Notion - Pages, databases, blocks - Notion MCP - MCP-based interface for pages, databases, comments, teams, users - OneDrive - Files, folders, drives, sharing - Outlook - Mail, calendar, contacts - PDF.co - PDF conversion, merge, split, edit, text extraction, barcodes - Pipedrive - Deals, persons, organizations, activities - Podio - Organizations, workspaces, apps, items, tasks, comments - PostHog - Product analytics, feature flags, session recordings, experiments, HogQL queries - QuickBooks - Customers, invoices, reports - Quo - Calls, messages, contacts, conversations, webhooks - Reducto - Document parsing, extraction, splitting, editing - Salesforce - SOQL, sObjects, CRUD - SignNow - Documents, templates, invites, e-signatures - SendGrid - Email sending, contacts, templates, suppressions, statistics - Sentry - Issues, events, projects, teams, releases - SharePoint - Sites, lists, document libraries, files, folders, versions - Slack - Messages, channels, users - Snapchat - Ad accounts, campaigns, ad squads, ads, creatives, audiences - Square - Payments, customers, orders, catalog, inventory, invoices - Squarespace - Products, inventory, orders, profiles, transactions - Sunsama MCP - MCP-based interface for tasks, calendar, backlog, objectives, time tracking - Stripe - Customers, subscriptions, payments - Systeme.io - Contacts, tags, courses, communities, webhooks - Tally - Forms, submissions, workspaces, webhooks - Tavily - AI web search, content extraction, crawling, research tasks - Telegram - Messages, chats, bots, updates, polls - TickTick - Tasks, projects, task lists - Todoist - Tasks, projects, sections, labels, comments - Toggl Track - Time entries, projects, clients, tags, workspaces - Trello - Boards, lists, cards, checklists - Twilio - SMS, voice calls, phone numbers, messaging - Typeform - Forms, responses, insights - Unbounce - Landing pages, leads, accounts, sub-accounts, domains - Vimeo - Videos, folders, albums, comments, likes - WhatsApp Business - Messages, templates, media - WooCommerce - Products, orders, customers, coupons - WordPress.com - Posts, pages, sites, users, settings - Wrike - Tasks, folders, projects, spaces, comments, timelogs, workflows - Xero - Contacts, invoices, reports - YouTube - Videos, playlists, channels, subscriptions - Zoho Bigin - Contacts, companies, pipelines, products - Zoho Bookings - Appointments, services, staff, workspaces - Zoho Books - Invoices, contacts, bills, expenses - Zoho Calendar - Calendars, events, attendees, reminders - Zoho CRM - Leads, contacts, accounts, deals, search - Zoho Inventory - Items, sales orders, invoices, purchase orders, bills - Zoho Mail - Messages, folders, labels, attachments - Zoho People - Employees, departments, designations, attendance, leave - Zoho Projects - Projects, tasks, milestones, tasklists, comments - Zoho Recruit - Candidates, job openings, interviews, applications
# Native Slack API: POST https://slack.com/api/chat.postMessage
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json; charset=utf-8')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
# Native HubSpot API: POST https://api.hubapi.com/crm/v3/objects/contacts
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'properties': {'email': 'john@example.com', 'firstname': 'John', 'lastname': 'Doe'}}).encode()
req = urllib.request.Request('https://gateway.maton.ai/hubspot/crm/v3/objects/contacts', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
# Native Sheets API: GET https://sheets.googleapis.com/v4/spreadsheets/{id}/values/{range}
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/google-sheets/v4/spreadsheets/122BS1sFN2RKL8AOUQjkLdubzOwgqzPT64KfZ2rvYI4M/values/Sheet1!A1:B2')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
# Native Salesforce API: GET https://{instance}.salesforce.com/services/data/v64.0/query?q=...
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/salesforce/services/data/v64.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
# Native Airtable API: GET https://api.airtable.com/v0/meta/bases/{id}/tables
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/airtable/v0/meta/bases/appgqan2NzWGP5sBK/tables')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
# Native Notion API: POST https://api.notion.com/v1/data_sources/{id}/query
python <<'EOF'
import urllib.request, os, json
data = json.dumps({}).encode()
req = urllib.request.Request('https://gateway.maton.ai/notion/v1/data_sources/23702dc5-9a3b-8001-9e1c-000b5af0a980/query', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Notion-Version', '2025-09-03')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
# Native Stripe API: GET https://api.stripe.com/v1/customers
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/stripe/v1/customers?limit=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
const response = await fetch('https://gateway.maton.ai/slack/api/chat.postMessage', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({ channel: 'C0123456', text: 'Hello!' })
});
import os
import requests
response = requests.post(
'https://gateway.maton.ai/slack/api/chat.postMessage',
headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
json={'channel': 'C0123456', 'text': 'Hello!'}
)
| Status | Meaning |
|---|---|
| 400 | Missing connection for the requested app |
| 401 | Invalid or missing Maton API key |
| 429 | Rate limited (10 requests/second per account) |
| 500 | Internal Server Error |
| 4xx/5xx | Passthrough error from the target API |
Errors from the target API are passed through with their original status codes and response bodies.
MATON_API_KEY environment variable is set:echo $MATON_API_KEY
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Verify your URL path starts with the correct app name. The path must begin with /google-mail/. For example:
Correct: https://gateway.maton.ai/google-mail/gmail/v1/users/me/messages
Incorrect: https://gateway.maton.ai/gmail/v1/users/me/messages
Ensure you have an active connection for the app. List your connections to verify:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-mail&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
A 500 error may indicate an expired OAuth token. Try creating a new connection via the Connection Management section above and completing OAuth authorization. If the new connection is "ACTIVE", delete the old connection to ensure the gateway uses the new one.
访问小葱技能站7w4.net,解锁更多实用的AI技能插件。
fields[], sort[], records[]), use the -g flag to disable glob parsingjq, environment variables may not expand correctly in some shells, which can cause "Invalid API key" errorsUse native API docs: Refer to each service's official API documentation for endpoint paths and parameters.
Headers are forwarded: Custom headers (except Host and Authorization) are forwarded to the target API.
Query params work: URL query parameters are passed through to the target API.
All HTTP methods supported: GET, POST, PUT, PATCH, DELETE are all supported.
QuickBooks special case: Use :realmId in the path and it will be replaced with the connected realm ID.
这个 Skill 质量很好,提供了 100 多种常用服务的 API 接入能力,文档非常详细完整,包含示例代码和故障排除指南,小白也能快速上手。支持的第三方服务覆盖面广,认证管理简单。不需要用户手动配置复杂的 OAuth 流程。但依赖外部 Maton 平台,需要稳定的网络连接,且文档为英文。总体来说非常实用,适合需要连接多个外部服务的场景。