/SKILL.md
# Onasis Gateway — Agent & IDE Skill Guide > **Read this file first.** This guide is the primary reference for AI agents (Claude, Cursor, Copilot, etc.) and developers working with the Onasis Gateway API integration repository. It covers all 16 third-party API integrations, Postman MCP setup, auth patterns, environment variables, and recommended workflows. --- ## Table of Contents 1. [Overview](#overview) 2. [Postman MCP Integration](#postman-mcp-integration) 3. [16 API Integrations](#16-api
npx skillsauth add thefixer3x/onasis-gateway onasis-gatewayInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Read this file first. This guide is the primary reference for AI agents (Claude, Cursor, Copilot, etc.) and developers working with the Onasis Gateway API integration repository. It covers all 16 third-party API integrations, Postman MCP setup, auth patterns, environment variables, and recommended workflows.
Onasis Gateway is a comprehensive API service warehouse that prevents costly omissions through upfront cataloging of all available APIs. It provides:
The 16 APIs span four functional categories:
| Category | Purpose | APIs | |----------|---------|------| | Messaging | Send/receive communications | Slack, WhatsApp, Gmail, Telegram | | Knowledge | Ingest and manage structured data | Google Drive, Notion, GitHub, Confluence | | Input | Collect user data and schedule events | Typeform, Jotform, Tally, Calendly | | Business | CRM, payments, project management | HubSpot, Stripe, ClickUp, Monday.com |
All Postman collection references live in postman/collections/{category}/{api}/collection.ref.yaml. Credentials are managed via postman/environments/third-party-apis.env.yaml.
Postman MCP (Model Context Protocol) is a server that exposes your Postman workspace — collections, environments, request history, API specs — as tools that AI agents can query and invoke directly from your IDE (Cursor, VS Code Copilot, etc.).
With Postman MCP you can:
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"postman": {
"command": "npx",
"args": ["-y", "@postman/mcp-server@latest"],
"env": {
"POSTMAN_API_KEY": "your-postman-api-key-here"
}
}
}
}
After saving, restart Cursor. The Postman MCP tools will appear in your agent's tool list.
Add to your VS Code settings.json (or .vscode/mcp.json in the workspace):
{
"mcp": {
"servers": {
"postman": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@postman/mcp-server@latest"],
"env": {
"POSTMAN_API_KEY": "your-postman-api-key-here"
}
}
}
}
}
Once connected, your AI agent can:
# Discover APIs
"List all collection.ref.yaml files in postman/collections/"
"What auth type does the Confluence API use?"
"Show me all variables in the third-party-apis environment"
# Work with specific APIs
"Find the Slack send message request and show me the required parameters"
"What is the base URL for the WhatsApp Cloud API?"
"Show me the Stripe collection and list all payment-related endpoints"
# Environment management
"What environment variables do I need to set for HubSpot?"
"Show me all secret-type variables in the third-party-apis environment"
# Integration guidance
"How do I authenticate with the GitHub API in this project?"
"What is the recommended order to integrate these 16 APIs?"
| API | Category | Auth Type | Key Variable | Base URL | Postman Collection ID |
|-----|----------|-----------|--------------|----------|-----------------------|
| Slack Web API | messaging | bearer | slack_token | https://slack.com/api | 13509546-993e3b18-d277-4189-8ce5-af45df38e336 |
| WhatsApp Cloud API | messaging | bearer | whatsapp_token | https://graph.facebook.com/v18.0 | 13382743-84d01ff8-4253-4720-b454-af661f36acc2 |
| Gmail REST API | messaging | oauth2 | gmail_access_token | https://gmail.googleapis.com | (no collection) |
| Telegram Bot API | messaging | bot_token | telegram_bot_token | https://api.telegram.org | 32050230-fbecbfa5-8ad2-4fa3-a98d-096e41d48d1e |
| Google Drive API | knowledge | oauth2 | google_drive_access_token | https://www.googleapis.com/drive/v3 | 25426789-d3687c0c-577e-4558-87b7-1b4a105f74a5 |
| Notion API | knowledge | bearer | notion_token | https://api.notion.com/v1 | 15568543-d990f9b7-98d3-47d3-9131-4866ab9c6df2 |
| GitHub Web API Reference | knowledge | bearer | github_token | https://api.github.com | 35240-c446a4c9-8dd6-45c4-99f2-688a96fe76ae |
| Confluence Cloud REST API v2 | knowledge | basic | confluence_api_token | https://{domain}.atlassian.net/wiki/api/v2 | 42654973-3182be8e-99e9-4dec-8b51-e7ec0d6ca3f8 |
| Typeform API Reference | input | bearer | typeform_token | https://api.typeform.com | 7335949-8e3131a9-3313-4dee-a76c-5cf11fc1d713 |
| Jotform REST API | input | api_key | jotform_api_key | https://api.jotform.com | (no collection) |
| Tally Forms API | input | bearer | tally_access_token | https://api.tally.so | (no collection) |
| Calendly API | input | bearer | calendly_token | https://api.calendly.com | 32889764-b48f686b-915d-43d5-bf99-c29cf6846e52 |
| HubSpot CRM API | business | bearer | hubspot_token | https://api.hubapi.com | 26126890-fa75a62c-7a82-4c9e-ad99-edb189d8a73e |
| Stripe API | business | basic | stripe_secret_key | https://api.stripe.com/v1 | 665823-7a054d2e-29d8-441a-8752-fb9b93d71384 |
| ClickUp API V2 | business | api_key | clickup_token | https://api.clickup.com/api/v2 | 14363797-e80a0657-5775-4669-942c-c399d05ddef1 |
| Monday.com GraphQL API | business | api_key | monday_token | https://api.monday.com/v2 | 22954425-fb7e3907-b0cb-4786-941f-f7d5efac52ea |
postman/collections/messaging/slack/collection.ref.yamlslack_token, slack_base_urlchat:write, channels:read). Use a Bot Token (xoxb-...) for most operations. User tokens (xoxp-...) for user-context actions.postman/collections/messaging/whatsapp/collection.ref.yamlwhatsapp_token, whatsapp_base_url, whatsapp_phone_number_idwhatsapp_phone_number_id is required for sending messages — find it in your Meta Business Manager.postman/collections/messaging/gmail/collection.ref.yamlgmail_access_token, gmail_base_url, gmail_user_idhttps://www.googleapis.com/auth/gmail.send, https://www.googleapis.com/auth/gmail.readonly. The gmail_user_id is typically me (authenticated user).postman/collections/messaging/telegram/collection.ref.yamlhttps://api.telegram.org/bot{token}/methodtelegram_bot_token, telegram_base_url, telegram_chat_idtelegram_chat_id is the target chat/channel ID.postman/collections/knowledge/google-drive/collection.ref.yamlgoogle_drive_access_token, google_drive_base_urldrive.readonly, drive.file, drive). Service account credentials can be used for server-to-server access without user interaction.postman/collections/knowledge/notion/collection.ref.yamlnotion_token, notion_base_url, notion_versionNotion-Version header — use {{notion_version}} (default: 2022-06-28). Pages must be shared with the integration to be accessible.postman/collections/knowledge/github/collection.ref.yamlgithub_token, github_base_url, github_owner, github_repoAuthorization: Bearer {token} or Authorization: token {token}. Set github_owner (username/org) and github_repo for repo-specific operations.postman/collections/knowledge/confluence/collection.ref.yamlconfluence_email, confluence_api_token, confluence_base_url, confluence_domainconfluence_domain to your Atlassian subdomain (e.g. mycompany).postman/collections/input/typeform/collection.ref.yamltypeform_token, typeform_base_urlAuthorization: Bearer {token}.postman/collections/input/jotform/collection.ref.yamljotform_api_key, jotform_base_url?apiKey={key} query parameter or as the APIKEY header. Generate your key at jotform.com/myaccount/api.postman/collections/input/tally/collection.ref.yamltally_access_token, tally_base_urlAuthorization: Bearer {token}.postman/collections/input/calendly/collection.ref.yamlcalendly_token, calendly_base_url, calendly_user_uricalendly_user_uri is your user's URI (e.g. https://api.calendly.com/users/{uuid}) — retrieve it from the /users/me endpoint.postman/collections/business/hubspot/collection.ref.yamlhubspot_token, hubspot_base_urlpostman/collections/business/stripe/collection.ref.yamlstripe_secret_key, stripe_base_urlsk_test_... for testing, sk_live_... for production). The collection uses HTTP Basic Auth with the secret key as the username and an empty password. Never expose secret keys in client-side code.postman/collections/business/clickup/collection.ref.yamlAuthorization header (no "Bearer" prefix)clickup_token, clickup_base_url, clickup_team_idAuthorization: {token} header (no "Bearer" prefix). The clickup_team_id (workspace ID) is required for most operations — find it in your ClickUp URL or via the /team endpoint. Note: ClickUp collections may already exist in your SEFTEC workspace — check before forking to avoid duplication.postman/collections/business/monday/collection.ref.yamlAuthorization headermonday_token, monday_base_urlAuthorization: {token} header. All requests are POST to a single GraphQL endpoint (https://api.monday.com/v2). Include the API-Version header for versioned access. This is a GraphQL API — use POST with query or mutation in the request body.When building out integrations, follow this order for maximum efficiency:
HubSpot → Stripe → ClickUp → Monday.com
Start with business systems because they define your core data model — contacts, deals, tasks, and projects. These APIs provide the "who" and "what" context that all other integrations reference.
GitHub → Notion → Google Drive → Confluence
Once business context is established, connect knowledge sources. These APIs let you ingest, store, and retrieve structured information.
Typeform → Calendly → Jotform → Tally
With business context and knowledge in place, add input collection to capture new data from users.
Slack → WhatsApp → Telegram → Gmail
Finally, add messaging to notify stakeholders and users about events from all previous integrations.
Used by: Slack, WhatsApp, Gmail, Notion, GitHub, Typeform, Tally, Calendly, HubSpot
Authorization: Bearer {{token_variable}}
The token is passed in the Authorization header with the Bearer prefix. Tokens are typically long-lived (API keys) or short-lived (OAuth2 access tokens).
In Postman: Set the collection/request auth type to Bearer Token and reference {{token_variable}}.
Used by: ClickUp, Monday.com
Authorization: {{token_variable}}
Similar to Bearer Token but without the Bearer prefix. The raw token is passed directly in the Authorization header.
In Postman: Use API Key auth type with key Authorization and value {{token_variable}}, or set it as a custom header.
Used by: Jotform, Telegram (bot token in URL path)
GET https://api.jotform.com/forms?apiKey={{jotform_api_key}}
GET https://api.telegram.org/bot{{telegram_bot_token}}/sendMessage
The key is embedded in the URL. For Telegram, the bot token is part of the URL path itself.
In Postman: Use API Key auth type with key apiKey and "Add to: Query Params", or embed directly in the URL.
Used by: Gmail, Google Drive
OAuth2 requires a multi-step flow:
Authorization: Bearer {token} headerIn Postman: Use the OAuth 2.0 auth type. Configure the authorization URL, token URL, client ID, client secret, and scopes. Use the Get New Access Token button to complete the flow.
For testing: Use Google OAuth2 Playground to obtain tokens manually.
Used by: Confluence, Stripe
Authorization: Basic base64(username:password)
In Postman: Use the Basic Auth auth type. Enter username and password — Postman handles the Base64 encoding automatically.
Used by: Telegram
https://api.telegram.org/bot{{telegram_bot_token}}/sendMessage
The token is embedded directly in the URL path after /bot. This is unique to the Telegram Bot API.
In Postman: Include {{telegram_bot_token}} directly in the URL. No separate auth configuration needed.
In Postman, variables are referenced using double curly braces:
{{variable_name}}
Examples:
{{slack_base_url}}/chat.postMessageBearer {{slack_token}}{"channel": "{{slack_channel_id}}"}Third-Party APIs environment is defined in postman/environments/third-party-apis.env.yaml| Type | Description | Use for |
|------|-------------|---------|
| default | Plain text, visible | Base URLs, non-sensitive config |
| secret | Masked in UI | API keys, tokens, passwords |
Third-Party APIs environmentSome collections define their own variables in postman/collections/{category}/.resources/definition.yaml. These take lower precedence than environment variables — environment variables always win.
When an AI agent (Claude, Cursor, Copilot, etc.) is working with this repository, follow these guidelines:
Always read this file (SKILL.md) at the project root before performing any API integration work. It contains the authoritative reference for all 16 APIs, auth patterns, and variable names.
For any specific API, read the corresponding collection.ref.yaml:
postman/collections/{category}/{api}/collection.ref.yaml
Example:
postman/collections/messaging/slack/collection.ref.yaml
postman/collections/business/stripe/collection.ref.yaml
postman/collections/knowledge/notion/collection.ref.yaml
The ref file contains:
postman_collection_id — use to fork the collectionauth_type — how to authenticatebase_url_var — the {{variable}} to use for the base URLtoken_var — the {{variable}} to use for the auth tokennotes — important caveats and setup instructionsAlways reference credentials via {{variable_name}} syntax. Never hardcode API keys, tokens, or secrets.
The canonical variable names are defined in:
postman/environments/third-party-apis.env.yaml
When setting up a new API integration:
postman_collection_id from the collection.ref.yamlhttps://www.postman.com/{workspace}/collection/{id}Third-Party APIs environmentFor APIs without a postman_collection_id (Gmail, Jotform, Tally), use the rest_api_docs URL to build requests manually.
# ✅ CORRECT — use variable syntax
url: '{{slack_base_url}}/chat.postMessage'
headers:
- key: Authorization
value: 'Bearer {{slack_token}}'
# ❌ WRONG — never hardcode
url: 'https://slack.com/api/chat.postMessage'
headers:
- key: Authorization
value: 'Bearer xoxb-1234567890-abcdefghij'
When building new integrations, follow the Recommended Integration Order:
# Find which variable to use for a specific API
grep -r "token_var" postman/collections/messaging/
# Check all APIs in a category
ls postman/collections/business/
# Find all OAuth2 APIs
grep -r "auth_type: oauth2" postman/collections/
# Find all APIs without a Postman collection
grep -r "postman_collection_id: null" postman/collections/
# Check what variables are needed for an API
cat postman/collections/knowledge/notion/collection.ref.yaml
onasis-gateway/
├── SKILL.md ← You are here — agent/IDE skill guide
├── CLAUDE.md ← Claude Code guidance
├── postman/
│ ├── collections/
│ │ ├── README.md ← Master index of all 16 APIs
│ │ ├── messaging/
│ │ │ ├── slack/
│ │ │ │ └── collection.ref.yaml
│ │ │ ├── whatsapp/
│ │ │ │ └── collection.ref.yaml
│ │ │ ├── gmail/
│ │ │ │ └── collection.ref.yaml
│ │ │ └── telegram/
│ │ │ └── collection.ref.yaml
│ │ ├── knowledge/
│ │ │ ├── google-drive/
│ │ │ │ └── collection.ref.yaml
│ │ │ ├── notion/
│ │ │ │ └── collection.ref.yaml
│ │ │ ├── github/
│ │ │ │ └── collection.ref.yaml
│ │ │ └── confluence/
│ │ │ └── collection.ref.yaml
│ │ ├── input/
│ │ │ ├── typeform/
│ │ │ │ └── collection.ref.yaml
│ │ │ ├── jotform/
│ │ │ │ └── collection.ref.yaml
│ │ │ ├── tally/
│ │ │ │ └── collection.ref.yaml
│ │ │ └── calendly/
│ │ │ └── collection.ref.yaml
│ │ └── business/
│ │ ├── hubspot/
│ │ │ └── collection.ref.yaml
│ │ ├── stripe/
│ │ │ └── collection.ref.yaml
│ │ ├── clickup/
│ │ │ └── collection.ref.yaml
│ │ └── monday/
│ │ └── collection.ref.yaml
│ ├── environments/
│ │ └── third-party-apis.env.yaml ← All 16 API credential variables
│ ├── flows/ ← Postman Flows (visual API workflows)
│ ├── globals/
│ │ └── workspace.globals.yaml
│ ├── mocks/ ← Local mock servers
│ ├── sdks/ ← Generated SDKs
│ └── specs/ ← OpenAPI specifications
├── src/
│ └── adapters/ ← Generated API adapters
├── services/ ← Extracted service configurations
├── mcp-server/ ← MCP protocol server
├── core/ ← Base client and utilities
└── database/ ← Migration files
| File | Purpose |
|------|---------|
| SKILL.md | This file — primary agent reference |
| CLAUDE.md | Claude Code specific guidance |
| postman/collections/README.md | Master index with all API links |
| postman/environments/third-party-apis.env.yaml | All credential variable names |
| postman/collections/{category}/{api}/collection.ref.yaml | Per-API specs and auth info |
# Messaging
slack_token, slack_base_url
whatsapp_token, whatsapp_base_url, whatsapp_phone_number_id
gmail_access_token, gmail_base_url, gmail_user_id
telegram_bot_token, telegram_base_url, telegram_chat_id
# Knowledge
google_drive_access_token, google_drive_base_url
notion_token, notion_base_url, notion_version
github_token, github_base_url, github_owner, github_repo
confluence_email, confluence_api_token, confluence_base_url, confluence_domain
# Input
typeform_token, typeform_base_url
jotform_api_key, jotform_base_url
tally_access_token, tally_base_url
calendly_token, calendly_base_url, calendly_user_uri
# Business
hubspot_token, hubspot_base_url
stripe_secret_key, stripe_base_url
clickup_token, clickup_base_url, clickup_team_id
monday_token, monday_base_url
https://api.monday.com/v2 with GraphQL query/mutation in bodyLast updated: 2025 | Onasis Gateway v1
data-ai
Guardrails for edits to core/versioning/version-manager.js covering semver validation, deprecation, migrations, and compatibility rules. Use when changing version registration or migration handling.
tools
Guardrails for edits to core/abstraction/vendor-abstraction.js that preserve vendor isolation, mappings, fallback selection, and stable client-facing schemas. Use when adding/removing vendors, operations, or schema fields.
tools
Use this skill when adding new methods, tools, or schema changes to the `@lanonasis/mem-intel-sdk`. Trigger when the user wants to extend the SDK with new capabilities, add a new MCP tool to mcp-core, add a new intelligence endpoint, or migrate the behavior_patterns schema. Also trigger when the user says things like "add a new tool to the SDK", "extend mem-intel-sdk", "add behavior X to the MCP server", or "update the SDK schema." Do NOT use for general behavior pattern recording/recall — use the behavior-memory skill for that.
data-ai
Guardrails for edits to core/monitoring/metrics-collector.js to preserve Prometheus metric names, labels, cardinality limits, and emission patterns. Use when adding or changing metrics or collectors.