本文へ移動
cccskills
無料GitHub で公開

api-gateway

OpenClaw API gateway proxy for authenticated SaaS calls (100+ services in references/SERVICES.md). Use ONLY when making an HTTP request to a third-party service that requires the gateway's stored credentials. NOT for direct API calls with bearer tokens already in scope, NOT for monday.com (use monday-for-agents), NOT for WhatsApp (use heleni-whatsapp). Triggers: "call the X API", "fetch from <service>", "send to Slack via gateway", "use the gateway for".

インストール方法を見る

含まれるファイル(200)

  • SKILL.md9.4 KB
  • references/active-campaign/README.md3.2 KB
  • references/acuity-scheduling/README.md3.0 KB
  • references/airtable/README.md3.0 KB
  • references/apify/README.md3.6 KB
  • references/apollo/README.md4.0 KB
  • references/asana/README.md2.7 KB
  • references/attio/README.md4.8 KB
  • references/basecamp/README.md2.8 KB
  • references/baserow/README.md3.7 KB
  • references/beehiiv/README.md2.6 KB
  • references/box/README.md5.0 KB
  • references/brave-search/README.md2.8 KB
  • references/brevo/README.md3.7 KB
  • references/buffer/README.md3.8 KB
  • references/cal-com/README.md3.4 KB
  • references/calendly/README.md2.6 KB
  • references/callrail/README.md3.1 KB
  • references/chargebee/README.md5.5 KB
  • references/clickfunnels/README.md5.3 KB
  • references/clicksend/README.md2.3 KB
  • references/clickup/README.md2.9 KB
  • references/clio/README.md6.1 KB
  • references/clockify/README.md3.7 KB
  • references/coda/README.md3.6 KB
  • references/cognito-forms/README.md2.4 KB
  • references/companycam/README.md3.6 KB
  • references/confluence/README.md4.6 KB
  • references/constant-contact/README.md2.5 KB
  • references/dropbox-business/README.md11.7 KB
  • references/dropbox/README.md6.1 KB
  • references/elevenlabs/README.md1.8 KB
  • references/eventbrite/README.md4.2 KB
  • references/exa/README.md4.0 KB
  • references/EXAMPLES.md4.1 KB
  • references/fal-ai/README.md2.6 KB
  • references/fathom/README.md1.9 KB
  • references/firebase/README.md3.1 KB
  • references/firecrawl/README.md3.5 KB
  • references/fireflies/README.md1.8 KB
  • references/front/README.md3.9 KB
  • references/getresponse/README.md2.8 KB
  • references/github/README.md2.5 KB
  • references/google-ads/README.md3.9 KB
  • references/google-analytics-admin/README.md5.7 KB
  • references/google-analytics-data/README.md4.2 KB
  • references/google-bigquery/README.md3.9 KB
  • references/google-calendar/README.md3.7 KB
  • references/google-classroom/README.md2.6 KB
  • references/google-contacts/README.md3.3 KB
  • references/google-docs/README.md2.9 KB
  • references/google-drive/README.md5.1 KB
  • references/google-forms/README.md4.1 KB
  • references/google-mail/README.md3.6 KB
  • references/google-meet/README.md2.7 KB
  • references/google-merchant/README.md5.0 KB
  • references/google-play/README.md3.8 KB
  • references/google-search-console/README.md3.8 KB
  • references/google-sheets/README.md6.0 KB
  • references/google-slides/README.md4.5 KB
  • references/google-tasks/README.md3.0 KB
  • references/google-workspace-admin/README.md4.6 KB
  • references/grafana/README.md2.8 KB
  • references/granola-mcp/README.md5.7 KB
  • references/granola-mcp/schemas/get_meeting_transcript.json819 B
  • references/granola-mcp/schemas/get_meetings.json893 B
  • references/granola-mcp/schemas/list_meetings.json1.5 KB
  • references/granola-mcp/schemas/query_granola_meetings.json1.6 KB
  • references/gumroad/README.md3.3 KB
  • references/hubspot/README.md9.8 KB
  • references/instantly/README.md3.0 KB
  • references/jira/README.md4.5 KB
  • references/jobber/README.md3.6 KB
  • references/jotform/README.md3.6 KB
  • references/kaggle/README.md2.5 KB
  • references/keap/README.md3.1 KB
  • references/kibana/README.md2.7 KB
  • references/kit/README.md3.3 KB
  • references/klaviyo/README.md4.9 KB
  • references/lemlist/README.md2.4 KB
  • references/linear/README.md4.3 KB
  • references/linkedin/README.md9.9 KB
  • references/mailchimp/README.md4.1 KB
  • references/mailerlite/README.md4.0 KB
  • references/mailgun/README.md4.7 KB
  • references/make/README.md3.5 KB
  • references/manus/README.md2.4 KB
  • references/manychat/README.md3.6 KB
  • references/memelord/README.md1.6 KB
  • references/microsoft-excel/README.md3.8 KB
  • references/microsoft-teams/README.md5.9 KB
  • references/microsoft-to-do/README.md3.6 KB
  • references/monday/README.md4.4 KB
  • references/motion/README.md2.7 KB
  • references/netlify/README.md3.6 KB
  • references/notion-mcp/README.md12.8 KB
  • references/notion-mcp/schemas/notion-create-comment.json17.6 KB
  • references/notion-mcp/schemas/notion-create-database.json3.4 KB
  • references/notion-mcp/schemas/notion-create-pages.json8.7 KB
  • references/notion-mcp/schemas/notion-duplicate-page.json927 B
  • references/notion-mcp/schemas/notion-fetch.json2.1 KB
  • references/notion-mcp/schemas/notion-get-comments.json1.6 KB
  • references/notion-mcp/schemas/notion-get-teams.json863 B
  • references/notion-mcp/schemas/notion-get-users.json1.7 KB
  • references/notion-mcp/schemas/notion-move-pages.json3.2 KB
  • references/notion-mcp/schemas/notion-search.json5.4 KB
  • references/notion-mcp/schemas/notion-update-data-source.json3.5 KB
  • references/notion-mcp/schemas/notion-update-page.json8.4 KB
  • references/notion/README.md7.9 KB
  • references/one-drive/README.md2.3 KB
  • references/one-note/README.md2.9 KB
  • references/outlook/README.md4.1 KB
  • references/pdf-co/README.md5.0 KB
  • references/pipedrive/README.md3.0 KB
  • references/podio/README.md3.2 KB
  • references/posthog/README.md3.3 KB
  • references/quickbooks/README.md11.1 KB
  • references/quo/README.md2.9 KB
  • references/reducto/README.md2.4 KB
  • references/resend/README.md6.0 KB
  • references/salesforce/README.md6.6 KB
  • references/sendgrid/README.md2.9 KB
  • references/sentry/README.md3.1 KB
  • references/SERVICES.md28.7 KB
  • references/sharepoint/README.md5.2 KB
  • references/signnow/README.md1.8 KB
  • references/slack/README.md7.6 KB
  • references/snapchat/README.md2.7 KB
  • references/squarespace/README.md8.1 KB
  • references/squareup/README.md9.8 KB
  • references/stripe/README.md7.4 KB
  • references/sunsama-mcp/README.md4.4 KB
  • references/sunsama-mcp/schemas/accept_meeting_invite.json299 B
  • references/sunsama-mcp/schemas/add_subtasks_to_task.json663 B
  • references/sunsama-mcp/schemas/add_task_to_channel.json386 B
  • references/sunsama-mcp/schemas/align_task_with_objective.json414 B
  • references/sunsama-mcp/schemas/append_task_notes.json379 B
  • references/sunsama-mcp/schemas/change_backlog_folder.json399 B
  • references/sunsama-mcp/schemas/create_braindump_task.json616 B
  • references/sunsama-mcp/schemas/create_calendar_event.json421 B
  • references/sunsama-mcp/schemas/create_channel.json301 B
  • references/sunsama-mcp/schemas/create_follow_up_task_from_email.json575 B
  • references/sunsama-mcp/schemas/create_task.json580 B
  • references/sunsama-mcp/schemas/create_weekly_objective.json440 B
  • references/sunsama-mcp/schemas/decline_meeting_invite.json301 B
  • references/sunsama-mcp/schemas/delete_all_incomplete_recurring_task_instances.json337 B
  • references/sunsama-mcp/schemas/delete_calendar_event.json290 B
  • references/sunsama-mcp/schemas/delete_email_thread.json540 B
  • references/sunsama-mcp/schemas/delete_task.json268 B
  • references/sunsama-mcp/schemas/edit_subtask_title.json526 B
  • references/sunsama-mcp/schemas/edit_task_recurrence_rule.json448 B
  • references/sunsama-mcp/schemas/edit_task_time_estimate.json418 B
  • references/sunsama-mcp/schemas/edit_task_title.json375 B
  • references/sunsama-mcp/schemas/get_archived_tasks.json162 B
  • references/sunsama-mcp/schemas/get_backlog_tasks.json171 B
  • references/sunsama-mcp/schemas/get_task_time_estimate.json309 B
  • references/sunsama-mcp/schemas/import_task_from_calendar_event.json312 B
  • references/sunsama-mcp/schemas/list_email_threads.json310 B
  • references/sunsama-mcp/schemas/log_user_feedback.json277 B
  • references/sunsama-mcp/schemas/mark_email_thread_as_read.json552 B
  • references/sunsama-mcp/schemas/mark_subtask_as_completed.json409 B
  • references/sunsama-mcp/schemas/mark_subtask_as_incomplete.json411 B
  • references/sunsama-mcp/schemas/mark_task_as_completed.json441 B
  • references/sunsama-mcp/schemas/mark_task_as_incomplete.json282 B
  • references/sunsama-mcp/schemas/move_calendar_event.json536 B
  • references/sunsama-mcp/schemas/move_task_from_backlog.json432 B
  • references/sunsama-mcp/schemas/move_task_to_backlog.json288 B
  • references/sunsama-mcp/schemas/move_task_to_day.json428 B
  • references/sunsama-mcp/schemas/reorder_tasks.json484 B
  • references/sunsama-mcp/schemas/reposition_task_in_backlog.json622 B
  • references/sunsama-mcp/schemas/restore_task.json279 B
  • references/sunsama-mcp/schemas/schedule_next_call.json569 B
  • references/sunsama-mcp/schemas/search_tasks.json292 B
  • references/sunsama-mcp/schemas/set_calendar_event_allow_task_projections.json518 B
  • references/sunsama-mcp/schemas/set_shutdown_time.json508 B
  • references/sunsama-mcp/schemas/start_task_timer.json276 B
  • references/sunsama-mcp/schemas/stop_task_timer.json274 B
  • references/sunsama-mcp/schemas/timebox_a_task_to_calendar.json555 B
  • references/sunsama-mcp/schemas/toggle_auto_import_events.json311 B
  • references/sunsama-mcp/schemas/unarchive_task.json453 B
  • references/sunsama-mcp/schemas/update_all_incomplete_recurring_task_instances.json337 B
  • references/sunsama-mcp/schemas/update_calendar_preferences.json319 B
  • references/sunsama-mcp/schemas/update_import_event_filters.json387 B
  • references/supabase/README.md3.5 KB
  • references/systeme/README.md3.4 KB
  • references/tally/README.md3.0 KB
  • references/tavily/README.md2.8 KB
  • references/telegram/README.md3.3 KB
  • references/ticktick/README.md2.5 KB
  • references/todoist/README.md2.7 KB
  • references/toggl-track/README.md3.7 KB
  • references/trello/README.md3.5 KB
  • references/twenty/README.md3.0 KB
  • references/twilio/README.md3.7 KB
  • references/typeform/README.md5.0 KB
  • references/unbounce/README.md2.9 KB
  • references/vercel/README.md3.2 KB
  • references/vimeo/README.md2.2 KB
  • references/wati/README.md4.2 KB
  • references/whatsapp-business/README.md4.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

API Gateway

Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by Maton. The API gateway lets you call native API endpoints directly.

Quick Start

# Native Slack API call
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Base URL

https://gateway.maton.ai/{app}/{native-api-path}

Replace {app} with the service name and {native-api-path} with the actual API endpoint path.

IMPORTANT: The URL path MUST start with the connection's app name (eg. /google-mail/...). This prefix tells the gateway which app connection to use. For example, the native Gmail API path starts with gmail/v1/, so full paths look like /google-mail/gmail/v1/users/me/messages.

Authentication

All requests require the Maton API key in the Authorization header:

Authorization: Bearer $MATON_API_KEY

The API gateway automatically injects the appropriate OAuth token for the target service.

Environment Variable: You can set your API key as the MATON_API_KEY environment variable:

export MATON_API_KEY="YOUR_API_KEY"

Getting Your API Key

  1. Sign in or create an account at maton.ai
  2. Go to maton.ai/settings
  3. Click the copy button on the right side of API Key section to copy it

Connection Management

Connection management uses a separate base URL: https://ctrl.maton.ai

List Connections

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": "{connection_id}",
      "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": {}
    }
  ]
}

Create Connection

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'slack'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Request Body:

  • app (required) - Service name (e.g., slack, notion)
  • method (optional) - Connection method (API_KEY, BASIC, OAUTH1, OAUTH2, MCP)

Get Connection

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

{
  "connection": {
    "connection_id": "{connection_id}",
    "status": "ACTIVE",
    "creation_time": "2025-12-08T07:20:53.488460Z",
    "last_updated_time": "2026-01-31T20:03:32.593153Z",
    "url": "https://connect.maton.ai/?session_token=5e9...",
    "app": "slack",
    "metadata": {}
  }
}

Open the returned URL in a browser to complete OAuth.

Delete Connection

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Specifying Connection

If you have multiple connections for the same app, you can specify which connection to use by adding the Maton-Connection header with the connection ID:

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Maton-Connection', '{connection_id}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

If omitted, the gateway uses the default (oldest) active connection for that app.

Supported Services

See references/SERVICES.md for the full list of 100+ supported SaaS services and their base URLs.

Examples

See references/EXAMPLES.md for code examples.

Error Handling

StatusMeaning
400Missing connection for the requested app
401Invalid or missing Maton API key
429Rate limited (10 requests/second per account)
500Internal Server Error
4xx/5xxPassthrough error from the target API

Errors from the target API are passed through with their original status codes and response bodies.

Troubleshooting: API Key Issues

  1. Check that the MATON_API_KEY environment variable is set:
echo $MATON_API_KEY
  1. Verify the API key is valid by listing connections:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Troubleshooting: Invalid App Name

  1. 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
  1. Ensure you have an active connection for the app. List your connections to verify:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-mail&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Troubleshooting: Server Error

A 500 error may indicate an expired OAuth token. Try creating a new connection via the Connection Management section above and completing OAuth authorization. If the new connection is "ACTIVE", delete the old connection to ensure the gateway uses the new one.

Rate Limits

  • 10 requests per second per account
  • Target API rate limits also apply

Notes

  • When using curl with URLs containing brackets (fields[], sort[], records[]), use the -g flag to disable glob parsing
  • When piping curl output to jq, environment variables may not expand correctly in some shells, which can cause "Invalid API key" errors
  • Media upload URLs (LinkedIn, etc.): Some APIs return pre-signed upload URLs that point to a different host than the gateway proxies (e.g., LinkedIn returns www.linkedin.com upload URLs, but the gateway proxies api.linkedin.com). These upload URLs are pre-signed and do NOT require an Authorization header — upload the binary directly to the returned URL without going through the gateway. You MUST use Python urllib for these uploads because the URLs contain encoded characters (e.g., %253D) that get corrupted when passed through shell variables or curl. Always parse the JSON response with json.load() and use the URL directly in Python.

Tips

  1. Use native API docs: Refer to each service's official API documentation for endpoint paths and parameters.

  2. Headers are forwarded: Custom headers (except Host and Authorization) are forwarded to the target API.

  3. Query params work: URL query parameters are passed through to the target API.

  4. All HTTP methods supported: GET, POST, PUT, PATCH, DELETE are all supported.

  5. QuickBooks special case: Use :realmId in the path and it will be replaced with the connected realm ID.

Optional

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

ai-pa

無料

Route and execute inter-PA coordination tasks in the OpenClaw multi-agent PA network. Triggers when: contacting another PA, passing a message between owners, broadcasting to a PA group, handling group lead/silence rules, or adding a new PA to the directory. NOT for: contact lookups (use contact-list skill), calendar invites (use meetings skill), or billing issues (use billing-monitor skill).

日本語の概要は準備中です。原文の説明を表示しています。

netanel-abergel/pa-skills62026年5月10日 更新

ai-pa

無料

AI Personal Assistant network skill. Use when: contacting another PA, coordinating with peer agents, scheduling meetings between owners, broadcasting messages, looking up contacts from the local PA directory, or performing any cross-PA task. Reads contact data from data/pa-directory.json in the workspace. Does NOT contain hardcoded contact data — each PA maintains their own directory file.

日本語の概要は準備中です。原文の説明を表示しています。

netanel-abergel/pa-skills62026年5月10日 更新

ai-pa

無料

AI Personal Assistant network skill for multi-agent PA coordination. Use when: contacting another PA, coordinating with peer agents, scheduling meetings between owners, broadcasting messages to PA groups, or looking up contacts from the local PA directory. Reads contact data from data/pa-directory.json in the workspace.

日本語の概要は準備中です。原文の説明を表示しています。

netanel-abergel/pa-skills62026年5月10日 更新

Automatically creates new skills from complex problem-solving sessions. Triggers at the end of multi-step tasks that required novel approaches, debugging sessions, or workflow creation. Use when: a task took 3+ tool calls, involved a non-obvious solution, or established a pattern likely to recur. Also triggers on: "create a skill from this", "save this as a skill", "this should be a skill".

日本語の概要は準備中です。原文の説明を表示しています。

netanel-abergel/pa-skills62026年5月10日 更新

Monitor for API billing errors and alert the owner and admin immediately. Use when: an API billing error is detected, a peer PA reports a billing error, or during routine health checks. Handles detection, notification, and fallback model switching. Model-agnostic: works with any LLM provider (Anthropic, OpenAI, Google, etc.).

日本語の概要は準備中です。原文の説明を表示しています。

netanel-abergel/pa-skills62026年5月10日 更新

Use when building, updating, or styling any monday Builders presentation, slide deck, internal pitch, kickoff doc, or HTML deliverable that should match the official Builders brand. Provides the canonical color palette, typography, gradient stroke, cover decorations, card patterns, and layout primitives sourced from the 2026 Builders Kickoff master deck. Invoke when user mentions "Builders deck", "Builders style", "match the deck", "make it on-brand", "kickoff style", or asks to design a slide/page that should look like internal monday Builders material.

日本語の概要は準備中です。原文の説明を表示しています。

netanel-abergel/pa-skills62026年5月10日 更新

netanel-abergel のスキルをすべて見る

このスキルの問題を報告する