Claude Cursor Skill

api-gateway

Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by [Maton](https://maton.ai). The API gateway lets y

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download aaaaqwq-agi-super-team-skills_api-gateway-cdb04e8.zip · 220 KB
Part of aaaaqwq/agi-super-team — 46 skills

Install

skills CLI npx skills add https://github.com/aAAaqwq/AGI-Super-Team/tree/main/skills/api-gateway
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install aaaaqwq-agi-super-team@llmmart
Git git clone https://github.com/aAAaqwq/AGI-Super-Team.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole aaaaqwq/agi-super-team collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

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

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": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
    "status": "ACTIVE",
    "creation_time": "2025-12-08T07:20:53.488460Z",
    "last_updated_time": "2026-01-31T20:03:32.593153Z",
    "url": "https://connect.maton.ai/?session_token=5e9...",
    "app": "slack",
    "metadata": {}
  }
}

Open the returned URL in a browser to complete OAuth.

Delete Connection

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

Specifying Connection

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

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

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

Supported Services

Service App Name Base URL Proxied
ActiveCampaign active-campaign {account}.api-us1.com
Acuity Scheduling acuity-scheduling acuityscheduling.com
Airtable airtable api.airtable.com
Apollo apollo api.apollo.io
Asana asana app.asana.com
Attio attio api.attio.com
Basecamp basecamp 3.basecampapi.com
Baserow baserow api.baserow.io
beehiiv beehiiv api.beehiiv.com
Box box api.box.com
Brevo brevo api.brevo.com
Calendly calendly api.calendly.com
Cal.com cal-com api.cal.com
CallRail callrail api.callrail.com
Chargebee chargebee {subdomain}.chargebee.com
ClickFunnels clickfunnels {subdomain}.myclickfunnels.com
ClickSend clicksend rest.clicksend.com
ClickUp clickup api.clickup.com
Clockify clockify api.clockify.me
Coda coda coda.io
Confluence confluence api.atlassian.com
CompanyCam companycam api.companycam.com
Cognito Forms cognito-forms www.cognitoforms.com
Constant Contact constant-contact api.cc.email
Dropbox dropbox api.dropboxapi.com
Dropbox Business dropbox-business api.dropboxapi.com
ElevenLabs elevenlabs api.elevenlabs.io
Eventbrite eventbrite www.eventbriteapi.com
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 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
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
  • 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
  • Xero - Contacts, invoices, reports
  • YouTube - Videos, playlists, channels, subscriptions
  • Zoho Bigin - Contacts, companies, pipelines, products
  • Zoho Bookings - Appointments, services, staff, workspaces
  • Zoho Books - Invoices, contacts, bills, expenses
  • Zoho Calendar - Calendars, events, attendees, reminders
  • Zoho CRM - Leads, contacts, accounts, deals, search
  • Zoho Inventory - Items, sales orders, invoices, purchase orders, bills
  • Zoho Mail - Messages, folders, labels, attachments
  • Zoho People - Employees, departments, designations, attendance, leave
  • Zoho Projects - Projects, tasks, milestones, tasklists, comments
  • Zoho Recruit - Candidates, job openings, interviews, applications

Examples

Slack - Post Message (Native API)

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

HubSpot - Create Contact (Native API)

# Native HubSpot API: POST https://api.hubapi.com/crm/v3/objects/contacts
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'properties': {'email': 'john@example.com', 'firstname': 'John', 'lastname': 'Doe'}}).encode()
req = urllib.request.Request('https://gateway.maton.ai/hubspot/crm/v3/objects/contacts', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Google Sheets - Get Spreadsheet Values (Native API)

# Native Sheets API: GET https://sheets.googleapis.com/v4/spreadsheets/{id}/values/{range}
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/google-sheets/v4/spreadsheets/122BS1sFN2RKL8AOUQjkLdubzOwgqzPT64KfZ2rvYI4M/values/Sheet1!A1:B2')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Salesforce - SOQL Query (Native API)

# Native Salesforce API: GET https://{instance}.salesforce.com/services/data/v64.0/query?q=...
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/salesforce/services/data/v64.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Airtable - List Tables (Native API)

# Native Airtable API: GET https://api.airtable.com/v0/meta/bases/{id}/tables
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/airtable/v0/meta/bases/appgqan2NzWGP5sBK/tables')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Notion - Query Database (Native API)

# Native Notion API: POST https://api.notion.com/v1/data_sources/{id}/query
python <<'EOF'
import urllib.request, os, json
data = json.dumps({}).encode()
req = urllib.request.Request('https://gateway.maton.ai/notion/v1/data_sources/23702dc5-9a3b-8001-9e1c-000b5af0a980/query', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Notion-Version', '2025-09-03')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Stripe - List Customers (Native API)

# Native Stripe API: GET https://api.stripe.com/v1/customers
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/stripe/v1/customers?limit=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Code Examples

JavaScript (Node.js)

const response = await fetch('https://gateway.maton.ai/slack/api/chat.postMessage', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${process.env.MATON_API_KEY}`
  },
  body: JSON.stringify({ channel: 'C0123456', text: 'Hello!' })
});

Python

import os
import requests

response = requests.post(
    'https://gateway.maton.ai/slack/api/chat.postMessage',
    headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
    json={'channel': 'C0123456', 'text': 'Hello!'}
)

Error Handling

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

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

Troubleshooting: API Key Issues

  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

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

Files (agi-super-team)
  • references
    • active-campaign
      • README.md 3.2 KB
        # ActiveCampaign Routing Reference
        
        **App name:** `active-campaign`
        **Base URL proxied:** `{account}.api-us1.com`
        
        ## API Path Pattern
        
        ```
        /active-campaign/api/3/{resource}
        ```
        
        ## Common Endpoints
        
        ### Contacts
        
        #### List Contacts
        ```bash
        GET /active-campaign/api/3/contacts
        ```
        
        #### Get Contact
        ```bash
        GET /active-campaign/api/3/contacts/{contactId}
        ```
        
        #### Create Contact
        ```bash
        POST /active-campaign/api/3/contacts
        Content-Type: application/json
        
        {
          "contact": {
            "email": "user@example.com",
            "firstName": "John",
            "lastName": "Doe"
          }
        }
        ```
        
        #### Update Contact
        ```bash
        PUT /active-campaign/api/3/contacts/{contactId}
        ```
        
        #### Delete Contact
        ```bash
        DELETE /active-campaign/api/3/contacts/{contactId}
        ```
        
        ### Tags
        
        #### List Tags
        ```bash
        GET /active-campaign/api/3/tags
        ```
        
        #### Create Tag
        ```bash
        POST /active-campaign/api/3/tags
        Content-Type: application/json
        
        {
          "tag": {
            "tag": "Tag Name",
            "tagType": "contact"
          }
        }
        ```
        
        ### Contact Tags
        
        #### Add Tag to Contact
        ```bash
        POST /active-campaign/api/3/contactTags
        Content-Type: application/json
        
        {
          "contactTag": {
            "contact": "1",
            "tag": "1"
          }
        }
        ```
        
        #### Remove Tag from Contact
        ```bash
        DELETE /active-campaign/api/3/contactTags/{contactTagId}
        ```
        
        ### Lists
        
        #### List All Lists
        ```bash
        GET /active-campaign/api/3/lists
        ```
        
        #### Create List
        ```bash
        POST /active-campaign/api/3/lists
        ```
        
        ### Deals
        
        #### List Deals
        ```bash
        GET /active-campaign/api/3/deals
        ```
        
        #### Create Deal
        ```bash
        POST /active-campaign/api/3/deals
        Content-Type: application/json
        
        {
          "deal": {
            "title": "New Deal",
            "value": "10000",
            "currency": "usd",
            "contact": "1",
            "stage": "1"
          }
        }
        ```
        
        ### Deal Stages & Pipelines
        
        #### List Deal Stages
        ```bash
        GET /active-campaign/api/3/dealStages
        ```
        
        #### List Pipelines (Deal Groups)
        ```bash
        GET /active-campaign/api/3/dealGroups
        ```
        
        ### Automations
        
        #### List Automations
        ```bash
        GET /active-campaign/api/3/automations
        ```
        
        ### Campaigns
        
        #### List Campaigns
        ```bash
        GET /active-campaign/api/3/campaigns
        ```
        
        ### Users
        
        #### List Users
        ```bash
        GET /active-campaign/api/3/users
        ```
        
        ### Accounts
        
        #### List Accounts
        ```bash
        GET /active-campaign/api/3/accounts
        ```
        
        ### Custom Fields
        
        #### List Fields
        ```bash
        GET /active-campaign/api/3/fields
        ```
        
        ### Notes
        
        #### List Notes
        ```bash
        GET /active-campaign/api/3/notes
        ```
        
        ### Webhooks
        
        #### List Webhooks
        ```bash
        GET /active-campaign/api/3/webhooks
        ```
        
        ## Pagination
        
        Uses offset-based pagination:
        
        ```bash
        GET /active-campaign/api/3/contacts?limit=20&offset=0
        ```
        
        **Parameters:**
        - `limit` - Results per page (default: 20)
        - `offset` - Starting index
        
        Response includes meta with total:
        ```json
        {
          "contacts": [...],
          "meta": {
            "total": "150"
          }
        }
        ```
        
        ## Notes
        
        - All endpoints require `/api/3/` prefix
        - Request bodies use singular resource names (e.g., `{"contact": {...}}`)
        - IDs returned as strings
        - Rate limit: 5 requests per second per account
        - DELETE returns 200 OK (not 204)
        
        ## Resources
        
        - [ActiveCampaign API Overview](https://developers.activecampaign.com/reference/overview)
        - [Developer Portal](https://developers.activecampaign.com/)
        - [Contacts API](https://developers.activecampaign.com/reference/list-all-contacts)
        
    • acuity-scheduling
      • README.md 3 KB
        # Acuity Scheduling Routing Reference
        
        **App name:** `acuity-scheduling`
        **Base URL proxied:** `acuityscheduling.com`
        
        ## API Path Pattern
        
        ```
        /acuity-scheduling/api/v1/{resource}
        ```
        
        The gateway automatically prepends `/api/v1` when proxying to Acuity.
        
        ## Common Endpoints
        
        ### Get Account Info
        ```bash
        GET /acuity-scheduling/api/v1/me
        ```
        
        ### List Appointments
        ```bash
        GET /acuity-scheduling/api/v1/appointments?max=100&minDate=2026-02-01
        ```
        
        ### Get Appointment
        ```bash
        GET /acuity-scheduling/api/v1/appointments/{id}
        ```
        
        ### Create Appointment
        ```bash
        POST /acuity-scheduling/api/v1/appointments
        Content-Type: application/json
        
        {
          "datetime": "2026-02-15T09:00",
          "appointmentTypeID": 123,
          "firstName": "John",
          "lastName": "Doe",
          "email": "john@example.com"
        }
        ```
        
        ### Update Appointment
        ```bash
        PUT /acuity-scheduling/api/v1/appointments/{id}
        Content-Type: application/json
        
        {
          "firstName": "Jane",
          "lastName": "Smith"
        }
        ```
        
        ### Cancel Appointment
        ```bash
        PUT /acuity-scheduling/api/v1/appointments/{id}/cancel
        ```
        
        ### Reschedule Appointment
        ```bash
        PUT /acuity-scheduling/api/v1/appointments/{id}/reschedule
        Content-Type: application/json
        
        {
          "datetime": "2026-02-20T10:00"
        }
        ```
        
        ### List Calendars
        ```bash
        GET /acuity-scheduling/api/v1/calendars
        ```
        
        ### List Appointment Types
        ```bash
        GET /acuity-scheduling/api/v1/appointment-types
        ```
        
        ### Get Available Dates
        ```bash
        GET /acuity-scheduling/api/v1/availability/dates?month=2026-02&appointmentTypeID=123
        ```
        
        ### Get Available Times
        ```bash
        GET /acuity-scheduling/api/v1/availability/times?date=2026-02-04&appointmentTypeID=123
        ```
        
        ### List Clients
        ```bash
        GET /acuity-scheduling/api/v1/clients?search=John
        ```
        
        ### Create Client
        ```bash
        POST /acuity-scheduling/api/v1/clients
        Content-Type: application/json
        
        {
          "firstName": "John",
          "lastName": "Doe",
          "email": "john@example.com"
        }
        ```
        
        ### List Blocks
        ```bash
        GET /acuity-scheduling/api/v1/blocks?calendarID=1234
        ```
        
        ### Create Block
        ```bash
        POST /acuity-scheduling/api/v1/blocks
        Content-Type: application/json
        
        {
          "start": "2026-02-15T12:00",
          "end": "2026-02-15T13:00",
          "calendarID": 1234
        }
        ```
        
        ### Delete Block
        ```bash
        DELETE /acuity-scheduling/api/v1/blocks/{id}
        ```
        
        ### List Forms
        ```bash
        GET /acuity-scheduling/api/v1/forms
        ```
        
        ### List Labels
        ```bash
        GET /acuity-scheduling/api/v1/labels
        ```
        
        ## Notes
        
        - Datetime values must be parseable by PHP's `strtotime()` function
        - Timezones use IANA format (e.g., "America/New_York")
        - Use `max` parameter to limit results (default: 100)
        - Use `minDate` and `maxDate` for date-range filtering
        - Client update/delete only works for clients with existing appointments
        - Rescheduling requires the new datetime to be an available time slot
        
        ## Resources
        
        - [Acuity Scheduling API Quick Start](https://developers.acuityscheduling.com/reference/quick-start)
        - [Appointments API](https://developers.acuityscheduling.com/reference/get-appointments)
        - [Availability API](https://developers.acuityscheduling.com/reference/get-availability-dates)
        - [OAuth2 Documentation](https://developers.acuityscheduling.com/docs/oauth2)
        
    • airtable
      • README.md 3 KB
        # Airtable Routing Reference
        
        **App name:** `airtable`
        **Base URL proxied:** `api.airtable.com`
        
        ## API Path Pattern
        
        ```
        /airtable/v0/{baseId}/{tableIdOrName}
        ```
        
        ## Common Endpoints
        
        ### List Records
        ```bash
        GET /airtable/v0/{baseId}/{tableIdOrName}?maxRecords=100
        ```
        
        With view:
        ```bash
        GET /airtable/v0/{baseId}/{tableIdOrName}?view=Grid%20view&maxRecords=100
        ```
        
        With filter formula:
        ```bash
        GET /airtable/v0/{baseId}/{tableIdOrName}?filterByFormula={Status}='Active'
        ```
        
        With field selection:
        ```bash
        GET /airtable/v0/{baseId}/{tableIdOrName}?fields[]=Name&fields[]=Status&fields[]=Email
        ```
        
        With sorting:
        ```bash
        GET /airtable/v0/{baseId}/{tableIdOrName}?sort[0][field]=Created&sort[0][direction]=desc
        ```
        
        ### Get Record
        ```bash
        GET /airtable/v0/{baseId}/{tableIdOrName}/{recordId}
        ```
        
        ### Create Records
        ```bash
        POST /airtable/v0/{baseId}/{tableIdOrName}
        Content-Type: application/json
        
        {
          "records": [
            {
              "fields": {
                "Name": "New Record",
                "Status": "Active",
                "Email": "test@example.com"
              }
            }
          ]
        }
        ```
        
        ### Update Records (PATCH - partial update)
        ```bash
        PATCH /airtable/v0/{baseId}/{tableIdOrName}
        Content-Type: application/json
        
        {
          "records": [
            {
              "id": "recXXXXXXXXXXXXXX",
              "fields": {
                "Status": "Completed"
              }
            }
          ]
        }
        ```
        
        ### Update Records (PUT - full replace)
        ```bash
        PUT /airtable/v0/{baseId}/{tableIdOrName}
        Content-Type: application/json
        
        {
          "records": [
            {
              "id": "recXXXXXXXXXXXXXX",
              "fields": {
                "Name": "Updated Name",
                "Status": "Active"
              }
            }
          ]
        }
        ```
        
        ### Delete Records
        ```bash
        DELETE /airtable/v0/{baseId}/{tableIdOrName}?records[]=recXXXXX&records[]=recYYYYY
        ```
        
        ### List Bases
        ```bash
        GET /airtable/v0/meta/bases
        ```
        
        ### Get Base Schema
        ```bash
        GET /airtable/v0/meta/bases/{baseId}/tables
        ```
        
        ## Pagination
        
        **Parameters:**
        - `pageSize` - Number of records per request (max 100, default 100)
        - `maxRecords` - Maximum total records across all pages
        - `offset` - Cursor for next page (returned in response)
        
        Response includes `offset` when more records exist:
        ```json
        {
          "records": [...],
          "offset": "itrXXXXXXXXXXX"
        }
        ```
        
        Use offset for next page:
        ```bash
        GET /airtable/v0/{baseId}/{tableIdOrName}?pageSize=50&offset=itrXXXXXXXXXXX
        ```
        
        ## Notes
        
        - Authentication is automatic via OAuth
        - Base IDs start with `app`
        - Table IDs start with `tbl` (can also use table name)
        - Record IDs start with `rec`
        - Maximum 100 records per request for create/update
        - Maximum 10 records per delete request
        - Filter formulas use Airtable formula syntax
        
        ## Resources
        
        - [API Overview](https://airtable.com/developers/web/api/introduction)
        - [List Records](https://airtable.com/developers/web/api/list-records)
        - [Create Records](https://airtable.com/developers/web/api/create-records)
        - [Update Records](https://airtable.com/developers/web/api/update-record)
        - [Delete Records](https://airtable.com/developers/web/api/delete-record)
        - [Formula Reference](https://support.airtable.com/docs/formula-field-reference)
    • apollo
      • README.md 4 KB
        # Apollo Routing Reference
        
        **App name:** `apollo`
        **Base URL proxied:** `api.apollo.io`
        
        ## API Path Pattern
        
        ```
        /apollo/v1/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### People
        
        #### Search People
        ```bash
        POST /apollo/v1/mixed_people/api_search
        Content-Type: application/json
        
        {
          "q_organization_name": "Google",
          "page": 1,
          "per_page": 25
        }
        ```
        
        #### Get Person
        ```bash
        GET /apollo/v1/people/{personId}
        ```
        
        #### Enrich Person
        ```bash
        POST /apollo/v1/people/match
        Content-Type: application/json
        
        {
          "email": "john@example.com"
        }
        ```
        
        Or by LinkedIn:
        ```bash
        POST /apollo/v1/people/match
        Content-Type: application/json
        
        {
          "linkedin_url": "https://linkedin.com/in/johndoe"
        }
        ```
        
        ### Organizations
        
        #### Search Organizations
        ```bash
        POST /apollo/v1/organizations/search
        Content-Type: application/json
        
        {
          "q_organization_name": "Google",
          "page": 1,
          "per_page": 25
        }
        ```
        
        #### Enrich Organization
        ```bash
        POST /apollo/v1/organizations/enrich
        Content-Type: application/json
        
        {
          "domain": "google.com"
        }
        ```
        
        ### Contacts
        
        #### Search Contacts
        ```bash
        POST /apollo/v1/contacts/search
        Content-Type: application/json
        
        {
          "page": 1,
          "per_page": 25
        }
        ```
        
        #### Create Contact
        ```bash
        POST /apollo/v1/contacts
        Content-Type: application/json
        
        {
          "first_name": "John",
          "last_name": "Doe",
          "email": "john@example.com",
          "organization_name": "Acme Corp"
        }
        ```
        
        #### Update Contact
        ```bash
        PUT /apollo/v1/contacts/{contactId}
        Content-Type: application/json
        
        {
          "first_name": "Jane"
        }
        ```
        
        ### Accounts
        
        #### Search Accounts
        ```bash
        POST /apollo/v1/accounts/search
        Content-Type: application/json
        
        {
          "page": 1,
          "per_page": 25
        }
        ```
        
        #### Create Account
        ```bash
        POST /apollo/v1/accounts
        Content-Type: application/json
        
        {
          "name": "Acme Corp",
          "domain": "acme.com"
        }
        ```
        
        ### Sequences
        
        #### Search Sequences
        ```bash
        POST /apollo/v1/emailer_campaigns/search
        Content-Type: application/json
        
        {
          "page": 1,
          "per_page": 25
        }
        ```
        
        #### Add Contact to Sequence
        ```bash
        POST /apollo/v1/emailer_campaigns/{campaignId}/add_contact_ids
        Content-Type: application/json
        
        {
          "contact_ids": ["contact_id_1", "contact_id_2"]
        }
        ```
        
        ### Email
        
        #### Search Email Messages
        ```bash
        POST /apollo/v1/emailer_messages/search
        Content-Type: application/json
        
        {
          "contact_id": "{contactId}"
        }
        ```
        
        ### Labels
        
        #### List Labels
        ```bash
        GET /apollo/v1/labels
        ```
        
        ## Search Filters
        
        Common search parameters:
        - `q_organization_name` - Company name
        - `q_person_title` - Job title
        - `person_locations` - Array of locations
        - `organization_num_employees_ranges` - Employee count ranges
        - `q_keywords` - General keyword search
        
        ## Notes
        
        - Authentication is automatic - the router injects the API key
        - Pagination uses `page` and `per_page` parameters in POST body
        - Most list endpoints use POST with `/search` suffix (not GET)
        - Email enrichment consumes credits
        - Rate limits apply per endpoint
        - `people/search` and `mixed_people/search` are deprecated - use `mixed_people/api_search` instead
        
        ## Resources
        
        - [API Overview](https://docs.apollo.io/reference/introduction)
        - [Search People](https://docs.apollo.io/reference/people-api-search.md)
        - [Enrich Person](https://docs.apollo.io/reference/people-enrichment.md)
        - [Search Organizations](https://docs.apollo.io/reference/organization-search.md)
        - [Enrich Organization](https://docs.apollo.io/reference/organization-enrichment.md)
        - [Search Contacts](https://docs.apollo.io/reference/search-for-contacts.md)
        - [Create Contact](https://docs.apollo.io/reference/create-a-contact.md)
        - [Update Contact](https://docs.apollo.io/reference/update-a-contact.md)
        - [Search Accounts](https://docs.apollo.io/reference/search-for-accounts.md)
        - [Create Account](https://docs.apollo.io/reference/create-an-account.md)
        - [Search Sequences](https://docs.apollo.io/reference/search-for-sequences.md)
        - [Add Contacts to Sequence](https://docs.apollo.io/reference/add-contacts-to-sequence.md)
        - [Search Email Messages](https://docs.apollo.io/reference/search-for-outreach-emails.md)
        - [List Labels](https://docs.apollo.io/reference/get-a-list-of-all-lists.md)
        - [LLM Reference](https://docs.apollo.io/llms.txt)
    • asana
      • README.md 2.7 KB
        # Asana Routing Reference
        
        **App name:** `asana`
        **Base URL proxied:** `app.asana.com`
        
        ## API Path Pattern
        
        ```
        /asana/api/1.0/{resource}
        ```
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /asana/api/1.0/users/me
        ```
        
        ### List Workspaces
        ```bash
        GET /asana/api/1.0/workspaces
        ```
        
        ### List Tasks
        ```bash
        GET /asana/api/1.0/tasks?project=PROJECT_GID&opt_fields=name,completed,due_on
        ```
        
        ### Get a Task
        ```bash
        GET /asana/api/1.0/tasks/{task_gid}
        ```
        
        ### Create a Task
        ```bash
        POST /asana/api/1.0/tasks
        Content-Type: application/json
        
        {
          "data": {
            "name": "New task",
            "projects": ["PROJECT_GID"],
            "assignee": "USER_GID",
            "due_on": "2025-03-20",
            "notes": "Task description"
          }
        }
        ```
        
        ### Update a Task
        ```bash
        PUT /asana/api/1.0/tasks/{task_gid}
        Content-Type: application/json
        
        {
          "data": {
            "completed": true
          }
        }
        ```
        
        ### Delete a Task
        ```bash
        DELETE /asana/api/1.0/tasks/{task_gid}
        ```
        
        ### Get Subtasks
        ```bash
        GET /asana/api/1.0/tasks/{task_gid}/subtasks
        ```
        
        ### Create Subtask
        ```bash
        POST /asana/api/1.0/tasks/{task_gid}/subtasks
        Content-Type: application/json
        
        {
          "data": {
            "name": "Subtask name"
          }
        }
        ```
        
        ### List Projects
        ```bash
        GET /asana/api/1.0/projects?workspace=WORKSPACE_GID&opt_fields=name,owner,due_date
        ```
        
        ### Get a Project
        ```bash
        GET /asana/api/1.0/projects/{project_gid}
        ```
        
        ### Create a Project
        ```bash
        POST /asana/api/1.0/projects
        Content-Type: application/json
        
        {
          "data": {
            "name": "New Project",
            "workspace": "WORKSPACE_GID"
          }
        }
        ```
        
        ### List Users in Workspace
        ```bash
        GET /asana/api/1.0/workspaces/{workspace_gid}/users?opt_fields=name,email
        ```
        
        ### Create Webhook
        ```bash
        POST /asana/api/1.0/webhooks
        Content-Type: application/json
        
        {
          "data": {
            "resource": "PROJECT_OR_TASK_GID",
            "target": "https://example.com/webhook",
            "filters": [
              {
                "resource_type": "task",
                "action": "changed",
                "fields": ["completed", "due_on"]
              }
            ]
          }
        }
        ```
        
        ### Delete Webhook
        ```bash
        DELETE /asana/api/1.0/webhooks/{webhook_gid}
        ```
        
        ## Notes
        
        - Resource IDs (GIDs) are strings
        - Timestamps are in ISO 8601 format
        - Use `opt_fields` to specify which fields to return in responses
        - Workspaces are the highest-level organizational unit
        - Use cursor-based pagination with `offset` parameter
        - Webhook creation requires the target URL to respond with 200 status
        
        ## Resources
        
        - [Asana API Overview](https://developers.asana.com)
        - [API Reference](https://developers.asana.com/reference)
        - [Tasks](https://developers.asana.com/reference/tasks)
        - [Projects](https://developers.asana.com/reference/projects)
        - [Workspaces](https://developers.asana.com/reference/workspaces)
        - [Webhooks](https://developers.asana.com/reference/webhooks)
        - [LLM Reference](https://developers.asana.com/llms.txt)
        
    • attio
      • README.md 4.8 KB
        # Attio Routing Reference
        
        **App name:** `attio`
        **Base URL proxied:** `api.attio.com`
        
        ## API Path Pattern
        
        ```
        /attio/v2/{resource}
        ```
        
        ## Common Endpoints
        
        ### List Objects
        ```bash
        GET /attio/v2/objects
        ```
        
        ### Get Object
        ```bash
        GET /attio/v2/objects/{object}
        ```
        
        ### List Attributes
        ```bash
        GET /attio/v2/objects/{object}/attributes
        ```
        
        ### Query Records
        ```bash
        POST /attio/v2/objects/{object}/records/query
        Content-Type: application/json
        
        {
          "limit": 50,
          "offset": 0
        }
        ```
        
        ### Get Record
        ```bash
        GET /attio/v2/objects/{object}/records/{record_id}
        ```
        
        ### Create Record
        ```bash
        POST /attio/v2/objects/{object}/records
        Content-Type: application/json
        
        {
          "data": {
            "values": {
              "name": [{"first_name": "John", "last_name": "Doe", "full_name": "John Doe"}],
              "email_addresses": ["john@example.com"]
            }
          }
        }
        ```
        
        ### Update Record
        ```bash
        PATCH /attio/v2/objects/{object}/records/{record_id}
        Content-Type: application/json
        
        {
          "data": {
            "values": {
              "job_title": "Engineer"
            }
          }
        }
        ```
        
        ### Delete Record
        ```bash
        DELETE /attio/v2/objects/{object}/records/{record_id}
        ```
        
        ### List Tasks
        ```bash
        GET /attio/v2/tasks?limit=50
        ```
        
        ### Create Task
        ```bash
        POST /attio/v2/tasks
        Content-Type: application/json
        
        {
          "data": {
            "content": "Task description",
            "format": "plaintext",
            "deadline_at": null,
            "assignees": [],
            "linked_records": []
          }
        }
        ```
        
        ### List Workspace Members
        ```bash
        GET /attio/v2/workspace_members
        ```
        
        ### Identify Self
        ```bash
        GET /attio/v2/self
        ```
        
        ### Notes
        
        #### List Notes
        ```bash
        GET /attio/v2/notes?limit=50&parent_object={object}&parent_record_id={record_id}
        ```
        
        #### Get Note
        ```bash
        GET /attio/v2/notes/{note_id}
        ```
        
        #### Create Note
        ```bash
        POST /attio/v2/notes
        Content-Type: application/json
        
        {
          "data": {
            "format": "plaintext",
            "title": "Meeting Summary",
            "content": "Note content here",
            "parent_object": "companies",
            "parent_record_id": "{record_id}",
            "created_by_actor": {
              "type": "workspace-member",
              "id": "{workspace_member_id}"
            }
          }
        }
        ```
        
        #### Delete Note
        ```bash
        DELETE /attio/v2/notes/{note_id}
        ```
        
        ### Comments
        
        #### Create Comment on Record
        ```bash
        POST /attio/v2/comments
        Content-Type: application/json
        
        {
          "data": {
            "format": "plaintext",
            "content": "Comment text",
            "author": {
              "type": "workspace-member",
              "id": "{workspace_member_id}"
            },
            "record": {
              "object": "companies",
              "record_id": "{record_id}"
            }
          }
        }
        ```
        
        #### Reply to Comment Thread
        ```bash
        POST /attio/v2/comments
        Content-Type: application/json
        
        {
          "data": {
            "format": "plaintext",
            "content": "This is a reply",
            "author": {
              "type": "workspace-member",
              "id": "{workspace_member_id}"
            },
            "thread_id": "{thread_id}"
          }
        }
        ```
        
        ### Lists
        
        #### List All Lists
        ```bash
        GET /attio/v2/lists
        ```
        
        #### Get List
        ```bash
        GET /attio/v2/lists/{list_id}
        ```
        
        ### List Entries
        
        #### Query List Entries
        ```bash
        POST /attio/v2/lists/{list}/entries/query
        Content-Type: application/json
        
        {
          "limit": 50,
          "offset": 0
        }
        ```
        
        #### Create List Entry
        ```bash
        POST /attio/v2/lists/{list}/entries
        Content-Type: application/json
        
        {
          "data": {
            "parent_record_id": "{record_id}",
            "parent_object": "companies",
            "entry_values": {}
          }
        }
        ```
        
        #### Get List Entry
        ```bash
        GET /attio/v2/lists/{list}/entries/{entry_id}
        ```
        
        #### Update List Entry
        ```bash
        PATCH /attio/v2/lists/{list}/entries/{entry_id}
        Content-Type: application/json
        
        {
          "data": {
            "entry_values": {
              "status": "Active"
            }
          }
        }
        ```
        
        #### Delete List Entry
        ```bash
        DELETE /attio/v2/lists/{list}/entries/{entry_id}
        ```
        
        ### Meetings
        
        #### List Meetings
        ```bash
        GET /attio/v2/meetings?limit=50
        ```
        
        #### Get Meeting
        ```bash
        GET /attio/v2/meetings/{meeting_id}
        ```
        
        ### Call Recordings
        
        #### List Call Recordings for Meeting
        ```bash
        GET /attio/v2/meetings/{meeting_id}/call_recordings?limit=50
        ```
        
        #### Get Call Recording
        ```bash
        GET /attio/v2/meetings/{meeting_id}/call_recordings/{call_recording_id}
        ```
        
        ## Usage Notes
        
        - Object slugs are lowercase snake_case (e.g., `people`, `companies`)
        - Record IDs are UUIDs
        - For personal-name attributes, include `full_name` when creating records
        - Task creation requires `format`, `deadline_at`, `assignees`, and `linked_records` fields
        - Note creation requires `format`, `content`, `parent_object`, and `parent_record_id`
        - Comment creation requires `format`, `content`, `author`, plus one of `record`, `entry`, or `thread_id`
        - Meetings use cursor-based pagination
        - Rate limits: 100 read/sec, 25 write/sec
        - Pagination uses `limit` and `offset` parameters (or `cursor` for meetings)
        
        ## Resources
        
        - [Attio API Overview](https://docs.attio.com/rest-api/overview)
        - [Attio API Reference](https://docs.attio.com/rest-api/endpoint-reference)
        - [Records API](https://docs.attio.com/rest-api/endpoint-reference/records)
        
    • basecamp
      • README.md 2.8 KB
        # Basecamp Routing Reference
        
        **App name:** `basecamp`
        **Base URL proxied:** `3.basecampapi.com/{account_id}`
        
        Note: The gateway automatically injects the account ID from the OAuth connection.
        
        ## API Path Pattern
        
        ```
        /basecamp/{resource}.json
        ```
        
        All paths must end with `.json`.
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /basecamp/my/profile.json
        ```
        
        ### List People
        ```bash
        GET /basecamp/people.json
        ```
        
        ### List Projects
        ```bash
        GET /basecamp/projects.json
        ```
        
        ### Get Project
        ```bash
        GET /basecamp/projects/{project_id}.json
        ```
        
        Returns project with `dock` array containing tool IDs.
        
        ### Create Project
        ```bash
        POST /basecamp/projects.json
        Content-Type: application/json
        
        {
          "name": "Project Name",
          "description": "Description"
        }
        ```
        
        ### Get Todoset
        ```bash
        GET /basecamp/buckets/{project_id}/todosets/{todoset_id}.json
        ```
        
        ### List Todolists
        ```bash
        GET /basecamp/buckets/{project_id}/todosets/{todoset_id}/todolists.json
        ```
        
        ### List Todos
        ```bash
        GET /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json
        ```
        
        ### Create Todo
        ```bash
        POST /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json
        Content-Type: application/json
        
        {
          "content": "Todo content",
          "due_on": "2026-02-15",
          "assignee_ids": [123]
        }
        ```
        
        ### Complete Todo
        ```bash
        POST /basecamp/buckets/{project_id}/todos/{todo_id}/completion.json
        ```
        
        ### Get Message Board
        ```bash
        GET /basecamp/buckets/{project_id}/message_boards/{message_board_id}.json
        ```
        
        ### List Messages
        ```bash
        GET /basecamp/buckets/{project_id}/message_boards/{message_board_id}/messages.json
        ```
        
        ### Get Schedule
        ```bash
        GET /basecamp/buckets/{project_id}/schedules/{schedule_id}.json
        ```
        
        ### List Schedule Entries
        ```bash
        GET /basecamp/buckets/{project_id}/schedules/{schedule_id}/entries.json
        ```
        
        ### Get Vault (Documents)
        ```bash
        GET /basecamp/buckets/{project_id}/vaults/{vault_id}.json
        ```
        
        ### List Documents
        ```bash
        GET /basecamp/buckets/{project_id}/vaults/{vault_id}/documents.json
        ```
        
        ### List Campfires
        ```bash
        GET /basecamp/chats.json
        ```
        
        ### Trash Recording
        ```bash
        PUT /basecamp/buckets/{project_id}/recordings/{recording_id}/status/trashed.json
        ```
        
        ## Key Concepts
        
        - **Bucket**: Project content container (bucket_id = project_id)
        - **Dock**: Per-project tool list with `id`, `name`, `enabled`
        - **Recording**: Any content item (todos, messages, documents)
        
        ## Pagination
        
        Uses `Link` header with `rel="next"`:
        ```
        Link: <url>; rel="next"
        X-Total-Count: 150
        ```
        
        ## Notes
        
        - All paths must end with `.json`
        - Gateway injects account ID automatically
        - Uses Basecamp 4 API (bc3-api)
        - Rate limit: ~50 requests per 10 seconds per IP
        - Check `enabled: true` in dock before using tools
        
        ## Resources
        
        - [Basecamp 4 API Documentation](https://github.com/basecamp/bc3-api)
        - [API Endpoints](https://github.com/basecamp/bc3-api#endpoints)
        
    • baserow
      • README.md 3.7 KB
        # Baserow Routing Reference
        
        **App name:** `baserow`
        **Base URL proxied:** `api.baserow.io`
        
        ## API Path Pattern
        
        ```
        /baserow/api/database/rows/table/{table_id}/
        /baserow/api/database/fields/table/{table_id}/
        /baserow/api/database/tables/all-tables/
        /baserow/api/user-files/upload-file/
        /baserow/api/user-files/upload-via-url/
        ```
        
        ## Important Notes
        
        - Connection uses API_KEY authentication (database token), not OAuth
        - By default, fields return as `field_{id}`; use `user_field_names=true` for readable names
        - Database tokens grant access only to database row endpoints
        - Cloud has a limit of 10 concurrent API requests
        
        ## Common Endpoints
        
        ### List Rows
        ```bash
        GET /baserow/api/database/rows/table/{table_id}/?user_field_names=true
        ```
        
        ### Get Row
        ```bash
        GET /baserow/api/database/rows/table/{table_id}/{row_id}/
        ```
        
        ### Create Row
        ```bash
        POST /baserow/api/database/rows/table/{table_id}/
        Content-Type: application/json
        
        {
          "field_123": "value"
        }
        ```
        
        ### Update Row
        ```bash
        PATCH /baserow/api/database/rows/table/{table_id}/{row_id}/
        Content-Type: application/json
        
        {
          "field_123": "updated value"
        }
        ```
        
        ### Delete Row
        ```bash
        DELETE /baserow/api/database/rows/table/{table_id}/{row_id}/
        ```
        
        ### Batch Create Rows
        ```bash
        POST /baserow/api/database/rows/table/{table_id}/batch/
        Content-Type: application/json
        
        {
          "items": [
            {"field_123": "value1"},
            {"field_123": "value2"}
          ]
        }
        ```
        
        ### Batch Update Rows
        ```bash
        PATCH /baserow/api/database/rows/table/{table_id}/batch/
        Content-Type: application/json
        
        {
          "items": [
            {"id": 1, "field_123": "updated1"},
            {"id": 2, "field_123": "updated2"}
          ]
        }
        ```
        
        ### Batch Delete Rows
        ```bash
        POST /baserow/api/database/rows/table/{table_id}/batch-delete/
        Content-Type: application/json
        
        {
          "items": [1, 2, 3]
        }
        ```
        
        ### List Fields
        ```bash
        GET /baserow/api/database/fields/table/{table_id}/
        ```
        
        ### List All Tables
        ```bash
        GET /baserow/api/database/tables/all-tables/
        ```
        
        ### Move Row
        ```bash
        PATCH /baserow/api/database/rows/table/{table_id}/{row_id}/move/?before_id={row_id}
        ```
        
        ### Upload File via URL
        ```bash
        POST /baserow/api/user-files/upload-via-url/
        Content-Type: application/json
        
        {
          "url": "https://example.com/image.png"
        }
        ```
        
        ### Upload File (Multipart)
        ```bash
        POST /baserow/api/user-files/upload-file/
        Content-Type: multipart/form-data
        ```
        
        ## Query Parameters
        
        - `user_field_names=true` - Use human-readable field names
        - `size` - Rows per page (default: 100)
        - `page` - Page number (1-indexed)
        - `order_by` - Field to sort by (prefix `-` for descending)
        - `filter__{field}__{operator}` - Filter rows
        - `search` - Search across all fields
        - `include` - Fields to include
        - `exclude` - Fields to exclude
        
        ## Filter Operators
        
        **Text:** `equal`, `not_equal`, `contains`, `contains_not`, `contains_word`, `doesnt_contain_word`, `length_is_lower_than`
        
        **Numeric:** `higher_than`, `higher_than_or_equal`, `lower_than`, `lower_than_or_equal`, `is_even_and_whole`
        
        **Date:** `date_is`, `date_is_not`, `date_is_before`, `date_is_on_or_before`, `date_is_after`, `date_is_on_or_after`, `date_is_within`, `date_equals_today`, `date_within_days`, `date_within_weeks`, `date_within_months`
        
        **Boolean:** `boolean`
        
        **Link Row:** `link_row_has`, `link_row_has_not`, `link_row_contains`, `link_row_not_contains`
        
        **Select:** `single_select_equal`, `single_select_not_equal`, `single_select_is_any_of`, `single_select_is_none_of`, `multiple_select_has`, `multiple_select_has_not`
        
        **File:** `filename_contains`, `has_file_type`, `files_lower_than`
        
        **General:** `empty`, `not_empty`
        
        ## Resources
        
        - [Baserow API Documentation](https://baserow.io/api-docs)
        - [Baserow API Spec](https://api.baserow.io/api/redoc/)
        - [Database Tokens](https://baserow.io/user-docs/personal-api-tokens)
        
    • beehiiv
      • README.md 2.6 KB
        # beehiiv Routing Reference
        
        **App name:** `beehiiv`
        **Base URL proxied:** `api.beehiiv.com`
        
        ## API Path Pattern
        
        ```
        /beehiiv/v2/{resource}
        ```
        
        ## Common Endpoints
        
        ### Publications
        
        #### List Publications
        ```bash
        GET /beehiiv/v2/publications
        ```
        
        #### Get Publication
        ```bash
        GET /beehiiv/v2/publications/{publication_id}
        ```
        
        ### Subscriptions
        
        #### List Subscriptions
        ```bash
        GET /beehiiv/v2/publications/{publication_id}/subscriptions
        ```
        
        #### Get Subscription by ID
        ```bash
        GET /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}
        ```
        
        #### Get Subscription by Email
        ```bash
        GET /beehiiv/v2/publications/{publication_id}/subscriptions/by_email/{email}
        ```
        
        #### Create Subscription
        ```bash
        POST /beehiiv/v2/publications/{publication_id}/subscriptions
        Content-Type: application/json
        
        {
          "email": "subscriber@example.com",
          "utm_source": "api"
        }
        ```
        
        #### Update Subscription
        ```bash
        PATCH /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}
        ```
        
        #### Delete Subscription
        ```bash
        DELETE /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}
        ```
        
        ### Posts
        
        #### List Posts
        ```bash
        GET /beehiiv/v2/publications/{publication_id}/posts
        ```
        
        #### Get Post
        ```bash
        GET /beehiiv/v2/publications/{publication_id}/posts/{post_id}
        ```
        
        ### Custom Fields
        
        #### List Custom Fields
        ```bash
        GET /beehiiv/v2/publications/{publication_id}/custom_fields
        ```
        
        #### Create Custom Field
        ```bash
        POST /beehiiv/v2/publications/{publication_id}/custom_fields
        ```
        
        ### Segments
        
        ```bash
        GET /beehiiv/v2/publications/{publication_id}/segments
        GET /beehiiv/v2/publications/{publication_id}/segments/{segment_id}
        ```
        
        ### Tiers
        
        ```bash
        GET /beehiiv/v2/publications/{publication_id}/tiers
        POST /beehiiv/v2/publications/{publication_id}/tiers
        PATCH /beehiiv/v2/publications/{publication_id}/tiers/{tier_id}
        ```
        
        ### Automations
        
        ```bash
        GET /beehiiv/v2/publications/{publication_id}/automations
        GET /beehiiv/v2/publications/{publication_id}/automations/{automation_id}
        ```
        
        ## Pagination
        
        Cursor-based (recommended) or page-based (deprecated):
        
        ```bash
        # Cursor-based
        GET /beehiiv/v2/publications/{pub_id}/subscriptions?limit=10&cursor={next_cursor}
        
        # Page-based (max 100 pages)
        GET /beehiiv/v2/publications?page=2&limit=10
        ```
        
        ## Notes
        
        - Publication IDs start with `pub_`
        - Subscription IDs start with `sub_`
        - Timestamps are Unix timestamps
        - Cursor-based pagination is recommended
        - Page-based pagination limited to 100 pages
        
        ## Resources
        
        - [beehiiv Developer Documentation](https://developers.beehiiv.com/)
        - [beehiiv API Reference](https://developers.beehiiv.com/api-reference)
        
    • box
      • README.md 2.8 KB
        # Box Routing Reference
        
        **App name:** `box`
        **Base URL proxied:** `api.box.com`
        
        ## API Path Pattern
        
        ```
        /box/2.0/{resource}
        ```
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /box/2.0/users/me
        ```
        
        ### Get User
        ```bash
        GET /box/2.0/users/{user_id}
        ```
        
        ### Get Folder
        ```bash
        GET /box/2.0/folders/{folder_id}
        ```
        
        Root folder ID is `0`.
        
        ### List Folder Items
        ```bash
        GET /box/2.0/folders/{folder_id}/items
        GET /box/2.0/folders/{folder_id}/items?limit=100&offset=0
        ```
        
        ### Create Folder
        ```bash
        POST /box/2.0/folders
        Content-Type: application/json
        
        {
          "name": "New Folder",
          "parent": {"id": "0"}
        }
        ```
        
        ### Update Folder
        ```bash
        PUT /box/2.0/folders/{folder_id}
        Content-Type: application/json
        
        {
          "name": "Updated Name",
          "description": "Description"
        }
        ```
        
        ### Copy Folder
        ```bash
        POST /box/2.0/folders/{folder_id}/copy
        Content-Type: application/json
        
        {
          "name": "Copied Folder",
          "parent": {"id": "0"}
        }
        ```
        
        ### Delete Folder
        ```bash
        DELETE /box/2.0/folders/{folder_id}
        DELETE /box/2.0/folders/{folder_id}?recursive=true
        ```
        
        ### Get File
        ```bash
        GET /box/2.0/files/{file_id}
        ```
        
        ### Download File
        ```bash
        GET /box/2.0/files/{file_id}/content
        ```
        
        ### Update File
        ```bash
        PUT /box/2.0/files/{file_id}
        ```
        
        ### Copy File
        ```bash
        POST /box/2.0/files/{file_id}/copy
        ```
        
        ### Delete File
        ```bash
        DELETE /box/2.0/files/{file_id}
        ```
        
        ### Create Shared Link
        ```bash
        PUT /box/2.0/folders/{folder_id}
        Content-Type: application/json
        
        {
          "shared_link": {"access": "open"}
        }
        ```
        
        ### List Collaborations
        ```bash
        GET /box/2.0/folders/{folder_id}/collaborations
        ```
        
        ### Create Collaboration
        ```bash
        POST /box/2.0/collaborations
        Content-Type: application/json
        
        {
          "item": {"type": "folder", "id": "123"},
          "accessible_by": {"type": "user", "login": "user@example.com"},
          "role": "editor"
        }
        ```
        
        ### Search
        ```bash
        GET /box/2.0/search?query=keyword
        ```
        
        ### Events
        ```bash
        GET /box/2.0/events
        ```
        
        ### Trash
        ```bash
        GET /box/2.0/folders/trash/items
        DELETE /box/2.0/files/{file_id}/trash
        DELETE /box/2.0/folders/{folder_id}/trash
        ```
        
        ### Collections
        ```bash
        GET /box/2.0/collections
        GET /box/2.0/collections/{collection_id}/items
        ```
        
        ### Recent Items
        ```bash
        GET /box/2.0/recent_items
        ```
        
        ### Webhooks
        ```bash
        GET /box/2.0/webhooks
        POST /box/2.0/webhooks
        DELETE /box/2.0/webhooks/{webhook_id}
        ```
        
        ## Pagination
        
        Offset-based pagination:
        ```bash
        GET /box/2.0/folders/0/items?limit=100&offset=0
        ```
        
        Response:
        ```json
        {
          "total_count": 250,
          "entries": [...],
          "offset": 0,
          "limit": 100
        }
        ```
        
        ## Notes
        
        - Root folder ID is `0`
        - File uploads use `upload.box.com` (different base URL)
        - Delete operations return 204 No Content
        - Some operations require enterprise admin permissions
        - Use `fields` parameter to select specific fields
        
        ## Resources
        
        - [Box API Reference](https://developer.box.com/reference)
        - [Box Developer Documentation](https://developer.box.com/guides)
        
    • brevo
      • README.md 3.7 KB
        # Brevo Routing Reference
        
        **App name:** `brevo`
        **Base URL proxied:** `api.brevo.com`
        
        ## API Path Pattern
        
        ```
        /brevo/v3/{resource}
        ```
        
        ## Common Endpoints
        
        ### Account
        
        ```bash
        GET /brevo/v3/account
        ```
        
        ### Contacts
        
        #### List Contacts
        ```bash
        GET /brevo/v3/contacts?limit=50&offset=0
        ```
        
        #### Get Contact
        ```bash
        GET /brevo/v3/contacts/{identifier}
        ```
        
        #### Create Contact
        ```bash
        POST /brevo/v3/contacts
        Content-Type: application/json
        
        {
          "email": "contact@example.com",
          "attributes": {"FIRSTNAME": "John", "LASTNAME": "Doe"},
          "listIds": [2]
        }
        ```
        
        #### Update Contact
        ```bash
        PUT /brevo/v3/contacts/{identifier}
        Content-Type: application/json
        
        {
          "attributes": {"FIRSTNAME": "Updated"}
        }
        ```
        
        #### Delete Contact
        ```bash
        DELETE /brevo/v3/contacts/{identifier}
        ```
        
        ### Lists
        
        #### List All Lists
        ```bash
        GET /brevo/v3/contacts/lists
        ```
        
        #### Create List
        ```bash
        POST /brevo/v3/contacts/lists
        Content-Type: application/json
        
        {
          "name": "New List",
          "folderId": 1
        }
        ```
        
        #### Add Contacts to List
        ```bash
        POST /brevo/v3/contacts/lists/{listId}/contacts/add
        Content-Type: application/json
        
        {
          "emails": ["contact@example.com"]
        }
        ```
        
        ### Folders
        
        #### List Folders
        ```bash
        GET /brevo/v3/contacts/folders
        ```
        
        #### Create Folder
        ```bash
        POST /brevo/v3/contacts/folders
        Content-Type: application/json
        
        {
          "name": "New Folder"
        }
        ```
        
        ### Transactional Emails
        
        #### Send Email
        ```bash
        POST /brevo/v3/smtp/email
        Content-Type: application/json
        
        {
          "sender": {"name": "John", "email": "john@example.com"},
          "to": [{"email": "recipient@example.com", "name": "Jane"}],
          "subject": "Hello!",
          "htmlContent": "<html><body><h1>Hi!</h1></body></html>"
        }
        ```
        
        #### Get Email Statistics
        ```bash
        GET /brevo/v3/smtp/statistics/events?limit=50
        ```
        
        ### Email Templates
        
        #### List Templates
        ```bash
        GET /brevo/v3/smtp/templates
        ```
        
        #### Create Template
        ```bash
        POST /brevo/v3/smtp/templates
        Content-Type: application/json
        
        {
          "sender": {"name": "Company", "email": "noreply@company.com"},
          "templateName": "Welcome Email",
          "subject": "Welcome {{params.name}}!",
          "htmlContent": "<html><body><h1>Hello {{params.name}}!</h1></body></html>"
        }
        ```
        
        ### Email Campaigns
        
        #### List Campaigns
        ```bash
        GET /brevo/v3/emailCampaigns
        ```
        
        #### Create Campaign
        ```bash
        POST /brevo/v3/emailCampaigns
        Content-Type: application/json
        
        {
          "name": "Newsletter",
          "subject": "Monthly Update",
          "sender": {"name": "Company", "email": "news@company.com"},
          "htmlContent": "<html><body><h1>News</h1></body></html>",
          "recipients": {"listIds": [2]}
        }
        ```
        
        #### Send Campaign
        ```bash
        POST /brevo/v3/emailCampaigns/{campaignId}/sendNow
        ```
        
        ### Senders
        
        #### List Senders
        ```bash
        GET /brevo/v3/senders
        ```
        
        #### Create Sender
        ```bash
        POST /brevo/v3/senders
        Content-Type: application/json
        
        {
          "name": "Marketing",
          "email": "marketing@company.com"
        }
        ```
        
        ### Attributes
        
        #### List Attributes
        ```bash
        GET /brevo/v3/contacts/attributes
        ```
        
        ## Pagination
        
        Brevo uses offset-based pagination:
        
        ```bash
        GET /brevo/v3/contacts?limit=50&offset=0
        ```
        
        **Parameters:**
        - `limit` - Results per page (max varies by endpoint, typically 500)
        - `offset` - Starting index (0-based)
        
        Response includes count:
        ```json
        {
          "contacts": [...],
          "count": 150
        }
        ```
        
        ## Notes
        
        - All endpoints require `/v3/` prefix
        - Attribute names must be UPPERCASE
        - Contact identifiers: email, phone, or ID
        - Template parameters: `{{params.name}}` syntax
        - PUT/DELETE return 204 No Content on success
        - Rate limit: 300 calls/min (free), higher on paid plans
        
        ## Resources
        
        - [Brevo API Overview](https://developers.brevo.com/)
        - [API Key Concepts](https://developers.brevo.com/docs/how-it-works)
        - [Manage Contacts](https://developers.brevo.com/docs/synchronise-contact-lists)
        - [Send Transactional Email](https://developers.brevo.com/docs/send-a-transactional-email)
        
    • cal-com
      • README.md 3.4 KB
        # Cal.com Routing Reference
        
        **App name:** `cal-com`
        **Base URL proxied:** `api.cal.com`
        
        ## API Path Pattern
        
        ```
        /cal-com/v2/{resource}
        ```
        
        ## Common Endpoints
        
        ### User Profile
        
        #### Get Profile
        ```bash
        GET /cal-com/v2/me
        ```
        
        #### Update Profile
        ```bash
        PATCH /cal-com/v2/me
        ```
        
        ### Event Types
        
        #### List Event Types
        ```bash
        GET /cal-com/v2/event-types
        ```
        
        #### Get Event Type
        ```bash
        GET /cal-com/v2/event-types/{eventTypeId}
        ```
        
        #### Create Event Type
        ```bash
        POST /cal-com/v2/event-types
        ```
        
        #### Update Event Type
        ```bash
        PATCH /cal-com/v2/event-types/{eventTypeId}
        ```
        
        #### Delete Event Type
        ```bash
        DELETE /cal-com/v2/event-types/{eventTypeId}
        ```
        
        ### Event Type Webhooks
        
        #### List Webhooks
        ```bash
        GET /cal-com/v2/event-types/{eventTypeId}/webhooks
        ```
        
        #### Create Webhook
        ```bash
        POST /cal-com/v2/event-types/{eventTypeId}/webhooks
        ```
        
        #### Get Webhook
        ```bash
        GET /cal-com/v2/event-types/{eventTypeId}/webhooks/{webhookId}
        ```
        
        #### Update Webhook
        ```bash
        PATCH /cal-com/v2/event-types/{eventTypeId}/webhooks/{webhookId}
        ```
        
        #### Delete Webhook
        ```bash
        DELETE /cal-com/v2/event-types/{eventTypeId}/webhooks/{webhookId}
        ```
        
        ### Bookings
        
        #### List Bookings
        ```bash
        GET /cal-com/v2/bookings
        GET /cal-com/v2/bookings?status=upcoming
        GET /cal-com/v2/bookings?status=past
        GET /cal-com/v2/bookings?status=cancelled
        GET /cal-com/v2/bookings?take=10
        ```
        
        #### Get Booking
        ```bash
        GET /cal-com/v2/bookings/{bookingUid}
        ```
        
        #### Create Booking
        ```bash
        POST /cal-com/v2/bookings
        ```
        
        #### Cancel Booking
        ```bash
        POST /cal-com/v2/bookings/{bookingUid}/cancel
        ```
        
        ### Schedules
        
        #### Get Default Schedule
        ```bash
        GET /cal-com/v2/schedules/default
        ```
        
        #### Get Schedule
        ```bash
        GET /cal-com/v2/schedules/{scheduleId}
        ```
        
        #### Create Schedule
        ```bash
        POST /cal-com/v2/schedules
        ```
        
        #### Update Schedule
        ```bash
        PATCH /cal-com/v2/schedules/{scheduleId}
        ```
        
        #### Delete Schedule
        ```bash
        DELETE /cal-com/v2/schedules/{scheduleId}
        ```
        
        ### Availability Slots
        
        #### Get Available Slots
        ```bash
        GET /cal-com/v2/slots/available?eventTypeId={id}&startTime={iso8601}&endTime={iso8601}
        ```
        
        #### Reserve Slot
        ```bash
        POST /cal-com/v2/slots/reserve
        ```
        
        ### Calendars
        
        #### List Connected Calendars
        ```bash
        GET /cal-com/v2/calendars
        ```
        
        ### Conferencing
        
        #### List Conferencing Apps
        ```bash
        GET /cal-com/v2/conferencing
        ```
        
        #### Get Default Conferencing App
        ```bash
        GET /cal-com/v2/conferencing/default
        ```
        
        ### Webhooks (User-level)
        
        #### List Webhooks
        ```bash
        GET /cal-com/v2/webhooks
        ```
        
        #### Create Webhook
        ```bash
        POST /cal-com/v2/webhooks
        ```
        
        #### Get Webhook
        ```bash
        GET /cal-com/v2/webhooks/{webhookId}
        ```
        
        #### Update Webhook
        ```bash
        PATCH /cal-com/v2/webhooks/{webhookId}
        ```
        
        #### Delete Webhook
        ```bash
        DELETE /cal-com/v2/webhooks/{webhookId}
        ```
        
        ### Teams
        
        #### List Teams
        ```bash
        GET /cal-com/v2/teams
        ```
        
        ### Verified Resources
        
        #### List Verified Emails
        ```bash
        GET /cal-com/v2/verified-resources/emails
        ```
        
        ## Notes
        
        - All API endpoints are v2
        - All times are in UTC (ISO 8601 format)
        - Booking creation requires an available slot - check `/v2/slots/available` first
        - Required fields for booking: `eventTypeId`, `start`, `timeZone`, `language`, `responses.name`, `responses.email`
        - `GET /v2/schedules` may return 500 errors; use `GET /v2/schedules/{id}` instead
        - Event type creation requires: `title`, `slug`, `length` (in minutes)
        
        ## Resources
        
        - [Cal.com API Documentation](https://cal.com/docs/api-reference/v2/introduction)
        
    • calendly
      • README.md 2.6 KB
        # Calendly Routing Reference
        
        **App name:** `calendly`
        **Base URL proxied:** `api.calendly.com`
        
        ## API Path Pattern
        
        ```
        /calendly/{resource}
        ```
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /calendly/users/me
        ```
        
        ### List Event Types
        ```bash
        GET /calendly/event_types?user=USER_URI&active=true
        ```
        
        ### Get an Event Type
        ```bash
        GET /calendly/event_types/{uuid}
        ```
        
        ### List Scheduled Events
        ```bash
        GET /calendly/scheduled_events?user=USER_URI&status=active&min_start_time=2025-03-01T00:00:00Z
        ```
        
        ### Get a Scheduled Event
        ```bash
        GET /calendly/scheduled_events/{uuid}
        ```
        
        ### Cancel a Scheduled Event
        ```bash
        POST /calendly/scheduled_events/{uuid}/cancellation
        Content-Type: application/json
        
        {
          "reason": "Meeting rescheduled"
        }
        ```
        
        ### List Event Invitees
        ```bash
        GET /calendly/scheduled_events/{event_uuid}/invitees
        ```
        
        ### Get Available Times
        ```bash
        GET /calendly/event_type_available_times?event_type=EVENT_TYPE_URI&start_time=2025-03-15T00:00:00Z&end_time=2025-03-22T00:00:00Z
        ```
        
        ### Get User Busy Times
        ```bash
        GET /calendly/user_busy_times?user=USER_URI&start_time=2025-03-15T00:00:00Z&end_time=2025-03-22T00:00:00Z
        ```
        
        ### List Organization Memberships
        ```bash
        GET /calendly/organization_memberships?organization=ORGANIZATION_URI
        ```
        
        ### List Webhook Subscriptions
        ```bash
        GET /calendly/webhook_subscriptions?organization=ORGANIZATION_URI&scope=organization
        ```
        
        ### Create Webhook Subscription
        ```bash
        POST /calendly/webhook_subscriptions
        Content-Type: application/json
        
        {
          "url": "https://example.com/webhook",
          "events": ["invitee.created", "invitee.canceled"],
          "organization": "ORGANIZATION_URI",
          "scope": "organization"
        }
        ```
        
        ### Delete Webhook Subscription
        ```bash
        DELETE /calendly/webhook_subscriptions/{uuid}
        ```
        
        ## Notes
        
        - Resource identifiers are full URIs (e.g., `https://api.calendly.com/users/AAAA`)
        - Timestamps are in ISO 8601 format
        - Availability endpoints have a 7-day maximum range per request
        - Webhooks require a paid Calendly plan (Standard, Teams, or Enterprise)
        - Available webhook events: `invitee.created`, `invitee.canceled`, `routing_form_submission.created`
        - Use `page_token` for pagination
        
        ## Resources
        
        - [Calendly Developer Portal](https://developer.calendly.com/)
        - [API Reference](https://developer.calendly.com/api-docs)
        - [Event Types](https://developer.calendly.com/api-docs/e2f95ebd44914-list-user-s-event-types)
        - [Scheduled Events](https://developer.calendly.com/api-docs/d61a40b4ea90e-list-events)
        - [Availability](https://developer.calendly.com/api-docs/4241cf0f7f0d4-get-event-type-available-times)
        - [Webhooks](https://developer.calendly.com/api-docs/c1ddc06ce1f1a-create-webhook-subscription)
        
    • callrail
      • README.md 3.1 KB
        # CallRail Routing Reference
        
        **App name:** `callrail`
        **Base URL proxied:** `api.callrail.com`
        
        ## API Path Pattern
        
        ```
        /callrail/v3/a/{account_id}/{resource}.json
        ```
        
        **Important:** All CallRail API endpoints end with `.json`. Account IDs start with `ACC`.
        
        ## Common Endpoints
        
        ### Accounts
        
        #### List Accounts
        ```bash
        GET /callrail/v3/a.json
        ```
        
        #### Get Account
        ```bash
        GET /callrail/v3/a/{account_id}.json
        ```
        
        ### Companies
        
        #### List Companies
        ```bash
        GET /callrail/v3/a/{account_id}/companies.json
        ```
        
        #### Get Company
        ```bash
        GET /callrail/v3/a/{account_id}/companies/{company_id}.json
        ```
        
        ### Calls
        
        #### List Calls
        ```bash
        GET /callrail/v3/a/{account_id}/calls.json
        ```
        
        Query parameters: `page`, `per_page`, `date_range`, `start_date`, `end_date`, `company_id`, `tracker_id`, `search`, `fields`, `sort`, `order`
        
        #### Get Call
        ```bash
        GET /callrail/v3/a/{account_id}/calls/{call_id}.json
        ```
        
        #### Update Call
        ```bash
        PUT /callrail/v3/a/{account_id}/calls/{call_id}.json
        Content-Type: application/json
        
        {
          "customer_name": "John Smith",
          "note": "Follow up scheduled",
          "lead_status": "good_lead"
        }
        ```
        
        #### Call Summary
        ```bash
        GET /callrail/v3/a/{account_id}/calls/summary.json
        ```
        
        #### Call Timeseries
        ```bash
        GET /callrail/v3/a/{account_id}/calls/timeseries.json
        ```
        
        ### Trackers
        
        #### List Trackers
        ```bash
        GET /callrail/v3/a/{account_id}/trackers.json
        ```
        
        #### Get Tracker
        ```bash
        GET /callrail/v3/a/{account_id}/trackers/{tracker_id}.json
        ```
        
        ### Tags
        
        #### List Tags
        ```bash
        GET /callrail/v3/a/{account_id}/tags.json
        ```
        
        #### Create Tag
        ```bash
        POST /callrail/v3/a/{account_id}/tags.json
        Content-Type: application/json
        
        {
          "name": "New Tag",
          "tag_level": "account",
          "color": "blue1"
        }
        ```
        
        #### Update Tag
        ```bash
        PUT /callrail/v3/a/{account_id}/tags/{tag_id}.json
        Content-Type: application/json
        
        {
          "name": "Updated Name",
          "color": "green1"
        }
        ```
        
        #### Delete Tag
        ```bash
        DELETE /callrail/v3/a/{account_id}/tags/{tag_id}.json
        ```
        
        ### Users
        
        #### List Users
        ```bash
        GET /callrail/v3/a/{account_id}/users.json
        ```
        
        #### Get User
        ```bash
        GET /callrail/v3/a/{account_id}/users/{user_id}.json
        ```
        
        ### Integrations
        
        #### List Integrations
        ```bash
        GET /callrail/v3/a/{account_id}/integrations.json?company_id={company_id}
        ```
        
        ### Notifications
        
        #### List Notifications
        ```bash
        GET /callrail/v3/a/{account_id}/notifications.json
        ```
        
        ## ID Prefixes
        
        - Account IDs: `ACC`
        - Company IDs: `COM`
        - Call IDs: `CAL`
        - Tracker IDs: `TRK`
        - User IDs: `USR`
        
        ## Pagination
        
        Uses offset-based pagination with `page` and `per_page` parameters:
        
        ```bash
        GET /callrail/v3/a/{account_id}/calls.json?page=2&per_page=50
        # Response includes page, per_page, total_pages, total_records
        ```
        
        For calls endpoint, relative pagination is available via `relative_pagination=true`.
        
        ## Notes
        
        - All endpoints end with `.json`
        - Communication records retained for 25 months
        - Rate limits: 1,000/hour, 10,000/day for general API
        - ISO 8601 date format with timezone
        
        ## Resources
        
        - [CallRail API Documentation](https://apidocs.callrail.com/)
        - [CallRail Help Center - API](https://support.callrail.com/hc/en-us/sections/4426797289229-API)
        
    • chargebee
      • README.md 5.5 KB
        # Chargebee Routing Reference
        
        **App name:** `chargebee`
        **Base URL proxied:** `{subdomain}.chargebee.com`
        
        The router automatically handles the subdomain from your connection.
        
        ## API Path Pattern
        
        ```
        /chargebee/api/v2/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Customers
        
        #### List Customers
        ```bash
        GET /chargebee/api/v2/customers?limit=10
        ```
        
        #### Get Customer
        ```bash
        GET /chargebee/api/v2/customers/{customerId}
        ```
        
        #### Create Customer
        ```bash
        POST /chargebee/api/v2/customers
        Content-Type: application/x-www-form-urlencoded
        
        first_name=John&last_name=Doe&email=john@example.com
        ```
        
        #### Update Customer
        ```bash
        POST /chargebee/api/v2/customers/{customerId}
        Content-Type: application/x-www-form-urlencoded
        
        first_name=Jane
        ```
        
        ### Subscriptions
        
        #### List Subscriptions
        ```bash
        GET /chargebee/api/v2/subscriptions?limit=10
        ```
        
        #### Get Subscription
        ```bash
        GET /chargebee/api/v2/subscriptions/{subscriptionId}
        ```
        
        #### Create Subscription
        ```bash
        POST /chargebee/api/v2/subscriptions
        Content-Type: application/x-www-form-urlencoded
        
        plan_id=basic-plan&customer[email]=john@example.com&customer[first_name]=John
        ```
        
        #### Cancel Subscription
        ```bash
        POST /chargebee/api/v2/subscriptions/{subscriptionId}/cancel
        Content-Type: application/x-www-form-urlencoded
        
        end_of_term=true
        ```
        
        ### Item Prices (Product Catalog 2.0)
        
        #### List Item Prices
        ```bash
        GET /chargebee/api/v2/item_prices?limit=10
        ```
        
        #### Get Item Price
        ```bash
        GET /chargebee/api/v2/item_prices/{itemPriceId}
        ```
        
        ### Items (Product Catalog 2.0)
        
        #### List Items
        ```bash
        GET /chargebee/api/v2/items?limit=10
        ```
        
        #### Get Item
        ```bash
        GET /chargebee/api/v2/items/{itemId}
        ```
        
        ### Plans (Product Catalog 1.0 - Legacy)
        
        #### List Plans
        ```bash
        GET /chargebee/api/v2/plans?limit=10
        ```
        
        #### Get Plan
        ```bash
        GET /chargebee/api/v2/plans/{planId}
        ```
        
        ### Invoices
        
        #### List Invoices
        ```bash
        GET /chargebee/api/v2/invoices?limit=10
        ```
        
        #### Get Invoice
        ```bash
        GET /chargebee/api/v2/invoices/{invoiceId}
        ```
        
        #### Download Invoice PDF
        ```bash
        POST /chargebee/api/v2/invoices/{invoiceId}/pdf
        ```
        
        ### Transactions
        
        #### List Transactions
        ```bash
        GET /chargebee/api/v2/transactions?limit=10
        ```
        
        ### Hosted Pages
        
        #### Checkout New Subscription
        ```bash
        POST /chargebee/api/v2/hosted_pages/checkout_new_for_items
        Content-Type: application/x-www-form-urlencoded
        
        subscription[plan_id]=basic-plan&customer[email]=john@example.com
        ```
        
        #### Manage Payment Sources
        ```bash
        POST /chargebee/api/v2/hosted_pages/manage_payment_sources
        Content-Type: application/x-www-form-urlencoded
        
        customer[id]=cust_123
        ```
        
        ### Portal Sessions
        
        #### Create Portal Session
        ```bash
        POST /chargebee/api/v2/portal_sessions
        Content-Type: application/x-www-form-urlencoded
        
        customer[id]=cust_123
        ```
        
        ## Filtering
        
        Use filter parameters:
        ```bash
        GET /chargebee/api/v2/subscriptions?status[is]=active
        GET /chargebee/api/v2/customers?email[is]=john@example.com
        GET /chargebee/api/v2/invoices?date[after]=1704067200
        ```
        
        ## Notes
        
        - Authentication is automatic - the router injects Basic auth from your API key
        - Subdomain is automatically determined from your connection
        - Uses form-urlencoded data for POST requests
        - Nested objects use bracket notation: `customer[email]`
        - Timestamps are Unix timestamps
        - List responses include `next_offset` for pagination
        - Status values: `active`, `cancelled`, `non_renewing`, etc.
        - **Product Catalog versions**: Use `item_prices` and `items` for PC 2.0, or `plans` and `addons` for PC 1.0
        
        ## Resources
        
        - [Getting Started](https://apidocs.chargebee.com/docs/api)
        - [List Customers](https://apidocs.chargebee.com/docs/api/customers/list-customers.md)
        - [Retrieve a Customer](https://apidocs.chargebee.com/docs/api/customers/retrieve-a-customer.md)
        - [Create a Customer](https://apidocs.chargebee.com/docs/api/customers/create-a-customer.md)
        - [Update a Customer](https://apidocs.chargebee.com/docs/api/customers/update-a-customer.md)
        - [List Subscriptions](https://apidocs.chargebee.com/docs/api/subscriptions/list-subscriptions.md)
        - [Retrieve a Subscription](https://apidocs.chargebee.com/docs/api/subscriptions/retrieve-a-subscription.md)
        - [Create a Subscription](https://apidocs.chargebee.com/docs/api/subscriptions/create-subscription-for-items.md)
        - [Cancel a Subscription](https://apidocs.chargebee.com/docs/api/subscriptions/cancel-subscription-for-items.md)
        - [List Items](https://apidocs.chargebee.com/docs/api/items/list-items.md)
        - [Retrieve an Item](https://apidocs.chargebee.com/docs/api/items/retrieve-an-item.md)
        - [List Item Prices](https://apidocs.chargebee.com/docs/api/item_prices/list-item-prices.md)
        - [Retrieve an Item Price](https://apidocs.chargebee.com/docs/api/item_prices/retrieve-an-item-price.md)
        - [List Plans](https://apidocs.chargebee.com/docs/api/v2/pcv-1/plans/list-plans.md)
        - [Retrieve a Plan](https://apidocs.chargebee.com/docs/api/v2/pcv-1/plans/retrieve-a-plan.md)
        - [List Invoices](https://apidocs.chargebee.com/docs/api/invoices/list-invoices.md)
        - [Retrieve an Invoice](https://apidocs.chargebee.com/docs/api/invoices/retrieve-an-invoice.md)
        - [Download Invoice as PDF](https://apidocs.chargebee.com/docs/api/invoices/download-e-invoice.md)
        - [List Transactions](https://apidocs.chargebee.com/docs/api/transactions/list-transactions.md)
        - [Checkout New Subscription](https://apidocs.chargebee.com/docs/api/hosted_pages/create-checkout-for-a-new-subscription.md)
        - [Manage Payment Sources](https://apidocs.chargebee.com/docs/api/hosted_pages/manage-payment-sources.md)
        - [Create a Portal Session](https://apidocs.chargebee.com/docs/api/portal_sessions/create-a-portal-session.md)
    • clickfunnels
      • README.md 5.3 KB
        # ClickFunnels Routing Reference
        
        **App name:** `clickfunnels`
        **Base URL proxied:** `{subdomain}.myclickfunnels.com`
        
        The router automatically handles the subdomain from your OAuth connection.
        
        ## API Path Pattern
        
        ```
        /clickfunnels/api/v2/{resource}
        ```
        
        ## Required Headers
        
        THe `User-Agent` header is required to avoid Cloudflare blocks:
        
        ```
        User-Agent: Maton/1.0
        ```
        
        ## Common Endpoints
        
        ### Teams
        
        #### List Teams
        ```bash
        GET /clickfunnels/api/v2/teams
        ```
        
        #### Get Team
        ```bash
        GET /clickfunnels/api/v2/teams/{team_id}
        ```
        
        ### Workspaces
        
        #### List Workspaces
        ```bash
        GET /clickfunnels/api/v2/teams/{team_id}/workspaces
        ```
        
        #### Get Workspace
        ```bash
        GET /clickfunnels/api/v2/workspaces/{workspace_id}
        ```
        
        ### Contacts
        
        #### List Contacts
        ```bash
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts
        ```
        
        #### Get Contact
        ```bash
        GET /clickfunnels/api/v2/contacts/{contact_id}
        ```
        
        #### Create Contact
        ```bash
        POST /clickfunnels/api/v2/workspaces/{workspace_id}/contacts
        Content-Type: application/json
        
        {
          "contact": {
            "email_address": "user@example.com",
            "first_name": "John",
            "last_name": "Doe"
          }
        }
        ```
        
        #### Update Contact
        ```bash
        PUT /clickfunnels/api/v2/contacts/{contact_id}
        Content-Type: application/json
        
        {
          "contact": {
            "first_name": "Updated"
          }
        }
        ```
        
        #### Delete Contact
        ```bash
        DELETE /clickfunnels/api/v2/contacts/{contact_id}
        ```
        
        #### Upsert Contact
        ```bash
        POST /clickfunnels/api/v2/workspaces/{workspace_id}/contacts/upsert
        ```
        
        ### Products
        
        #### List Products
        ```bash
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/products
        ```
        
        #### Get Product
        ```bash
        GET /clickfunnels/api/v2/products/{product_id}
        ```
        
        #### Create Product
        ```bash
        POST /clickfunnels/api/v2/workspaces/{workspace_id}/products
        Content-Type: application/json
        
        {
          "product": {
            "name": "New Product",
            "visible_in_store": true
          }
        }
        ```
        
        #### Archive/Unarchive Product
        ```bash
        POST /clickfunnels/api/v2/products/{product_id}/archive
        POST /clickfunnels/api/v2/products/{product_id}/unarchive
        ```
        
        ### Orders
        
        #### List Orders
        ```bash
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/orders
        ```
        
        #### Get Order
        ```bash
        GET /clickfunnels/api/v2/orders/{order_id}
        ```
        
        ### Fulfillments
        
        #### List Fulfillments
        ```bash
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/fulfillments
        ```
        
        #### Create Fulfillment
        ```bash
        POST /clickfunnels/api/v2/workspaces/{workspace_id}/fulfillments
        ```
        
        #### Cancel Fulfillment
        ```bash
        POST /clickfunnels/api/v2/fulfillments/{fulfillment_id}/cancel
        ```
        
        ### Courses & Enrollments
        
        #### List Courses
        ```bash
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/courses
        ```
        
        #### List Enrollments
        ```bash
        GET /clickfunnels/api/v2/courses/{course_id}/enrollments
        ```
        
        #### Create Enrollment
        ```bash
        POST /clickfunnels/api/v2/courses/{course_id}/enrollments
        ```
        
        ### Forms & Submissions
        
        #### List Forms
        ```bash
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/forms
        ```
        
        #### List Submissions
        ```bash
        GET /clickfunnels/api/v2/forms/{form_id}/submissions
        ```
        
        ### Webhooks
        
        #### List Webhook Endpoints
        ```bash
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/webhooks/outgoing/endpoints
        ```
        
        #### Create Webhook Endpoint
        ```bash
        POST /clickfunnels/api/v2/workspaces/{workspace_id}/webhooks/outgoing/endpoints
        Content-Type: application/json
        
        {
          "webhooks_outgoing_endpoint": {
            "url": "https://example.com/webhook",
            "name": "My Webhook",
            "event_type_ids": ["contact.created"]
          }
        }
        ```
        
        #### Delete Webhook Endpoint
        ```bash
        DELETE /clickfunnels/api/v2/webhooks/outgoing/endpoints/{endpoint_id}
        ```
        
        ### Images
        
        #### List Images
        ```bash
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/images
        ```
        
        #### Upload Image via URL
        ```bash
        POST /clickfunnels/api/v2/workspaces/{workspace_id}/images
        Content-Type: application/json
        
        {
          "image": {
            "upload_source_url": "https://example.com/image.png"
          }
        }
        ```
        
        ## Pagination
        
        Cursor-based pagination with 20 items per page:
        
        ```bash
        # First page
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts
        
        # Next page (use ID from Pagination-Next header)
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?after=1087091674
        ```
        
        Response headers:
        - `Pagination-Next`: ID of last item
        - `Link`: Full URL for next page
        
        ## Filtering
        
        ```bash
        # Single filter
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address]=user@example.com
        
        # Multiple values (OR)
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address]=a@example.com,b@example.com
        
        # Multiple filters (AND)
        GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address]=user@example.com&filter[id]=123
        ```
        
        ## Notes
        
        - Subdomain is automatically determined from your OAuth connection
        - IDs are integers; each resource also has a `public_id` string
        - Request bodies use nested keys: `{"contact": {...}}`, `{"product": {...}}`
        - List endpoints: use `workspaces/{id}/{resource}` pattern
        - Single resource: use `/{resource}/{id}` pattern (no workspace prefix)
        - Delete operations return HTTP 204 with empty body
        - Max 20 items per page, use `after` parameter for pagination
        
        ## Resources
        
        - [ClickFunnels API Introduction](https://developers.myclickfunnels.com/docs/intro)
        - [ClickFunnels API Reference](https://developers.myclickfunnels.com/reference)
        - [Pagination Guide](https://developers.myclickfunnels.com/docs/pagination)
        - [Filtering Guide](https://developers.myclickfunnels.com/docs/filtering)
        
    • clicksend
      • README.md 2.3 KB
        # ClickSend Routing Reference
        
        **App name:** `clicksend`
        **Base URL proxied:** `rest.clicksend.com`
        
        ## API Path Pattern
        
        ```
        /clicksend/v3/{resource}
        ```
        
        ## Common Endpoints
        
        ### Account
        
        #### Get Account
        ```bash
        GET /clicksend/v3/account
        ```
        
        ### SMS
        
        #### Send SMS
        ```bash
        POST /clicksend/v3/sms/send
        Content-Type: application/json
        
        {
          "messages": [
            {
              "to": "+15551234567",
              "body": "Hello!",
              "source": "api"
            }
          ]
        }
        ```
        
        #### SMS History
        ```bash
        GET /clicksend/v3/sms/history
        ```
        
        #### SMS Templates
        ```bash
        GET /clicksend/v3/sms/templates
        POST /clicksend/v3/sms/templates
        PUT /clicksend/v3/sms/templates/{template_id}
        DELETE /clicksend/v3/sms/templates/{template_id}
        ```
        
        ### MMS
        
        #### Send MMS
        ```bash
        POST /clicksend/v3/mms/send
        ```
        
        #### MMS History
        ```bash
        GET /clicksend/v3/mms/history
        ```
        
        ### Voice
        
        #### Send Voice
        ```bash
        POST /clicksend/v3/voice/send
        ```
        
        #### Voice Languages
        ```bash
        GET /clicksend/v3/voice/lang
        ```
        
        ### Contact Lists
        
        #### List All Lists
        ```bash
        GET /clicksend/v3/lists
        ```
        
        #### CRUD Operations
        ```bash
        GET /clicksend/v3/lists/{list_id}
        POST /clicksend/v3/lists
        PUT /clicksend/v3/lists/{list_id}
        DELETE /clicksend/v3/lists/{list_id}
        ```
        
        ### Contacts
        
        #### List Contacts
        ```bash
        GET /clicksend/v3/lists/{list_id}/contacts
        ```
        
        #### CRUD Operations
        ```bash
        GET /clicksend/v3/lists/{list_id}/contacts/{contact_id}
        POST /clicksend/v3/lists/{list_id}/contacts
        PUT /clicksend/v3/lists/{list_id}/contacts/{contact_id}
        DELETE /clicksend/v3/lists/{list_id}/contacts/{contact_id}
        ```
        
        ### Email Addresses
        
        ```bash
        GET /clicksend/v3/email/addresses
        POST /clicksend/v3/email/addresses
        DELETE /clicksend/v3/email/addresses/{email_address_id}
        ```
        
        ### Utility
        
        ```bash
        GET /clicksend/v3/countries
        ```
        
        ## Response Format
        
        All responses follow this structure:
        
        ```json
        {
          "http_code": 200,
          "response_code": "SUCCESS",
          "response_msg": "Description",
          "data": { ... }
        }
        ```
        
        ## Pagination
        
        Uses page-based pagination:
        
        ```bash
        GET /clicksend/v3/lists?page=2&limit=50
        # Response includes total, per_page, current_page, last_page
        ```
        
        ## Notes
        
        - Phone numbers must be E.164 format
        - Timestamps are Unix timestamps
        - Voice access requires account permissions
        - SMS over 160 chars split into segments
        
        ## Resources
        
        - [ClickSend Developer Portal](https://developers.clicksend.com/)
        - [ClickSend REST API v3](https://developers.clicksend.com/docs)
        
    • clickup
      • README.md 2.9 KB
        # ClickUp Routing Reference
        
        **App name:** `clickup`
        **Base URL proxied:** `api.clickup.com`
        
        ## API Path Pattern
        
        ```
        /clickup/api/v2/{resource}
        ```
        
        ## ClickUp Hierarchy
        
        Workspace (team) → Space → Folder → List → Task
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /clickup/api/v2/user
        ```
        
        ### Get Workspaces (Teams)
        ```bash
        GET /clickup/api/v2/team
        ```
        
        ### Get Spaces
        ```bash
        GET /clickup/api/v2/team/{team_id}/space
        ```
        
        ### Get Folders
        ```bash
        GET /clickup/api/v2/space/{space_id}/folder
        ```
        
        ### Get Lists
        ```bash
        GET /clickup/api/v2/folder/{folder_id}/list
        ```
        
        ### Get Folderless Lists
        ```bash
        GET /clickup/api/v2/space/{space_id}/list
        ```
        
        ### Get Tasks
        ```bash
        GET /clickup/api/v2/list/{list_id}/task?include_closed=true
        ```
        
        ### Get a Task
        ```bash
        GET /clickup/api/v2/task/{task_id}
        ```
        
        ### Create a Task
        ```bash
        POST /clickup/api/v2/list/{list_id}/task
        Content-Type: application/json
        
        {
          "name": "Task name",
          "description": "Task description",
          "assignees": [123],
          "status": "to do",
          "priority": 2,
          "due_date": 1709251200000,
          "tags": ["api", "backend"]
        }
        ```
        
        ### Update a Task
        ```bash
        PUT /clickup/api/v2/task/{task_id}
        Content-Type: application/json
        
        {
          "status": "complete",
          "priority": null
        }
        ```
        
        ### Delete a Task
        ```bash
        DELETE /clickup/api/v2/task/{task_id}
        ```
        
        ### Get Filtered Team Tasks
        ```bash
        GET /clickup/api/v2/team/{team_id}/task?statuses[]=to%20do&assignees[]=123
        ```
        
        ### Create Space
        ```bash
        POST /clickup/api/v2/team/{team_id}/space
        Content-Type: application/json
        
        {
          "name": "New Space",
          "multiple_assignees": true
        }
        ```
        
        ### Create Folder
        ```bash
        POST /clickup/api/v2/space/{space_id}/folder
        Content-Type: application/json
        
        {"name": "New Folder"}
        ```
        
        ### Create List
        ```bash
        POST /clickup/api/v2/folder/{folder_id}/list
        Content-Type: application/json
        
        {"name": "New List"}
        ```
        
        ### Create Webhook
        ```bash
        POST /clickup/api/v2/team/{team_id}/webhook
        Content-Type: application/json
        
        {
          "endpoint": "https://example.com/webhook",
          "events": ["taskCreated", "taskUpdated", "taskDeleted"]
        }
        ```
        
        ### Delete Webhook
        ```bash
        DELETE /clickup/api/v2/webhook/{webhook_id}
        ```
        
        ## Notes
        
        - Task IDs are strings, timestamps are Unix milliseconds
        - Priority values: 1=urgent, 2=high, 3=normal, 4=low, null=none
        - Workspaces are called "teams" in the API
        - Status values must match exact status names configured in the list
        - Use page-based pagination with `page` parameter (0-indexed)
        - Responses are limited to 100 items per page
        
        ## Resources
        
        - [ClickUp API Overview](https://developer.clickup.com/docs/Getting%20Started.md)
        - [Tasks](https://developer.clickup.com/reference/gettasks.md)
        - [Spaces](https://developer.clickup.com/reference/getspaces.md)
        - [Lists](https://developer.clickup.com/reference/getlists.md)
        - [Webhooks](https://developer.clickup.com/reference/createwebhook.md)
        - [Rate Limits](https://developer.clickup.com/docs/rate-limits.md)
        - [LLM Reference](https://developer.clickup.com/llms.txt)
        
    • clio
      • README.md 6.1 KB
        # Clio Routing Reference
        
        **App name:** `clio`
        **Base URL proxied:** `app.clio.com`
        
        ## API Path Pattern
        
        ```
        /clio/api/v4/{resource}
        ```
        
        ## Field Selection
        
        By default, Clio returns minimal fields (`id`, `etag`). Always specify fields:
        
        ```bash
        GET /clio/api/v4/matters?fields=id,display_number,description,status
        ```
        
        Nested resources use curly bracket syntax:
        
        ```bash
        GET /clio/api/v4/activities?fields=id,type,matter{id,description}
        ```
        
        ## Common Endpoints
        
        ### Matters
        
        #### List Matters
        ```bash
        GET /clio/api/v4/matters?fields=id,display_number,description,status
        ```
        
        #### Get Matter
        ```bash
        GET /clio/api/v4/matters/{id}?fields=id,display_number,description,status,open_date
        ```
        
        #### Create Matter
        ```bash
        POST /clio/api/v4/matters
        Content-Type: application/json
        
        {
          "data": {
            "description": "New Legal Matter",
            "status": "open",
            "client": {"id": 12345}
          }
        }
        ```
        
        #### Update Matter
        ```bash
        PATCH /clio/api/v4/matters/{id}
        Content-Type: application/json
        
        {
          "data": {
            "description": "Updated Description"
          }
        }
        ```
        
        #### Delete Matter
        ```bash
        DELETE /clio/api/v4/matters/{id}
        ```
        
        ### Contacts
        
        #### List Contacts
        ```bash
        GET /clio/api/v4/contacts?fields=id,name,type,primary_email_address
        ```
        
        #### Get Contact
        ```bash
        GET /clio/api/v4/contacts/{id}?fields=id,name,type,first_name,last_name
        ```
        
        #### Create Contact (Person)
        ```bash
        POST /clio/api/v4/contacts
        Content-Type: application/json
        
        {
          "data": {
            "type": "Person",
            "first_name": "John",
            "last_name": "Doe"
          }
        }
        ```
        
        #### Create Contact (Company)
        ```bash
        POST /clio/api/v4/contacts
        Content-Type: application/json
        
        {
          "data": {
            "type": "Company",
            "name": "Acme Corporation"
          }
        }
        ```
        
        #### Update Contact
        ```bash
        PATCH /clio/api/v4/contacts/{id}
        Content-Type: application/json
        
        {
          "data": {
            "first_name": "Jane"
          }
        }
        ```
        
        #### Delete Contact
        ```bash
        DELETE /clio/api/v4/contacts/{id}
        ```
        
        ### Activities
        
        #### List Activities
        ```bash
        GET /clio/api/v4/activities?fields=id,type,date,quantity,matter{id,description}
        ```
        
        #### Get Activity
        ```bash
        GET /clio/api/v4/activities/{id}?fields=id,type,date,quantity,note
        ```
        
        #### Create Activity
        ```bash
        POST /clio/api/v4/activities
        Content-Type: application/json
        
        {
          "data": {
            "type": "TimeEntry",
            "date": "2026-02-11",
            "quantity": 3600,
            "matter": {"id": 12345}
          }
        }
        ```
        
        #### Update Activity
        ```bash
        PATCH /clio/api/v4/activities/{id}
        Content-Type: application/json
        
        {
          "data": {
            "note": "Updated note"
          }
        }
        ```
        
        #### Delete Activity
        ```bash
        DELETE /clio/api/v4/activities/{id}
        ```
        
        ### Tasks
        
        #### List Tasks
        ```bash
        GET /clio/api/v4/tasks?fields=id,name,status,due_at,priority
        ```
        
        #### Get Task
        ```bash
        GET /clio/api/v4/tasks/{id}?fields=id,name,description,status,due_at
        ```
        
        #### Create Task
        
        Requires `assignee` with `id` and `type`:
        
        ```bash
        POST /clio/api/v4/tasks
        Content-Type: application/json
        
        {
          "data": {
            "name": "Review contract",
            "due_at": "2026-02-15T17:00:00Z",
            "priority": "Normal",
            "assignee": {"id": 12345, "type": "User"},
            "matter": {"id": 67890}
          }
        }
        ```
        
        #### Update Task
        ```bash
        PATCH /clio/api/v4/tasks/{id}
        Content-Type: application/json
        
        {
          "data": {
            "status": "complete"
          }
        }
        ```
        
        #### Delete Task
        ```bash
        DELETE /clio/api/v4/tasks/{id}
        ```
        
        ### Calendar Entries
        
        #### List Calendar Entries
        ```bash
        GET /clio/api/v4/calendar_entries?fields=id,summary,start_at,end_at
        ```
        
        #### Get Calendar Entry
        ```bash
        GET /clio/api/v4/calendar_entries/{id}?fields=id,summary,description,start_at,end_at
        ```
        
        #### Create Calendar Entry
        
        Requires `calendar_owner` with `id` and `type`:
        
        ```bash
        POST /clio/api/v4/calendar_entries
        Content-Type: application/json
        
        {
          "data": {
            "summary": "Client Meeting",
            "start_at": "2026-02-15T10:00:00Z",
            "end_at": "2026-02-15T11:00:00Z",
            "calendar_owner": {"id": 12345, "type": "User"}
          }
        }
        ```
        
        **Note:** Associating a matter during creation may return 404. Use PATCH to link matters after creation.
        
        #### Update Calendar Entry
        ```bash
        PATCH /clio/api/v4/calendar_entries/{id}
        Content-Type: application/json
        
        {
          "data": {
            "summary": "Updated Meeting"
          }
        }
        ```
        
        #### Delete Calendar Entry
        ```bash
        DELETE /clio/api/v4/calendar_entries/{id}
        ```
        
        ### Documents
        
        #### List Documents
        ```bash
        GET /clio/api/v4/documents?fields=id,name,content_type,size
        ```
        
        #### Get Document
        ```bash
        GET /clio/api/v4/documents/{id}?fields=id,name,content_type,size,created_at
        ```
        
        #### Download Document
        ```bash
        GET /clio/api/v4/documents/{id}/download
        ```
        
        ### Users
        
        #### Get Current User
        ```bash
        GET /clio/api/v4/users/who_am_i?fields=id,name,email,enabled
        ```
        
        #### List Users
        ```bash
        GET /clio/api/v4/users?fields=id,name,email,enabled
        ```
        
        ### Bills
        
        #### List Bills
        ```bash
        GET /clio/api/v4/bills?fields=id,number,issued_at,due_at,total,balance,state
        ```
        
        #### Get Bill
        ```bash
        GET /clio/api/v4/bills/{id}?fields=id,number,total,balance,state
        ```
        
        ## Pagination
        
        Clio uses cursor-based pagination:
        
        ```bash
        GET /clio/api/v4/matters?fields=id,description&limit=50
        ```
        
        Response includes pagination in `meta`:
        
        ```json
        {
          "data": [...],
          "meta": {
            "paging": {
              "next": "https://app.clio.com/api/v4/matters?page_token=xyz123"
            }
          }
        }
        ```
        
        Use `page_token` for next page:
        
        ```bash
        GET /clio/api/v4/matters?page_token=xyz123
        ```
        
        ## Notes
        
        - Always specify `fields` parameter - defaults are minimal (`id`, `etag` only)
        - Nested resources use curly brackets: `matter{id,description}`
        - Only one level of nesting supported
        - Contact types: `Person` or `Company`
        - Task assignees require both `id` and `type` ("User" or "Contact")
        - Calendar entries require `calendar_owner` with `id` and `type`; linking matters during creation may fail - use PATCH after creation
        - Activity quantity is in seconds (3600 = 1 hour)
        - Rate limit: 50 requests/minute during peak hours
        - Contact limits: max 20 emails, phones, and addresses each
        - Activities, Documents, and Bills endpoints require additional OAuth scopes
        
        ## Resources
        
        - [Clio API Documentation](https://docs.developers.clio.com/api-reference/)
        - [Clio Fields Guide](https://docs.developers.clio.com/api-docs/clio-manage/fields/)
        - [Clio Rate Limits](https://docs.developers.clio.com/api-docs/clio-manage/rate-limits/)
        
    • clockify
      • README.md 3.7 KB
        # Clockify Routing Reference
        
        **App name:** `clockify`
        **Base URL proxied:** `api.clockify.me`
        
        ## API Path Pattern
        
        ```
        /clockify/api/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /clockify/api/v1/user
        ```
        
        ### List Workspaces
        ```bash
        GET /clockify/api/v1/workspaces
        ```
        
        ### Get Workspace
        ```bash
        GET /clockify/api/v1/workspaces/{workspaceId}
        ```
        
        ### List Workspace Users
        ```bash
        GET /clockify/api/v1/workspaces/{workspaceId}/users
        ```
        
        ### List Projects
        ```bash
        GET /clockify/api/v1/workspaces/{workspaceId}/projects
        ```
        
        ### Get Project
        ```bash
        GET /clockify/api/v1/workspaces/{workspaceId}/projects/{projectId}
        ```
        
        ### Create Project
        ```bash
        POST /clockify/api/v1/workspaces/{workspaceId}/projects
        Content-Type: application/json
        
        {
          "name": "My Project",
          "isPublic": true,
          "clientId": "optional-client-id"
        }
        ```
        
        ### Update Project
        ```bash
        PUT /clockify/api/v1/workspaces/{workspaceId}/projects/{projectId}
        Content-Type: application/json
        
        {
          "name": "Updated Project Name",
          "archived": true
        }
        ```
        
        ### Delete Project
        ```bash
        DELETE /clockify/api/v1/workspaces/{workspaceId}/projects/{projectId}
        ```
        
        ### List Clients
        ```bash
        GET /clockify/api/v1/workspaces/{workspaceId}/clients
        ```
        
        ### Create Client
        ```bash
        POST /clockify/api/v1/workspaces/{workspaceId}/clients
        Content-Type: application/json
        
        {
          "name": "Client Name",
          "address": "123 Main St",
          "note": "Client notes"
        }
        ```
        
        ### List Tags
        ```bash
        GET /clockify/api/v1/workspaces/{workspaceId}/tags
        ```
        
        ### Create Tag
        ```bash
        POST /clockify/api/v1/workspaces/{workspaceId}/tags
        Content-Type: application/json
        
        {
          "name": "urgent"
        }
        ```
        
        ### List Tasks on Project
        ```bash
        GET /clockify/api/v1/workspaces/{workspaceId}/projects/{projectId}/tasks
        ```
        
        ### Create Task
        ```bash
        POST /clockify/api/v1/workspaces/{workspaceId}/projects/{projectId}/tasks
        Content-Type: application/json
        
        {
          "name": "Task Name",
          "assigneeIds": ["user-id"],
          "estimate": "PT2H",
          "billable": true
        }
        ```
        
        ### Get User's Time Entries
        ```bash
        GET /clockify/api/v1/workspaces/{workspaceId}/user/{userId}/time-entries
        ```
        
        ### Create Time Entry
        ```bash
        POST /clockify/api/v1/workspaces/{workspaceId}/time-entries
        Content-Type: application/json
        
        {
          "start": "2026-02-13T09:00:00Z",
          "end": "2026-02-13T10:00:00Z",
          "description": "Working on task",
          "projectId": "project-id",
          "taskId": "task-id",
          "tagIds": ["tag-id"],
          "billable": true
        }
        ```
        
        ### Get Time Entry
        ```bash
        GET /clockify/api/v1/workspaces/{workspaceId}/time-entries/{timeEntryId}
        ```
        
        ### Update Time Entry
        ```bash
        PUT /clockify/api/v1/workspaces/{workspaceId}/time-entries/{timeEntryId}
        Content-Type: application/json
        
        {
          "description": "Updated description",
          "end": "2026-02-13T11:00:00Z"
        }
        ```
        
        ### Delete Time Entry
        ```bash
        DELETE /clockify/api/v1/workspaces/{workspaceId}/time-entries/{timeEntryId}
        ```
        
        ### Stop Running Timer
        ```bash
        PATCH /clockify/api/v1/workspaces/{workspaceId}/user/{userId}/time-entries
        Content-Type: application/json
        
        {
          "end": "2026-02-13T17:00:00Z"
        }
        ```
        
        ## Notes
        
        - All IDs are strings
        - Timestamps must be in ISO 8601 format with UTC timezone (e.g., `2026-02-13T09:00:00Z`)
        - Duration format uses ISO 8601 duration (e.g., `PT1H` for 1 hour, `PT30M` for 30 minutes)
        - Cannot delete active projects or tasks - must archive them first
        - Page-based pagination with `page` and `page-size` query parameters
        - Response includes `Last-Page` header indicating if more pages exist
        - Rate limit: 50 requests per second per workspace
        
        ## Resources
        
        - [Clockify API Documentation](https://docs.clockify.me/)
        - [Time Entry API](https://docs.clockify.me/#tag/Time-entry)
        - [Project API](https://docs.clockify.me/#tag/Project)
        - [Workspace API](https://docs.clockify.me/#tag/Workspace)
        - [User API](https://docs.clockify.me/#tag/User)
        
    • coda
      • README.md 3.6 KB
        # Coda Routing Reference
        
        **App name:** `coda`
        **Base URL proxied:** `coda.io/apis/v1`
        
        ## API Path Pattern
        
        ```
        /coda/apis/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### Account
        
        #### Get Current User
        ```bash
        GET /coda/apis/v1/whoami
        ```
        
        ### Docs
        
        #### List Docs
        ```bash
        GET /coda/apis/v1/docs
        ```
        
        #### Create Doc
        ```bash
        POST /coda/apis/v1/docs
        ```
        
        #### Get Doc
        ```bash
        GET /coda/apis/v1/docs/{docId}
        ```
        
        #### Delete Doc
        ```bash
        DELETE /coda/apis/v1/docs/{docId}
        ```
        
        ### Pages
        
        #### List Pages
        ```bash
        GET /coda/apis/v1/docs/{docId}/pages
        ```
        
        #### Create Page
        ```bash
        POST /coda/apis/v1/docs/{docId}/pages
        ```
        
        #### Get Page
        ```bash
        GET /coda/apis/v1/docs/{docId}/pages/{pageIdOrName}
        ```
        
        #### Update Page
        ```bash
        PUT /coda/apis/v1/docs/{docId}/pages/{pageIdOrName}
        ```
        
        #### Delete Page
        ```bash
        DELETE /coda/apis/v1/docs/{docId}/pages/{pageIdOrName}
        ```
        
        ### Tables
        
        #### List Tables
        ```bash
        GET /coda/apis/v1/docs/{docId}/tables
        ```
        
        #### Get Table
        ```bash
        GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}
        ```
        
        ### Columns
        
        #### List Columns
        ```bash
        GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/columns
        ```
        
        #### Get Column
        ```bash
        GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/columns/{columnIdOrName}
        ```
        
        ### Rows
        
        #### List Rows
        ```bash
        GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows
        ```
        
        #### Get Row
        ```bash
        GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows/{rowIdOrName}
        ```
        
        #### Insert/Upsert Rows
        ```bash
        POST /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows
        ```
        
        #### Update Row
        ```bash
        PUT /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows/{rowIdOrName}
        ```
        
        #### Delete Row
        ```bash
        DELETE /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows/{rowIdOrName}
        ```
        
        ### Formulas
        
        #### List Formulas
        ```bash
        GET /coda/apis/v1/docs/{docId}/formulas
        ```
        
        #### Get Formula
        ```bash
        GET /coda/apis/v1/docs/{docId}/formulas/{formulaIdOrName}
        ```
        
        ### Controls
        
        #### List Controls
        ```bash
        GET /coda/apis/v1/docs/{docId}/controls
        ```
        
        #### Get Control
        ```bash
        GET /coda/apis/v1/docs/{docId}/controls/{controlIdOrName}
        ```
        
        ### Permissions
        
        #### Get Sharing Metadata
        ```bash
        GET /coda/apis/v1/docs/{docId}/acl/metadata
        ```
        
        #### List Permissions
        ```bash
        GET /coda/apis/v1/docs/{docId}/acl/permissions
        ```
        
        #### Add Permission
        ```bash
        POST /coda/apis/v1/docs/{docId}/acl/permissions
        ```
        
        #### Delete Permission
        ```bash
        DELETE /coda/apis/v1/docs/{docId}/acl/permissions/{permissionId}
        ```
        
        ### Categories
        
        #### List Categories
        ```bash
        GET /coda/apis/v1/categories
        ```
        
        ### Utilities
        
        #### Resolve Browser Link
        ```bash
        GET /coda/apis/v1/resolveBrowserLink?url={encodedUrl}
        ```
        
        #### Get Mutation Status
        ```bash
        GET /coda/apis/v1/mutationStatus/{requestId}
        ```
        
        ### Analytics
        
        #### List Doc Analytics
        ```bash
        GET /coda/apis/v1/analytics/docs
        ```
        
        #### List Pack Analytics
        ```bash
        GET /coda/apis/v1/analytics/packs
        ```
        
        #### Get Analytics Update Time
        ```bash
        GET /coda/apis/v1/analytics/updated
        ```
        
        ## Query Parameters
        
        Common parameters across endpoints:
        - `limit` - Page size (max: 200)
        - `pageToken` - Cursor for pagination
        - `query` - Search filter
        - `useColumnNames` - Use column names vs IDs (rows)
        - `valueFormat` - simple, simpleWithArrays, rich (rows)
        
        ## Notes
        
        - Mutations (create/update/delete) return HTTP 202 with requestId
        - Use `/mutationStatus/{requestId}` to check completion
        - Newly created docs need a moment before child resources are accessible
        - Table/column names can be used instead of IDs
        - Row operations require base tables, not views
        - Page-level analytics require Enterprise plan
        
        ## Resources
        
        - [Coda API Documentation](https://coda.io/developers/apis/v1)
        
    • cognito-forms
      • README.md 2.4 KB
        # Cognito Forms Routing Reference
        
        **App name:** `cognito-forms`
        **Base URL proxied:** `www.cognitoforms.com`
        
        ## API Path Pattern
        
        ```
        /cognito-forms/api/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Forms
        
        #### List Forms
        ```bash
        GET /cognito-forms/api/forms
        ```
        
        #### Get Form
        ```bash
        GET /cognito-forms/api/forms/{formId}
        ```
        
        ### Entries
        
        #### List Entries
        ```bash
        GET /cognito-forms/api/forms/{formId}/entries
        ```
        
        #### Get Entry
        ```bash
        GET /cognito-forms/api/forms/{formId}/entries/{entryId}
        ```
        
        #### Create Entry
        ```bash
        POST /cognito-forms/api/forms/{formId}/entries
        Content-Type: application/json
        
        {
          "Name": {
            "First": "John",
            "Last": "Doe"
          },
          "Email": "john.doe@example.com"
        }
        ```
        
        #### Update Entry
        ```bash
        PUT /cognito-forms/api/forms/{formId}/entries/{entryId}
        Content-Type: application/json
        
        {
          "Name": {
            "First": "Jane",
            "Last": "Doe"
          },
          "Email": "jane.doe@example.com"
        }
        ```
        
        #### Delete Entry
        ```bash
        DELETE /cognito-forms/api/forms/{formId}/entries/{entryId}
        ```
        
        ### Documents
        
        #### Get Document
        ```bash
        GET /cognito-forms/api/forms/{formId}/entries/{entryId}/documents/{templateNumber}
        ```
        
        ### Files
        
        #### Get File
        ```bash
        GET /cognito-forms/api/files/{fileId}
        ```
        
        ### Form Availability
        
        #### Set Form Availability
        ```bash
        PUT /cognito-forms/api/forms/{formId}/availability
        Content-Type: application/json
        
        {
          "start": "2026-03-01T00:00:00Z",
          "end": "2026-03-31T23:59:59Z",
          "message": "This form is currently unavailable."
        }
        ```
        
        ## Field Types
        
        Complex fields use nested JSON objects:
        
        - **Name**: `{"First": "...", "Last": "..."}`
        - **Address**: `{"Line1": "...", "Line2": "...", "City": "...", "State": "...", "PostalCode": "..."}`
        - **Choice (single)**: `"OptionValue"`
        - **Choice (multiple)**: `["Option1", "Option2"]`
        
        ## Notes
        
        - Form IDs can be internal form name (string) or numeric ID
        - Entry IDs can be entry number (integer) or entry ID (GUID)
        - Authentication is automatic - the router injects OAuth token
        - Rate limit: 100 requests per 60 seconds
        - File and document endpoints return temporary download URLs
        - API scopes: Read, Read/Write, or Read/Write/Delete
        
        ## Resources
        
        - [Cognito Forms API Overview](https://www.cognitoforms.com/support/475/data-integration/cognito-forms-api)
        - [REST API Reference](https://www.cognitoforms.com/support/476/data-integration/cognito-forms-api/rest-api-reference)
        - [API Reference](https://www.cognitoforms.com/support/476/data-integration/cognito-forms-api/api-reference)
        
    • companycam
      • README.md 3.6 KB
        # CompanyCam Routing Reference
        
        **App name:** `companycam`
        **Base URL proxied:** `api.companycam.com`
        
        ## API Path Pattern
        
        ```
        /companycam/v2/{resource}
        ```
        
        ## Common Endpoints
        
        ### Company
        
        #### Get Company
        ```bash
        GET /companycam/v2/company
        ```
        
        ### Users
        
        #### Get Current User
        ```bash
        GET /companycam/v2/users/current
        ```
        
        #### List Users
        ```bash
        GET /companycam/v2/users
        ```
        
        #### Create User
        ```bash
        POST /companycam/v2/users
        ```
        
        #### Get User
        ```bash
        GET /companycam/v2/users/{id}
        ```
        
        #### Update User
        ```bash
        PUT /companycam/v2/users/{id}
        ```
        
        #### Delete User
        ```bash
        DELETE /companycam/v2/users/{id}
        ```
        
        ### Projects
        
        #### List Projects
        ```bash
        GET /companycam/v2/projects
        ```
        
        #### Create Project
        ```bash
        POST /companycam/v2/projects
        ```
        
        #### Get Project
        ```bash
        GET /companycam/v2/projects/{id}
        ```
        
        #### Update Project
        ```bash
        PUT /companycam/v2/projects/{id}
        ```
        
        #### Delete Project
        ```bash
        DELETE /companycam/v2/projects/{id}
        ```
        
        #### Archive Project
        ```bash
        PATCH /companycam/v2/projects/{id}/archive
        ```
        
        #### Restore Project
        ```bash
        PUT /companycam/v2/projects/{id}/restore
        ```
        
        ### Project Photos
        
        #### List Project Photos
        ```bash
        GET /companycam/v2/projects/{project_id}/photos
        ```
        
        #### Add Photo to Project
        ```bash
        POST /companycam/v2/projects/{project_id}/photos
        ```
        
        ### Project Comments
        
        #### List Project Comments
        ```bash
        GET /companycam/v2/projects/{project_id}/comments
        ```
        
        #### Add Project Comment
        ```bash
        POST /companycam/v2/projects/{project_id}/comments
        ```
        
        ### Project Labels
        
        #### List Project Labels
        ```bash
        GET /companycam/v2/projects/{project_id}/labels
        ```
        
        #### Add Labels
        ```bash
        POST /companycam/v2/projects/{project_id}/labels
        ```
        
        ### Project Documents
        
        #### List Documents
        ```bash
        GET /companycam/v2/projects/{project_id}/documents
        ```
        
        #### Upload Document
        ```bash
        POST /companycam/v2/projects/{project_id}/documents
        ```
        
        ### Photos
        
        #### List All Photos
        ```bash
        GET /companycam/v2/photos
        ```
        
        #### Get Photo
        ```bash
        GET /companycam/v2/photos/{id}
        ```
        
        #### Update Photo
        ```bash
        PUT /companycam/v2/photos/{id}
        ```
        
        #### Delete Photo
        ```bash
        DELETE /companycam/v2/photos/{id}
        ```
        
        ### Tags
        
        #### List Tags
        ```bash
        GET /companycam/v2/tags
        ```
        
        #### Create Tag
        ```bash
        POST /companycam/v2/tags
        ```
        
        #### Get Tag
        ```bash
        GET /companycam/v2/tags/{id}
        ```
        
        #### Update Tag
        ```bash
        PUT /companycam/v2/tags/{id}
        ```
        
        #### Delete Tag
        ```bash
        DELETE /companycam/v2/tags/{id}
        ```
        
        ### Groups
        
        #### List Groups
        ```bash
        GET /companycam/v2/groups
        ```
        
        #### Create Group
        ```bash
        POST /companycam/v2/groups
        ```
        
        #### Get Group
        ```bash
        GET /companycam/v2/groups/{id}
        ```
        
        #### Update Group
        ```bash
        PUT /companycam/v2/groups/{id}
        ```
        
        #### Delete Group
        ```bash
        DELETE /companycam/v2/groups/{id}
        ```
        
        ### Checklists
        
        #### List Checklists
        ```bash
        GET /companycam/v2/checklists
        ```
        
        ### Webhooks
        
        #### List Webhooks
        ```bash
        GET /companycam/v2/webhooks
        ```
        
        #### Create Webhook
        ```bash
        POST /companycam/v2/webhooks
        ```
        
        #### Get Webhook
        ```bash
        GET /companycam/v2/webhooks/{id}
        ```
        
        #### Update Webhook
        ```bash
        PUT /companycam/v2/webhooks/{id}
        ```
        
        #### Delete Webhook
        ```bash
        DELETE /companycam/v2/webhooks/{id}
        ```
        
        ## Query Parameters
        
        - `page` - Page number (default: 1)
        - `per_page` - Results per page (default: 25)
        - `query` - Search query (projects)
        - `status` - Filter by status
        - `modified_since` - Unix timestamp for filtering
        
        ## Notes
        
        - IDs are returned as strings
        - Timestamps are Unix timestamps (seconds since epoch)
        - Comments must be wrapped in a `comment` object
        - Webhooks use `scopes` parameter (not `events`)
        - Rate limits: 240 GET/min, 100 POST/PUT/DELETE/min
        
        ## Resources
        
        - [CompanyCam API Documentation](https://docs.companycam.com)
        
    • confluence
      • README.md 4.6 KB
        # Confluence Routing Reference
        
        **App name:** `confluence`
        **Base URL proxied:** `api.atlassian.com`
        
        ## Getting Cloud ID
        
        Confluence Cloud requires a cloud ID in the API path. First, get accessible resources:
        
        ```bash
        GET /confluence/oauth/token/accessible-resources
        ```
        
        Response:
        ```json
        [{
          "id": "62909843-b784-4c35-b770-e4e2a26f024b",
          "url": "https://yoursite.atlassian.net",
          "name": "yoursite",
          "scopes": ["read:confluence-content.all", "write:confluence-content", ...]
        }]
        ```
        
        ## API Path Pattern
        
        V2 API (recommended):
        ```
        /confluence/ex/confluence/{cloudId}/wiki/api/v2/{endpoint}
        ```
        
        V1 REST API (limited):
        ```
        /confluence/ex/confluence/{cloudId}/wiki/rest/api/{endpoint}
        ```
        
        ## Common Endpoints (V2 API)
        
        ### Pages
        
        #### List Pages
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages?space-id={spaceId}
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages?limit=25
        ```
        
        #### Get Page
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}?body-format=storage
        ```
        
        #### Create Page
        ```bash
        POST /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages
        Content-Type: application/json
        
        {
          "spaceId": "98306",
          "status": "current",
          "title": "Page Title",
          "body": {
            "representation": "storage",
            "value": "<p>Page content</p>"
          }
        }
        ```
        
        #### Update Page
        ```bash
        PUT /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}
        Content-Type: application/json
        
        {
          "id": "98391",
          "status": "current",
          "title": "Updated Title",
          "body": {
            "representation": "storage",
            "value": "<p>Updated content</p>"
          },
          "version": {"number": 2}
        }
        ```
        
        #### Delete Page
        ```bash
        DELETE /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}
        ```
        
        #### Get Page Children
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}/children
        ```
        
        #### Get Page Labels
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}/labels
        ```
        
        #### Get Page Comments
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}/footer-comments
        ```
        
        ### Spaces
        
        #### List Spaces
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/spaces
        ```
        
        #### Get Space
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/spaces/{spaceId}
        ```
        
        #### Get Space Pages
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/spaces/{spaceId}/pages
        ```
        
        ### Blogposts
        
        #### List Blogposts
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/blogposts
        ```
        
        #### Create Blogpost
        ```bash
        POST /confluence/ex/confluence/{cloudId}/wiki/api/v2/blogposts
        Content-Type: application/json
        
        {
          "spaceId": "98306",
          "title": "Blog Post Title",
          "body": {
            "representation": "storage",
            "value": "<p>Blog content</p>"
          }
        }
        ```
        
        ### Comments
        
        #### List Footer Comments
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/footer-comments
        ```
        
        #### Create Footer Comment
        ```bash
        POST /confluence/ex/confluence/{cloudId}/wiki/api/v2/footer-comments
        Content-Type: application/json
        
        {
          "pageId": "98391",
          "body": {
            "representation": "storage",
            "value": "<p>Comment text</p>"
          }
        }
        ```
        
        ### Attachments
        
        #### List Attachments
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/attachments
        ```
        
        #### Get Page Attachments
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}/attachments
        ```
        
        ### Tasks
        
        #### List Tasks
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/tasks
        ```
        
        ### User (V1 API)
        
        #### Get Current User
        ```bash
        GET /confluence/ex/confluence/{cloudId}/wiki/rest/api/user/current
        ```
        
        ## Notes
        
        - Always fetch cloud ID first using `/oauth/token/accessible-resources`
        - V2 API is recommended for most operations
        - Content uses Confluence storage format (XML-like): `<p>Paragraph</p>`
        - When updating pages, you must increment the version number
        - DELETE operations return 204 No Content
        - Pagination uses cursor-based approach with `_links.next` containing the cursor value
        
        ## Resources
        
        - [Confluence REST API V2 Introduction](https://developer.atlassian.com/cloud/confluence/rest/v2/intro/)
        - [Page Operations](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-page/)
        - [Space Operations](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-space/)
        - [Blogpost Operations](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-blog-post/)
        - [Comment Operations](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-comment/)
        - [Confluence Storage Format](https://confluence.atlassian.com/doc/confluence-storage-format-790796544.html)
        
    • constant-contact
      • README.md 2.5 KB
        # Constant Contact Routing Reference
        
        **App name:** `constant-contact`
        **Base URL proxied:** `api.cc.email`
        
        ## API Path Pattern
        
        ```
        /constant-contact/v3/{resource}
        ```
        
        ## Common Endpoints
        
        ### List Contacts
        ```bash
        GET /constant-contact/v3/contacts
        ```
        
        ### Get Contact
        ```bash
        GET /constant-contact/v3/contacts/{contact_id}
        ```
        
        ### Create Contact
        ```bash
        POST /constant-contact/v3/contacts
        Content-Type: application/json
        
        {
          "email_address": {
            "address": "john@example.com",
            "permission_to_send": "implicit"
          },
          "first_name": "John",
          "last_name": "Doe",
          "list_memberships": ["list-uuid"]
        }
        ```
        
        ### Update Contact
        ```bash
        PUT /constant-contact/v3/contacts/{contact_id}
        Content-Type: application/json
        
        {
          "first_name": "John",
          "last_name": "Smith"
        }
        ```
        
        ### Delete Contact
        ```bash
        DELETE /constant-contact/v3/contacts/{contact_id}
        ```
        
        ### List Contact Lists
        ```bash
        GET /constant-contact/v3/contact_lists
        ```
        
        ### Create Contact List
        ```bash
        POST /constant-contact/v3/contact_lists
        Content-Type: application/json
        
        {
          "name": "Newsletter Subscribers",
          "description": "Main newsletter list"
        }
        ```
        
        ### List Email Campaigns
        ```bash
        GET /constant-contact/v3/emails
        ```
        
        ### Create Email Campaign
        ```bash
        POST /constant-contact/v3/emails
        Content-Type: application/json
        
        {
          "name": "March Newsletter",
          "email_campaign_activities": [
            {
              "format_type": 5,
              "from_name": "Company",
              "from_email": "marketing@example.com",
              "reply_to_email": "reply@example.com",
              "subject": "Newsletter",
              "html_content": "<html><body>Hello</body></html>"
            }
          ]
        }
        ```
        
        ### List Segments
        ```bash
        GET /constant-contact/v3/segments
        ```
        
        ### List Tags
        ```bash
        GET /constant-contact/v3/contact_tags
        ```
        
        ### Get Account Summary
        ```bash
        GET /constant-contact/v3/account/summary
        ```
        
        ### Email Campaign Summaries
        ```bash
        GET /constant-contact/v3/reports/summary_reports/email_campaign_summaries
        ```
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Resource IDs use UUID format (36 characters with hyphens)
        - All dates use ISO-8601 format
        - Uses cursor-based pagination with `limit` and `cursor` parameters
        - Maximum 1,000 contact lists per account
        - Bulk operations are asynchronous
        
        ## Resources
        
        - [V3 API Overview](https://developer.constantcontact.com/api_guide/getting_started.html)
        - [API Reference](https://developer.constantcontact.com/api_reference/index.html)
        - [Technical Overview](https://developer.constantcontact.com/api_guide/v3_technical_overview.html)
        
    • dropbox
      • README.md 3.1 KB
        # Dropbox Routing Reference
        
        **App name:** `dropbox`
        **Base URL proxied:** `api.dropboxapi.com`
        
        ## API Path Pattern
        
        ```
        /dropbox/2/{endpoint}
        ```
        
        **Important:** All Dropbox API v2 endpoints use HTTP POST with JSON request bodies.
        
        ## Common Endpoints
        
        ### Users
        
        #### Get Current Account
        ```bash
        POST /dropbox/2/users/get_current_account
        Content-Type: application/json
        
        null
        ```
        
        #### Get Space Usage
        ```bash
        POST /dropbox/2/users/get_space_usage
        Content-Type: application/json
        
        null
        ```
        
        ### Files
        
        #### List Folder
        ```bash
        POST /dropbox/2/files/list_folder
        Content-Type: application/json
        
        {
          "path": ""
        }
        ```
        
        Use empty string `""` for root folder.
        
        #### Continue Listing
        ```bash
        POST /dropbox/2/files/list_folder/continue
        Content-Type: application/json
        
        {
          "cursor": "..."
        }
        ```
        
        #### Get Metadata
        ```bash
        POST /dropbox/2/files/get_metadata
        Content-Type: application/json
        
        {
          "path": "/document.pdf"
        }
        ```
        
        #### Create Folder
        ```bash
        POST /dropbox/2/files/create_folder_v2
        Content-Type: application/json
        
        {
          "path": "/New Folder",
          "autorename": false
        }
        ```
        
        #### Copy
        ```bash
        POST /dropbox/2/files/copy_v2
        Content-Type: application/json
        
        {
          "from_path": "/source/file.pdf",
          "to_path": "/destination/file.pdf"
        }
        ```
        
        #### Move
        ```bash
        POST /dropbox/2/files/move_v2
        Content-Type: application/json
        
        {
          "from_path": "/old/file.pdf",
          "to_path": "/new/file.pdf"
        }
        ```
        
        #### Delete
        ```bash
        POST /dropbox/2/files/delete_v2
        Content-Type: application/json
        
        {
          "path": "/file-to-delete.pdf"
        }
        ```
        
        #### Get Temporary Link
        ```bash
        POST /dropbox/2/files/get_temporary_link
        Content-Type: application/json
        
        {
          "path": "/document.pdf"
        }
        ```
        
        ### Search
        
        #### Search Files
        ```bash
        POST /dropbox/2/files/search_v2
        Content-Type: application/json
        
        {
          "query": "document"
        }
        ```
        
        ### Revisions
        
        #### List Revisions
        ```bash
        POST /dropbox/2/files/list_revisions
        Content-Type: application/json
        
        {
          "path": "/document.pdf"
        }
        ```
        
        ### Tags
        
        #### Get Tags
        ```bash
        POST /dropbox/2/files/tags/get
        Content-Type: application/json
        
        {
          "paths": ["/document.pdf"]
        }
        ```
        
        #### Add Tag
        ```bash
        POST /dropbox/2/files/tags/add
        Content-Type: application/json
        
        {
          "path": "/document.pdf",
          "tag_text": "important"
        }
        ```
        
        #### Remove Tag
        ```bash
        POST /dropbox/2/files/tags/remove
        Content-Type: application/json
        
        {
          "path": "/document.pdf",
          "tag_text": "important"
        }
        ```
        
        ## Pagination
        
        Dropbox uses cursor-based pagination:
        
        ```bash
        POST /dropbox/2/files/list_folder
        # Response includes "cursor" and "has_more": true/false
        
        POST /dropbox/2/files/list_folder/continue
        # Use cursor from previous response
        ```
        
        ## Notes
        
        - All endpoints use POST method
        - Request bodies are JSON
        - Use empty string `""` for root folder path
        - Paths are case-insensitive but case-preserving
        - Tag text must match pattern `[\w]+` (alphanumeric and underscores)
        - Temporary links expire after 4 hours
        
        ## Resources
        
        - [Dropbox HTTP API Overview](https://www.dropbox.com/developers/documentation/http/overview)
        - [Dropbox API Explorer](https://dropbox.github.io/dropbox-api-v2-explorer/)
        - [DBX File Access Guide](https://developers.dropbox.com/dbx-file-access-guide)
        
    • dropbox-business
      • README.md 11.7 KB
        # Dropbox Business Routing Reference
        
        **App name:** `dropbox-business`
        **Base URL proxied:** `api.dropboxapi.com`
        
        ## API Path Pattern
        
        ```
        /dropbox-business/2/{endpoint}
        ```
        
        **Note:** Dropbox Business API uses POST for almost all endpoints, including read operations. Request bodies should be JSON (use `null` for endpoints with no parameters).
        
        ## Team Information
        
        ### Get Team Info
        ```bash
        POST /dropbox-business/2/team/get_info
        Content-Type: application/json
        
        null
        ```
        
        ### Get Team Features
        ```bash
        POST /dropbox-business/2/team/features/get_values
        Content-Type: application/json
        
        {
          "features": [
            {".tag": "upload_api_rate_limit"},
            {".tag": "has_team_shared_dropbox"},
            {".tag": "has_team_file_events"},
            {".tag": "has_team_selective_sync"}
          ]
        }
        ```
        
        ### Get Authenticated Admin
        ```bash
        POST /dropbox-business/2/team/token/get_authenticated_admin
        Content-Type: application/json
        
        null
        ```
        
        ## Team Members
        
        ### List Members
        ```bash
        POST /dropbox-business/2/team/members/list
        Content-Type: application/json
        
        {"limit": 100}
        ```
        
        ### List Members (V2) - Recommended
        ```bash
        POST /dropbox-business/2/team/members/list_v2
        Content-Type: application/json
        
        {"limit": 100, "include_removed": false}
        ```
        
        ### Continue Listing Members
        ```bash
        POST /dropbox-business/2/team/members/list/continue
        Content-Type: application/json
        
        {"cursor": "..."}
        ```
        
        ### Get Member Info
        ```bash
        POST /dropbox-business/2/team/members/get_info
        Content-Type: application/json
        
        {"members": [{".tag": "email", "email": "user@company.com"}]}
        ```
        
        ### Get Member Info (V2) - Recommended
        ```bash
        POST /dropbox-business/2/team/members/get_info_v2
        Content-Type: application/json
        
        {"members": [{".tag": "email", "email": "user@company.com"}]}
        ```
        
        ### Add Member
        ```bash
        POST /dropbox-business/2/team/members/add
        Content-Type: application/json
        
        {
          "new_members": [{
            "member_email": "user@company.com",
            "member_given_name": "John",
            "member_surname": "Doe",
            "send_welcome_email": true
          }]
        }
        ```
        
        ### Suspend Member
        ```bash
        POST /dropbox-business/2/team/members/suspend
        Content-Type: application/json
        
        {"user": {".tag": "email", "email": "user@company.com"}, "wipe_data": false}
        ```
        
        ### Unsuspend Member
        ```bash
        POST /dropbox-business/2/team/members/unsuspend
        Content-Type: application/json
        
        {"user": {".tag": "email", "email": "user@company.com"}}
        ```
        
        ### Remove Member
        ```bash
        POST /dropbox-business/2/team/members/remove
        Content-Type: application/json
        
        {
          "user": {".tag": "email", "email": "user@company.com"},
          "wipe_data": true,
          "transfer_dest_id": {".tag": "email", "email": "admin@company.com"},
          "transfer_admin_id": {".tag": "email", "email": "admin@company.com"},
          "keep_account": false
        }
        ```
        
        ### Send Welcome Email
        ```bash
        POST /dropbox-business/2/team/members/send_welcome_email
        Content-Type: application/json
        
        {".tag": "email", "email": "pending@company.com"}
        ```
        
        ### Set Member Profile (V2)
        ```bash
        POST /dropbox-business/2/team/members/set_profile_v2
        Content-Type: application/json
        
        {
          "user": {".tag": "team_member_id", "team_member_id": "dbmid:AAA..."},
          "new_given_name": "John",
          "new_surname": "Smith"
        }
        ```
        
        ### Set Admin Permissions (V2)
        ```bash
        POST /dropbox-business/2/team/members/set_admin_permissions_v2
        Content-Type: application/json
        
        {
          "user": {".tag": "email", "email": "user@company.com"},
          "new_roles": ["pid_dbtmr:..."]
        }
        ```
        
        ### Delete Profile Photo (V2)
        ```bash
        POST /dropbox-business/2/team/members/delete_profile_photo_v2
        Content-Type: application/json
        
        {"user": {".tag": "team_member_id", "team_member_id": "dbmid:AAA..."}}
        ```
        
        ## Secondary Emails
        
        ### Add Secondary Emails
        ```bash
        POST /dropbox-business/2/team/members/secondary_emails/add
        Content-Type: application/json
        
        {
          "new_secondary_emails": [{
            "user": {".tag": "email", "email": "user@company.com"},
            "secondary_emails": ["alias@company.com"]
          }]
        }
        ```
        
        ### Delete Secondary Emails
        ```bash
        POST /dropbox-business/2/team/members/secondary_emails/delete
        Content-Type: application/json
        
        {
          "emails_to_delete": [{
            "user": {".tag": "email", "email": "user@company.com"},
            "secondary_emails": ["alias@company.com"]
          }]
        }
        ```
        
        ### Resend Verification Emails
        ```bash
        POST /dropbox-business/2/team/members/secondary_emails/resend_verification_emails
        Content-Type: application/json
        
        {
          "emails_to_resend": [{
            "user": {".tag": "email", "email": "user@company.com"},
            "secondary_emails": ["alias@company.com"]
          }]
        }
        ```
        
        ## Groups
        
        ### List Groups
        ```bash
        POST /dropbox-business/2/team/groups/list
        Content-Type: application/json
        
        {"limit": 100}
        ```
        
        ### Get Group Info
        ```bash
        POST /dropbox-business/2/team/groups/get_info
        Content-Type: application/json
        
        {".tag": "group_ids", "group_ids": ["g:1d31f47b..."]}
        ```
        
        ### List Group Members
        ```bash
        POST /dropbox-business/2/team/groups/members/list
        Content-Type: application/json
        
        {
          "group": {".tag": "group_id", "group_id": "g:1d31f47b..."},
          "limit": 100
        }
        ```
        
        ### Create Group
        ```bash
        POST /dropbox-business/2/team/groups/create
        Content-Type: application/json
        
        {
          "group_name": "Team Name",
          "group_management_type": {".tag": "company_managed"}
        }
        ```
        
        ### Update Group
        ```bash
        POST /dropbox-business/2/team/groups/update
        Content-Type: application/json
        
        {
          "group": {".tag": "group_id", "group_id": "g:1d31f47b..."},
          "new_group_name": "New Name"
        }
        ```
        
        ### Add Members to Group
        ```bash
        POST /dropbox-business/2/team/groups/members/add
        Content-Type: application/json
        
        {
          "group": {".tag": "group_id", "group_id": "g:1d31f47b..."},
          "members": [{"user": {".tag": "email", "email": "user@company.com"}, "access_type": {".tag": "member"}}],
          "return_members": true
        }
        ```
        
        ### Remove Members from Group
        ```bash
        POST /dropbox-business/2/team/groups/members/remove
        Content-Type: application/json
        
        {
          "group": {".tag": "group_id", "group_id": "g:1d31f47b..."},
          "users": [{".tag": "email", "email": "user@company.com"}],
          "return_members": true
        }
        ```
        
        ### Delete Group
        ```bash
        POST /dropbox-business/2/team/groups/delete
        Content-Type: application/json
        
        {".tag": "group_id", "group_id": "g:1d31f47b..."}
        ```
        
        ### Check Group Job Status
        ```bash
        POST /dropbox-business/2/team/groups/job_status/get
        Content-Type: application/json
        
        {"async_job_id": "dbjid:..."}
        ```
        
        ## Team Folders
        
        ### List Team Folders
        ```bash
        POST /dropbox-business/2/team/team_folder/list
        Content-Type: application/json
        
        {"limit": 100}
        ```
        
        ### Get Team Folder Info
        ```bash
        POST /dropbox-business/2/team/team_folder/get_info
        Content-Type: application/json
        
        {"team_folder_ids": ["13646676387"]}
        ```
        
        ### Create Team Folder
        ```bash
        POST /dropbox-business/2/team/team_folder/create
        Content-Type: application/json
        
        {"name": "Folder Name", "sync_setting": {".tag": "default"}}
        ```
        
        ### Rename Team Folder
        ```bash
        POST /dropbox-business/2/team/team_folder/rename
        Content-Type: application/json
        
        {"team_folder_id": "13646676387", "name": "New Name"}
        ```
        
        ### Archive Team Folder
        ```bash
        POST /dropbox-business/2/team/team_folder/archive
        Content-Type: application/json
        
        {"team_folder_id": "13646676387", "force_async_off": false}
        ```
        
        ### Activate Team Folder
        ```bash
        POST /dropbox-business/2/team/team_folder/activate
        Content-Type: application/json
        
        {"team_folder_id": "13646676387"}
        ```
        
        ### Update Sync Settings
        ```bash
        POST /dropbox-business/2/team/team_folder/update_sync_settings
        Content-Type: application/json
        
        {"team_folder_id": "13646676387", "sync_setting": {".tag": "default"}}
        ```
        
        ### Permanently Delete Team Folder
        ```bash
        POST /dropbox-business/2/team/team_folder/permanently_delete
        Content-Type: application/json
        
        {"team_folder_id": "13646676387"}
        ```
        
        ## Namespaces
        
        ### List Namespaces
        ```bash
        POST /dropbox-business/2/team/namespaces/list
        Content-Type: application/json
        
        {"limit": 100}
        ```
        
        ## Devices
        
        ### List Members' Devices
        ```bash
        POST /dropbox-business/2/team/devices/list_members_devices
        Content-Type: application/json
        
        {}
        ```
        
        ### List Member Devices
        ```bash
        POST /dropbox-business/2/team/devices/list_member_devices
        Content-Type: application/json
        
        {"team_member_id": "dbmid:AAA..."}
        ```
        
        ### Revoke Device Session
        ```bash
        POST /dropbox-business/2/team/devices/revoke_device_session
        Content-Type: application/json
        
        {".tag": "web_session", "session_id": "dbwsid:...", "team_member_id": "dbmid:AAA..."}
        ```
        
        ### Revoke Device Sessions (Batch)
        ```bash
        POST /dropbox-business/2/team/devices/revoke_device_session_batch
        Content-Type: application/json
        
        {
          "revoke_devices": [
            {".tag": "web_session", "session_id": "dbwsid:...", "team_member_id": "dbmid:AAA..."}
          ]
        }
        ```
        
        ## Linked Apps
        
        ### List Members' Linked Apps
        ```bash
        POST /dropbox-business/2/team/linked_apps/list_members_linked_apps
        Content-Type: application/json
        
        {}
        ```
        
        ### List Team Linked Apps
        ```bash
        POST /dropbox-business/2/team/linked_apps/list_team_linked_apps
        Content-Type: application/json
        
        {}
        ```
        
        ### Revoke Linked App
        ```bash
        POST /dropbox-business/2/team/linked_apps/revoke_linked_app
        Content-Type: application/json
        
        {"app_id": "...", "team_member_id": "dbmid:AAA..."}
        ```
        
        ## Member Space Limits
        
        ### Get Custom Quotas
        ```bash
        POST /dropbox-business/2/team/member_space_limits/get_custom_quota
        Content-Type: application/json
        
        {"users": [{".tag": "email", "email": "user@company.com"}]}
        ```
        
        ### Set Custom Quotas
        ```bash
        POST /dropbox-business/2/team/member_space_limits/set_custom_quota
        Content-Type: application/json
        
        {
          "users_and_quotas": [{
            "user": {".tag": "email", "email": "user@company.com"},
            "quota_gb": 100
          }]
        }
        ```
        
        ### List Excluded Users
        ```bash
        POST /dropbox-business/2/team/member_space_limits/excluded_users/list
        Content-Type: application/json
        
        {}
        ```
        
        ## Sharing Allowlist
        
        ### List Sharing Allowlist
        ```bash
        POST /dropbox-business/2/team/sharing_allowlist/list
        Content-Type: application/json
        
        {}
        ```
        
        ### Add to Sharing Allowlist
        ```bash
        POST /dropbox-business/2/team/sharing_allowlist/add
        Content-Type: application/json
        
        {"domains": ["partner.com"], "emails": ["external@client.com"]}
        ```
        
        ## Audit Log (Team Log)
        
        ### Get Events
        ```bash
        POST /dropbox-business/2/team_log/get_events
        Content-Type: application/json
        
        {"limit": 100, "category": {".tag": "members"}}
        ```
        
        ### Continue Getting Events
        ```bash
        POST /dropbox-business/2/team_log/get_events/continue
        Content-Type: application/json
        
        {"cursor": "..."}
        ```
        
        ## Member File Access
        
        Use the `Dropbox-API-Select-User` header with a team_member_id to access files on behalf of a member.
        
        ### List Member's Files
        ```bash
        POST /dropbox-business/2/files/list_folder
        Content-Type: application/json
        Dropbox-API-Select-User: dbmid:AAA...
        
        {"path": ""}
        ```
        
        ### List Member's Shared Folders
        ```bash
        POST /dropbox-business/2/sharing/list_folders
        Content-Type: application/json
        Dropbox-API-Select-User: dbmid:AAA...
        
        {}
        ```
        
        ## Notes
        
        - All endpoints use POST method (even read operations)
        - Request bodies must be JSON (use `null` for no-parameter endpoints)
        - Many fields use `.tag` format for type indication
        - Pagination uses `cursor` and `has_more` fields
        - Use V2 endpoints for enhanced responses with roles info
        - `Dropbox-API-Select-User` header enables member file access
        - System-managed groups cannot be modified
        - Reports endpoints (`team/reports/*`) are deprecated
        
        ## OAuth Scopes
        
        | Scope | Usage |
        |-------|-------|
        | `team_info.read` | Team info, features |
        | `members.read` | List/get members |
        | `members.write` | Add/modify members |
        | `members.delete` | Remove members |
        | `groups.read` | List/get groups |
        | `groups.write` | Create/modify groups |
        | `sessions.list` | List devices/sessions |
        | `sessions.modify` | Revoke sessions |
        | `events.read` | Team audit log |
        | `team_data.member` | Select-User header |
        
        ## Resources
        
        - [Dropbox Business API Documentation](https://www.dropbox.com/developers/documentation/http/teams)
        - [Team Administration Guide](https://developers.dropbox.com/dbx-team-administration-guide)
        - [Team Files Guide](https://developers.dropbox.com/dbx-team-files-guide)
        
    • elevenlabs
      • README.md 1.8 KB
        # ElevenLabs Routing Reference
        
        **App name:** `elevenlabs`
        **Base URL proxied:** `api.elevenlabs.io`
        
        ## API Path Pattern
        
        ```
        /elevenlabs/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### Text-to-Speech
        
        #### Convert Text to Speech
        ```bash
        POST /elevenlabs/v1/text-to-speech/{voice_id}
        ```
        
        #### Stream Text to Speech
        ```bash
        POST /elevenlabs/v1/text-to-speech/{voice_id}/stream
        ```
        
        ### Voices
        
        #### List Voices
        ```bash
        GET /elevenlabs/v1/voices
        ```
        
        #### Get Voice
        ```bash
        GET /elevenlabs/v1/voices/{voice_id}
        ```
        
        #### Create Voice Clone
        ```bash
        POST /elevenlabs/v1/voices/add
        ```
        
        #### Delete Voice
        ```bash
        DELETE /elevenlabs/v1/voices/{voice_id}
        ```
        
        ### Models
        
        #### List Models
        ```bash
        GET /elevenlabs/v1/models
        ```
        
        ### User
        
        #### Get User Info
        ```bash
        GET /elevenlabs/v1/user
        ```
        
        #### Get Subscription Info
        ```bash
        GET /elevenlabs/v1/user/subscription
        ```
        
        ### History
        
        #### List History
        ```bash
        GET /elevenlabs/v1/history?page_size=100
        ```
        
        #### Get Audio from History
        ```bash
        GET /elevenlabs/v1/history/{history_item_id}/audio
        ```
        
        ### Sound Effects
        
        #### Generate Sound Effect
        ```bash
        POST /elevenlabs/v1/sound-generation
        ```
        
        ### Audio Isolation
        
        #### Remove Background Noise
        ```bash
        POST /elevenlabs/v1/audio-isolation
        ```
        
        ### Speech-to-Text
        
        #### Transcribe Audio
        ```bash
        POST /elevenlabs/v1/speech-to-text
        ```
        
        ### Speech-to-Speech
        
        #### Convert Voice
        ```bash
        POST /elevenlabs/v1/speech-to-speech/{voice_id}
        ```
        
        ## Notes
        
        - Text-to-Speech returns audio/mpeg data
        - Sound Effects returns audio/mpeg data
        - Cursor-based pagination with `page_size` and `start_after_history_item_id`
        - Response headers include `x-character-count` for usage tracking
        - Models available: `eleven_multilingual_v2`, `eleven_turbo_v2_5`
        
        ## Resources
        
        - [ElevenLabs API Documentation](https://elevenlabs.io/docs/api-reference)
        
    • eventbrite
      • README.md 4.2 KB
        # Eventbrite Routing Reference
        
        **App name:** `eventbrite`
        **Base URL proxied:** `www.eventbriteapi.com`
        
        ## API Path Pattern
        
        ```
        /eventbrite/v3/{resource}/
        ```
        
        Note: All Eventbrite API paths should end with a trailing slash.
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /eventbrite/v3/users/me/
        ```
        
        ### List User Organizations
        ```bash
        GET /eventbrite/v3/users/me/organizations/
        ```
        
        ### List User Orders
        ```bash
        GET /eventbrite/v3/users/me/orders/
        ```
        
        ### List Organization Events
        ```bash
        GET /eventbrite/v3/organizations/{organization_id}/events/
        ```
        
        Query parameters:
        - `status` - Filter: `draft`, `live`, `started`, `ended`, `completed`, `canceled`
        - `order_by` - Sort: `start_asc`, `start_desc`, `created_asc`, `created_desc`
        - `time_filter` - Filter: `current_future`, `past`
        
        ### Create Event
        ```bash
        POST /eventbrite/v3/organizations/{organization_id}/events/
        Content-Type: application/json
        
        {
          "event": {
            "name": {"html": "My Event"},
            "start": {"timezone": "America/Los_Angeles", "utc": "2026-03-01T19:00:00Z"},
            "end": {"timezone": "America/Los_Angeles", "utc": "2026-03-01T22:00:00Z"},
            "currency": "USD"
          }
        }
        ```
        
        ### Get Event
        ```bash
        GET /eventbrite/v3/events/{event_id}/
        ```
        
        ### Update Event
        ```bash
        POST /eventbrite/v3/events/{event_id}/
        Content-Type: application/json
        
        {
          "event": {
            "name": {"html": "Updated Name"}
          }
        }
        ```
        
        ### Publish Event
        ```bash
        POST /eventbrite/v3/events/{event_id}/publish/
        ```
        
        ### Cancel Event
        ```bash
        POST /eventbrite/v3/events/{event_id}/cancel/
        ```
        
        ### Delete Event
        ```bash
        DELETE /eventbrite/v3/events/{event_id}/
        ```
        
        ### List Ticket Classes
        ```bash
        GET /eventbrite/v3/events/{event_id}/ticket_classes/
        ```
        
        ### Create Ticket Class
        ```bash
        POST /eventbrite/v3/events/{event_id}/ticket_classes/
        Content-Type: application/json
        
        {
          "ticket_class": {
            "name": "General Admission",
            "quantity_total": 100,
            "cost": "USD,2500"
          }
        }
        ```
        
        ### List Event Attendees
        ```bash
        GET /eventbrite/v3/events/{event_id}/attendees/
        ```
        
        ### List Event Orders
        ```bash
        GET /eventbrite/v3/events/{event_id}/orders/
        ```
        
        ### Get Order
        ```bash
        GET /eventbrite/v3/orders/{order_id}/
        ```
        
        ### List Organization Venues
        ```bash
        GET /eventbrite/v3/organizations/{organization_id}/venues/
        ```
        
        ### Create Venue
        ```bash
        POST /eventbrite/v3/organizations/{organization_id}/venues/
        Content-Type: application/json
        
        {
          "venue": {
            "name": "Conference Center",
            "address": {
              "address_1": "123 Main St",
              "city": "San Francisco",
              "region": "CA",
              "postal_code": "94105",
              "country": "US"
            }
          }
        }
        ```
        
        ### Get Venue
        ```bash
        GET /eventbrite/v3/venues/{venue_id}/
        ```
        
        ### List Categories
        ```bash
        GET /eventbrite/v3/categories/
        ```
        
        ### Get Category
        ```bash
        GET /eventbrite/v3/categories/{category_id}/
        ```
        
        ### List Subcategories
        ```bash
        GET /eventbrite/v3/subcategories/
        ```
        
        ### List Formats
        ```bash
        GET /eventbrite/v3/formats/
        ```
        
        ### List Countries
        ```bash
        GET /eventbrite/v3/system/countries/
        ```
        
        ### List Regions
        ```bash
        GET /eventbrite/v3/system/regions/
        ```
        
        ## Expansions
        
        Include related data with the `expand` parameter:
        
        ```bash
        GET /eventbrite/v3/events/{event_id}/?expand=venue,ticket_classes,category
        ```
        
        Available expansions: `venue`, `ticket_classes`, `category`, `subcategory`, `format`, `organizer`
        
        ## Pagination
        
        Use `continuation` token for pagination:
        
        ```bash
        GET /eventbrite/v3/organizations/{org_id}/events/?page_size=50
        GET /eventbrite/v3/organizations/{org_id}/events/?continuation=eyJwYWdlIjogMn0
        ```
        
        ## Notes
        
        - All endpoint paths must end with a trailing slash (`/`)
        - Event creation requires an organization - use `/organizations/{org_id}/events/`
        - Legacy user-based event endpoints (e.g., `/users/me/owned_events/`) are deprecated
        - Timestamps are in ISO 8601 format (UTC)
        - Currency amounts use format "CURRENCY,AMOUNT" where amount is in cents (e.g., "USD,2500" = $25.00)
        - Rate limit: 1,000 calls per hour, 48,000 calls per day
        - Event Search API is no longer publicly available (deprecated February 2020)
        
        ## Resources
        
        - [Eventbrite API Documentation](https://www.eventbrite.com/platform/api)
        - [API Basics](https://www.eventbrite.com/platform/docs/api-basics)
        - [API Explorer](https://www.eventbrite.com/platform/docs/api-explorer)
        
    • exa
      • README.md 4 KB
        # Exa Routing Reference
        
        **App name:** `exa`
        **Base URL proxied:** `api.exa.ai`
        
        ## API Path Pattern
        
        ```
        /exa/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Search
        
        Perform neural web search with optional content extraction.
        
        ```bash
        POST /exa/search
        Content-Type: application/json
        
        {
          "query": "latest AI research papers",
          "numResults": 10
        }
        ```
        
        With content extraction:
        ```bash
        POST /exa/search
        Content-Type: application/json
        
        {
          "query": "machine learning tutorials",
          "numResults": 5,
          "contents": {
            "text": true,
            "highlights": true
          }
        }
        ```
        
        With filters:
        ```bash
        POST /exa/search
        Content-Type: application/json
        
        {
          "query": "startup funding news",
          "numResults": 10,
          "category": "news",
          "startPublishedDate": "2024-01-01T00:00:00.000Z",
          "includeDomains": ["techcrunch.com", "venturebeat.com"]
        }
        ```
        
        ### Get Contents
        
        Retrieve full page contents for specific URLs.
        
        ```bash
        POST /exa/contents
        Content-Type: application/json
        
        {
          "ids": ["https://example.com/article1", "https://example.com/article2"],
          "text": true
        }
        ```
        
        With highlights and summary:
        ```bash
        POST /exa/contents
        Content-Type: application/json
        
        {
          "ids": ["https://example.com/article"],
          "text": true,
          "highlights": true,
          "summary": true
        }
        ```
        
        ### Find Similar
        
        Find pages similar to a given URL.
        
        ```bash
        POST /exa/findSimilar
        Content-Type: application/json
        
        {
          "url": "https://anthropic.com",
          "numResults": 10
        }
        ```
        
        With domain filters:
        ```bash
        POST /exa/findSimilar
        Content-Type: application/json
        
        {
          "url": "https://openai.com",
          "numResults": 5,
          "excludeDomains": ["openai.com"]
        }
        ```
        
        ### Answer
        
        Get AI-generated answers with citations.
        
        ```bash
        POST /exa/answer
        Content-Type: application/json
        
        {
          "query": "What is machine learning?",
          "text": true
        }
        ```
        
        ### Research Tasks
        
        Run async research tasks that explore the web and synthesize findings.
        
        #### Create Research Task
        ```bash
        POST /exa/research/v1
        Content-Type: application/json
        
        {
          "instructions": "What are the top AI companies and their products?",
          "model": "exa-research"
        }
        ```
        
        Models: `exa-research-fast`, `exa-research` (default), `exa-research-pro`
        
        #### Get Research Task
        ```bash
        GET /exa/research/v1/{researchId}
        ```
        
        Optional query params: `events=true`, `stream=true`
        
        #### List Research Tasks
        ```bash
        GET /exa/research/v1?limit=10
        ```
        
        Pagination with `cursor` and `limit` (1-50).
        
        ## Search Parameters
        
        | Parameter | Type | Description |
        |-----------|------|-------------|
        | query | string | Search query (required) |
        | numResults | integer | Max results (1-100, default 10) |
        | type | string | `neural`, `auto`, `keyword` |
        | category | string | `company`, `research paper`, `news`, `tweet`, `personal site`, `financial report`, `people` |
        | includeDomains | array | Whitelist domains |
        | excludeDomains | array | Blacklist domains |
        | startPublishedDate | string | ISO 8601 date (after) |
        | endPublishedDate | string | ISO 8601 date (before) |
        
        ## Content Options
        
        | Option | Type | Description |
        |--------|------|-------------|
        | text | boolean | Full page text |
        | highlights | boolean | Relevant snippets |
        | summary | boolean | AI-generated summary |
        
        ## Notes
        
        - Search/contents/answer endpoints use POST method
        - Research task list/get use GET method
        - Authentication is automatic - the gateway injects the API key
        - Search types: `neural` (semantic), `auto` (hybrid), `keyword` (traditional)
        - Maximum 100 results per request
        - Content extraction (text, highlights, summary) incurs additional costs
        - Categories `people` and `company` have restricted filter support
        - Timestamps are in ISO 8601 format
        - Costs are returned in `costDollars` field
        
        ## Resources
        
        - [Exa API Documentation](https://exa.ai/docs)
        - [Search API Reference](https://exa.ai/docs/reference/search)
        - [Contents API Reference](https://exa.ai/docs/reference/contents)
        - [Find Similar API Reference](https://exa.ai/docs/reference/findsimilar)
        - [Answer API Reference](https://exa.ai/docs/reference/answer)
        - [Research API Reference](https://exa.ai/docs/reference/research/create-a-task)
        - [LLM Reference](https://exa.ai/docs/llms.txt)
        
    • fathom
      • README.md 1.9 KB
        # Fathom Routing Reference
        
        **App name:** `fathom`
        **Base URL proxied:** `api.fathom.ai`
        
        ## API Path Pattern
        
        ```
        /fathom/external/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### List Meetings
        ```bash
        GET /fathom/external/v1/meetings
        ```
        
        With filters:
        ```bash
        GET /fathom/external/v1/meetings?created_after=2025-01-01T00:00:00Z&teams[]=Sales
        ```
        
        ### Get Summary
        ```bash
        GET /fathom/external/v1/recordings/{recording_id}/summary
        ```
        
        Async callback:
        ```bash
        GET /fathom/external/v1/recordings/{recording_id}/summary?destination_url=https://example.com/webhook
        ```
        
        ### Get Transcript
        ```bash
        GET /fathom/external/v1/recordings/{recording_id}/transcript
        ```
        
        Async callback:
        ```bash
        GET /fathom/external/v1/recordings/{recording_id}/transcript?destination_url=https://example.com/webhook
        ```
        
        ### List Teams
        ```bash
        GET /fathom/external/v1/teams
        ```
        
        ### List Team Members
        ```bash
        GET /fathom/external/v1/team_members?team=Sales
        ```
        
        ### Create Webhook
        ```bash
        POST /fathom/external/v1/webhooks
        Content-Type: application/json
        
        {
          "destination_url": "https://example.com/webhook",
          "triggered_for": ["my_recordings", "my_shared_with_team_recordings"],
          "include_transcript": true,
          "include_summary": true,
          "include_action_items": true
        }
        ```
        
        ### Delete Webhook
        ```bash
        DELETE /fathom/external/v1/webhooks/{id}
        ```
        
        ## Notes
        
        - Recording IDs are integers
        - Timestamps are in ISO 8601 format
        - OAuth users cannot use inline transcript/summary parameters on `/meetings` endpoint - use dedicated `/recordings/{id}/summary` and `/recordings/{id}/transcript` endpoints instead
        - Use cursor-based pagination with `cursor` parameter
        - Webhook `triggered_for` options: `my_recordings`, `shared_external_recordings`, `my_shared_with_team_recordings`, `shared_team_recordings`
        - Webhook secrets are used to verify webhook signatures
        
        ## Resources
        
        - [Fathom API Documentation](https://developers.fathom.ai)
        - [LLM Reference](https://developers.fathom.ai/llms.txt)
        
    • firebase
      • README.md 3.1 KB
        # Firebase Routing Reference
        
        **App name:** `firebase`
        **Base URL proxied:** `firebase.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /firebase/v1beta1/{resource}
        ```
        
        ## Common Endpoints
        
        ### List Projects
        ```bash
        GET /firebase/v1beta1/projects
        ```
        
        ### Get Project
        ```bash
        GET /firebase/v1beta1/projects/{projectId}
        ```
        
        ### Update Project
        ```bash
        PATCH /firebase/v1beta1/projects/{projectId}
        Content-Type: application/json
        
        {
          "displayName": "Updated Project Name"
        }
        ```
        
        ### List Available Projects
        ```bash
        GET /firebase/v1beta1/availableProjects
        ```
        
        ### Add Firebase to Project
        ```bash
        POST /firebase/v1beta1/projects/{projectId}:addFirebase
        Content-Type: application/json
        
        {}
        ```
        
        ### Get Admin SDK Config
        ```bash
        GET /firebase/v1beta1/projects/{projectId}/adminSdkConfig
        ```
        
        ### List Web Apps
        ```bash
        GET /firebase/v1beta1/projects/{projectId}/webApps
        ```
        
        ### Get Web App
        ```bash
        GET /firebase/v1beta1/projects/{projectId}/webApps/{appId}
        ```
        
        ### Create Web App
        ```bash
        POST /firebase/v1beta1/projects/{projectId}/webApps
        Content-Type: application/json
        
        {
          "displayName": "My Web App"
        }
        ```
        
        ### Get Web App Config
        ```bash
        GET /firebase/v1beta1/projects/{projectId}/webApps/{appId}/config
        ```
        
        ### List Android Apps
        ```bash
        GET /firebase/v1beta1/projects/{projectId}/androidApps
        ```
        
        ### Create Android App
        ```bash
        POST /firebase/v1beta1/projects/{projectId}/androidApps
        Content-Type: application/json
        
        {
          "displayName": "My Android App",
          "packageName": "com.example.myapp"
        }
        ```
        
        ### Get Android App Config
        ```bash
        GET /firebase/v1beta1/projects/{projectId}/androidApps/{appId}/config
        ```
        
        ### List iOS Apps
        ```bash
        GET /firebase/v1beta1/projects/{projectId}/iosApps
        ```
        
        ### Create iOS App
        ```bash
        POST /firebase/v1beta1/projects/{projectId}/iosApps
        Content-Type: application/json
        
        {
          "displayName": "My iOS App",
          "bundleId": "com.example.myapp"
        }
        ```
        
        ### Get iOS App Config
        ```bash
        GET /firebase/v1beta1/projects/{projectId}/iosApps/{appId}/config
        ```
        
        ### Check Operation Status
        ```bash
        GET /firebase/v1beta1/operations/{operationId}
        ```
        
        ## Notes
        
        - Project IDs are globally unique identifiers for Firebase projects
        - App IDs follow the format `1:PROJECT_NUMBER:PLATFORM:HASH`
        - Create operations are asynchronous and return an Operation object
        - Deleted apps can be restored within 30 days using the undelete endpoint
        - Use `availableProjects` to list GCP projects that can have Firebase added
        
        ## Resources
        
        - [Firebase Management API Overview](https://firebase.google.com/docs/projects/api/workflow_set-up-and-manage-project)
        - [Firebase Management REST API Reference](https://firebase.google.com/docs/reference/firebase-management/rest)
        - [Projects Resource](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects)
        - [Web Apps Resource](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects.webApps)
        - [Android Apps Resource](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects.androidApps)
        - [iOS Apps Resource](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects.iosApps)
        
    • fireflies
      • README.md 1.8 KB
        # Fireflies Routing Reference
        
        **App name:** `fireflies`
        **Base URL proxied:** `api.fireflies.ai`
        
        ## API Path Pattern
        
        ```
        /fireflies/graphql
        ```
        
        Fireflies uses GraphQL. All requests are POST to a single `/graphql` endpoint.
        
        ## GraphQL Queries
        
        ### User
        ```graphql
        { user { user_id name email is_admin } }
        ```
        
        ### Users
        ```graphql
        { users { user_id name email is_admin } }
        ```
        
        ### Transcripts
        ```graphql
        { transcripts { id title date duration host_email privacy } }
        ```
        
        ### Transcript by ID
        ```graphql
        query($id: String!) {
          transcript(id: $id) {
            id title date duration
            summary { overview action_items }
            sentences { text speaker_name }
          }
        }
        ```
        
        ### Channels
        ```graphql
        { channels { id title created_at is_private } }
        ```
        
        ### Contacts
        ```graphql
        { contacts { email name picture last_meeting_date } }
        ```
        
        ### Bites
        ```graphql
        { bites { id name transcript_id summary status } }
        ```
        
        ### AskFred Threads
        ```graphql
        { askfred_threads { id title created_at } }
        ```
        
        ## GraphQL Mutations
        
        ### Upload Audio
        ```graphql
        mutation($input: AudioUploadInput!) {
          uploadAudio(input: $input) { success message }
        }
        ```
        
        ### Delete Transcript
        ```graphql
        mutation($id: String!) {
          deleteTranscript(id: $id) { success }
        }
        ```
        
        ### Update Meeting Title
        ```graphql
        mutation($id: String!, $title: String!) {
          updateMeetingTitle(id: $id, title: $title) { success }
        }
        ```
        
        ### AskFred
        ```graphql
        mutation($input: CreateAskFredThreadInput!) {
          createAskFredThread(input: $input) { id title }
        }
        ```
        
        ## Notes
        
        - All requests are POST with Content-Type: application/json
        - Request body: `{ "query": "...", "variables": {...} }`
        - User IDs are ULIDs
        - Rate limits: 50 calls/day (free), more on Business plan
        - Summary field contains AI-generated content
        
        ## Resources
        
        - [Fireflies API Documentation](https://docs.fireflies.ai/)
        - [Fireflies GraphQL API](https://docs.fireflies.ai/graphql-api)
        
    • getresponse
      • README.md 2.8 KB
        # GetResponse Routing Reference
        
        **App name:** `getresponse`
        **Base URL proxied:** `api.getresponse.com`
        
        ## API Path Pattern
        
        ```
        /getresponse/v3/{resource}
        ```
        
        ## Common Endpoints
        
        ### Get Account Details
        ```bash
        GET /getresponse/v3/accounts
        ```
        
        ### List Campaigns
        ```bash
        GET /getresponse/v3/campaigns
        ```
        
        Query parameters:
        - `page` - Page number (starts at 1)
        - `perPage` - Records per page (max 1000)
        
        ### Get Campaign
        ```bash
        GET /getresponse/v3/campaigns/{campaignId}
        ```
        
        ### Create Campaign
        ```bash
        POST /getresponse/v3/campaigns
        Content-Type: application/json
        
        {
          "name": "My Campaign"
        }
        ```
        
        ### List Contacts
        ```bash
        GET /getresponse/v3/contacts?page=1&perPage=100
        ```
        
        Query parameters:
        - `query[campaignId]` - Filter by campaign
        - `query[email]` - Filter by email
        - `sort[createdOn]` - Sort by creation date (asc/desc)
        
        ### Get Contact
        ```bash
        GET /getresponse/v3/contacts/{contactId}
        ```
        
        ### Create Contact
        ```bash
        POST /getresponse/v3/contacts
        Content-Type: application/json
        
        {
          "email": "user@example.com",
          "name": "John Doe",
          "campaign": {
            "campaignId": "abc123"
          }
        }
        ```
        
        ### Update Contact
        ```bash
        POST /getresponse/v3/contacts/{contactId}
        Content-Type: application/json
        
        {
          "name": "Jane Doe"
        }
        ```
        
        ### Delete Contact
        ```bash
        DELETE /getresponse/v3/contacts/{contactId}
        ```
        
        ### List Custom Fields
        ```bash
        GET /getresponse/v3/custom-fields
        ```
        
        ### List Tags
        ```bash
        GET /getresponse/v3/tags
        ```
        
        ### Create Tag
        ```bash
        POST /getresponse/v3/tags
        Content-Type: application/json
        
        {
          "name": "VIP Customer"
        }
        ```
        
        ### List Segments
        ```bash
        GET /getresponse/v3/search-contacts
        ```
        
        ### Get Contacts from Segment
        ```bash
        GET /getresponse/v3/search-contacts/{searchContactId}/contacts
        ```
        
        ### Send Newsletter
        ```bash
        POST /getresponse/v3/newsletters
        Content-Type: application/json
        
        {
          "subject": "Newsletter Subject",
          "name": "Internal Name",
          "campaign": {
            "campaignId": "abc123"
          },
          "content": {
            "html": "<html><body>Content</body></html>",
            "plain": "Content"
          },
          "sendOn": "2026-02-15T10:00:00Z"
        }
        ```
        
        ### List Autoresponders
        ```bash
        GET /getresponse/v3/autoresponders
        ```
        
        ### List From Fields
        ```bash
        GET /getresponse/v3/from-fields
        ```
        
        ## Notes
        
        - Campaign IDs and Contact IDs are alphanumeric strings (e.g., "fZ0Xg", "VZ4Sa5g")
        - Timestamps are in ISO 8601 format
        - Field names use camelCase
        - Use page-based pagination with `page` and `perPage` parameters
        - Rate limits: 30,000 requests per 10 minutes, 80 requests per second
        - "Campaigns" in GetResponse are equivalent to email lists/audiences
        - "Search contacts" and "segments" refer to the same resource
        
        ## Resources
        
        - [GetResponse API Documentation](https://apidocs.getresponse.com/v3)
        - [GetResponse OpenAPI Spec](https://apireference.getresponse.com/open-api.json)
        - [GetResponse Help Center](https://www.getresponse.com/help)
        
    • github
      • README.md 2.5 KB
        # GitHub Routing Reference
        
        **App name:** `github`
        **Base URL proxied:** `api.github.com`
        
        ## API Path Pattern
        
        ```
        /github/{resource}
        ```
        
        GitHub API does not use a version prefix in paths. Versioning is handled via the `X-GitHub-Api-Version` header.
        
        ## Common Endpoints
        
        ### Get Authenticated User
        ```bash
        GET /github/user
        ```
        
        ### Get User by Username
        ```bash
        GET /github/users/{username}
        ```
        
        ### List User Repositories
        ```bash
        GET /github/user/repos?per_page=30&sort=updated
        ```
        
        ### Get Repository
        ```bash
        GET /github/repos/{owner}/{repo}
        ```
        
        ### List Repository Contents
        ```bash
        GET /github/repos/{owner}/{repo}/contents/{path}
        ```
        
        ### List Branches
        ```bash
        GET /github/repos/{owner}/{repo}/branches
        ```
        
        ### List Commits
        ```bash
        GET /github/repos/{owner}/{repo}/commits?per_page=30
        ```
        
        ### List Repository Issues
        ```bash
        GET /github/repos/{owner}/{repo}/issues?state=open&per_page=30
        ```
        
        ### Create Issue
        ```bash
        POST /github/repos/{owner}/{repo}/issues
        Content-Type: application/json
        
        {
          "title": "Issue title",
          "body": "Issue description",
          "labels": ["bug"]
        }
        ```
        
        ### List Pull Requests
        ```bash
        GET /github/repos/{owner}/{repo}/pulls?state=open&per_page=30
        ```
        
        ### Create Pull Request
        ```bash
        POST /github/repos/{owner}/{repo}/pulls
        Content-Type: application/json
        
        {
          "title": "PR title",
          "body": "PR description",
          "head": "feature-branch",
          "base": "main"
        }
        ```
        
        ### Merge Pull Request
        ```bash
        PUT /github/repos/{owner}/{repo}/pulls/{pull_number}/merge
        Content-Type: application/json
        
        {
          "merge_method": "squash"
        }
        ```
        
        ### Search Repositories
        ```bash
        GET /github/search/repositories?q={query}&per_page=30
        ```
        
        ### Search Issues
        ```bash
        GET /github/search/issues?q={query}&per_page=30
        ```
        
        ### Get Rate Limit
        ```bash
        GET /github/rate_limit
        ```
        
        ## Notes
        
        - Repository names are case-insensitive but the API preserves case
        - Issue numbers and PR numbers share the same sequence per repository
        - File content must be Base64 encoded when creating/updating files
        - Rate limits: 5000 requests/hour for authenticated users, 30 searches/minute
        - Pagination uses `per_page` (max 100, default 30) and `page` parameters
        - Some endpoints require specific OAuth scopes (e.g., `read:org` for organization operations)
        
        ## Resources
        
        - [GitHub REST API Documentation](https://docs.github.com/en/rest)
        - [Repositories API](https://docs.github.com/en/rest/repos/repos)
        - [Issues API](https://docs.github.com/en/rest/issues/issues)
        - [Pull Requests API](https://docs.github.com/en/rest/pulls/pulls)
        
    • google-ads
      • README.md 3.9 KB
        # Google Ads Routing Reference
        
        **App name:** `google-ads`
        **Base URL proxied:** `googleads.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-ads/v23/customers/{customerId}/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### List Accessible Customers
        ```bash
        GET /google-ads/v23/customers:listAccessibleCustomers
        ```
        
        ### Search (GAQL Query)
        ```bash
        POST /google-ads/v23/customers/{customerId}/googleAds:search
        Content-Type: application/json
        
        {
          "query": "SELECT campaign.id, campaign.name, campaign.status FROM campaign ORDER BY campaign.id"
        }
        ```
        
        ### Search Stream (for large result sets)
        ```bash
        POST /google-ads/v23/customers/{customerId}/googleAds:searchStream
        Content-Type: application/json
        
        {
          "query": "SELECT campaign.id, campaign.name FROM campaign"
        }
        ```
        
        ## Common GAQL Queries
        
        ### List Campaigns
        ```sql
        SELECT
          campaign.id,
          campaign.name,
          campaign.status,
          campaign.advertising_channel_type
        FROM campaign
        WHERE campaign.status != 'REMOVED'
        ORDER BY campaign.name
        ```
        
        ### Campaign Performance
        ```sql
        SELECT
          campaign.id,
          campaign.name,
          metrics.impressions,
          metrics.clicks,
          metrics.cost_micros,
          metrics.conversions
        FROM campaign
        WHERE segments.date DURING LAST_30_DAYS
        ORDER BY metrics.impressions DESC
        ```
        
        ### List Ad Groups
        ```sql
        SELECT
          ad_group.id,
          ad_group.name,
          ad_group.status,
          campaign.id,
          campaign.name
        FROM ad_group
        WHERE ad_group.status != 'REMOVED'
        ```
        
        ### Ad Group Performance
        ```sql
        SELECT
          ad_group.id,
          ad_group.name,
          metrics.impressions,
          metrics.clicks,
          metrics.average_cpc
        FROM ad_group
        WHERE segments.date DURING LAST_7_DAYS
        ```
        
        ### List Keywords
        ```sql
        SELECT
          ad_group_criterion.keyword.text,
          ad_group_criterion.keyword.match_type,
          ad_group_criterion.status,
          metrics.impressions,
          metrics.clicks
        FROM keyword_view
        WHERE segments.date DURING LAST_30_DAYS
        ```
        
        ### List Ads
        ```sql
        SELECT
          ad_group_ad.ad.id,
          ad_group_ad.ad.name,
          ad_group_ad.status,
          ad_group_ad.ad.type
        FROM ad_group_ad
        WHERE ad_group_ad.status != 'REMOVED'
        ```
        
        ## Mutate Operations
        
        ### Create Campaign
        ```bash
        POST /google-ads/v23/customers/{customerId}/campaigns:mutate
        Content-Type: application/json
        
        {
          "operations": [
            {
              "create": {
                "name": "New Campaign",
                "advertisingChannelType": "SEARCH",
                "status": "PAUSED",
                "manualCpc": {},
                "campaignBudget": "customers/{customerId}/campaignBudgets/{budgetId}"
              }
            }
          ]
        }
        ```
        
        ### Update Campaign Status
        ```bash
        POST /google-ads/v23/customers/{customerId}/campaigns:mutate
        Content-Type: application/json
        
        {
          "operations": [
            {
              "update": {
                "resourceName": "customers/{customerId}/campaigns/{campaignId}",
                "status": "ENABLED"
              },
              "updateMask": "status"
            }
          ]
        }
        ```
        
        ## Notes
        
        - Authentication is automatic - the router injects OAuth token and developer-token headers
        - Use `listAccessibleCustomers` first to get available customer IDs
        - Customer IDs are 10-digit numbers (remove dashes if formatted as XXX-XXX-XXXX)
        - Monetary values are in micros (divide by 1,000,000)
        - Use GAQL (Google Ads Query Language) for querying
        - Date ranges: `LAST_7_DAYS`, `LAST_30_DAYS`, `THIS_MONTH`, etc.
        - Status values: `ENABLED`, `PAUSED`, `REMOVED`
        - API version updates frequently - check release notes for latest (currently v23)
        
        ## Resources
        
        - [API Overview](https://developers.google.com/google-ads/api/docs/start)
        - [List Accessible Customers](https://developers.google.com/google-ads/api/reference/rpc/v23/CustomerService/ListAccessibleCustomers?transport=rest)
        - [Search](https://developers.google.com/google-ads/api/reference/rpc/v23/GoogleAdsService/Search?transport=rest)
        - [Search Stream](https://developers.google.com/google-ads/api/reference/rpc/v23/GoogleAdsService/SearchStream?transport=rest)
        - [GAQL Reference](https://developers.google.com/google-ads/api/docs/query/overview)
        - [Metrics Reference](https://developers.google.com/google-ads/api/fields/v23/metrics)
    • google-analytics-admin
      • README.md 5.7 KB
        # Google Analytics Admin Routing Reference
        
        **App name:** `google-analytics-admin`
        **Base URL proxied:** `analyticsadmin.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-analytics-admin/v1beta/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### List Accounts
        ```bash
        GET /google-analytics-admin/v1beta/accounts
        ```
        
        ### Get Account
        ```bash
        GET /google-analytics-admin/v1beta/accounts/{accountId}
        ```
        
        ### List Properties
        ```bash
        GET /google-analytics-admin/v1beta/properties?filter=parent:accounts/{accountId}
        ```
        
        ### Get Property
        ```bash
        GET /google-analytics-admin/v1beta/properties/{propertyId}
        ```
        
        ### Create Property
        ```bash
        POST /google-analytics-admin/v1beta/properties
        Content-Type: application/json
        
        {
          "parent": "accounts/{accountId}",
          "displayName": "My New Property",
          "timeZone": "America/Los_Angeles",
          "currencyCode": "USD",
          "industryCategory": "TECHNOLOGY"
        }
        ```
        
        ### Update Property
        ```bash
        PATCH /google-analytics-admin/v1beta/properties/{propertyId}?updateMask=displayName
        Content-Type: application/json
        
        {
          "displayName": "Updated Property Name"
        }
        ```
        
        ### List Data Streams
        ```bash
        GET /google-analytics-admin/v1beta/properties/{propertyId}/dataStreams
        ```
        
        ### Get Data Stream
        ```bash
        GET /google-analytics-admin/v1beta/properties/{propertyId}/dataStreams/{dataStreamId}
        ```
        
        ### Create Web Data Stream
        ```bash
        POST /google-analytics-admin/v1beta/properties/{propertyId}/dataStreams
        Content-Type: application/json
        
        {
          "type": "WEB_DATA_STREAM",
          "displayName": "My Website",
          "webStreamData": {
            "defaultUri": "https://example.com"
          }
        }
        ```
        
        ### List Custom Dimensions
        ```bash
        GET /google-analytics-admin/v1beta/properties/{propertyId}/customDimensions
        ```
        
        ### Create Custom Dimension
        ```bash
        POST /google-analytics-admin/v1beta/properties/{propertyId}/customDimensions
        Content-Type: application/json
        
        {
          "parameterName": "user_type",
          "displayName": "User Type",
          "scope": "USER",
          "description": "Type of user (free, premium, enterprise)"
        }
        ```
        
        ### List Custom Metrics
        ```bash
        GET /google-analytics-admin/v1beta/properties/{propertyId}/customMetrics
        ```
        
        ### Create Custom Metric
        ```bash
        POST /google-analytics-admin/v1beta/properties/{propertyId}/customMetrics
        Content-Type: application/json
        
        {
          "parameterName": "points_earned",
          "displayName": "Points Earned",
          "scope": "EVENT",
          "measurementUnit": "STANDARD",
          "description": "Number of loyalty points earned"
        }
        ```
        
        ### List Conversion Events
        ```bash
        GET /google-analytics-admin/v1beta/properties/{propertyId}/conversionEvents
        ```
        
        ### Create Conversion Event
        ```bash
        POST /google-analytics-admin/v1beta/properties/{propertyId}/conversionEvents
        Content-Type: application/json
        
        {
          "eventName": "purchase"
        }
        ```
        
        ### Get Measurement Protocol Secret
        ```bash
        GET /google-analytics-admin/v1beta/properties/{propertyId}/dataStreams/{dataStreamId}/measurementProtocolSecrets
        ```
        
        ### Create Measurement Protocol Secret
        ```bash
        POST /google-analytics-admin/v1beta/properties/{propertyId}/dataStreams/{dataStreamId}/measurementProtocolSecrets
        Content-Type: application/json
        
        {
          "displayName": "Server-side tracking"
        }
        ```
        
        ## Account Summaries
        
        ### List Account Summaries
        ```bash
        GET /google-analytics-admin/v1beta/accountSummaries
        ```
        Returns a lightweight summary of all accounts and properties the user has access to.
        
        ## Data Stream Types
        
        - `WEB_DATA_STREAM` - Website tracking
        - `ANDROID_APP_DATA_STREAM` - Android app
        - `IOS_APP_DATA_STREAM` - iOS app
        
        ## Custom Dimension Scopes
        
        - `EVENT` - Dimension applies to events
        - `USER` - Dimension applies to users
        
        ## Custom Metric Scopes
        
        - `EVENT` - Metric applies to events
        
        ## Measurement Units (Custom Metrics)
        
        - `STANDARD` - Integer or decimal
        - `CURRENCY` - Currency value
        - `FEET`, `METERS` - Distance
        - `MILES`, `KILOMETERS` - Distance
        - `MILLISECONDS`, `SECONDS`, `MINUTES`, `HOURS` - Time
        
        ## Industry Categories
        
        - `AUTOMOTIVE`, `BUSINESS_AND_INDUSTRIAL_MARKETS`, `FINANCE`, `HEALTHCARE`
        - `TECHNOLOGY`, `TRAVEL`, `RETAIL`, `REAL_ESTATE`, `GAMES`
        - `ARTS_AND_ENTERTAINMENT`, `BEAUTY_AND_FITNESS`, `BOOKS_AND_LITERATURE`
        - `FOOD_AND_DRINK`, `HOBBIES_AND_LEISURE`, `HOME_AND_GARDEN`
        - `INTERNET_AND_TELECOM`, `JOBS_AND_EDUCATION`, `LAW_AND_GOVERNMENT`
        - `NEWS`, `ONLINE_COMMUNITIES`, `PEOPLE_AND_SOCIETY`, `PETS_AND_ANIMALS`
        - `REFERENCE`, `SCIENCE`, `SHOPPING`, `SPORTS`
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Property IDs are numeric (e.g., `properties/521310447`)
        - Account IDs are numeric (e.g., `accounts/123456789`)
        - GA4 properties only (Universal Analytics not supported)
        - Use `accountSummaries` endpoint to quickly list all accessible properties
        - The `filter` parameter on list properties uses format: `parent:accounts/{accountId}`
        - Use `updateMask` query parameter to specify which fields to update in PATCH requests
        - This API is for property/account management - use the Data API for running reports
        
        ## Resources
        
        - [API Overview](https://developers.google.com/analytics/devguides/config/admin/v1)
        - [List Accounts](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/accounts/list)
        - [List Properties](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/properties/list)
        - [Create Property](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/properties/create)
        - [Data Streams](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/properties.dataStreams)
        - [Custom Dimensions](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/properties.customDimensions)
        - [Custom Metrics](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/properties.customMetrics)
        - [Conversion Events](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/properties.conversionEvents)
    • google-analytics-data
      • README.md 4.2 KB
        # Google Analytics Data Routing Reference
        
        **App name:** `google-analytics-data`
        **Base URL proxied:** `analyticsdata.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-analytics-data/v1beta/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Run Report
        ```bash
        POST /google-analytics-data/v1beta/properties/{propertyId}:runReport
        Content-Type: application/json
        
        {
          "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
          "dimensions": [{"name": "city"}],
          "metrics": [{"name": "activeUsers"}]
        }
        ```
        
        ### Run Realtime Report
        ```bash
        POST /google-analytics-data/v1beta/properties/{propertyId}:runRealtimeReport
        Content-Type: application/json
        
        {
          "dimensions": [{"name": "country"}],
          "metrics": [{"name": "activeUsers"}]
        }
        ```
        
        ### Batch Run Reports
        ```bash
        POST /google-analytics-data/v1beta/properties/{propertyId}:batchRunReports
        Content-Type: application/json
        
        {
          "requests": [
            {
              "dateRanges": [{"startDate": "7daysAgo", "endDate": "today"}],
              "dimensions": [{"name": "country"}],
              "metrics": [{"name": "sessions"}]
            },
            {
              "dateRanges": [{"startDate": "7daysAgo", "endDate": "today"}],
              "dimensions": [{"name": "deviceCategory"}],
              "metrics": [{"name": "sessions"}]
            }
          ]
        }
        ```
        
        ### Get Metadata (available dimensions/metrics)
        ```bash
        GET /google-analytics-data/v1beta/properties/{propertyId}/metadata
        ```
        
        ## Common Report Examples
        
        ### Page Views by Page
        ```json
        {
          "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
          "dimensions": [{"name": "pagePath"}],
          "metrics": [{"name": "screenPageViews"}],
          "orderBys": [{"metric": {"metricName": "screenPageViews"}, "desc": true}],
          "limit": 10
        }
        ```
        
        ### Users by Country
        ```json
        {
          "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
          "dimensions": [{"name": "country"}],
          "metrics": [{"name": "activeUsers"}, {"name": "sessions"}],
          "orderBys": [{"metric": {"metricName": "activeUsers"}, "desc": true}]
        }
        ```
        
        ### Traffic Sources
        ```json
        {
          "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
          "dimensions": [{"name": "sessionSource"}, {"name": "sessionMedium"}],
          "metrics": [{"name": "sessions"}, {"name": "conversions"}]
        }
        ```
        
        ### Device Breakdown
        ```json
        {
          "dateRanges": [{"startDate": "7daysAgo", "endDate": "today"}],
          "dimensions": [{"name": "deviceCategory"}],
          "metrics": [{"name": "activeUsers"}, {"name": "sessions"}, {"name": "bounceRate"}]
        }
        ```
        
        ### Daily Sessions Trend
        ```json
        {
          "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
          "dimensions": [{"name": "date"}],
          "metrics": [{"name": "sessions"}, {"name": "activeUsers"}],
          "orderBys": [{"dimension": {"dimensionName": "date"}}]
        }
        ```
        
        ## Common Dimensions
        
        - `date`, `dateHour`, `dateHourMinute`
        - `country`, `city`, `region`
        - `deviceCategory`, `browser`, `operatingSystem`
        - `pagePath`, `pageTitle`, `landingPage`
        - `sessionSource`, `sessionMedium`, `sessionCampaignName`
        - `eventName`
        
        ## Common Metrics
        
        - `activeUsers`, `newUsers`, `totalUsers`
        - `sessions`, `sessionsPerUser`
        - `screenPageViews`, `screenPageViewsPerSession`
        - `bounceRate`, `averageSessionDuration`
        - `conversions`, `eventCount`
        
        ## Date Formats
        
        - Relative: `today`, `yesterday`, `7daysAgo`, `30daysAgo`
        - Absolute: `2026-01-01`
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Property IDs are numeric (e.g., `521310447` from URL `p521310447`)
        - GA4 properties only (Universal Analytics not supported)
        - Use metadata endpoint to discover available dimensions/metrics
        - Results are paginated with `limit` and `offset`
        - This API is for running reports only - listing properties requires the Admin API
        
        ## Resources
        
        - [API Overview](https://developers.google.com/analytics/devguides/reporting/data/v1)
        - [Run Report](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport)
        - [Run Realtime Report](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runRealtimeReport)
        - [Batch Run Reports](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/batchRunReports)
        - [Get Metadata](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/getMetadata)
    • google-bigquery
      • README.md 3.9 KB
        # Google BigQuery Routing Reference
        
        **App name:** `google-bigquery`
        **Base URL proxied:** `bigquery.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-bigquery/bigquery/v2/{resource}
        ```
        
        ## Common Endpoints
        
        ### List Projects
        ```bash
        GET /google-bigquery/bigquery/v2/projects
        ```
        
        ### List Datasets
        ```bash
        GET /google-bigquery/bigquery/v2/projects/{projectId}/datasets
        ```
        
        ### Get Dataset
        ```bash
        GET /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}
        ```
        
        ### Create Dataset
        ```bash
        POST /google-bigquery/bigquery/v2/projects/{projectId}/datasets
        Content-Type: application/json
        
        {
          "datasetReference": {
            "datasetId": "my_dataset",
            "projectId": "{projectId}"
          },
          "location": "US"
        }
        ```
        
        ### Delete Dataset
        ```bash
        DELETE /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}
        ```
        
        ### List Tables
        ```bash
        GET /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables
        ```
        
        ### Get Table
        ```bash
        GET /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables/{tableId}
        ```
        
        ### Create Table
        ```bash
        POST /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables
        Content-Type: application/json
        
        {
          "tableReference": {
            "projectId": "{projectId}",
            "datasetId": "{datasetId}",
            "tableId": "my_table"
          },
          "schema": {
            "fields": [
              {"name": "id", "type": "INTEGER"},
              {"name": "name", "type": "STRING"}
            ]
          }
        }
        ```
        
        ### Delete Table
        ```bash
        DELETE /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables/{tableId}
        ```
        
        ### List Table Data
        ```bash
        GET /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables/{tableId}/data
        ```
        
        ### Run Query (Synchronous)
        ```bash
        POST /google-bigquery/bigquery/v2/projects/{projectId}/queries
        Content-Type: application/json
        
        {
          "query": "SELECT * FROM `dataset.table` LIMIT 10",
          "useLegacySql": false
        }
        ```
        
        ### List Jobs
        ```bash
        GET /google-bigquery/bigquery/v2/projects/{projectId}/jobs
        ```
        
        ### Get Job
        ```bash
        GET /google-bigquery/bigquery/v2/projects/{projectId}/jobs/{jobId}?location=US
        ```
        
        ### Cancel Job
        ```bash
        POST /google-bigquery/bigquery/v2/projects/{projectId}/jobs/{jobId}/cancel?location=US
        ```
        
        ## Query Examples
        
        ### Simple Query
        ```json
        {
          "query": "SELECT 1 as test",
          "useLegacySql": false
        }
        ```
        
        ### Query with Parameters
        ```json
        {
          "query": "SELECT * FROM `dataset.table` WHERE id = @id",
          "useLegacySql": false,
          "queryParameters": [
            {
              "name": "id",
              "parameterType": {"type": "INT64"},
              "parameterValue": {"value": "123"}
            }
          ]
        }
        ```
        
        ### Query to Destination Table
        ```json
        {
          "query": "SELECT * FROM `source_dataset.source_table`",
          "useLegacySql": false,
          "destinationTable": {
            "projectId": "my-project",
            "datasetId": "dest_dataset",
            "tableId": "dest_table"
          },
          "writeDisposition": "WRITE_TRUNCATE"
        }
        ```
        
        ## Common Schema Types
        
        - `STRING` - Text data
        - `INTEGER` - 64-bit signed integer
        - `FLOAT` - 64-bit floating point
        - `BOOLEAN` - True/false
        - `TIMESTAMP` - Point in time
        - `DATE` - Calendar date
        - `RECORD` - Nested structure
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Project IDs are strings like `my-project-123`
        - Dataset and table IDs: letters, numbers, underscores only
        - Query results use `f` (fields) and `v` (value) structure
        - Use `useLegacySql: false` for standard SQL
        - Streaming inserts require BigQuery paid tier
        - Jobs include location in their reference (US, EU, etc.)
        - Use `maxResults` and `pageToken` for pagination
        
        ## Resources
        
        - [BigQuery API Overview](https://cloud.google.com/bigquery/docs/reference/rest)
        - [Datasets](https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets)
        - [Tables](https://cloud.google.com/bigquery/docs/reference/rest/v2/tables)
        - [Jobs](https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs)
        - [Standard SQL Reference](https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax)
        
    • google-calendar
      • README.md 3.7 KB
        # Google Calendar Routing Reference
        
        **App name:** `google-calendar`
        **Base URL proxied:** `www.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-calendar/calendar/v3/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### List Calendars
        ```bash
        GET /google-calendar/calendar/v3/users/me/calendarList
        ```
        
        ### Get Calendar
        ```bash
        GET /google-calendar/calendar/v3/calendars/{calendarId}
        ```
        
        Use `primary` for the user's primary calendar.
        
        ### List Events
        ```bash
        GET /google-calendar/calendar/v3/calendars/primary/events?maxResults=10&orderBy=startTime&singleEvents=true
        ```
        
        With time bounds:
        ```bash
        GET /google-calendar/calendar/v3/calendars/primary/events?timeMin=2024-01-01T00:00:00Z&timeMax=2024-12-31T23:59:59Z&singleEvents=true&orderBy=startTime
        ```
        
        ### Get Event
        ```bash
        GET /google-calendar/calendar/v3/calendars/primary/events/{eventId}
        ```
        
        ### Insert Event
        ```bash
        POST /google-calendar/calendar/v3/calendars/primary/events
        Content-Type: application/json
        
        {
          "summary": "Team Meeting",
          "description": "Weekly sync",
          "start": {
            "dateTime": "2024-01-15T10:00:00",
            "timeZone": "America/Los_Angeles"
          },
          "end": {
            "dateTime": "2024-01-15T11:00:00",
            "timeZone": "America/Los_Angeles"
          },
          "attendees": [
            {"email": "attendee@example.com"}
          ]
        }
        ```
        
        All-day event:
        ```bash
        POST /google-calendar/calendar/v3/calendars/primary/events
        Content-Type: application/json
        
        {
          "summary": "All Day Event",
          "start": {"date": "2024-01-15"},
          "end": {"date": "2024-01-16"}
        }
        ```
        
        ### Update Event
        ```bash
        PUT /google-calendar/calendar/v3/calendars/primary/events/{eventId}
        Content-Type: application/json
        
        {
          "summary": "Updated Meeting Title",
          "start": {"dateTime": "2024-01-15T10:00:00Z"},
          "end": {"dateTime": "2024-01-15T11:00:00Z"}
        }
        ```
        
        ### Patch Event (partial update)
        ```bash
        PATCH /google-calendar/calendar/v3/calendars/primary/events/{eventId}
        Content-Type: application/json
        
        {
          "summary": "New Title Only"
        }
        ```
        
        ### Delete Event
        ```bash
        DELETE /google-calendar/calendar/v3/calendars/primary/events/{eventId}
        ```
        
        ### Quick Add Event (natural language)
        ```bash
        POST /google-calendar/calendar/v3/calendars/primary/events/quickAdd?text=Meeting+with+John+tomorrow+at+3pm
        ```
        
        ### Free/Busy Query
        ```bash
        POST /google-calendar/calendar/v3/freeBusy
        Content-Type: application/json
        
        {
          "timeMin": "2024-01-15T00:00:00Z",
          "timeMax": "2024-01-16T00:00:00Z",
          "items": [{"id": "primary"}]
        }
        ```
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Use `primary` as calendarId for the user's main calendar
        - Times must be in RFC3339 format (e.g., `2026-01-15T10:00:00Z`)
        - For recurring events, use `singleEvents=true` to expand instances
        - `orderBy=startTime` requires `singleEvents=true`
        
        ## Resources
        
        - [API Overview](https://developers.google.com/calendar/api/v3/reference)
        - [List Calendars](https://developers.google.com/workspace/calendar/api/v3/reference/calendarList/list)
        - [Get Calendar](https://developers.google.com/workspace/calendar/api/v3/reference/calendarList/get)
        - [List Events](https://developers.google.com/workspace/calendar/api/v3/reference/events/list)
        - [Get Event](https://developers.google.com/workspace/calendar/api/v3/reference/events/get)
        - [Insert Event](https://developers.google.com/workspace/calendar/api/v3/reference/events/insert)
        - [Update Event](https://developers.google.com/workspace/calendar/api/v3/reference/events/update)
        - [Patch Event](https://developers.google.com/workspace/calendar/api/v3/reference/events/patch)
        - [Delete Event](https://developers.google.com/workspace/calendar/api/v3/reference/events/delete)
        - [Quick Add Event](https://developers.google.com/workspace/calendar/api/v3/reference/events/quickAdd)
        - [Free/Busy Query](https://developers.google.com/workspace/calendar/api/v3/reference/freebusy/query)
    • google-classroom
      • README.md 2.6 KB
        # Google Classroom Routing Reference
        
        **App name:** `google-classroom`
        **Base URL proxied:** `classroom.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-classroom/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### Courses
        
        #### List Courses
        ```bash
        GET /google-classroom/v1/courses
        GET /google-classroom/v1/courses?courseStates=ACTIVE
        GET /google-classroom/v1/courses?teacherId=me
        ```
        
        #### Get Course
        ```bash
        GET /google-classroom/v1/courses/{courseId}
        ```
        
        #### Create Course
        ```bash
        POST /google-classroom/v1/courses
        Content-Type: application/json
        
        {
          "name": "Course Name",
          "ownerId": "me"
        }
        ```
        
        #### Update Course
        ```bash
        PATCH /google-classroom/v1/courses/{courseId}?updateMask=name
        Content-Type: application/json
        
        {
          "name": "Updated Name"
        }
        ```
        
        #### Delete Course
        ```bash
        DELETE /google-classroom/v1/courses/{courseId}
        ```
        
        ### Course Work
        
        #### List Course Work
        ```bash
        GET /google-classroom/v1/courses/{courseId}/courseWork
        ```
        
        #### Create Course Work
        ```bash
        POST /google-classroom/v1/courses/{courseId}/courseWork
        Content-Type: application/json
        
        {
          "title": "Assignment Title",
          "workType": "ASSIGNMENT",
          "state": "PUBLISHED",
          "maxPoints": 100
        }
        ```
        
        ### Student Submissions
        
        #### List Submissions
        ```bash
        GET /google-classroom/v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions
        ```
        
        ### Teachers & Students
        
        #### List Teachers
        ```bash
        GET /google-classroom/v1/courses/{courseId}/teachers
        ```
        
        #### List Students
        ```bash
        GET /google-classroom/v1/courses/{courseId}/students
        ```
        
        ### Announcements
        
        #### List Announcements
        ```bash
        GET /google-classroom/v1/courses/{courseId}/announcements
        ```
        
        #### Create Announcement
        ```bash
        POST /google-classroom/v1/courses/{courseId}/announcements
        Content-Type: application/json
        
        {
          "text": "Announcement text",
          "state": "PUBLISHED"
        }
        ```
        
        ### Topics
        
        #### List Topics
        ```bash
        GET /google-classroom/v1/courses/{courseId}/topics
        ```
        
        ### User Profiles
        
        #### Get Current User
        ```bash
        GET /google-classroom/v1/userProfiles/me
        ```
        
        ### Invitations
        
        #### List Invitations
        ```bash
        GET /google-classroom/v1/invitations?courseId={courseId}
        ```
        
        ## Notes
        
        - PATCH requests require `updateMask` query parameter
        - Courses must be archived before deletion
        - Student submissions require course work to be in PUBLISHED state
        - Use `me` for current user ID
        - Pagination uses `pageToken` parameter
        
        ## Resources
        
        - [Google Classroom API Documentation](https://developers.google.com/workspace/classroom/reference/rest)
        - [Courses Reference](https://developers.google.com/workspace/classroom/reference/rest/v1/courses)
        - [CourseWork Reference](https://developers.google.com/workspace/classroom/reference/rest/v1/courses.courseWork)
        
    • google-contacts
      • README.md 3.3 KB
        # Google Contacts Routing Reference
        
        **App name:** `google-contacts`
        **Base URL proxied:** `people.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-contacts/v1/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### List Contacts
        ```bash
        GET /google-contacts/v1/people/me/connections?personFields=names,emailAddresses,phoneNumbers&pageSize=100
        ```
        
        ### Get Contact
        ```bash
        GET /google-contacts/v1/people/{resourceName}?personFields=names,emailAddresses,phoneNumbers
        ```
        
        Example: `GET /google-contacts/v1/people/c1234567890?personFields=names,emailAddresses`
        
        ### Create Contact
        ```bash
        POST /google-contacts/v1/people:createContact
        Content-Type: application/json
        
        {
          "names": [{"givenName": "John", "familyName": "Doe"}],
          "emailAddresses": [{"value": "john@example.com"}],
          "phoneNumbers": [{"value": "+1-555-0123"}]
        }
        ```
        
        ### Update Contact
        ```bash
        PATCH /google-contacts/v1/people/{resourceName}:updateContact?updatePersonFields=names,emailAddresses
        Content-Type: application/json
        
        {
          "etag": "%EgcBAgkLLjc9...",
          "names": [{"givenName": "John", "familyName": "Smith"}]
        }
        ```
        
        ### Delete Contact
        ```bash
        DELETE /google-contacts/v1/people/{resourceName}:deleteContact
        ```
        
        ### Batch Get Contacts
        ```bash
        GET /google-contacts/v1/people:batchGet?resourceNames=people/c123&resourceNames=people/c456&personFields=names
        ```
        
        ### Batch Create Contacts
        ```bash
        POST /google-contacts/v1/people:batchCreateContacts
        Content-Type: application/json
        
        {
          "contacts": [{"contactPerson": {"names": [{"givenName": "Alice"}]}}],
          "readMask": "names"
        }
        ```
        
        ### Batch Delete Contacts
        ```bash
        POST /google-contacts/v1/people:batchDeleteContacts
        Content-Type: application/json
        
        {
          "resourceNames": ["people/c123", "people/c456"]
        }
        ```
        
        ### Search Contacts
        ```bash
        GET /google-contacts/v1/people:searchContacts?query=John&readMask=names,emailAddresses
        ```
        
        ### List Contact Groups
        ```bash
        GET /google-contacts/v1/contactGroups?pageSize=100
        ```
        
        ### Get Contact Group
        ```bash
        GET /google-contacts/v1/contactGroups/{resourceName}?maxMembers=100
        ```
        
        ### Create Contact Group
        ```bash
        POST /google-contacts/v1/contactGroups
        Content-Type: application/json
        
        {
          "contactGroup": {"name": "Work Contacts"}
        }
        ```
        
        ### Delete Contact Group
        ```bash
        DELETE /google-contacts/v1/contactGroups/{resourceName}?deleteContacts=false
        ```
        
        ### Modify Group Members
        ```bash
        POST /google-contacts/v1/contactGroups/{resourceName}/members:modify
        Content-Type: application/json
        
        {
          "resourceNamesToAdd": ["people/c123"],
          "resourceNamesToRemove": ["people/c456"]
        }
        ```
        
        ### List Other Contacts
        ```bash
        GET /google-contacts/v1/otherContacts?readMask=names,emailAddresses&pageSize=100
        ```
        
        ## Notes
        
        - Resource names for contacts: `people/c{id}` (e.g., `people/c1234567890`)
        - Resource names for groups: `contactGroups/{id}` (e.g., `contactGroups/starred`)
        - System groups: `starred`, `friends`, `family`, `coworkers`, `myContacts`, `all`, `blocked`
        - `personFields` parameter is required for most read operations
        - Include `etag` when updating to prevent concurrent modification issues
        - Pagination uses `pageToken` parameter
        
        ## Resources
        
        - [Google People API Overview](https://developers.google.com/people/api/rest)
        - [People Resource](https://developers.google.com/people/api/rest/v1/people)
        - [Contact Groups Resource](https://developers.google.com/people/api/rest/v1/contactGroups)
        
    • google-docs
      • README.md 2.9 KB
        # Google Docs Routing Reference
        
        **App name:** `google-docs`
        **Base URL proxied:** `docs.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-docs/v1/documents/{documentId}
        ```
        
        ## Common Endpoints
        
        ### Get Document
        ```bash
        GET /google-docs/v1/documents/{documentId}
        ```
        
        ### Create Document
        ```bash
        POST /google-docs/v1/documents
        Content-Type: application/json
        
        {
          "title": "New Document"
        }
        ```
        
        ### Batch Update Document
        ```bash
        POST /google-docs/v1/documents/{documentId}:batchUpdate
        Content-Type: application/json
        
        {
          "requests": [
            {
              "insertText": {
                "location": {"index": 1},
                "text": "Hello, World!"
              }
            }
          ]
        }
        ```
        
        ## Common Requests for batchUpdate
        
        ### Insert Text
        ```json
        {
          "insertText": {
            "location": {"index": 1},
            "text": "Text to insert"
          }
        }
        ```
        
        ### Delete Content
        ```json
        {
          "deleteContentRange": {
            "range": {
              "startIndex": 1,
              "endIndex": 10
            }
          }
        }
        ```
        
        ### Replace All Text
        ```json
        {
          "replaceAllText": {
            "containsText": {
              "text": "{{placeholder}}",
              "matchCase": true
            },
            "replaceText": "replacement value"
          }
        }
        ```
        
        ### Insert Table
        ```json
        {
          "insertTable": {
            "location": {"index": 1},
            "rows": 3,
            "columns": 3
          }
        }
        ```
        
        ### Insert Inline Image
        ```json
        {
          "insertInlineImage": {
            "location": {"index": 1},
            "uri": "https://example.com/image.png",
            "objectSize": {
              "height": {"magnitude": 100, "unit": "PT"},
              "width": {"magnitude": 100, "unit": "PT"}
            }
          }
        }
        ```
        
        ### Update Text Style
        ```json
        {
          "updateTextStyle": {
            "range": {
              "startIndex": 1,
              "endIndex": 10
            },
            "textStyle": {
              "bold": true,
              "fontSize": {"magnitude": 14, "unit": "PT"}
            },
            "fields": "bold,fontSize"
          }
        }
        ```
        
        ### Insert Page Break
        ```json
        {
          "insertPageBreak": {
            "location": {"index": 1}
          }
        }
        ```
        
        ## Document Structure
        
        The document body contains:
        - `content` - Array of structural elements
        - `body.content[].paragraph` - Paragraph element
        - `body.content[].table` - Table element
        - `body.content[].sectionBreak` - Section break
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Index positions are 1-based (document starts at index 1)
        - Use `endOfSegmentLocation` to append at end
        - Multiple requests in batchUpdate are applied atomically
        - Get document first to find correct indices for updates
        - The `fields` parameter in style updates uses field mask syntax
        
        ## Resources
        
        - [API Overview](https://developers.google.com/docs/api/how-tos/overview)
        - [Get Document](https://developers.google.com/docs/api/reference/rest/v1/documents/get)
        - [Create Document](https://developers.google.com/docs/api/reference/rest/v1/documents/create)
        - [Batch Update](https://developers.google.com/docs/api/reference/rest/v1/documents/batchUpdate)
        - [Request Types Reference](https://developers.google.com/docs/api/reference/rest/v1/documents/request)
        - [Document Structure Guide](https://developers.google.com/docs/api/concepts/structure)
    • google-drive
      • README.md 5.1 KB
        # Google Drive Routing Reference
        
        **App name:** `google-drive`
        **Base URL proxied:** `www.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-drive/drive/v3/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### List Files
        ```bash
        GET /google-drive/drive/v3/files?pageSize=10
        ```
        
        With query:
        ```bash
        GET /google-drive/drive/v3/files?q=name%20contains%20'report'&pageSize=10
        ```
        
        Only folders:
        ```bash
        GET /google-drive/drive/v3/files?q=mimeType='application/vnd.google-apps.folder'
        ```
        
        Files in specific folder:
        ```bash
        GET /google-drive/drive/v3/files?q='FOLDER_ID'+in+parents
        ```
        
        With fields:
        ```bash
        GET /google-drive/drive/v3/files?fields=files(id,name,mimeType,createdTime,modifiedTime,size)
        ```
        
        ### Get File Metadata
        ```bash
        GET /google-drive/drive/v3/files/{fileId}?fields=id,name,mimeType,size,createdTime
        ```
        
        ### Download File Content
        ```bash
        GET /google-drive/drive/v3/files/{fileId}?alt=media
        ```
        
        ### Export Google Docs (to PDF, DOCX, etc.)
        ```bash
        GET /google-drive/drive/v3/files/{fileId}/export?mimeType=application/pdf
        ```
        
        ### Create File (metadata only)
        ```bash
        POST /google-drive/drive/v3/files
        Content-Type: application/json
        
        {
          "name": "New Document",
          "mimeType": "application/vnd.google-apps.document"
        }
        ```
        
        ### Create Folder
        ```bash
        POST /google-drive/drive/v3/files
        Content-Type: application/json
        
        {
          "name": "New Folder",
          "mimeType": "application/vnd.google-apps.folder"
        }
        ```
        
        ### Update File Metadata
        ```bash
        PATCH /google-drive/drive/v3/files/{fileId}
        Content-Type: application/json
        
        {
          "name": "Renamed File"
        }
        ```
        
        ### Move File to Folder
        ```bash
        PATCH /google-drive/drive/v3/files/{fileId}?addParents=NEW_FOLDER_ID&removeParents=OLD_FOLDER_ID
        ```
        
        ### Delete File
        ```bash
        DELETE /google-drive/drive/v3/files/{fileId}
        ```
        
        ### Copy File
        ```bash
        POST /google-drive/drive/v3/files/{fileId}/copy
        Content-Type: application/json
        
        {
          "name": "Copy of File"
        }
        ```
        
        ### Create Permission (Share File)
        ```bash
        POST /google-drive/drive/v3/files/{fileId}/permissions
        Content-Type: application/json
        
        {
          "role": "reader",
          "type": "user",
          "emailAddress": "user@example.com"
        }
        ```
        
        ## File Uploads
        
        Upload endpoints use a different path pattern: `/google-drive/upload/drive/v3/files`
        
        ### Simple Upload (up to 5MB)
        ```bash
        POST /google-drive/upload/drive/v3/files?uploadType=media
        Content-Type: text/plain
        
        <file content>
        ```
        
        ### Multipart Upload (with metadata, up to 5MB)
        ```bash
        POST /google-drive/upload/drive/v3/files?uploadType=multipart
        Content-Type: multipart/related; boundary=boundary
        
        --boundary
        Content-Type: application/json
        
        {"name": "myfile.txt"}
        --boundary
        Content-Type: text/plain
        
        <file content>
        --boundary--
        ```
        
        ### Resumable Upload (for large files)
        ```bash
        # Step 1: Initiate session
        POST /google-drive/upload/drive/v3/files?uploadType=resumable
        Content-Type: application/json
        X-Upload-Content-Type: application/octet-stream
        X-Upload-Content-Length: <file_size>
        
        {"name": "large_file.bin"}
        
        # Response includes Location header with upload URI
        # Step 2: Upload content to that URI
        ```
        
        ### Update File Content
        ```bash
        PATCH /google-drive/upload/drive/v3/files/{fileId}?uploadType=media
        Content-Type: text/plain
        
        <new file content>
        ```
        
        ## Query Operators
        
        Use in the `q` parameter:
        - `name = 'exact name'`
        - `name contains 'partial'`
        - `mimeType = 'application/pdf'`
        - `'folderId' in parents`
        - `trashed = false`
        - `modifiedTime > '2024-01-01T00:00:00'`
        
        Combine with `and`:
        ```
        name contains 'report' and mimeType = 'application/pdf'
        ```
        
        ## Common MIME Types
        
        - `application/vnd.google-apps.document` - Google Docs
        - `application/vnd.google-apps.spreadsheet` - Google Sheets
        - `application/vnd.google-apps.presentation` - Google Slides
        - `application/vnd.google-apps.folder` - Folder
        - `application/pdf` - PDF
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Use `fields` parameter to limit response data
        - Pagination uses `pageToken` from previous response's `nextPageToken`
        - Upload endpoints use `/upload/drive/v3/files` path (note the `/upload` prefix)
        - Use `uploadType=resumable` for files larger than 5MB
        - Resumable uploads support chunking (256KB minimum, 5MB recommended)
        
        ## Resources
        
        - [API Overview](https://developers.google.com/workspace/drive/api/reference/rest/v3#rest-resource:-v3.about)
        - [List Files](https://developers.google.com/drive/api/reference/rest/v3/files/list)
        - [Get File](https://developers.google.com/drive/api/reference/rest/v3/files/get)
        - [Create File](https://developers.google.com/drive/api/reference/rest/v3/files/create)
        - [Update File](https://developers.google.com/drive/api/reference/rest/v3/files/update)
        - [Delete File](https://developers.google.com/drive/api/reference/rest/v3/files/delete)
        - [Copy File](https://developers.google.com/drive/api/reference/rest/v3/files/copy)
        - [Export File](https://developers.google.com/drive/api/reference/rest/v3/files/export)
        - [Upload Files](https://developers.google.com/drive/api/guides/manage-uploads)
        - [Resumable Uploads](https://developers.google.com/drive/api/guides/manage-uploads#resumable)
        - [Create Permission](https://developers.google.com/workspace/drive/api/reference/rest/v3/permissions/create)
        - [Search Query Syntax](https://developers.google.com/drive/api/guides/search-files)
    • google-forms
      • README.md 4.1 KB
        # Google Forms Routing Reference
        
        **App name:** `google-forms`
        **Base URL proxied:** `forms.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-forms/v1/forms/{formId}
        ```
        
        ## Common Endpoints
        
        ### Get Form
        ```bash
        GET /google-forms/v1/forms/{formId}
        ```
        
        ### Create Form
        ```bash
        POST /google-forms/v1/forms
        Content-Type: application/json
        
        {
          "info": {
            "title": "Customer Feedback Survey"
          }
        }
        ```
        
        ### Batch Update Form
        ```bash
        POST /google-forms/v1/forms/{formId}:batchUpdate
        Content-Type: application/json
        
        {
          "requests": [
            {
              "createItem": {
                "item": {
                  "title": "What is your name?",
                  "questionItem": {
                    "question": {
                      "required": true,
                      "textQuestion": {
                        "paragraph": false
                      }
                    }
                  }
                },
                "location": {"index": 0}
              }
            }
          ]
        }
        ```
        
        ### List Responses
        ```bash
        GET /google-forms/v1/forms/{formId}/responses
        ```
        
        ### Get Response
        ```bash
        GET /google-forms/v1/forms/{formId}/responses/{responseId}
        ```
        
        ## Common Requests for batchUpdate
        
        ### Create Text Question
        ```json
        {
          "createItem": {
            "item": {
              "title": "Question text",
              "questionItem": {
                "question": {
                  "required": true,
                  "textQuestion": {"paragraph": false}
                }
              }
            },
            "location": {"index": 0}
          }
        }
        ```
        
        ### Create Multiple Choice Question
        ```json
        {
          "createItem": {
            "item": {
              "title": "Select an option",
              "questionItem": {
                "question": {
                  "required": true,
                  "choiceQuestion": {
                    "type": "RADIO",
                    "options": [
                      {"value": "Option A"},
                      {"value": "Option B"},
                      {"value": "Option C"}
                    ]
                  }
                }
              }
            },
            "location": {"index": 0}
          }
        }
        ```
        
        ### Create Checkbox Question
        ```json
        {
          "createItem": {
            "item": {
              "title": "Select all that apply",
              "questionItem": {
                "question": {
                  "choiceQuestion": {
                    "type": "CHECKBOX",
                    "options": [
                      {"value": "Option 1"},
                      {"value": "Option 2"}
                    ]
                  }
                }
              }
            },
            "location": {"index": 0}
          }
        }
        ```
        
        ### Create Scale Question
        ```json
        {
          "createItem": {
            "item": {
              "title": "Rate your experience",
              "questionItem": {
                "question": {
                  "scaleQuestion": {
                    "low": 1,
                    "high": 5,
                    "lowLabel": "Poor",
                    "highLabel": "Excellent"
                  }
                }
              }
            },
            "location": {"index": 0}
          }
        }
        ```
        
        ### Update Form Info
        ```json
        {
          "updateFormInfo": {
            "info": {
              "title": "New Form Title",
              "description": "Form description"
            },
            "updateMask": "title,description"
          }
        }
        ```
        
        ### Delete Item
        ```json
        {
          "deleteItem": {
            "location": {"index": 0}
          }
        }
        ```
        
        ## Question Types
        
        - `textQuestion` - Short or paragraph text
        - `choiceQuestion` - Radio, checkbox, or dropdown
        - `scaleQuestion` - Linear scale
        - `dateQuestion` - Date picker
        - `timeQuestion` - Time picker
        - `fileUploadQuestion` - File upload
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Form IDs can be found in the form URL
        - Responses include `answers` keyed by question ID
        - Use `updateMask` to specify which fields to update
        - Location index is 0-based for item positioning
        
        ## Resources
        
        - [API Overview](https://developers.google.com/workspace/forms/api/reference/rest)
        - [Get Form](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms/get)
        - [Create Form](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms/create)
        - [Batch Update Form](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms/batchUpdate)
        - [Batch Update Request Types](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms/batchUpdate#request)
        - [List Responses](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms.responses/list)
        - [Get Response](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms.responses/get)
        - [Form Resource](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms)
    • google-mail
      • README.md 3.6 KB
        # Gmail Routing Reference
        
        **App name:** `google-mail`
        **Base URL proxied:** `gmail.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-mail/gmail/v1/users/me/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### List Messages
        ```bash
        GET /google-mail/gmail/v1/users/me/messages?maxResults=10
        ```
        
        With query filter:
        ```bash
        GET /google-mail/gmail/v1/users/me/messages?q=is:unread&maxResults=10
        ```
        
        ### Get Message
        ```bash
        GET /google-mail/gmail/v1/users/me/messages/{messageId}
        ```
        
        With metadata only:
        ```bash
        GET /google-mail/gmail/v1/users/me/messages/{messageId}?format=metadata&metadataHeaders=From&metadataHeaders=Subject&metadataHeaders=Date
        ```
        
        ### Send Message
        ```bash
        POST /google-mail/gmail/v1/users/me/messages/send
        Content-Type: application/json
        
        {
          "raw": "BASE64_ENCODED_EMAIL"
        }
        ```
        
        ### List Labels
        ```bash
        GET /google-mail/gmail/v1/users/me/labels
        ```
        
        ### List Threads
        ```bash
        GET /google-mail/gmail/v1/users/me/threads?maxResults=10
        ```
        
        ### Get Thread
        ```bash
        GET /google-mail/gmail/v1/users/me/threads/{threadId}
        ```
        
        ### Modify Message Labels
        ```bash
        POST /google-mail/gmail/v1/users/me/messages/{messageId}/modify
        Content-Type: application/json
        
        {
          "addLabelIds": ["STARRED"],
          "removeLabelIds": ["UNREAD"]
        }
        ```
        
        ### Trash Message
        ```bash
        POST /google-mail/gmail/v1/users/me/messages/{messageId}/trash
        ```
        
        ### Create Draft
        ```bash
        POST /google-mail/gmail/v1/users/me/drafts
        Content-Type: application/json
        
        {
          "message": {
            "raw": "BASE64URL_ENCODED_EMAIL"
          }
        }
        ```
        
        ### Update Draft
        ```bash
        PUT /google-mail/gmail/v1/users/me/drafts/{draftId}
        Content-Type: application/json
        
        {
          "message": {
            "raw": "BASE64URL_ENCODED_EMAIL"
          }
        }
        ```
        
        ### Send Draft
        ```bash
        POST /google-mail/gmail/v1/users/me/drafts/send
        Content-Type: application/json
        
        {
          "id": "{draftId}"
        }
        ```
        
        ### Get Profile
        ```bash
        GET /google-mail/gmail/v1/users/me/profile
        ```
        
        ## Query Operators
        
        Use in the `q` parameter:
        - `is:unread` - Unread messages
        - `is:starred` - Starred messages
        - `from:email@example.com` - From specific sender
        - `to:email@example.com` - To specific recipient
        - `subject:keyword` - Subject contains keyword
        - `after:2024/01/01` - After date
        - `before:2024/12/31` - Before date
        - `has:attachment` - Has attachments
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Use `me` as userId for the authenticated user
        - Message body is base64url encoded in the `raw` field
        
        ## Resources
        
        - [API Overview](https://developers.google.com/gmail/api/reference/rest)
        - [List Messages](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/list)
        - [Get Message](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/get)
        - [Send Message](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/send)
        - [Modify Message Labels](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/modify)
        - [Trash Message](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/trash)
        - [List Threads](https://developers.google.com/gmail/api/reference/rest/v1/users.threads/list)
        - [Get Thread](https://developers.google.com/gmail/api/reference/rest/v1/users.threads/get)
        - [List Labels](https://developers.google.com/gmail/api/reference/rest/v1/users.labels/list)
        - [Create Draft](https://developers.google.com/gmail/api/reference/rest/v1/users.drafts/create)
        - [Update Draft](https://developers.google.com/gmail/api/reference/rest/v1/users.drafts/update)
        - [Send Draft](https://developers.google.com/gmail/api/reference/rest/v1/users.drafts/send)
        - [Get Profile](https://developers.google.com/gmail/api/reference/rest/v1/users/getProfile)
    • google-meet
      • README.md 2.7 KB
        # Google Meet Routing Reference
        
        **App name:** `google-meet`
        **Base URL proxied:** `meet.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-meet/v2/{resource}
        ```
        
        ## Common Endpoints
        
        ### Create Space
        ```bash
        POST /google-meet/v2/spaces
        Content-Type: application/json
        
        {}
        ```
        
        Response:
        ```json
        {
          "name": "spaces/abc123",
          "meetingUri": "https://meet.google.com/abc-defg-hij",
          "meetingCode": "abc-defg-hij",
          "config": {
            "accessType": "OPEN",
            "entryPointAccess": "ALL"
          }
        }
        ```
        
        ### Get Space
        ```bash
        GET /google-meet/v2/spaces/{spaceId}
        ```
        
        ### Update Space
        ```bash
        PATCH /google-meet/v2/spaces/{spaceId}
        Content-Type: application/json
        
        {
          "config": {
            "accessType": "TRUSTED"
          }
        }
        ```
        
        ### End Active Call
        ```bash
        POST /google-meet/v2/spaces/{spaceId}:endActiveConference
        ```
        
        ### List Conference Records
        ```bash
        GET /google-meet/v2/conferenceRecords
        ```
        
        With filter:
        ```bash
        GET /google-meet/v2/conferenceRecords?filter=space.name="spaces/abc123"
        ```
        
        ### Get Conference Record
        ```bash
        GET /google-meet/v2/conferenceRecords/{conferenceRecordId}
        ```
        
        ### List Participants
        ```bash
        GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/participants
        ```
        
        ### Get Participant
        ```bash
        GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/participants/{participantId}
        ```
        
        ### List Recordings
        ```bash
        GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/recordings
        ```
        
        ### Get Recording
        ```bash
        GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/recordings/{recordingId}
        ```
        
        ### List Transcripts
        ```bash
        GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/transcripts
        ```
        
        ### Get Transcript
        ```bash
        GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/transcripts/{transcriptId}
        ```
        
        ### List Transcript Entries
        ```bash
        GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/transcripts/{transcriptId}/entries
        ```
        
        ## Notes
        
        - Spaces are persistent meeting rooms that can be reused
        - Conference records are created when a meeting starts and track meeting history
        - Access types: `OPEN` (anyone with link), `TRUSTED` (organization members only), `RESTRICTED` (invited only)
        - Recordings and transcripts require Google Workspace with recording enabled
        
        ## Resources
        
        - [Google Meet API Overview](https://developers.google.com/meet/api/reference/rest)
        - [Spaces](https://developers.google.com/meet/api/reference/rest/v2/spaces)
        - [Conference Records](https://developers.google.com/meet/api/reference/rest/v2/conferenceRecords)
        - [Participants](https://developers.google.com/meet/api/reference/rest/v2/conferenceRecords.participants)
        - [Recordings](https://developers.google.com/meet/api/reference/rest/v2/conferenceRecords.recordings)
        - [Transcripts](https://developers.google.com/meet/api/reference/rest/v2/conferenceRecords.transcripts)
        
    • google-merchant
      • README.md 5 KB
        # Google Merchant Routing Reference
        
        **App name:** `google-merchant`
        **Base URL proxied:** `merchantapi.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-merchant/{sub-api}/{version}/accounts/{accountId}/{resource}
        ```
        
        The Merchant API uses sub-APIs: `products`, `accounts`, `datasources`, `reports`, `promotions`, `inventories`, `notifications`, `conversions`
        
        **Important:** The v1 API requires one-time developer registration per Merchant Center account. Complete the registration steps below before using any endpoints.
        
        ## Developer Registration
        
        Before using v1 endpoints, you must complete a one-time registration:
        
        ### Step 1: Get Your Account ID
        
        **Option A: Try fetching via API first**
        
        Try listing accounts using the v1beta endpoint. If this works, you can get your account ID automatically:
        
        ```bash
        GET /google-merchant/accounts/v1beta/accounts
        ```
        
        Response (if successful):
        ```json
        {
          "accounts": [
            {"accountId": "123456789", "accountName": "My Store"}
          ]
        }
        ```
        
        **Option B: From Merchant Center UI (if Option A fails)**
        
        If the v1beta endpoint is unavailable or returns an error:
        
        1. Log in to [Google Merchant Center](https://merchants.google.com/)
        2. Your account ID is in the URL: `https://merchants.google.com/mc/overview?a=YOUR_ACCOUNT_ID`
        
        For example, if your URL is `https://merchants.google.com/mc/overview?a=123456789`, your account ID is `123456789`.
        
        ### Step 2: Register for API Access
        
        ```bash
        POST /google-merchant/accounts/v1/accounts/{accountId}/developerRegistration:registerGcp
        Content-Type: application/json
        
        {
          "developerEmail": "your-email@example.com"
        }
        ```
        
        Replace `{accountId}` with your account ID from Step 1, and use the email associated with your Google account.
        
        **Response:**
        ```json
        {
          "name": "accounts/123456789/developerRegistration",
          "gcpIds": ["..."]
        }
        ```
        
        ### Step 3: Verify Registration
        
        After registration, test that v1 endpoints work:
        
        ```bash
        GET /google-merchant/accounts/v1/accounts/{accountId}
        ```
        
        **Note:** Registration only needs to be done once per Merchant Center account. After successful registration, all v1 endpoints will work for that account.
        
        ## Common Endpoints
        
        ### List Accounts
        ```bash
        GET /google-merchant/accounts/v1/accounts
        ```
        
        ### List Products
        ```bash
        GET /google-merchant/products/v1/accounts/{accountId}/products
        ```
        
        ### Get Product
        ```bash
        GET /google-merchant/products/v1/accounts/{accountId}/products/{productId}
        ```
        
        Product ID format: `contentLanguage~feedLabel~offerId` (e.g., `en~US~sku123`)
        
        ### Insert Product Input
        ```bash
        POST /google-merchant/products/v1/accounts/{accountId}/productInputs:insert?dataSource=accounts/{accountId}/dataSources/{dataSourceId}
        Content-Type: application/json
        
        {
          "offerId": "sku123",
          "contentLanguage": "en",
          "feedLabel": "US",
          "productAttributes": {
            "title": "Product Title",
            "link": "https://example.com/product",
            "imageLink": "https://example.com/image.jpg",
            "availability": "in_stock",
            "price": {"amountMicros": "19990000", "currencyCode": "USD"}
          }
        }
        ```
        
        ### Delete Product Input
        ```bash
        DELETE /google-merchant/products/v1/accounts/{accountId}/productInputs/{productId}?dataSource=accounts/{accountId}/dataSources/{dataSourceId}
        ```
        
        ### List Data Sources
        ```bash
        GET /google-merchant/datasources/v1/accounts/{accountId}/dataSources
        ```
        
        ### Search Reports
        ```bash
        POST /google-merchant/reports/v1/accounts/{accountId}/reports:search
        Content-Type: application/json
        
        {
          "query": "SELECT id, offer_id, title FROM product_view LIMIT 10"
        }
        ```
        
        Note: The `product_view` table requires the `id` field in SELECT clause.
        
        ### List Promotions
        ```bash
        GET /google-merchant/promotions/v1/accounts/{accountId}/promotions
        ```
        
        Note: Requires Promotions program enrollment.
        
        ### Get Account
        ```bash
        GET /google-merchant/accounts/v1/accounts/{accountId}
        ```
        
        ### List Regional Inventories
        ```bash
        GET /google-merchant/inventories/v1/accounts/{accountId}/products/{productId}/regionalInventories
        ```
        
        ### List Local Inventories
        ```bash
        GET /google-merchant/inventories/v1/accounts/{accountId}/products/{productId}/localInventories
        ```
        
        Note: Local inventories only work for products with LOCAL channel.
        
        ## Notes
        
        - **Developer registration required** - Complete registration before using v1 endpoints
        - Authentication is automatic - the router injects the OAuth token
        - Account ID is your Merchant Center numeric ID (visible in MC URL)
        - Product IDs use format `contentLanguage~feedLabel~offerId`
        - Monetary values use micros (divide by 1,000,000)
        - Products can only be inserted in data sources with `input: "API"` type
        - Uses token-based pagination with `pageSize` and `pageToken`
        - Promotions require account enrollment in Promotions program
        - Local inventories only work for LOCAL channel products
        
        ## Resources
        
        - [Merchant API Overview](https://developers.google.com/merchant/api/overview)
        - [Merchant API Reference](https://developers.google.com/merchant/api/reference/rest)
        - [Products Guide](https://developers.google.com/merchant/api/guides/products/overview)
        - [Reports Guide](https://developers.google.com/merchant/api/guides/reports)
        
    • google-play
      • README.md 3.8 KB
        # Google Play Routing Reference
        
        **App name:** `google-play`
        **Base URL proxied:** `androidpublisher.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-play/androidpublisher/v3/applications/{packageName}/{resource}
        ```
        
        ## Common Endpoints
        
        ### In-App Products
        
        #### List In-App Products
        ```bash
        GET /google-play/androidpublisher/v3/applications/{packageName}/inappproducts
        ```
        
        #### Get In-App Product
        ```bash
        GET /google-play/androidpublisher/v3/applications/{packageName}/inappproducts/{sku}
        ```
        
        #### Create In-App Product
        ```bash
        POST /google-play/androidpublisher/v3/applications/{packageName}/inappproducts
        Content-Type: application/json
        
        {
          "packageName": "com.example.app",
          "sku": "premium_upgrade",
          "status": "active",
          "purchaseType": "managedUser",
          "defaultPrice": {
            "priceMicros": "990000",
            "currency": "USD"
          },
          "listings": {
            "en-US": {
              "title": "Premium Upgrade",
              "description": "Unlock all premium features"
            }
          }
        }
        ```
        
        #### Delete In-App Product
        ```bash
        DELETE /google-play/androidpublisher/v3/applications/{packageName}/inappproducts/{sku}
        ```
        
        ### Subscriptions
        
        #### List Subscriptions
        ```bash
        GET /google-play/androidpublisher/v3/applications/{packageName}/subscriptions
        ```
        
        #### Get Subscription
        ```bash
        GET /google-play/androidpublisher/v3/applications/{packageName}/subscriptions/{productId}
        ```
        
        ### Purchases
        
        #### Get Product Purchase
        ```bash
        GET /google-play/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}
        ```
        
        #### Acknowledge Purchase
        ```bash
        POST /google-play/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}:acknowledge
        Content-Type: application/json
        
        {
          "developerPayload": "optional payload"
        }
        ```
        
        #### Get Subscription Purchase
        ```bash
        GET /google-play/androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}
        ```
        
        #### Cancel Subscription
        ```bash
        POST /google-play/androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:cancel
        ```
        
        ### Reviews
        
        #### List Reviews
        ```bash
        GET /google-play/androidpublisher/v3/applications/{packageName}/reviews
        ```
        
        #### Get Review
        ```bash
        GET /google-play/androidpublisher/v3/applications/{packageName}/reviews/{reviewId}
        ```
        
        #### Reply to Review
        ```bash
        POST /google-play/androidpublisher/v3/applications/{packageName}/reviews/{reviewId}:reply
        Content-Type: application/json
        
        {
          "replyText": "Thank you for your feedback!"
        }
        ```
        
        ### Edits (App Updates)
        
        #### Create Edit
        ```bash
        POST /google-play/androidpublisher/v3/applications/{packageName}/edits
        ```
        
        #### Commit Edit
        ```bash
        POST /google-play/androidpublisher/v3/applications/{packageName}/edits/{editId}:commit
        ```
        
        #### Delete Edit
        ```bash
        DELETE /google-play/androidpublisher/v3/applications/{packageName}/edits/{editId}
        ```
        
        ## Notes
        
        - Replace `{packageName}` with your app's package name (e.g., `com.example.app`)
        - The Google Play Developer API requires the app to be published on Google Play
        - Subscription management requires the app to have active subscriptions configured
        - Edits are transactional - create an edit, make changes, then commit
        - Prices are in micros (1,000,000 micros = 1 unit of currency)
        
        ## Resources
        
        - [Android Publisher API Overview](https://developers.google.com/android-publisher)
        - [In-App Products](https://developers.google.com/android-publisher/api-ref/rest/v3/inappproducts)
        - [Subscriptions](https://developers.google.com/android-publisher/api-ref/rest/v3/monetization.subscriptions)
        - [Purchases](https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.products)
        - [Reviews](https://developers.google.com/android-publisher/api-ref/rest/v3/reviews)
        - [Edits](https://developers.google.com/android-publisher/api-ref/rest/v3/edits)
        
    • google-search-console
      • README.md 3.8 KB
        # Google Search Console Routing Reference
        
        **App name:** `google-search-console`
        **Base URL proxied:** `www.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-search-console/webmasters/v3/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### List Sites
        ```bash
        GET /google-search-console/webmasters/v3/sites
        ```
        
        ### Get Site
        ```bash
        GET /google-search-console/webmasters/v3/sites/{siteUrl}
        ```
        
        Note: Site URL must be URL-encoded (e.g., `https%3A%2F%2Fexample.com%2F`)
        
        ### Search Analytics Query
        ```bash
        POST /google-search-console/webmasters/v3/sites/{siteUrl}/searchAnalytics/query
        Content-Type: application/json
        
        {
          "startDate": "2024-01-01",
          "endDate": "2024-01-31",
          "dimensions": ["query"],
          "rowLimit": 100
        }
        ```
        
        ### List Sitemaps
        ```bash
        GET /google-search-console/webmasters/v3/sites/{siteUrl}/sitemaps
        ```
        
        ### Get Sitemap
        ```bash
        GET /google-search-console/webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}
        ```
        
        ### Submit Sitemap
        ```bash
        PUT /google-search-console/webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}
        ```
        
        ### Delete Sitemap
        ```bash
        DELETE /google-search-console/webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}
        ```
        
        ## Search Analytics Query Examples
        
        ### Top Queries
        ```json
        {
          "startDate": "2024-01-01",
          "endDate": "2024-01-31",
          "dimensions": ["query"],
          "rowLimit": 25,
          "startRow": 0
        }
        ```
        
        ### Top Pages
        ```json
        {
          "startDate": "2024-01-01",
          "endDate": "2024-01-31",
          "dimensions": ["page"],
          "rowLimit": 25
        }
        ```
        
        ### Queries by Country
        ```json
        {
          "startDate": "2024-01-01",
          "endDate": "2024-01-31",
          "dimensions": ["query", "country"],
          "rowLimit": 100
        }
        ```
        
        ### Device Breakdown
        ```json
        {
          "startDate": "2024-01-01",
          "endDate": "2024-01-31",
          "dimensions": ["device"],
          "rowLimit": 10
        }
        ```
        
        ### Daily Performance
        ```json
        {
          "startDate": "2024-01-01",
          "endDate": "2024-01-31",
          "dimensions": ["date"],
          "rowLimit": 31
        }
        ```
        
        ### Filtered Query
        ```json
        {
          "startDate": "2024-01-01",
          "endDate": "2024-01-31",
          "dimensions": ["query"],
          "dimensionFilterGroups": [{
            "filters": [{
              "dimension": "query",
              "operator": "contains",
              "expression": "keyword"
            }]
          }],
          "rowLimit": 100
        }
        ```
        
        ### Search Type Filter
        ```json
        {
          "startDate": "2024-01-01",
          "endDate": "2024-01-31",
          "dimensions": ["query"],
          "type": "image",
          "rowLimit": 25
        }
        ```
        
        ## Dimensions
        
        - `query` - Search query
        - `page` - Page URL
        - `country` - Country code (ISO 3166-1 alpha-3)
        - `device` - DESKTOP, MOBILE, TABLET
        - `date` - Date in YYYY-MM-DD format
        - `searchAppearance` - Rich result types
        
        ## Metrics (returned automatically)
        
        - `clicks` - Number of clicks
        - `impressions` - Number of impressions
        - `ctr` - Click-through rate
        - `position` - Average position
        
        ## Filter Operators
        
        - `equals`
        - `contains`
        - `notContains`
        - `includingRegex`
        - `excludingRegex`
        
        ## Search Types
        
        - `web` - Web search (default)
        - `image` - Image search
        - `video` - Video search
        - `news` - News search
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Site URLs must be URL-encoded in the path (e.g., `sc-domain%3Aexample.com`)
        - Date range is limited to 16 months of data
        - Maximum 25,000 rows per request
        - Use `startRow` for pagination
        - Data has a 2-3 day delay
        
        ## Resources
        
        - [API Reference](https://developers.google.com/webmaster-tools/v1/api_reference_index)
        - [List Sites](https://developers.google.com/webmaster-tools/v1/sites/list)
        - [Get Site](https://developers.google.com/webmaster-tools/v1/sites/get)
        - [Search Analytics Query](https://developers.google.com/webmaster-tools/v1/searchanalytics/query)
        - [List Sitemaps](https://developers.google.com/webmaster-tools/v1/sitemaps/list)
        - [Get Sitemap](https://developers.google.com/webmaster-tools/v1/sitemaps/get)
        - [Submit Sitemap](https://developers.google.com/webmaster-tools/v1/sitemaps/submit)
        - [Delete Sitemap](https://developers.google.com/webmaster-tools/v1/sitemaps/delete)
    • google-sheets
      • README.md 6 KB
        # Google Sheets Routing Reference
        
        **App name:** `google-sheets`
        **Base URL proxied:** `sheets.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-sheets/v4/spreadsheets/{spreadsheetId}/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Get Spreadsheet Metadata
        ```bash
        GET /google-sheets/v4/spreadsheets/{spreadsheetId}
        ```
        
        ### Get Values
        ```bash
        GET /google-sheets/v4/spreadsheets/{spreadsheetId}/values/{range}
        ```
        
        Example:
        ```bash
        GET /google-sheets/v4/spreadsheets/SHEET_ID/values/Sheet1!A1:D10
        ```
        
        ### Get Multiple Ranges
        ```bash
        GET /google-sheets/v4/spreadsheets/{spreadsheetId}/values:batchGet?ranges=Sheet1!A1:B10&ranges=Sheet2!A1:C5
        ```
        
        ### Update Values
        ```bash
        PUT /google-sheets/v4/spreadsheets/{spreadsheetId}/values/{range}?valueInputOption=USER_ENTERED
        Content-Type: application/json
        
        {
          "values": [
            ["A1", "B1", "C1"],
            ["A2", "B2", "C2"]
          ]
        }
        ```
        
        ### Append Values
        ```bash
        POST /google-sheets/v4/spreadsheets/{spreadsheetId}/values/{range}:append?valueInputOption=USER_ENTERED
        Content-Type: application/json
        
        {
          "values": [
            ["New Row 1", "Data", "More Data"],
            ["New Row 2", "Data", "More Data"]
          ]
        }
        ```
        
        ### Batch Update Values
        ```bash
        POST /google-sheets/v4/spreadsheets/{spreadsheetId}/values:batchUpdate
        Content-Type: application/json
        
        {
          "valueInputOption": "USER_ENTERED",
          "data": [
            {"range": "Sheet1!A1:B2", "values": [["A1", "B1"], ["A2", "B2"]]},
            {"range": "Sheet1!D1:E2", "values": [["D1", "E1"], ["D2", "E2"]]}
          ]
        }
        ```
        
        ### Clear Values
        ```bash
        POST /google-sheets/v4/spreadsheets/{spreadsheetId}/values/{range}:clear
        ```
        
        ### Create Spreadsheet
        ```bash
        POST /google-sheets/v4/spreadsheets
        Content-Type: application/json
        
        {
          "properties": {"title": "New Spreadsheet"},
          "sheets": [{"properties": {"title": "Sheet1"}}]
        }
        ```
        
        ### Batch Update (formatting, add sheets, etc.)
        ```bash
        POST /google-sheets/v4/spreadsheets/{spreadsheetId}:batchUpdate
        Content-Type: application/json
        
        {
          "requests": [
            {"addSheet": {"properties": {"title": "New Sheet"}}}
          ]
        }
        ```
        
        ## Common batchUpdate Requests
        
        See [full list of request types](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/request).
        
        ### Update Cells with Formatting
        ```json
        {
          "updateCells": {
            "rows": [
              {"values": [{"userEnteredValue": {"stringValue": "Name"}}, {"userEnteredValue": {"numberValue": 100}}]}
            ],
            "fields": "userEnteredValue",
            "start": {"sheetId": 0, "rowIndex": 0, "columnIndex": 0}
          }
        }
        ```
        
        ### Format Header Row (Bold + Background Color)
        ```json
        {
          "repeatCell": {
            "range": {"sheetId": 0, "startRowIndex": 0, "endRowIndex": 1, "startColumnIndex": 0, "endColumnIndex": 3},
            "cell": {
              "userEnteredFormat": {
                "backgroundColor": {"red": 0.2, "green": 0.6, "blue": 0.9},
                "textFormat": {"bold": true}
              }
            },
            "fields": "userEnteredFormat(backgroundColor,textFormat)"
          }
        }
        ```
        
        ### Auto-Resize Columns
        ```json
        {
          "autoResizeDimensions": {
            "dimensions": {"sheetId": 0, "dimension": "COLUMNS", "startIndex": 0, "endIndex": 3}
          }
        }
        ```
        
        ### Rename Sheet
        ```json
        {
          "updateSheetProperties": {
            "properties": {"sheetId": 0, "title": "NewName"},
            "fields": "title"
          }
        }
        ```
        
        ### Insert Rows/Columns
        ```json
        {
          "insertDimension": {
            "range": {"sheetId": 0, "dimension": "ROWS", "startIndex": 1, "endIndex": 3},
            "inheritFromBefore": true
          }
        }
        ```
        
        ### Sort Range
        ```json
        {
          "sortRange": {
            "range": {"sheetId": 0, "startRowIndex": 1, "endRowIndex": 10, "startColumnIndex": 0, "endColumnIndex": 3},
            "sortSpecs": [{"dimensionIndex": 1, "sortOrder": "DESCENDING"}]
          }
        }
        ```
        
        ### Add Conditional Formatting
        ```json
        {
          "addConditionalFormatRule": {
            "rule": {
              "ranges": [{"sheetId": 0, "startRowIndex": 1, "endRowIndex": 10, "startColumnIndex": 1, "endColumnIndex": 2}],
              "booleanRule": {
                "condition": {"type": "NUMBER_GREATER_THAN_EQ", "values": [{"userEnteredValue": "90"}]},
                "format": {"backgroundColor": {"red": 0.7, "green": 1, "blue": 0.7}}
              }
            },
            "index": 0
          }
        }
        ```
        
        ### Add Filter
        ```json
        {
          "setBasicFilter": {
            "filter": {
              "range": {"sheetId": 0, "startRowIndex": 0, "endRowIndex": 100, "startColumnIndex": 0, "endColumnIndex": 5}
            }
          }
        }
        ```
        
        ### Delete Sheet
        ```json
        {
          "deleteSheet": {"sheetId": 123456789}
        }
        ```
        
        ## Value Input Options
        
        - `RAW` - Values are stored as-is
        - `USER_ENTERED` - Values are parsed as if typed into the UI (formulas executed, numbers parsed)
        
        ## Range Notation
        
        - `Sheet1!A1:D10` - Specific range
        - `Sheet1!A:D` - Entire columns A through D
        - `Sheet1!1:10` - Entire rows 1 through 10
        - `Sheet1` - Entire sheet
        - `A1:D10` - Range in first sheet
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Range in URL path must be URL-encoded (`!` → `%21`, `:` → `%3A`)
        - Use `valueInputOption=USER_ENTERED` to parse formulas and numbers
        - Delete spreadsheets via Google Drive API
        
        ## Resources
        
        - [API Overview](https://developers.google.com/workspace/sheets/api/reference/rest)
        - [Get Spreadsheet](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/get)
        - [Create Spreadsheet](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/create)
        - [Batch Update](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/batchUpdate)
        - [Batch Update Request Types](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/request)
        - [Get Values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/get)
        - [Update Values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/update)
        - [Append Values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append)
        - [Batch Get Values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/batchGet)
        - [Batch Update Values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/batchUpdate)
        - [Clear Values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/clear)
    • google-slides
      • README.md 4.5 KB
        # Google Slides Routing Reference
        
        **App name:** `google-slides`
        **Base URL proxied:** `slides.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-slides/v1/presentations/{presentationId}
        ```
        
        ## Common Endpoints
        
        ### Create Presentation
        ```bash
        POST /google-slides/v1/presentations
        Content-Type: application/json
        
        {
          "title": "My Presentation"
        }
        ```
        
        ### Get Presentation
        ```bash
        GET /google-slides/v1/presentations/{presentationId}
        ```
        
        ### Get Page (Slide)
        ```bash
        GET /google-slides/v1/presentations/{presentationId}/pages/{pageId}
        ```
        
        ### Get Page Thumbnail
        ```bash
        GET /google-slides/v1/presentations/{presentationId}/pages/{pageId}/thumbnail
        ```
        
        ### Batch Update (All Modifications)
        ```bash
        POST /google-slides/v1/presentations/{presentationId}:batchUpdate
        Content-Type: application/json
        
        {
          "requests": [...]
        }
        ```
        
        ### Create Slide
        ```bash
        POST /google-slides/v1/presentations/{presentationId}:batchUpdate
        Content-Type: application/json
        
        {
          "requests": [
            {
              "createSlide": {
                "objectId": "slide_001",
                "slideLayoutReference": {
                  "predefinedLayout": "TITLE_AND_BODY"
                }
              }
            }
          ]
        }
        ```
        
        Predefined layouts: `BLANK`, `TITLE`, `TITLE_AND_BODY`, `TITLE_AND_TWO_COLUMNS`, `TITLE_ONLY`, `SECTION_HEADER`, `ONE_COLUMN_TEXT`, `MAIN_POINT`, `BIG_NUMBER`
        
        ### Insert Text
        ```bash
        POST /google-slides/v1/presentations/{presentationId}:batchUpdate
        Content-Type: application/json
        
        {
          "requests": [
            {
              "insertText": {
                "objectId": "{shapeId}",
                "text": "Hello, World!",
                "insertionIndex": 0
              }
            }
          ]
        }
        ```
        
        ### Create Shape (Text Box)
        ```bash
        POST /google-slides/v1/presentations/{presentationId}:batchUpdate
        Content-Type: application/json
        
        {
          "requests": [
            {
              "createShape": {
                "objectId": "shape_001",
                "shapeType": "TEXT_BOX",
                "elementProperties": {
                  "pageObjectId": "{slideId}",
                  "size": {
                    "width": {"magnitude": 300, "unit": "PT"},
                    "height": {"magnitude": 100, "unit": "PT"}
                  },
                  "transform": {
                    "scaleX": 1,
                    "scaleY": 1,
                    "translateX": 100,
                    "translateY": 100,
                    "unit": "PT"
                  }
                }
              }
            }
          ]
        }
        ```
        
        ### Create Image
        ```bash
        POST /google-slides/v1/presentations/{presentationId}:batchUpdate
        Content-Type: application/json
        
        {
          "requests": [
            {
              "createImage": {
                "objectId": "image_001",
                "url": "https://example.com/image.png",
                "elementProperties": {
                  "pageObjectId": "{slideId}",
                  "size": {
                    "width": {"magnitude": 200, "unit": "PT"},
                    "height": {"magnitude": 200, "unit": "PT"}
                  }
                }
              }
            }
          ]
        }
        ```
        
        ### Delete Object
        ```bash
        POST /google-slides/v1/presentations/{presentationId}:batchUpdate
        Content-Type: application/json
        
        {
          "requests": [
            {
              "deleteObject": {
                "objectId": "{objectId}"
              }
            }
          ]
        }
        ```
        
        ### Replace All Text (Template Substitution)
        ```bash
        POST /google-slides/v1/presentations/{presentationId}:batchUpdate
        Content-Type: application/json
        
        {
          "requests": [
            {
              "replaceAllText": {
                "containsText": {
                  "text": "{{placeholder}}",
                  "matchCase": true
                },
                "replaceText": "Actual Value"
              }
            }
          ]
        }
        ```
        
        ### Update Text Style
        ```bash
        POST /google-slides/v1/presentations/{presentationId}:batchUpdate
        Content-Type: application/json
        
        {
          "requests": [
            {
              "updateTextStyle": {
                "objectId": "{shapeId}",
                "textRange": {"type": "ALL"},
                "style": {
                  "bold": true,
                  "fontSize": {"magnitude": 24, "unit": "PT"}
                },
                "fields": "bold,fontSize"
              }
            }
          ]
        }
        ```
        
        ## Notes
        
        - Object IDs must be unique within a presentation
        - Use batchUpdate for all modifications (adding slides, text, shapes, etc.)
        - Multiple requests in a batchUpdate are applied atomically
        - Sizes and positions use PT (points) as the unit (72 points = 1 inch)
        - Use `replaceAllText` for template-based presentation generation
        
        ## Resources
        
        - [Slides API Overview](https://developers.google.com/slides/api/reference/rest)
        - [Presentations](https://developers.google.com/slides/api/reference/rest/v1/presentations)
        - [Pages](https://developers.google.com/slides/api/reference/rest/v1/presentations.pages)
        - [BatchUpdate Requests](https://developers.google.com/slides/api/reference/rest/v1/presentations/batchUpdate)
        - [Page Layouts](https://developers.google.com/slides/api/reference/rest/v1/presentations/create#predefinedlayout)
        
    • google-tasks
      • README.md 3 KB
        # Google Tasks Routing Reference
        
        **App name:** `google-tasks`
        **Base URL proxied:** `tasks.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-tasks/tasks/v1/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Task Lists
        
        #### List Task Lists
        ```bash
        GET /google-tasks/tasks/v1/users/@me/lists
        ```
        
        With pagination:
        ```bash
        GET /google-tasks/tasks/v1/users/@me/lists?maxResults=20
        ```
        
        #### Get Task List
        ```bash
        GET /google-tasks/tasks/v1/users/@me/lists/{tasklistId}
        ```
        
        #### Create Task List
        ```bash
        POST /google-tasks/tasks/v1/users/@me/lists
        Content-Type: application/json
        
        {
          "title": "New Task List"
        }
        ```
        
        #### Update Task List
        ```bash
        PATCH /google-tasks/tasks/v1/users/@me/lists/{tasklistId}
        Content-Type: application/json
        
        {
          "title": "Updated Title"
        }
        ```
        
        #### Delete Task List
        ```bash
        DELETE /google-tasks/tasks/v1/users/@me/lists/{tasklistId}
        ```
        
        ### Tasks
        
        #### List Tasks
        ```bash
        GET /google-tasks/tasks/v1/lists/{tasklistId}/tasks
        ```
        
        With filters:
        ```bash
        GET /google-tasks/tasks/v1/lists/{tasklistId}/tasks?showCompleted=true&showHidden=true&maxResults=50
        ```
        
        With date filters:
        ```bash
        GET /google-tasks/tasks/v1/lists/{tasklistId}/tasks?dueMin=2026-01-01T00:00:00Z&dueMax=2026-12-31T23:59:59Z
        ```
        
        #### Get Task
        ```bash
        GET /google-tasks/tasks/v1/lists/{tasklistId}/tasks/{taskId}
        ```
        
        #### Create Task
        ```bash
        POST /google-tasks/tasks/v1/lists/{tasklistId}/tasks
        Content-Type: application/json
        
        {
          "title": "New Task",
          "notes": "Task description",
          "due": "2026-03-01T00:00:00.000Z"
        }
        ```
        
        Create subtask:
        ```bash
        POST /google-tasks/tasks/v1/lists/{tasklistId}/tasks?parent={parentTaskId}
        Content-Type: application/json
        
        {
          "title": "Subtask"
        }
        ```
        
        #### Update Task (partial)
        ```bash
        PATCH /google-tasks/tasks/v1/lists/{tasklistId}/tasks/{taskId}
        Content-Type: application/json
        
        {
          "title": "Updated Title",
          "status": "completed"
        }
        ```
        
        #### Update Task (full replace)
        ```bash
        PUT /google-tasks/tasks/v1/lists/{tasklistId}/tasks/{taskId}
        Content-Type: application/json
        
        {
          "title": "Replaced Task",
          "notes": "New notes",
          "status": "needsAction"
        }
        ```
        
        #### Delete Task
        ```bash
        DELETE /google-tasks/tasks/v1/lists/{tasklistId}/tasks/{taskId}
        ```
        
        #### Move Task
        ```bash
        POST /google-tasks/tasks/v1/lists/{tasklistId}/tasks/{taskId}/move?previous={previousTaskId}
        ```
        
        Make subtask:
        ```bash
        POST /google-tasks/tasks/v1/lists/{tasklistId}/tasks/{taskId}/move?parent={parentTaskId}
        ```
        
        #### Clear Completed Tasks
        ```bash
        POST /google-tasks/tasks/v1/lists/{tasklistId}/clear
        ```
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Task list and task IDs are opaque base64-encoded strings
        - Status values: "needsAction" or "completed"
        - Dates must be in RFC 3339 format (e.g., `2026-01-15T00:00:00.000Z`)
        - Maximum title length: 1024 characters
        - Maximum notes length: 8192 characters
        
        ## Resources
        
        - [Google Tasks API Overview](https://developers.google.com/workspace/tasks)
        - [Tasks Reference](https://developers.google.com/workspace/tasks/reference/rest/v1/tasks)
        - [TaskLists Reference](https://developers.google.com/workspace/tasks/reference/rest/v1/tasklists)
        
    • google-workspace-admin
      • README.md 4.6 KB
        # Google Workspace Admin Routing Reference
        
        **App name:** `google-workspace-admin`
        **Base URL proxied:** `admin.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /google-workspace-admin/admin/directory/v1/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Users
        
        #### List Users
        ```bash
        GET /google-workspace-admin/admin/directory/v1/users?customer=my_customer&maxResults=100
        ```
        
        With search query:
        ```bash
        GET /google-workspace-admin/admin/directory/v1/users?customer=my_customer&query=email:john*
        ```
        
        #### Get User
        ```bash
        GET /google-workspace-admin/admin/directory/v1/users/{userKey}
        ```
        
        `userKey` can be the user's primary email or unique user ID.
        
        #### Create User
        ```bash
        POST /google-workspace-admin/admin/directory/v1/users
        Content-Type: application/json
        
        {
          "primaryEmail": "newuser@example.com",
          "name": {
            "givenName": "Jane",
            "familyName": "Smith"
          },
          "password": "temporaryPassword123!",
          "changePasswordAtNextLogin": true,
          "orgUnitPath": "/Engineering"
        }
        ```
        
        #### Update User
        ```bash
        PUT /google-workspace-admin/admin/directory/v1/users/{userKey}
        Content-Type: application/json
        
        {
          "name": {
            "givenName": "Jane",
            "familyName": "Smith-Johnson"
          },
          "suspended": false
        }
        ```
        
        #### Patch User (partial update)
        ```bash
        PATCH /google-workspace-admin/admin/directory/v1/users/{userKey}
        Content-Type: application/json
        
        {
          "suspended": true
        }
        ```
        
        #### Delete User
        ```bash
        DELETE /google-workspace-admin/admin/directory/v1/users/{userKey}
        ```
        
        #### Make User Admin
        ```bash
        POST /google-workspace-admin/admin/directory/v1/users/{userKey}/makeAdmin
        Content-Type: application/json
        
        {
          "status": true
        }
        ```
        
        ### Groups
        
        #### List Groups
        ```bash
        GET /google-workspace-admin/admin/directory/v1/groups?customer=my_customer
        ```
        
        #### Get Group
        ```bash
        GET /google-workspace-admin/admin/directory/v1/groups/{groupKey}
        ```
        
        #### Create Group
        ```bash
        POST /google-workspace-admin/admin/directory/v1/groups
        Content-Type: application/json
        
        {
          "email": "engineering@example.com",
          "name": "Engineering Team",
          "description": "All engineering staff"
        }
        ```
        
        #### Update Group
        ```bash
        PUT /google-workspace-admin/admin/directory/v1/groups/{groupKey}
        Content-Type: application/json
        
        {
          "name": "Engineering Department",
          "description": "Updated description"
        }
        ```
        
        #### Delete Group
        ```bash
        DELETE /google-workspace-admin/admin/directory/v1/groups/{groupKey}
        ```
        
        ### Group Members
        
        #### List Members
        ```bash
        GET /google-workspace-admin/admin/directory/v1/groups/{groupKey}/members
        ```
        
        #### Add Member
        ```bash
        POST /google-workspace-admin/admin/directory/v1/groups/{groupKey}/members
        Content-Type: application/json
        
        {
          "email": "user@example.com",
          "role": "MEMBER"
        }
        ```
        
        Roles: `OWNER`, `MANAGER`, `MEMBER`
        
        #### Update Member Role
        ```bash
        PATCH /google-workspace-admin/admin/directory/v1/groups/{groupKey}/members/{memberKey}
        Content-Type: application/json
        
        {
          "role": "MANAGER"
        }
        ```
        
        #### Remove Member
        ```bash
        DELETE /google-workspace-admin/admin/directory/v1/groups/{groupKey}/members/{memberKey}
        ```
        
        ### Organizational Units
        
        #### List Org Units
        ```bash
        GET /google-workspace-admin/admin/directory/v1/customer/my_customer/orgunits
        ```
        
        #### Get Org Unit
        ```bash
        GET /google-workspace-admin/admin/directory/v1/customer/my_customer/orgunits/{orgUnitPath}
        ```
        
        #### Create Org Unit
        ```bash
        POST /google-workspace-admin/admin/directory/v1/customer/my_customer/orgunits
        Content-Type: application/json
        
        {
          "name": "Engineering",
          "parentOrgUnitPath": "/",
          "description": "Engineering department"
        }
        ```
        
        #### Delete Org Unit
        ```bash
        DELETE /google-workspace-admin/admin/directory/v1/customer/my_customer/orgunits/{orgUnitPath}
        ```
        
        ### Domains
        
        #### List Domains
        ```bash
        GET /google-workspace-admin/admin/directory/v1/customer/my_customer/domains
        ```
        
        #### Get Domain
        ```bash
        GET /google-workspace-admin/admin/directory/v1/customer/my_customer/domains/{domainName}
        ```
        
        ### Roles
        
        #### List Roles
        ```bash
        GET /google-workspace-admin/admin/directory/v1/customer/my_customer/roles
        ```
        
        #### List Role Assignments
        ```bash
        GET /google-workspace-admin/admin/directory/v1/customer/my_customer/roleassignments
        ```
        
        #### Create Role Assignment
        ```bash
        POST /google-workspace-admin/admin/directory/v1/customer/my_customer/roleassignments
        Content-Type: application/json
        
        {
          "roleId": "123456789",
          "assignedTo": "user_id",
          "scopeType": "CUSTOMER"
        }
        ```
        
        ## Notes
        
        - Use `my_customer` as the customer ID for your own domain
        - User keys can be primary email or unique user ID
        - Group keys can be group email or unique group ID
        - Org unit paths start with `/` (e.g., `/Engineering/Frontend`)
        - Admin privileges are required for most operations
        - Password must meet Google's complexity requirements
        
    • grafana
      • README.md 2.8 KB
        # Grafana Routing Reference
        
        **App name:** `grafana`
        **Base URL proxied:** User's Grafana instance
        
        ## API Path Pattern
        
        ```
        /grafana/api/{resource}
        ```
        
        ## Organization & User
        
        ### Get Current Organization
        ```bash
        GET /grafana/api/org
        ```
        
        ### Get Current User
        ```bash
        GET /grafana/api/user
        ```
        
        ## Dashboards
        
        ### Search Dashboards
        ```bash
        GET /grafana/api/search?type=dash-db
        ```
        
        Query params: `type`, `query`, `tag`, `folderIds`, `limit`
        
        ### Get Dashboard by UID
        ```bash
        GET /grafana/api/dashboards/uid/{uid}
        ```
        
        ### Create/Update Dashboard
        ```bash
        POST /grafana/api/dashboards/db
        Content-Type: application/json
        
        {
          "dashboard": {
            "title": "Dashboard Title",
            "panels": [],
            "schemaVersion": 30
          },
          "overwrite": false
        }
        ```
        
        ### Delete Dashboard
        ```bash
        DELETE /grafana/api/dashboards/uid/{uid}
        ```
        
        ## Folders
        
        ### List Folders
        ```bash
        GET /grafana/api/folders
        ```
        
        ### Get Folder
        ```bash
        GET /grafana/api/folders/{uid}
        ```
        
        ### Create Folder
        ```bash
        POST /grafana/api/folders
        Content-Type: application/json
        
        {"title": "Folder Name"}
        ```
        
        ### Delete Folder
        ```bash
        DELETE /grafana/api/folders/{uid}
        ```
        
        ## Data Sources
        
        ### List Data Sources
        ```bash
        GET /grafana/api/datasources
        ```
        
        ### Get Data Source
        ```bash
        GET /grafana/api/datasources/{id}
        GET /grafana/api/datasources/uid/{uid}
        GET /grafana/api/datasources/name/{name}
        ```
        
        ### Create Data Source
        ```bash
        POST /grafana/api/datasources
        Content-Type: application/json
        
        {
          "name": "Prometheus",
          "type": "prometheus",
          "url": "http://prometheus:9090",
          "access": "proxy"
        }
        ```
        
        ### Delete Data Source
        ```bash
        DELETE /grafana/api/datasources/{id}
        ```
        
        ## Annotations
        
        ### List Annotations
        ```bash
        GET /grafana/api/annotations
        ```
        
        Query params: `from`, `to`, `dashboardUID`, `tags`, `limit`
        
        ### Create Annotation
        ```bash
        POST /grafana/api/annotations
        Content-Type: application/json
        
        {
          "dashboardUID": "abc123",
          "time": 1609459200000,
          "text": "Annotation text",
          "tags": ["tag1"]
        }
        ```
        
        ### Delete Annotation
        ```bash
        DELETE /grafana/api/annotations/{id}
        ```
        
        ## Teams
        
        ### Search Teams
        ```bash
        GET /grafana/api/teams/search
        ```
        
        ### Create Team
        ```bash
        POST /grafana/api/teams
        Content-Type: application/json
        
        {"name": "Team Name"}
        ```
        
        ## Alert Rules
        
        ### List Alert Rules
        ```bash
        GET /grafana/api/v1/provisioning/alert-rules
        GET /grafana/api/ruler/grafana/api/v1/rules
        ```
        
        ## Other Endpoints
        
        ### Service Accounts
        ```bash
        GET /grafana/api/serviceaccounts/search
        ```
        
        ### Plugins
        ```bash
        GET /grafana/api/plugins
        ```
        
        ## Notes
        
        - Dashboard UIDs are unique identifiers
        - Annotations use epoch timestamps in milliseconds
        - Admin operations may require elevated permissions
        - Alert rules use provisioning API (`/api/v1/provisioning/...`)
        
        ## Resources
        
        - [Grafana HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/)
        
    • granola-mcp
      • schemas
        • get_meetings.json 893 B
          {
            "name": "get_meetings",
            "title": "Get detailed meeting information for one or more Granola mee",
            "description": "Get detailed meeting information for one or more Granola meetings by ID. Returns private notes, AI-generated summary, attendees, and metadata.\nUse this when you already have specific meeting IDs (e.g. from list_meetings results). For open-ended questions about meeting content, use query_granola_meetings instead.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "meeting_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "minItems": 1,
                  "maxItems": 10,
                  "description": "Array of meeting UUIDs (max 10)"
                }
              },
              "required": [
                "meeting_ids"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • get_meeting_transcript.json 819 B
          {
            "name": "get_meeting_transcript",
            "title": "Get the full transcript for a specific Granola meeting by ID",
            "description": "Get the full transcript for a specific Granola meeting by ID. Returns only the verbatim transcript content, not summaries or notes.\nUse this when the user needs exact quotes, specific wording, or wants to review what was literally said in a meeting. For summarized content or action items, use query_granola_meetings or list_meetings/get_meetings instead.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "meeting_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Meeting UUID"
                }
              },
              "required": [
                "meeting_id"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • list_meetings.json 1.5 KB
          {
            "name": "list_meetings",
            "title": "List the user's Granola meeting notes within a time range. R",
            "description": "List the user's Granola meeting notes within a time range. Returns meeting titles and metadata.\n\nIMPORTANT: For short-term questions about recent meeting details, prefer using query_granola_meetings instead.\n\nWhen to use:\n- User asks to list their meetings\n- User asks about action items, decisions, or summaries from meetings over a longer or specific date range\n- User asks about content from their meeting transcripts\n- User references 'Granola notes' or 'meeting notes' or 'transcripts'\n\nWhen NOT to use:\n- User is asking about upcoming calendar events or scheduling\n- User wants to create/modify calendar invites\n\nUse get_meetings to retrieve detailed meeting content after identifying relevant meetings.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "time_range": {
                  "type": "string",
                  "enum": [
                    "this_week",
                    "last_week",
                    "last_30_days",
                    "custom"
                  ],
                  "default": "last_30_days",
                  "description": "Time range to query meetings from"
                },
                "custom_start": {
                  "type": "string",
                  "description": "ISO date for custom range start (required if time_range is 'custom')"
                },
                "custom_end": {
                  "type": "string",
                  "description": "ISO date for custom range end (required if time_range is 'custom')"
                }
              },
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • query_granola_meetings.json 1.6 KB
          {
            "name": "query_granola_meetings",
            "title": "Query Granola about the user's meetings using natural langua",
            "description": "Query Granola about the user's meetings using natural language. Returns a tailored response with inline citation links in mark  (e.g. [[0]](url)) that reference source meeting notes.\n\nIMPORTANT: The response includes numbered citation links to specific Granola meeting notes. These citations MUST be preserved in your response to the user \u2014 they provide transparency and allow the user to verify information by clicking through to the original notes.\n\nWhen to use:\n- User asks about what was discussed, decided, or action-items from meetings\n- User asks about follow-ups, todos, or commitments from recent meetings\n- User references 'Granola notes' or 'meeting notes'\n\nWhen NOT to use:\n- User is asking about calendar scheduling or upcoming events\n- User explicitly asks for a specific meeting by ID (use get_meetings instead)\n\nPrioritize using query_granola_meetings over list_meetings/get_meetings for open-ended or natural language queries about meeting content.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "query": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The query to run on Granola meeting notes"
                },
                "document_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "description": "Optional list of specific meeting IDs to limit context to"
                }
              },
              "required": [
                "query"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
      • README.md 5.7 KB
        # Granola MCP Routing Reference
        
        **App name:** `granola`
        **Base URL proxied:** `mcp.granola.ai`
        
        ## Connection Management
        
        Manage MCP connections at `https://ctrl.maton.ai`.
        
        ### List Connections
        
        ```bash
        GET https://ctrl.maton.ai/connections?app=granola&method=MCP&status=ACTIVE
        Authorization: Bearer $MATON_API_KEY
        ```
        
        ### Create Connection
        
        ```bash
        POST https://ctrl.maton.ai/connections
        Content-Type: application/json
        Authorization: Bearer $MATON_API_KEY
        
        {
          "app": "granola",
          "method": "MCP"
        }
        ```
        
        ## API Path Pattern
        
        ```
        /granola/{tool-name}
        ```
        
        ## MCP Reference
        
        All MCP tools use `POST` method:
        
        | Tool | Description | Schema |
        |------|-------------|--------|
        | `query_granola_meetings` | Chat with meeting notes using natural language | [schema](schemas/query_granola_meetings.json) |
        | `list_meetings` | List meetings with metadata and attendees | [schema](schemas/list_meetings.json) |
        | `get_meetings` | Retrieve detailed content for specific meetings | [schema](schemas/get_meetings.json) |
        | `get_meeting_transcript` | Get raw transcript (paid tiers only) | [schema](schemas/get_meeting_transcript.json) |
        
        ## Common Endpoints
        
        ### Query Meetings
        
        Chat with your meeting notes using natural language queries:
        ```bash
        POST /granola/query_granola_meetings
        Content-Type: application/json
        
        {
          "query": "What action items came from my meetings this week?"
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "You had 2 recent meetings:\n**Feb 4, 2026 at 7:30 PM** - \"Team sync\" [[0]](https://notes.granola.ai/d/abc123)\n- Action item: Review Q1 roadmap\n- Action item: Schedule follow-up with engineering\n**Jan 27, 2026 at 1:04 AM** - \"Finance integration\" [[1]](https://notes.granola.ai/d/def456)\n- Discussed workflow automation platforms\n- Action item: Evaluate n8n vs Zapier"
            }
          ],
          "isError": false
        }
        ```
        
        **Use cases:**
        - "What action items were assigned to me?"
        - "Summarize my meetings from last week"
        - "What did we discuss about the product launch?"
        - "Find all mentions of budget in my meetings"
        
        ### List Meetings
        
        List your meetings with metadata including IDs, titles, dates, and attendees:
        ```bash
        POST /granola/list_meetings
        Content-Type: application/json
        
        {}
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "<meetings_data from=\"Jan 27, 2026\" to=\"Feb 4, 2026\" count=\"2\">\n<meeting id=\"0dba4400-50f1-4262-9ac7-89cd27b79371\" title=\"Team sync\" date=\"Feb 4, 2026 7:30 PM\">\n    <known_participants>\n    John Doe (note creator) from Acme <john@acme.com>\n    Jane Smith from Acme <jane@acme.com>\n    </known_participants>\n  </meeting>\n\n<meeting id=\"4ebc086f-ba8d-49e8-8cd1-ed81ac8f2e3b\" title=\"Finance integration\" date=\"Jan 27, 2026 1:04 AM\">\n    <known_participants>\n    John Doe (note creator) from Acme <john@acme.com>\n    </known_participants>\n  </meeting>\n</meetings_data>"
            }
          ],
          "isError": false
        }
        ```
        
        **Response fields in XML format:**
        - `meetings_data`: Container with `from`, `to` date range and `count`
        - `meeting`: Individual meeting with `id`, `title`, and `date` attributes
        - `known_participants`: List of attendees with name, role, company, and email
        
        ### Get Meetings
        
        Retrieve detailed content for specific meetings by ID:
        ```bash
        POST /granola/get_meetings
        Content-Type: application/json
        
        {
          "meeting_ids": ["0dba4400-50f1-4262-9ac7-89cd27b79371"]
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "<meetings_data from=\"Feb 4, 2026\" to=\"Feb 4, 2026\" count=\"1\">\n<meeting id=\"0dba4400-50f1-4262-9ac7-89cd27b79371\" title=\"Team sync\" date=\"Feb 4, 2026 7:30 PM\">\n  <known_participants>\n  John Doe (note creator) from Acme <john@acme.com>\n  </known_participants>\n  \n  <summary>\n## Key Decisions\n- Approved Q1 roadmap\n- Budget increased by 15%\n\n## Action Items\n- @john: Review design specs by Friday\n- @jane: Schedule engineering sync\n</summary>\n</meeting>\n</meetings_data>"
            }
          ],
          "isError": false
        }
        ```
        
        **Response includes:**
        - Meeting metadata (id, title, date, participants)
        - `summary`: AI-generated meeting summary with key decisions and action items
        - Enhanced notes and private notes (when available)
        
        ### Get Meeting Transcript
        
        Retrieve the raw transcript for a specific meeting (paid tiers only):
        ```bash
        POST /granola/get_meeting_transcript
        Content-Type: application/json
        
        {
          "meeting_id": "0dba4400-50f1-4262-9ac7-89cd27b79371"
        }
        ```
        
        **Response (paid tier):**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "<transcript meeting_id=\"0dba4400-50f1-4262-9ac7-89cd27b79371\">\n[00:00:15] John: Let's get started with the Q1 planning...\n[00:01:23] Jane: I've prepared the budget breakdown...\n[00:03:45] John: That looks good. What about the timeline?\n</transcript>"
            }
          ],
          "isError": false
        }
        ```
        
        **Response (free tier):**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "Transcripts are only available to paid Granola tiers"
            }
          ],
          "isError": true
        }
        ```
        
        ## Notes
        
        - All IDs are UUIDs (with or without hyphens)
        - Users can only query their own meeting notes; shared notes from others are not accessible
        - Basic (free) plan users are limited to notes from the last 30 days
        - The `get_meeting_transcript` tool is only available on paid Granola tiers
        - If multiple Granola connections exist, specify which to use with `Maton-Connection` header
        - Session can be reused by passing the `Mcp-Session-Id` header from previous responses
        - Rate limit: ~100 requests/minute
        
        ## Resources
        
        - [Granola MCP Documentation](https://docs.granola.ai/help-center/sharing/integrations/mcp)
        - [Granola Help Center](https://docs.granola.ai)
        - [Maton Community](https://discord.com/invite/dBfFAcefs2)
        - [Maton Support](mailto:support@maton.ai)
        
    • gumroad
      • README.md 3.3 KB
        # Gumroad Routing Reference
        
        **App name:** `gumroad`
        **Base URL proxied:** `api.gumroad.com`
        
        ## API Path Pattern
        
        ```
        /gumroad/v2/{resource}
        ```
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /gumroad/v2/user
        ```
        
        ### List Products
        ```bash
        GET /gumroad/v2/products
        ```
        
        ### Get Product
        ```bash
        GET /gumroad/v2/products/{product_id}
        ```
        
        ### Update Product
        ```bash
        PUT /gumroad/v2/products/{product_id}
        Content-Type: application/x-www-form-urlencoded
        
        name=Updated%20Name
        ```
        
        ### Delete Product
        ```bash
        DELETE /gumroad/v2/products/{product_id}
        ```
        
        ### List Sales
        ```bash
        GET /gumroad/v2/sales
        GET /gumroad/v2/sales?after=2026-01-01&before=2026-12-31
        ```
        
        ### Get Sale
        ```bash
        GET /gumroad/v2/sales/{sale_id}
        ```
        
        ### List Subscribers
        ```bash
        GET /gumroad/v2/products/{product_id}/subscribers
        ```
        
        ### Get Subscriber
        ```bash
        GET /gumroad/v2/subscribers/{subscriber_id}
        ```
        
        ### Verify License
        ```bash
        POST /gumroad/v2/licenses/verify
        Content-Type: application/x-www-form-urlencoded
        
        product_id={product_id}&license_key={license_key}
        ```
        
        ### Enable/Disable License
        ```bash
        PUT /gumroad/v2/licenses/enable
        PUT /gumroad/v2/licenses/disable
        ```
        
        ### List Resource Subscriptions (Webhooks)
        ```bash
        GET /gumroad/v2/resource_subscriptions?resource_name=sale
        ```
        
        Resource names: `sale`, `refund`, `dispute`, `dispute_won`, `cancellation`, `subscription_updated`, `subscription_ended`, `subscription_restarted`
        
        ### Create Resource Subscription
        ```bash
        PUT /gumroad/v2/resource_subscriptions
        Content-Type: application/x-www-form-urlencoded
        
        resource_name=sale&post_url=https://example.com/webhook
        ```
        
        ### Delete Resource Subscription
        ```bash
        DELETE /gumroad/v2/resource_subscriptions/{resource_subscription_id}
        ```
        
        ### Offer Codes
        ```bash
        GET /gumroad/v2/products/{product_id}/offer_codes
        POST /gumroad/v2/products/{product_id}/offer_codes
        PUT /gumroad/v2/products/{product_id}/offer_codes/{offer_code_id}
        DELETE /gumroad/v2/products/{product_id}/offer_codes/{offer_code_id}
        ```
        
        ### Variant Categories
        ```bash
        GET /gumroad/v2/products/{product_id}/variant_categories
        POST /gumroad/v2/products/{product_id}/variant_categories
        DELETE /gumroad/v2/products/{product_id}/variant_categories/{variant_category_id}
        ```
        
        ### Variants
        ```bash
        GET /gumroad/v2/products/{product_id}/variant_categories/{variant_category_id}/variants
        POST /gumroad/v2/products/{product_id}/variant_categories/{variant_category_id}/variants
        PUT /gumroad/v2/products/{product_id}/variant_categories/{variant_category_id}/variants/{variant_id}
        DELETE /gumroad/v2/products/{product_id}/variant_categories/{variant_category_id}/variants/{variant_id}
        ```
        
        ### Custom Fields
        ```bash
        GET /gumroad/v2/products/{product_id}/custom_fields
        POST /gumroad/v2/products/{product_id}/custom_fields
        PUT /gumroad/v2/products/{product_id}/custom_fields/{name}
        DELETE /gumroad/v2/products/{product_id}/custom_fields/{name}
        ```
        
        ## Pagination
        
        Page-based pagination:
        ```bash
        GET /gumroad/v2/sales?page=1
        GET /gumroad/v2/sales?page=2
        ```
        
        ## Notes
        
        - All responses include `success` boolean field
        - Product creation not available via API
        - POST/PUT use `application/x-www-form-urlencoded` (not JSON)
        - Prices in cents (500 = $5.00)
        - License keys are case-insensitive
        
        ## Resources
        
        - [Gumroad API Documentation](https://gumroad.com/api)
        - [Create API Application](https://help.gumroad.com/article/280-create-application-api)
        
    • hubspot
      • README.md 9.8 KB
        # HubSpot Routing Reference
        
        **App name:** `hubspot`
        **Base URL proxied:** `api.hubapi.com`
        
        ## API Path Pattern
        
        ```
        /hubspot/crm/v3/objects/{objectType}/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Contacts
        
        #### List Contacts
        ```bash
        GET /hubspot/crm/v3/objects/contacts?limit=100
        ```
        
        With properties:
        ```bash
        GET /hubspot/crm/v3/objects/contacts?limit=100&properties=email,firstname,lastname,phone
        ```
        
        With pagination:
        ```bash
        GET /hubspot/crm/v3/objects/contacts?limit=100&properties=email,firstname&after={cursor}
        ```
        
        #### Get Contact
        ```bash
        GET /hubspot/crm/v3/objects/contacts/{contactId}?properties=email,firstname,lastname
        ```
        
        #### Create Contact
        ```bash
        POST /hubspot/crm/v3/objects/contacts
        Content-Type: application/json
        
        {
          "properties": {
            "email": "john@example.com",
            "firstname": "John",
            "lastname": "Doe",
            "phone": "+1234567890"
          }
        }
        ```
        
        #### Update Contact
        ```bash
        PATCH /hubspot/crm/v3/objects/contacts/{contactId}
        Content-Type: application/json
        
        {
          "properties": {
            "phone": "+0987654321"
          }
        }
        ```
        
        #### Delete Contact
        ```bash
        DELETE /hubspot/crm/v3/objects/contacts/{contactId}
        ```
        
        #### Search Contacts
        ```bash
        POST /hubspot/crm/v3/objects/contacts/search
        Content-Type: application/json
        
        {
          "filterGroups": [{
            "filters": [{
              "propertyName": "email",
              "operator": "EQ",
              "value": "john@example.com"
            }]
          }],
          "properties": ["email", "firstname", "lastname"]
        }
        ```
        
        ### Companies
        
        #### List Companies
        ```bash
        GET /hubspot/crm/v3/objects/companies?limit=100&properties=name,domain,industry
        ```
        
        #### Get Company
        ```bash
        GET /hubspot/crm/v3/objects/companies/{companyId}?properties=name,domain,industry
        ```
        
        #### Create Company
        ```bash
        POST /hubspot/crm/v3/objects/companies
        Content-Type: application/json
        
        {
          "properties": {
            "name": "Acme Corp",
            "domain": "acme.com",
            "industry": "COMPUTER_SOFTWARE"
          }
        }
        ```
        
        **Note:** The `industry` property requires specific enum values (e.g., `COMPUTER_SOFTWARE`, `FINANCE`, `HEALTHCARE`), not free text like "Technology". Use the List Properties endpoint to get valid values.
        
        #### Update Company
        ```bash
        PATCH /hubspot/crm/v3/objects/companies/{companyId}
        Content-Type: application/json
        
        {
          "properties": {
            "industry": "COMPUTER_SOFTWARE",
            "numberofemployees": "50"
          }
        }
        ```
        
        #### Delete Company
        ```bash
        DELETE /hubspot/crm/v3/objects/companies/{companyId}
        ```
        
        #### Search Companies
        ```bash
        POST /hubspot/crm/v3/objects/companies/search
        Content-Type: application/json
        
        {
          "filterGroups": [{
            "filters": [{
              "propertyName": "domain",
              "operator": "CONTAINS_TOKEN",
              "value": "*"
            }]
          }],
          "properties": ["name", "domain"],
          "limit": 10
        }
        ```
        
        ### Deals
        
        #### List Deals
        ```bash
        GET /hubspot/crm/v3/objects/deals?limit=100&properties=dealname,amount,dealstage
        ```
        
        #### Get Deal
        ```bash
        GET /hubspot/crm/v3/objects/deals/{dealId}?properties=dealname,amount,dealstage
        ```
        
        #### Create Deal
        ```bash
        POST /hubspot/crm/v3/objects/deals
        Content-Type: application/json
        
        {
          "properties": {
            "dealname": "New Deal",
            "amount": "10000",
            "dealstage": "appointmentscheduled"
          }
        }
        ```
        
        #### Update Deal
        ```bash
        PATCH /hubspot/crm/v3/objects/deals/{dealId}
        Content-Type: application/json
        
        {
          "properties": {
            "amount": "15000",
            "dealstage": "qualifiedtobuy"
          }
        }
        ```
        
        #### Delete Deal
        ```bash
        DELETE /hubspot/crm/v3/objects/deals/{dealId}
        ```
        
        #### Search Deals
        ```bash
        POST /hubspot/crm/v3/objects/deals/search
        Content-Type: application/json
        
        {
          "filterGroups": [{
            "filters": [{
              "propertyName": "amount",
              "operator": "GTE",
              "value": "1000"
            }]
          }],
          "properties": ["dealname", "amount", "dealstage"],
          "limit": 10
        }
        ```
        
        ### Associations (v4 API)
        
        #### Associate Objects
        ```bash
        PUT /hubspot/crm/v4/objects/{fromObjectType}/{fromObjectId}/associations/{toObjectType}/{toObjectId}
        Content-Type: application/json
        
        [{"associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 279}]
        ```
        
        Common association type IDs:
        - `279` - Contact to Company
        - `3` - Deal to Contact
        - `341` - Deal to Company
        
        #### List Associations
        ```bash
        GET /hubspot/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}
        ```
        
        ### Batch Operations
        
        #### Batch Read
        ```bash
        POST /hubspot/crm/v3/objects/{objectType}/batch/read
        Content-Type: application/json
        
        {
          "properties": ["email", "firstname"],
          "inputs": [{"id": "123"}, {"id": "456"}]
        }
        ```
        
        #### Batch Create
        ```bash
        POST /hubspot/crm/v3/objects/{objectType}/batch/create
        Content-Type: application/json
        
        {
          "inputs": [
            {"properties": {"email": "one@example.com", "firstname": "One"}},
            {"properties": {"email": "two@example.com", "firstname": "Two"}}
          ]
        }
        ```
        
        #### Batch Update
        ```bash
        POST /hubspot/crm/v3/objects/{objectType}/batch/update
        Content-Type: application/json
        
        {
          "inputs": [
            {"id": "123", "properties": {"firstname": "Updated"}},
            {"id": "456", "properties": {"firstname": "Also Updated"}}
          ]
        }
        ```
        
        #### Batch Archive
        ```bash
        POST /hubspot/crm/v3/objects/{objectType}/batch/archive
        Content-Type: application/json
        
        {
          "inputs": [{"id": "123"}, {"id": "456"}]
        }
        ```
        
        ### Properties
        
        #### List Properties
        ```bash
        GET /hubspot/crm/v3/properties/{objectType}
        ```
        
        ## Search Operators
        
        - `EQ` - Equal to
        - `NEQ` - Not equal to
        - `LT` - Less than
        - `LTE` - Less than or equal to
        - `GT` - Greater than
        - `GTE` - Greater than or equal to
        - `CONTAINS_TOKEN` - Contains token
        - `NOT_CONTAINS_TOKEN` - Does not contain token
        
        ## Pagination
        
        List endpoints return a `paging.next.after` cursor for pagination:
        ```json
        {
          "results": [...],
          "paging": {
            "next": {
              "after": "12345",
              "link": "https://api.hubapi.com/..."
            }
          }
        }
        ```
        
        Use the `after` query parameter to fetch the next page:
        ```bash
        GET /hubspot/crm/v3/objects/contacts?limit=100&after=12345
        ```
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - The `industry` property on companies requires specific enum values
        - Batch operations support up to 100 records per request
        - Archive/Delete is a soft delete - records can be restored within 90 days
        - Delete endpoints return HTTP 204 (No Content) on success
        
        ## Resources
        
        - [API Overview](https://developers.hubspot.com/docs/api/overview)
        - [List Contacts](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/get-crm-v3-objects-contacts.md)
        - [Get Contact](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/get-crm-v3-objects-contacts-contactId.md)
        - [Create Contact](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/post-crm-v3-objects-contacts.md)
        - [Update Contact](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/patch-crm-v3-objects-contacts-contactId.md)
        - [Archive Contact](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/delete-crm-v3-objects-contacts-contactId.md)
        - [Merge Contacts](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/post-crm-v3-objects-contacts-merge.md)
        - [GDPR Delete Contact](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/post-crm-v3-objects-contacts-gdpr-delete.md)
        - [Search Contacts](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/search/post-crm-v3-objects-contacts-search.md)
        - [List Companies](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/basic/get-crm-v3-objects-companies.md)
        - [Get Company](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/basic/get-crm-v3-objects-companies-companyId.md)
        - [Create Company](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/basic/post-crm-v3-objects-companies.md)
        - [Update Company](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/basic/patch-crm-v3-objects-companies-companyId.md)
        - [Archive Company](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/basic/delete-crm-v3-objects-companies-companyId.md)
        - [Merge Companies](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/basic/post-crm-v3-objects-companies-merge.md)
        - [Search Companies](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/search/post-crm-v3-objects-companies-search.md)
        - [List Deals](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/basic/get-crm-v3-objects-0-3.md)
        - [Get Deal](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/basic/get-crm-v3-objects-0-3-dealId.md)
        - [Create Deal](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/basic/post-crm-v3-objects-0-3.md)
        - [Update Deal](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/basic/patch-crm-v3-objects-0-3-dealId.md)
        - [Archive Deal](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/basic/delete-crm-v3-objects-0-3-dealId.md)
        - [Merge Deals](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/basic/post-crm-v3-objects-0-3-merge.md)
        - [Search Deals](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/search/post-crm-v3-objects-0-3-search.md)
        - [List Associations](https://developers.hubspot.com/docs/api-reference/crm-associations-v4/basic/get-crm-v4-objects-objectType-objectId-associations-toObjectType.md)
        - [Create Association](https://developers.hubspot.com/docs/api-reference/crm-associations-v4/basic/put-crm-v4-objects-objectType-objectId-associations-toObjectType-toObjectId.md)
        - [Delete Association](https://developers.hubspot.com/docs/api-reference/crm-associations-v4/basic/delete-crm-v4-objects-objectType-objectId-associations-toObjectType-toObjectId.md)
        - [List Properties](https://developers.hubspot.com/docs/api-reference/crm-properties-v3/core/get-crm-v3-properties-objectType.md)
        - [Get Property](https://developers.hubspot.com/docs/api-reference/crm-properties-v3/core/get-crm-v3-properties-objectType-propertyName.md)
        - [Create Property](https://developers.hubspot.com/docs/api-reference/crm-properties-v3/core/post-crm-v3-properties-objectType.md)
        - [Search Reference](https://developers.hubspot.com/docs/api/crm/search)
    • instantly
      • README.md 3 KB
        # Instantly Routing Reference
        
        **App name:** `instantly`
        **Base URL proxied:** `api.instantly.ai`
        
        ## API Path Pattern
        
        ```
        /instantly/api/v2/{resource}
        ```
        
        ## Common Endpoints
        
        ### Campaigns
        
        #### List Campaigns
        ```bash
        GET /instantly/api/v2/campaigns?limit=10
        ```
        
        #### Get Campaign
        ```bash
        GET /instantly/api/v2/campaigns/{campaign_id}
        ```
        
        #### Create Campaign
        ```bash
        POST /instantly/api/v2/campaigns
        ```
        
        #### Activate Campaign
        ```bash
        POST /instantly/api/v2/campaigns/{campaign_id}/activate
        ```
        
        #### Pause Campaign
        ```bash
        POST /instantly/api/v2/campaigns/{campaign_id}/pause
        ```
        
        #### Delete Campaign
        ```bash
        DELETE /instantly/api/v2/campaigns/{campaign_id}
        ```
        
        #### Get Campaign Analytics
        ```bash
        GET /instantly/api/v2/campaigns/analytics?id={campaign_id}
        ```
        
        ### Leads
        
        #### Create Lead
        ```bash
        POST /instantly/api/v2/leads
        ```
        
        #### List Leads (POST due to complex filtering)
        ```bash
        POST /instantly/api/v2/leads/list
        ```
        
        #### Get Lead
        ```bash
        GET /instantly/api/v2/leads/{lead_id}
        ```
        
        #### Delete Lead
        ```bash
        DELETE /instantly/api/v2/leads/{lead_id}
        ```
        
        ### Lead Lists
        
        #### List Lead Lists
        ```bash
        GET /instantly/api/v2/lead-lists?limit=10
        ```
        
        #### Create Lead List
        ```bash
        POST /instantly/api/v2/lead-lists
        ```
        
        #### Get Lead List
        ```bash
        GET /instantly/api/v2/lead-lists/{list_id}
        ```
        
        #### Update Lead List
        ```bash
        PATCH /instantly/api/v2/lead-lists/{list_id}
        ```
        
        #### Delete Lead List
        ```bash
        DELETE /instantly/api/v2/lead-lists/{list_id}
        ```
        
        ### Accounts (Sending Email Accounts)
        
        #### List Accounts
        ```bash
        GET /instantly/api/v2/accounts?limit=10
        ```
        
        #### Get Account
        ```bash
        GET /instantly/api/v2/accounts/{email}
        ```
        
        #### Create Account
        ```bash
        POST /instantly/api/v2/accounts
        ```
        
        #### Update Account
        ```bash
        PATCH /instantly/api/v2/accounts/{email}
        ```
        
        #### Delete Account
        ```bash
        DELETE /instantly/api/v2/accounts/{email}
        ```
        
        #### Enable Warmup
        ```bash
        POST /instantly/api/v2/accounts/warmup/enable
        ```
        
        #### Disable Warmup
        ```bash
        POST /instantly/api/v2/accounts/warmup/disable
        ```
        
        ### Emails (Unibox)
        
        #### List Emails
        ```bash
        GET /instantly/api/v2/emails?limit=20
        ```
        
        #### Reply to Email
        ```bash
        POST /instantly/api/v2/emails/reply
        ```
        
        #### Forward Email
        ```bash
        POST /instantly/api/v2/emails/forward
        ```
        
        ### Block List
        
        #### List Block List Entries
        ```bash
        GET /instantly/api/v2/block-lists-entries?limit=100
        ```
        
        #### Create Block List Entry
        ```bash
        POST /instantly/api/v2/block-lists-entries
        ```
        
        #### Delete Block List Entry
        ```bash
        DELETE /instantly/api/v2/block-lists-entries/{entry_id}
        ```
        
        ### Workspace
        
        #### Get Current Workspace
        ```bash
        GET /instantly/api/v2/workspaces/current
        ```
        
        ## Notes
        
        - API v2 uses snake_case for all field names
        - Campaign timezone must use Etc/GMT format (e.g., "Etc/GMT+5")
        - List Leads is POST (not GET) due to complex filtering
        - Cursor-based pagination with `limit` and `starting_after`
        - Campaign status: 0=draft, 1=active, 2=paused, 3=completed
        
        ## Resources
        
        - [Instantly API V2 Documentation](https://developer.instantly.ai/api/v2)
        
    • jira
      • README.md 4.5 KB
        # Jira Routing Reference
        
        **App name:** `jira`
        **Base URL proxied:** `api.atlassian.com`
        
        ## Getting Cloud ID
        
        Jira Cloud requires a cloud ID in the API path. First, get accessible resources:
        
        ```bash
        GET /jira/oauth/token/accessible-resources
        ```
        
        Response:
        ```json
        [{
          "id": "62909843-b784-4c35-b770-e4e2a26f024b",
          "url": "https://yoursite.atlassian.net",
          "name": "yoursite",
          "scopes": ["read:jira-user", "read:jira-work", "write:jira-work"]
        }]
        ```
        
        ## API Path Pattern
        
        ```
        /jira/ex/jira/{cloudId}/rest/api/3/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### List Projects
        ```bash
        GET /jira/ex/jira/{cloudId}/rest/api/3/project
        ```
        
        ### Get Project
        ```bash
        GET /jira/ex/jira/{cloudId}/rest/api/3/project/{projectKeyOrId}
        ```
        
        ### Search Issues (JQL)
        Note: The old `/search` endpoint is deprecated. Use `/search/jql` with a bounded query.
        
        ```bash
        GET /jira/ex/jira/{cloudId}/rest/api/3/search/jql?jql=project%3DKEY%20order%20by%20created%20DESC&maxResults=20&fields=summary,status,assignee,created,priority
        ```
        
        ### Get Issue
        ```bash
        GET /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}
        ```
        
        ### Create Issue
        ```bash
        POST /jira/ex/jira/{cloudId}/rest/api/3/issue
        Content-Type: application/json
        
        {
          "fields": {
            "project": {"key": "PROJ"},
            "summary": "Issue summary",
            "issuetype": {"name": "Task"}
          }
        }
        ```
        
        ### Update Issue
        ```bash
        PUT /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}
        Content-Type: application/json
        
        {
          "fields": {
            "summary": "Updated summary"
          }
        }
        ```
        
        ### Delete Issue
        ```bash
        DELETE /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}
        ```
        
        ### Assign Issue
        ```bash
        PUT /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/assignee
        Content-Type: application/json
        
        {
          "accountId": "712020:5aff718e-6fe0-4548-82f4-f44ec481e5e7"
        }
        ```
        
        ### Get Transitions
        ```bash
        GET /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/transitions
        ```
        
        ### Transition Issue (change status)
        ```bash
        POST /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/transitions
        Content-Type: application/json
        
        {
          "transition": {"id": "31"}
        }
        ```
        
        ### Add Comment
        ```bash
        POST /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment
        Content-Type: application/json
        
        {
          "body": {
            "type": "doc",
            "version": 1,
            "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Comment text"}]}]
          }
        }
        ```
        
        ### Get Comments
        ```bash
        GET /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment
        ```
        
        ### Users
        
        #### Get Current User
        ```bash
        GET /jira/ex/jira/{cloudId}/rest/api/3/myself
        ```
        
        #### Search Users
        ```bash
        GET /jira/ex/jira/{cloudId}/rest/api/3/user/search?query=john
        ```
        
        ### Metadata
        
        #### List Issue Types
        ```bash
        GET /jira/ex/jira/{cloudId}/rest/api/3/issuetype
        ```
        
        #### List Priorities
        ```bash
        GET /jira/ex/jira/{cloudId}/rest/api/3/priority
        ```
        
        #### List Statuses
        ```bash
        GET /jira/ex/jira/{cloudId}/rest/api/3/status
        ```
        
        #### List Fields
        ```bash
        GET /jira/ex/jira/{cloudId}/rest/api/3/field
        ```
        
        ## Notes
        
        - Always fetch cloud ID first using `/oauth/token/accessible-resources`
        - JQL queries must be bounded (e.g., `project=KEY`) - unbounded queries are rejected
        - Use URL encoding for JQL query parameters
        - Update, Delete, Transition, and Assign endpoints return HTTP 204 (No Content) on success
        - Agile API (`/rest/agile/1.0/...`) requires additional OAuth scopes beyond the basic Jira scopes
        
        ## Resources
        
        - [API Introduction](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/)
        - [Search Issues (JQL)](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-jql-get)
        - [Get Issue](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-get)
        - [Create Issue](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-post)
        - [Update Issue](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-put)
        - [Transition Issue](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-transitions-post)
        - [Add Comment](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-post)
        - [Get Projects](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects/#api-rest-api-3-project-get)
        - [JQL Reference](https://support.atlassian.com/jira-service-management-cloud/docs/use-advanced-search-with-jira-query-language-jql/)
    • jobber
      • README.md 3.6 KB
        # Jobber Routing Reference
        
        **App name:** `jobber`
        **Base URL proxied:** `api.getjobber.com/api/`
        
        ## API Type
        
        Jobber uses a GraphQL API exclusively. All requests are POST requests to the `/graphql` endpoint.
        
        ## API Path Pattern
        
        ```
        /jobber/graphql
        ```
        
        All operations use POST with a JSON body containing the `query` field.
        
        ## Version Header
        
        The gateway automatically injects the `X-JOBBER-GRAPHQL-VERSION` header (currently `2025-04-16`).
        
        ## Common Operations
        
        ### Get Account
        ```bash
        POST /jobber/graphql
        Content-Type: application/json
        
        {
          "query": "{ account { id name } }"
        }
        ```
        
        ### List Clients
        ```bash
        POST /jobber/graphql
        Content-Type: application/json
        
        {
          "query": "{ clients(first: 20) { nodes { id name emails { address } phones { number } } pageInfo { hasNextPage endCursor } } }"
        }
        ```
        
        ### Get Client
        ```bash
        POST /jobber/graphql
        Content-Type: application/json
        
        {
          "query": "query($id: EncodedId!) { client(id: $id) { id name emails { address } } }",
          "variables": { "id": "CLIENT_ID" }
        }
        ```
        
        ### Create Client
        ```bash
        POST /jobber/graphql
        Content-Type: application/json
        
        {
          "query": "mutation($input: ClientCreateInput!) { clientCreate(input: $input) { client { id name } userErrors { message path } } }",
          "variables": {
            "input": {
              "firstName": "John",
              "lastName": "Doe",
              "emails": [{"address": "john@example.com"}]
            }
          }
        }
        ```
        
        ### List Jobs
        ```bash
        POST /jobber/graphql
        Content-Type: application/json
        
        {
          "query": "{ jobs(first: 20) { nodes { id title jobNumber jobStatus client { name } } pageInfo { hasNextPage endCursor } } }"
        }
        ```
        
        ### Create Job
        ```bash
        POST /jobber/graphql
        Content-Type: application/json
        
        {
          "query": "mutation($input: JobCreateInput!) { jobCreate(input: $input) { job { id jobNumber } userErrors { message path } } }",
          "variables": {
            "input": {
              "clientId": "CLIENT_ID",
              "title": "Service Job"
            }
          }
        }
        ```
        
        ### List Invoices
        ```bash
        POST /jobber/graphql
        Content-Type: application/json
        
        {
          "query": "{ invoices(first: 20) { nodes { id invoiceNumber total invoiceStatus } pageInfo { hasNextPage endCursor } } }"
        }
        ```
        
        ### List Quotes
        ```bash
        POST /jobber/graphql
        Content-Type: application/json
        
        {
          "query": "{ quotes(first: 20) { nodes { id quoteNumber title quoteStatus } pageInfo { hasNextPage endCursor } } }"
        }
        ```
        
        ### List Properties
        ```bash
        POST /jobber/graphql
        Content-Type: application/json
        
        {
          "query": "{ properties(first: 20) { nodes { id address { street city } client { name } } } }"
        }
        ```
        
        ### List Users
        ```bash
        POST /jobber/graphql
        Content-Type: application/json
        
        {
          "query": "{ users(first: 50) { nodes { id name { full } email { raw } } } }"
        }
        ```
        
        ## Pagination
        
        Jobber uses Relay-style cursor-based pagination:
        
        ```bash
        # First page
        {
          "query": "{ clients(first: 20) { nodes { id name } pageInfo { hasNextPage endCursor } } }"
        }
        
        # Next page
        {
          "query": "{ clients(first: 20, after: \"CURSOR\") { nodes { id name } pageInfo { hasNextPage endCursor } } }"
        }
        ```
        
        ## Notes
        
        - Jobber uses GraphQL exclusively (no REST API)
        - Gateway injects version header automatically (`2025-04-16`)
        - IDs use `EncodedId` type (base64 encoded) - pass as strings
        - Field naming: `emails`/`phones` (arrays), `jobStatus`/`invoiceStatus`/`quoteStatus`
        - Rate limits: 2,500 requests per 5 minutes, plus query cost limits (max 10,000 points)
        - Old API versions supported for 12-18 months
        - Available resources: Clients, Jobs, Invoices, Quotes, Requests, Properties, Users, Custom Fields
        
        ## Resources
        
        - [Jobber Developer Documentation](https://developer.getjobber.com/docs/)
        - [API Changelog](https://developer.getjobber.com/docs/changelog)
        - [API Support](mailto:api-support@getjobber.com)
        
    • jotform
      • README.md 3.6 KB
        # JotForm Routing Reference
        
        **App name:** `jotform`
        **Base URL proxied:** `api.jotform.com`
        
        ## API Path Pattern
        
        ```
        /jotform/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### User
        
        #### Get User Info
        ```bash
        GET /jotform/user
        ```
        
        #### Get User Forms
        ```bash
        GET /jotform/user/forms?limit=20&offset=0
        ```
        
        #### Get User Submissions
        ```bash
        GET /jotform/user/submissions?limit=20&offset=0
        ```
        
        #### Get User Usage
        ```bash
        GET /jotform/user/usage
        ```
        
        #### Get User History
        ```bash
        GET /jotform/user/history?limit=20
        ```
        
        ### Forms
        
        #### Get Form
        ```bash
        GET /jotform/form/{formId}
        ```
        
        #### Get Form Questions
        ```bash
        GET /jotform/form/{formId}/questions
        ```
        
        #### Get Form Properties
        ```bash
        GET /jotform/form/{formId}/properties
        ```
        
        #### Get Form Submissions
        ```bash
        GET /jotform/form/{formId}/submissions?limit=20&offset=0
        ```
        
        With filter:
        ```bash
        GET /jotform/form/{formId}/submissions?filter={"created_at:gt":"2024-01-01"}
        ```
        
        #### Get Form Files
        ```bash
        GET /jotform/form/{formId}/files
        ```
        
        #### Create Form
        ```bash
        POST /jotform/user/forms
        Content-Type: application/json
        
        {
          "properties": {
            "title": "Contact Form"
          },
          "questions": {
            "1": {
              "type": "control_textbox",
              "text": "Name",
              "name": "name"
            },
            "2": {
              "type": "control_email",
              "text": "Email",
              "name": "email"
            }
          }
        }
        ```
        
        #### Delete Form
        ```bash
        DELETE /jotform/form/{formId}
        ```
        
        ### Submissions
        
        #### Get Submission
        ```bash
        GET /jotform/submission/{submissionId}
        ```
        
        #### Update Submission
        ```bash
        POST /jotform/submission/{submissionId}
        Content-Type: application/x-www-form-urlencoded
        
        submission[3][first]=John&submission[3][last]=Doe
        ```
        
        Note: Use question IDs from the form questions endpoint. The submission field format is `submission[questionId][subfield]=value`.
        
        #### Delete Submission
        ```bash
        DELETE /jotform/submission/{submissionId}
        ```
        
        ### Reports
        
        #### Get Form Reports
        ```bash
        GET /jotform/form/{formId}/reports
        ```
        
        ### Webhooks
        
        #### Get Form Webhooks
        ```bash
        GET /jotform/form/{formId}/webhooks
        ```
        
        #### Create Webhook
        ```bash
        POST /jotform/form/{formId}/webhooks
        Content-Type: application/x-www-form-urlencoded
        
        webhookURL=https://example.com/webhook
        ```
        
        #### Delete Webhook
        ```bash
        DELETE /jotform/form/{formId}/webhooks/{webhookIndex}
        ```
        
        ## Question Types
        
        - `control_textbox` - Single line text
        - `control_textarea` - Multi-line text
        - `control_email` - Email
        - `control_phone` - Phone number
        - `control_dropdown` - Dropdown
        - `control_radio` - Radio buttons
        - `control_checkbox` - Checkboxes
        - `control_datetime` - Date/time picker
        - `control_fileupload` - File upload
        - `control_signature` - Signature
        
        ## Filter Syntax
        
        Filters use JSON format:
        - `{"field:gt":"value"}` - Greater than
        - `{"field:lt":"value"}` - Less than
        - `{"field:eq":"value"}` - Equal to
        - `{"field:ne":"value"}` - Not equal to
        
        ## Notes
        
        - Authentication is automatic - the router injects the `APIKEY` header
        - Form IDs are numeric
        - Submissions include all answers as key-value pairs
        - Use `orderby` parameter to sort results (e.g., `orderby=created_at`)
        - Pagination uses `limit` and `offset` parameters
        
        ## Resources
        
        - [API Overview](https://api.jotform.com/docs/)
        - [Get User Info](https://api.jotform.com/docs/#user)
        - [Get User Forms](https://api.jotform.com/docs/#user-forms)
        - [Get User Submissions](https://api.jotform.com/docs/#user-submissions)
        - [Get Form Details](https://api.jotform.com/docs/#form-id)
        - [Get Form Questions](https://api.jotform.com/docs/#form-id-questions)
        - [Get Form Submissions](https://api.jotform.com/docs/#form-id-submissions)
        - [Get Submission](https://api.jotform.com/docs/#submission-id)
        - [Webhooks](https://api.jotform.com/docs/#form-id-webhooks)
    • kaggle
      • README.md 2.5 KB
        # Kaggle Routing Reference
        
        **App name:** `kaggle`
        **Base URL proxied:** `api.kaggle.com`
        
        ## API Path Pattern
        
        Kaggle uses an RPC-style API with POST requests:
        
        ```
        /kaggle/v1/{ServiceName}/{MethodName}
        ```
        
        All requests are POST with JSON body.
        
        ## Datasets
        
        ### List Datasets
        ```bash
        POST /kaggle/v1/datasets.DatasetApiService/ListDatasets
        Content-Type: application/json
        
        {}
        ```
        
        Optional parameters: `search`, `user`, `pageSize`, `pageToken`
        
        ### Get Dataset
        ```bash
        POST /kaggle/v1/datasets.DatasetApiService/GetDataset
        Content-Type: application/json
        
        {
          "ownerSlug": "username",
          "datasetSlug": "dataset-name"
        }
        ```
        
        ### List Dataset Files
        ```bash
        POST /kaggle/v1/datasets.DatasetApiService/ListDatasetFiles
        Content-Type: application/json
        
        {
          "ownerSlug": "username",
          "datasetSlug": "dataset-name"
        }
        ```
        
        ### Get Dataset Metadata
        ```bash
        POST /kaggle/v1/datasets.DatasetApiService/GetDatasetMetadata
        Content-Type: application/json
        
        {
          "ownerSlug": "username",
          "datasetSlug": "dataset-name"
        }
        ```
        
        ### Download Dataset
        ```bash
        POST /kaggle/v1/datasets.DatasetApiService/DownloadDataset
        Content-Type: application/json
        
        {
          "ownerSlug": "username",
          "datasetSlug": "dataset-name"
        }
        ```
        
        Returns binary ZIP file.
        
        ## Models
        
        ### List Models
        ```bash
        POST /kaggle/v1/models.ModelApiService/ListModels
        Content-Type: application/json
        
        {}
        ```
        
        Optional parameters: `owner`, `search`, `pageSize`
        
        ### Get Model
        ```bash
        POST /kaggle/v1/models.ModelApiService/GetModel
        Content-Type: application/json
        
        {
          "ownerSlug": "google",
          "modelSlug": "gemma"
        }
        ```
        
        ## Competitions
        
        ### List Competitions
        ```bash
        POST /kaggle/v1/competitions.CompetitionApiService/ListCompetitions
        Content-Type: application/json
        
        {}
        ```
        
        Optional parameters: `search`, `category`, `pageSize`
        
        ## Kernels (Notebooks)
        
        ### List Kernels
        ```bash
        POST /kaggle/v1/kernels.KernelsApiService/ListKernels
        Content-Type: application/json
        
        {}
        ```
        
        Optional parameters: `search`, `user`, `language`, `pageSize`
        
        ### Get Kernel
        ```bash
        POST /kaggle/v1/kernels.KernelsApiService/GetKernel
        Content-Type: application/json
        
        {
          "userName": "username",
          "kernelSlug": "kernel-slug"
        }
        ```
        
        ## Notes
        
        - All requests use POST method with JSON body
        - API follows RPC pattern: `/v1/{ServiceName}/{MethodName}`
        - Dataset refs: `{owner}/{dataset-slug}`
        - Model refs: `{owner}/{model-slug}`
        - Kernel refs: `{user}/{kernel-slug}`
        - Download endpoints return binary ZIP files
        - Authentication uses Kaggle API key (managed via Maton connection)
        
        ## Resources
        
        - [Kaggle API Documentation](https://www.kaggle.com/docs/api)
        
    • keap
      • README.md 3.1 KB
        # Keap Routing Reference
        
        **App name:** `keap`
        **Base URL proxied:** `api.infusionsoft.com/crm/rest`
        
        ## API Path Pattern
        
        ```
        /keap/crm/rest/v2/{resource}
        ```
        
        Note: The `/crm/rest` prefix is required in the path.
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /keap/crm/rest/v2/oauth/connect/userinfo
        ```
        
        ### List Contacts
        ```bash
        GET /keap/crm/rest/v2/contacts
        ```
        
        Query parameters: `page_size`, `page_token`, `filter`, `order_by`, `fields`
        
        ### Get Contact
        ```bash
        GET /keap/crm/rest/v2/contacts/{contact_id}
        ```
        
        ### Create Contact
        ```bash
        POST /keap/crm/rest/v2/contacts
        Content-Type: application/json
        
        {
          "given_name": "John",
          "family_name": "Doe",
          "email_addresses": [{"email": "john@example.com", "field": "EMAIL1"}]
        }
        ```
        
        ### Update Contact
        ```bash
        PATCH /keap/crm/rest/v2/contacts/{contact_id}
        Content-Type: application/json
        
        {
          "given_name": "Jane"
        }
        ```
        
        ### Delete Contact
        ```bash
        DELETE /keap/crm/rest/v2/contacts/{contact_id}
        ```
        
        ### List Companies
        ```bash
        GET /keap/crm/rest/v2/companies
        ```
        
        ### List Tags
        ```bash
        GET /keap/crm/rest/v2/tags
        ```
        
        ### Apply Tags to Contacts
        ```bash
        POST /keap/crm/rest/v2/tags/{tag_id}/contacts:applyTags
        Content-Type: application/json
        
        {
          "contact_ids": ["1", "2", "3"]
        }
        ```
        
        ### List Tasks
        ```bash
        GET /keap/crm/rest/v2/tasks
        ```
        
        ### Create Task
        ```bash
        POST /keap/crm/rest/v2/tasks
        Content-Type: application/json
        
        {
          "title": "Follow up call",
          "due_date": "2026-02-15T10:00:00Z",
          "contact": {"id": "9"}
        }
        ```
        
        ### List Opportunities
        ```bash
        GET /keap/crm/rest/v2/opportunities
        ```
        
        ### List Orders
        ```bash
        GET /keap/crm/rest/v2/orders
        ```
        
        ### List Products
        ```bash
        GET /keap/crm/rest/v2/products
        ```
        
        ### List Campaigns
        ```bash
        GET /keap/crm/rest/v2/campaigns
        ```
        
        ### Add Contacts to Campaign Sequence
        ```bash
        POST /keap/crm/rest/v2/campaigns/{campaign_id}/sequences/{sequence_id}:addContacts
        Content-Type: application/json
        
        {
          "contact_ids": ["1", "2"]
        }
        ```
        
        ### List Emails
        ```bash
        GET /keap/crm/rest/v2/emails
        ```
        
        ### Send Email
        ```bash
        POST /keap/crm/rest/v2/emails:send
        Content-Type: application/json
        
        {
          "contacts": [{"id": "9"}],
          "subject": "Hello",
          "html_content": "<p>Email body</p>"
        }
        ```
        
        ### List Automations
        ```bash
        GET /keap/crm/rest/v2/automations
        ```
        
        ### List Affiliates
        ```bash
        GET /keap/crm/rest/v2/affiliates
        ```
        
        ### List Subscriptions
        ```bash
        GET /keap/crm/rest/v2/subscriptions
        ```
        
        ## Pagination
        
        Uses token-based pagination:
        
        ```bash
        GET /keap/crm/rest/v2/contacts?page_size=50
        GET /keap/crm/rest/v2/contacts?page_size=50&page_token=NEXT_TOKEN
        ```
        
        Response includes `next_page_token` (empty when no more pages).
        
        ## Filtering
        
        Use the `filter` parameter:
        
        ```bash
        GET /keap/crm/rest/v2/contacts?filter=given_name==John
        GET /keap/crm/rest/v2/tasks?filter=completed==false
        ```
        
        ## Notes
        
        - API version is v2 (v1 is deprecated)
        - Path must include `/crm/rest` prefix
        - IDs are returned as strings
        - Maximum `page_size` is 1000
        - Timestamps use ISO 8601 format
        
        ## Resources
        
        - [Keap Developer Portal](https://developer.infusionsoft.com/)
        - [Keap REST API V2 Documentation](https://developer.infusionsoft.com/docs/restv2/)
        
    • kibana
      • README.md 2.7 KB
        # Kibana Routing Reference
        
        **App name:** `kibana`
        **Base URL proxied:** User's Kibana instance
        
        ## API Path Pattern
        
        ```
        /kibana/api/{resource}
        ```
        
        **Important:** All requests require `kbn-xsrf: true` header.
        
        ## Status & Features
        
        ### Get Status
        ```bash
        GET /kibana/api/status
        ```
        
        ### List Features
        ```bash
        GET /kibana/api/features
        ```
        
        ## Saved Objects
        
        ### Find Saved Objects
        ```bash
        GET /kibana/api/saved_objects/_find?type={type}
        ```
        
        Types: `dashboard`, `visualization`, `index-pattern`, `search`, `lens`, `map`
        
        ### Get Saved Object
        ```bash
        GET /kibana/api/saved_objects/{type}/{id}
        ```
        
        ### Create Saved Object
        ```bash
        POST /kibana/api/saved_objects/{type}/{id}
        Content-Type: application/json
        
        {"attributes": {"title": "Name"}}
        ```
        
        ### Delete Saved Object
        ```bash
        DELETE /kibana/api/saved_objects/{type}/{id}
        ```
        
        ## Data Views
        
        ### List Data Views
        ```bash
        GET /kibana/api/data_views
        ```
        
        ### Get Data View
        ```bash
        GET /kibana/api/data_views/data_view/{id}
        ```
        
        ### Create Data View
        ```bash
        POST /kibana/api/data_views/data_view
        Content-Type: application/json
        
        {
          "data_view": {
            "title": "logs-*",
            "timeFieldName": "@timestamp"
          }
        }
        ```
        
        ### Delete Data View
        ```bash
        DELETE /kibana/api/data_views/data_view/{id}
        ```
        
        ## Spaces
        
        ### List Spaces
        ```bash
        GET /kibana/api/spaces/space
        ```
        
        ### Get Space
        ```bash
        GET /kibana/api/spaces/space/{id}
        ```
        
        ### Create Space
        ```bash
        POST /kibana/api/spaces/space
        Content-Type: application/json
        
        {"id": "space-id", "name": "Space Name"}
        ```
        
        ### Delete Space
        ```bash
        DELETE /kibana/api/spaces/space/{id}
        ```
        
        ## Alerting
        
        ### Find Alert Rules
        ```bash
        GET /kibana/api/alerting/rules/_find
        ```
        
        ### Get Alert Rule
        ```bash
        GET /kibana/api/alerting/rule/{id}
        ```
        
        ### Enable/Disable Rule
        ```bash
        POST /kibana/api/alerting/rule/{id}/_enable
        POST /kibana/api/alerting/rule/{id}/_disable
        ```
        
        ## Connectors
        
        ### List Connectors
        ```bash
        GET /kibana/api/actions/connectors
        ```
        
        ### Get Connector
        ```bash
        GET /kibana/api/actions/connector/{id}
        ```
        
        ### Execute Connector
        ```bash
        POST /kibana/api/actions/connector/{id}/_execute
        ```
        
        ## Fleet
        
        ### List Agent Policies
        ```bash
        GET /kibana/api/fleet/agent_policies
        ```
        
        ### List Agents
        ```bash
        GET /kibana/api/fleet/agents
        ```
        
        ### List Packages
        ```bash
        GET /kibana/api/fleet/epm/packages
        ```
        
        ## Security
        
        ### List Roles
        ```bash
        GET /kibana/api/security/role
        ```
        
        ## Cases
        
        ### Find Cases
        ```bash
        GET /kibana/api/cases/_find
        ```
        
        ## Notes
        
        - All requests require `kbn-xsrf: true` header
        - Saved object types: dashboard, visualization, index-pattern, search, lens, map
        - Data views replace index patterns in newer versions
        - Fleet manages Elastic Agents
        
        ## Resources
        
        - [Kibana REST API](https://www.elastic.co/docs/api/doc/kibana/)
        
    • kit
      • README.md 3.3 KB
        # Kit Routing Reference
        
        **App name:** `kit`
        **Base URL proxied:** `api.kit.com`
        
        ## API Path Pattern
        
        ```
        /kit/v4/{resource}
        ```
        
        ## Common Endpoints
        
        ### List Subscribers
        ```bash
        GET /kit/v4/subscribers
        ```
        
        Query parameters:
        - `per_page` - Results per page (default: 500, max: 1000)
        - `after` - Cursor for next page
        - `before` - Cursor for previous page
        - `status` - Filter by: `active`, `inactive`, `bounced`, `complained`, `cancelled`, or `all`
        - `email_address` - Filter by specific email
        
        ### Get Subscriber
        ```bash
        GET /kit/v4/subscribers/{id}
        ```
        
        ### Create Subscriber
        ```bash
        POST /kit/v4/subscribers
        Content-Type: application/json
        
        {
          "email_address": "user@example.com",
          "first_name": "John"
        }
        ```
        
        ### Update Subscriber
        ```bash
        PUT /kit/v4/subscribers/{id}
        Content-Type: application/json
        
        {
          "first_name": "Updated Name"
        }
        ```
        
        ### List Tags
        ```bash
        GET /kit/v4/tags
        ```
        
        ### Create Tag
        ```bash
        POST /kit/v4/tags
        Content-Type: application/json
        
        {
          "name": "new-tag"
        }
        ```
        
        ### Update Tag
        ```bash
        PUT /kit/v4/tags/{id}
        Content-Type: application/json
        
        {
          "name": "updated-tag-name"
        }
        ```
        
        ### Delete Tag
        ```bash
        DELETE /kit/v4/tags/{id}
        ```
        
        ### Tag a Subscriber
        ```bash
        POST /kit/v4/tags/{tag_id}/subscribers
        Content-Type: application/json
        
        {
          "email_address": "user@example.com"
        }
        ```
        
        ### Remove Tag from Subscriber
        ```bash
        DELETE /kit/v4/tags/{tag_id}/subscribers/{subscriber_id}
        ```
        
        ### List Subscribers with Tag
        ```bash
        GET /kit/v4/tags/{tag_id}/subscribers
        ```
        
        ### List Forms
        ```bash
        GET /kit/v4/forms
        ```
        
        ### Add Subscriber to Form
        ```bash
        POST /kit/v4/forms/{form_id}/subscribers
        Content-Type: application/json
        
        {
          "email_address": "user@example.com"
        }
        ```
        
        ### List Form Subscribers
        ```bash
        GET /kit/v4/forms/{form_id}/subscribers
        ```
        
        ### List Sequences
        ```bash
        GET /kit/v4/sequences
        ```
        
        ### Add Subscriber to Sequence
        ```bash
        POST /kit/v4/sequences/{sequence_id}/subscribers
        Content-Type: application/json
        
        {
          "email_address": "user@example.com"
        }
        ```
        
        ### List Broadcasts
        ```bash
        GET /kit/v4/broadcasts
        ```
        
        ### List Segments
        ```bash
        GET /kit/v4/segments
        ```
        
        ### List Custom Fields
        ```bash
        GET /kit/v4/custom_fields
        ```
        
        ### Create Custom Field
        ```bash
        POST /kit/v4/custom_fields
        Content-Type: application/json
        
        {
          "label": "Company"
        }
        ```
        
        ### Update Custom Field
        ```bash
        PUT /kit/v4/custom_fields/{id}
        Content-Type: application/json
        
        {
          "label": "Company Name"
        }
        ```
        
        ### Delete Custom Field
        ```bash
        DELETE /kit/v4/custom_fields/{id}
        ```
        
        ### List Email Templates
        ```bash
        GET /kit/v4/email_templates
        ```
        
        ### List Purchases
        ```bash
        GET /kit/v4/purchases
        ```
        
        ### List Webhooks
        ```bash
        GET /kit/v4/webhooks
        ```
        
        ### Create Webhook
        ```bash
        POST /kit/v4/webhooks
        Content-Type: application/json
        
        {
          "target_url": "https://example.com/webhook",
          "event": {"name": "subscriber.subscriber_activate"}
        }
        ```
        
        ### Delete Webhook
        ```bash
        DELETE /kit/v4/webhooks/{id}
        ```
        
        ## Notes
        
        - Kit API uses V4 (V3 is deprecated)
        - Subscriber IDs are integers
        - Custom field keys are auto-generated from labels
        - Uses cursor-based pagination with `after` and `before` parameters
        - Delete operations return 204 No Content
        - Bulk operations (>100 items) are processed asynchronously
        
        ## Resources
        
        - [Kit API Overview](https://developers.kit.com/api-reference/overview)
        - [Kit API Reference](https://developers.kit.com/api-reference)
        - [Kit Developer Documentation](https://developers.kit.com)
        
    • klaviyo
      • README.md 3.8 KB
        # Klaviyo Routing Reference
        
        **App name:** `klaviyo`
        **Base URL proxied:** `a.klaviyo.com`
        
        ## API Path Pattern
        
        ```
        /klaviyo/api/{resource}
        ```
        
        ## API Versioning
        
        Include the `revision` header in all requests:
        
        ```
        revision: 2024-10-15
        ```
        
        ## Common Endpoints
        
        ### Get Profiles
        ```bash
        GET /klaviyo/api/profiles
        ```
        
        Query parameters:
        - `filter` - Filter profiles (e.g., `filter=equals(email,"test@example.com")`)
        - `fields[profile]` - Comma-separated list of fields to include
        - `page[size]` - Number of results per page (max 100)
        
        ### Get a Profile
        ```bash
        GET /klaviyo/api/profiles/{profile_id}
        ```
        
        ### Create a Profile
        ```bash
        POST /klaviyo/api/profiles
        Content-Type: application/json
        
        {
          "data": {
            "type": "profile",
            "attributes": {
              "email": "newuser@example.com",
              "first_name": "John",
              "last_name": "Doe"
            }
          }
        }
        ```
        
        ### Update a Profile
        ```bash
        PATCH /klaviyo/api/profiles/{profile_id}
        Content-Type: application/json
        
        {
          "data": {
            "type": "profile",
            "id": "PROFILE_ID",
            "attributes": {
              "first_name": "Jane"
            }
          }
        }
        ```
        
        ### Get Lists
        ```bash
        GET /klaviyo/api/lists
        ```
        
        ### Create a List
        ```bash
        POST /klaviyo/api/lists
        Content-Type: application/json
        
        {
          "data": {
            "type": "list",
            "attributes": {
              "name": "VIP Customers"
            }
          }
        }
        ```
        
        ### Add Profiles to List
        ```bash
        POST /klaviyo/api/lists/{list_id}/relationships/profiles
        Content-Type: application/json
        
        {
          "data": [
            {"type": "profile", "id": "PROFILE_ID"}
          ]
        }
        ```
        
        ### Get Segments
        ```bash
        GET /klaviyo/api/segments
        ```
        
        ### Get Campaigns
        ```bash
        GET /klaviyo/api/campaigns
        ```
        
        ### Create a Campaign
        ```bash
        POST /klaviyo/api/campaigns
        Content-Type: application/json
        
        {
          "data": {
            "type": "campaign",
            "attributes": {
              "name": "Summer Newsletter",
              "audiences": {
                "included": ["LIST_ID"]
              }
            }
          }
        }
        ```
        
        ### Get Flows
        ```bash
        GET /klaviyo/api/flows
        ```
        
        ### Update Flow Status
        ```bash
        PATCH /klaviyo/api/flows/{flow_id}
        Content-Type: application/json
        
        {
          "data": {
            "type": "flow",
            "id": "FLOW_ID",
            "attributes": {
              "status": "live"
            }
          }
        }
        ```
        
        ### Create an Event
        ```bash
        POST /klaviyo/api/events
        Content-Type: application/json
        
        {
          "data": {
            "type": "event",
            "attributes": {
              "profile": {
                "data": {
                  "type": "profile",
                  "attributes": {
                    "email": "customer@example.com"
                  }
                }
              },
              "metric": {
                "data": {
                  "type": "metric",
                  "attributes": {
                    "name": "Viewed Product"
                  }
                }
              },
              "properties": {
                "product_id": "SKU123",
                "product_name": "Blue T-Shirt"
              }
            }
          }
        }
        ```
        
        ### Get Metrics
        ```bash
        GET /klaviyo/api/metrics
        ```
        
        ### Get Templates
        ```bash
        GET /klaviyo/api/templates
        ```
        
        ### Create Webhook
        ```bash
        POST /klaviyo/api/webhooks
        Content-Type: application/json
        
        {
          "data": {
            "type": "webhook",
            "attributes": {
              "name": "Order Placed Webhook",
              "endpoint_url": "https://example.com/webhooks/klaviyo",
              "enabled": true
            },
            "relationships": {
              "webhook-topics": {
                "data": [
                  {"type": "webhook-topic", "id": "campaign:sent"}
                ]
              }
            }
          }
        }
        ```
        
        ### Delete Webhook
        ```bash
        DELETE /klaviyo/api/webhooks/{webhook_id}
        ```
        
        ## Notes
        
        - All requests use JSON:API specification
        - Timestamps are in ISO 8601 RFC 3339 format
        - Resource IDs are strings (often base64-encoded)
        - Use sparse fieldsets to optimize response size (e.g., `fields[profile]=email,first_name`)
        - Include `revision` header for API versioning
        - Use cursor-based pagination with `page[cursor]` parameter
        
        ## Resources
        
        - [Klaviyo API Documentation](https://developers.klaviyo.com)
        - [API Reference](https://developers.klaviyo.com/en/reference/api_overview)
        - [Klaviyo Developer Portal](https://developers.klaviyo.com/en)
        
    • lemlist
      • README.md 2.4 KB
        # Lemlist Routing Reference
        
        **App name:** `lemlist`
        **Base URL proxied:** `api.lemlist.com`
        
        ## API Path Pattern
        
        ```
        /lemlist/api/{resource}
        ```
        
        ## Common Endpoints
        
        ### Team
        
        #### Get Team
        ```bash
        GET /lemlist/api/team
        ```
        
        #### Get Team Credits
        ```bash
        GET /lemlist/api/team/credits
        ```
        
        #### Get Team Senders
        ```bash
        GET /lemlist/api/team/senders
        ```
        
        ### Campaigns
        
        #### List Campaigns
        ```bash
        GET /lemlist/api/campaigns
        ```
        
        #### Create Campaign
        ```bash
        POST /lemlist/api/campaigns
        ```
        
        #### Get Campaign
        ```bash
        GET /lemlist/api/campaigns/{campaignId}
        ```
        
        #### Update Campaign
        ```bash
        PATCH /lemlist/api/campaigns/{campaignId}
        ```
        
        #### Pause Campaign
        ```bash
        POST /lemlist/api/campaigns/{campaignId}/pause
        ```
        
        ### Campaign Sequences
        
        #### Get Campaign Sequences
        ```bash
        GET /lemlist/api/campaigns/{campaignId}/sequences
        ```
        
        ### Campaign Schedules
        
        #### Get Campaign Schedules
        ```bash
        GET /lemlist/api/campaigns/{campaignId}/schedules
        ```
        
        ### Leads
        
        #### Add Lead to Campaign
        ```bash
        POST /lemlist/api/campaigns/{campaignId}/leads
        ```
        
        #### Get Lead by Email
        ```bash
        GET /lemlist/api/leads/{email}
        ```
        
        #### Update Lead in Campaign
        ```bash
        PATCH /lemlist/api/campaigns/{campaignId}/leads/{email}
        ```
        
        #### Delete Lead from Campaign
        ```bash
        DELETE /lemlist/api/campaigns/{campaignId}/leads/{email}
        ```
        
        ### Activities
        
        #### List Activities
        ```bash
        GET /lemlist/api/activities
        ```
        
        Query parameters:
        - `campaignId` - Filter by campaign
        - `type` - Filter by activity type
        
        ### Schedules
        
        #### List Schedules
        ```bash
        GET /lemlist/api/schedules
        ```
        
        #### Create Schedule
        ```bash
        POST /lemlist/api/schedules
        ```
        
        #### Get Schedule
        ```bash
        GET /lemlist/api/schedules/{scheduleId}
        ```
        
        #### Update Schedule
        ```bash
        PATCH /lemlist/api/schedules/{scheduleId}
        ```
        
        #### Delete Schedule
        ```bash
        DELETE /lemlist/api/schedules/{scheduleId}
        ```
        
        ### Companies
        
        #### List Companies
        ```bash
        GET /lemlist/api/companies
        ```
        
        ### Unsubscribes
        
        #### List Unsubscribes
        ```bash
        GET /lemlist/api/unsubscribes
        ```
        
        #### Add Unsubscribe
        ```bash
        POST /lemlist/api/unsubscribes
        ```
        
        ### Inbox Labels
        
        #### List Labels
        ```bash
        GET /lemlist/api/inbox/labels
        ```
        
        ## Notes
        
        - Campaign IDs start with `cam_`
        - Lead IDs start with `lea_`
        - Schedule IDs start with `skd_`
        - Campaigns cannot be deleted via API (only paused)
        - Lead emails are used as identifiers for lead operations
        - Rate limit: 20 requests per 2 seconds per API key
        
        ## Resources
        
        - [Lemlist API Documentation](https://developer.lemlist.com/)
        
    • linear
      • README.md 4.3 KB
        # Linear Routing Reference
        
        **App name:** `linear`
        **Base URL proxied:** `api.linear.app`
        
        ## API Type
        
        Linear uses a GraphQL API exclusively. All requests are POST requests to the `/graphql` endpoint.
        
        ## API Path Pattern
        
        ```
        /linear/graphql
        ```
        
        All operations use POST with a JSON body containing the `query` field.
        
        ## Common Operations
        
        ### Get Current User (Viewer)
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "{ viewer { id name email } }"
        }
        ```
        
        ### Get Organization
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "{ organization { id name urlKey } }"
        }
        ```
        
        ### List Teams
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "{ teams { nodes { id name key } } }"
        }
        ```
        
        ### List Issues
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "{ issues(first: 20) { nodes { id identifier title state { name } priority } pageInfo { hasNextPage endCursor } } }"
        }
        ```
        
        ### Get Issue by Identifier
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "{ issue(id: \"MTN-527\") { id identifier title description state { name } priority assignee { name } team { key } createdAt } }"
        }
        ```
        
        ### Filter Issues by State
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "{ issues(first: 20, filter: { state: { type: { eq: \"started\" } } }) { nodes { id identifier title state { name } } } }"
        }
        ```
        
        ### Search Issues
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "{ searchIssues(first: 20, term: \"search term\") { nodes { id identifier title } } }"
        }
        ```
        
        ### Create Issue
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "mutation { issueCreate(input: { teamId: \"TEAM_ID\", title: \"Issue title\", description: \"Description\" }) { success issue { id identifier title } } }"
        }
        ```
        
        ### Update Issue
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "mutation { issueUpdate(id: \"ISSUE_ID\", input: { title: \"Updated title\", priority: 2 }) { success issue { id identifier title priority } } }"
        }
        ```
        
        ### Create Comment
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "mutation { commentCreate(input: { issueId: \"ISSUE_ID\", body: \"Comment text\" }) { success comment { id body } } }"
        }
        ```
        
        ### List Projects
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "{ projects(first: 20) { nodes { id name state createdAt } } }"
        }
        ```
        
        ### List Labels
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "{ issueLabels(first: 50) { nodes { id name color } } }"
        }
        ```
        
        ### List Workflow States
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "{ workflowStates(first: 50) { nodes { id name type team { key } } } }"
        }
        ```
        
        ### List Users
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "{ users(first: 50) { nodes { id name email active } } }"
        }
        ```
        
        ### List Cycles
        ```bash
        POST /linear/graphql
        Content-Type: application/json
        
        {
          "query": "{ cycles(first: 20) { nodes { id name number startsAt endsAt } } }"
        }
        ```
        
        ## Pagination
        
        Linear uses Relay-style cursor-based pagination:
        
        ```bash
        # First page
        POST /linear/graphql
        {
          "query": "{ issues(first: 20) { nodes { id identifier title } pageInfo { hasNextPage endCursor } } }"
        }
        
        # Next page
        POST /linear/graphql
        {
          "query": "{ issues(first: 20, after: \"CURSOR_VALUE\") { nodes { id identifier title } pageInfo { hasNextPage endCursor } } }"
        }
        ```
        
        ## Notes
        
        - Linear uses GraphQL exclusively (no REST API)
        - Issue identifiers (e.g., `MTN-527`) can be used in place of UUIDs for the `id` parameter
        - Priority values: 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low
        - Workflow state types: `backlog`, `unstarted`, `started`, `completed`, `canceled`
        - Some mutations (delete, create labels/projects) may require additional OAuth scopes
        - Use `searchIssues(term: "...")` for full-text search
        - Filter operators: `eq`, `neq`, `in`, `nin`, `containsIgnoreCase`, etc.
        
        ## Resources
        
        - [Linear API Overview](https://linear.app/developers)
        - [Linear GraphQL Getting Started](https://linear.app/developers/graphql)
        - [Linear GraphQL Schema (Apollo Studio)](https://studio.apollographql.com/public/Linear-API/schema/reference?variant=current)
        - [Linear API and Webhooks](https://linear.app/docs/api-and-webhooks)
        
    • linkedin
      • README.md 5.4 KB
        # LinkedIn Routing Reference
        
        **App name:** `linkedin`
        **Base URL proxied:** `api.linkedin.com`
        
        ## API Path Pattern
        
        ```
        /linkedin/rest/{resource}
        ```
        
        ## Required Headers
        
        ```
        LinkedIn-Version: 202506
        ```
        
        ## Common Endpoints
        
        ### Get Current User Profile
        ```bash
        GET /linkedin/rest/me
        LinkedIn-Version: 202506
        ```
        
        ### Create Text Post
        ```bash
        POST /linkedin/rest/posts
        Content-Type: application/json
        LinkedIn-Version: 202506
        
        {
          "author": "urn:li:person:{personId}",
          "lifecycleState": "PUBLISHED",
          "visibility": "PUBLIC",
          "commentary": "Hello LinkedIn!",
          "distribution": {
            "feedDistribution": "MAIN_FEED"
          }
        }
        ```
        
        ### Create Article/URL Share
        ```bash
        POST /linkedin/rest/posts
        Content-Type: application/json
        LinkedIn-Version: 202506
        
        {
          "author": "urn:li:person:{personId}",
          "lifecycleState": "PUBLISHED",
          "visibility": "PUBLIC",
          "commentary": "Check this out!",
          "distribution": {
            "feedDistribution": "MAIN_FEED"
          },
          "content": {
            "article": {
              "source": "https://example.com",
              "title": "Title",
              "description": "Description"
            }
          }
        }
        ```
        
        ### Initialize Image Upload
        ```bash
        POST /linkedin/rest/images?action=initializeUpload
        Content-Type: application/json
        LinkedIn-Version: 202506
        
        {
          "initializeUploadRequest": {
            "owner": "urn:li:person:{personId}"
          }
        }
        ```
        
        ### Ad Library - Search Ads
        ```bash
        GET /linkedin/rest/adLibrary?q=criteria&keyword=linkedin
        LinkedIn-Version: 202506
        ```
        
        ### Job Library - Search Jobs
        ```bash
        GET /linkedin/rest/jobLibrary?q=criteria&keyword=software
        LinkedIn-Version: 202506
        ```
        
        ## Marketing API (Advertising)
        
        Required headers for all Marketing API calls:
        ```
        LinkedIn-Version: 202506
        ```
        
        ### List Ad Accounts
        ```bash
        GET /linkedin/rest/adAccounts?q=search
        ```
        
        ### Get Ad Account
        ```bash
        GET /linkedin/rest/adAccounts/{adAccountId}
        ```
        
        ### Create Ad Account
        ```bash
        POST /linkedin/rest/adAccounts
        Content-Type: application/json
        
        {
          "name": "Ad Account Name",
          "currency": "USD",
          "reference": "urn:li:organization:{orgId}",
          "type": "BUSINESS"
        }
        ```
        
        ### List Campaign Groups
        ```bash
        GET /linkedin/rest/adAccounts/{adAccountId}/adCampaignGroups
        ```
        
        ### Create Campaign Group
        ```bash
        POST /linkedin/rest/adAccounts/{adAccountId}/adCampaignGroups
        Content-Type: application/json
        
        {
          "name": "Campaign Group Name",
          "status": "DRAFT"
        }
        ```
        
        ### Get Campaign Group
        ```bash
        GET /linkedin/rest/adAccounts/{adAccountId}/adCampaignGroups/{campaignGroupId}
        ```
        
        ### List Campaigns
        ```bash
        GET /linkedin/rest/adAccounts/{adAccountId}/adCampaigns
        ```
        
        ### Create Campaign
        ```bash
        POST /linkedin/rest/adAccounts/{adAccountId}/adCampaigns
        Content-Type: application/json
        
        {
          "campaignGroup": "urn:li:sponsoredCampaignGroup:{groupId}",
          "name": "Campaign Name",
          "status": "DRAFT",
          "objectiveType": "BRAND_AWARENESS"
        }
        ```
        
        ### Get Campaign
        ```bash
        GET /linkedin/rest/adAccounts/{adAccountId}/adCampaigns/{campaignId}
        ```
        
        ### List Organization ACLs
        ```bash
        GET /linkedin/rest/organizationAcls?q=roleAssignee
        LinkedIn-Version: 202506
        ```
        
        ### Lookup Organization by Vanity Name
        ```bash
        GET /linkedin/rest/organizations?q=vanityName&vanityName=microsoft
        ```
        
        ### Get Organization Share Statistics
        ```bash
        GET /linkedin/rest/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity=urn:li:organization:12345
        ```
        
        ### Get Organization Posts
        ```bash
        GET /linkedin/rest/posts?q=author&author=urn:li:organization:12345
        ```
        
        ## Media Upload
        
        ### Initialize Image Upload
        ```bash
        POST /linkedin/rest/images?action=initializeUpload
        Content-Type: application/json
        LinkedIn-Version: 202506
        
        {"initializeUploadRequest": {"owner": "urn:li:person:{personId}"}}
        ```
        
        ### Initialize Video Upload
        ```bash
        POST /linkedin/rest/videos?action=initializeUpload
        Content-Type: application/json
        LinkedIn-Version: 202506
        
        {"initializeUploadRequest": {"owner": "urn:li:person:{personId}", "fileSizeBytes": 10000000}}
        ```
        
        ### Initialize Document Upload
        ```bash
        POST /linkedin/rest/documents?action=initializeUpload
        Content-Type: application/json
        LinkedIn-Version: 202506
        
        {"initializeUploadRequest": {"owner": "urn:li:person:{personId}"}}
        ```
        
        ## Ad Targeting
        
        ### Get Targeting Facets
        ```bash
        GET /linkedin/rest/adTargetingFacets
        LinkedIn-Version: 202506
        ```
        
        Returns 31 targeting facets (skills, industries, titles, locations, etc.)
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Include `LinkedIn-Version: 202506` header for all REST API calls
        - Author URN format: `urn:li:person:{personId}`
        - Get person ID from `/rest/me` endpoint
        - Image uploads are 3-step: initialize, upload binary, create post
        - Rate limits: 150 requests/day per member, 100K/day per app
        
        ## Visibility Options
        
        - `PUBLIC` - Viewable by anyone
        - `CONNECTIONS` - 1st-degree connections only
        
        ## Share Media Categories
        
        - `NONE` - Text only
        - `ARTICLE` - URL share
        - `IMAGE` - Image post
        - `VIDEO` - Video post
        
        ## Resources
        
        - [LinkedIn API Overview](https://learn.microsoft.com/en-us/linkedin/)
        - [Share on LinkedIn](https://learn.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/share-on-linkedin)
        - [Profile API](https://learn.microsoft.com/en-us/linkedin/shared/integrations/people/profile-api)
        - [Marketing API](https://learn.microsoft.com/en-us/linkedin/marketing/)
        - [Ad Accounts](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/account-structure/create-and-manage-accounts)
        - [Campaigns](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/account-structure/create-and-manage-campaigns)
        
    • mailchimp
      • README.md 4.1 KB
        # Mailchimp Routing Reference
        
        **App name:** `mailchimp`
        **Base URL proxied:** `{dc}.api.mailchimp.com`
        
        ## API Path Pattern
        
        ```
        /mailchimp/3.0/{resource}
        ```
        
        ## Common Endpoints
        
        ### Get All Lists (Audiences)
        ```bash
        GET /mailchimp/3.0/lists
        ```
        
        Query parameters:
        - `count` - Number of records to return (default 10, max 1000)
        - `offset` - Number of records to skip (for pagination)
        
        ### Get a List
        ```bash
        GET /mailchimp/3.0/lists/{list_id}
        ```
        
        ### Create a List
        ```bash
        POST /mailchimp/3.0/lists
        Content-Type: application/json
        
        {
          "name": "Newsletter",
          "contact": {
            "company": "Acme Corp",
            "address1": "123 Main St",
            "city": "New York",
            "state": "NY",
            "zip": "10001",
            "country": "US"
          },
          "permission_reminder": "You signed up for our newsletter",
          "campaign_defaults": {
            "from_name": "Acme Corp",
            "from_email": "newsletter@acme.com",
            "subject": "",
            "language": "en"
          },
          "email_type_option": true
        }
        ```
        
        ### Get List Members
        ```bash
        GET /mailchimp/3.0/lists/{list_id}/members?status=subscribed&count=50
        ```
        
        ### Add a Member
        ```bash
        POST /mailchimp/3.0/lists/{list_id}/members
        Content-Type: application/json
        
        {
          "email_address": "newuser@example.com",
          "status": "subscribed",
          "merge_fields": {
            "FNAME": "Jane",
            "LNAME": "Smith"
          }
        }
        ```
        
        ### Update a Member
        ```bash
        PATCH /mailchimp/3.0/lists/{list_id}/members/{subscriber_hash}
        Content-Type: application/json
        
        {
          "merge_fields": {
            "FNAME": "Jane",
            "LNAME": "Doe"
          }
        }
        ```
        
        ### Add or Update a Member (Upsert)
        ```bash
        PUT /mailchimp/3.0/lists/{list_id}/members/{subscriber_hash}
        Content-Type: application/json
        
        {
          "email_address": "user@example.com",
          "status_if_new": "subscribed",
          "merge_fields": {
            "FNAME": "Jane",
            "LNAME": "Smith"
          }
        }
        ```
        
        ### Delete a Member
        ```bash
        DELETE /mailchimp/3.0/lists/{list_id}/members/{subscriber_hash}
        ```
        
        ### Add or Remove Tags
        ```bash
        POST /mailchimp/3.0/lists/{list_id}/members/{subscriber_hash}/tags
        Content-Type: application/json
        
        {
          "tags": [
            {"name": "VIP", "status": "active"},
            {"name": "Old Tag", "status": "inactive"}
          ]
        }
        ```
        
        ### Get Segments
        ```bash
        GET /mailchimp/3.0/lists/{list_id}/segments
        ```
        
        ### Get All Campaigns
        ```bash
        GET /mailchimp/3.0/campaigns?status=sent&count=20
        ```
        
        ### Create a Campaign
        ```bash
        POST /mailchimp/3.0/campaigns
        Content-Type: application/json
        
        {
          "type": "regular",
          "recipients": {
            "list_id": "LIST_ID"
          },
          "settings": {
            "subject_line": "Your Monthly Update",
            "from_name": "Acme Corp",
            "reply_to": "hello@acme.com"
          }
        }
        ```
        
        ### Set Campaign Content
        ```bash
        PUT /mailchimp/3.0/campaigns/{campaign_id}/content
        Content-Type: application/json
        
        {
          "html": "<html><body><h1>Hello!</h1><p>Newsletter content here.</p></body></html>",
          "plain_text": "Hello! Newsletter content here."
        }
        ```
        
        ### Send a Campaign
        ```bash
        POST /mailchimp/3.0/campaigns/{campaign_id}/actions/send
        ```
        
        ### Schedule a Campaign
        ```bash
        POST /mailchimp/3.0/campaigns/{campaign_id}/actions/schedule
        Content-Type: application/json
        
        {
          "schedule_time": "2025-03-01T10:00:00+00:00"
        }
        ```
        
        ### Get All Templates
        ```bash
        GET /mailchimp/3.0/templates?type=user
        ```
        
        ### Get All Automations
        ```bash
        GET /mailchimp/3.0/automations
        ```
        
        ### Start an Automation
        ```bash
        POST /mailchimp/3.0/automations/{workflow_id}/actions/start-all-emails
        ```
        
        ### Get Campaign Reports
        ```bash
        GET /mailchimp/3.0/reports?count=20
        ```
        
        ### Get Campaign Report
        ```bash
        GET /mailchimp/3.0/reports/{campaign_id}
        ```
        
        ## Notes
        
        - List IDs are 10-character alphanumeric strings
        - Subscriber hashes are MD5 hashes of lowercase email addresses
        - Timestamps are in ISO 8601 format
        - Maximum 1000 records per request for list endpoints
        - "Audience" and "list" are used interchangeably (app vs API terminology)
        - "Contact" and "member" are used interchangeably (app vs API terminology)
        - Use offset-based pagination with `count` and `offset` parameters
        
        ## Resources
        
        - [Mailchimp Marketing API Documentation](https://mailchimp.com/developer/marketing/)
        - [API Reference](https://mailchimp.com/developer/marketing/api/)
        - [Quick Start Guide](https://mailchimp.com/developer/marketing/guides/quick-start/)
        
    • mailerlite
      • README.md 4 KB
        # MailerLite Routing Reference
        
        **App name:** `mailerlite`
        **Base URL proxied:** `connect.mailerlite.com`
        
        ## API Path Pattern
        
        ```
        /mailerlite/api/{resource}
        ```
        
        ## Common Endpoints
        
        ### Subscribers
        
        #### List Subscribers
        ```bash
        GET /mailerlite/api/subscribers
        ```
        
        Query parameters: `filter[status]`, `limit`, `cursor`, `include`
        
        #### Get Subscriber
        ```bash
        GET /mailerlite/api/subscribers/{subscriber_id_or_email}
        ```
        
        #### Create/Upsert Subscriber
        ```bash
        POST /mailerlite/api/subscribers
        Content-Type: application/json
        
        {
          "email": "subscriber@example.com",
          "fields": {"name": "John Doe"},
          "groups": ["12345678901234567"],
          "status": "active"
        }
        ```
        
        #### Update Subscriber
        ```bash
        PUT /mailerlite/api/subscribers/{subscriber_id}
        Content-Type: application/json
        
        {
          "fields": {"name": "Jane Doe"}
        }
        ```
        
        #### Delete Subscriber
        ```bash
        DELETE /mailerlite/api/subscribers/{subscriber_id}
        ```
        
        ### Groups
        
        #### List Groups
        ```bash
        GET /mailerlite/api/groups
        ```
        
        Query parameters: `limit`, `page`, `filter[name]`, `sort`
        
        #### Create Group
        ```bash
        POST /mailerlite/api/groups
        Content-Type: application/json
        
        {
          "name": "Newsletter Subscribers"
        }
        ```
        
        #### Update Group
        ```bash
        PUT /mailerlite/api/groups/{group_id}
        Content-Type: application/json
        
        {
          "name": "Updated Group Name"
        }
        ```
        
        #### Delete Group
        ```bash
        DELETE /mailerlite/api/groups/{group_id}
        ```
        
        #### Get Group Subscribers
        ```bash
        GET /mailerlite/api/groups/{group_id}/subscribers
        ```
        
        ### Campaigns
        
        #### List Campaigns
        ```bash
        GET /mailerlite/api/campaigns
        ```
        
        Query parameters: `filter[status]`, `filter[type]`, `limit`, `page`
        
        #### Get Campaign
        ```bash
        GET /mailerlite/api/campaigns/{campaign_id}
        ```
        
        #### Create Campaign
        ```bash
        POST /mailerlite/api/campaigns
        Content-Type: application/json
        
        {
          "name": "My Newsletter",
          "type": "regular",
          "emails": [
            {
              "subject": "Weekly Update",
              "from_name": "Newsletter",
              "from": "newsletter@example.com"
            }
          ],
          "groups": ["12345678901234567"]
        }
        ```
        
        #### Schedule Campaign
        ```bash
        POST /mailerlite/api/campaigns/{campaign_id}/schedule
        Content-Type: application/json
        
        {
          "delivery": "instant"
        }
        ```
        
        #### Delete Campaign
        ```bash
        DELETE /mailerlite/api/campaigns/{campaign_id}
        ```
        
        ### Automations
        
        #### List Automations
        ```bash
        GET /mailerlite/api/automations
        ```
        
        Query parameters: `filter[enabled]`, `filter[name]`, `page`, `limit`
        
        #### Get Automation
        ```bash
        GET /mailerlite/api/automations/{automation_id}
        ```
        
        #### Delete Automation
        ```bash
        DELETE /mailerlite/api/automations/{automation_id}
        ```
        
        ### Fields
        
        #### List Fields
        ```bash
        GET /mailerlite/api/fields
        ```
        
        #### Create Field
        ```bash
        POST /mailerlite/api/fields
        Content-Type: application/json
        
        {
          "name": "Company",
          "type": "text"
        }
        ```
        
        ### Segments
        
        #### List Segments
        ```bash
        GET /mailerlite/api/segments
        ```
        
        #### Get Segment Subscribers
        ```bash
        GET /mailerlite/api/segments/{segment_id}/subscribers
        ```
        
        ### Forms
        
        #### List Forms
        ```bash
        GET /mailerlite/api/forms/{type}
        ```
        
        Path parameters: `type` - `popup`, `embedded`, or `promotion`
        
        #### Get Form Subscribers
        ```bash
        GET /mailerlite/api/forms/{form_id}/subscribers
        ```
        
        ### Webhooks
        
        #### List Webhooks
        ```bash
        GET /mailerlite/api/webhooks
        ```
        
        #### Create Webhook
        ```bash
        POST /mailerlite/api/webhooks
        Content-Type: application/json
        
        {
          "name": "Subscriber Updates",
          "events": ["subscriber.created", "subscriber.updated"],
          "url": "https://example.com/webhook"
        }
        ```
        
        ## Notes
        
        - Rate limit: 120 requests per minute
        - Subscriber emails serve as unique identifiers (POST creates or updates existing)
        - Only draft campaigns can be updated
        - Pagination: cursor-based for subscribers, page-based for groups/campaigns
        - API versioning can be overridden via `X-Version: YYYY-MM-DD` header
        
        ## Resources
        
        - [MailerLite API Documentation](https://developers.mailerlite.com/docs/)
        - [MailerLite Subscribers API](https://developers.mailerlite.com/docs/subscribers.html)
        - [MailerLite Groups API](https://developers.mailerlite.com/docs/groups.html)
        - [MailerLite Campaigns API](https://developers.mailerlite.com/docs/campaigns.html)
        
    • mailgun
      • README.md 4.7 KB
        # Mailgun Routing Reference
        
        **App name:** `mailgun`
        **Base URL proxied:** `api.mailgun.net`
        
        ## API Path Pattern
        
        ```
        /mailgun/v3/{resource}
        ```
        
        ## Common Endpoints
        
        ### Domains
        
        #### List Domains
        ```bash
        GET /mailgun/v3/domains
        ```
        
        #### Get Domain
        ```bash
        GET /mailgun/v3/domains/{domain_name}
        ```
        
        #### Create Domain
        ```bash
        POST /mailgun/v3/domains
        ```
        
        #### Delete Domain
        ```bash
        DELETE /mailgun/v3/domains/{domain_name}
        ```
        
        ### Messages
        
        #### Send Message
        ```bash
        POST /mailgun/v3/{domain_name}/messages
        ```
        
        #### Send MIME Message
        ```bash
        POST /mailgun/v3/{domain_name}/messages.mime
        ```
        
        ### Events
        
        #### List Events
        ```bash
        GET /mailgun/v3/{domain_name}/events
        ```
        
        ### Routes
        
        #### List Routes
        ```bash
        GET /mailgun/v3/routes
        ```
        
        #### Create Route
        ```bash
        POST /mailgun/v3/routes
        ```
        
        #### Get Route
        ```bash
        GET /mailgun/v3/routes/{route_id}
        ```
        
        #### Update Route
        ```bash
        PUT /mailgun/v3/routes/{route_id}
        ```
        
        #### Delete Route
        ```bash
        DELETE /mailgun/v3/routes/{route_id}
        ```
        
        ### Webhooks
        
        #### List Webhooks
        ```bash
        GET /mailgun/v3/domains/{domain_name}/webhooks
        ```
        
        #### Create Webhook
        ```bash
        POST /mailgun/v3/domains/{domain_name}/webhooks
        ```
        
        #### Get Webhook
        ```bash
        GET /mailgun/v3/domains/{domain_name}/webhooks/{webhook_type}
        ```
        
        #### Update Webhook
        ```bash
        PUT /mailgun/v3/domains/{domain_name}/webhooks/{webhook_type}
        ```
        
        #### Delete Webhook
        ```bash
        DELETE /mailgun/v3/domains/{domain_name}/webhooks/{webhook_type}
        ```
        
        ### Templates
        
        #### List Templates
        ```bash
        GET /mailgun/v3/{domain_name}/templates
        ```
        
        #### Create Template
        ```bash
        POST /mailgun/v3/{domain_name}/templates
        ```
        
        #### Get Template
        ```bash
        GET /mailgun/v3/{domain_name}/templates/{template_name}
        ```
        
        #### Delete Template
        ```bash
        DELETE /mailgun/v3/{domain_name}/templates/{template_name}
        ```
        
        ### Mailing Lists
        
        #### List Mailing Lists
        ```bash
        GET /mailgun/v3/lists/pages
        ```
        
        #### Create Mailing List
        ```bash
        POST /mailgun/v3/lists
        ```
        
        #### Get Mailing List
        ```bash
        GET /mailgun/v3/lists/{list_address}
        ```
        
        #### Update Mailing List
        ```bash
        PUT /mailgun/v3/lists/{list_address}
        ```
        
        #### Delete Mailing List
        ```bash
        DELETE /mailgun/v3/lists/{list_address}
        ```
        
        ### Mailing List Members
        
        #### List Members
        ```bash
        GET /mailgun/v3/lists/{list_address}/members/pages
        ```
        
        #### Add Member
        ```bash
        POST /mailgun/v3/lists/{list_address}/members
        ```
        
        #### Get Member
        ```bash
        GET /mailgun/v3/lists/{list_address}/members/{member_address}
        ```
        
        #### Update Member
        ```bash
        PUT /mailgun/v3/lists/{list_address}/members/{member_address}
        ```
        
        #### Delete Member
        ```bash
        DELETE /mailgun/v3/lists/{list_address}/members/{member_address}
        ```
        
        ### Suppressions
        
        #### Bounces
        ```bash
        GET /mailgun/v3/{domain_name}/bounces
        POST /mailgun/v3/{domain_name}/bounces
        GET /mailgun/v3/{domain_name}/bounces/{address}
        DELETE /mailgun/v3/{domain_name}/bounces/{address}
        ```
        
        #### Unsubscribes
        ```bash
        GET /mailgun/v3/{domain_name}/unsubscribes
        POST /mailgun/v3/{domain_name}/unsubscribes
        DELETE /mailgun/v3/{domain_name}/unsubscribes/{address}
        ```
        
        #### Complaints
        ```bash
        GET /mailgun/v3/{domain_name}/complaints
        POST /mailgun/v3/{domain_name}/complaints
        DELETE /mailgun/v3/{domain_name}/complaints/{address}
        ```
        
        #### Whitelists
        ```bash
        GET /mailgun/v3/{domain_name}/whitelists
        POST /mailgun/v3/{domain_name}/whitelists
        DELETE /mailgun/v3/{domain_name}/whitelists/{address}
        ```
        
        ### Statistics
        
        #### Get Stats
        ```bash
        GET /mailgun/v3/{domain_name}/stats/total?event=delivered
        ```
        
        ### Tags
        
        #### List Tags
        ```bash
        GET /mailgun/v3/{domain_name}/tags
        ```
        
        #### Get Tag
        ```bash
        GET /mailgun/v3/{domain_name}/tags/{tag_name}
        ```
        
        #### Delete Tag
        ```bash
        DELETE /mailgun/v3/{domain_name}/tags/{tag_name}
        ```
        
        ### IPs
        
        #### List IPs
        ```bash
        GET /mailgun/v3/ips
        ```
        
        #### Get IP
        ```bash
        GET /mailgun/v3/ips/{ip_address}
        ```
        
        ### Domain Tracking
        
        #### Get Tracking Settings
        ```bash
        GET /mailgun/v3/domains/{domain_name}/tracking
        ```
        
        #### Update Tracking
        ```bash
        PUT /mailgun/v3/domains/{domain_name}/tracking/open
        PUT /mailgun/v3/domains/{domain_name}/tracking/click
        PUT /mailgun/v3/domains/{domain_name}/tracking/unsubscribe
        ```
        
        ### Credentials
        
        #### List Credentials
        ```bash
        GET /mailgun/v3/domains/{domain_name}/credentials
        ```
        
        #### Create Credential
        ```bash
        POST /mailgun/v3/domains/{domain_name}/credentials
        ```
        
        #### Delete Credential
        ```bash
        DELETE /mailgun/v3/domains/{domain_name}/credentials/{login}
        ```
        
        ## Notes
        
        - Mailgun uses `application/x-www-form-urlencoded` for POST/PUT requests, not JSON
        - Routes are global (per account), not per domain
        - Sandbox domains require authorized recipients
        - Event logs stored for at least 3 days
        - Stats require at least one `event` parameter
        - US region: api.mailgun.net, EU region: api.eu.mailgun.net
        
        ## Resources
        
        - [Mailgun API Documentation](https://documentation.mailgun.com/docs/mailgun/api-reference/api-overview)
        
    • manus
      • README.md 2.4 KB
        # Manus Routing Reference
        
        **App name:** `manus`
        **Base URL proxied:** `api.manus.ai`
        
        ## API Path Pattern
        
        ```
        /manus/v1/projects
        /manus/v1/tasks
        /manus/v1/files
        /manus/v1/webhooks
        ```
        
        ## Important Notes
        
        - Connection uses API_KEY authentication method (not OAuth)
        - Tasks are executed asynchronously - poll for completion or use webhooks
        - File uploads use presigned S3 URLs that expire in ~3 minutes
        - Files expire after ~48 hours if not used
        
        ## Common Endpoints
        
        ### Projects
        
        #### List Projects
        ```bash
        GET /manus/v1/projects
        ```
        
        #### Create Project
        ```bash
        POST /manus/v1/projects
        Content-Type: application/json
        
        {
          "name": "My Project",
          "default_instructions": "You are a helpful assistant."
        }
        ```
        
        ### Tasks
        
        #### List Tasks
        ```bash
        GET /manus/v1/tasks
        ```
        
        #### Get Task
        ```bash
        GET /manus/v1/tasks/{task_id}
        ```
        
        #### Create Task
        ```bash
        POST /manus/v1/tasks
        Content-Type: application/json
        
        {
          "prompt": "What is the capital of France?"
        }
        ```
        
        Optional fields:
        - `project_id`: Associate with a project
        - `file_ids`: Attach files to the task
        
        #### Delete Task
        ```bash
        DELETE /manus/v1/tasks/{task_id}
        ```
        
        ### Files
        
        #### List Files
        ```bash
        GET /manus/v1/files
        ```
        Returns the 10 most recently uploaded files.
        
        #### Get File
        ```bash
        GET /manus/v1/files/{file_id}
        ```
        
        #### Create File
        ```bash
        POST /manus/v1/files
        Content-Type: application/json
        
        {
          "filename": "document.pdf"
        }
        ```
        Returns a presigned S3 upload URL. Upload your file to `upload_url` using PUT.
        
        #### Delete File
        ```bash
        DELETE /manus/v1/files/{file_id}
        ```
        
        ### Webhooks
        
        #### Create Webhook
        ```bash
        POST /manus/v1/webhooks
        Content-Type: application/json
        
        {
          "webhook": {
            "url": "https://example.com/webhook"
          }
        }
        ```
        
        Note: The webhook URL must be nested inside a `webhook` object.
        
        #### Delete Webhook
        ```bash
        DELETE /manus/v1/webhooks/{webhook_id}
        ```
        
        ## Task Status Values
        
        - `pending`: Task is queued
        - `running`: Task is being executed
        - `completed`: Task finished successfully
        - `failed`: Task failed
        
        ## File Status Values
        
        - `pending`: File record created, awaiting upload
        - `ready`: File uploaded and available
        - `expired`: File has expired
        
        ## Available Models
        
        - `manus-1.6`
        - `manus-1.6-lite`
        - `manus-1.6-max`
        - `manus-1.5`
        - `manus-1.5-lite`
        - `speed`
        
        ## Resources
        
        - [Manus API Overview](https://open.manus.im/docs)
        - [Manus API Reference](https://open.manus.im/docs/api-reference)
        - [Manus Website](https://manus.im)
        
    • manychat
      • README.md 3.6 KB
        # ManyChat Routing Reference
        
        **App name:** `manychat`
        **Base URL proxied:** `api.manychat.com`
        
        ## API Path Pattern
        
        ```
        /manychat/fb/{category}/{action}
        ```
        
        ## Common Endpoints
        
        ### Page Operations
        
        #### Get Page Info
        ```bash
        GET /manychat/fb/page/getInfo
        ```
        
        #### List Tags
        ```bash
        GET /manychat/fb/page/getTags
        ```
        
        #### Create Tag
        ```bash
        POST /manychat/fb/page/createTag
        Content-Type: application/json
        
        {
          "name": "New Tag"
        }
        ```
        
        #### Remove Tag
        ```bash
        POST /manychat/fb/page/removeTag
        Content-Type: application/json
        
        {
          "tag_id": 123
        }
        ```
        
        #### List Custom Fields
        ```bash
        GET /manychat/fb/page/getCustomFields
        ```
        
        #### Create Custom Field
        ```bash
        POST /manychat/fb/page/createCustomField
        Content-Type: application/json
        
        {
          "caption": "Phone Number",
          "type": "text",
          "description": "Customer phone number"
        }
        ```
        
        #### List Bot Fields
        ```bash
        GET /manychat/fb/page/getBotFields
        ```
        
        #### Set Bot Field
        ```bash
        POST /manychat/fb/page/setBotField
        Content-Type: application/json
        
        {
          "field_id": 123,
          "field_value": 42
        }
        ```
        
        #### List Flows
        ```bash
        GET /manychat/fb/page/getFlows
        ```
        
        #### List Growth Tools
        ```bash
        GET /manychat/fb/page/getGrowthTools
        ```
        
        #### List OTN Topics
        ```bash
        GET /manychat/fb/page/getOtnTopics
        ```
        
        ### Subscriber Operations
        
        #### Get Subscriber Info
        ```bash
        GET /manychat/fb/subscriber/getInfo?subscriber_id=123456789
        ```
        
        #### Find Subscriber by Name
        ```bash
        GET /manychat/fb/subscriber/findByName?name=John%20Doe
        ```
        
        #### Find Subscriber by Email/Phone
        ```bash
        GET /manychat/fb/subscriber/findBySystemField?email=john@example.com
        ```
        
        #### Create Subscriber
        ```bash
        POST /manychat/fb/subscriber/createSubscriber
        Content-Type: application/json
        
        {
          "first_name": "John",
          "last_name": "Doe",
          "phone": "+1234567890",
          "email": "john@example.com"
        }
        ```
        
        #### Update Subscriber
        ```bash
        POST /manychat/fb/subscriber/updateSubscriber
        Content-Type: application/json
        
        {
          "subscriber_id": 123456789,
          "first_name": "John",
          "last_name": "Smith"
        }
        ```
        
        #### Add Tag to Subscriber
        ```bash
        POST /manychat/fb/subscriber/addTag
        Content-Type: application/json
        
        {
          "subscriber_id": 123456789,
          "tag_id": 1
        }
        ```
        
        #### Set Custom Field
        ```bash
        POST /manychat/fb/subscriber/setCustomField
        Content-Type: application/json
        
        {
          "subscriber_id": 123456789,
          "field_id": 1,
          "field_value": "value"
        }
        ```
        
        ### Sending Operations
        
        #### Send Content
        ```bash
        POST /manychat/fb/sending/sendContent
        Content-Type: application/json
        
        {
          "subscriber_id": 123456789,
          "data": {
            "version": "v2",
            "content": {
              "messages": [
                {"type": "text", "text": "Hello!"}
              ]
            }
          }
        }
        ```
        
        #### Send Flow
        ```bash
        POST /manychat/fb/sending/sendFlow
        Content-Type: application/json
        
        {
          "subscriber_id": 123456789,
          "flow_ns": "content123456"
        }
        ```
        
        ## Rate Limits
        
        | Endpoint Category | Rate Limit |
        |------------------|------------|
        | Page GET endpoints | 100 queries/second |
        | Page POST endpoints | 10 queries/second |
        | Subscriber operations | 10-50 queries/second |
        | Sending content | 25 queries/second |
        | Sending flows | 20 queries/second |
        
        ## Notes
        
        - Subscriber IDs are integers unique within a page
        - Flow namespaces (flow_ns) identify automation flows
        - Message tags are required for sending outside the 24-hour window
        - All responses include `{"status": "success"}` or `{"status": "error"}`
        - Custom field types: `text`, `number`, `date`, `datetime`, `boolean`
        
        ## Resources
        
        - [ManyChat API Documentation](https://api.manychat.com/swagger)
        - [ManyChat API Key Generation](https://help.manychat.com/hc/en-us/articles/14959510331420)
        - [ManyChat Dev Program](https://help.manychat.com/hc/en-us/articles/14281269835548)
        
    • microsoft-excel
      • README.md 3.8 KB
        # Microsoft Excel Routing Reference
        
        **App name:** `microsoft-excel`
        **Base URL proxied:** `graph.microsoft.com`
        
        ## API Path Pattern
        
        ```
        /microsoft-excel/v1.0/me/drive/items/{file-id}/workbook/{resource}
        /microsoft-excel/v1.0/me/drive/root:/{path}:/workbook/{resource}
        ```
        
        ## Common Endpoints
        
        ### Drive Operations
        
        #### Get Drive Info
        ```bash
        GET /microsoft-excel/v1.0/me/drive
        ```
        
        #### List Root Files
        ```bash
        GET /microsoft-excel/v1.0/me/drive/root/children
        ```
        
        #### Search Files
        ```bash
        GET /microsoft-excel/v1.0/me/drive/root/search(q='.xlsx')
        ```
        
        ### Session Management
        
        #### Create Session
        ```bash
        POST /microsoft-excel/v1.0/me/drive/root:/{path}:/workbook/createSession
        Content-Type: application/json
        
        {
          "persistChanges": true
        }
        ```
        
        ### Worksheet Operations
        
        #### List Worksheets
        ```bash
        GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets
        ```
        
        #### Create Worksheet
        ```bash
        POST /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets
        Content-Type: application/json
        
        {
          "name": "NewSheet"
        }
        ```
        
        #### Delete Worksheet
        ```bash
        DELETE /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('{id}')
        ```
        
        ### Range Operations
        
        #### Get Range
        ```bash
        GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/range(address='A1:B2')
        ```
        
        #### Update Range
        ```bash
        PATCH /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/range(address='A1:B2')
        Content-Type: application/json
        
        {
          "values": [
            ["Value1", "Value2"],
            [100, 200]
          ]
        }
        ```
        
        #### Get Used Range
        ```bash
        GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/usedRange
        ```
        
        ### Table Operations
        
        #### List Tables
        ```bash
        GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/tables
        ```
        
        #### Create Table
        ```bash
        POST /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/tables/add
        Content-Type: application/json
        
        {
          "address": "A1:C4",
          "hasHeaders": true
        }
        ```
        
        #### Get Table Rows
        ```bash
        GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/tables('Table1')/rows
        ```
        
        #### Add Table Row
        ```bash
        POST /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/tables('Table1')/rows
        Content-Type: application/json
        
        {
          "values": [["Data1", "Data2", "Data3"]]
        }
        ```
        
        #### Delete Table Row
        ```bash
        DELETE /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/tables('Table1')/rows/itemAt(index=0)
        ```
        
        #### Get Table Columns
        ```bash
        GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/tables('Table1')/columns
        ```
        
        ### Named Items
        
        #### List Named Items
        ```bash
        GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/names
        ```
        
        ### Charts
        
        #### List Charts
        ```bash
        GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/charts
        ```
        
        #### Add Chart
        ```bash
        POST /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/charts/add
        Content-Type: application/json
        
        {
          "type": "ColumnClustered",
          "sourceData": "A1:C4",
          "seriesBy": "Auto"
        }
        ```
        
        ## Notes
        
        - Only `.xlsx` files are supported (not legacy `.xls`)
        - Use path-based access (`/drive/root:/{path}:`) or ID-based access (`/drive/items/{id}`)
        - Table/worksheet IDs with `{` and `}` must be URL-encoded
        - Sessions improve performance for multiple operations
        - Sessions expire after ~5 minutes (persistent) or ~7 minutes (non-persistent)
        - Range addresses use A1 notation
        
        ## Resources
        
        - [Microsoft Graph Excel API](https://learn.microsoft.com/en-us/graph/api/resources/excel)
        - [Excel Workbook Resource](https://learn.microsoft.com/en-us/graph/api/resources/workbook)
        - [Excel Worksheet Resource](https://learn.microsoft.com/en-us/graph/api/resources/worksheet)
        - [Excel Range Resource](https://learn.microsoft.com/en-us/graph/api/resources/range)
        
    • microsoft-teams
      • README.md 5.9 KB
        # Microsoft Teams Routing Reference
        
        **App name:** `microsoft-teams`
        **Base URL proxied:** `graph.microsoft.com`
        
        ## API Path Pattern
        
        ```
        /microsoft-teams/v1.0/{resource}
        ```
        
        ## Common Endpoints
        
        ### Teams
        
        #### List Joined Teams
        ```bash
        GET /microsoft-teams/v1.0/me/joinedTeams
        ```
        
        #### Get Team
        ```bash
        GET /microsoft-teams/v1.0/teams/{team-id}
        ```
        
        ### Channels
        
        #### List Channels
        ```bash
        GET /microsoft-teams/v1.0/teams/{team-id}/channels
        ```
        
        #### List Private Channels
        ```bash
        GET /microsoft-teams/v1.0/teams/{team-id}/channels?$filter=membershipType eq 'private'
        ```
        
        #### Get Channel
        ```bash
        GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}
        ```
        
        #### Create Channel
        ```bash
        POST /microsoft-teams/v1.0/teams/{team-id}/channels
        Content-Type: application/json
        
        {
          "displayName": "Channel Name",
          "description": "Description",
          "membershipType": "standard"
        }
        ```
        
        #### Update Channel
        ```bash
        PATCH /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}
        Content-Type: application/json
        
        {
          "description": "Updated description"
        }
        ```
        
        #### Delete Channel
        ```bash
        DELETE /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}
        ```
        
        ### Channel Members
        
        #### List Channel Members
        ```bash
        GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/members
        ```
        
        ### Messages
        
        #### List Channel Messages
        ```bash
        GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages
        ```
        
        #### Send Message
        ```bash
        POST /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages
        Content-Type: application/json
        
        {
          "body": {
            "content": "Hello World"
          }
        }
        ```
        
        #### Send HTML Message
        ```bash
        POST /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages
        Content-Type: application/json
        
        {
          "body": {
            "contentType": "html",
            "content": "<p>Formatted message</p>"
          }
        }
        ```
        
        #### Reply to Message
        ```bash
        POST /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages/{message-id}/replies
        Content-Type: application/json
        
        {
          "body": {
            "content": "Reply content"
          }
        }
        ```
        
        #### List Message Replies
        ```bash
        GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages/{message-id}/replies
        ```
        
        #### Edit Message
        ```bash
        PATCH /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages/{message-id}
        Content-Type: application/json
        
        {
          "body": {
            "content": "Updated message content"
          }
        }
        ```
        
        ### Team Members
        
        #### List Members
        ```bash
        GET /microsoft-teams/v1.0/teams/{team-id}/members
        ```
        
        ### Presence
        
        #### Get User Presence
        ```bash
        GET /microsoft-teams/v1.0/me/presence
        ```
        
        #### Get User Presence by ID
        ```bash
        GET /microsoft-teams/v1.0/users/{user-id}/presence
        ```
        
        ### Tabs
        
        #### List Channel Tabs
        ```bash
        GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/tabs
        ```
        
        ### Apps
        
        #### List Installed Apps
        ```bash
        GET /microsoft-teams/v1.0/teams/{team-id}/installedApps
        ```
        
        ### Online Meetings
        
        #### Create Meeting
        ```bash
        POST /microsoft-teams/v1.0/me/onlineMeetings
        Content-Type: application/json
        
        {
          "subject": "Team Sync",
          "startDateTime": "2026-02-18T10:00:00Z",
          "endDateTime": "2026-02-18T11:00:00Z"
        }
        ```
        
        #### Create Meeting with Attendees
        ```bash
        POST /microsoft-teams/v1.0/me/onlineMeetings
        Content-Type: application/json
        
        {
          "subject": "Project Review",
          "startDateTime": "2026-02-18T14:00:00Z",
          "endDateTime": "2026-02-18T15:00:00Z",
          "participants": {
            "attendees": [
              {
                "upn": "attendee@example.com",
                "role": "attendee"
              }
            ]
          }
        }
        ```
        
        #### Get Meeting
        ```bash
        GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}
        ```
        
        #### Find Meeting by Join URL
        ```bash
        GET /microsoft-teams/v1.0/me/onlineMeetings?$filter=JoinWebUrl eq '{encoded-join-url}'
        ```
        
        #### Delete Meeting
        ```bash
        DELETE /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}
        ```
        
        #### List Calendar Events
        ```bash
        GET /microsoft-teams/v1.0/me/calendar/events?$top=10
        ```
        
        #### List Meeting Recordings
        ```bash
        GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/recordings
        ```
        
        #### Get Meeting Recording
        ```bash
        GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/recordings/{recording-id}
        ```
        
        #### List Meeting Transcripts
        ```bash
        GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/transcripts
        ```
        
        #### Get Meeting Transcript
        ```bash
        GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/transcripts/{transcript-id}
        ```
        
        #### List Attendance Reports
        ```bash
        GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/attendanceReports
        ```
        
        #### Get Attendance Report
        ```bash
        GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/attendanceReports/{report-id}
        ```
        
        ### Chats
        
        #### List Chats
        ```bash
        GET /microsoft-teams/v1.0/me/chats
        ```
        
        #### Get Chat
        ```bash
        GET /microsoft-teams/v1.0/chats/{chat-id}
        ```
        
        #### List Chat Messages
        ```bash
        GET /microsoft-teams/v1.0/chats/{chat-id}/messages
        ```
        
        #### Send Chat Message
        ```bash
        POST /microsoft-teams/v1.0/chats/{chat-id}/messages
        Content-Type: application/json
        
        {
          "body": {
            "content": "Hello"
          }
        }
        ```
        
        ## OData Query Parameters
        
        - `$top=10` - Limit results
        - `$skip=20` - Skip results
        - `$select=id,displayName` - Select specific fields
        - `$filter=membershipType eq 'private'` - Filter results
        - `$orderby=displayName` - Sort results
        
        ## Notes
        
        - Uses Microsoft Graph API (`graph.microsoft.com`)
        - Channel IDs include thread suffix: `19:xxx@thread.tacv2`
        - Message body content types: `text` or `html`
        - Channel membership types: `standard`, `private`, `shared`
        - Supports OData query parameters for filtering and pagination
        - Meeting recordings/transcripts available after meeting ends
        
        ## Resources
        
        - [Microsoft Teams API Overview](https://learn.microsoft.com/en-us/graph/api/resources/teams-api-overview)
        - [Microsoft Graph API Reference](https://learn.microsoft.com/en-us/graph/api/overview)
        - [Channel Resource](https://learn.microsoft.com/en-us/graph/api/resources/channel)
        - [ChatMessage Resource](https://learn.microsoft.com/en-us/graph/api/resources/chatmessage)
        
    • microsoft-to-do
      • README.md 3.6 KB
        # Microsoft To Do Routing Reference
        
        **App name:** `microsoft-to-do`
        **Base URL proxied:** `graph.microsoft.com`
        
        ## API Path Pattern
        
        ```
        /microsoft-to-do/v1.0/me/todo/{resource}
        ```
        
        All Microsoft To Do endpoints use the Microsoft Graph API under the `/me/todo/` path.
        
        ## Common Endpoints
        
        ### Task Lists
        
        #### List All Task Lists
        ```bash
        GET /microsoft-to-do/v1.0/me/todo/lists
        ```
        
        #### Get Task List
        ```bash
        GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}
        ```
        
        #### Create Task List
        ```bash
        POST /microsoft-to-do/v1.0/me/todo/lists
        Content-Type: application/json
        
        {
          "displayName": "My New List"
        }
        ```
        
        #### Update Task List
        ```bash
        PATCH /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}
        Content-Type: application/json
        
        {
          "displayName": "Updated List Name"
        }
        ```
        
        #### Delete Task List
        ```bash
        DELETE /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}
        ```
        
        ### Tasks
        
        #### List Tasks
        ```bash
        GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks
        ```
        
        #### Get Task
        ```bash
        GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}
        ```
        
        #### Create Task
        ```bash
        POST /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks
        Content-Type: application/json
        
        {
          "title": "New Task",
          "importance": "high",
          "status": "notStarted",
          "dueDateTime": {
            "dateTime": "2024-12-31T17:00:00",
            "timeZone": "UTC"
          }
        }
        ```
        
        #### Update Task
        ```bash
        PATCH /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}
        Content-Type: application/json
        
        {
          "status": "completed"
        }
        ```
        
        #### Delete Task
        ```bash
        DELETE /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}
        ```
        
        ### Checklist Items
        
        #### List Checklist Items
        ```bash
        GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/checklistItems
        ```
        
        #### Create Checklist Item
        ```bash
        POST /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/checklistItems
        Content-Type: application/json
        
        {
          "displayName": "Subtask name"
        }
        ```
        
        #### Update Checklist Item
        ```bash
        PATCH /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/checklistItems/{checklistItemId}
        Content-Type: application/json
        
        {
          "isChecked": true
        }
        ```
        
        #### Delete Checklist Item
        ```bash
        DELETE /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/checklistItems/{checklistItemId}
        ```
        
        ### Linked Resources
        
        #### List Linked Resources
        ```bash
        GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/linkedResources
        ```
        
        #### Create Linked Resource
        ```bash
        POST /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/linkedResources
        Content-Type: application/json
        
        {
          "webUrl": "https://example.com/item",
          "applicationName": "MyApp",
          "displayName": "Related Item"
        }
        ```
        
        #### Delete Linked Resource
        ```bash
        DELETE /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/linkedResources/{linkedResourceId}
        ```
        
        ## Notes
        
        - Task list IDs and task IDs are opaque base64-encoded strings
        - Timestamps use ISO 8601 format in UTC by default
        - The `dateTimeTimeZone` type requires both `dateTime` and `timeZone` fields
        - Task `status` values: `notStarted`, `inProgress`, `completed`, `waitingOnOthers`, `deferred`
        - Task `importance` values: `low`, `normal`, `high`
        - Supports OData query parameters: `$select`, `$filter`, `$orderby`, `$top`, `$skip`
        - Pagination uses `@odata.nextLink` for continuation
        
        ## Resources
        
        - [Microsoft To Do API Overview](https://learn.microsoft.com/en-us/graph/api/resources/todo-overview)
        - [todoTaskList Resource](https://learn.microsoft.com/en-us/graph/api/resources/todotasklist)
        - [todoTask Resource](https://learn.microsoft.com/en-us/graph/api/resources/todotask)
        
    • monday
      • README.md 4.4 KB
        # Monday.com Routing Reference
        
        **App name:** `monday`
        **Base URL proxied:** `api.monday.com`
        
        ## API Type
        
        Monday.com uses a GraphQL API exclusively. All requests are POST requests to the `/v2` endpoint.
        
        ## API Path Pattern
        
        ```
        /monday/v2
        ```
        
        All operations use POST with a JSON body containing the `query` field.
        
        ## Common Operations
        
        ### Get Current User
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "{ me { id name email } }"
        }
        ```
        
        ### List Workspaces
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "{ workspaces(limit: 20) { id name kind } }"
        }
        ```
        
        ### List Boards
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "{ boards(limit: 20) { id name state board_kind workspace { id name } } }"
        }
        ```
        
        ### Get Board with Items
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "{ boards(ids: [BOARD_ID]) { id name columns { id title type } groups { id title } items_page(limit: 50) { cursor items { id name state column_values { id text } } } } }"
        }
        ```
        
        ### Create Board
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "mutation { create_board(board_name: \"New Board\", board_kind: public) { id name } }"
        }
        ```
        
        ### Update Board
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "mutation { update_board(board_id: BOARD_ID, board_attribute: description, new_value: \"Description\") }"
        }
        ```
        
        ### Delete Board
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "mutation { delete_board(board_id: BOARD_ID) { id } }"
        }
        ```
        
        ### Get Items by ID
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "{ items(ids: [ITEM_ID]) { id name created_at state board { id name } group { id title } column_values { id text value } } }"
        }
        ```
        
        ### Create Item
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "mutation { create_item(board_id: BOARD_ID, group_id: \"GROUP_ID\", item_name: \"New item\") { id name } }"
        }
        ```
        
        ### Create Item with Column Values
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "mutation { create_item(board_id: BOARD_ID, group_id: \"GROUP_ID\", item_name: \"Task\", column_values: \"{\\\"status\\\": {\\\"label\\\": \\\"Working on it\\\"}}\") { id name } }"
        }
        ```
        
        ### Update Item
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "mutation { change_simple_column_value(board_id: BOARD_ID, item_id: ITEM_ID, column_id: \"name\", value: \"Updated name\") { id name } }"
        }
        ```
        
        ### Delete Item
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "mutation { delete_item(item_id: ITEM_ID) { id } }"
        }
        ```
        
        ### Create Column
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "mutation { create_column(board_id: BOARD_ID, title: \"Status\", column_type: status) { id title type } }"
        }
        ```
        
        ### Create Group
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "mutation { create_group(board_id: BOARD_ID, group_name: \"New Group\") { id title } }"
        }
        ```
        
        ### List Users
        ```bash
        POST /monday/v2
        Content-Type: application/json
        
        {
          "query": "{ users(limit: 50) { id name email } }"
        }
        ```
        
        ## Pagination
        
        Monday.com uses cursor-based pagination for items:
        
        ```bash
        # First page
        POST /monday/v2
        {
          "query": "{ boards(ids: [BOARD_ID]) { items_page(limit: 50) { cursor items { id name } } } }"
        }
        
        # Next page
        POST /monday/v2
        {
          "query": "{ next_items_page(cursor: \"CURSOR_VALUE\", limit: 50) { cursor items { id name } } }"
        }
        ```
        
        ## Notes
        
        - Monday.com uses GraphQL exclusively (no REST API)
        - Board IDs, item IDs, and user IDs are numeric strings
        - Column IDs are alphanumeric (e.g., `color_mm09e48w`)
        - Group IDs are alphanumeric (e.g., `group_mm0939df`, `topics`)
        - Column values must be passed as JSON strings
        - Board kinds: `public`, `private`, `share`
        - Board states: `active`, `archived`, `deleted`, `all`
        - Column types: `status`, `text`, `numbers`, `date`, `people`, `dropdown`, `checkbox`, `email`, `phone`, `link`, `timeline`, `tags`, `rating`
        - Default limit is 25, maximum is 100
        - Cursors are valid for 60 minutes
        
        ## Resources
        
        - [Monday.com API Basics](https://developer.monday.com/api-reference/docs/basics)
        - [GraphQL Overview](https://developer.monday.com/api-reference/docs/introduction-to-graphql)
        - [Boards Reference](https://developer.monday.com/api-reference/reference/boards)
        - [Items Reference](https://developer.monday.com/api-reference/reference/items)
        - [Columns Reference](https://developer.monday.com/api-reference/reference/columns)
        
    • motion
      • README.md 2.7 KB
        # Motion Routing Reference
        
        **App name:** `motion`
        **Base URL proxied:** `api.usemotion.com`
        
        ## API Path Pattern
        
        ```
        /motion/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /motion/v1/users/me
        ```
        
        ### List Workspaces
        ```bash
        GET /motion/v1/workspaces
        ```
        
        ### List Tasks
        ```bash
        GET /motion/v1/tasks
        GET /motion/v1/tasks?workspaceId={workspaceId}
        GET /motion/v1/tasks?projectId={projectId}
        ```
        
        ### Get Task
        ```bash
        GET /motion/v1/tasks/{taskId}
        ```
        
        ### Create Task
        ```bash
        POST /motion/v1/tasks
        Content-Type: application/json
        
        {
          "name": "Task name",
          "workspaceId": "ws_xxx",
          "priority": "HIGH",
          "duration": 30
        }
        ```
        
        ### Update Task
        ```bash
        PATCH /motion/v1/tasks/{taskId}
        Content-Type: application/json
        
        {
          "name": "Updated name",
          "priority": "LOW"
        }
        ```
        
        ### Delete Task
        ```bash
        DELETE /motion/v1/tasks/{taskId}
        ```
        
        ### Move Task
        ```bash
        POST /motion/v1/tasks/{taskId}/move
        Content-Type: application/json
        
        {
          "workspaceId": "ws_new"
        }
        ```
        
        ### Unassign Task
        ```bash
        POST /motion/v1/tasks/{taskId}/unassign
        ```
        
        ### List Projects
        ```bash
        GET /motion/v1/projects?workspaceId={workspaceId}
        ```
        
        ### Get Project
        ```bash
        GET /motion/v1/projects/{projectId}
        ```
        
        ### Create Project
        ```bash
        POST /motion/v1/projects
        Content-Type: application/json
        
        {
          "name": "Project name",
          "workspaceId": "ws_xxx",
          "priority": "HIGH"
        }
        ```
        
        ### List Users
        ```bash
        GET /motion/v1/users?workspaceId={workspaceId}
        ```
        
        ### List Comments
        ```bash
        GET /motion/v1/comments?taskId={taskId}
        ```
        
        ### Create Comment
        ```bash
        POST /motion/v1/comments
        Content-Type: application/json
        
        {
          "taskId": "tk_xxx",
          "content": "Comment text"
        }
        ```
        
        ### List Recurring Tasks
        ```bash
        GET /motion/v1/recurring-tasks?workspaceId={workspaceId}
        ```
        
        ### Create Recurring Task
        ```bash
        POST /motion/v1/recurring-tasks
        Content-Type: application/json
        
        {
          "name": "Weekly review",
          "workspaceId": "ws_xxx",
          "frequency": "weekly"
        }
        ```
        
        ### Delete Recurring Task
        ```bash
        DELETE /motion/v1/recurring-tasks/{recurringTaskId}
        ```
        
        ### List Schedules
        ```bash
        GET /motion/v1/schedules
        ```
        
        ### List Statuses
        ```bash
        GET /motion/v1/statuses?workspaceId={workspaceId}
        ```
        
        ## Notes
        
        - Workspace IDs start with `ws_`
        - Task IDs start with `tk_`
        - Project IDs start with `pr_`
        - Timestamps are in ISO 8601 format
        - Priority values: ASAP, HIGH, MEDIUM, LOW
        - Deadline types: HARD, SOFT, NONE
        - Cursor-based pagination with `cursor` query parameter
        - `workspaceId` is required for listing projects, users, recurring tasks, and statuses
        
        ## Resources
        
        - [Motion API Documentation](https://docs.usemotion.com/)
        - [Motion API Reference](https://docs.usemotion.com/api-reference)
        - [Motion Cookbooks](https://docs.usemotion.com/cookbooks/getting-started)
        
    • netlify
      • README.md 3.6 KB
        # Netlify Routing Reference
        
        **App name:** `netlify`
        **Base URL proxied:** `api.netlify.com`
        
        ## API Path Pattern
        
        ```
        /netlify/api/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### User
        
        ```bash
        GET /netlify/api/v1/user
        ```
        
        ### Accounts
        
        ```bash
        GET /netlify/api/v1/accounts
        GET /netlify/api/v1/accounts/{account_id}
        POST /netlify/api/v1/accounts
        PUT /netlify/api/v1/accounts/{account_id}
        ```
        
        ### Sites
        
        ```bash
        GET /netlify/api/v1/sites
        GET /netlify/api/v1/sites/{site_id}
        POST /netlify/api/v1/sites
        PUT /netlify/api/v1/sites/{site_id}
        DELETE /netlify/api/v1/sites/{site_id}
        PUT /netlify/api/v1/sites/{site_id}/disable
        PUT /netlify/api/v1/sites/{site_id}/enable
        GET /netlify/api/v1/{account_slug}/sites
        POST /netlify/api/v1/{account_slug}/sites
        ```
        
        ### Deploys
        
        ```bash
        GET /netlify/api/v1/sites/{site_id}/deploys
        GET /netlify/api/v1/deploys/{deploy_id}
        POST /netlify/api/v1/sites/{site_id}/deploys
        POST /netlify/api/v1/sites/{site_id}/deploys/{deploy_id}/cancel
        POST /netlify/api/v1/sites/{site_id}/deploys/{deploy_id}/restore
        POST /netlify/api/v1/deploys/{deploy_id}/lock
        POST /netlify/api/v1/deploys/{deploy_id}/unlock
        ```
        
        ### Builds
        
        ```bash
        GET /netlify/api/v1/sites/{site_id}/builds
        GET /netlify/api/v1/builds/{build_id}
        POST /netlify/api/v1/sites/{site_id}/builds
        ```
        
        ### Environment Variables
        
        Environment variables are managed at the account level with optional site scope.
        
        ```bash
        GET /netlify/api/v1/accounts/{account_id}/env?site_id={site_id}
        POST /netlify/api/v1/accounts/{account_id}/env?site_id={site_id}
        PUT /netlify/api/v1/accounts/{account_id}/env/{key}?site_id={site_id}
        DELETE /netlify/api/v1/accounts/{account_id}/env/{key}?site_id={site_id}
        ```
        
        ### DNS Zones
        
        ```bash
        GET /netlify/api/v1/dns_zones
        GET /netlify/api/v1/dns_zones/{zone_id}
        POST /netlify/api/v1/dns_zones
        DELETE /netlify/api/v1/dns_zones/{zone_id}
        ```
        
        ### DNS Records
        
        ```bash
        GET /netlify/api/v1/dns_zones/{zone_id}/dns_records
        POST /netlify/api/v1/dns_zones/{zone_id}/dns_records
        DELETE /netlify/api/v1/dns_zones/{zone_id}/dns_records/{record_id}
        ```
        
        ### Build Hooks
        
        ```bash
        GET /netlify/api/v1/sites/{site_id}/build_hooks
        POST /netlify/api/v1/sites/{site_id}/build_hooks
        DELETE /netlify/api/v1/hooks/{hook_id}
        ```
        
        ### Webhooks
        
        ```bash
        GET /netlify/api/v1/hooks?site_id={site_id}
        POST /netlify/api/v1/hooks?site_id={site_id}
        PUT /netlify/api/v1/hooks/{hook_id}
        DELETE /netlify/api/v1/hooks/{hook_id}
        ```
        
        ### Forms & Submissions
        
        ```bash
        GET /netlify/api/v1/sites/{site_id}/forms
        GET /netlify/api/v1/forms/{form_id}/submissions
        DELETE /netlify/api/v1/submissions/{submission_id}
        ```
        
        ### Team Members
        
        ```bash
        GET /netlify/api/v1/{account_slug}/members
        POST /netlify/api/v1/{account_slug}/members
        GET /netlify/api/v1/{account_slug}/members/{member_id}
        PUT /netlify/api/v1/{account_slug}/members/{member_id}
        DELETE /netlify/api/v1/{account_slug}/members/{member_id}
        ```
        
        ### SSL/TLS
        
        ```bash
        GET /netlify/api/v1/sites/{site_id}/ssl
        POST /netlify/api/v1/sites/{site_id}/ssl
        ```
        
        ### Functions
        
        ```bash
        GET /netlify/api/v1/sites/{site_id}/functions
        ```
        
        ### Services
        
        ```bash
        GET /netlify/api/v1/services
        GET /netlify/api/v1/services/{service_id}
        ```
        
        ## Notes
        
        - All endpoints use the `/api/v1/` prefix
        - Site IDs are UUIDs (e.g., `d37d1ce4-5444-40f5-a4ca-a2c40a8b6835`)
        - Account slugs are URL-friendly team names (e.g., `my-team-slug`)
        - Pagination via `page` and `per_page` query parameters
        - Environment variable contexts: `all`, `production`, `deploy-preview`, `branch-deploy`, `dev`
        - Build hooks return a URL that can be POSTed to trigger builds externally
        
        ## Resources
        
        - [Netlify API Documentation](https://docs.netlify.com/api/get-started/)
        - [Netlify OpenAPI Spec](https://open-api.netlify.com)
        
    • notion
      • README.md 7.9 KB
        # Notion Routing Reference
        
        **App name:** `notion`
        **Base URL proxied:** `api.notion.com`
        
        ## Required Headers
        
        All Notion API requests require:
        ```
        Notion-Version: 2025-09-03
        ```
        
        ## API Path Pattern
        
        ```
        /notion/v1/{endpoint}
        ```
        
        ## Key Concept: Databases vs Data Sources
        
        In API version 2025-09-03, databases and data sources are separate concepts:
        
        | Concept | Description | Use For |
        |---------|-------------|---------|
        | **Database** | Container that can hold multiple data sources | Creating databases, getting data_source IDs |
        | **Data Source** | Schema and data within a database | Querying, updating schema, updating properties |
        
        Most existing databases have one data source. Use `GET /databases/{id}` to get the `data_source_id`, then use `/data_sources/` endpoints for all operations.
        
        ## Common Endpoints
        
        ### Search
        
        Search for pages:
        ```bash
        POST /notion/v1/search
        Content-Type: application/json
        Notion-Version: 2025-09-03
        
        {
          "query": "meeting notes",
          "filter": {"property": "object", "value": "page"}
        }
        ```
        
        Search for data sources:
        ```bash
        POST /notion/v1/search
        Content-Type: application/json
        Notion-Version: 2025-09-03
        
        {
          "filter": {"property": "object", "value": "data_source"}
        }
        ```
        
        With pagination:
        ```bash
        POST /notion/v1/search
        Content-Type: application/json
        Notion-Version: 2025-09-03
        
        {
          "page_size": 10,
          "start_cursor": "CURSOR_FROM_PREVIOUS_RESPONSE"
        }
        ```
        
        ### Data Sources
        
        Use data source endpoints for querying, getting schema, and updates.
        
        #### Get Data Source
        ```bash
        GET /notion/v1/data_sources/{dataSourceId}
        Notion-Version: 2025-09-03
        ```
        
        Returns full schema with `properties` field.
        
        #### Query Data Source
        ```bash
        POST /notion/v1/data_sources/{dataSourceId}/query
        Content-Type: application/json
        Notion-Version: 2025-09-03
        
        {
          "filter": {
            "property": "Status",
            "select": {"equals": "Active"}
          },
          "sorts": [
            {"property": "Created", "direction": "descending"}
          ],
          "page_size": 100
        }
        ```
        
        #### Update Data Source (title, schema, properties)
        ```bash
        PATCH /notion/v1/data_sources/{dataSourceId}
        Content-Type: application/json
        Notion-Version: 2025-09-03
        
        {
          "title": [{"type": "text", "text": {"content": "Updated Title"}}],
          "properties": {
            "NewColumn": {"rich_text": {}}
          }
        }
        ```
        
        ### Databases
        
        Database endpoints are only needed for **creating** databases and **discovering** data source IDs.
        
        #### Get Database (to find data_source_id)
        ```bash
        GET /notion/v1/databases/{databaseId}
        Notion-Version: 2025-09-03
        ```
        
        Response includes `data_sources` array:
        ```json
        {
          "id": "database-id",
          "object": "database",
          "data_sources": [{"id": "data-source-id", "name": "Database Name"}]
        }
        ```
        
        **Note:** This endpoint returns `properties: null`. Use `GET /data_sources/{id}` to get the schema.
        
        #### Create Database
        ```bash
        POST /notion/v1/databases
        Content-Type: application/json
        Notion-Version: 2025-09-03
        
        {
          "parent": {"type": "page_id", "page_id": "PARENT_PAGE_ID"},
          "title": [{"type": "text", "text": {"content": "New Database"}}],
          "properties": {
            "Name": {"title": {}},
            "Status": {"select": {"options": [{"name": "Active"}, {"name": "Done"}]}}
          }
        }
        ```
        
        **Important:** Cannot create databases via `/data_sources` endpoint.
        
        ### Pages
        
        #### Get Page
        ```bash
        GET /notion/v1/pages/{pageId}
        Notion-Version: 2025-09-03
        ```
        
        #### Create Page in Data Source
        Use `data_source_id` (not `database_id`) as parent:
        ```bash
        POST /notion/v1/pages
        Content-Type: application/json
        Notion-Version: 2025-09-03
        
        {
          "parent": {"data_source_id": "DATA_SOURCE_ID"},
          "properties": {
            "Name": {"title": [{"text": {"content": "New Page"}}]},
            "Status": {"select": {"name": "Active"}}
          }
        }
        ```
        
        #### Create Child Page (under another page)
        ```bash
        POST /notion/v1/pages
        Content-Type: application/json
        Notion-Version: 2025-09-03
        
        {
          "parent": {"page_id": "PARENT_PAGE_ID"},
          "properties": {
            "title": {"title": [{"text": {"content": "Child Page"}}]}
          }
        }
        ```
        
        #### Update Page Properties
        ```bash
        PATCH /notion/v1/pages/{pageId}
        Content-Type: application/json
        Notion-Version: 2025-09-03
        
        {
          "properties": {
            "Status": {"select": {"name": "Done"}}
          }
        }
        ```
        
        #### Archive Page
        ```bash
        PATCH /notion/v1/pages/{pageId}
        Content-Type: application/json
        Notion-Version: 2025-09-03
        
        {
          "archived": true
        }
        ```
        
        ### Blocks
        
        #### Get Block
        ```bash
        GET /notion/v1/blocks/{blockId}
        Notion-Version: 2025-09-03
        ```
        
        #### Get Block Children
        ```bash
        GET /notion/v1/blocks/{blockId}/children
        Notion-Version: 2025-09-03
        ```
        
        #### Append Block Children
        ```bash
        PATCH /notion/v1/blocks/{blockId}/children
        Content-Type: application/json
        Notion-Version: 2025-09-03
        
        {
          "children": [
            {
              "object": "block",
              "type": "paragraph",
              "paragraph": {
                "rich_text": [{"type": "text", "text": {"content": "New paragraph"}}]
              }
            },
            {
              "object": "block",
              "type": "heading_2",
              "heading_2": {
                "rich_text": [{"type": "text", "text": {"content": "Heading"}}]
              }
            }
          ]
        }
        ```
        
        #### Update Block
        ```bash
        PATCH /notion/v1/blocks/{blockId}
        Content-Type: application/json
        Notion-Version: 2025-09-03
        
        {
          "paragraph": {
            "rich_text": [{"text": {"content": "Updated text"}}]
          }
        }
        ```
        
        #### Delete Block
        ```bash
        DELETE /notion/v1/blocks/{blockId}
        Notion-Version: 2025-09-03
        ```
        
        ### Users
        
        #### List Users
        ```bash
        GET /notion/v1/users
        Notion-Version: 2025-09-03
        ```
        
        #### Get User by ID
        ```bash
        GET /notion/v1/users/{userId}
        Notion-Version: 2025-09-03
        ```
        
        #### Get Current User (Bot)
        ```bash
        GET /notion/v1/users/me
        Notion-Version: 2025-09-03
        ```
        
        ## Filter Operators
        
        - `equals`, `does_not_equal`
        - `contains`, `does_not_contain`
        - `starts_with`, `ends_with`
        - `is_empty`, `is_not_empty`
        - `greater_than`, `less_than`, `greater_than_or_equal_to`, `less_than_or_equal_to`
        
        ## Block Types
        
        Common block types for appending:
        - `paragraph` - Text paragraph
        - `heading_1`, `heading_2`, `heading_3` - Headings
        - `bulleted_list_item`, `numbered_list_item` - List items
        - `to_do` - Checkbox item
        - `code` - Code block
        - `quote` - Quote block
        - `divider` - Horizontal divider
        
        ## Migration from Older API Versions
        
        | Old (2022-06-28) | New (2025-09-03) |
        |------------------|------------------|
        | `POST /databases/{id}/query` | `POST /data_sources/{id}/query` |
        | `GET /databases/{id}` for schema | `GET /data_sources/{id}` for schema |
        | `PATCH /databases/{id}` for schema | `PATCH /data_sources/{id}` for schema |
        | Parent: `{"database_id": "..."}` | Parent: `{"data_source_id": "..."}` |
        | Search filter: `"database"` | Search filter: `"data_source"` |
        
        ## Notes
        
        - Use `GET /databases/{id}` to discover `data_source_id`, then use `/data_sources/` for all operations
        - Creating databases still requires `POST /databases` endpoint
        - Parent objects for create database require `type` field: `{"type": "page_id", "page_id": "..."}`
        - All IDs are UUIDs (with or without hyphens)
        - Delete blocks returns the block with `archived: true`
        
        ## Resources
        
        - [API Introduction](https://developers.notion.com/reference/intro)
        - [Search](https://developers.notion.com/reference/post-search.md)
        - [Query Database](https://developers.notion.com/reference/post-database-query.md)
        - [Get Database](https://developers.notion.com/reference/retrieve-a-database.md)
        - [Create Database](https://developers.notion.com/reference/create-a-database.md)
        - [Get Page](https://developers.notion.com/reference/retrieve-a-page.md)
        - [Create Page](https://developers.notion.com/reference/post-page.md)
        - [Update Page](https://developers.notion.com/reference/patch-page.md)
        - [Get Block Children](https://developers.notion.com/reference/get-block-children.md)
        - [Append Block Children](https://developers.notion.com/reference/patch-block-children.md)
        - [List Users](https://developers.notion.com/reference/get-users.md)
        - [Filter Reference](https://developers.notion.com/reference/post-database-query-filter.md)
        - [LLM Reference](https://developers.notion.com/llms.txt)
        - [Version Reference](https://developers.notion.com/guides/get-started/upgrade-guide-2025-09-03)
    • notion-mcp
      • schemas
        • notion-create-comment.json 17.6 KB
          {
            "name": "notion-create-comment",
            "title": "Create a page comment",
            "description": "Add a comment to a page or specific content.\nCreates a new comment. Provide `page_id` to identify the page, then choose ONE targeting mode:\n- `page_id` alone: Page-level comment on the entire page\n- `page_id` + `selection_with_ellipsis`: Comment on specific block content\n- `discussion_id`: Reply to an existing discussion thread (page_id is still required)\n\nFor content targeting, use `selection_with_ellipsis` with ~10 chars from start and end: \"# Section Ti...tle content\"\n<example description=\"Page-level comment\">\n{\"page_id\": \"uuid\", \"rich_text\": [{\"text\": {\"content\": \"Comment\"}}]}\n</example>\n<example description=\"Comment on specific content\">\n{\"page_id\": \"uuid\", \"selection_with_ellipsis\": \"# Meeting No...es heading\",\n \"rich_text\": [{\"text\": {\"content\": \"Comment on this section\"}}]}\n</example>\n<example description=\"Reply to discussion\">\n{\"page_id\": \"uuid\", \"discussion_id\": \"discussion://pageId/blockId/discussionId\",\n \"rich_text\": [{\"text\": {\"content\": \"Reply\"}}]}\n</example>",
            "inputSchema": {
              "type": "object",
              "properties": {
                "rich_text": {
                  "type": "array",
                  "items": {
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "annotations": {
                            "type": "object",
                            "properties": {
                              "bold": {
                                "type": "boolean"
                              },
                              "italic": {
                                "type": "boolean"
                              },
                              "strikethrough": {
                                "type": "boolean"
                              },
                              "underline": {
                                "type": "boolean"
                              },
                              "code": {
                                "type": "boolean"
                              },
                              "color": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": true,
                            "description": "All rich text objects contain an annotations object that sets the styling for the rich text."
                          }
                        },
                        "additionalProperties": true
                      },
                      {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "text"
                                ]
                              },
                              "text": {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string",
                                    "maxLength": 2000,
                                    "description": "The actual text content of the text."
                                  },
                                  "link": {
                                    "anyOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "url": {
                                            "type": "string",
                                            "description": "The URL of the link."
                                          }
                                        },
                                        "required": [
                                          "url"
                                        ],
                                        "additionalProperties": true
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "An object with information about any inline link in this text, if included."
                                  }
                                },
                                "required": [
                                  "content"
                                ],
                                "additionalProperties": false,
                                "description": "If a rich text object's type value is `text`, then the corresponding text field contains an object including the text content and any inline link."
                              }
                            },
                            "required": [
                              "text"
                            ],
                            "additionalProperties": true
                          },
                          {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "mention"
                                ]
                              },
                              "mention": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "enum": [
                                          "user"
                                        ]
                                      },
                                      "user": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string",
                                            "description": "The ID of the user."
                                          },
                                          "object": {
                                            "type": "string",
                                            "enum": [
                                              "user"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "id"
                                        ],
                                        "additionalProperties": true,
                                        "description": "Details of the user mention."
                                      }
                                    },
                                    "required": [
                                      "user"
                                    ],
                                    "additionalProperties": true
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "enum": [
                                          "date"
                                        ]
                                      },
                                      "date": {
                                        "type": "object",
                                        "properties": {
                                          "start": {
                                            "type": "string",
                                            "format": "date",
                                            "description": "The start date of the date object."
                                          },
                                          "end": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "format": "date"
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ],
                                            "description": "The end date of the date object, if any."
                                          },
                                          "time_zone": {
                                            "type": [
                                              "string",
                                              "null"
                                            ],
                                            "description": "The time zone of the date object, if any. E.g. America/Los_Angeles, Europe/London, etc."
                                          }
                                        },
                                        "required": [
                                          "start"
                                        ],
                                        "additionalProperties": false,
                                        "description": "Details of the date mention."
                                      }
                                    },
                                    "required": [
                                      "date"
                                    ],
                                    "additionalProperties": true
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "enum": [
                                          "page"
                                        ]
                                      },
                                      "page": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string",
                                            "description": "The ID of the page in the mention."
                                          }
                                        },
                                        "required": [
                                          "id"
                                        ],
                                        "additionalProperties": true,
                                        "description": "Details of the page mention."
                                      }
                                    },
                                    "required": [
                                      "page"
                                    ],
                                    "additionalProperties": true
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "enum": [
                                          "database"
                                        ]
                                      },
                                      "database": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string",
                                            "description": "The ID of the database in the mention."
                                          }
                                        },
                                        "required": [
                                          "id"
                                        ],
                                        "additionalProperties": true,
                                        "description": "Details of the database mention."
                                      }
                                    },
                                    "required": [
                                      "database"
                                    ],
                                    "additionalProperties": true
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "enum": [
                                          "template_mention"
                                        ]
                                      },
                                      "template_mention": {
                                        "anyOf": [
                                          {
                                            "type": "object",
                                            "properties": {
                                              "type": {
                                                "type": "string",
                                                "enum": [
                                                  "template_mention_date"
                                                ]
                                              },
                                              "template_mention_date": {
                                                "type": "string",
                                                "enum": [
                                                  "today",
                                                  "now"
                                                ]
                                              }
                                            },
                                            "required": [
                                              "template_mention_date"
                                            ],
                                            "additionalProperties": false
                                          },
                                          {
                                            "type": "object",
                                            "properties": {
                                              "type": {
                                                "type": "string",
                                                "enum": [
                                                  "template_mention_user"
                                                ]
                                              },
                                              "template_mention_user": {
                                                "type": "string",
                                                "enum": [
                                                  "me"
                                                ]
                                              }
                                            },
                                            "required": [
                                              "template_mention_user"
                                            ],
                                            "additionalProperties": false
                                          }
                                        ],
                                        "description": "Details of the template mention."
                                      }
                                    },
                                    "required": [
                                      "template_mention"
                                    ],
                                    "additionalProperties": true
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "enum": [
                                          "custom_emoji"
                                        ]
                                      },
                                      "custom_emoji": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string",
                                            "description": "The ID of the custom emoji."
                                          },
                                          "name": {
                                            "type": "string",
                                            "description": "The name of the custom emoji."
                                          },
                                          "url": {
                                            "type": "string",
                                            "description": "The URL of the custom emoji."
                                          }
                                        },
                                        "required": [
                                          "id"
                                        ],
                                        "additionalProperties": true,
                                        "description": "Details of the custom emoji mention."
                                      }
                                    },
                                    "required": [
                                      "custom_emoji"
                                    ],
                                    "additionalProperties": true
                                  }
                                ],
                                "description": "Mention objects represent an inline mention of a database, date, link preview mention, page, template mention, or user. A mention is created in the Notion UI when a user types `@` followed by the name of the reference."
                              }
                            },
                            "required": [
                              "mention"
                            ],
                            "additionalProperties": true
                          },
                          {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "equation"
                                ]
                              },
                              "equation": {
                                "type": "object",
                                "properties": {
                                  "expression": {
                                    "type": "string",
                                    "description": "A KaTeX compatible string."
                                  }
                                },
                                "required": [
                                  "expression"
                                ],
                                "additionalProperties": true,
                                "description": "Notion supports inline LaTeX equations as rich text objects with a type value of `equation`."
                              }
                            },
                            "required": [
                              "equation"
                            ],
                            "additionalProperties": true
                          }
                        ]
                      }
                    ]
                  },
                  "maxItems": 100,
                  "description": "An array of rich text objects that represent the content of the comment."
                },
                "page_id": {
                  "type": "string",
                  "description": "The ID of the page to comment on (with or without dashes)."
                },
                "discussion_id": {
                  "type": "string",
                  "description": "The ID or URL of an existing discussion to reply to (e.g., discussion://pageId/blockId/discussionId)."
                },
                "selection_with_ellipsis": {
                  "type": "string",
                  "description": "Unique start and end snippet of the content to comment on. DO NOT provide the entire string. Instead, provide up to the first ~10 characters, an ellipsis, and then up to the last ~10 characters. Make sure you provide enough of the start and end snippet to uniquely identify the content. For example: \"# Section heading...last paragraph.\""
                }
              },
              "required": [
                "rich_text",
                "page_id"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • notion-create-database.json 3.4 KB
          {
            "name": "notion-create-database",
            "title": "Create Notion database",
            "description": "Creates a new Notion database using SQL DDL syntax.\nIf no title property provided, \"Name\" is auto-added. Returns Markdown with schema, SQLite definition, and data source ID in <data-source> tag for use with update_data_source and query_data_sources tools.\nThe schema param accepts a CREATE TABLE statement defining columns.\nType syntax:\n- Simple: TITLE, RICH_TEXT, DATE, PEOPLE, CHECKBOX, URL, EMAIL, PHONE_NUMBER, STATUS, FILES\n- SELECT('opt':color, ...) / MULTI_SELECT('opt':color, ...)\n- NUMBER [FORMAT 'dollar'] / FORMULA('expression')\n- RELATION('data_source_id') \u2014 one-way relation\n- RELATION('data_source_id', DUAL) \u2014 two-way relation\n- RELATION('data_source_id', DUAL 'synced_name') \u2014 two-way with synced property name\n- RELATION('data_source_id', DUAL 'synced_name' 'synced_id') \u2014 two-way with synced name and ID (for self-relations)\n- ROLLUP('rel_prop', 'target_prop', 'function')\n- UNIQUE_ID [PREFIX 'X'] / CREATED_TIME / LAST_EDITED_TIME\n- Any column: COMMENT 'description text' Colors: default, gray, brown, orange, yellow, green, blue, purple, pink, red\n\n<example description=\"Minimal\">{\"schema\": \"CREATE TABLE (\"Name\" TITLE)\"}</example>\n<example description=\"Task DB\">{\"title\": \"Tasks\", \"schema\": \"CREATE TABLE (\"Task Name\" TITLE, \"Status\" SELECT('To Do':red, 'Done':green), \"Due Date\" DATE)\"}</example>\n<example description=\"With parent and options\">{\"parent\": {\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\"}, \"title\": \"Projects\", \"schema\": \"CREATE TABLE (\"Name\" TITLE, \"Budget\" NUMBER FORMAT 'dollar', \"Tags\" MULTI_SELECT('eng':blue, 'design':pink), \"Task ID\" UNIQUE_ID PREFIX 'PRJ')\"}</example>\n<example description=\"Self-relation (two-step: create database first, then use its data source ID with update_data_source to add self-relations)\">{\"title\": \"Tasks\", \"schema\": \"CREATE TABLE (\"Name\" TITLE, \"Parent\" RELATION('ds_id', DUAL 'Children' 'children'), \"Children\" RELATION('ds_id', DUAL 'Parent' 'parent'))\"}</example>",
            "inputSchema": {
              "type": "object",
              "properties": {
                "schema": {
                  "type": "string",
                  "description": "SQL DDL CREATE TABLE statement defining the database schema. Column names must be double-quoted, type options use single quotes."
                },
                "parent": {
                  "type": "object",
                  "properties": {
                    "page_id": {
                      "type": "string",
                      "description": "The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "page_id"
                      ]
                    }
                  },
                  "required": [
                    "page_id"
                  ],
                  "additionalProperties": true,
                  "description": "The parent under which to create the new database. If omitted, the database will be created as a private page at the workspace level."
                },
                "title": {
                  "type": "string",
                  "description": "The title of the new database."
                },
                "description": {
                  "type": "string",
                  "description": "The description of the new database."
                }
              },
              "required": [
                "schema"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • notion-create-pages.json 8.7 KB
          {
            "name": "notion-create-pages",
            "title": "Create pages in Markdown",
            "description": "## Overview\nCreates one or more Notion pages, with the specified properties and content.\n## Parent\nAll pages created with a single call to this tool will have the same parent. The parent can be a Notion page (\"page_id\") or data source (\"data_source_id\"). If the parent is omitted, the pages are created as standalone, workspace-level private pages, and the person that created them can organize them later as they see fit.\nIf you have a database URL, ALWAYS pass it to the \"fetch\" tool first to get the schema and URLs of each data source under the database. You can't use the \"database_id\" parent type if the database has more than one data source, so you'll need to identify which \"data_source_id\" to use based on the situation and the results from the fetch tool (data source URLs look like collection://<data_source_id>).\nIf you know the pages should be created under a data source, do NOT use the database ID or URL under the \"page_id\" parameter; \"page_id\" is only for regular, non-database pages.\n## Content\nNotion page content is a string in Notion-flavored Markdown format.\nDon't include the page title at the top of the page's content. Only include it under \"properties\".\n**IMPORTANT**: For the complete Markdown specification, always first fetch the MCP resource at `notion://docs/enhanced-markdown-spec`. Do NOT guess or hallucinate Markdown syntax. This spec is also applicable to other tools like update-page and fetch.\n## Properties\nNotion page properties are a JSON map of property names to SQLite values.\nWhen creating pages in a database:\n- Use the correct property names from the data source schema shown in the fetch tool results.\n- Always include a title property. Data sources always have exactly one title property, but it may not be named \"title\", so, again, rely on the fetched data source schema.\n\nFor pages outside of a database:\n- The only allowed property is \"title\",\twhich is the title of the page in inline markdown format. Always include a \"title\" property.\n\n**IMPORTANT**: Some property types require expanded formats:\n- Date properties: Split into \"date:{property}:start\", \"date:{property}:end\" (optional), and \"date:{property}:is_datetime\" (0 or 1)\n- Place properties: Split into \"place:{property}:name\", \"place:{property}:address\", \"place:{property}:latitude\", \"place:{property}:longitude\", and \"place:{property}:google_place_id\" (optional)\n- Number properties: Use JavaScript numbers (not strings)\n- Checkbox properties: Use \"__YES__\" for checked, \"__NO__\" for unchecked\n\n**Special property naming**: Properties named \"id\" or \"url\" (case insensitive) must be prefixed with \"userDefined:\" (e.g., \"userDefined:URL\", \"userDefined:id\")\n## Templates\nWhen creating a page in a database, you can apply a template to pre-populate it with content and property values. Use the \"fetch\" tool on a database to see available templates in the <templates> section of each data source.\nWhen using a template:\n- Pass the template's ID as \"template_id\" in the page object.\n- Do NOT include \"content\" when using a template, as the template provides it.\n- You can still set \"properties\" alongside the template to override template defaults.\n- Template application is asynchronous. The page is created immediately but starts blank; the template content will appear shortly after.\n\n## Examples\n\t\t<example description=\"Create a page from a database template\">\n\t\t{\n\t\t\t\"parent\": {\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\"},\n\t\t\t\"pages\": [\n\t\t\t\t{\n\t\t\t\t\t\"template_id\": \"a5da15f6-b853-455d-8827-f906fb52db2b\",\n\t\t\t\t\t\"properties\": {\n\t\t\t\t\t\t\"Task Name\": \"New urgent bug\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t\t</example>\n\t\t<example description=\"Create a standalone page with a title and content\">\n\t\t{\n\t\t\t\"pages\": [\n\t\t\t\t{\n\t\t\t\t\t\"properties\": {\"title\": \"Page title\"},\n\t\t\t\t\t\"content\": \"# Section 1 {color=\"blue\"}\nSection 1 content\n<details>\n<summary>Toggle block</summary>\n\tHidden content inside toggle\n</details>\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t\t</example>\n\t\t<example description=\"Create a page under a database's data source\">\n\t\t{\n\t\t\t\"parent\": {\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\"},\n\t\t\t\"pages\": [\n\t\t\t\t{\n\t\t\t\t\t\"properties\": {\n\t\t\t\t\t\t\"Task Name\": \"Task 123\",\n\t\t\t\t\t\t\"Status\": \"In Progress\",\n\t\t\t\t\t\t\"Priority\": 5,\n\t\t\t\t\t\t\"Is Complete\": \"__YES__\",\n\t\t\t\t\t\t\"date:Due Date:start\": \"2024-12-25\",\n\t\t\t\t\t\t\"date:Due Date:is_datetime\": 0\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t\t</example>\n\t\t<example description=\"Create a page with an existing page as a parent\">\n\t\t{\n\t\t\t\"parent\": {\"page_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"},\n\t\t\t\"pages\": [\n\t\t\t\t{\n\t\t\t\t\t\"properties\": {\"title\": \"Page title\"},\n\t\t\t\t\t\"content\": \"# Section 1\nSection 1 content\n# Section 2\nSection 2 content\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t\t</example>",
            "inputSchema": {
              "type": "object",
              "properties": {
                "pages": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "properties": {
                        "type": "object",
                        "additionalProperties": {
                          "type": [
                            "string",
                            "number",
                            "null"
                          ]
                        },
                        "description": "The properties of the new page, which is a JSON map of property names to SQLite values. For pages in a database, use the SQLite schema definition shown in <database>. For pages outside of a database, the only allowed property is \"title\", which is the title of the page and is automatically shown at the top of the page as a large heading."
                      },
                      "content": {
                        "type": "string",
                        "description": "The content of the new page, using Notion Markdown."
                      },
                      "template_id": {
                        "type": "string",
                        "description": "The ID of a template to apply to this page. When specified, do not provide 'content' as the template will provide it. Properties can still be set alongside the template. Get template IDs from the <templates> section in the fetch tool results."
                      }
                    },
                    "additionalProperties": false
                  },
                  "maxItems": 100,
                  "description": "The pages to create."
                },
                "parent": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "page_id": {
                          "type": "string",
                          "description": "The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "page_id"
                          ]
                        }
                      },
                      "required": [
                        "page_id"
                      ],
                      "additionalProperties": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "database_id": {
                          "type": "string",
                          "description": "The ID of the parent database (with or without dashes), for example, 195de9221179449fab8075a27c979105"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "database_id"
                          ]
                        }
                      },
                      "required": [
                        "database_id"
                      ],
                      "additionalProperties": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data_source_id": {
                          "type": "string",
                          "description": "The ID of the parent data source (collection), with or without dashes. For example, f336d0bc-b841-465b-8045-024475c079dd"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "data_source_id"
                          ]
                        }
                      },
                      "required": [
                        "data_source_id"
                      ],
                      "additionalProperties": true
                    }
                  ],
                  "description": "The parent under which the new pages will be created. This can be a page (page_id), a database page (database_id), or a data source/collection under a database (data_source_id). If omitted, the new pages will be created as private pages at the workspace level. Use data_source_id when you have a collection:// URL from the fetch tool."
                }
              },
              "required": [
                "pages"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • notion-duplicate-page.json 927 B
          {
            "name": "notion-duplicate-page",
            "title": "Duplicate Notion page",
            "description": "Duplicate a Notion page. The page must be within the current workspace, and you must have permission to access it. The duplication completes asynchronously, so do not rely on the new page identified by the returned ID or URL to be populated immediately. Let the user know that the duplication is in progress and that they can check back later using the 'fetch' tool or by clicking the returned URL and viewing it in the Notion app.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "page_id": {
                  "type": "string",
                  "description": "The ID of the page to duplicate. This is a v4 UUID, with or without dashes, and can be parsed from a Notion page URL."
                }
              },
              "required": [
                "page_id"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • notion-fetch.json 2.1 KB
          {
            "name": "notion-fetch",
            "title": "Fetch Notion entities",
            "description": "Retrieves details about a Notion entity (page, database, or data source) by URL or ID.\nProvide URL or ID in `id` parameter. Make multiple calls to fetch multiple entities.\nPages use enhanced Markdown format. For the complete specification, fetch the MCP resource at `notion://docs/enhanced-markdown-spec`.\nDatabases return all data sources (collections). Each data source has a unique ID shown in `<data-source url=\"collection://...\">` tags. You can pass a data source ID directly to this tool to fetch details about that specific data source, including its schema and properties. Use data source IDs with update_data_source and query_data_sources tools. Multi-source databases (e.g., with linked sources) will show multiple data sources.\nSet `include_discussions` to true to see discussion counts and inline discussion markers that correlate with the `get_comments` tool. The page output will include a `<page-discussions>` summary tag with discussion count, preview snippets, and `discussion://` URLs that match the discussion IDs returned by `get_comments`.\n<example>{\"id\": \"https://notion.so/workspace/Page-a1b2c3d4e5f67890\"}</example>\n<example>{\"id\": \"12345678-90ab-cdef-1234-567890abcdef\"}</example>\n<example>{\"id\": \"https://myspace.notion.site/Page-Title-abc123def456\"}</example>\n<example>{\"id\": \"page-uuid\", \"include_discussions\": true}</example>\n<example>{\"id\": \"collection://12345678-90ab-cdef-1234-567890abcdef\"}</example>",
            "inputSchema": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The ID or URL of the Notion page, database, or data source to fetch. Supports notion.so URLs, Notion Sites URLs (*.notion.site), raw UUIDs, and data source URLs (collection://...)."
                },
                "include_transcript": {
                  "type": "boolean"
                },
                "include_discussions": {
                  "type": "boolean"
                }
              },
              "required": [
                "id"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • notion-get-comments.json 1.6 KB
          {
            "name": "notion-get-comments",
            "title": "Get page comments",
            "description": "Get comments and discussions from a Notion page.\nReturns discussions with full comment content in XML format. By default, returns page-level discussions only.\nTip: Use the `fetch` tool with `include_discussions: true` first to see where discussions are anchored in the page content, then use this tool to retrieve full discussion threads. The `discussion://` URLs in the fetch output match the discussion IDs returned here.\nParameters:\n- `include_all_blocks`: Include discussions on child blocks (default: false)\n- `include_resolved`: Include resolved discussions (default: false)\n- `discussion_id`: Fetch a specific discussion by ID or URL\n\n<example>{\"page_id\": \"page-uuid\"}</example>\n<example>{\"page_id\": \"page-uuid\", \"include_all_blocks\": true}</example>\n<example>{\"page_id\": \"page-uuid\", \"discussion_id\": \"discussion://pageId/blockId/discussionId\"}</example>",
            "inputSchema": {
              "type": "object",
              "properties": {
                "page_id": {
                  "type": "string",
                  "description": "Identifier for a Notion page."
                },
                "include_resolved": {
                  "type": "boolean"
                },
                "include_all_blocks": {
                  "type": "boolean"
                },
                "discussion_id": {
                  "type": "string",
                  "description": "Fetch a specific discussion by ID or discussion URL (e.g., discussion://pageId/blockId/discussionId)."
                }
              },
              "required": [
                "page_id"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • notion-get-teams.json 863 B
          {
            "name": "notion-get-teams",
            "title": "Get workspace teams",
            "description": "Retrieves a list of teams (teamspaces) in the current workspace. Shows which teams exist, user membership status, IDs, names, and roles.\nTeams are returned split by membership status and limited to a maximum of 10 results.\n<examples>\n1. List all teams (up to the limit of each type): {}\n2. Search for teams by name: {\"query\": \"engineering\"}\n3. Find a specific team: {\"query\": \"Product Design\"}\n</examples>",
            "inputSchema": {
              "type": "object",
              "properties": {
                "query": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100,
                  "description": "Optional search query to filter teams by name (case-insensitive)."
                }
              },
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • notion-get-users.json 1.7 KB
          {
            "name": "notion-get-users",
            "title": "Get users and bots in workspace",
            "description": "Retrieves a list of users in the current workspace. Shows workspace members and guests with their IDs, names, emails (if available), and types (person or bot).\nSupports cursor-based pagination to iterate through all users in the workspace.\n<examples>\n1. List all users (first page): {}\n2. Search for users by name or email: {\"query\": \"john\"}\n3. Get next page of results: {\"start_cursor\": \"abc123\"}\n4. Set custom page size: {\"page_size\": 20}\n5. Fetch a specific user by ID: {\"user_id\": \"00000000-0000-4000-8000-000000000000\"}\n6. Fetch the current user: {\"user_id\": \"self\"}\n</examples>",
            "inputSchema": {
              "type": "object",
              "properties": {
                "query": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100,
                  "description": "Optional search query to filter users by name or email (case-insensitive)."
                },
                "start_cursor": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100,
                  "description": "Cursor for pagination. Use the next_cursor value from the previous response to get the next page."
                },
                "page_size": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 100,
                  "description": "Number of users to return per page (default: 100, max: 100)."
                },
                "user_id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100,
                  "description": "Return only the user matching this ID. Pass \"self\" to fetch the current user."
                }
              },
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • notion-move-pages.json 3.2 KB
          {
            "name": "notion-move-pages",
            "title": "Move Notion pages",
            "description": "Move one or more Notion pages or databases to a new parent.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "page_or_database_ids": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "minItems": 1,
                  "maxItems": 100,
                  "description": "An array of up to 100 page or database IDs to move. IDs are v4 UUIDs and can be supplied with or without dashes (e.g. extracted from a <page> or <database> URL given by the \"search\" or \"fetch\" tool). Data Sources under Databases can't be moved individually."
                },
                "new_parent": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "page_id": {
                          "type": "string",
                          "description": "The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "page_id"
                          ]
                        }
                      },
                      "required": [
                        "page_id"
                      ],
                      "additionalProperties": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "database_id": {
                          "type": "string",
                          "description": "The ID of the parent database (with or without dashes), for example, 195de9221179449fab8075a27c979105"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "database_id"
                          ]
                        }
                      },
                      "required": [
                        "database_id"
                      ],
                      "additionalProperties": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data_source_id": {
                          "type": "string",
                          "description": "The ID of the parent data source (collection), with or without dashes. For example, f336d0bc-b841-465b-8045-024475c079dd"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "data_source_id"
                          ]
                        }
                      },
                      "required": [
                        "data_source_id"
                      ],
                      "additionalProperties": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "workspace"
                          ]
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": true
                    }
                  ],
                  "description": "The new parent under which the pages will be moved. This can be a page, the workspace, a database, or a specific data source under a database when there are multiple. Moving pages to the workspace level adds them as private pages and should rarely be used."
                }
              },
              "required": [
                "page_or_database_ids",
                "new_parent"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • notion-search.json 5.4 KB
          {
            "name": "notion-search",
            "title": "Search Notion and connected sources",
            "description": "Perform a search over:\n- \"internal\": Semantic search over Notion workspace and connected sources (Slack, Google Drive, Github, Jira, Microsoft Teams, Sharepoint, OneDrive, Linear). Supports filtering by creation date and creator.\n- \"user\": Search for users by name or email.\n\nAuto-selects AI search (with connected sources) or workspace search (workspace-only, faster) based on user's access to Notion AI. Use content_search_mode to override.\nUse \"fetch\" tool for full page/database contents after getting search results.\nTo search within a database: First fetch the database to get the data source URL (collection://...) from <data-source url=\"...\"> tags, then use that as data_source_url. For multi-source databases, match by view ID (?v=...) in URL or search all sources separately.\nDon't combine database URL/ID with collection:// prefix for data_source_url. Don't use database URL as page_url.\n\t\t<example description=\"Search with date range filter (only documents created in 2024)\">\n\t\t{\n\t\t\t\"query\": \"quarterly revenue report\",\n\t\t\t\"query_type\": \"internal\",\n\t\t\t\"filters\": {\n\t\t\t\t\"created_date_range\": {\n\t\t\t\t\t\"start_date\": \"2024-01-01\",\n\t\t\t\t\t\"end_date\": \"2025-01-01\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t</example>\n\t\t<example description=\"Teamspace + creator filter\">\n\t\t{\"query\": \"project updates\", \"query_type\": \"internal\", \"teamspace_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"filters\": {\"created_by_user_ids\": [\"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"]}}\n\t\t</example>\n\t\t<example description=\"Database with date + creator filters\">\n\t\t{\"query\": \"design review\", \"data_source_url\": \"collection://f336d0bc-b841-465b-8045-024475c079dd\", \"filters\": {\"created_date_range\": {\"start_date\": \"2024-10-01\"}, \"created_by_user_ids\": [\"a1b2c3d4-e5f6-7890-abcd-ef1234567890\", \"b2c3d4e5-f6a7-8901-bcde-f12345678901\"]}}\n\t\t</example>\n\t\t<example description=\"User search\">\n\t\t{\"query\": \"john@example.com\", \"query_type\": \"user\"}\n\t\t</example>",
            "inputSchema": {
              "type": "object",
              "properties": {
                "query": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Semantic search query over your entire Notion workspace and connected sources (Slack, Google Drive, Github, Jira, Microsoft Teams, Sharepoint, OneDrive, or Linear). For best results, don't provide more than one question per tool call. Use a separate \"search\" tool call for each search you want to perform.\nAlternatively, the query can be a substring or keyword to find users by matching against their name or email address. For example: \"john\" or \"john@example.com\""
                },
                "query_type": {
                  "type": "string",
                  "enum": [
                    "internal",
                    "user"
                  ]
                },
                "content_search_mode": {
                  "type": "string",
                  "enum": [
                    "workspace_search",
                    "ai_search"
                  ]
                },
                "data_source_url": {
                  "type": "string",
                  "description": "Optionally, provide the URL of a Data source to search. This will perform a semantic search over the pages in the Data Source. Note: must be a Data Source, not a Database. <data-source> tags are part of the Notion flavored Markdown format returned by tools like fetch. The full spec is available in the create-pages tool description."
                },
                "page_url": {
                  "type": "string",
                  "description": "Optionally, provide the URL or ID of a page to search within. This will perform a semantic search over the content within and under the specified page. Accepts either a full page URL (e.g. https://notion.so/workspace/Page-Title-1234567890) or just the page ID (UUIDv4) with or without dashes."
                },
                "teamspace_id": {
                  "type": "string",
                  "description": "Optionally, provide the ID of a teamspace to restrict search results to. This will perform a search over content within the specified teamspace only. Accepts the teamspace ID (UUIDv4) with or without dashes."
                },
                "filters": {
                  "type": "object",
                  "properties": {
                    "created_date_range": {
                      "type": "object",
                      "properties": {
                        "start_date": {
                          "type": "string",
                          "format": "date",
                          "description": "The start date of the date range as an ISO 8601 date string, if any."
                        },
                        "end_date": {
                          "type": "string",
                          "format": "date",
                          "description": "The end date of the date range as an ISO 8601 date string, if any."
                        }
                      },
                      "additionalProperties": true,
                      "description": "Optional filter to only produce search results created within the specified date range."
                    },
                    "created_by_user_ids": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 100,
                      "description": "Optional filter to only produce search results created by the Notion users that have the specified user IDs."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Optionally provide filters to apply to the search results. Only valid when query_type is 'internal'."
                }
              },
              "required": [
                "query"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • notion-update-data-source.json 3.5 KB
          {
            "name": "notion-update-data-source",
            "title": "Update Notion data source",
            "description": "Update a Notion data source's schema, title, or attributes using SQL DDL statements. Returns Markdown showing updated structure and schema.\nAccepts a data source ID (collection ID from fetch response's <data-source> tag) or a single-source database ID. Multi-source databases require the specific data source ID.\nThe statements param accepts semicolon-separated DDL statements:\n- ADD COLUMN \"Name\" <type> - add a new property\n- DROP COLUMN \"Name\" - remove a property\n- RENAME COLUMN \"Old\" TO \"New\" - rename a property\n- ALTER COLUMN \"Name\" SET <type> - change type/options\n\nSame type syntax as create_database. Key types:\n- SELECT('opt':color, ...) / MULTI_SELECT('opt':color, ...)\n- NUMBER [FORMAT 'dollar'] / FORMULA('expression')\n- RELATION('ds_id') / RELATION('ds_id', DUAL) / RELATION('ds_id', DUAL 'synced_name' 'synced_id')\n- ROLLUP('rel_prop', 'target_prop', 'function') / UNIQUE_ID [PREFIX 'X']\n- Simple: TITLE, RICH_TEXT, DATE, PEOPLE, CHECKBOX, URL, EMAIL, PHONE_NUMBER, STATUS, FILES\n\n<example description=\"Add properties\">{\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"statements\": \"ADD COLUMN \"Priority\" SELECT('High':red, 'Medium':yellow, 'Low':green); ADD COLUMN \"Due Date\" DATE\"}</example>\n<example description=\"Rename property\">{\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"statements\": \"RENAME COLUMN \"Status\" TO \"Project Status\"\"}</example>\n<example description=\"Remove property\">{\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"statements\": \"DROP COLUMN \"Old Property\"\"}</example>\n<example description=\"Add self-relation\">{\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"statements\": \"ADD COLUMN \"Parent\" RELATION('f336d0bc-b841-465b-8045-024475c079dd', DUAL 'Children' 'children'); ADD COLUMN \"Children\" RELATION('f336d0bc-b841-465b-8045-024475c079dd', DUAL 'Parent' 'parent')\"}</example>\n<example description=\"Update title\">{\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"title\": \"Project Tracker 2024\"}</example>\n<example description=\"Trash data source\">{\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"in_trash\": true}</example>\nNotes: Cannot delete/create title properties. Max one unique_id property. Cannot update synced databases. Use \"fetch\" first to see current schema and get the data source ID from <data-source url=\"collection://...\"> tags.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "data_source_id": {
                  "type": "string",
                  "description": "The ID of the data source to update. Can be a data source ID (collection ID, from fetch response's <data-source> tag) or a database ID (only if the database has a single data source). UUID format with or without dashes."
                },
                "statements": {
                  "type": "string",
                  "description": "Semicolon-separated SQL DDL statements to update the schema. Supports ADD COLUMN, DROP COLUMN, RENAME COLUMN, ALTER COLUMN SET."
                },
                "title": {
                  "type": "string",
                  "description": "The new title of the data source."
                },
                "description": {
                  "type": "string",
                  "description": "The new description of the data source."
                },
                "is_inline": {
                  "type": "boolean"
                },
                "in_trash": {
                  "type": "boolean"
                }
              },
              "required": [
                "data_source_id"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
        • notion-update-page.json 8.4 KB
          {
            "name": "notion-update-page",
            "title": "Update Notion page",
            "description": "## Overview\nUpdate a Notion page's properties or content.\n## Properties\nNotion page properties are a JSON map of property names to SQLite values.\nFor pages in a database:\n- ALWAYS use the \"fetch\" tool first to get the data source schema and the\texact property names.\n- Provide a non-null value to update a property's value.\n- Omitted properties are left unchanged.\n\n**IMPORTANT**: Some property types require expanded formats:\n- Date properties: Split into \"date:{property}:start\", \"date:{property}:end\" (optional), and \"date:{property}:is_datetime\" (0 or 1)\n- Place properties: Split into \"place:{property}:name\", \"place:{property}:address\", \"place:{property}:latitude\", \"place:{property}:longitude\", and \"place:{property}:google_place_id\" (optional)\n- Number properties: Use JavaScript numbers (not strings)\n- Checkbox properties: Use \"__YES__\" for checked, \"__NO__\" for unchecked\n\n**Special property naming**: Properties named \"id\" or \"url\" (case insensitive) must be prefixed with \"userDefined:\" (e.g., \"userDefined:URL\", \"userDefined:id\")\nFor pages outside of a database:\n- The only allowed property is \"title\",\twhich is the title of the page in inline markdown format.\n\n## Content\nNotion page content is a string in Notion-flavored Markdown format.\n**IMPORTANT**: For the complete Markdown specification, first fetch the MCP resource at `notion://docs/enhanced-markdown-spec`. Do NOT guess or hallucinate Markdown syntax.\nBefore updating a page's content with this tool, use the \"fetch\" tool first to get the existing content to find out the Markdown snippets to use in the \"replace_content_range\" or \"insert_content_after\" commands.\n### Preserving Child Pages and Databases\nWhen using \"replace_content\" or \"replace_content_range\", the operation will check if any child pages or databases would be deleted. If so, it will fail with an error listing the affected items.\nTo preserve child pages/databases, include them in new_str using `<page url=\"...\">` or `<database url=\"...\">` tags. Get the exact URLs from the \"fetch\" tool output.\n**CRITICAL**: To intentionally delete child content: if the call failed with validation and requires `allow_deleting_content` to be true, DO NOT automatically assume the content should be deleted. ALWAYS show the list of pages to be deleted and ask for user confirmation before proceeding.\n## Examples\n\t\t<example description=\"Update page properties\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"update_properties\",\n\t\t\t\"properties\": {\n\t\t\t\t\"title\": \"New Page Title\",\n\t\t\t\t\"status\": \"In Progress\",\n\t\t\t\t\"priority\": 5,\n\t\t\t\t\"checkbox\": \"__YES__\",\n\t\t\t\t\"date:deadline:start\": \"2024-12-25\",\n\t\t\t\t\"date:deadline:is_datetime\": 0,\n\t\t\t\t\"place:office:name\": \"HQ\",\n\t\t\t\t\"place:office:latitude\": 37.7749,\n\t\t\t\t\"place:office:longitude\": -122.4194\n\t\t\t}\n\t\t}\n\t\t</example>\n\t\t<example description=\"Replace the entire content of a page\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"replace_content\",\n\t\t\t\"new_str\": \"# New Section\nUpdated content goes here\"\n\t\t}\n\t\t</example>\n\t\t<example description=\"Replace specific content in a page\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"replace_content_range\",\n\t\t\t\"selection_with_ellipsis\": \"# Old Section...end of section\",\n\t\t\t\"new_str\": \"# New Section\nUpdated content goes here\"\n\t\t}\n\t\t</example>\n\t\t<example description=\"Insert content after specific text\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"insert_content_after\",\n\t\t\t\"selection_with_ellipsis\": \"## Previous section...\",\n\t\t\t\"new_str\": \"\n## New Section\nContent to insert goes here\"\n\t\t}\n\t\t</example>\n**Note**: For selection_with_ellipsis, provide only the first ~10 characters, an ellipsis, and the last ~10 characters. Ensure the selection is unique; use longer snippets if needed to avoid ambiguity.\n## Templates\nYou can apply a template to an existing page using the \"apply_template\" command. The template content is appended to the page asynchronously. Get template IDs from the <templates> section in the fetch tool results for a database, or use any page ID as a template.\n\t\t<example description=\"Apply a template to an existing page\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"apply_template\",\n\t\t\t\"template_id\": \"a5da15f6-b853-455d-8827-f906fb52db2b\"\n\t\t}\n\t\t</example>\n## Verification\nYou can verify or unverify a page using the \"update_verification\" command. Verification marks a page as reviewed and up-to-date. Requires a Business or Enterprise plan (or the page must be in a wiki).\n\t\t<example description=\"Verify a page for 90 days\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"update_verification\",\n\t\t\t\"verification_status\": \"verified\",\n\t\t\t\"verification_expiry_days\": 90\n\t\t}\n\t\t</example>\n\t\t<example description=\"Verify a page indefinitely\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"update_verification\",\n\t\t\t\"verification_status\": \"verified\"\n\t\t}\n\t\t</example>\n\t\t<example description=\"Remove verification from a page\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"update_verification\",\n\t\t\t\"verification_status\": \"unverified\"\n\t\t}\n\t\t</example>",
            "inputSchema": {
              "type": "object",
              "properties": {
                "page_id": {
                  "type": "string",
                  "description": "The ID of the page to update, with or without dashes."
                },
                "command": {
                  "type": "string",
                  "enum": [
                    "update_properties",
                    "replace_content",
                    "replace_content_range",
                    "insert_content_after",
                    "apply_template",
                    "update_verification"
                  ]
                },
                "properties": {
                  "type": "object",
                  "additionalProperties": {
                    "type": [
                      "string",
                      "number",
                      "null"
                    ]
                  },
                  "description": "Required for \"update_properties\" command. A JSON object that updates the page's properties. For pages in a database, use the SQLite schema definition shown in <database>. For pages outside of a database, the only allowed property is \"title\", which is the title of the page in inline markdown format. Use null to remove a property's value."
                },
                "new_str": {
                  "type": "string",
                  "description": "Required for \"replace_content\", \"replace_content_range\", and \"insert_content_after\" commands. The new content string."
                },
                "selection_with_ellipsis": {
                  "type": "string",
                  "description": "Required for \"replace_content_range\" and \"insert_content_after\" commands. Unique start and end snippet of the string to match in the page content, including whitespace. DO NOT provide the entire string to match. Instead, provide up to the first ~10 characters of the string to match, an ellipsis, and then up to the last ~10 characters of the string to match. Make sure you provide enough of the start and end snippet to uniquely identify the string to match. For example, to replace an entire section, use \"selection_with_ellipsis\":\"# Section heading...last paragraph.\""
                },
                "allow_deleting_content": {
                  "type": "boolean"
                },
                "template_id": {
                  "type": "string",
                  "description": "Required for \"apply_template\" command. The ID of a template to apply to this page. Template content is appended to any existing page content."
                },
                "verification_status": {
                  "type": "string",
                  "enum": [
                    "verified",
                    "unverified"
                  ]
                },
                "verification_expiry_days": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Optional for \"update_verification\" command when verification_status is \"verified\". Number of days until verification expires (e.g. 7, 30, 90). Omit for indefinite verification."
                }
              },
              "required": [
                "page_id",
                "command"
              ],
              "additionalProperties": false,
              "$schema": "http://json-schema.org/draft-07/schema#"
            }
          }
      • README.md 12.8 KB
        # Notion MCP Routing Reference
        
        **App name:** `notion`
        **Base URL proxied:** `mcp.notion.com`
        
        ## Request Headers
        
        MCP requests use the `Mcp-Session-Id` header for session management. If not specified, the gateway initializes a new session and returns the session ID in the `Mcp-Session-Id` response header. You can include this session ID in subsequent requests to reuse the same session.
        
        ## Connection Management
        
        Manage MCP connections at `https://ctrl.maton.ai`.
        
        ### List Connections
        
        ```bash
        GET https://ctrl.maton.ai/connections?app=notion&method=MCP&status=ACTIVE
        Authorization: Bearer $MATON_API_KEY
        ```
        
        ### Create Connection
        
        ```bash
        POST https://ctrl.maton.ai/connections
        Content-Type: application/json
        Authorization: Bearer $MATON_API_KEY
        
        {
          "app": "notion",
          "method": "MCP"
        }
        ```
        
        ## API Path Pattern
        
        ```
        /notion/{tool-name}
        ```
        
        ## MCP Reference
        
        All MCP tools use `POST` method:
        
        | Tool | Description | Schema |
        |------|-------------|--------|
        | `notion-search` | Search workspace and connected services | [schema](schemas/notion-search.json) |
        | `notion-fetch` | Retrieve content from pages/databases | [schema](schemas/notion-fetch.json) |
        | `notion-create-pages` | Create pages with properties and content | [schema](schemas/notion-create-pages.json) |
        | `notion-update-page` | Update page properties and content | [schema](schemas/notion-update-page.json) |
        | `notion-move-pages` | Relocate pages to new parent | [schema](schemas/notion-move-pages.json) |
        | `notion-duplicate-page` | Copy pages within workspace | [schema](schemas/notion-duplicate-page.json) |
        | `notion-create-database` | Create databases with schema | [schema](schemas/notion-create-database.json) |
        | `notion-update-data-source` | Modify data source attributes | [schema](schemas/notion-update-data-source.json) |
        | `notion-create-comment` | Add comments to pages/blocks | [schema](schemas/notion-create-comment.json) |
        | `notion-get-comments` | Retrieve page comments | [schema](schemas/notion-get-comments.json) |
        | `notion-get-teams` | List workspace teams | [schema](schemas/notion-get-teams.json) |
        | `notion-get-users` | List workspace users | [schema](schemas/notion-get-users.json) |
        
        ## Common Endpoints
        
        ### Search
        
        Search for pages and databases:
        ```bash
        POST /notion/notion-search
        Content-Type: application/json
        
        {
          "query": "meeting notes",
          "query_type": "internal"
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"results\":[{\"id\":\"30702dc5-9a3b-8106-b51b-ed6d1bfeeed4\",\"title\":\"Meeting Summary Report\",\"url\":\"https://www.notion.so/30702dc59a3b8106b51bed6d1bfeeed4\",\"type\":\"page\",\"highlight\":\"Meeting materials\",\"timestamp\":\"2026-02-15T00:07:00.000Z\"}],\"type\":\"workspace_search\"}"
            }
          ],
          "isError": false
        }
        ```
        
        Search for users:
        ```bash
        POST /notion/notion-search
        Content-Type: application/json
        
        {
          "query": "john@example.com",
          "query_type": "user"
        }
        ```
        
        With date filter:
        ```bash
        POST /notion/notion-search
        Content-Type: application/json
        
        {
          "query": "quarterly report",
          "query_type": "internal",
          "filters": {
            "created_date_range": {
              "start_date": "2024-01-01",
              "end_date": "2025-01-01"
            }
          }
        }
        ```
        
        ### Fetch Content
        
        Fetch page by URL:
        ```bash
        POST /notion/notion-fetch
        Content-Type: application/json
        
        {
          "id": "https://notion.so/workspace/Page-a1b2c3d4e5f67890"
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"metadata\":{\"type\":\"page\"},\"title\":\"Project Overview\",\"url\":\"https://www.notion.so/30702dc59a3b8106b51bed6d1bfeeed4\",\"text\":\"Here is the result of \\\"view\\\" for the Page with URL https://www.notion.so/30702dc59a3b8106b51bed6d1bfeeed4 as of 2026-02-14T22:56:21.276Z:\\n<page url=\\\"https://www.notion.so/30702dc59a3b8106b51bed6d1bfeeed4\\\">\\n<properties>\\n{\\\"title\\\":\\\"Project Overview\\\"}\\n</properties>\\n<content>\\n# Project Overview\\n\\nThis document outlines the project goals and milestones.\\n</content>\\n</page>\"}"
            }
          ],
          "isError": false
        }
        ```
        
        Fetch by UUID:
        ```bash
        POST /notion/notion-fetch
        Content-Type: application/json
        
        {
          "id": "12345678-90ab-cdef-1234-567890abcdef"
        }
        ```
        
        Fetch data source (collection):
        ```bash
        POST /notion/notion-fetch
        Content-Type: application/json
        
        {
          "id": "collection://12345678-90ab-cdef-1234-567890abcdef"
        }
        ```
        
        Include discussions:
        ```bash
        POST /notion/notion-fetch
        Content-Type: application/json
        
        {
          "id": "page-uuid",
          "include_discussions": true
        }
        ```
        
        ### Create Pages
        
        Create a simple page:
        ```bash
        POST /notion/notion-create-pages
        Content-Type: application/json
        
        {
          "pages": [
            {
              "properties": {"title": "My New Page"},
              "content": "# Introduction\n\nThis is my new page content."
            }
          ]
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"pages\":[{\"id\":\"31502dc5-9a3b-816d-a2ac-e9b7ec9aece7\",\"url\":\"https://www.notion.so/31502dc59a3b816da2ace9b7ec9aece7\",\"properties\":{\"title\":\"My New Page\"}}]}"
            }
          ],
          "isError": false
        }
        ```
        
        Create page under parent:
        ```bash
        POST /notion/notion-create-pages
        Content-Type: application/json
        
        {
          "parent": {"page_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"},
          "pages": [
            {
              "properties": {"title": "Child Page"},
              "content": "# Child Page Content"
            }
          ]
        }
        ```
        
        Create page in data source (database):
        ```bash
        POST /notion/notion-create-pages
        Content-Type: application/json
        
        {
          "parent": {"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd"},
          "pages": [
            {
              "properties": {
                "Task Name": "New Task",
                "Status": "In Progress",
                "Priority": 5,
                "Is Complete": "__NO__",
                "date:Due Date:start": "2024-12-25"
              }
            }
          ]
        }
        ```
        
        ### Update Page
        
        Update properties:
        ```bash
        POST /notion/notion-update-page
        Content-Type: application/json
        
        {
          "page_id": "f336d0bc-b841-465b-8045-024475c079dd",
          "command": "update_properties",
          "properties": {
            "title": "Updated Page Title",
            "Status": "Done"
          }
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"page_id\":\"f336d0bc-b841-465b-8045-024475c079dd\"}"
            }
          ],
          "isError": false
        }
        ```
        
        Replace entire content:
        ```bash
        POST /notion/notion-update-page
        Content-Type: application/json
        
        {
          "page_id": "f336d0bc-b841-465b-8045-024475c079dd",
          "command": "replace_content",
          "new_str": "# New Heading\n\nCompletely replaced content."
        }
        ```
        
        Replace content range:
        ```bash
        POST /notion/notion-update-page
        Content-Type: application/json
        
        {
          "page_id": "f336d0bc-b841-465b-8045-024475c079dd",
          "command": "replace_content_range",
          "selection_with_ellipsis": "# Old Section...end of section",
          "new_str": "# New Section\n\nUpdated section content."
        }
        ```
        
        Insert content after:
        ```bash
        POST /notion/notion-update-page
        Content-Type: application/json
        
        {
          "page_id": "f336d0bc-b841-465b-8045-024475c079dd",
          "command": "insert_content_after",
          "selection_with_ellipsis": "## Previous section...",
          "new_str": "\n## New Section\n\nInserted content here."
        }
        ```
        
        ### Move Pages
        
        Move to page:
        ```bash
        POST /notion/notion-move-pages
        Content-Type: application/json
        
        {
          "page_or_database_ids": ["31502dc5-9a3b-816d-a2ac-e9b7ec9aece7"],
          "new_parent": {
            "page_id": "31502dc5-9a3b-81e4-b090-c6f705459e38"
          }
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"result\":\"Successfully moved 1 item: 31502dc5-9a3b-816d-a2ac-e9b7ec9aece7\"}"
            }
          ],
          "isError": false
        }
        ```
        
        Move to workspace:
        ```bash
        POST /notion/notion-move-pages
        Content-Type: application/json
        
        {
          "page_or_database_ids": ["page-id-1", "page-id-2"],
          "new_parent": {
            "type": "workspace"
          }
        }
        ```
        
        Move to database:
        ```bash
        POST /notion/notion-move-pages
        Content-Type: application/json
        
        {
          "page_or_database_ids": ["page-id"],
          "new_parent": {
            "data_source_id": "f336d0bc-b841-465b-8045-024475c079dd"
          }
        }
        ```
        
        ### Duplicate Page
        
        ```bash
        POST /notion/notion-duplicate-page
        Content-Type: application/json
        
        {
          "page_id": "31502dc5-9a3b-816d-a2ac-e9b7ec9aece7"
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"page_id\":\"31502dc5-9a3b-812d-a865-ccac00a21f72\",\"page_url\":\"https://www.notion.so/31502dc59a3b812da865ccac00a21f72\"}"
            }
          ],
          "isError": false
        }
        ```
        
        ### Create Database
        
        Create with SQL DDL schema:
        ```bash
        POST /notion/notion-create-database
        Content-Type: application/json
        
        {
          "title": "Task Database",
          "schema": "CREATE TABLE (\"Task Name\" TITLE, \"Status\" SELECT('To Do':red, 'In Progress':yellow, 'Done':green), \"Priority\" NUMBER)"
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"result\":\"Created database: <database url=\\\"{{https://www.notion.so/2a3cdbb18c1c475b909a84e5615c7b74}}\\\" inline=\\\"false\\\">\\nThe title of this Database is: Task Database\\n<data-sources>\\n<data-source url=\\\"{{collection://c0f0ce51-c470-4e96-8c3f-cafca780f1a0}}\\\">\\n...\"}"
            }
          ],
          "isError": false
        }
        ```
        
        ### Update Data Source
        
        ```bash
        POST /notion/notion-update-data-source
        Content-Type: application/json
        
        {
          "data_source_id": "c0f0ce51-c470-4e96-8c3f-cafca780f1a0",
          "name": "Updated Database Name"
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"result\":\"Updated data source: <database url=\\\"{{https://www.notion.so/2a3cdbb18c1c475b909a84e5615c7b74}}\\\">\\n...\"}"
            }
          ],
          "isError": false
        }
        ```
        
        ### Get Comments
        
        ```bash
        POST /notion/notion-get-comments
        Content-Type: application/json
        
        {
          "page_id": "30702dc5-9a3b-8106-b51b-ed6d1bfeeed4"
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"results\":[{\"object\":\"comment\",\"id\":\"31502dc5-9a3b-8164-aa9c-001dfb9cb942\",\"discussion_id\":\"discussion://pageId/blockId/discussionId\",\"created_time\":\"2026-02-28T20:00:00.000Z\",\"last_edited_time\":\"2026-02-28T20:00:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"237d872b-594c-81d6-b88e-000200ac4d04\"},\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"This looks great! Ready for review.\"},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"}}]}],\"has_more\":false}"
            }
          ],
          "isError": false
        }
        ```
        
        ### Create Comment
        
        ```bash
        POST /notion/notion-create-comment
        Content-Type: application/json
        
        {
          "page_id": "f336d0bc-b841-465b-8045-024475c079dd",
          "rich_text": [
            {
              "type": "text",
              "text": {
                "content": "This looks great! Ready for review."
              }
            }
          ]
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"result\":{\"status\":\"success\",\"id\":\"31502dc5-9a3b-8164-aa9c-001dfb9cb942\"}}"
            }
          ],
          "isError": false
        }
        ```
        
        
        ### List Teams
        
        ```bash
        POST /notion/notion-get-teams
        Content-Type: application/json
        
        {}
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"result\":{\"status\":\"success\",\"id\":\"31502dc5-9a3b-8164-aa9c-001dfb9cb942\"}}"
            }
          ],
          "isError": false
        }
        ```
        
        ### List Users
        
        ```bash
        POST /notion/notion-get-users
        Content-Type: application/json
        
        {}
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"results\":[{\"type\":\"person\",\"id\":\"237d872b-594c-81d6-b88e-000200ac4d04\",\"name\":\"John Doe\",\"email\":\"john@example.com\"},{\"type\":\"bot\",\"id\":\"b638ec59-55e9-4889-8dc1-a523ff2c8677\",\"name\":\"Notion MCP\"}],\"has_more\":false}"
            }
          ],
          "isError": false
        }
        ```
        
        ## Property Types
        
        When creating or updating pages in databases:
        
        | Property Type | Format |
        |---------------|--------|
        | Title | `"Title Property": "Page Title"` |
        | Text | `"Text Property": "Some text"` |
        | Number | `"Number Property": 42` |
        | Checkbox | `"Checkbox Property": "__YES__"` or `"__NO__"` |
        | Select | `"Select Property": "Option Name"` |
        | Multi-select | `"Multi Property": "Option1, Option2"` |
        | Date (start) | `"date:Date Property:start": "2024-12-25"` |
        | Date (end) | `"date:Date Property:end": "2024-12-31"` |
        | Date (is datetime) | `"date:Date Property:is_datetime": 1` |
        | Place (name) | `"place:Location:name": "Office HQ"` |
        | Place (coordinates) | `"place:Location:latitude": 37.7749` |
        
        **Note:** Properties named "id" or "url" must be prefixed with `userDefined:` (e.g., `"userDefined:URL"`).
        
        ## Notes
        
        - All IDs are UUIDs (with or without hyphens)
        - Use `notion-fetch` to get page/database structure before creating or updating
        - For databases, fetch first to get the data source ID (`collection://...` URL)
        - If multiple Notion connections exist, specify which to use with `Maton-Connection` header
        - Session can be reused by passing the `Mcp-Session-Id` header from previous responses
        
        ## Resources
        
        - [Notion MCP Overview](https://developers.notion.com/guides/mcp)
        - [MCP Supported Tools](https://developers.notion.com/guides/mcp/mcp-supported-tools)
        - [Maton Community](https://discord.com/invite/dBfFAcefs2)
        - [Maton Support](mailto:support@maton.ai)
        
    • one-drive
      • README.md 2.3 KB
        # OneDrive Routing Reference
        
        **App name:** `one-drive`
        **Base URL proxied:** `graph.microsoft.com`
        
        ## API Path Pattern
        
        ```
        /one-drive/v1.0/me/drive/{resource}
        ```
        
        ## Common Endpoints
        
        ### Get User's Drive
        ```bash
        GET /one-drive/v1.0/me/drive
        ```
        
        ### List Drives
        ```bash
        GET /one-drive/v1.0/me/drives
        ```
        
        ### Get Drive Root
        ```bash
        GET /one-drive/v1.0/me/drive/root
        ```
        
        ### List Root Children
        ```bash
        GET /one-drive/v1.0/me/drive/root/children
        ```
        
        ### Get Item by ID
        ```bash
        GET /one-drive/v1.0/me/drive/items/{item-id}
        ```
        
        ### Get Item by Path
        ```bash
        GET /one-drive/v1.0/me/drive/root:/Documents/file.txt
        ```
        
        ### List Folder Children by Path
        ```bash
        GET /one-drive/v1.0/me/drive/root:/Documents:/children
        ```
        
        ### Create Folder
        ```bash
        POST /one-drive/v1.0/me/drive/root/children
        Content-Type: application/json
        
        {
          "name": "New Folder",
          "folder": {}
        }
        ```
        
        ### Upload File (Simple - up to 4MB)
        ```bash
        PUT /one-drive/v1.0/me/drive/root:/filename.txt:/content
        Content-Type: text/plain
        
        {file content}
        ```
        
        ### Delete Item
        ```bash
        DELETE /one-drive/v1.0/me/drive/items/{item-id}
        ```
        
        ### Create Sharing Link
        ```bash
        POST /one-drive/v1.0/me/drive/items/{item-id}/createLink
        Content-Type: application/json
        
        {
          "type": "view",
          "scope": "anonymous"
        }
        ```
        
        ### Search Files
        ```bash
        GET /one-drive/v1.0/me/drive/root/search(q='query')
        ```
        
        ### Special Folders
        ```bash
        GET /one-drive/v1.0/me/drive/special/documents
        GET /one-drive/v1.0/me/drive/special/photos
        ```
        
        ### Recent Files
        ```bash
        GET /one-drive/v1.0/me/drive/recent
        ```
        
        ### Shared With Me
        ```bash
        GET /one-drive/v1.0/me/drive/sharedWithMe
        ```
        
        ## Notes
        
        - Authentication is automatic - the router injects the OAuth token
        - Uses Microsoft Graph API (`graph.microsoft.com`)
        - Use colon (`:`) syntax for path-based addressing
        - Simple uploads limited to 4MB; use resumable upload for larger files
        - Download URLs in `@microsoft.graph.downloadUrl` are pre-authenticated
        - Supports OData query parameters: `$select`, `$expand`, `$filter`, `$orderby`, `$top`
        
        ## Resources
        
        - [OneDrive Developer Documentation](https://learn.microsoft.com/en-us/onedrive/developer/)
        - [Microsoft Graph API Reference](https://learn.microsoft.com/en-us/graph/api/overview)
        - [DriveItem Resource](https://learn.microsoft.com/en-us/graph/api/resources/driveitem)
        
    • outlook
      • README.md 4.1 KB
        # Outlook Routing Reference
        
        **App name:** `outlook`
        **Base URL proxied:** `graph.microsoft.com`
        
        ## API Path Pattern
        
        ```
        /outlook/v1.0/me/{resource}
        ```
        
        ## Common Endpoints
        
        ### User Profile
        ```bash
        GET /outlook/v1.0/me
        ```
        
        ### Mail Folders
        
        #### List Mail Folders
        ```bash
        GET /outlook/v1.0/me/mailFolders
        ```
        
        Well-known folder names: `Inbox`, `Drafts`, `SentItems`, `DeletedItems`, `Archive`, `JunkEmail`
        
        #### Get Mail Folder
        ```bash
        GET /outlook/v1.0/me/mailFolders/{folderId}
        ```
        
        #### Create Mail Folder
        ```bash
        POST /outlook/v1.0/me/mailFolders
        Content-Type: application/json
        
        {
          "displayName": "My Folder"
        }
        ```
        
        ### Messages
        
        #### List Messages
        ```bash
        GET /outlook/v1.0/me/messages
        ```
        
        From specific folder:
        ```bash
        GET /outlook/v1.0/me/mailFolders/Inbox/messages
        ```
        
        With filter:
        ```bash
        GET /outlook/v1.0/me/messages?$filter=isRead eq false&$top=10
        ```
        
        #### Get Message
        ```bash
        GET /outlook/v1.0/me/messages/{messageId}
        ```
        
        #### Send Message
        ```bash
        POST /outlook/v1.0/me/sendMail
        Content-Type: application/json
        
        {
          "message": {
            "subject": "Hello",
            "body": {
              "contentType": "Text",
              "content": "This is the email body."
            },
            "toRecipients": [
              {
                "emailAddress": {
                  "address": "recipient@example.com"
                }
              }
            ]
          },
          "saveToSentItems": true
        }
        ```
        
        #### Create Draft
        ```bash
        POST /outlook/v1.0/me/messages
        Content-Type: application/json
        
        {
          "subject": "Hello",
          "body": {
            "contentType": "Text",
            "content": "This is the email body."
          },
          "toRecipients": [
            {
              "emailAddress": {
                "address": "recipient@example.com"
              }
            }
          ]
        }
        ```
        
        #### Send Existing Draft
        ```bash
        POST /outlook/v1.0/me/messages/{messageId}/send
        ```
        
        #### Update Message (Mark as Read)
        ```bash
        PATCH /outlook/v1.0/me/messages/{messageId}
        Content-Type: application/json
        
        {
          "isRead": true
        }
        ```
        
        #### Delete Message
        ```bash
        DELETE /outlook/v1.0/me/messages/{messageId}
        ```
        
        #### Move Message
        ```bash
        POST /outlook/v1.0/me/messages/{messageId}/move
        Content-Type: application/json
        
        {
          "destinationId": "{folderId}"
        }
        ```
        
        ### Calendar
        
        #### List Calendars
        ```bash
        GET /outlook/v1.0/me/calendars
        ```
        
        #### List Events
        ```bash
        GET /outlook/v1.0/me/calendar/events
        ```
        
        With filter:
        ```bash
        GET /outlook/v1.0/me/calendar/events?$filter=start/dateTime ge '2024-01-01'&$top=10
        ```
        
        #### Create Event
        ```bash
        POST /outlook/v1.0/me/calendar/events
        Content-Type: application/json
        
        {
          "subject": "Meeting",
          "start": {
            "dateTime": "2024-01-15T10:00:00",
            "timeZone": "UTC"
          },
          "end": {
            "dateTime": "2024-01-15T11:00:00",
            "timeZone": "UTC"
          },
          "attendees": [
            {
              "emailAddress": {
                "address": "attendee@example.com"
              },
              "type": "required"
            }
          ]
        }
        ```
        
        #### Delete Event
        ```bash
        DELETE /outlook/v1.0/me/events/{eventId}
        ```
        
        ### Contacts
        
        #### List Contacts
        ```bash
        GET /outlook/v1.0/me/contacts
        ```
        
        #### Create Contact
        ```bash
        POST /outlook/v1.0/me/contacts
        Content-Type: application/json
        
        {
          "givenName": "John",
          "surname": "Doe",
          "emailAddresses": [
            {
              "address": "john.doe@example.com"
            }
          ]
        }
        ```
        
        #### Delete Contact
        ```bash
        DELETE /outlook/v1.0/me/contacts/{contactId}
        ```
        
        ## OData Query Parameters
        
        - `$top=10` - Limit results
        - `$skip=20` - Skip results (pagination)
        - `$select=subject,from` - Select specific fields
        - `$filter=isRead eq false` - Filter results
        - `$orderby=receivedDateTime desc` - Sort results
        - `$search="keyword"` - Search content
        
        ## Notes
        
        - Use `me` as the user identifier for the authenticated user
        - Message body content types: `Text` or `HTML`
        - Well-known folder names work as folder IDs: `Inbox`, `Drafts`, `SentItems`, etc.
        - Calendar events use ISO 8601 datetime format
        
        ## Resources
        
        - [Microsoft Graph API Overview](https://learn.microsoft.com/en-us/graph/api/overview)
        - [Mail API](https://learn.microsoft.com/en-us/graph/api/resources/mail-api-overview)
        - [Calendar API](https://learn.microsoft.com/en-us/graph/api/resources/calendar)
        - [Contacts API](https://learn.microsoft.com/en-us/graph/api/resources/contact)
        - [Query Parameters](https://learn.microsoft.com/en-us/graph/query-parameters)
        
    • pdf-co
      • README.md 5 KB
        # PDF.co Routing Reference
        
        **App name:** `pdf-co`
        **Base URL proxied:** `api.pdf.co`
        
        ## API Path Pattern
        
        ```
        /pdf-co/v1/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### PDF Information
        
        ```bash
        POST /pdf-co/v1/pdf/info
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf"
        }
        ```
        
        ### Convert PDF to Text
        
        ```bash
        POST /pdf-co/v1/pdf/convert/to/text
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "pages": "0-",
          "inline": true
        }
        ```
        
        ### Convert PDF to CSV
        
        ```bash
        POST /pdf-co/v1/pdf/convert/to/csv
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "pages": "0-",
          "inline": true
        }
        ```
        
        ### Convert PDF to JSON
        
        ```bash
        POST /pdf-co/v1/pdf/convert/to/json
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "inline": true
        }
        ```
        
        ### Convert PDF to HTML
        
        ```bash
        POST /pdf-co/v1/pdf/convert/to/html
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "name": "output.html"
        }
        ```
        
        ### Convert PDF to XLSX (Excel)
        
        ```bash
        POST /pdf-co/v1/pdf/convert/to/xlsx
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "name": "output.xlsx"
        }
        ```
        
        ### Convert PDF to PNG
        
        ```bash
        POST /pdf-co/v1/pdf/convert/to/png
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "pages": "0",
          "name": "page.png"
        }
        ```
        
        ### Convert PDF to JPG
        
        ```bash
        POST /pdf-co/v1/pdf/convert/to/jpg
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "pages": "0",
          "name": "page.jpg"
        }
        ```
        
        ### Convert HTML to PDF
        
        ```bash
        POST /pdf-co/v1/pdf/convert/from/html
        Content-Type: application/json
        
        {
          "html": "<html><body><h1>Hello World</h1></body></html>",
          "name": "output.pdf",
          "paperSize": "Letter",
          "orientation": "Portrait"
        }
        ```
        
        ### Convert URL to PDF
        
        ```bash
        POST /pdf-co/v1/pdf/convert/from/url
        Content-Type: application/json
        
        {
          "url": "https://example.com",
          "name": "webpage.pdf"
        }
        ```
        
        ### Merge PDFs
        
        ```bash
        POST /pdf-co/v1/pdf/merge
        Content-Type: application/json
        
        {
          "url": "https://example.com/doc1.pdf,https://example.com/doc2.pdf",
          "name": "merged.pdf"
        }
        ```
        
        ### Split PDF
        
        ```bash
        POST /pdf-co/v1/pdf/split
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "pages": "1-3,4-6,7-"
        }
        ```
        
        ### Delete Pages
        
        ```bash
        POST /pdf-co/v1/pdf/edit/delete-pages
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "pages": "2,4,6"
        }
        ```
        
        
        ### Add Text and Images
        
        ```bash
        POST /pdf-co/v1/pdf/edit/add
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "name": "annotated.pdf",
          "annotations": [
            {
              "text": "CONFIDENTIAL",
              "x": 100,
              "y": 100,
              "size": 24,
              "pages": "0-"
            }
          ]
        }
        ```
        
        ### Search and Replace Text
        
        ```bash
        POST /pdf-co/v1/pdf/edit/replace-text
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "searchString": "old text",
          "replaceString": "new text"
        }
        ```
        
        ### Search and Delete Text
        
        ```bash
        POST /pdf-co/v1/pdf/edit/delete-text
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "searchString": "text to remove"
        }
        ```
        
        ### Add Password
        
        ```bash
        POST /pdf-co/v1/pdf/security/add
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "ownerPassword": "owner123",
          "userPassword": "user456"
        }
        ```
        
        ### Remove Password
        
        ```bash
        POST /pdf-co/v1/pdf/security/remove
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "password": "currentpassword"
        }
        ```
        
        ### AI Invoice Parser
        
        ```bash
        POST /pdf-co/v1/ai-invoice-parser
        Content-Type: application/json
        
        {
          "url": "https://example.com/invoice.pdf"
        }
        ```
        
        ### Document Parser
        
        ```bash
        POST /pdf-co/v1/pdf/documentparser
        Content-Type: application/json
        
        {
          "url": "https://example.com/document.pdf",
          "templateId": "your-template-id"
        }
        ```
        
        ### Generate Barcode
        
        ```bash
        POST /pdf-co/v1/barcode/generate
        Content-Type: application/json
        
        {
          "value": "1234567890",
          "type": "QRCode",
          "name": "barcode.png"
        }
        ```
        
        ### Read Barcode
        
        ```bash
        POST /pdf-co/v1/barcode/read/from/url
        Content-Type: application/json
        
        {
          "url": "https://example.com/barcode.png",
          "types": "QRCode,Code128,Code39,EAN13,UPCA"
        }
        ```
        
        ### Check Async Job Status
        
        ```bash
        POST /pdf-co/v1/job/check
        Content-Type: application/json
        
        {
          "jobId": "abc123"
        }
        ```
        
        ## Notes
        
        - All file URLs must be publicly accessible or use PDF.co temporary storage
        - Multiple URLs for merge operations should be comma-separated
        - Page indices are 0-based (first page is `0`)
        - Page ranges use format: `0-2` (pages 0,1,2), `3-` (page 3 to end), `0,2,4` (specific pages)
        - Output files are stored temporarily and expire after 60 minutes by default
        - Use `async: true` for large files to avoid timeout
        - Use `inline: true` to get content directly in response instead of URL
        
        ## Resources
        
        - [PDF.co API Documentation](https://docs.pdf.co)
        - [PDF.co API Reference](https://docs.pdf.co/api-reference)
        
    • pipedrive
      • README.md 3 KB
        # Pipedrive Routing Reference
        
        **App name:** `pipedrive`
        **Base URL proxied:** `api.pipedrive.com`
        
        ## API Path Pattern
        
        ```
        /pipedrive/api/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### List Deals
        ```bash
        GET /pipedrive/api/v1/deals?status=open&limit=50
        ```
        
        ### Get Deal
        ```bash
        GET /pipedrive/api/v1/deals/{id}
        ```
        
        ### Create Deal
        ```bash
        POST /pipedrive/api/v1/deals
        Content-Type: application/json
        
        {
          "title": "New Enterprise Deal",
          "value": 50000,
          "currency": "USD",
          "person_id": 123,
          "org_id": 456,
          "stage_id": 1,
          "expected_close_date": "2025-06-30"
        }
        ```
        
        ### Update Deal
        ```bash
        PUT /pipedrive/api/v1/deals/{id}
        Content-Type: application/json
        
        {
          "title": "Updated Deal Title",
          "value": 75000,
          "status": "won"
        }
        ```
        
        ### Delete Deal
        ```bash
        DELETE /pipedrive/api/v1/deals/{id}
        ```
        
        ### Search Deals
        ```bash
        GET /pipedrive/api/v1/deals/search?term=enterprise
        ```
        
        ### List Persons
        ```bash
        GET /pipedrive/api/v1/persons
        ```
        
        ### Create Person
        ```bash
        POST /pipedrive/api/v1/persons
        Content-Type: application/json
        
        {
          "name": "John Doe",
          "email": ["john@example.com"],
          "phone": ["+1234567890"],
          "org_id": 456
        }
        ```
        
        ### List Organizations
        ```bash
        GET /pipedrive/api/v1/organizations
        ```
        
        ### Create Organization
        ```bash
        POST /pipedrive/api/v1/organizations
        Content-Type: application/json
        
        {
          "name": "Acme Corporation",
          "address": "123 Main St, City, Country"
        }
        ```
        
        ### List Activities
        ```bash
        GET /pipedrive/api/v1/activities?type=call&done=0
        ```
        
        ### Create Activity
        ```bash
        POST /pipedrive/api/v1/activities
        Content-Type: application/json
        
        {
          "subject": "Follow-up call",
          "type": "call",
          "due_date": "2025-03-15",
          "due_time": "14:00",
          "deal_id": 789,
          "person_id": 123
        }
        ```
        
        ### List Pipelines
        ```bash
        GET /pipedrive/api/v1/pipelines
        ```
        
        ### List Stages
        ```bash
        GET /pipedrive/api/v1/stages?pipeline_id=1
        ```
        
        ### Create Note
        ```bash
        POST /pipedrive/api/v1/notes
        Content-Type: application/json
        
        {
          "content": "Meeting notes: Discussed pricing and timeline",
          "deal_id": 789,
          "pinned_to_deal_flag": 1
        }
        ```
        
        ### Get Current User
        ```bash
        GET /pipedrive/api/v1/users/me
        ```
        
        ## Notes
        
        - IDs are integers
        - Email and phone fields accept arrays for multiple values
        - `visible_to` values: 1 (owner only), 3 (entire company), 5 (owner's visibility group), 7 (entire company and visibility group)
        - Deal status: `open`, `won`, `lost`, `deleted`
        - Use `start` and `limit` for pagination
        - Custom fields are supported via their API key (e.g., `abc123_custom_field`)
        
        ## Resources
        
        - [Pipedrive API Overview](https://developers.pipedrive.com/docs/api/v1)
        - [Deals](https://developers.pipedrive.com/docs/api/v1/Deals)
        - [Persons](https://developers.pipedrive.com/docs/api/v1/Persons)
        - [Organizations](https://developers.pipedrive.com/docs/api/v1/Organizations)
        - [Activities](https://developers.pipedrive.com/docs/api/v1/Activities)
        - [Pipelines](https://developers.pipedrive.com/docs/api/v1/Pipelines)
        - [Stages](https://developers.pipedrive.com/docs/api/v1/Stages)
        - [Notes](https://developers.pipedrive.com/docs/api/v1/Notes)
        
    • podio
      • README.md 3.2 KB
        # Podio Routing Reference
        
        **App name:** `podio`
        **Base URL proxied:** `api.podio.com`
        
        ## API Path Pattern
        
        ```
        /podio/{resource}/{id}/
        ```
        
        Note: Many Podio endpoints use trailing slashes.
        
        ## Common Endpoints
        
        ### Organizations
        
        #### List Organizations
        ```bash
        GET /podio/org/
        ```
        
        #### Get Organization
        ```bash
        GET /podio/org/{org_id}
        ```
        
        ### Spaces (Workspaces)
        
        #### List Spaces in Organization
        ```bash
        GET /podio/space/org/{org_id}/
        ```
        
        #### Get Space
        ```bash
        GET /podio/space/{space_id}
        ```
        
        #### Create Space
        ```bash
        POST /podio/org/{org_id}/space/
        Content-Type: application/json
        
        {
          "name": "New Workspace",
          "privacy": "closed"
        }
        ```
        
        ### Applications
        
        #### List Apps in Space
        ```bash
        GET /podio/app/space/{space_id}/
        ```
        
        #### Get App
        ```bash
        GET /podio/app/{app_id}
        ```
        
        ### Items
        
        #### Filter Items
        ```bash
        POST /podio/item/app/{app_id}/filter/
        Content-Type: application/json
        
        {
          "limit": 30,
          "offset": 0,
          "sort_by": "created_on",
          "sort_desc": true,
          "filters": {
            "status": [1, 2]
          }
        }
        ```
        
        #### Get Item
        ```bash
        GET /podio/item/{item_id}
        ```
        
        #### Create Item
        ```bash
        POST /podio/item/app/{app_id}/
        Content-Type: application/json
        
        {
          "fields": {
            "title": "New Item",
            "status": 1
          }
        }
        ```
        
        #### Update Item
        ```bash
        PUT /podio/item/{item_id}
        Content-Type: application/json
        
        {
          "fields": {
            "title": "Updated Title"
          }
        }
        ```
        
        #### Delete Item
        ```bash
        DELETE /podio/item/{item_id}
        ```
        
        ### Tasks
        
        Tasks require at least one filter: org, space, app, responsible, reference, created_by, or completed_by.
        
        #### List Tasks
        ```bash
        GET /podio/task/?org={org_id}
        GET /podio/task/?space={space_id}
        GET /podio/task/?app={app_id}&completed=false
        ```
        
        #### Get Task
        ```bash
        GET /podio/task/{task_id}
        ```
        
        #### Create Task
        ```bash
        POST /podio/task/
        Content-Type: application/json
        
        {
          "text": "Task description",
          "due_date": "2026-03-15",
          "ref_type": "item",
          "ref_id": 3250776079
        }
        ```
        
        #### Complete Task
        ```bash
        POST /podio/task/{task_id}/complete
        ```
        
        #### Delete Task
        ```bash
        DELETE /podio/task/{task_id}
        ```
        
        ### Comments
        
        #### Get Comments on Object
        ```bash
        GET /podio/comment/{type}/{id}/
        ```
        
        Where `{type}` is: item, task, status, etc.
        
        #### Add Comment
        ```bash
        POST /podio/comment/{type}/{id}
        Content-Type: application/json
        
        {
          "value": "Comment text"
        }
        ```
        
        ### User
        
        #### Get User Status
        ```bash
        GET /podio/user/status
        ```
        
        ## Pagination
        
        Podio uses offset-based pagination:
        
        ```json
        {
          "limit": 30,
          "offset": 0
        }
        ```
        
        Response includes counts:
        ```json
        {
          "total": 150,
          "filtered": 45,
          "items": [...]
        }
        ```
        
        ## Notes
        
        - Organization, space, app, and item IDs are integers
        - Many endpoints use trailing slashes (e.g., `/org/`, `/filter/`)
        - Category/status fields use option IDs (integers), not text values
        - Field values can be specified by field_id or external_id
        - Deleting an item cascades to associated tasks
        - Tasks require at least one filter parameter
        - Use `silent=true` to suppress notifications
        - Use `hook=false` to skip webhook triggers
        
        ## Resources
        
        - [Podio API Documentation](https://developers.podio.com/doc)
        - [Items API](https://developers.podio.com/doc/items)
        - [Tasks API](https://developers.podio.com/doc/tasks)
        - [Applications API](https://developers.podio.com/doc/applications)
        - [Spaces API](https://developers.podio.com/doc/spaces)
        
    • posthog
      • README.md 3.3 KB
        # PostHog Routing Reference
        
        **App name:** `posthog`
        **Base URL proxied:** `{subdomain}.posthog.com`
        
        ## API Path Pattern
        
        ```
        /posthog/api/{resource}
        /posthog/api/projects/{project_id}/{resource}
        ```
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /posthog/api/users/@me/
        ```
        
        ### Get Current Organization
        ```bash
        GET /posthog/api/organizations/@current/
        ```
        
        ### List Projects
        ```bash
        GET /posthog/api/projects/
        ```
        
        ### Get Current Project
        ```bash
        GET /posthog/api/projects/@current/
        ```
        
        ### Run HogQL Query
        ```bash
        POST /posthog/api/projects/{project_id}/query/
        Content-Type: application/json
        
        {
          "query": {
            "kind": "HogQLQuery",
            "query": "SELECT event, count() FROM events GROUP BY event LIMIT 10"
          }
        }
        ```
        
        ### List Persons
        ```bash
        GET /posthog/api/projects/{project_id}/persons/?limit=10
        ```
        
        ### Get Person
        ```bash
        GET /posthog/api/projects/{project_id}/persons/{person_uuid}/
        ```
        
        ### List Dashboards
        ```bash
        GET /posthog/api/projects/{project_id}/dashboards/
        ```
        
        ### Get Dashboard
        ```bash
        GET /posthog/api/projects/{project_id}/dashboards/{dashboard_id}/
        ```
        
        ### Create Dashboard
        ```bash
        POST /posthog/api/projects/{project_id}/dashboards/
        Content-Type: application/json
        
        {
          "name": "My Dashboard",
          "description": "Analytics overview"
        }
        ```
        
        ### List Insights
        ```bash
        GET /posthog/api/projects/{project_id}/insights/?limit=10
        ```
        
        ### List Feature Flags
        ```bash
        GET /posthog/api/projects/{project_id}/feature_flags/
        ```
        
        ### Create Feature Flag
        ```bash
        POST /posthog/api/projects/{project_id}/feature_flags/
        Content-Type: application/json
        
        {
          "key": "my-feature-flag",
          "name": "My Feature Flag",
          "active": true,
          "filters": {
            "groups": [{"rollout_percentage": 100}]
          }
        }
        ```
        
        ### Delete Feature Flag
        Use soft delete by setting `deleted: true`:
        ```bash
        PATCH /posthog/api/projects/{project_id}/feature_flags/{flag_id}/
        Content-Type: application/json
        
        {
          "deleted": true
        }
        ```
        
        ### List Session Recordings
        ```bash
        GET /posthog/api/projects/{project_id}/session_recordings/?limit=10
        ```
        
        ### List Cohorts
        ```bash
        GET /posthog/api/projects/{project_id}/cohorts/
        ```
        
        ### List Actions
        ```bash
        GET /posthog/api/projects/{project_id}/actions/
        ```
        
        ### List Experiments
        ```bash
        GET /posthog/api/projects/{project_id}/experiments/
        ```
        
        ### List Surveys
        ```bash
        GET /posthog/api/projects/{project_id}/surveys/
        ```
        
        ### List Event Definitions
        ```bash
        GET /posthog/api/projects/{project_id}/event_definitions/?limit=10
        ```
        
        ### List Property Definitions
        ```bash
        GET /posthog/api/projects/{project_id}/property_definitions/?limit=10
        ```
        
        ## Notes
        
        - Use `@current` as a shortcut for the current project ID (e.g., `/api/projects/@current/dashboards/`)
        - Project IDs are integers (e.g., `136209`)
        - Person UUIDs are in standard UUID format
        - The Events endpoint is deprecated; use the Query endpoint with HogQL instead
        - All project-scoped endpoints require `{project_id}` or `@current`
        - Pagination uses `limit` and `offset` query parameters
        - PostHog uses soft delete: use `PATCH` with `{"deleted": true}` instead of HTTP DELETE
        
        ## Resources
        
        - [PostHog API Overview](https://posthog.com/docs/api)
        - [HogQL Documentation](https://posthog.com/docs/hogql)
        - [Feature Flags](https://posthog.com/docs/feature-flags)
        - [Session Replay](https://posthog.com/docs/session-replay)
        - [Experiments](https://posthog.com/docs/experiments)
        
    • quickbooks
      • README.md 11.1 KB
        # QuickBooks Routing Reference
        
        **App name:** `quickbooks`
        **Base URL proxied:** `quickbooks.api.intuit.com`
        
        ## Special Handling
        
        Use `:realmId` in the path and it will be automatically replaced with the connected company's realm ID.
        
        ## API Path Pattern
        
        ```
        /quickbooks/v3/company/:realmId/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Company Info
        
        #### Get Company Info
        ```bash
        GET /quickbooks/v3/company/:realmId/companyinfo/:realmId
        ```
        
        #### Get Preferences
        ```bash
        GET /quickbooks/v3/company/:realmId/preferences
        ```
        
        ### Customers
        
        #### Query Customers
        ```bash
        GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Customer%20MAXRESULTS%20100
        ```
        
        With filter:
        ```bash
        GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Customer%20WHERE%20Active%3Dtrue
        ```
        
        #### Get Customer
        ```bash
        GET /quickbooks/v3/company/:realmId/customer/{customerId}
        ```
        
        #### Create Customer
        ```bash
        POST /quickbooks/v3/company/:realmId/customer
        Content-Type: application/json
        
        {
          "DisplayName": "John Doe",
          "PrimaryEmailAddr": {"Address": "john@example.com"},
          "PrimaryPhone": {"FreeFormNumber": "555-1234"}
        }
        ```
        
        #### Update Customer
        Requires `Id` and `SyncToken` from previous GET:
        ```bash
        POST /quickbooks/v3/company/:realmId/customer
        Content-Type: application/json
        
        {
          "Id": "123",
          "SyncToken": "0",
          "DisplayName": "John Doe Updated",
          "PrimaryPhone": {"FreeFormNumber": "555-9999"}
        }
        ```
        
        #### Deactivate Customer (Soft Delete)
        ```bash
        POST /quickbooks/v3/company/:realmId/customer
        Content-Type: application/json
        
        {
          "Id": "123",
          "SyncToken": "1",
          "DisplayName": "John Doe",
          "Active": false
        }
        ```
        
        ### Vendors
        
        #### Query Vendors
        ```bash
        GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Vendor%20MAXRESULTS%20100
        ```
        
        #### Get Vendor
        ```bash
        GET /quickbooks/v3/company/:realmId/vendor/{vendorId}
        ```
        
        #### Create Vendor
        ```bash
        POST /quickbooks/v3/company/:realmId/vendor
        Content-Type: application/json
        
        {
          "DisplayName": "Acme Supplies",
          "PrimaryEmailAddr": {"Address": "vendor@example.com"}
        }
        ```
        
        ### Items (Products/Services)
        
        #### Query Items
        ```bash
        GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Item%20MAXRESULTS%20100
        ```
        
        #### Get Item
        ```bash
        GET /quickbooks/v3/company/:realmId/item/{itemId}
        ```
        
        #### Create Item
        ```bash
        POST /quickbooks/v3/company/:realmId/item
        Content-Type: application/json
        
        {
          "Name": "Consulting Services",
          "Type": "Service",
          "IncomeAccountRef": {"value": "1"}
        }
        ```
        
        ### Invoices
        
        #### Query Invoices
        ```bash
        GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Invoice%20MAXRESULTS%20100
        ```
        
        #### Get Invoice
        ```bash
        GET /quickbooks/v3/company/:realmId/invoice/{invoiceId}
        ```
        
        #### Create Invoice
        ```bash
        POST /quickbooks/v3/company/:realmId/invoice
        Content-Type: application/json
        
        {
          "CustomerRef": {"value": "123"},
          "Line": [
            {
              "Amount": 100.00,
              "DetailType": "SalesItemLineDetail",
              "SalesItemLineDetail": {
                "ItemRef": {"value": "1"},
                "Qty": 1
              }
            }
          ]
        }
        ```
        
        #### Void Invoice
        ```bash
        POST /quickbooks/v3/company/:realmId/invoice?operation=void
        Content-Type: application/json
        
        {
          "Id": "123",
          "SyncToken": "0"
        }
        ```
        
        #### Delete Invoice
        ```bash
        POST /quickbooks/v3/company/:realmId/invoice?operation=delete
        Content-Type: application/json
        
        {
          "Id": "123",
          "SyncToken": "0"
        }
        ```
        
        ### Payments
        
        #### Query Payments
        ```bash
        GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Payment%20MAXRESULTS%20100
        ```
        
        #### Create Payment
        Simple payment:
        ```bash
        POST /quickbooks/v3/company/:realmId/payment
        Content-Type: application/json
        
        {
          "CustomerRef": {"value": "123"},
          "TotalAmt": 100.00
        }
        ```
        
        Payment linked to invoice:
        ```bash
        POST /quickbooks/v3/company/:realmId/payment
        Content-Type: application/json
        
        {
          "CustomerRef": {"value": "123"},
          "TotalAmt": 100.00,
          "Line": [
            {
              "Amount": 100.00,
              "LinkedTxn": [{"TxnId": "456", "TxnType": "Invoice"}]
            }
          ]
        }
        ```
        
        ### Bills
        
        #### Query Bills
        ```bash
        GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Bill%20MAXRESULTS%20100
        ```
        
        #### Create Bill
        ```bash
        POST /quickbooks/v3/company/:realmId/bill
        Content-Type: application/json
        
        {
          "VendorRef": {"value": "123"},
          "Line": [
            {
              "DetailType": "AccountBasedExpenseLineDetail",
              "Amount": 250.00,
              "AccountBasedExpenseLineDetail": {
                "AccountRef": {"value": "1"}
              }
            }
          ]
        }
        ```
        
        ### Bill Payments
        
        #### Create Bill Payment
        ```bash
        POST /quickbooks/v3/company/:realmId/billpayment
        Content-Type: application/json
        
        {
          "VendorRef": {"value": "123"},
          "TotalAmt": 250.00,
          "PayType": "Check",
          "CheckPayment": {
            "BankAccountRef": {"value": "23"}
          },
          "Line": [
            {
              "Amount": 250.00,
              "LinkedTxn": [{"TxnId": "456", "TxnType": "Bill"}]
            }
          ]
        }
        ```
        
        **Note:** Use a Bank account (AccountType: "Bank") for `BankAccountRef`.
        
        ### Accounts
        
        #### Query Accounts
        ```bash
        GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Account
        ```
        
        Filter by type:
        ```bash
        GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Account%20WHERE%20AccountType%20%3D%20%27Bank%27
        ```
        
        ### Reports
        
        #### Profit and Loss
        ```bash
        GET /quickbooks/v3/company/:realmId/reports/ProfitAndLoss?start_date=2024-01-01&end_date=2024-12-31
        ```
        
        #### Balance Sheet
        ```bash
        GET /quickbooks/v3/company/:realmId/reports/BalanceSheet?date=2024-12-31
        ```
        
        ### Batch Operations
        
        Execute multiple queries in a single request:
        ```bash
        POST /quickbooks/v3/company/:realmId/batch
        Content-Type: application/json
        
        {
          "BatchItemRequest": [
            {"bId": "1", "Query": "SELECT * FROM Customer MAXRESULTS 2"},
            {"bId": "2", "Query": "SELECT * FROM Vendor MAXRESULTS 2"}
          ]
        }
        ```
        
        ## Query Language
        
        QuickBooks uses a SQL-like query language:
        ```sql
        SELECT * FROM Customer WHERE DisplayName LIKE 'John%' MAXRESULTS 100
        ```
        
        Operators: `=`, `LIKE`, `<`, `>`, `<=`, `>=`, `IN`
        
        ## SyncToken for Updates
        
        All update operations require the current `SyncToken` from the entity. The SyncToken is incremented after each successful update.
        
        1. GET the entity to retrieve current `SyncToken`
        2. Include `Id` and `SyncToken` in the POST body
        3. If the SyncToken doesn't match, the update fails (optimistic locking)
        
        ## Void vs Delete
        
        - **Void**: Sets transaction amount to 0, adds "Voided" note, keeps record. Use for audit trail.
        - **Delete**: Permanently removes the transaction. Use `?operation=delete` query parameter.
        
        Both require `Id` and `SyncToken` in the request body.
        
        ## Notes
        
        - `:realmId` is automatically replaced by the router
        - All queries must be URL-encoded
        - Use `MAXRESULTS` to limit query results (default varies by entity)
        - Include `SyncToken` when updating entities (for optimistic locking)
        - Dates are in `YYYY-MM-DD` format
        - Soft delete entities (Customer, Vendor, Item) by setting `Active: false`
        - Transactions (Invoice, Payment, Bill) can be voided or deleted
        
        ## Resources
        
        - [API Overview](https://developer.intuit.com/app/developer/qbo/docs/get-started)
        - [Query Customers](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/customer#query-a-customer)
        - [Get Customer](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/customer#read-a-customer)
        - [Create Customer](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/customer#create-a-customer)
        - [Update Customer](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/customer#full-update-a-customer)
        - [Query Invoices](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#query-an-invoice)
        - [Get Invoice](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#read-an-invoice)
        - [Create Invoice](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#create-an-invoice)
        - [Update Invoice](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#full-update-an-invoice)
        - [Delete Invoice](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#delete-an-invoice)
        - [Send Invoice](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#send-an-invoice)
        - [Query Items](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/item#query-an-item)
        - [Get Item](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/item#read-an-item)
        - [Create Item](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/item#create-an-item)
        - [Update Item](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/item#full-update-an-item)
        - [Query Accounts](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/account#query-an-account)
        - [Get Account](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/account#read-an-account)
        - [Create Account](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/account#create-an-account)
        - [Update Account](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/account#full-update-an-account)
        - [Query Payments](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/payment#query-a-payment)
        - [Get Payment](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/payment#read-a-payment)
        - [Create Payment](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/payment#create-a-payment)
        - [Update Payment](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/payment#full-update-a-payment)
        - [Delete Payment](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/payment#delete-a-payment)
        - [Query Vendors](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/vendor#query-a-vendor)
        - [Get Vendor](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/vendor#read-a-vendor)
        - [Create Vendor](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/vendor#create-a-vendor)
        - [Update Vendor](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/vendor#full-update-a-vendor)
        - [Query Bills](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/bill#query-a-bill)
        - [Get Bill](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/bill#read-a-bill)
        - [Create Bill](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/bill#create-a-bill)
        - [Update Bill](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/bill#full-update-a-bill)
        - [Delete Bill](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/bill#delete-a-bill)
        - [Profit and Loss Report](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/report-entities/profitandloss)
        - [Balance Sheet Report](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/report-entities/balancesheet)
        - [Query Reference](https://developer.intuit.com/app/developer/qbdesktop/docs/develop/exploring-the-quickbooks-desktop-sdk/query-requests-and-responses)
    • quo
      • README.md 2.9 KB
        # Quo Routing Reference
        
        **App name:** `quo`
        **Base URL proxied:** `api.openphone.com`
        
        ## API Path Pattern
        
        ```
        /quo/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### Phone Numbers
        
        #### List Phone Numbers
        ```bash
        GET /quo/v1/phone-numbers
        ```
        
        ### Users
        
        #### List Users
        ```bash
        GET /quo/v1/users?maxResults=50
        ```
        
        #### Get User
        ```bash
        GET /quo/v1/users/{userId}
        ```
        
        ### Messages
        
        #### Send Text Message
        ```bash
        POST /quo/v1/messages
        Content-Type: application/json
        
        {
          "content": "Hello, world!",
          "from": "PN123abc",
          "to": ["+15555555555"]
        }
        ```
        
        #### List Messages
        ```bash
        GET /quo/v1/messages?phoneNumberId=PN123abc&participants[]=+15555555555&maxResults=100
        ```
        
        #### Get Message
        ```bash
        GET /quo/v1/messages/{messageId}
        ```
        
        ### Calls
        
        #### List Calls
        ```bash
        GET /quo/v1/calls?phoneNumberId=PN123abc&participants[]=+15555555555&maxResults=100
        ```
        
        #### Get Call
        ```bash
        GET /quo/v1/calls/{callId}
        ```
        
        #### Get Call Recordings
        ```bash
        GET /quo/v1/call-recordings/{callId}
        ```
        
        #### Get Call Summary
        ```bash
        GET /quo/v1/call-summaries/{callId}
        ```
        
        #### Get Call Transcript
        ```bash
        GET /quo/v1/call-transcripts/{callId}
        ```
        
        #### Get Call Voicemail
        ```bash
        GET /quo/v1/call-voicemails/{callId}
        ```
        
        ### Contacts
        
        #### List Contacts
        ```bash
        GET /quo/v1/contacts?maxResults=50
        ```
        
        #### Get Contact
        ```bash
        GET /quo/v1/contacts/{contactId}
        ```
        
        #### Create Contact
        ```bash
        POST /quo/v1/contacts
        Content-Type: application/json
        
        {
          "defaultFields": {
            "firstName": "Jane",
            "lastName": "Doe",
            "phoneNumbers": [{"name": "mobile", "value": "+15555555555"}]
          }
        }
        ```
        
        #### Update Contact
        ```bash
        PATCH /quo/v1/contacts/{contactId}
        Content-Type: application/json
        
        {
          "defaultFields": {
            "company": "New Company"
          }
        }
        ```
        
        #### Delete Contact
        ```bash
        DELETE /quo/v1/contacts/{contactId}
        ```
        
        #### Get Contact Custom Fields
        ```bash
        GET /quo/v1/contact-custom-fields
        ```
        
        ### Conversations
        
        #### List Conversations
        ```bash
        GET /quo/v1/conversations?maxResults=100
        ```
        
        ### Webhooks
        
        #### List Webhooks
        ```bash
        GET /quo/v1/webhooks
        ```
        
        #### Get Webhook
        ```bash
        GET /quo/v1/webhooks/{webhookId}
        ```
        
        #### Create Webhook
        ```bash
        POST /quo/v1/webhooks
        Content-Type: application/json
        
        {
          "url": "https://your-webhook-url.com/calls",
          "resourceType": "call"
        }
        ```
        
        Resource types: `call`, `message`, `callSummary`, `callTranscript`
        
        #### Delete Webhook
        ```bash
        DELETE /quo/v1/webhooks/{webhookId}
        ```
        
        ## Notes
        
        - Phone number IDs start with `PN`
        - User IDs start with `US`
        - Call/Message IDs start with `AC`
        - Phone numbers must be in E.164 format (e.g., `+15555555555`)
        - Uses token-based pagination with `pageToken` parameter
        - Maximum 1600 characters per SMS message
        - List calls requires exactly 1 participant (1:1 conversations only)
        
        ## Resources
        
        - [Quo API Introduction](https://www.quo.com/docs/mdx/api-reference/introduction)
        - [Quo API Authentication](https://www.quo.com/docs/mdx/api-reference/authentication)
        - [Quo Support Center](https://support.quo.com/core-concepts/integrations/api)
        
    • reducto
      • README.md 2.4 KB
        # Reducto Routing Reference
        
        **App name:** `reducto`
        **Base URL proxied:** `platform.reducto.ai`
        
        ## API Path Pattern
        
        ```
        /reducto/parse
        /reducto/parse_async
        /reducto/extract
        /reducto/extract_async
        /reducto/split
        /reducto/split_async
        /reducto/edit
        /reducto/edit_async
        /reducto/upload
        /reducto/pipeline
        /reducto/jobs
        /reducto/job/{job_id}
        /reducto/version
        ```
        
        ## Important Notes
        
        - Connection uses API_KEY authentication method (not OAuth)
        - Use async endpoints for large documents to avoid timeouts
        - Upload presigned URLs expire quickly
        - Use `reducto://` URLs from upload in subsequent requests
        - Use `jobid://` to reuse parsed content from previous jobs
        
        ## Common Endpoints
        
        ### Parse Document
        
        ```bash
        POST /reducto/parse
        Content-Type: application/json
        
        {
          "document_url": "https://example.com/document.pdf"
        }
        ```
        
        ### Parse Document (Async)
        
        ```bash
        POST /reducto/parse_async
        Content-Type: application/json
        
        {
          "document_url": "https://example.com/document.pdf"
        }
        ```
        
        ### Extract Data
        
        ```bash
        POST /reducto/extract
        Content-Type: application/json
        
        {
          "document_url": "https://example.com/document.pdf",
          "schema": {
            "type": "object",
            "properties": {
              "title": {"type": "string"},
              "date": {"type": "string"}
            }
          }
        }
        ```
        
        ### Split Document
        
        ```bash
        POST /reducto/split
        Content-Type: application/json
        
        {
          "document_url": "https://example.com/document.pdf",
          "split_description": [
            {"name": "section1", "description": "First section"}
          ]
        }
        ```
        
        ### Edit Document
        
        ```bash
        POST /reducto/edit
        Content-Type: application/json
        
        {
          "document_url": "https://example.com/form.pdf",
          "edit_instructions": "Fill the name field with 'John Doe'"
        }
        ```
        
        ### Upload File
        
        ```bash
        POST /reducto/upload
        Content-Type: application/json
        
        {}
        ```
        
        ### List Jobs
        
        ```bash
        GET /reducto/jobs
        ```
        
        ### Get Job Status
        
        ```bash
        GET /reducto/job/{job_id}
        ```
        
        ### Get Version
        
        ```bash
        GET /reducto/version
        ```
        
        ## Job Status Values
        
        - `Pending`: Job is queued or processing
        - `InProgress`: Job is actively processing
        - `Completed`: Job finished successfully
        - `Failed`: Job failed
        
        ## Document URL Formats
        
        - Public URL: `https://example.com/document.pdf`
        - Presigned S3: `https://bucket.s3.amazonaws.com/key?...`
        - Upload result: `reducto://file-id`
        - Previous job: `jobid://job-id`
        
        ## Resources
        
        - [Reducto Documentation](https://docs.reducto.ai)
        - [Reducto API Reference](https://docs.reducto.ai/api-reference)
        - [Reducto Studio](https://studio.reducto.ai)
        
    • salesforce
      • README.md 6.6 KB
        # Salesforce Routing Reference
        
        **App name:** `salesforce`
        **Base URL proxied:** `{instance}.salesforce.com`
        
        The router automatically determines the instance URL from your OAuth credentials (`instance_url` from the token response).
        
        ## API Path Pattern
        
        ```
        /salesforce/services/data/v59.0/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### SOQL Query
        ```bash
        GET /salesforce/services/data/v59.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10
        ```
        
        Complex query:
        ```bash
        GET /salesforce/services/data/v59.0/query?q=SELECT+Id,Name,Email+FROM+Contact+WHERE+Email+LIKE+'%example.com'+ORDER+BY+CreatedDate+DESC
        ```
        
        ### Get Object
        ```bash
        GET /salesforce/services/data/v59.0/sobjects/{objectType}/{recordId}
        ```
        
        Example:
        ```bash
        GET /salesforce/services/data/v59.0/sobjects/Contact/003XXXXXXXXXXXXXXX
        ```
        
        ### Create Object
        ```bash
        POST /salesforce/services/data/v59.0/sobjects/{objectType}
        Content-Type: application/json
        
        {
          "FirstName": "John",
          "LastName": "Doe",
          "Email": "john@example.com"
        }
        ```
        
        ### Update Object
        ```bash
        PATCH /salesforce/services/data/v59.0/sobjects/{objectType}/{recordId}
        Content-Type: application/json
        
        {
          "Phone": "+1234567890"
        }
        ```
        
        ### Delete Object
        ```bash
        DELETE /salesforce/services/data/v59.0/sobjects/{objectType}/{recordId}
        ```
        
        ### Describe Object (get schema)
        ```bash
        GET /salesforce/services/data/v59.0/sobjects/{objectType}/describe
        ```
        
        ### List Objects
        ```bash
        GET /salesforce/services/data/v59.0/sobjects
        ```
        
        ### Search (SOSL)
        ```bash
        GET /salesforce/services/data/v59.0/search?q=FIND+{searchTerm}+IN+ALL+FIELDS+RETURNING+Contact(Id,Name)
        ```
        
        ### Composite Request (batch multiple operations)
        ```bash
        POST /salesforce/services/data/v59.0/composite
        Content-Type: application/json
        
        {
          "compositeRequest": [
            {
              "method": "GET",
              "url": "/services/data/v59.0/sobjects/Contact/003XXXXXXX",
              "referenceId": "contact1"
            },
            {
              "method": "GET",
              "url": "/services/data/v59.0/sobjects/Account/001XXXXXXX",
              "referenceId": "account1"
            }
          ]
        }
        ```
        
        ### Composite Batch Request
        ```bash
        POST /salesforce/services/data/v59.0/composite/batch
        Content-Type: application/json
        
        {
          "batchRequests": [
            {"method": "GET", "url": "v59.0/sobjects/Contact/003XXXXXXX"},
            {"method": "GET", "url": "v59.0/sobjects/Account/001XXXXXXX"}
          ]
        }
        ```
        
        ### sObject Collections Create (batch create)
        ```bash
        POST /salesforce/services/data/v59.0/composite/sobjects
        Content-Type: application/json
        
        {
          "allOrNone": true,
          "records": [
            {"attributes": {"type": "Contact"}, "FirstName": "John", "LastName": "Doe"},
            {"attributes": {"type": "Contact"}, "FirstName": "Jane", "LastName": "Smith"}
          ]
        }
        ```
        
        ### sObject Collections Delete (batch delete)
        ```bash
        DELETE /salesforce/services/data/v59.0/composite/sobjects?ids=003XXXXX,003YYYYY&allOrNone=true
        ```
        
        ### Get Updated Records
        ```bash
        GET /salesforce/services/data/v59.0/sobjects/{objectType}/updated/?start=2026-01-30T00:00:00Z&end=2026-02-01T00:00:00Z
        ```
        
        ### Get Deleted Records
        ```bash
        GET /salesforce/services/data/v59.0/sobjects/{objectType}/deleted/?start=2026-01-30T00:00:00Z&end=2026-02-01T00:00:00Z
        ```
        
        ### Get API Limits
        ```bash
        GET /salesforce/services/data/v59.0/limits
        ```
        
        ### List API Versions
        ```bash
        GET /salesforce/services/data/
        ```
        
        ## Common Objects
        
        - `Account` - Companies/Organizations
        - `Contact` - People associated with accounts
        - `Lead` - Potential customers
        - `Opportunity` - Sales deals
        - `Case` - Support cases
        - `Task` - To-do items
        - `Event` - Calendar events
        
        ## Notes
        
        - Use URL encoding for SOQL queries (spaces become `+`)
        - Record IDs are 15 or 18 character alphanumeric strings
        - API version (v59.0) can be adjusted; latest is v65.0
        - Update and Delete operations return HTTP 204 (no content) on success
        - Dates for updated/deleted queries use ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`
        - Use `allOrNone: true` in batch operations for atomic transactions
        
        ## Resources
        
        - [REST API Developer Guide](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_rest.htm)
        - [List sObjects](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_describeGlobal.htm)
        - [Describe sObject](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_sobject_describe.htm)
        - [Get Record](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_sobject_retrieve_get.htm)
        - [Get Record by External ID](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_sobject_upsert_get.htm)
        - [Create Record](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_create.htm)
        - [Update Record](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_update_fields.htm)
        - [Delete Record](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_delete_record.htm)
        - [Upsert Record](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_upsert.htm)
        - [Query Records (SOQL)](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_query.htm)
        - [Get Updated Records](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_getupdated.htm)
        - [Get Deleted Records](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_getdeleted.htm)
        - [Composite Request](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_composite_post.htm)
        - [Composite Batch Request](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/requests_composite_batch.htm)
        - [Composite Batch Response](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/responses_composite_batch.htm)
        - [Composite Graph](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_graph.htm)
        - [sObject Collections Create](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_sobjects_collections_create.htm)
        - [sObject Collections Update](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_sobjects_collections_update.htm)
        - [sObject Collections Delete](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_sobjects_collections_delete.htm)
        - [SOQL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql.htm)
        - [SOSL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_sosl.htm)
        - [API Resources List](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_list.htm)
    • sendgrid
      • README.md 2.9 KB
        # SendGrid Routing Reference
        
        **App name:** `sendgrid`
        **Base URL proxied:** `api.sendgrid.com`
        
        ## API Path Pattern
        
        ```
        /sendgrid/v3/{resource}
        ```
        
        ## Common Endpoints
        
        ### Mail Send
        
        ```bash
        POST /sendgrid/v3/mail/send
        Content-Type: application/json
        
        {
          "personalizations": [{"to": [{"email": "recipient@example.com"}], "subject": "Hello"}],
          "from": {"email": "sender@example.com"},
          "content": [{"type": "text/plain", "value": "Hello World"}]
        }
        ```
        
        ### User Profile
        
        ```bash
        GET /sendgrid/v3/user/profile
        GET /sendgrid/v3/user/account
        ```
        
        ### Marketing Contacts
        
        ```bash
        GET /sendgrid/v3/marketing/contacts
        PUT /sendgrid/v3/marketing/contacts
        DELETE /sendgrid/v3/marketing/contacts?ids=id1,id2
        POST /sendgrid/v3/marketing/contacts/search
        ```
        
        ### Marketing Lists
        
        ```bash
        GET /sendgrid/v3/marketing/lists
        POST /sendgrid/v3/marketing/lists
        GET /sendgrid/v3/marketing/lists/{list_id}
        PATCH /sendgrid/v3/marketing/lists/{list_id}
        DELETE /sendgrid/v3/marketing/lists/{list_id}
        ```
        
        ### Segments
        
        ```bash
        GET /sendgrid/v3/marketing/segments
        POST /sendgrid/v3/marketing/segments
        DELETE /sendgrid/v3/marketing/segments/{segment_id}
        ```
        
        ### Templates
        
        ```bash
        GET /sendgrid/v3/templates
        POST /sendgrid/v3/templates
        GET /sendgrid/v3/templates/{template_id}
        PATCH /sendgrid/v3/templates/{template_id}
        DELETE /sendgrid/v3/templates/{template_id}
        ```
        
        ### Senders
        
        ```bash
        GET /sendgrid/v3/senders
        POST /sendgrid/v3/senders
        PATCH /sendgrid/v3/senders/{sender_id}
        DELETE /sendgrid/v3/senders/{sender_id}
        ```
        
        ### Suppressions
        
        ```bash
        GET /sendgrid/v3/suppression/bounces
        GET /sendgrid/v3/suppression/blocks
        GET /sendgrid/v3/suppression/invalid_emails
        GET /sendgrid/v3/suppression/spam_reports
        GET /sendgrid/v3/suppression/unsubscribes
        ```
        
        ### Unsubscribe Groups (ASM)
        
        ```bash
        GET /sendgrid/v3/asm/groups
        POST /sendgrid/v3/asm/groups
        PATCH /sendgrid/v3/asm/groups/{group_id}
        DELETE /sendgrid/v3/asm/groups/{group_id}
        ```
        
        ### Statistics
        
        ```bash
        GET /sendgrid/v3/stats?start_date=2026-02-01
        GET /sendgrid/v3/categories/stats?start_date=2026-02-01&categories=cat1
        GET /sendgrid/v3/mailbox_providers/stats?start_date=2026-02-01
        ```
        
        ### API Keys
        
        ```bash
        GET /sendgrid/v3/api_keys
        POST /sendgrid/v3/api_keys
        PATCH /sendgrid/v3/api_keys/{api_key_id}
        DELETE /sendgrid/v3/api_keys/{api_key_id}
        ```
        
        ## Pagination
        
        Marketing endpoints use token-based pagination:
        ```bash
        GET /sendgrid/v3/marketing/lists?page_size=100&page_token={token}
        ```
        
        Suppression endpoints use offset pagination:
        ```bash
        GET /sendgrid/v3/suppression/bounces?limit=100&offset=0
        ```
        
        ## Notes
        
        - All requests use JSON content type
        - Dates are in YYYY-MM-DD format
        - Mail send returns 202 Accepted on success
        - Dynamic template IDs start with `d-`
        - Marketing contact operations are asynchronous
        
        ## Resources
        
        - [SendGrid API Documentation](https://www.twilio.com/docs/sendgrid/api-reference)
        - [Mail Send API](https://www.twilio.com/docs/sendgrid/api-reference/mail-send)
        
    • sentry
      • README.md 3.1 KB
        # Sentry Routing Reference
        
        **App name:** `sentry`
        **Base URL proxied:** `{subdomain}.sentry.io`
        
        ## API Path Pattern
        
        ```
        /sentry/api/0/{resource}
        ```
        
        Sentry API uses version `0` prefix in all paths.
        
        ## Common Endpoints
        
        ### List Organizations
        ```bash
        GET /sentry/api/0/organizations/
        ```
        
        ### Retrieve Organization
        ```bash
        GET /sentry/api/0/organizations/{organization_slug}/
        ```
        
        ### List Organization Projects
        ```bash
        GET /sentry/api/0/organizations/{organization_slug}/projects/
        ```
        
        ### List Organization Members
        ```bash
        GET /sentry/api/0/organizations/{organization_slug}/members/
        ```
        
        ### Retrieve Project
        ```bash
        GET /sentry/api/0/projects/{organization_slug}/{project_slug}/
        ```
        
        ### List Project Issues
        ```bash
        GET /sentry/api/0/projects/{organization_slug}/{project_slug}/issues/
        ```
        
        Query parameters:
        - `statsPeriod` - Stats period: `24h`, `14d`, or empty
        - `query` - Sentry search query (default: `is:unresolved`)
        - `cursor` - Pagination cursor
        
        ### List Organization Issues
        ```bash
        GET /sentry/api/0/organizations/{organization_slug}/issues/
        ```
        
        ### Retrieve Issue
        ```bash
        GET /sentry/api/0/issues/{issue_id}/
        ```
        
        ### Update Issue
        ```bash
        PUT /sentry/api/0/issues/{issue_id}/
        Content-Type: application/json
        
        {
          "status": "resolved"
        }
        ```
        
        Status values: `resolved`, `unresolved`, `ignored`
        
        ### Delete Issue
        ```bash
        DELETE /sentry/api/0/issues/{issue_id}/
        ```
        
        ### List Issue Events
        ```bash
        GET /sentry/api/0/issues/{issue_id}/events/
        ```
        
        ### List Project Events
        ```bash
        GET /sentry/api/0/projects/{organization_slug}/{project_slug}/events/
        ```
        
        ### List Organization Teams
        ```bash
        GET /sentry/api/0/organizations/{organization_slug}/teams/
        ```
        
        ### Create Team
        ```bash
        POST /sentry/api/0/organizations/{organization_slug}/teams/
        Content-Type: application/json
        
        {
          "name": "New Team",
          "slug": "new-team"
        }
        ```
        
        ### Retrieve Team
        ```bash
        GET /sentry/api/0/teams/{organization_slug}/{team_slug}/
        ```
        
        ### List Organization Releases
        ```bash
        GET /sentry/api/0/organizations/{organization_slug}/releases/
        ```
        
        ### Create Release
        ```bash
        POST /sentry/api/0/organizations/{organization_slug}/releases/
        Content-Type: application/json
        
        {
          "version": "1.0.0",
          "projects": ["project-slug"]
        }
        ```
        
        ### Retrieve Release
        ```bash
        GET /sentry/api/0/organizations/{organization_slug}/releases/{version}/
        ```
        
        ### Create Deploy
        ```bash
        POST /sentry/api/0/organizations/{organization_slug}/releases/{version}/deploys/
        Content-Type: application/json
        
        {
          "environment": "production"
        }
        ```
        
        ## Notes
        
        - Organization and project identifiers use slugs (lowercase, hyphenated)
        - Issue IDs are numeric
        - Release versions can contain special characters (URL encode as needed)
        - Uses cursor-based pagination via Link header
        - Most endpoints require OAuth scopes like `event:read`, `project:read`, `org:read`
        
        ## Resources
        
        - [Sentry API Documentation](https://docs.sentry.io/api/)
        - [Events API](https://docs.sentry.io/api/events/)
        - [Projects API](https://docs.sentry.io/api/projects/)
        - [Organizations API](https://docs.sentry.io/api/organizations/)
        - [Teams API](https://docs.sentry.io/api/teams/)
        - [Releases API](https://docs.sentry.io/api/releases/)
        
    • sharepoint
      • README.md 5.2 KB
        # SharePoint Routing Reference
        
        **App name:** `sharepoint`
        **Base URL proxied:** `graph.microsoft.com`
        
        ## API Path Pattern
        
        ```
        /sharepoint/v1.0/sites/{site_id}
        /sharepoint/v1.0/sites/{site_id}/lists
        /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items
        /sharepoint/v1.0/sites/{site_id}/drives
        /sharepoint/v1.0/drives/{drive_id}/root/children
        /sharepoint/v1.0/drives/{drive_id}/items/{item_id}
        ```
        
        ## Sites
        
        ### Get Root Site
        ```bash
        GET /sharepoint/v1.0/sites/root
        ```
        
        ### Get Site by ID
        ```bash
        GET /sharepoint/v1.0/sites/{site_id}
        ```
        
        Site IDs follow the format: `{hostname},{site-guid},{web-guid}`
        
        ### Get Site by Hostname
        ```bash
        GET /sharepoint/v1.0/sites/{hostname}:/
        GET /sharepoint/v1.0/sites/{hostname}:/{site-path}
        ```
        
        ### Search Sites
        ```bash
        GET /sharepoint/v1.0/sites?search={query}
        ```
        
        ### List Subsites
        ```bash
        GET /sharepoint/v1.0/sites/{site_id}/sites
        ```
        
        ### Get Site Columns
        ```bash
        GET /sharepoint/v1.0/sites/{site_id}/columns
        ```
        
        ### Get Followed Sites
        ```bash
        GET /sharepoint/v1.0/me/followedSites
        ```
        
        ## Lists
        
        ### List Site Lists
        ```bash
        GET /sharepoint/v1.0/sites/{site_id}/lists
        ```
        
        ### Get List
        ```bash
        GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}
        ```
        
        ### List Columns
        ```bash
        GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/columns
        ```
        
        ### List Content Types
        ```bash
        GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/contentTypes
        ```
        
        ### List Items
        ```bash
        GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items
        GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items?$expand=fields
        ```
        
        ### Create List Item
        ```bash
        POST /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items
        Content-Type: application/json
        
        {
          "fields": {
            "Title": "New Item",
            "Description": "Item description"
          }
        }
        ```
        
        ### Update List Item
        ```bash
        PATCH /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items/{item_id}/fields
        Content-Type: application/json
        
        {
          "Title": "Updated Title"
        }
        ```
        
        ### Delete List Item
        ```bash
        DELETE /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items/{item_id}
        ```
        
        ## Drives (Document Libraries)
        
        ### List Site Drives
        ```bash
        GET /sharepoint/v1.0/sites/{site_id}/drives
        ```
        
        ### Get Default Drive
        ```bash
        GET /sharepoint/v1.0/sites/{site_id}/drive
        ```
        
        ### Get Drive by ID
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}
        ```
        
        ## Files and Folders
        
        ### List Root Contents
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}/root/children
        ```
        
        ### Get Item by ID
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}
        ```
        
        ### Get Item by Path
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}/root:/{path}
        ```
        
        ### List Folder Contents
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}/items/{folder_id}/children
        ```
        
        ### Download File
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/content
        GET /sharepoint/v1.0/drives/{drive_id}/root:/{path}:/content
        ```
        
        ### Upload File
        ```bash
        PUT /sharepoint/v1.0/drives/{drive_id}/root:/{filename}:/content
        Content-Type: application/octet-stream
        ```
        
        ### Create Folder
        ```bash
        POST /sharepoint/v1.0/drives/{drive_id}/root/children
        Content-Type: application/json
        
        {
          "name": "New Folder",
          "folder": {},
          "@microsoft.graph.conflictBehavior": "rename"
        }
        ```
        
        ### Rename/Move Item
        ```bash
        PATCH /sharepoint/v1.0/drives/{drive_id}/items/{item_id}
        Content-Type: application/json
        
        {
          "name": "new-name.txt"
        }
        ```
        
        ### Copy Item
        ```bash
        POST /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/copy
        Content-Type: application/json
        
        {
          "name": "copied-file.txt"
        }
        ```
        
        ### Delete Item
        ```bash
        DELETE /sharepoint/v1.0/drives/{drive_id}/items/{item_id}
        ```
        
        ### Search Files
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}/root/search(q='{query}')
        ```
        
        ### Track Changes (Delta)
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}/root/delta
        ```
        
        ## Sharing and Permissions
        
        ### Get Permissions
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/permissions
        ```
        
        ### Create Sharing Link
        ```bash
        POST /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/createLink
        Content-Type: application/json
        
        {
          "type": "view",
          "scope": "organization"
        }
        ```
        
        ## Versions
        
        ### List Versions
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/versions
        ```
        
        ### Get Version
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/versions/{version_id}
        ```
        
        ### Download Version Content
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/versions/{version_id}/content
        ```
        
        ## Thumbnails
        
        ### Get Thumbnails
        ```bash
        GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/thumbnails
        ```
        
        ## Query Parameters
        
        - `$select` - Select specific properties
        - `$expand` - Expand related entities (e.g., `fields` for list items)
        - `$filter` - Filter results
        - `$orderby` - Sort results
        - `$top` - Limit results
        - `$skip` - Skip results (pagination)
        
        ## Notes
        
        - Site IDs follow the format: `{hostname},{site-guid},{web-guid}`
        - Drive IDs with `!` must be URL-encoded: `b!abc123` → `b%21abc123`
        - File uploads via PUT limited to 4MB; use upload sessions for larger files
        - Copy operations are asynchronous (returns 202)
        - Deleted items go to the SharePoint recycle bin
        
        ## Resources
        
        - [SharePoint Sites API](https://learn.microsoft.com/en-us/graph/api/resources/sharepoint)
        - [DriveItem API](https://learn.microsoft.com/en-us/graph/api/resources/driveitem)
        - [List API](https://learn.microsoft.com/en-us/graph/api/resources/list)
        
    • signnow
      • README.md 1.8 KB
        # SignNow Routing Reference
        
        **App name:** `signnow`
        **Base URL proxied:** `api.signnow.com`
        
        ## API Path Pattern
        
        ```
        /signnow/{resource}
        ```
        
        ## Common Endpoints
        
        ### User
        
        ```bash
        GET /signnow/user
        GET /signnow/user/documents
        ```
        
        ### Documents
        
        ```bash
        # Upload document (multipart form data)
        POST /signnow/document
        
        # Get document
        GET /signnow/document/{document_id}
        
        # Update document
        PUT /signnow/document/{document_id}
        
        # Download document
        GET /signnow/document/{document_id}/download?type=collapsed
        
        # Get document history
        GET /signnow/document/{document_id}/historyfull
        
        # Move document to folder
        POST /signnow/document/{document_id}/move
        
        # Merge documents (returns PDF)
        POST /signnow/document/merge
        
        # Delete document
        DELETE /signnow/document/{document_id}
        ```
        
        ### Templates
        
        ```bash
        # Create template from document
        POST /signnow/template
        
        # Create document from template
        POST /signnow/template/{template_id}/copy
        ```
        
        ### Invites
        
        ```bash
        # Send freeform invite
        POST /signnow/document/{document_id}/invite
        
        # Create signing link (requires document fields)
        POST /signnow/link
        ```
        
        ### Folders
        
        ```bash
        GET /signnow/folder
        GET /signnow/folder/{folder_id}
        ```
        
        ### Webhooks (Event Subscriptions)
        
        ```bash
        GET /signnow/event_subscription
        POST /signnow/event_subscription
        DELETE /signnow/event_subscription/{subscription_id}
        ```
        
        ## Notes
        
        - Documents must be uploaded as multipart form data with PDF file
        - Supported file types: PDF, DOC, DOCX, ODT, RTF, PNG, JPG
        - System folders cannot be renamed or deleted
        - Creating signing links requires documents to have signature fields
        - Custom invite subject/message requires paid subscription
        - Rate limit in development mode: 500 requests/hour per application
        
        ## Resources
        
        - [SignNow API Reference](https://docs.signnow.com/docs/signnow/reference)
        - [SignNow Developer Portal](https://www.signnow.com/developers)
        
    • slack
      • README.md 7.6 KB
        # Slack Routing Reference
        
        **App name:** `slack`
        **Base URL proxied:** `slack.com`
        
        ## API Path Pattern
        
        ```
        /slack/api/{method}
        ```
        
        ## Authentication
        
        ### Auth Test
        ```bash
        GET /slack/api/auth.test
        ```
        
        Returns current user and team info.
        
        ---
        
        ## Messages
        
        ### Post Message
        ```bash
        POST /slack/api/chat.postMessage
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "text": "Hello, world!"
        }
        ```
        
        With blocks:
        ```bash
        POST /slack/api/chat.postMessage
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "blocks": [
            {"type": "section", "text": {"type": "mrkdwn", "text": "*Bold* and _italic_"}}
          ]
        }
        ```
        
        ### Post Thread Reply
        ```bash
        POST /slack/api/chat.postMessage
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "thread_ts": "1234567890.123456",
          "text": "This is a reply in a thread"
        }
        ```
        
        ### Update Message
        ```bash
        POST /slack/api/chat.update
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "ts": "1234567890.123456",
          "text": "Updated message"
        }
        ```
        
        ### Delete Message
        ```bash
        POST /slack/api/chat.delete
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "ts": "1234567890.123456"
        }
        ```
        
        ### Schedule Message
        ```bash
        POST /slack/api/chat.scheduleMessage
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "text": "Scheduled message",
          "post_at": 1734567890
        }
        ```
        
        ### List Scheduled Messages
        ```bash
        GET /slack/api/chat.scheduledMessages.list
        ```
        
        ### Delete Scheduled Message
        ```bash
        POST /slack/api/chat.deleteScheduledMessage
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "scheduled_message_id": "Q1234567890"
        }
        ```
        
        ### Get Permalink
        ```bash
        GET /slack/api/chat.getPermalink?channel=C0123456789&message_ts=1234567890.123456
        ```
        
        ---
        
        ## Conversations (Channels)
        
        ### List Channels
        ```bash
        GET /slack/api/conversations.list?types=public_channel,private_channel&limit=100
        ```
        
        Types: `public_channel`, `private_channel`, `im`, `mpim`
        
        ### Get Channel Info
        ```bash
        GET /slack/api/conversations.info?channel=C0123456789
        ```
        
        ### Get Channel History
        ```bash
        GET /slack/api/conversations.history?channel=C0123456789&limit=100
        ```
        
        With time range:
        ```bash
        GET /slack/api/conversations.history?channel=C0123456789&oldest=1234567890&latest=1234567899
        ```
        
        ### Get Thread Replies
        ```bash
        GET /slack/api/conversations.replies?channel=C0123456789&ts=1234567890.123456
        ```
        
        ### Get Channel Members
        ```bash
        GET /slack/api/conversations.members?channel=C0123456789&limit=100
        ```
        
        ### Create Channel
        ```bash
        POST /slack/api/conversations.create
        Content-Type: application/json
        
        {
          "name": "new-channel-name",
          "is_private": false
        }
        ```
        
        ### Join Channel
        ```bash
        POST /slack/api/conversations.join
        Content-Type: application/json
        
        {
          "channel": "C0123456789"
        }
        ```
        
        ### Leave Channel
        ```bash
        POST /slack/api/conversations.leave
        Content-Type: application/json
        
        {
          "channel": "C0123456789"
        }
        ```
        
        ### Archive Channel
        ```bash
        POST /slack/api/conversations.archive
        Content-Type: application/json
        
        {
          "channel": "C0123456789"
        }
        ```
        
        ### Unarchive Channel
        ```bash
        POST /slack/api/conversations.unarchive
        Content-Type: application/json
        
        {
          "channel": "C0123456789"
        }
        ```
        
        ### Rename Channel
        ```bash
        POST /slack/api/conversations.rename
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "name": "new-name"
        }
        ```
        
        ### Set Channel Topic
        ```bash
        POST /slack/api/conversations.setTopic
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "topic": "Channel topic here"
        }
        ```
        
        ### Set Channel Purpose
        ```bash
        POST /slack/api/conversations.setPurpose
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "purpose": "Channel purpose here"
        }
        ```
        
        ### Invite to Channel
        ```bash
        POST /slack/api/conversations.invite
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "users": "U0123456789,U9876543210"
        }
        ```
        
        ### Kick from Channel
        ```bash
        POST /slack/api/conversations.kick
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "user": "U0123456789"
        }
        ```
        
        ### Mark Channel Read
        ```bash
        POST /slack/api/conversations.mark
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "ts": "1234567890.123456"
        }
        ```
        
        ---
        
        ## Direct Messages
        
        ### Open DM Conversation
        ```bash
        POST /slack/api/conversations.open
        Content-Type: application/json
        
        {
          "users": "U0123456789"
        }
        ```
        
        For group DM:
        ```bash
        POST /slack/api/conversations.open
        Content-Type: application/json
        
        {
          "users": "U0123456789,U9876543210"
        }
        ```
        
        ### List DM Channels
        ```bash
        GET /slack/api/conversations.list?types=im
        ```
        
        ### List Group DM Channels
        ```bash
        GET /slack/api/conversations.list?types=mpim
        ```
        
        ### My Conversations
        ```bash
        GET /slack/api/users.conversations?limit=100
        ```
        
        ---
        
        ## Users
        
        ### List Users
        ```bash
        GET /slack/api/users.list?limit=100
        ```
        
        ### Get User Info
        ```bash
        GET /slack/api/users.info?user=U0123456789
        ```
        
        ### Get User Presence
        ```bash
        GET /slack/api/users.getPresence?user=U0123456789
        ```
        
        ### Set User Presence
        ```bash
        POST /slack/api/users.setPresence
        Content-Type: application/json
        
        {
          "presence": "away"
        }
        ```
        
        ### Lookup User by Email
        ```bash
        GET /slack/api/users.lookupByEmail?email=user@example.com
        ```
        
        ---
        
        ## Reactions
        
        ### Add Reaction
        ```bash
        POST /slack/api/reactions.add
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "name": "thumbsup",
          "timestamp": "1234567890.123456"
        }
        ```
        
        ### Remove Reaction
        ```bash
        POST /slack/api/reactions.remove
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "name": "thumbsup",
          "timestamp": "1234567890.123456"
        }
        ```
        
        ### Get Reactions on Message
        ```bash
        GET /slack/api/reactions.get?channel=C0123456789&timestamp=1234567890.123456
        ```
        
        ### List My Reactions
        ```bash
        GET /slack/api/reactions.list?limit=100
        ```
        
        ---
        
        ## Stars
        
        ### List Stars
        ```bash
        GET /slack/api/stars.list?limit=100
        ```
        
        ### Add Star
        ```bash
        POST /slack/api/stars.add
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "timestamp": "1234567890.123456"
        }
        ```
        
        ### Remove Star
        ```bash
        POST /slack/api/stars.remove
        Content-Type: application/json
        
        {
          "channel": "C0123456789",
          "timestamp": "1234567890.123456"
        }
        ```
        
        ---
        
        ## Bots
        
        ### Get Bot Info
        ```bash
        GET /slack/api/bots.info?bot=B0123456789
        ```
        
        ---
        
        ## Files
        
        ### Upload File
        ```bash
        POST /slack/api/files.upload
        Content-Type: multipart/form-data
        
        channels=C0123456789
        content=file content here
        filename=example.txt
        title=Example File
        ```
        
        ### Upload File v2 (Get Upload URL)
        ```bash
        GET /slack/api/files.getUploadURLExternal?filename=example.txt&length=1024
        ```
        
        ### Complete File Upload
        ```bash
        POST /slack/api/files.completeUploadExternal
        Content-Type: application/json
        
        {
          "files": [{"id": "F0123456789", "title": "My File"}],
          "channel_id": "C0123456789"
        }
        ```
        
        ### Delete File
        ```bash
        POST /slack/api/files.delete
        Content-Type: application/json
        
        {
          "file": "F0123456789"
        }
        ```
        
        ### Get File Info
        ```bash
        GET /slack/api/files.info?file=F0123456789
        ```
        
        ---
        
        ## Notes
        
        - Authentication is automatic via managed OAuth
        - Channel IDs: `C` (public), `G` (private/group), `D` (DM)
        - User IDs start with `U`, Bot IDs start with `B`, Team IDs start with `T`
        - Message timestamps (`ts`) are unique identifiers
        - Use `mrkdwn` type for Slack-flavored markdown
        - Thread replies use `thread_ts` to reference parent message
        - Cursor-based pagination: use `cursor` from `response_metadata.next_cursor`
        - If you encounter `missing_scope` errors, contact [Maton Support](mailto:support@maton.ai) to request additional scopes
        
        ## Resources
        
        - [Slack API Methods](https://api.slack.com/methods)
        - [Web API Reference](https://api.slack.com/web)
        - [Block Kit Reference](https://api.slack.com/reference/block-kit)
        - [Message Formatting](https://api.slack.com/reference/surfaces/formatting)
        - [Rate Limits](https://api.slack.com/docs/rate-limits)
        
    • snapchat
      • README.md 2.7 KB
        # Snapchat Routing Reference
        
        **App name:** `snapchat`
        **Base URL proxied:** `adsapi.snapchat.com`
        
        ## API Path Pattern
        
        ```
        /snapchat/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### Current User
        
        #### Get Current User
        ```bash
        GET /snapchat/v1/me
        ```
        
        #### List Organizations
        ```bash
        GET /snapchat/v1/me/organizations
        ```
        
        ### Organizations
        
        #### Get Organization
        ```bash
        GET /snapchat/v1/organizations/{organizationId}
        ```
        
        #### List Ad Accounts
        ```bash
        GET /snapchat/v1/organizations/{organizationId}/adaccounts
        ```
        
        #### List Funding Sources
        ```bash
        GET /snapchat/v1/organizations/{organizationId}/fundingsources
        ```
        
        ### Ad Accounts
        
        #### Get Ad Account
        ```bash
        GET /snapchat/v1/adaccounts/{adAccountId}
        ```
        
        ### Campaigns
        
        #### List Campaigns
        ```bash
        GET /snapchat/v1/adaccounts/{adAccountId}/campaigns
        ```
        
        #### Create Campaign
        ```bash
        POST /snapchat/v1/adaccounts/{adAccountId}/campaigns
        Content-Type: application/json
        
        {
          "campaigns": [{
            "name": "Campaign Name",
            "status": "PAUSED",
            "ad_account_id": "{adAccountId}",
            "start_time": "2026-02-15T00:00:00.000-08:00"
          }]
        }
        ```
        
        ### Ad Squads
        
        #### List Ad Squads
        ```bash
        GET /snapchat/v1/adaccounts/{adAccountId}/adsquads
        ```
        
        ### Ads
        
        #### List Ads
        ```bash
        GET /snapchat/v1/adaccounts/{adAccountId}/ads
        ```
        
        ### Creatives
        
        #### List Creatives
        ```bash
        GET /snapchat/v1/adaccounts/{adAccountId}/creatives
        ```
        
        ### Media
        
        #### List Media
        ```bash
        GET /snapchat/v1/adaccounts/{adAccountId}/media
        ```
        
        ### Stats
        
        #### Get Ad Account Stats
        ```bash
        GET /snapchat/v1/adaccounts/{adAccountId}/stats?granularity=DAY&start_time=2026-02-01&end_time=2026-02-14
        ```
        
        ### Targeting
        
        #### Get Countries
        ```bash
        GET /snapchat/v1/targeting/geo/country
        ```
        
        #### Get Regions
        ```bash
        GET /snapchat/v1/targeting/geo/{countryCode}/region
        ```
        
        ### Ads Gallery (Public Ads Library)
        
        #### List Sponsored Content
        ```bash
        GET /snapchat/v1/ads_library/sponsored_content
        ```
        
        #### Search Ads
        ```bash
        POST /snapchat/v1/ads_library/ads/search
        Content-Type: application/json
        
        {
          "paying_advertiser_name": "Nike",
          "countries": ["fr", "de"],
          "limit": 50
        }
        ```
        
        ## Notes
        
        - Monetary values use micro-currency (1 USD = 1,000,000 micro)
        - Bulk operations accept arrays for batch create/update
        - Pagination uses `limit` (50-1000) and cursor via `next_link`
        - Sorting: `sort=updated_at-desc` or `sort=created_at-desc`
        - Ads Gallery: Use lowercase 2-letter ISO country codes (e.g., `fr`, `de`). US may not be available.
        
        ## Resources
        
        - [Snapchat Ads API Introduction](https://developers.snap.com/api/marketing-api/Ads-API/introduction)
        - [API Patterns](https://developers.snap.com/api/marketing-api/Ads-API/api-patterns)
        - [Ads Gallery API](https://developers.snap.com/api/marketing-api/Ads-Gallery-Api/using-the-api)
        
    • squarespace
      • README.md 8.1 KB
        # Squarespace Routing Reference
        
        **App name:** `squarespace`
        **Base URL proxied:** `api.squarespace.com`
        
        ## API Path Pattern
        
        ```
        /squarespace/v2/commerce/products      # Products API (v2)
        /squarespace/1.0/commerce/store_pages  # Store Pages (1.0 only)
        /squarespace/1.0/commerce/inventory    # Inventory API
        /squarespace/1.0/commerce/orders       # Orders API
        /squarespace/1.0/commerce/transactions # Transactions API
        /squarespace/1.0/profiles              # Profiles API
        ```
        
        ## Important Notes
        
        - All requests require a `User-Agent` header describing your application
        - Requests without a custom User-Agent are subject to stricter rate limits
        - Maximum 50 items per batch request
        - Idempotency-Key header is required for stock adjustments and order creation
        - Rate limit: 300 requests per minute (5 per second)
        - Create Order has a stricter rate limit: 100 requests per hour per website
        
        ## Common Endpoints
        
        ### Inventory
        
        #### List All Inventory
        ```bash
        GET /squarespace/1.0/commerce/inventory
        GET /squarespace/1.0/commerce/inventory?cursor={cursor}
        ```
        
        #### Get Specific Inventory
        ```bash
        GET /squarespace/1.0/commerce/inventory/{variantId1},{variantId2}
        ```
        Max 50 variant IDs per request.
        
        #### Adjust Stock Quantities
        ```bash
        POST /squarespace/1.0/commerce/inventory/adjustments
        Content-Type: application/json
        Idempotency-Key: unique-key-here
        
        {
          "incrementOperations": [{"variantId": "variant-id", "quantity": 5}],
          "decrementOperations": [{"variantId": "variant-id", "quantity": 2}],
          "setFiniteOperations": [{"variantId": "variant-id", "quantity": 100}],
          "setUnlimitedOperations": ["variant-id"]
        }
        ```
        
        ### Orders
        
        #### List All Orders
        ```bash
        GET /squarespace/1.0/commerce/orders
        GET /squarespace/1.0/commerce/orders?fulfillmentStatus=PENDING
        GET /squarespace/1.0/commerce/orders?modifiedAfter=2024-01-01T00:00:00Z&modifiedBefore=2024-12-31T23:59:59Z
        GET /squarespace/1.0/commerce/orders?customerId={customerId}
        ```
        
        Note: Cannot combine `cursor` with date range parameters.
        
        #### Get Specific Order
        ```bash
        GET /squarespace/1.0/commerce/orders/{orderId}
        ```
        
        #### Create Order
        ```bash
        POST /squarespace/1.0/commerce/orders
        Content-Type: application/json
        Idempotency-Key: unique-key-here
        
        {
          "channelName": "External Store",
          "externalOrderReference": "ORDER-12345",
          "customerEmail": "customer@example.com",
          "lineItems": [
            {
              "lineItemType": "PHYSICAL_PRODUCT",
              "variantId": "variant-id",
              "quantity": 2,
              "unitPricePaid": {"currency": "USD", "value": "29.99"}
            }
          ],
          "subtotal": {"currency": "USD", "value": "59.98"},
          "priceTaxInterpretation": "EXCLUSIVE",
          "grandTotal": {"currency": "USD", "value": "59.98"},
          "createdOn": "2024-01-15T10:30:00Z"
        }
        ```
        
        Note: `subtotal` must equal sum of `lineItems.unitPricePaid.value * quantity`.
        
        #### Fulfill Order
        ```bash
        POST /squarespace/1.0/commerce/orders/{orderId}/fulfillments
        Content-Type: application/json
        
        {
          "shouldSendNotification": true,
          "shipments": [
            {
              "shipDate": "2024-01-16T08:00:00Z",
              "carrierName": "USPS",
              "service": "Priority Mail",
              "trackingNumber": "9400111899223456789012",
              "trackingUrl": "https://tools.usps.com/go/TrackConfirmAction?tLabels=9400111899223456789012"
            }
          ]
        }
        ```
        
        ### Products (v2 API)
        
        #### List Store Pages
        ```bash
        GET /squarespace/1.0/commerce/store_pages
        ```
        Note: Store Pages endpoint uses v1.0 (no v2 available).
        
        #### List All Products
        ```bash
        GET /squarespace/v2/commerce/products
        GET /squarespace/v2/commerce/products?type=PHYSICAL,SERVICE,GIFT_CARD,DIGITAL
        GET /squarespace/v2/commerce/products?modifiedAfter=2024-01-01T00:00:00Z
        ```
        
        Note: Cannot combine `cursor` with date/type filters.
        
        #### Get Specific Products
        ```bash
        GET /squarespace/v2/commerce/products/{productId1},{productId2}
        ```
        Max 50 product IDs per request.
        
        #### Create Product
        ```bash
        POST /squarespace/v2/commerce/products
        Content-Type: application/json
        
        {
          "type": "PHYSICAL",
          "storePageId": "store-page-id",
          "name": "New Product",
          "description": "<p>Product description</p>",
          "urlSlug": "new-product",
          "isVisible": true,
          "variants": [
            {
              "sku": "SKU-001",
              "pricing": {"basePrice": {"currency": "USD", "value": "49.99"}},
              "stock": {"quantity": 100, "unlimited": false}
            }
          ]
        }
        ```
        
        #### Update Product
        ```bash
        POST /squarespace/v2/commerce/products/{productId}
        Content-Type: application/json
        
        {
          "name": "Updated Product Name",
          "isVisible": true
        }
        ```
        
        #### Delete Product
        ```bash
        DELETE /squarespace/v2/commerce/products/{productId}
        ```
        
        ### Product Variants (v2 API)
        
        #### Create Variant
        ```bash
        POST /squarespace/v2/commerce/products/{productId}/variants
        Content-Type: application/json
        
        {
          "sku": "SKU-002",
          "pricing": {"basePrice": {"currency": "USD", "value": "59.99"}},
          "stock": {"quantity": 50, "unlimited": false},
          "attributes": {"Size": "Large"}
        }
        ```
        
        Note: To use `attributes`, product must have matching `variantAttributes` set first via Update Product.
        
        #### Update Variant
        ```bash
        POST /squarespace/v2/commerce/products/{productId}/variants/{variantId}
        Content-Type: application/json
        
        {
          "sku": "SKU-002-UPDATED",
          "pricing": {"basePrice": {"currency": "USD", "value": "64.99"}}
        }
        ```
        
        #### Delete Variant
        ```bash
        DELETE /squarespace/v2/commerce/products/{productId}/variants/{variantId}
        ```
        
        ### Product Images (v2 API)
        
        #### Upload Image
        ```bash
        POST /squarespace/v2/commerce/products/{productId}/images
        Content-Type: multipart/form-data
        
        curl "https://gateway.maton.ai/squarespace/v2/commerce/products/{productId}/images" \
          -H "Authorization: Bearer $MATON_API_KEY" \
          -H "User-Agent: MyClaude/1.0" \
          -X POST \
          -F file=@image.png
        ```
        
        #### Check Upload Status
        ```bash
        GET /squarespace/v2/commerce/products/{productId}/images/{imageId}/status
        ```
        
        #### Update Image Alt Text
        ```bash
        POST /squarespace/v2/commerce/products/{productId}/images/{imageId}
        Content-Type: application/json
        
        {"altText": "Product image description"}
        ```
        
        #### Reorder Image
        ```bash
        POST /squarespace/v2/commerce/products/{productId}/images/{imageId}/order
        Content-Type: application/json
        
        {"afterImageId": "other-image-id"}
        ```
        
        #### Assign Image to Variant
        ```bash
        POST /squarespace/v2/commerce/products/{productId}/variants/{variantId}/image
        Content-Type: application/json
        
        {"imageId": "image-id"}
        ```
        
        #### Delete Image
        ```bash
        DELETE /squarespace/v2/commerce/products/{productId}/images/{imageId}
        ```
        
        ### Profiles (Customers)
        
        #### List All Profiles
        ```bash
        GET /squarespace/1.0/profiles
        GET /squarespace/1.0/profiles?filter=isCustomer,true
        GET /squarespace/1.0/profiles?sortField=email&sortDirection=asc
        ```
        
        Filters (semicolon-separated):
        - `isCustomer,true` or `isCustomer,false`
        - `hasAccount,true` or `hasAccount,false`
        - `email,customer@example.com`
        
        Sort fields: `createdOn`, `id`, `email`, `lastName`
        
        #### Get Specific Profiles
        ```bash
        GET /squarespace/1.0/profiles/{profileId1},{profileId2}
        ```
        Max 50 profile IDs per request.
        
        ### Transactions
        
        #### List All Transactions
        ```bash
        GET /squarespace/1.0/commerce/transactions
        GET /squarespace/1.0/commerce/transactions?modifiedAfter=2024-01-01T00:00:00Z&modifiedBefore=2024-12-31T23:59:59Z
        ```
        
        Note: Date filters must be used together (both `modifiedAfter` and `modifiedBefore` required).
        
        #### Get Specific Transactions
        ```bash
        GET /squarespace/1.0/commerce/transactions/{documentId1},{documentId2}
        ```
        Max 50 document IDs per request.
        
        ## Pagination
        
        Squarespace uses cursor-based pagination:
        
        ```json
        {
          "pagination": {
            "hasNextPage": true,
            "nextPageCursor": "cursor-value",
            "nextPageUrl": "https://api.squarespace.com/..."
          }
        }
        ```
        
        Use the `cursor` parameter to get the next page:
        ```bash
        GET /squarespace/v2/commerce/products?cursor=cursor-value
        ```
        
        ## Resources
        
        - [Squarespace Commerce APIs Overview](https://developers.squarespace.com/commerce-apis/overview)
        - [Inventory API](https://developers.squarespace.com/commerce-apis/inventory-overview)
        - [Orders API](https://developers.squarespace.com/commerce-apis/orders-overview)
        - [Products API](https://developers.squarespace.com/commerce-apis/products-overview)
        - [Profiles API](https://developers.squarespace.com/commerce-apis/profiles-overview)
        - [Transactions API](https://developers.squarespace.com/commerce-apis/transactions-overview)
        
    • squareup
      • README.md 9.8 KB
        # Square Routing Reference
        
        **App name:** `squareup`
        **Base URL proxied:** `connect.squareup.com`
        
        ## API Path Pattern
        
        ```
        /squareup/v2/{resource}
        ```
        
        ## Merchants
        
        ### Get Current Merchant
        ```bash
        GET /squareup/v2/merchants/me
        ```
        
        ## Locations
        
        ### List Locations
        ```bash
        GET /squareup/v2/locations
        ```
        
        ### Get Location
        ```bash
        GET /squareup/v2/locations/{location_id}
        ```
        
        ### Create Location
        ```bash
        POST /squareup/v2/locations
        Content-Type: application/json
        
        {
          "location": {
            "name": "New Location",
            "address": {...}
          }
        }
        ```
        
        ### Update Location
        ```bash
        PUT /squareup/v2/locations/{location_id}
        Content-Type: application/json
        
        {
          "location": {"name": "Updated Name"}
        }
        ```
        
        ## Customers
        
        ### List Customers
        ```bash
        GET /squareup/v2/customers
        ```
        
        ### Get Customer
        ```bash
        GET /squareup/v2/customers/{customer_id}
        ```
        
        ### Create Customer
        ```bash
        POST /squareup/v2/customers
        Content-Type: application/json
        
        {
          "given_name": "John",
          "family_name": "Doe",
          "email_address": "john@example.com"
        }
        ```
        
        ### Update Customer
        ```bash
        PUT /squareup/v2/customers/{customer_id}
        Content-Type: application/json
        
        {
          "given_name": "Jane"
        }
        ```
        
        ### Delete Customer
        ```bash
        DELETE /squareup/v2/customers/{customer_id}
        ```
        
        ### Search Customers
        ```bash
        POST /squareup/v2/customers/search
        Content-Type: application/json
        
        {
          "query": {
            "filter": {
              "email_address": {"exact": "john@example.com"}
            }
          },
          "limit": 10
        }
        ```
        
        ## Payments
        
        ### List Payments
        ```bash
        GET /squareup/v2/payments
        GET /squareup/v2/payments?location_id={location_id}&begin_time=2026-01-01T00:00:00Z
        ```
        
        ### Get Payment
        ```bash
        GET /squareup/v2/payments/{payment_id}
        ```
        
        ### Create Payment
        ```bash
        POST /squareup/v2/payments
        Content-Type: application/json
        
        {
          "source_id": "cnon:card-nonce-ok",
          "idempotency_key": "unique-key",
          "amount_money": {"amount": 1000, "currency": "USD"},
          "location_id": "{location_id}"
        }
        ```
        
        ### Complete Payment
        ```bash
        POST /squareup/v2/payments/{payment_id}/complete
        ```
        
        ### Cancel Payment
        ```bash
        POST /squareup/v2/payments/{payment_id}/cancel
        ```
        
        ## Refunds
        
        ### List Refunds
        ```bash
        GET /squareup/v2/refunds
        ```
        
        ### Get Refund
        ```bash
        GET /squareup/v2/refunds/{refund_id}
        ```
        
        ### Create Refund
        ```bash
        POST /squareup/v2/refunds
        Content-Type: application/json
        
        {
          "idempotency_key": "unique-key",
          "payment_id": "{payment_id}",
          "amount_money": {"amount": 500, "currency": "USD"}
        }
        ```
        
        ## Orders
        
        ### Create Order
        ```bash
        POST /squareup/v2/orders
        Content-Type: application/json
        
        {
          "order": {
            "location_id": "{location_id}",
            "line_items": [
              {
                "name": "Item",
                "quantity": "1",
                "base_price_money": {"amount": 1000, "currency": "USD"}
              }
            ]
          },
          "idempotency_key": "unique-key"
        }
        ```
        
        ### Get Order
        ```bash
        GET /squareup/v2/orders/{order_id}
        ```
        
        ### Search Orders
        ```bash
        POST /squareup/v2/orders/search
        Content-Type: application/json
        
        {
          "location_ids": ["{location_id}"],
          "limit": 10
        }
        ```
        
        ### Update Order
        ```bash
        PUT /squareup/v2/orders/{order_id}
        Content-Type: application/json
        
        {
          "order": {
            "location_id": "{location_id}",
            "version": 1
          },
          "idempotency_key": "unique-key"
        }
        ```
        
        ### Pay Order
        ```bash
        POST /squareup/v2/orders/{order_id}/pay
        Content-Type: application/json
        
        {
          "idempotency_key": "unique-key",
          "payment_ids": ["{payment_id}"]
        }
        ```
        
        ## Catalog
        
        ### List Catalog
        ```bash
        GET /squareup/v2/catalog/list
        GET /squareup/v2/catalog/list?types=ITEM,CATEGORY
        ```
        
        ### Get Catalog Object
        ```bash
        GET /squareup/v2/catalog/object/{object_id}
        ```
        
        ### Upsert Catalog Object
        ```bash
        POST /squareup/v2/catalog/object
        Content-Type: application/json
        
        {
          "idempotency_key": "unique-key",
          "object": {
            "type": "ITEM",
            "id": "#new-item",
            "item_data": {
              "name": "Coffee",
              "variations": [
                {
                  "type": "ITEM_VARIATION",
                  "id": "#variation",
                  "item_variation_data": {
                    "name": "Regular",
                    "pricing_type": "FIXED_PRICING",
                    "price_money": {"amount": 500, "currency": "USD"}
                  }
                }
              ]
            }
          }
        }
        ```
        
        ### Delete Catalog Object
        ```bash
        DELETE /squareup/v2/catalog/object/{object_id}
        ```
        
        ### Search Catalog
        ```bash
        POST /squareup/v2/catalog/search
        Content-Type: application/json
        
        {
          "object_types": ["ITEM"],
          "query": {
            "text_query": {"keywords": ["coffee"]}
          }
        }
        ```
        
        ### Get Catalog Info
        ```bash
        GET /squareup/v2/catalog/info
        ```
        
        ### Batch Upsert
        ```bash
        POST /squareup/v2/catalog/batch-upsert
        Content-Type: application/json
        
        {
          "idempotency_key": "unique-key",
          "batches": [{"objects": [...]}]
        }
        ```
        
        ## Invoices
        
        ### List Invoices
        ```bash
        GET /squareup/v2/invoices?location_id={location_id}
        ```
        
        ### Get Invoice
        ```bash
        GET /squareup/v2/invoices/{invoice_id}
        ```
        
        ### Create Invoice
        ```bash
        POST /squareup/v2/invoices
        Content-Type: application/json
        
        {
          "invoice": {
            "location_id": "{location_id}",
            "order_id": "{order_id}",
            "primary_recipient": {"customer_id": "{customer_id}"},
            "payment_requests": [
              {"request_type": "BALANCE", "due_date": "2026-02-15"}
            ]
          },
          "idempotency_key": "unique-key"
        }
        ```
        
        ### Update Invoice
        ```bash
        PUT /squareup/v2/invoices/{invoice_id}
        Content-Type: application/json
        
        {
          "invoice": {"version": 1},
          "idempotency_key": "unique-key"
        }
        ```
        
        ### Publish Invoice
        ```bash
        POST /squareup/v2/invoices/{invoice_id}/publish
        Content-Type: application/json
        
        {"version": 1, "idempotency_key": "unique-key"}
        ```
        
        ### Cancel Invoice
        ```bash
        POST /squareup/v2/invoices/{invoice_id}/cancel
        Content-Type: application/json
        
        {"version": 1}
        ```
        
        ### Delete Invoice
        ```bash
        DELETE /squareup/v2/invoices/{invoice_id}
        ```
        
        ## Team Members
        
        ### Search Team Members
        ```bash
        POST /squareup/v2/team-members/search
        Content-Type: application/json
        
        {
          "query": {
            "filter": {
              "location_ids": ["{location_id}"],
              "status": "ACTIVE"
            }
          }
        }
        ```
        
        ### Get Team Member
        ```bash
        GET /squareup/v2/team-members/{team_member_id}
        ```
        
        ### Update Team Member
        ```bash
        PUT /squareup/v2/team-members/{team_member_id}
        Content-Type: application/json
        
        {
          "team_member": {
            "given_name": "Updated Name"
          }
        }
        ```
        
        ## Loyalty
        
        ### List Loyalty Programs
        ```bash
        GET /squareup/v2/loyalty/programs
        ```
        
        ### Get Loyalty Program
        ```bash
        GET /squareup/v2/loyalty/programs/{program_id}
        ```
        
        ### Search Loyalty Accounts
        ```bash
        POST /squareup/v2/loyalty/accounts/search
        Content-Type: application/json
        
        {
          "query": {
            "customer_ids": ["{customer_id}"]
          }
        }
        ```
        
        ### Create Loyalty Account
        ```bash
        POST /squareup/v2/loyalty/accounts
        Content-Type: application/json
        
        {
          "loyalty_account": {
            "program_id": "{program_id}",
            "mapping": {"phone_number": "+15551234567"}
          },
          "idempotency_key": "unique-key"
        }
        ```
        
        ## Payment Links (Online Checkout)
        
        ### List Payment Links
        ```bash
        GET /squareup/v2/online-checkout/payment-links
        ```
        
        ### Get Payment Link
        ```bash
        GET /squareup/v2/online-checkout/payment-links/{id}
        ```
        
        ### Create Payment Link
        ```bash
        POST /squareup/v2/online-checkout/payment-links
        Content-Type: application/json
        
        {
          "idempotency_key": "unique-key",
          "quick_pay": {
            "name": "Test Payment",
            "price_money": {"amount": 1000, "currency": "USD"},
            "location_id": "{location_id}"
          }
        }
        ```
        
        ### Update Payment Link
        ```bash
        PUT /squareup/v2/online-checkout/payment-links/{id}
        Content-Type: application/json
        
        {
          "payment_link": {"version": 1}
        }
        ```
        
        ### Delete Payment Link
        ```bash
        DELETE /squareup/v2/online-checkout/payment-links/{id}
        ```
        
        ## Cards
        
        ### List Cards
        ```bash
        GET /squareup/v2/cards
        GET /squareup/v2/cards?customer_id={customer_id}
        ```
        
        ### Get Card
        ```bash
        GET /squareup/v2/cards/{card_id}
        ```
        
        ### Create Card
        ```bash
        POST /squareup/v2/cards
        Content-Type: application/json
        
        {
          "idempotency_key": "unique-key",
          "source_id": "cnon:card-nonce-ok",
          "card": {
            "customer_id": "{customer_id}"
          }
        }
        ```
        
        ### Disable Card
        ```bash
        POST /squareup/v2/cards/{card_id}/disable
        ```
        
        ## Payouts
        
        ### List Payouts
        ```bash
        GET /squareup/v2/payouts
        GET /squareup/v2/payouts?location_id={location_id}
        ```
        
        ### Get Payout
        ```bash
        GET /squareup/v2/payouts/{payout_id}
        ```
        
        ### List Payout Entries
        ```bash
        GET /squareup/v2/payouts/{payout_id}/payout-entries
        ```
        
        ## Bank Accounts
        
        ### List Bank Accounts
        ```bash
        GET /squareup/v2/bank-accounts
        ```
        
        ### Get Bank Account
        ```bash
        GET /squareup/v2/bank-accounts/{bank_account_id}
        ```
        
        ## Terminal
        
        ### List Terminal Checkouts
        ```bash
        GET /squareup/v2/terminals/checkouts
        ```
        
        ### Create Terminal Checkout
        ```bash
        POST /squareup/v2/terminals/checkouts
        Content-Type: application/json
        
        {
          "idempotency_key": "unique-key",
          "checkout": {
            "amount_money": {"amount": 1000, "currency": "USD"},
            "device_options": {"device_id": "{device_id}"}
          }
        }
        ```
        
        ### Search Terminal Checkouts
        ```bash
        POST /squareup/v2/terminals/checkouts/search
        Content-Type: application/json
        
        {
          "query": {
            "filter": {
              "status": "COMPLETED"
            }
          }
        }
        ```
        
        ## Notes
        
        - All amounts are in smallest currency unit (cents for USD: 1000 = $10.00)
        - Most write operations require an `idempotency_key`
        - Cursor-based pagination: use `cursor` parameter with value from response
        - Timestamps are ISO 8601 format
        - Some endpoints require specific OAuth scopes
        
        ## Resources
        
        - [Square API Overview](https://developer.squareup.com/docs)
        - [Square API Reference](https://developer.squareup.com/reference/square)
        - [Payments API](https://developer.squareup.com/reference/square/payments-api)
        - [Customers API](https://developer.squareup.com/reference/square/customers-api)
        - [Orders API](https://developer.squareup.com/reference/square/orders-api)
        - [Catalog API](https://developer.squareup.com/reference/square/catalog-api)
        - [Invoices API](https://developer.squareup.com/reference/square/invoices-api)
        - [Team Members API](https://developer.squareup.com/reference/square/team-api)
        - [Loyalty API](https://developer.squareup.com/reference/square/loyalty-api)
        - [Online Checkout API](https://developer.squareup.com/reference/square/online-checkout-api)
        
    • stripe
      • README.md 7.4 KB
        # Stripe Routing Reference
        
        **App name:** `stripe`
        **Base URL proxied:** `api.stripe.com`
        
        ## API Path Pattern
        
        ```
        /stripe/v1/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Customers
        
        #### List Customers
        ```bash
        GET /stripe/v1/customers?limit=10
        ```
        
        #### Get Customer
        ```bash
        GET /stripe/v1/customers/{customerId}
        ```
        
        #### Create Customer
        ```bash
        POST /stripe/v1/customers
        Content-Type: application/x-www-form-urlencoded
        
        email=customer@example.com&name=John%20Doe&description=New%20customer
        ```
        
        #### Update Customer
        ```bash
        POST /stripe/v1/customers/{customerId}
        Content-Type: application/x-www-form-urlencoded
        
        email=newemail@example.com
        ```
        
        ### Products
        
        #### List Products
        ```bash
        GET /stripe/v1/products?limit=10&active=true
        ```
        
        #### Create Product
        ```bash
        POST /stripe/v1/products
        Content-Type: application/x-www-form-urlencoded
        
        name=Premium%20Plan&description=Monthly%20subscription
        ```
        
        ### Prices
        
        #### List Prices
        ```bash
        GET /stripe/v1/prices?limit=10&active=true
        ```
        
        #### Create Price
        ```bash
        POST /stripe/v1/prices
        Content-Type: application/x-www-form-urlencoded
        
        unit_amount=1999&currency=usd&product=prod_XXX&recurring[interval]=month
        ```
        
        ### Subscriptions
        
        #### List Subscriptions
        ```bash
        GET /stripe/v1/subscriptions?limit=10&status=active
        ```
        
        #### Get Subscription
        ```bash
        GET /stripe/v1/subscriptions/{subscriptionId}
        ```
        
        #### Create Subscription
        ```bash
        POST /stripe/v1/subscriptions
        Content-Type: application/x-www-form-urlencoded
        
        customer=cus_XXX&items[0][price]=price_XXX
        ```
        
        #### Cancel Subscription
        ```bash
        DELETE /stripe/v1/subscriptions/{subscriptionId}
        ```
        
        ### Invoices
        
        #### List Invoices
        ```bash
        GET /stripe/v1/invoices?limit=10&customer=cus_XXX
        ```
        
        #### Get Invoice
        ```bash
        GET /stripe/v1/invoices/{invoiceId}
        ```
        
        ### Charges
        
        #### List Charges
        ```bash
        GET /stripe/v1/charges?limit=10
        ```
        
        ### Payment Intents
        
        #### Create Payment Intent
        ```bash
        POST /stripe/v1/payment_intents
        Content-Type: application/x-www-form-urlencoded
        
        amount=1999&currency=usd&customer=cus_XXX
        ```
        
        ### Balance
        
        #### Get Balance
        ```bash
        GET /stripe/v1/balance
        ```
        
        ### Events
        
        #### List Events
        ```bash
        GET /stripe/v1/events?limit=10&type=customer.created
        ```
        
        ### Payment Methods
        
        #### List Payment Methods
        ```bash
        GET /stripe/v1/payment_methods?customer=cus_XXX&type=card
        ```
        
        #### Attach Payment Method
        ```bash
        POST /stripe/v1/payment_methods/{paymentMethodId}/attach
        Content-Type: application/x-www-form-urlencoded
        
        customer=cus_XXX
        ```
        
        #### Detach Payment Method
        ```bash
        POST /stripe/v1/payment_methods/{paymentMethodId}/detach
        ```
        
        ### Coupons
        
        #### List Coupons
        ```bash
        GET /stripe/v1/coupons?limit=10
        ```
        
        #### Create Coupon
        ```bash
        POST /stripe/v1/coupons
        Content-Type: application/x-www-form-urlencoded
        
        percent_off=25&duration=once
        ```
        
        #### Delete Coupon
        ```bash
        DELETE /stripe/v1/coupons/{couponId}
        ```
        
        ### Refunds
        
        #### List Refunds
        ```bash
        GET /stripe/v1/refunds?limit=10
        ```
        
        #### Create Refund
        ```bash
        POST /stripe/v1/refunds
        Content-Type: application/x-www-form-urlencoded
        
        charge=ch_XXX&amount=1000
        ```
        
        ## Notes
        
        - Stripe API uses form-urlencoded data for POST requests
        - IDs are prefixed: `cus_` (customer), `sub_` (subscription), `prod_` (product), `price_` (price), `in_` (invoice), `pi_` (payment intent)
        - Amounts are in cents (1999 = $19.99)
        - Use `expand[]` parameter to include related objects; for list endpoints use `expand[]=data.{field}` (e.g., `expand[]=data.customer`)
        - List endpoints support pagination with `starting_after` and `ending_before`
        - Delete returns `{id, deleted: true}` on success
        - Products with prices cannot be deleted, only archived (`active=false`)
        
        ## Resources
        
        - [API Overview](https://docs.stripe.com/api)
        - [List Customers](https://docs.stripe.com/api/customers/list.md)
        - [Get Customer](https://docs.stripe.com/api/customers/retrieve.md)
        - [Create Customer](https://docs.stripe.com/api/customers/create.md)
        - [Update Customer](https://docs.stripe.com/api/customers/update.md)
        - [Delete Customer](https://docs.stripe.com/api/customers/delete.md)
        - [Search Customers](https://docs.stripe.com/api/customers/search.md)
        - [List Products](https://docs.stripe.com/api/products/list.md)
        - [Get Product](https://docs.stripe.com/api/products/retrieve.md)
        - [Create Product](https://docs.stripe.com/api/products/create.md)
        - [Update Product](https://docs.stripe.com/api/products/update.md)
        - [Delete Product](https://docs.stripe.com/api/products/delete.md)
        - [Search Products](https://docs.stripe.com/api/products/search.md)
        - [List Prices](https://docs.stripe.com/api/prices/list.md)
        - [Get Price](https://docs.stripe.com/api/prices/retrieve.md)
        - [Create Price](https://docs.stripe.com/api/prices/create.md)
        - [Update Price](https://docs.stripe.com/api/prices/update.md)
        - [Search Prices](https://docs.stripe.com/api/prices/search.md)
        - [List Subscriptions](https://docs.stripe.com/api/subscriptions/list.md)
        - [Get Subscription](https://docs.stripe.com/api/subscriptions/retrieve.md)
        - [Create Subscription](https://docs.stripe.com/api/subscriptions/create.md)
        - [Update Subscription](https://docs.stripe.com/api/subscriptions/update.md)
        - [Cancel Subscription](https://docs.stripe.com/api/subscriptions/cancel.md)
        - [Resume Subscription](https://docs.stripe.com/api/subscriptions/resume.md)
        - [Search Subscriptions](https://docs.stripe.com/api/subscriptions/search.md)
        - [List Invoices](https://docs.stripe.com/api/invoices/list.md)
        - [Get Invoice](https://docs.stripe.com/api/invoices/retrieve.md)
        - [Create Invoice](https://docs.stripe.com/api/invoices/create.md)
        - [Update Invoice](https://docs.stripe.com/api/invoices/update.md)
        - [Delete Invoice](https://docs.stripe.com/api/invoices/delete.md)
        - [Finalize Invoice](https://docs.stripe.com/api/invoices/finalize.md)
        - [Pay Invoice](https://docs.stripe.com/api/invoices/pay.md)
        - [Send Invoice](https://docs.stripe.com/api/invoices/send.md)
        - [Void Invoice](https://docs.stripe.com/api/invoices/void.md)
        - [Search Invoices](https://docs.stripe.com/api/invoices/search.md)
        - [List Charges](https://docs.stripe.com/api/charges/list.md)
        - [Get Charge](https://docs.stripe.com/api/charges/retrieve.md)
        - [Create Charge](https://docs.stripe.com/api/charges/create.md)
        - [Update Charge](https://docs.stripe.com/api/charges/update.md)
        - [Capture Charge](https://docs.stripe.com/api/charges/capture.md)
        - [Search Charges](https://docs.stripe.com/api/charges/search.md)
        - [List Payment Intents](https://docs.stripe.com/api/payment_intents/list.md)
        - [Get Payment Intent](https://docs.stripe.com/api/payment_intents/retrieve.md)
        - [Create Payment Intent](https://docs.stripe.com/api/payment_intents/create.md)
        - [Update Payment Intent](https://docs.stripe.com/api/payment_intents/update.md)
        - [Confirm Payment Intent](https://docs.stripe.com/api/payment_intents/confirm.md)
        - [Capture Payment Intent](https://docs.stripe.com/api/payment_intents/capture.md)
        - [Cancel Payment Intent](https://docs.stripe.com/api/payment_intents/cancel.md)
        - [Search Payment Intents](https://docs.stripe.com/api/payment_intents/search.md)
        - [Get Balance](https://docs.stripe.com/api/balance/balance_retrieve.md)
        - [List Balance Transactions](https://docs.stripe.com/api/balance_transactions/list.md)
        - [Get Balance Transaction](https://docs.stripe.com/api/balance_transactions/retrieve.md)
        - [List Events](https://docs.stripe.com/api/events/list.md)
        - [Get Event](https://docs.stripe.com/api/events/retrieve.md)
        - [Pagination](https://docs.stripe.com/api/pagination.md)
        - [Expanding Responses](https://docs.stripe.com/api/expanding_objects.md)
        - [LLM Reference](https://docs.stripe.com/llms.txt)
    • sunsama-mcp
      • schemas
        • accept_meeting_invite.json 299 B
          {
            "name": "accept_meeting_invite",
            "description": "Accept a calendar meeting invite",
            "inputSchema": {
              "type": "object",
              "properties": {
                "eventId": {
                  "type": "string",
                  "description": "The ID of the calendar event"
                }
              },
              "required": ["eventId"]
            }
          }
          
        • add_subtasks_to_task.json 663 B
          {
            "name": "add_subtasks_to_task",
            "description": "Add subtasks to an existing task",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the parent task"
                },
                "subtasks": {
                  "type": "array",
                  "description": "Array of subtasks to add",
                  "items": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "The title of the subtask"
                      }
                    },
                    "required": ["title"]
                  }
                }
              },
              "required": ["taskId", "subtasks"]
            }
          }
          
        • add_task_to_channel.json 386 B
          {
            "name": "add_task_to_channel",
            "description": "Assign a task to a channel",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task"
                },
                "channel": {
                  "type": "string",
                  "description": "The channel name"
                }
              },
              "required": ["taskId", "channel"]
            }
          }
          
        • align_task_with_objective.json 414 B
          {
            "name": "align_task_with_objective",
            "description": "Link a task to a weekly objective",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task"
                },
                "objectiveId": {
                  "type": "string",
                  "description": "The ID of the objective"
                }
              },
              "required": ["taskId", "objectiveId"]
            }
          }
          
        • append_task_notes.json 379 B
          {
            "name": "append_task_notes",
            "description": "Append notes to a task",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task"
                },
                "notes": {
                  "type": "string",
                  "description": "The notes to append"
                }
              },
              "required": ["taskId", "notes"]
            }
          }
          
        • change_backlog_folder.json 399 B
          {
            "name": "change_backlog_folder",
            "description": "Change the folder for backlog tasks",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskIds": {
                  "oneOf": [
                    { "type": "string" },
                    { "type": "array", "items": { "type": "string" } }
                  ],
                  "description": "Task ID or array of task IDs"
                }
              },
              "required": ["taskIds"]
            }
          }
          
        • create_braindump_task.json 616 B
          {
            "name": "create_braindump_task",
            "description": "Create a task in the backlog with a time bucket",
            "inputSchema": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "description": "The title of the task"
                },
                "timeBucket": {
                  "type": "string",
                  "description": "When to do the task",
                  "enum": [
                    "in the next two weeks",
                    "in the next month",
                    "in the next quarter",
                    "in the next year",
                    "someday",
                    "never"
                  ]
                }
              },
              "required": ["title", "timeBucket"]
            }
          }
          
        • create_calendar_event.json 421 B
          {
            "name": "create_calendar_event",
            "description": "Create a calendar event",
            "inputSchema": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "description": "The title of the calendar event"
                },
                "startDate": {
                  "type": "string",
                  "description": "The start date/time (ISO 8601 format)"
                }
              },
              "required": ["title", "startDate"]
            }
          }
          
        • create_channel.json 301 B
          {
            "name": "create_channel",
            "description": "Create a new channel/context for tasks",
            "inputSchema": {
              "type": "object",
              "properties": {
                "channelName": {
                  "type": "string",
                  "description": "The name of the channel"
                }
              },
              "required": ["channelName"]
            }
          }
          
        • create_follow_up_task_from_email.json 575 B
          {
            "name": "create_follow_up_task_from_email",
            "description": "Create a follow-up task from an email thread",
            "inputSchema": {
              "type": "object",
              "properties": {
                "accountId": {
                  "type": "string",
                  "description": "The email account ID"
                },
                "accountService": {
                  "type": "string",
                  "description": "The email service (e.g., gmail, outlook)"
                },
                "threadId": {
                  "type": "string",
                  "description": "The email thread ID"
                }
              },
              "required": ["accountId", "accountService", "threadId"]
            }
          }
          
        • create_task.json 580 B
          {
            "name": "create_task",
            "description": "Create a new task scheduled for a specific day",
            "inputSchema": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "description": "The title of the task"
                },
                "day": {
                  "type": "string",
                  "description": "The date to schedule the task (YYYY-MM-DD format)"
                },
                "alreadyInTaskList": {
                  "type": "boolean",
                  "description": "Whether the task is already in the task list"
                }
              },
              "required": ["title", "day", "alreadyInTaskList"]
            }
          }
          
        • create_weekly_objective.json 440 B
          {
            "name": "create_weekly_objective",
            "description": "Create a weekly objective/goal",
            "inputSchema": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "description": "The title of the objective"
                },
                "weekStartDay": {
                  "type": "string",
                  "description": "The start date of the week (YYYY-MM-DD format)"
                }
              },
              "required": ["title", "weekStartDay"]
            }
          }
          
        • decline_meeting_invite.json 301 B
          {
            "name": "decline_meeting_invite",
            "description": "Decline a calendar meeting invite",
            "inputSchema": {
              "type": "object",
              "properties": {
                "eventId": {
                  "type": "string",
                  "description": "The ID of the calendar event"
                }
              },
              "required": ["eventId"]
            }
          }
          
        • delete_all_incomplete_recurring_task_instances.json 337 B
          {
            "name": "delete_all_incomplete_recurring_task_instances",
            "description": "Delete all future instances of a recurring task",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the recurring task"
                }
              },
              "required": ["taskId"]
            }
          }
          
        • delete_calendar_event.json 290 B
          {
            "name": "delete_calendar_event",
            "description": "Delete a calendar event",
            "inputSchema": {
              "type": "object",
              "properties": {
                "eventId": {
                  "type": "string",
                  "description": "The ID of the calendar event"
                }
              },
              "required": ["eventId"]
            }
          }
          
        • delete_email_thread.json 540 B
          {
            "name": "delete_email_thread",
            "description": "Delete an email thread",
            "inputSchema": {
              "type": "object",
              "properties": {
                "accountId": {
                  "type": "string",
                  "description": "The email account ID"
                },
                "accountService": {
                  "type": "string",
                  "description": "The email service (e.g., gmail, outlook)"
                },
                "threadId": {
                  "type": "string",
                  "description": "The email thread ID"
                }
              },
              "required": ["accountId", "accountService", "threadId"]
            }
          }
          
        • delete_task.json 268 B
          {
            "name": "delete_task",
            "description": "Delete a task",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task to delete"
                }
              },
              "required": ["taskId"]
            }
          }
          
        • edit_subtask_title.json 526 B
          {
            "name": "edit_subtask_title",
            "description": "Update the title of a subtask",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the parent task"
                },
                "subtaskId": {
                  "type": "string",
                  "description": "The ID of the subtask"
                },
                "newTitle": {
                  "type": "string",
                  "description": "The new title for the subtask"
                }
              },
              "required": ["taskId", "subtaskId", "newTitle"]
            }
          }
          
        • edit_task_recurrence_rule.json 448 B
          {
            "name": "edit_task_recurrence_rule",
            "description": "Set or update the recurrence rule for a task",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task"
                },
                "recurrenceRule": {
                  "type": "string",
                  "description": "The recurrence rule (e.g., RRULE format)"
                }
              },
              "required": ["taskId", "recurrenceRule"]
            }
          }
          
        • edit_task_time_estimate.json 418 B
          {
            "name": "edit_task_time_estimate",
            "description": "Set the time estimate for a task",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task"
                },
                "timeEstimate": {
                  "type": "number",
                  "description": "The time estimate in minutes"
                }
              },
              "required": ["taskId", "timeEstimate"]
            }
          }
          
        • edit_task_title.json 375 B
          {
            "name": "edit_task_title",
            "description": "Update the title of a task",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task"
                },
                "title": {
                  "type": "string",
                  "description": "The new title"
                }
              },
              "required": ["taskId", "title"]
            }
          }
          
        • get_archived_tasks.json 162 B
          {
            "name": "get_archived_tasks",
            "description": "List archived tasks",
            "inputSchema": {
              "type": "object",
              "properties": {},
              "required": []
            }
          }
          
        • get_backlog_tasks.json 171 B
          {
            "name": "get_backlog_tasks",
            "description": "List all tasks in the backlog",
            "inputSchema": {
              "type": "object",
              "properties": {},
              "required": []
            }
          }
          
        • get_task_time_estimate.json 309 B
          {
            "name": "get_task_time_estimate",
            "description": "Get AI-suggested time estimate for a task title",
            "inputSchema": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "description": "The task title to estimate"
                }
              },
              "required": ["title"]
            }
          }
          
        • import_task_from_calendar_event.json 312 B
          {
            "name": "import_task_from_calendar_event",
            "description": "Create a task from a calendar event",
            "inputSchema": {
              "type": "object",
              "properties": {
                "eventId": {
                  "type": "string",
                  "description": "The ID of the calendar event"
                }
              },
              "required": ["eventId"]
            }
          }
          
        • list_email_threads.json 310 B
          {
            "name": "list_email_threads",
            "description": "List email threads from a connected account",
            "inputSchema": {
              "type": "object",
              "properties": {
                "accountId": {
                  "type": "string",
                  "description": "The ID of the email account"
                }
              },
              "required": ["accountId"]
            }
          }
          
        • log_user_feedback.json 277 B
          {
            "name": "log_user_feedback",
            "description": "Submit user feedback",
            "inputSchema": {
              "type": "object",
              "properties": {
                "feedback": {
                  "type": "string",
                  "description": "The feedback message"
                }
              },
              "required": ["feedback"]
            }
          }
          
        • mark_email_thread_as_read.json 552 B
          {
            "name": "mark_email_thread_as_read",
            "description": "Mark an email thread as read",
            "inputSchema": {
              "type": "object",
              "properties": {
                "accountId": {
                  "type": "string",
                  "description": "The email account ID"
                },
                "accountService": {
                  "type": "string",
                  "description": "The email service (e.g., gmail, outlook)"
                },
                "threadId": {
                  "type": "string",
                  "description": "The email thread ID"
                }
              },
              "required": ["accountId", "accountService", "threadId"]
            }
          }
          
        • mark_subtask_as_completed.json 409 B
          {
            "name": "mark_subtask_as_completed",
            "description": "Mark a subtask as completed",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the parent task"
                },
                "subtaskId": {
                  "type": "string",
                  "description": "The ID of the subtask"
                }
              },
              "required": ["taskId", "subtaskId"]
            }
          }
          
        • mark_subtask_as_incomplete.json 411 B
          {
            "name": "mark_subtask_as_incomplete",
            "description": "Mark a subtask as incomplete",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the parent task"
                },
                "subtaskId": {
                  "type": "string",
                  "description": "The ID of the subtask"
                }
              },
              "required": ["taskId", "subtaskId"]
            }
          }
          
        • mark_task_as_completed.json 441 B
          {
            "name": "mark_task_as_completed",
            "description": "Mark a task as completed",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task to complete"
                },
                "finishedDay": {
                  "type": "string",
                  "description": "The date the task was finished (YYYY-MM-DD format)"
                }
              },
              "required": ["taskId", "finishedDay"]
            }
          }
          
        • mark_task_as_incomplete.json 282 B
          {
            "name": "mark_task_as_incomplete",
            "description": "Mark a task as incomplete",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task"
                }
              },
              "required": ["taskId"]
            }
          }
          
        • move_calendar_event.json 536 B
          {
            "name": "move_calendar_event",
            "description": "Reschedule a calendar event",
            "inputSchema": {
              "type": "object",
              "properties": {
                "eventId": {
                  "type": "string",
                  "description": "The ID of the calendar event"
                },
                "startDate": {
                  "type": "string",
                  "description": "The new start date/time"
                },
                "isAllDay": {
                  "type": "boolean",
                  "description": "Whether this is an all-day event"
                }
              },
              "required": ["eventId", "startDate", "isAllDay"]
            }
          }
          
        • move_task_from_backlog.json 432 B
          {
            "name": "move_task_from_backlog",
            "description": "Move a task from backlog to a specific day",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task"
                },
                "calendarDay": {
                  "type": "string",
                  "description": "The target date (YYYY-MM-DD format)"
                }
              },
              "required": ["taskId", "calendarDay"]
            }
          }
          
        • move_task_to_backlog.json 288 B
          {
            "name": "move_task_to_backlog",
            "description": "Move a task to the backlog",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task to move"
                }
              },
              "required": ["taskId"]
            }
          }
          
        • move_task_to_day.json 428 B
          {
            "name": "move_task_to_day",
            "description": "Reschedule a task to a different day",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task to move"
                },
                "calendarDay": {
                  "type": "string",
                  "description": "The target date (YYYY-MM-DD format)"
                }
              },
              "required": ["taskId", "calendarDay"]
            }
          }
          
        • reorder_tasks.json 484 B
          {
            "name": "reorder_tasks",
            "description": "Reorder tasks for a specific day",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskIds": {
                  "type": "array",
                  "description": "Array of task IDs in the desired order",
                  "items": {
                    "type": "string"
                  }
                },
                "calendarDay": {
                  "type": "string",
                  "description": "The date (YYYY-MM-DD format)"
                }
              },
              "required": ["taskIds", "calendarDay"]
            }
          }
          
        • reposition_task_in_backlog.json 622 B
          {
            "name": "reposition_task_in_backlog",
            "description": "Move a backlog task to a different time bucket",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task"
                },
                "timeBucket": {
                  "type": "string",
                  "description": "The target time bucket",
                  "enum": [
                    "in the next two weeks",
                    "in the next month",
                    "in the next quarter",
                    "in the next year",
                    "someday",
                    "never"
                  ]
                }
              },
              "required": ["taskId", "timeBucket"]
            }
          }
          
        • restore_task.json 279 B
          {
            "name": "restore_task",
            "description": "Restore a deleted task",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task to restore"
                }
              },
              "required": ["taskId"]
            }
          }
          
        • schedule_next_call.json 569 B
          {
            "name": "schedule_next_call",
            "description": "Schedule the next accountability call",
            "inputSchema": {
              "type": "object",
              "properties": {
                "nextCallDate": {
                  "type": "string",
                  "description": "The date of the next call (YYYY-MM-DD format)"
                },
                "hour": {
                  "type": "number",
                  "description": "The hour (0-23)"
                },
                "minute": {
                  "type": "string",
                  "description": "The minute",
                  "enum": ["15", "30", "45", "00"]
                }
              },
              "required": ["nextCallDate", "hour", "minute"]
            }
          }
          
        • search_tasks.json 292 B
          {
            "name": "search_tasks",
            "description": "Search for tasks by keyword",
            "inputSchema": {
              "type": "object",
              "properties": {
                "searchTerm": {
                  "type": "string",
                  "description": "The search term to find tasks"
                }
              },
              "required": ["searchTerm"]
            }
          }
          
        • set_calendar_event_allow_task_projections.json 518 B
          {
            "name": "set_calendar_event_allow_task_projections",
            "description": "Toggle whether tasks can be projected during this event",
            "inputSchema": {
              "type": "object",
              "properties": {
                "eventId": {
                  "type": "string",
                  "description": "The ID of the calendar event"
                },
                "allowTasksProjectedAtSameTime": {
                  "type": "boolean",
                  "description": "Whether to allow tasks during this event"
                }
              },
              "required": ["eventId", "allowTasksProjectedAtSameTime"]
            }
          }
          
        • set_shutdown_time.json 508 B
          {
            "name": "set_shutdown_time",
            "description": "Set the shutdown time for a day",
            "inputSchema": {
              "type": "object",
              "properties": {
                "calendarDay": {
                  "type": "string",
                  "description": "The date (YYYY-MM-DD format)"
                },
                "hour": {
                  "type": "number",
                  "description": "The hour (0-23)"
                },
                "minute": {
                  "type": "number",
                  "description": "The minute (0-59)"
                }
              },
              "required": ["calendarDay", "hour", "minute"]
            }
          }
          
        • start_task_timer.json 276 B
          {
            "name": "start_task_timer",
            "description": "Start the timer for a task",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task"
                }
              },
              "required": ["taskId"]
            }
          }
          
        • stop_task_timer.json 274 B
          {
            "name": "stop_task_timer",
            "description": "Stop the timer for a task",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task"
                }
              },
              "required": ["taskId"]
            }
          }
          
        • timebox_a_task_to_calendar.json 555 B
          {
            "name": "timebox_a_task_to_calendar",
            "description": "Block time for a task on the calendar",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task to timebox"
                },
                "startDate": {
                  "type": "string",
                  "description": "The date (YYYY-MM-DD format)"
                },
                "startTime": {
                  "type": "string",
                  "description": "The start time (HH:MM format)"
                }
              },
              "required": ["taskId", "startDate", "startTime"]
            }
          }
          
        • toggle_auto_import_events.json 311 B
          {
            "name": "toggle_auto_import_events",
            "description": "Toggle automatic calendar event import",
            "inputSchema": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Whether to enable auto-import"
                }
              },
              "required": ["enabled"]
            }
          }
          
        • unarchive_task.json 453 B
          {
            "name": "unarchive_task",
            "description": "Restore an archived task to a specific day",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the task to unarchive"
                },
                "calendarDay": {
                  "type": "string",
                  "description": "The date to restore the task to (YYYY-MM-DD format)"
                }
              },
              "required": ["taskId", "calendarDay"]
            }
          }
          
        • update_all_incomplete_recurring_task_instances.json 337 B
          {
            "name": "update_all_incomplete_recurring_task_instances",
            "description": "Update all future instances of a recurring task",
            "inputSchema": {
              "type": "object",
              "properties": {
                "taskId": {
                  "type": "string",
                  "description": "The ID of the recurring task"
                }
              },
              "required": ["taskId"]
            }
          }
          
        • update_calendar_preferences.json 319 B
          {
            "name": "update_calendar_preferences",
            "description": "Update calendar preferences",
            "inputSchema": {
              "type": "object",
              "properties": {
                "calendarId": {
                  "type": "string",
                  "description": "The calendar ID to update preferences for"
                }
              },
              "required": ["calendarId"]
            }
          }
          
        • update_import_event_filters.json 387 B
          {
            "name": "update_import_event_filters",
            "description": "Update event import filters",
            "inputSchema": {
              "type": "object",
              "properties": {
                "excludedEventFilters": {
                  "type": "array",
                  "description": "Array of event filters to exclude",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": ["excludedEventFilters"]
            }
          }
          
      • README.md 4.4 KB
        # Sunsama MCP Routing Reference
        
        **App name:** `sunsama`
        **Base URL proxied:** MCP server
        
        ## Connection Management
        
        Manage MCP connections at `https://ctrl.maton.ai`.
        
        ### List Connections
        
        ```bash
        GET https://ctrl.maton.ai/connections?app=sunsama&method=MCP&status=ACTIVE
        Authorization: Bearer $MATON_API_KEY
        ```
        
        ### Create Connection
        
        ```bash
        POST https://ctrl.maton.ai/connections
        Content-Type: application/json
        Authorization: Bearer $MATON_API_KEY
        
        {
          "app": "sunsama",
          "method": "MCP"
        }
        ```
        
        ## API Path Pattern
        
        ```
        /sunsama/{tool-name}
        ```
        
        ## MCP Reference
        
        All MCP tools use `POST` method:
        
        | Tool | Description | Schema |
        |------|-------------|--------|
        | `search_tasks` | Search tasks by keyword | [schema](schemas/search_tasks.json) |
        | `create_task` | Create a new task | [schema](schemas/create_task.json) |
        | `edit_task_title` | Update task title | [schema](schemas/edit_task_title.json) |
        | `delete_task` | Delete a task | [schema](schemas/delete_task.json) |
        | `mark_task_as_completed` | Mark task complete | [schema](schemas/mark_task_as_completed.json) |
        | `mark_task_as_incomplete` | Mark task incomplete | [schema](schemas/mark_task_as_incomplete.json) |
        | `append_task_notes` | Add notes to task | [schema](schemas/append_task_notes.json) |
        | `edit_task_time_estimate` | Set time estimate | [schema](schemas/edit_task_time_estimate.json) |
        | `add_subtasks_to_task` | Add subtasks | [schema](schemas/add_subtasks_to_task.json) |
        | `get_backlog_tasks` | List backlog tasks | [schema](schemas/get_backlog_tasks.json) |
        | `move_task_to_backlog` | Move task to backlog | [schema](schemas/move_task_to_backlog.json) |
        | `move_task_from_backlog` | Move from backlog to day | [schema](schemas/move_task_from_backlog.json) |
        | `move_task_to_day` | Reschedule task | [schema](schemas/move_task_to_day.json) |
        | `create_calendar_event` | Create calendar event | [schema](schemas/create_calendar_event.json) |
        | `timebox_a_task_to_calendar` | Block time for task | [schema](schemas/timebox_a_task_to_calendar.json) |
        | `start_task_timer` | Start timer | [schema](schemas/start_task_timer.json) |
        | `stop_task_timer` | Stop timer | [schema](schemas/stop_task_timer.json) |
        | `create_weekly_objective` | Create weekly goal | [schema](schemas/create_weekly_objective.json) |
        | `create_braindump_task` | Create backlog task | [schema](schemas/create_braindump_task.json) |
        | `create_channel` | Create channel/context | [schema](schemas/create_channel.json) |
        
        ## Common Endpoints
        
        ### Search Tasks
        
        ```bash
        POST /sunsama/search_tasks
        Content-Type: application/json
        
        {
          "searchTerm": "meeting"
        }
        ```
        
        ### Create Task
        
        ```bash
        POST /sunsama/create_task
        Content-Type: application/json
        
        {
          "title": "Review quarterly report",
          "day": "2026-03-03",
          "alreadyInTaskList": false
        }
        ```
        
        **Response:**
        ```json
        {
          "content": [
            {
              "type": "text",
              "text": "{\"success\":true,\"task\":{\"_id\":\"69a6bf3a04d3cd0001595308\",\"title\":\"Review quarterly report\",\"scheduledDate\":\"2026-03-03\",\"completed\":false}}"
            }
          ],
          "isError": false
        }
        ```
        
        ### Get Backlog Tasks
        
        ```bash
        POST /sunsama/get_backlog_tasks
        Content-Type: application/json
        
        {}
        ```
        
        ### Mark Task as Completed
        
        ```bash
        POST /sunsama/mark_task_as_completed
        Content-Type: application/json
        
        {
          "taskId": "69a6bf3a04d3cd0001595308",
          "finishedDay": "2026-03-03"
        }
        ```
        
        ### Create Braindump Task
        
        ```bash
        POST /sunsama/create_braindump_task
        Content-Type: application/json
        
        {
          "title": "Research new tools",
          "timeBucket": "in the next month"
        }
        ```
        
        **Time bucket options:**
        - `"in the next two weeks"`
        - `"in the next month"`
        - `"in the next quarter"`
        - `"in the next year"`
        - `"someday"`
        - `"never"`
        
        ### Timebox Task to Calendar
        
        ```bash
        POST /sunsama/timebox_a_task_to_calendar
        Content-Type: application/json
        
        {
          "taskId": "69a6bf3a04d3cd0001595308",
          "startDate": "2026-03-03",
          "startTime": "14:00"
        }
        ```
        
        ## Notes
        
        - All task IDs are MongoDB ObjectIds (24-character hex strings)
        - Date format: `YYYY-MM-DD` for days, ISO 8601 for datetimes
        - MCP tool responses wrap content in `{"content": [{"type": "text", "text": "..."}], "isError": false}` format
        - The `text` field contains JSON-stringified data that should be parsed
        - If multiple Sunsama connections exist, specify which to use with `Maton-Connection` header
        
        ## Resources
        
        - [Sunsama](https://sunsama.com)
        - [Maton Community](https://discord.com/invite/dBfFAcefs2)
        - [Maton Support](mailto:support@maton.ai)
        
    • systeme
      • README.md 3.4 KB
        # Systeme.io Routing Reference
        
        **App name:** `systeme`
        **Base URL proxied:** `api.systeme.io`
        
        ## API Path Pattern
        
        ```
        /systeme/api/{resource}
        ```
        
        ## Common Endpoints
        
        ### List Contacts
        ```bash
        GET /systeme/api/contacts
        ```
        
        Query parameters:
        - `limit` - Results per page (10-100)
        - `startingAfter` - ID of last item for pagination
        - `order` - Sort order: `asc` or `desc` (default: `desc`)
        
        ### Get Contact
        ```bash
        GET /systeme/api/contacts/{id}
        ```
        
        ### Create Contact
        ```bash
        POST /systeme/api/contacts
        Content-Type: application/json
        
        {
          "email": "user@example.com",
          "firstName": "John",
          "lastName": "Doe"
        }
        ```
        
        ### Update Contact
        ```bash
        PATCH /systeme/api/contacts/{id}
        Content-Type: application/merge-patch+json
        
        {
          "firstName": "Jane"
        }
        ```
        
        ### Delete Contact
        ```bash
        DELETE /systeme/api/contacts/{id}
        ```
        
        ### List Tags
        ```bash
        GET /systeme/api/tags
        ```
        
        ### Create Tag
        ```bash
        POST /systeme/api/tags
        Content-Type: application/json
        
        {
          "name": "VIP Customer"
        }
        ```
        
        ### Update Tag
        ```bash
        PUT /systeme/api/tags/{id}
        Content-Type: application/json
        
        {
          "name": "Premium Customer"
        }
        ```
        
        ### Delete Tag
        ```bash
        DELETE /systeme/api/tags/{id}
        ```
        
        ### Assign Tag to Contact
        ```bash
        POST /systeme/api/contacts/{id}/tags
        Content-Type: application/json
        
        {
          "tagId": 12345
        }
        ```
        
        ### Remove Tag from Contact
        ```bash
        DELETE /systeme/api/contacts/{id}/tags/{tagId}
        ```
        
        ### List Contact Fields
        ```bash
        GET /systeme/api/contact_fields
        ```
        
        ### List Courses
        ```bash
        GET /systeme/api/school/courses
        ```
        
        ### Create Enrollment
        ```bash
        POST /systeme/api/school/courses/{courseId}/enrollments
        Content-Type: application/json
        
        {
          "contactId": 12345
        }
        ```
        
        ### List Enrollments
        ```bash
        GET /systeme/api/school/enrollments
        ```
        
        ### Delete Enrollment
        ```bash
        DELETE /systeme/api/school/enrollments/{id}
        ```
        
        ### List Communities
        ```bash
        GET /systeme/api/community/communities
        ```
        
        ### Create Membership
        ```bash
        POST /systeme/api/community/communities/{communityId}/memberships
        Content-Type: application/json
        
        {
          "contactId": 12345
        }
        ```
        
        ### List Memberships
        ```bash
        GET /systeme/api/community/memberships
        ```
        
        ### Delete Membership
        ```bash
        DELETE /systeme/api/community/memberships/{id}
        ```
        
        ### List Subscriptions
        ```bash
        GET /systeme/api/payment/subscriptions
        ```
        
        ### Cancel Subscription
        ```bash
        POST /systeme/api/payment/subscriptions/{id}/cancel
        ```
        
        ### List Webhooks
        ```bash
        GET /systeme/api/webhooks
        ```
        
        ### Create Webhook
        ```bash
        POST /systeme/api/webhooks
        Content-Type: application/json
        
        {
          "name": "My Webhook",
          "url": "https://example.com/webhook",
          "secret": "my-secret-key",
          "subscriptions": ["CONTACT_CREATED"]
        }
        ```
        
        Available events: `CONTACT_CREATED`, `CONTACT_TAG_ADDED`, `CONTACT_TAG_REMOVED`, `CONTACT_OPT_IN`, `SALE_NEW`, `SALE_CANCELED`
        
        ### Update Webhook
        ```bash
        PATCH /systeme/api/webhooks/{id}
        Content-Type: application/merge-patch+json
        
        {
          "name": "Updated Webhook Name"
        }
        ```
        
        ### Delete Webhook
        ```bash
        DELETE /systeme/api/webhooks/{id}
        ```
        
        ## Notes
        
        - Contact, tag, course, and enrollment IDs are numeric integers
        - Webhook IDs are UUIDs
        - Uses cursor-based pagination with `startingAfter` parameter
        - PATCH requests require `Content-Type: application/merge-patch+json`
        - Delete operations return 204 No Content
        - Email addresses are validated for real MX records
        - Payment/subscription endpoints may return 404 if not configured
        
        ## Resources
        
        - [Systeme.io API Reference](https://developer.systeme.io/reference)
        - [Systeme.io Developer Documentation](https://developer.systeme.io/)
        
    • tally
      • README.md 3 KB
        # Tally Routing Reference
        
        **App name:** `tally`
        **Base URL proxied:** `api.tally.so`
        
        ## API Path Pattern
        
        ```
        /tally/{resource}
        ```
        
        Tally's API does not use version prefixes in paths.
        
        ## Required Headers
        
        THe `User-Agent` header is required to avoid Cloudflare blocks:
        
        ```
        User-Agent: Maton/1.0
        ```
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /tally/users/me
        ```
        
        ### List Forms
        ```bash
        GET /tally/forms
        ```
        
        **Query Parameters:**
        - `page` - Page number (default: 1)
        - `limit` - Items per page (default: 50)
        
        ### Get Form
        ```bash
        GET /tally/forms/{formId}
        ```
        
        ### Create Form
        ```bash
        POST /tally/forms
        Content-Type: application/json
        
        {
          "status": "DRAFT",
          "blocks": [
            {
              "type": "FORM_TITLE",
              "uuid": "11111111-1111-1111-1111-111111111111",
              "groupUuid": "22222222-2222-2222-2222-222222222222",
              "groupType": "FORM_TITLE",
              "title": "My Form",
              "payload": {}
            },
            {
              "type": "INPUT_TEXT",
              "uuid": "33333333-3333-3333-3333-333333333333",
              "groupUuid": "44444444-4444-4444-4444-444444444444",
              "groupType": "INPUT_TEXT",
              "title": "Your name",
              "payload": {}
            }
          ]
        }
        ```
        
        ### Update Form
        ```bash
        PATCH /tally/forms/{formId}
        Content-Type: application/json
        
        {
          "name": "Updated Form Name",
          "status": "PUBLISHED"
        }
        ```
        
        ### Delete Form
        ```bash
        DELETE /tally/forms/{formId}
        ```
        
        ### List Form Questions
        ```bash
        GET /tally/forms/{formId}/questions
        ```
        
        ### List Form Submissions
        ```bash
        GET /tally/forms/{formId}/submissions
        ```
        
        **Query Parameters:**
        - `page` - Page number
        - `limit` - Items per page
        - `startDate` - Filter by start date (ISO 8601)
        - `endDate` - Filter by end date (ISO 8601)
        - `afterId` - Cursor for pagination
        
        ### Get Submission
        ```bash
        GET /tally/forms/{formId}/submissions/{submissionId}
        ```
        
        ### Delete Submission
        ```bash
        DELETE /tally/forms/{formId}/submissions/{submissionId}
        ```
        
        ### List Workspaces
        ```bash
        GET /tally/workspaces
        ```
        
        ### Get Workspace
        ```bash
        GET /tally/workspaces/{workspaceId}
        ```
        
        ### Create Workspace
        ```bash
        POST /tally/workspaces
        Content-Type: application/json
        
        {
          "name": "New Workspace"
        }
        ```
        
        ### List Organization Users
        ```bash
        GET /tally/organizations/{organizationId}/users
        ```
        
        ### List Organization Invites
        ```bash
        GET /tally/organizations/{organizationId}/invites
        ```
        
        ### List Webhooks
        ```bash
        GET /tally/webhooks
        ```
        
        ### Create Webhook
        ```bash
        POST /tally/webhooks
        Content-Type: application/json
        
        {
          "formId": "GxdRaQ",
          "url": "https://your-endpoint.com/webhook",
          "eventTypes": ["FORM_RESPONSE"]
        }
        ```
        
        ## Notes
        
        - Form and workspace IDs are short alphanumeric strings (e.g., `GxdRaQ`, `3jW9Q1`)
        - Block `uuid` and `groupUuid` fields must be valid UUIDs (GUIDs)
        - Page-based pagination with `page` and `limit` parameters
        - Rate limit: 100 requests per minute
        - API is in public beta and subject to changes
        - Creating workspaces requires a Pro subscription
        
        ## Resources
        
        - [Tally API Introduction](https://developers.tally.so/api-reference/introduction)
        - [Tally API Reference](https://developers.tally.so/llms.txt)
        - [Tally Help Center](https://help.tally.so/)
        
    • tavily
      • README.md 2.8 KB
        # Tavily Routing Reference
        
        **App name:** `tavily`
        **Base URL proxied:** `api.tavily.com`
        
        ## API Path Pattern
        
        ```
        /tavily/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Search
        
        Perform AI-powered web search.
        
        ```bash
        POST /tavily/search
        Content-Type: application/json
        
        {
          "query": "latest AI news",
          "max_results": 5
        }
        ```
        
        With answer generation:
        ```bash
        POST /tavily/search
        Content-Type: application/json
        
        {
          "query": "What is machine learning?",
          "max_results": 5,
          "include_answer": true,
          "search_depth": "advanced"
        }
        ```
        
        ### Extract
        
        Extract content from URLs.
        
        ```bash
        POST /tavily/extract
        Content-Type: application/json
        
        {
          "urls": ["https://example.com/article"],
          "format": "markdown"
        }
        ```
        
        ### Map
        
        Discover URLs from a website.
        
        ```bash
        POST /tavily/map
        Content-Type: application/json
        
        {
          "url": "https://example.com",
          "limit": 20,
          "max_depth": 2
        }
        ```
        
        ### Crawl
        
        Crawl a website and extract content.
        
        ```bash
        POST /tavily/crawl
        Content-Type: application/json
        
        {
          "url": "https://example.com",
          "limit": 10,
          "max_depth": 2
        }
        ```
        
        ### Research Tasks
        
        #### Create Research Task
        ```bash
        POST /tavily/research
        Content-Type: application/json
        
        {
          "input": "What are the latest developments in AI?",
          "model": "mini"
        }
        ```
        
        Models: `mini` (fast), `pro` (comprehensive), `auto` (default)
        
        #### Get Research Task
        ```bash
        GET /tavily/research/{request_id}
        ```
        
        ## Search Parameters
        
        | Parameter | Type | Description |
        |-----------|------|-------------|
        | query | string | Search query (required) |
        | max_results | integer | Results count (0-20, default 5) |
        | search_depth | string | `basic`, `advanced`, `fast`, `ultra-fast` |
        | topic | string | `general` or `news` |
        | include_answer | boolean/string | Generate AI answer |
        | include_domains | array | Whitelist domains |
        | exclude_domains | array | Blacklist domains |
        | time_range | string | `day`, `week`, `month`, `year` |
        
        ## Notes
        
        - All search/extract/crawl/map endpoints use POST method
        - Research task GET uses GET method
        - Authentication is automatic - the gateway injects the API key
        - Search includes optional AI-generated answers
        - Map returns URLs only; Crawl returns URLs with content
        - Using `instructions` in crawl/map doubles credit cost
        - Research tasks are async - poll GET endpoint for results
        
        ## Resources
        
        - [Tavily API Documentation](https://docs.tavily.com)
        - [Search API Reference](https://docs.tavily.com/documentation/api-reference/endpoint/search)
        - [Extract API Reference](https://docs.tavily.com/documentation/api-reference/endpoint/extract)
        - [Crawl API Reference](https://docs.tavily.com/documentation/api-reference/endpoint/crawl)
        - [Map API Reference](https://docs.tavily.com/documentation/api-reference/endpoint/map)
        - [Research API Reference](https://docs.tavily.com/documentation/api-reference/endpoint/research)
        
    • telegram
      • README.md 3.3 KB
        # Telegram Routing Reference
        
        **App name:** `telegram`
        **Base URL proxied:** `api.telegram.org`
        
        ## API Path Pattern
        
        ```
        /telegram/:token/{method}
        ```
        
        The `:token` placeholder is automatically replaced with the bot token from the connection configuration.
        
        ## Common Endpoints
        
        ### Get Bot Info
        ```bash
        GET /telegram/:token/getMe
        ```
        
        ### Get Updates
        ```bash
        POST /telegram/:token/getUpdates
        Content-Type: application/json
        
        {
          "limit": 100,
          "timeout": 30
        }
        ```
        
        ### Send Message
        ```bash
        POST /telegram/:token/sendMessage
        Content-Type: application/json
        
        {
          "chat_id": 123456789,
          "text": "Hello!",
          "parse_mode": "HTML"
        }
        ```
        
        ### Send Photo
        ```bash
        POST /telegram/:token/sendPhoto
        Content-Type: application/json
        
        {
          "chat_id": 123456789,
          "photo": "https://example.com/image.jpg",
          "caption": "Photo caption"
        }
        ```
        
        ### Send Document
        ```bash
        POST /telegram/:token/sendDocument
        Content-Type: application/json
        
        {
          "chat_id": 123456789,
          "document": "https://example.com/file.pdf"
        }
        ```
        
        ### Send Location
        ```bash
        POST /telegram/:token/sendLocation
        Content-Type: application/json
        
        {
          "chat_id": 123456789,
          "latitude": 37.7749,
          "longitude": -122.4194
        }
        ```
        
        ### Send Poll
        ```bash
        POST /telegram/:token/sendPoll
        Content-Type: application/json
        
        {
          "chat_id": 123456789,
          "question": "What is your favorite?",
          "options": [{"text": "Option 1"}, {"text": "Option 2"}]
        }
        ```
        
        ### Edit Message
        ```bash
        POST /telegram/:token/editMessageText
        Content-Type: application/json
        
        {
          "chat_id": 123456789,
          "message_id": 123,
          "text": "Updated text"
        }
        ```
        
        ### Delete Message
        ```bash
        POST /telegram/:token/deleteMessage
        Content-Type: application/json
        
        {
          "chat_id": 123456789,
          "message_id": 123
        }
        ```
        
        ### Forward Message
        ```bash
        POST /telegram/:token/forwardMessage
        Content-Type: application/json
        
        {
          "chat_id": 123456789,
          "from_chat_id": 123456789,
          "message_id": 123
        }
        ```
        
        ### Get Chat
        ```bash
        POST /telegram/:token/getChat
        Content-Type: application/json
        
        {
          "chat_id": 123456789
        }
        ```
        
        ### Set Bot Commands
        ```bash
        POST /telegram/:token/setMyCommands
        Content-Type: application/json
        
        {
          "commands": [
            {"command": "start", "description": "Start the bot"},
            {"command": "help", "description": "Get help"}
          ]
        }
        ```
        
        ### Get File
        ```bash
        POST /telegram/:token/getFile
        Content-Type: application/json
        
        {
          "file_id": "AgACAgQAAxkDAAM..."
        }
        ```
        
        ### Set Webhook
        ```bash
        POST /telegram/:token/setWebhook
        Content-Type: application/json
        
        {
          "url": "https://example.com/webhook",
          "allowed_updates": ["message", "callback_query"]
        }
        ```
        
        ### Answer Callback Query
        ```bash
        POST /telegram/:token/answerCallbackQuery
        Content-Type: application/json
        
        {
          "callback_query_id": "12345678901234567",
          "text": "Button clicked!"
        }
        ```
        
        ## Notes
        
        - The `:token` placeholder is automatically replaced with the bot token
        - Chat IDs are positive integers for private chats, negative for groups
        - All methods support both GET and POST, but POST is recommended
        - Text messages have a 4096 character limit
        - Captions have a 1024 character limit
        - Polls support 2-10 options
        - Files can be sent via URL or file_id from previously uploaded files
        
        ## Resources
        
        - [Telegram Bot API Documentation](https://core.telegram.org/bots/api)
        - [Available Methods](https://core.telegram.org/bots/api#available-methods)
        - [Formatting Options](https://core.telegram.org/bots/api#formatting-options)
        
    • ticktick
      • README.md 2.5 KB
        # TickTick Routing Reference
        
        **App name:** `ticktick`
        **Base URL proxied:** `api.ticktick.com`
        
        ## API Path Pattern
        
        ```
        /ticktick/open/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### List Projects
        ```bash
        GET /ticktick/open/v1/project
        ```
        
        ### Get Project with Tasks
        ```bash
        GET /ticktick/open/v1/project/{projectId}/data
        ```
        
        Returns project details along with tasks and columns.
        
        ### Create Project
        ```bash
        POST /ticktick/open/v1/project
        Content-Type: application/json
        
        {
          "name": "My Project",
          "viewMode": "list"
        }
        ```
        
        **viewMode options:** `list`, `kanban`, `timeline`
        
        ### Delete Project
        ```bash
        DELETE /ticktick/open/v1/project/{projectId}
        ```
        
        ### Get Task
        ```bash
        GET /ticktick/open/v1/project/{projectId}/task/{taskId}
        ```
        
        ### Create Task
        ```bash
        POST /ticktick/open/v1/task
        Content-Type: application/json
        
        {
          "title": "New task",
          "projectId": "PROJECT_ID",
          "content": "Task description",
          "priority": 0,
          "dueDate": "2026-02-15T10:00:00+0000",
          "isAllDay": false
        }
        ```
        
        **Priority values:** 0=None, 1=Low, 3=Medium, 5=High
        
        ### Update Task
        ```bash
        POST /ticktick/open/v1/task/{taskId}
        Content-Type: application/json
        
        {
          "id": "TASK_ID",
          "projectId": "PROJECT_ID",
          "title": "Updated title",
          "priority": 1
        }
        ```
        
        ### Complete Task
        ```bash
        POST /ticktick/open/v1/project/{projectId}/task/{taskId}/complete
        ```
        
        ### Delete Task
        ```bash
        DELETE /ticktick/open/v1/project/{projectId}/task/{taskId}
        ```
        
        ## Task Fields
        
        | Field | Type | Description |
        |-------|------|-------------|
        | `id` | string | Task ID |
        | `projectId` | string | Parent project ID |
        | `title` | string | Task title |
        | `content` | string | Task description (Markdown) |
        | `priority` | integer | 0=None, 1=Low, 3=Medium, 5=High |
        | `status` | integer | 0=Active, 2=Completed |
        | `dueDate` | string | ISO 8601 format |
        | `startDate` | string | ISO 8601 format |
        | `isAllDay` | boolean | All-day task flag |
        | `timeZone` | string | e.g., "America/Los_Angeles" |
        | `tags` | array | List of tag names |
        | `columnId` | string | Kanban column ID |
        
        ## Notes
        
        - The Open API provides access to tasks and projects only
        - Habits, focus/pomodoro, and tags endpoints are not available through the Open API
        - Task `status` values: 0 = Active, 2 = Completed
        - Dates use ISO 8601 format with timezone offset (e.g., `2026-02-15T10:00:00+0000`)
        - The `columns` field in project data is used for Kanban board columns
        
        ## Resources
        
        - [TickTick Developer Portal](https://developer.ticktick.com/)
        - [TickTick Help Center](https://help.ticktick.com/)
        
    • todoist
      • README.md 2.7 KB
        # Todoist Routing Reference
        
        **App name:** `todoist`
        **Base URL proxied:** `api.todoist.com`
        
        ## API Path Pattern
        
        ```
        /todoist/api/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### List Projects
        ```bash
        GET /todoist/api/v1/projects
        ```
        
        ### Get Project
        ```bash
        GET /todoist/api/v1/projects/{id}
        ```
        
        ### Create Project
        ```bash
        POST /todoist/api/v1/projects
        Content-Type: application/json
        
        {
          "name": "My Project",
          "color": "blue"
        }
        ```
        
        ### Update Project
        ```bash
        POST /todoist/api/v1/projects/{id}
        Content-Type: application/json
        
        {
          "name": "Updated Name"
        }
        ```
        
        ### Delete Project
        ```bash
        DELETE /todoist/api/v1/projects/{id}
        ```
        
        ### List Tasks
        ```bash
        GET /todoist/api/v1/tasks
        GET /todoist/api/v1/tasks?project_id={project_id}
        GET /todoist/api/v1/tasks?filter={filter}
        ```
        
        ### Get Task
        ```bash
        GET /todoist/api/v1/tasks/{id}
        ```
        
        ### Create Task
        ```bash
        POST /todoist/api/v1/tasks
        Content-Type: application/json
        
        {
          "content": "Buy groceries",
          "priority": 2,
          "due_string": "tomorrow"
        }
        ```
        
        ### Update Task
        ```bash
        POST /todoist/api/v1/tasks/{id}
        Content-Type: application/json
        
        {
          "content": "Updated content",
          "priority": 4
        }
        ```
        
        ### Close Task (Complete)
        ```bash
        POST /todoist/api/v1/tasks/{id}/close
        ```
        
        ### Reopen Task
        ```bash
        POST /todoist/api/v1/tasks/{id}/reopen
        ```
        
        ### Delete Task
        ```bash
        DELETE /todoist/api/v1/tasks/{id}
        ```
        
        ### List Sections
        ```bash
        GET /todoist/api/v1/sections
        GET /todoist/api/v1/sections?project_id={project_id}
        ```
        
        ### Create Section
        ```bash
        POST /todoist/api/v1/sections
        Content-Type: application/json
        
        {
          "name": "In Progress",
          "project_id": "123456"
        }
        ```
        
        ### Delete Section
        ```bash
        DELETE /todoist/api/v1/sections/{id}
        ```
        
        ### List Labels
        ```bash
        GET /todoist/api/v1/labels
        ```
        
        ### Create Label
        ```bash
        POST /todoist/api/v1/labels
        Content-Type: application/json
        
        {
          "name": "urgent",
          "color": "red"
        }
        ```
        
        ### Delete Label
        ```bash
        DELETE /todoist/api/v1/labels/{id}
        ```
        
        ### List Comments
        ```bash
        GET /todoist/api/v1/comments?task_id={task_id}
        GET /todoist/api/v1/comments?project_id={project_id}
        ```
        
        ### Create Comment
        ```bash
        POST /todoist/api/v1/comments
        Content-Type: application/json
        
        {
          "task_id": "123456",
          "content": "This is a comment"
        }
        ```
        
        ### Delete Comment
        ```bash
        DELETE /todoist/api/v1/comments/{id}
        ```
        
        ## Notes
        
        - Task and Project IDs are strings
        - Priority values: 1 (normal) to 4 (urgent)
        - Use only one due date format per request: `due_string`, `due_date`, or `due_datetime`
        - Comments require either `task_id` or `project_id`
        - Close/reopen/delete operations return 204 No Content
        
        ## Resources
        
        - [Todoist API v1 Documentation](https://developer.todoist.com/api/v1)
        - [Todoist Filter Syntax](https://todoist.com/help/articles/introduction-to-filters)
        
    • toggl-track
      • README.md 3.7 KB
        # Toggl Track Routing Reference
        
        **App name:** `toggl-track`
        **Base URL proxied:** `api.track.toggl.com`
        
        ## API Path Pattern
        
        ```
        /toggl-track/api/v9/{resource}
        ```
        
        ## Common Endpoints
        
        ### Get Current User
        ```bash
        GET /toggl-track/api/v9/me
        ```
        
        ### List Workspaces
        ```bash
        GET /toggl-track/api/v9/me/workspaces
        ```
        
        ### Get Workspace
        ```bash
        GET /toggl-track/api/v9/workspaces/{workspace_id}
        ```
        
        ### List Workspace Users
        ```bash
        GET /toggl-track/api/v9/workspaces/{workspace_id}/users
        ```
        
        ### List Time Entries
        ```bash
        GET /toggl-track/api/v9/me/time_entries
        GET /toggl-track/api/v9/me/time_entries?start_date=2026-02-01&end_date=2026-02-28
        ```
        
        ### Get Current Time Entry
        ```bash
        GET /toggl-track/api/v9/me/time_entries/current
        ```
        
        ### Create Time Entry
        ```bash
        POST /toggl-track/api/v9/workspaces/{workspace_id}/time_entries
        Content-Type: application/json
        
        {
          "description": "Working on task",
          "start": "2026-02-13T10:00:00Z",
          "duration": -1,
          "workspace_id": 21180405,
          "created_with": "maton-api"
        }
        ```
        
        ### Stop Time Entry
        ```bash
        PATCH /toggl-track/api/v9/workspaces/{workspace_id}/time_entries/{time_entry_id}/stop
        ```
        
        ### Update Time Entry
        ```bash
        PUT /toggl-track/api/v9/workspaces/{workspace_id}/time_entries/{time_entry_id}
        Content-Type: application/json
        
        {
          "description": "Updated description"
        }
        ```
        
        ### Delete Time Entry
        ```bash
        DELETE /toggl-track/api/v9/workspaces/{workspace_id}/time_entries/{time_entry_id}
        ```
        
        ### List Projects
        ```bash
        GET /toggl-track/api/v9/workspaces/{workspace_id}/projects
        GET /toggl-track/api/v9/workspaces/{workspace_id}/projects?active=true
        ```
        
        ### Create Project
        ```bash
        POST /toggl-track/api/v9/workspaces/{workspace_id}/projects
        Content-Type: application/json
        
        {
          "name": "New Project",
          "active": true,
          "color": "#0b83d9"
        }
        ```
        
        ### Update Project
        ```bash
        PUT /toggl-track/api/v9/workspaces/{workspace_id}/projects/{project_id}
        Content-Type: application/json
        
        {
          "name": "Updated Project"
        }
        ```
        
        ### Delete Project
        ```bash
        DELETE /toggl-track/api/v9/workspaces/{workspace_id}/projects/{project_id}
        ```
        
        ### List Clients
        ```bash
        GET /toggl-track/api/v9/workspaces/{workspace_id}/clients
        ```
        
        ### Create Client
        ```bash
        POST /toggl-track/api/v9/workspaces/{workspace_id}/clients
        Content-Type: application/json
        
        {
          "name": "New Client"
        }
        ```
        
        ### Update Client
        ```bash
        PUT /toggl-track/api/v9/workspaces/{workspace_id}/clients/{client_id}
        Content-Type: application/json
        
        {
          "name": "Updated Client"
        }
        ```
        
        ### Delete Client
        ```bash
        DELETE /toggl-track/api/v9/workspaces/{workspace_id}/clients/{client_id}
        ```
        
        ### List Tags
        ```bash
        GET /toggl-track/api/v9/workspaces/{workspace_id}/tags
        ```
        
        ### Create Tag
        ```bash
        POST /toggl-track/api/v9/workspaces/{workspace_id}/tags
        Content-Type: application/json
        
        {
          "name": "New Tag"
        }
        ```
        
        ### Update Tag
        ```bash
        PUT /toggl-track/api/v9/workspaces/{workspace_id}/tags/{tag_id}
        Content-Type: application/json
        
        {
          "name": "Updated Tag"
        }
        ```
        
        ### Delete Tag
        ```bash
        DELETE /toggl-track/api/v9/workspaces/{workspace_id}/tags/{tag_id}
        ```
        
        ## Notes
        
        - Workspace IDs and time entry IDs are integers
        - Duration is in seconds; use `-1` to start a running timer
        - Timestamps use ISO 8601 format (e.g., `2026-02-13T19:58:43Z`)
        - The `created_with` field is required when creating time entries
        - Pagination uses `page` and `per_page` query parameters
        - Time entries list supports `since`, `start_date`, and `end_date` filters
        
        ## Resources
        
        - [Toggl Track API Documentation](https://engineering.toggl.com/docs/)
        - [Time Entries API](https://engineering.toggl.com/docs/api/time_entries)
        - [Projects API](https://engineering.toggl.com/docs/api/projects)
        - [Clients API](https://engineering.toggl.com/docs/api/clients)
        - [Tags API](https://engineering.toggl.com/docs/api/tags)
        
    • trello
      • README.md 3.5 KB
        # Trello Routing Reference
        
        **App name:** `trello`
        **Base URL proxied:** `api.trello.com`
        
        ## API Path Pattern
        
        ```
        /trello/1/{resource}
        ```
        
        ## Common Endpoints
        
        ### Get Current Member
        ```bash
        GET /trello/1/members/me
        ```
        
        ### Get Member's Boards
        ```bash
        GET /trello/1/members/me/boards?filter=open
        ```
        
        ### Get Board
        ```bash
        GET /trello/1/boards/{id}?lists=open&cards=open
        ```
        
        ### Create Board
        ```bash
        POST /trello/1/boards
        Content-Type: application/json
        
        {
          "name": "Project Alpha",
          "desc": "Main project board",
          "defaultLists": false,
          "prefs_permissionLevel": "private"
        }
        ```
        
        ### Get Board Lists
        ```bash
        GET /trello/1/boards/{id}/lists?filter=open
        ```
        
        ### Get Board Cards
        ```bash
        GET /trello/1/boards/{id}/cards
        ```
        
        ### Create List
        ```bash
        POST /trello/1/lists
        Content-Type: application/json
        
        {
          "name": "To Do",
          "idBoard": "BOARD_ID",
          "pos": "top"
        }
        ```
        
        ### Get Cards in List
        ```bash
        GET /trello/1/lists/{id}/cards
        ```
        
        ### Get Card
        ```bash
        GET /trello/1/cards/{id}?members=true&checklists=all
        ```
        
        ### Create Card
        ```bash
        POST /trello/1/cards
        Content-Type: application/json
        
        {
          "name": "Implement feature X",
          "desc": "Description of the task",
          "idList": "LIST_ID",
          "pos": "bottom",
          "due": "2025-03-30T12:00:00.000Z",
          "idMembers": ["MEMBER_ID"],
          "idLabels": ["LABEL_ID"]
        }
        ```
        
        ### Update Card
        ```bash
        PUT /trello/1/cards/{id}
        Content-Type: application/json
        
        {
          "name": "Updated card name",
          "desc": "Updated description",
          "due": "2025-04-15T12:00:00.000Z"
        }
        ```
        
        ### Move Card to List
        ```bash
        PUT /trello/1/cards/{id}
        Content-Type: application/json
        
        {
          "idList": "NEW_LIST_ID",
          "pos": "top"
        }
        ```
        
        ### Delete Card
        ```bash
        DELETE /trello/1/cards/{id}
        ```
        
        ### Add Comment to Card
        ```bash
        POST /trello/1/cards/{id}/actions/comments
        Content-Type: application/json
        
        {
          "text": "This is a comment"
        }
        ```
        
        ### Create Checklist
        ```bash
        POST /trello/1/checklists
        Content-Type: application/json
        
        {
          "idCard": "CARD_ID",
          "name": "Task Checklist"
        }
        ```
        
        ### Create Checklist Item
        ```bash
        POST /trello/1/checklists/{id}/checkItems
        Content-Type: application/json
        
        {
          "name": "Subtask 1",
          "pos": "bottom",
          "checked": false
        }
        ```
        
        ### Get Board Labels
        ```bash
        GET /trello/1/boards/{id}/labels
        ```
        
        ### Create Label
        ```bash
        POST /trello/1/labels
        Content-Type: application/json
        
        {
          "name": "High Priority",
          "color": "red",
          "idBoard": "BOARD_ID"
        }
        ```
        
        ### Search
        ```bash
        GET /trello/1/search?query=keyword&modelTypes=cards,boards
        ```
        
        ## Notes
        
        - IDs are 24-character alphanumeric strings
        - Use `me` to reference the authenticated user
        - Dates are in ISO 8601 format
        - `pos` can be `top`, `bottom`, or a positive number
        - Label colors: `yellow`, `purple`, `blue`, `red`, `green`, `orange`, `black`, `sky`, `pink`, `lime`, `null`
        - Use `fields` parameter to limit returned data and improve performance
        - Archived items can be retrieved with `filter=closed`
        
        ## Resources
        
        - [Trello API Overview](https://developer.atlassian.com/cloud/trello/rest/api-group-actions/)
        - [Boards](https://developer.atlassian.com/cloud/trello/rest/api-group-boards/)
        - [Lists](https://developer.atlassian.com/cloud/trello/rest/api-group-lists/)
        - [Cards](https://developer.atlassian.com/cloud/trello/rest/api-group-cards/)
        - [Checklists](https://developer.atlassian.com/cloud/trello/rest/api-group-checklists/)
        - [Labels](https://developer.atlassian.com/cloud/trello/rest/api-group-labels/)
        - [Members](https://developer.atlassian.com/cloud/trello/rest/api-group-members/)
        - [Search](https://developer.atlassian.com/cloud/trello/rest/api-group-search/)
        
    • twilio
      • README.md 3.7 KB
        # Twilio Routing Reference
        
        **App name:** `twilio`
        **Base URL proxied:** `api.twilio.com`
        
        ## API Path Pattern
        
        ```
        /twilio/2010-04-01/Accounts/{AccountSid}/{resource}.json
        ```
        
        **Important:** Most Twilio endpoints require your Account SID in the path. Get it from `/Accounts.json`.
        
        ## Common Endpoints
        
        ### Accounts
        
        #### List Accounts
        ```bash
        GET /twilio/2010-04-01/Accounts.json
        ```
        
        #### Get Account
        ```bash
        GET /twilio/2010-04-01/Accounts/{AccountSid}.json
        ```
        
        ### Messages (SMS/MMS)
        
        #### List Messages
        ```bash
        GET /twilio/2010-04-01/Accounts/{AccountSid}/Messages.json
        ```
        
        #### Send Message
        ```bash
        POST /twilio/2010-04-01/Accounts/{AccountSid}/Messages.json
        Content-Type: application/x-www-form-urlencoded
        
        To=+15559876543&From=+15551234567&Body=Hello%20from%20Twilio!
        ```
        
        #### Get Message
        ```bash
        GET /twilio/2010-04-01/Accounts/{AccountSid}/Messages/{MessageSid}.json
        ```
        
        #### Delete Message
        ```bash
        DELETE /twilio/2010-04-01/Accounts/{AccountSid}/Messages/{MessageSid}.json
        ```
        
        ### Calls (Voice)
        
        #### List Calls
        ```bash
        GET /twilio/2010-04-01/Accounts/{AccountSid}/Calls.json
        ```
        
        #### Make Call
        ```bash
        POST /twilio/2010-04-01/Accounts/{AccountSid}/Calls.json
        Content-Type: application/x-www-form-urlencoded
        
        To=+15559876543&From=+15551234567&Url=https://example.com/twiml
        ```
        
        #### Get Call
        ```bash
        GET /twilio/2010-04-01/Accounts/{AccountSid}/Calls/{CallSid}.json
        ```
        
        #### End Call
        ```bash
        POST /twilio/2010-04-01/Accounts/{AccountSid}/Calls/{CallSid}.json
        Content-Type: application/x-www-form-urlencoded
        
        Status=completed
        ```
        
        ### Phone Numbers
        
        #### List Incoming Phone Numbers
        ```bash
        GET /twilio/2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers.json
        ```
        
        #### Get Phone Number
        ```bash
        GET /twilio/2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers/{PhoneNumberSid}.json
        ```
        
        #### Update Phone Number
        ```bash
        POST /twilio/2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers/{PhoneNumberSid}.json
        Content-Type: application/x-www-form-urlencoded
        
        FriendlyName=Updated%20Name
        ```
        
        ### Applications
        
        #### List Applications
        ```bash
        GET /twilio/2010-04-01/Accounts/{AccountSid}/Applications.json
        ```
        
        #### Create Application
        ```bash
        POST /twilio/2010-04-01/Accounts/{AccountSid}/Applications.json
        Content-Type: application/x-www-form-urlencoded
        
        FriendlyName=My%20App&VoiceUrl=https://example.com/voice
        ```
        
        #### Delete Application
        ```bash
        DELETE /twilio/2010-04-01/Accounts/{AccountSid}/Applications/{ApplicationSid}.json
        ```
        
        ### Queues
        
        #### List Queues
        ```bash
        GET /twilio/2010-04-01/Accounts/{AccountSid}/Queues.json
        ```
        
        #### Create Queue
        ```bash
        POST /twilio/2010-04-01/Accounts/{AccountSid}/Queues.json
        Content-Type: application/x-www-form-urlencoded
        
        FriendlyName=Support%20Queue&MaxSize=100
        ```
        
        ### Usage Records
        
        #### List Usage Records
        ```bash
        GET /twilio/2010-04-01/Accounts/{AccountSid}/Usage/Records.json
        ```
        
        ## Pagination
        
        Uses page-based pagination:
        
        ```bash
        GET /twilio/2010-04-01/Accounts/{AccountSid}/Messages.json?PageSize=50&Page=0
        ```
        
        **Parameters:**
        - `PageSize` - Results per page (default: 50)
        - `Page` - Page number (0-indexed)
        
        Response includes `next_page_uri` for fetching next page.
        
        ## Notes
        
        - All endpoints require `/2010-04-01/` API version prefix
        - Request bodies use `application/x-www-form-urlencoded` (not JSON)
        - Phone numbers must be in E.164 format (+15551234567)
        - SID prefixes: AC (account), SM/MM (messages), CA (calls), PN (phone numbers), AP (applications), QU (queues)
        - POST is used for both creating and updating resources
        - DELETE returns 204 No Content on success
        
        ## Resources
        
        - [Twilio API Overview](https://www.twilio.com/docs/usage/api)
        - [Messages API](https://www.twilio.com/docs/messaging/api/message-resource)
        - [Calls API](https://www.twilio.com/docs/voice/api/call-resource)
        
    • typeform
      • README.md 5 KB
        # Typeform Routing Reference
        
        **App name:** `typeform`
        **Base URL proxied:** `api.typeform.com`
        
        ## API Path Pattern
        
        ```
        /typeform/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### User
        
        #### Get Current User
        ```bash
        GET /typeform/me
        ```
        
        ### Forms
        
        #### List Forms
        ```bash
        GET /typeform/forms?page_size=10
        ```
        
        #### Get Form
        ```bash
        GET /typeform/forms/{formId}
        ```
        
        #### Create Form
        ```bash
        POST /typeform/forms
        Content-Type: application/json
        
        {
          "title": "Customer Survey",
          "fields": [
            {
              "type": "short_text",
              "title": "What is your name?"
            },
            {
              "type": "email",
              "title": "What is your email?"
            }
          ]
        }
        ```
        
        #### Update Form (Full Replace)
        ```bash
        PUT /typeform/forms/{formId}
        Content-Type: application/json
        
        {
          "title": "Updated Survey Title",
          "fields": [...]
        }
        ```
        
        #### Update Form (Partial - PATCH)
        ```bash
        PATCH /typeform/forms/{formId}
        Content-Type: application/json
        
        [
          {"op": "replace", "path": "/title", "value": "New Title"}
        ]
        ```
        
        #### Delete Form
        ```bash
        DELETE /typeform/forms/{formId}
        ```
        
        ### Responses
        
        #### List Responses
        ```bash
        GET /typeform/forms/{formId}/responses?page_size=25
        ```
        
        With filters:
        ```bash
        GET /typeform/forms/{formId}/responses?since=2024-01-01T00:00:00Z&until=2024-12-31T23:59:59Z
        ```
        
        Completed only:
        ```bash
        GET /typeform/forms/{formId}/responses?completed=true
        ```
        
        #### Delete Response
        ```bash
        DELETE /typeform/forms/{formId}/responses?included_response_ids={responseId}
        ```
        
        ### Insights
        
        #### Get Form Insights
        ```bash
        GET /typeform/insights/{formId}/summary
        ```
        
        ### Workspaces
        
        #### List Workspaces
        ```bash
        GET /typeform/workspaces
        ```
        
        #### Get Workspace
        ```bash
        GET /typeform/workspaces/{workspaceId}
        ```
        
        ### Themes
        
        #### List Themes
        ```bash
        GET /typeform/themes
        ```
        
        ### Images
        
        #### List Images
        ```bash
        GET /typeform/images
        ```
        
        ## Field Types
        
        - `short_text` - Single line text
        - `long_text` - Multi-line text
        - `email` - Email address
        - `number` - Numeric input
        - `rating` - Star rating
        - `opinion_scale` - 0-10 scale
        - `multiple_choice` - Single or multiple selection
        - `yes_no` - Boolean
        - `date` - Date picker
        - `file_upload` - File attachment
        - `dropdown` - Dropdown selection
        
        ## Notes
        
        - Form IDs are alphanumeric strings (e.g., `JiLEvIgv`)
        - Response pagination uses `before` token for cursor-based pagination
        - Timestamps are in ISO 8601 format (e.g., `2026-01-01T00:00:00Z`)
        - Responses include `answers` array with field references
        - DELETE operations return HTTP 204 (no content) on success
        - PATCH uses JSON Patch format (array of operations with `op`, `path`, `value`)
        
        ## Resources
        
        - [API Overview](https://www.typeform.com/developers/get-started)
        - [List Forms](https://www.typeform.com/developers/create/reference/retrieve-forms)
        - [Get Form](https://www.typeform.com/developers/create/reference/retrieve-form)
        - [Create Form](https://www.typeform.com/developers/create/reference/create-form)
        - [Update Form](https://www.typeform.com/developers/create/reference/update-form)
        - [Update Form Patch](https://www.typeform.com/developers/create/reference/update-form-patch)
        - [Delete Form](https://www.typeform.com/developers/create/reference/delete-form)
        - [Get Form Messages](https://www.typeform.com/developers/create/reference/retrieve-custom-form-messages)
        - [Update Form Messages](https://www.typeform.com/developers/create/reference/update-custom-messages)
        - [List Responses](https://www.typeform.com/developers/responses/reference/retrieve-responses)
        - [Delete Responses](https://www.typeform.com/developers/responses/reference/delete-responses)
        - [List Workspaces](https://www.typeform.com/developers/create/reference/retrieve-workspaces)
        - [Get Workspace](https://www.typeform.com/developers/create/reference/retrieve-workspace)
        - [Create Workspace](https://www.typeform.com/developers/create/reference/create-workspace)
        - [Update Workspace](https://www.typeform.com/developers/create/reference/update-workspace)
        - [Delete Workspace](https://www.typeform.com/developers/create/reference/delete-workspace)
        - [List Themes](https://www.typeform.com/developers/create/reference/retrieve-themes)
        - [Get Theme](https://www.typeform.com/developers/create/reference/retrieve-theme)
        - [Create Theme](https://www.typeform.com/developers/create/reference/create-theme)
        - [Update Theme](https://www.typeform.com/developers/create/reference/update-theme-partial-update)
        - [Delete Theme](https://www.typeform.com/developers/create/reference/delete-theme)
        - [Get Image](https://www.typeform.com/developers/create/reference/retrieve-image)
        - [Get Image By Size](https://www.typeform.com/developers/create/reference/retrieve-image-by-size)
        - [Create Image](https://www.typeform.com/developers/create/reference/create-image)
        - [Delete Image](https://www.typeform.com/developers/create/reference/delete-image)
        - [Create Or Update Webhook](https://www.typeform.com/developers/webhooks/reference/create-or-update-webhook)
        - [Get Webhook](https://www.typeform.com/developers/webhooks/reference/retrieve-single-webhook)
        - [Delete Webhook](https://www.typeform.com/developers/webhooks/reference/delete-webhook)
    • unbounce
      • README.md 2.9 KB
        # Unbounce Routing Reference
        
        **App name:** `unbounce`
        **Base URL proxied:** `api.unbounce.com`
        
        ## API Path Pattern
        
        ```
        /unbounce/accounts
        /unbounce/accounts/{account_id}
        /unbounce/accounts/{account_id}/sub_accounts
        /unbounce/accounts/{account_id}/pages
        /unbounce/sub_accounts/{sub_account_id}
        /unbounce/sub_accounts/{sub_account_id}/pages
        /unbounce/sub_accounts/{sub_account_id}/domains
        /unbounce/sub_accounts/{sub_account_id}/page_groups
        /unbounce/pages
        /unbounce/pages/{page_id}
        /unbounce/pages/{page_id}/form_fields
        /unbounce/pages/{page_id}/leads
        /unbounce/leads/{lead_id}
        /unbounce/domains/{domain_id}
        /unbounce/domains/{domain_id}/pages
        /unbounce/page_groups/{page_group_id}/pages
        /unbounce/users/self
        /unbounce/users/{user_id}
        ```
        
        ## Common Endpoints
        
        ### List Accounts
        ```bash
        GET /unbounce/accounts
        ```
        
        ### Get Account
        ```bash
        GET /unbounce/accounts/{account_id}
        ```
        
        ### List Sub-Accounts
        ```bash
        GET /unbounce/accounts/{account_id}/sub_accounts
        ```
        
        ### Get Sub-Account
        ```bash
        GET /unbounce/sub_accounts/{sub_account_id}
        ```
        
        ### List Pages
        ```bash
        GET /unbounce/pages
        ```
        
        ### Get Page
        ```bash
        GET /unbounce/pages/{page_id}
        ```
        
        ### List Page Form Fields
        ```bash
        GET /unbounce/pages/{page_id}/form_fields
        ```
        
        ### List Page Leads
        ```bash
        GET /unbounce/pages/{page_id}/leads
        ```
        
        ### Get Lead
        ```bash
        GET /unbounce/leads/{lead_id}
        ```
        
        ### List Domains
        ```bash
        GET /unbounce/sub_accounts/{sub_account_id}/domains
        ```
        
        ### Get Domain
        ```bash
        GET /unbounce/domains/{domain_id}
        ```
        
        ### List Page Groups
        ```bash
        GET /unbounce/sub_accounts/{sub_account_id}/page_groups
        ```
        
        ### List Page Group Pages
        ```bash
        GET /unbounce/page_groups/{page_group_id}/pages
        ```
        
        ### Create Lead
        ```bash
        POST /unbounce/pages/{page_id}/leads
        Content-Type: application/json
        
        {
          "conversion": true,
          "visitor_id": "unique-visitor-id",
          "form_submission": {
            "variant_id": "a",
            "submitter_ip": "127.0.0.1",
            "form_data": {
              "name": "John Doe",
              "email": "john@example.com"
            }
          }
        }
        ```
        
        ### Get Current User
        ```bash
        GET /unbounce/users/self
        ```
        
        ### Get User
        ```bash
        GET /unbounce/users/{user_id}
        ```
        
        ## Query Parameters
        
        - `limit` - Results per page (default: 50, max: 1000)
        - `offset` - Skip first N results
        - `sort_order` - `asc` or `desc`
        - `from` - Start date (RFC 5322 format)
        - `to` - End date (RFC 5322 format)
        - `count` - When `true`, only return count in metadata
        - `role` - Filter pages by role: `viewer` or `author`
        - `with_stats` - Include A/B test statistics (for /pages)
        - `include_sub_pages` - Include sub-page form fields (for /form_fields)
        
        ## Notes
        
        - Page IDs are UUIDs, account/sub-account IDs are integers
        - All responses include `metadata` with HATEOAS navigation links
        - Page states: `published` or `unpublished`
        - Account states: `active` or `suspended`
        - Date format: RFC 5322 (e.g., `2026-03-04T10:54:34Z`)
        
        ## Resources
        
        - [Unbounce API Documentation](https://developer.unbounce.com/api_reference/)
        
    • vimeo
      • README.md 2.2 KB
        # Vimeo Routing Reference
        
        **App name:** `vimeo`
        **Base URL proxied:** `api.vimeo.com`
        
        ## API Path Pattern
        
        ```
        /vimeo/{resource}
        ```
        
        ## Common Endpoints
        
        ### User
        
        ```bash
        GET /vimeo/me
        GET /vimeo/users/{user_id}
        GET /vimeo/me/feed
        ```
        
        ### Videos
        
        ```bash
        # List user videos
        GET /vimeo/me/videos
        
        # Search videos
        GET /vimeo/videos?query=nature
        
        # Get video
        GET /vimeo/videos/{video_id}
        
        # Update video
        PATCH /vimeo/videos/{video_id}
        
        # Delete video
        DELETE /vimeo/videos/{video_id}
        ```
        
        ### Folders (Projects)
        
        ```bash
        GET /vimeo/me/folders
        POST /vimeo/me/folders
        PATCH /vimeo/me/projects/{project_id}
        DELETE /vimeo/me/projects/{project_id}
        
        # Folder videos
        GET /vimeo/me/projects/{project_id}/videos
        PUT /vimeo/me/projects/{project_id}/videos/{video_id}
        DELETE /vimeo/me/projects/{project_id}/videos/{video_id}
        ```
        
        ### Albums (Showcases)
        
        ```bash
        GET /vimeo/me/albums
        POST /vimeo/me/albums
        PATCH /vimeo/me/albums/{album_id}
        DELETE /vimeo/me/albums/{album_id}
        
        # Album videos
        GET /vimeo/me/albums/{album_id}/videos
        PUT /vimeo/me/albums/{album_id}/videos/{video_id}
        DELETE /vimeo/me/albums/{album_id}/videos/{video_id}
        ```
        
        ### Comments
        
        ```bash
        GET /vimeo/videos/{video_id}/comments
        POST /vimeo/videos/{video_id}/comments
        DELETE /vimeo/videos/{video_id}/comments/{comment_id}
        ```
        
        ### Likes
        
        ```bash
        GET /vimeo/me/likes
        PUT /vimeo/me/likes/{video_id}
        DELETE /vimeo/me/likes/{video_id}
        ```
        
        ### Watch Later
        
        ```bash
        GET /vimeo/me/watchlater
        PUT /vimeo/me/watchlater/{video_id}
        DELETE /vimeo/me/watchlater/{video_id}
        ```
        
        ### Following
        
        ```bash
        GET /vimeo/me/followers
        GET /vimeo/me/following
        PUT /vimeo/me/following/{user_id}
        DELETE /vimeo/me/following/{user_id}
        ```
        
        ### Channels and Categories
        
        ```bash
        GET /vimeo/channels
        GET /vimeo/channels/{channel_id}
        GET /vimeo/categories
        GET /vimeo/categories/{category}/videos
        ```
        
        ## Notes
        
        - Video and user IDs are numeric
        - Folders are called "projects" in API paths
        - Albums are "Showcases" in the Vimeo UI
        - DELETE and PUT operations return 204 No Content
        - Video uploads require TUS protocol
        - Page-based pagination with `page` and `per_page` parameters
        
        ## Resources
        
        - [Vimeo API Reference](https://developer.vimeo.com/api/reference)
        - [Vimeo Developer Portal](https://developer.vimeo.com)
        
    • whatsapp-business
      • README.md 4.9 KB
        # WhatsApp Business Routing Reference
        
        **App name:** `whatsapp-business`
        **Base URL proxied:** `graph.facebook.com`
        
        ## API Path Pattern
        
        ```
        /whatsapp-business/v21.0/{resource}
        ```
        
        ## Common Endpoints
        
        ### Send Text Message
        ```bash
        POST /whatsapp-business/v21.0/{phone_number_id}/messages
        Content-Type: application/json
        
        {
          "messaging_product": "whatsapp",
          "to": "1234567890",
          "type": "text",
          "text": {"body": "Hello from WhatsApp!"}
        }
        ```
        
        ### Send Template Message
        ```bash
        POST /whatsapp-business/v21.0/{phone_number_id}/messages
        Content-Type: application/json
        
        {
          "messaging_product": "whatsapp",
          "to": "1234567890",
          "type": "template",
          "template": {
            "name": "hello_world",
            "language": {"code": "en_US"},
            "components": [
              {
                "type": "body",
                "parameters": [{"type": "text", "text": "John"}]
              }
            ]
          }
        }
        ```
        
        ### Send Image Message
        ```bash
        POST /whatsapp-business/v21.0/{phone_number_id}/messages
        Content-Type: application/json
        
        {
          "messaging_product": "whatsapp",
          "to": "1234567890",
          "type": "image",
          "image": {
            "link": "https://example.com/image.jpg",
            "caption": "Check out this image!"
          }
        }
        ```
        
        ### Send Document Message
        ```bash
        POST /whatsapp-business/v21.0/{phone_number_id}/messages
        Content-Type: application/json
        
        {
          "messaging_product": "whatsapp",
          "to": "1234567890",
          "type": "document",
          "document": {
            "link": "https://example.com/document.pdf",
            "filename": "report.pdf"
          }
        }
        ```
        
        ### Send Interactive Button Message
        ```bash
        POST /whatsapp-business/v21.0/{phone_number_id}/messages
        Content-Type: application/json
        
        {
          "messaging_product": "whatsapp",
          "to": "1234567890",
          "type": "interactive",
          "interactive": {
            "type": "button",
            "body": {"text": "Would you like to proceed?"},
            "action": {
              "buttons": [
                {"type": "reply", "reply": {"id": "yes", "title": "Yes"}},
                {"type": "reply", "reply": {"id": "no", "title": "No"}}
              ]
            }
          }
        }
        ```
        
        ### Send Interactive List Message
        ```bash
        POST /whatsapp-business/v21.0/{phone_number_id}/messages
        Content-Type: application/json
        
        {
          "messaging_product": "whatsapp",
          "to": "1234567890",
          "type": "interactive",
          "interactive": {
            "type": "list",
            "body": {"text": "Choose from the list below"},
            "action": {
              "button": "View Options",
              "sections": [
                {
                  "title": "Products",
                  "rows": [
                    {"id": "prod1", "title": "Product 1"},
                    {"id": "prod2", "title": "Product 2"}
                  ]
                }
              ]
            }
          }
        }
        ```
        
        ### Mark Message as Read
        ```bash
        POST /whatsapp-business/v21.0/{phone_number_id}/messages
        Content-Type: application/json
        
        {
          "messaging_product": "whatsapp",
          "status": "read",
          "message_id": "wamid.xxxxx"
        }
        ```
        
        ### Upload Media
        ```bash
        POST /whatsapp-business/v21.0/{phone_number_id}/media
        Content-Type: multipart/form-data
        
        file=@/path/to/file.jpg
        type=image/jpeg
        messaging_product=whatsapp
        ```
        
        ### Get Media URL
        ```bash
        GET /whatsapp-business/v21.0/{media_id}
        ```
        
        ### List Message Templates
        ```bash
        GET /whatsapp-business/v21.0/{whatsapp_business_account_id}/message_templates
        ```
        
        ### Create Message Template
        ```bash
        POST /whatsapp-business/v21.0/{whatsapp_business_account_id}/message_templates
        Content-Type: application/json
        
        {
          "name": "order_confirmation",
          "language": "en_US",
          "category": "UTILITY",
          "components": [
            {"type": "BODY", "text": "Hi {{1}}, your order #{{2}} has been confirmed!"}
          ]
        }
        ```
        
        ### Get Business Profile
        ```bash
        GET /whatsapp-business/v21.0/{phone_number_id}/whatsapp_business_profile?fields=about,address,description,email,websites
        ```
        
        ### Update Business Profile
        ```bash
        POST /whatsapp-business/v21.0/{phone_number_id}/whatsapp_business_profile
        Content-Type: application/json
        
        {
          "messaging_product": "whatsapp",
          "about": "Your trusted partner",
          "description": "We provide excellent services"
        }
        ```
        
        ## Notes
        
        - Phone numbers must be in international format without `+` (e.g., `1234567890`)
        - `messaging_product` must always be set to `whatsapp`
        - Template messages are required for initiating conversations (24-hour messaging window)
        - Media files must be publicly accessible URLs or uploaded via the Media API
        - Interactive messages support up to 3 buttons or 10 list items
        - Template categories: `AUTHENTICATION`, `MARKETING`, `UTILITY`
        
        ## Resources
        
        - [WhatsApp Business API Overview](https://developers.facebook.com/docs/whatsapp/cloud-api/overview)
        - [Send Messages](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/send-messages)
        - [Message Templates](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/send-message-templates)
        - [Media](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media)
        - [Business Profiles](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/business-profiles)
        - [Webhooks](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks)
        - [Error Codes](https://developers.facebook.com/docs/whatsapp/cloud-api/support/error-codes)
        
    • woocommerce
      • README.md 6.9 KB
        # WooCommerce Routing Reference
        
        **App name:** `woocommerce`
        **Base URL proxied:** `{store-url}/wp-json/wc/v3`
        
        ## API Path Pattern
        
        ```
        /woocommerce/wp-json/wc/v3/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Products
        
        #### List Products
        ```bash
        GET /woocommerce/wp-json/wc/v3/products?per_page=20&status=publish
        ```
        
        #### Get Product
        ```bash
        GET /woocommerce/wp-json/wc/v3/products/{id}
        ```
        
        #### Create Product
        ```bash
        POST /woocommerce/wp-json/wc/v3/products
        Content-Type: application/json
        
        {"name": "Premium Widget", "type": "simple", "regular_price": "19.99", "sku": "WDG-001"}
        ```
        
        #### Update Product
        ```bash
        PUT /woocommerce/wp-json/wc/v3/products/{id}
        Content-Type: application/json
        
        {"regular_price": "24.99", "sale_price": "19.99"}
        ```
        
        #### Delete Product
        ```bash
        DELETE /woocommerce/wp-json/wc/v3/products/{id}?force=true
        ```
        
        ### Product Variations
        
        #### List Variations
        ```bash
        GET /woocommerce/wp-json/wc/v3/products/{product_id}/variations
        ```
        
        #### Create Variation
        ```bash
        POST /woocommerce/wp-json/wc/v3/products/{product_id}/variations
        Content-Type: application/json
        
        {"regular_price": "29.99", "sku": "TSH-001-RED-M", "attributes": [{"id": 1, "option": "Red"}]}
        ```
        
        ### Product Categories
        
        #### List Categories
        ```bash
        GET /woocommerce/wp-json/wc/v3/products/categories
        ```
        
        #### Create Category
        ```bash
        POST /woocommerce/wp-json/wc/v3/products/categories
        Content-Type: application/json
        
        {"name": "Electronics", "description": "Electronic products"}
        ```
        
        ### Orders
        
        #### List Orders
        ```bash
        GET /woocommerce/wp-json/wc/v3/orders?status=processing&per_page=50
        ```
        
        #### Get Order
        ```bash
        GET /woocommerce/wp-json/wc/v3/orders/{id}
        ```
        
        #### Create Order
        ```bash
        POST /woocommerce/wp-json/wc/v3/orders
        Content-Type: application/json
        
        {"payment_method": "stripe", "set_paid": true, "billing": {"first_name": "John", "last_name": "Doe", "email": "john@example.com"}, "line_items": [{"product_id": 123, "quantity": 2}]}
        ```
        
        #### Update Order Status
        ```bash
        PUT /woocommerce/wp-json/wc/v3/orders/{id}
        Content-Type: application/json
        
        {"status": "completed"}
        ```
        
        ### Order Notes
        
        #### List Order Notes
        ```bash
        GET /woocommerce/wp-json/wc/v3/orders/{order_id}/notes
        ```
        
        #### Create Order Note
        ```bash
        POST /woocommerce/wp-json/wc/v3/orders/{order_id}/notes
        Content-Type: application/json
        
        {"note": "Order shipped via FedEx", "customer_note": true}
        ```
        
        ### Order Refunds
        
        #### Create Refund
        ```bash
        POST /woocommerce/wp-json/wc/v3/orders/{order_id}/refunds
        Content-Type: application/json
        
        {"amount": "25.00", "reason": "Product damaged", "api_refund": true}
        ```
        
        ### Customers
        
        #### List Customers
        ```bash
        GET /woocommerce/wp-json/wc/v3/customers?per_page=25
        ```
        
        #### Get Customer
        ```bash
        GET /woocommerce/wp-json/wc/v3/customers/{id}
        ```
        
        #### Create Customer
        ```bash
        POST /woocommerce/wp-json/wc/v3/customers
        Content-Type: application/json
        
        {"email": "jane@example.com", "first_name": "Jane", "last_name": "Smith", "username": "janesmith"}
        ```
        
        ### Coupons
        
        #### List Coupons
        ```bash
        GET /woocommerce/wp-json/wc/v3/coupons
        ```
        
        #### Create Coupon
        ```bash
        POST /woocommerce/wp-json/wc/v3/coupons
        Content-Type: application/json
        
        {"code": "SUMMER2024", "discount_type": "percent", "amount": "15", "usage_limit": 100}
        ```
        
        ### Taxes
        
        #### List Tax Rates
        ```bash
        GET /woocommerce/wp-json/wc/v3/taxes
        ```
        
        #### Create Tax Rate
        ```bash
        POST /woocommerce/wp-json/wc/v3/taxes
        Content-Type: application/json
        
        {"country": "US", "state": "CA", "rate": "7.25", "name": "CA State Tax"}
        ```
        
        ### Shipping
        
        #### List Shipping Zones
        ```bash
        GET /woocommerce/wp-json/wc/v3/shipping/zones
        ```
        
        #### List Shipping Zone Methods
        ```bash
        GET /woocommerce/wp-json/wc/v3/shipping/zones/{zone_id}/methods
        ```
        
        ### Webhooks
        
        #### List Webhooks
        ```bash
        GET /woocommerce/wp-json/wc/v3/webhooks
        ```
        
        #### Create Webhook
        ```bash
        POST /woocommerce/wp-json/wc/v3/webhooks
        Content-Type: application/json
        
        {"name": "Order Created", "topic": "order.created", "delivery_url": "https://example.com/webhook", "status": "active"}
        ```
        
        ### Reports
        
        #### Sales Report
        ```bash
        GET /woocommerce/wp-json/wc/v3/reports/sales?period=month
        ```
        
        #### Top Sellers
        ```bash
        GET /woocommerce/wp-json/wc/v3/reports/top_sellers
        ```
        
        #### Orders Totals
        ```bash
        GET /woocommerce/wp-json/wc/v3/reports/orders/totals
        ```
        
        ### Settings
        
        #### List Settings Groups
        ```bash
        GET /woocommerce/wp-json/wc/v3/settings
        ```
        
        #### Get Settings in Group
        ```bash
        GET /woocommerce/wp-json/wc/v3/settings/{group}
        ```
        
        ### System Status
        
        #### Get System Status
        ```bash
        GET /woocommerce/wp-json/wc/v3/system_status
        ```
        
        ## Notes
        
        - All monetary amounts are returned as strings with two decimal places
        - Dates are in ISO8601 format: `YYYY-MM-DDTHH:MM:SS`
        - Resource IDs are integers
        - Pagination uses `page` and `per_page` parameters (max 100 per page)
        - Response headers include `X-WP-Total` and `X-WP-TotalPages`
        - Order statuses: `pending`, `processing`, `on-hold`, `completed`, `cancelled`, `refunded`, `failed`
        - Discount types: `percent`, `fixed_cart`, `fixed_product`
        - Use `force=true` query parameter to permanently delete (otherwise moves to trash)
        - Batch operations supported via `POST /{resource}/batch` with `create`, `update`, `delete` arrays
        
        ## Resources
        
        - [WooCommerce REST API Documentation](https://woocommerce.github.io/woocommerce-rest-api-docs/)
        - [Products](https://woocommerce.github.io/woocommerce-rest-api-docs/#products)
        - [Product Variations](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-variations)
        - [Product Attributes](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-attributes)
        - [Product Categories](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-categories)
        - [Product Tags](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-tags)
        - [Product Reviews](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-reviews)
        - [Orders](https://woocommerce.github.io/woocommerce-rest-api-docs/#orders)
        - [Order Notes](https://woocommerce.github.io/woocommerce-rest-api-docs/#order-notes)
        - [Refunds](https://woocommerce.github.io/woocommerce-rest-api-docs/#refunds)
        - [Customers](https://woocommerce.github.io/woocommerce-rest-api-docs/#customers)
        - [Coupons](https://woocommerce.github.io/woocommerce-rest-api-docs/#coupons)
        - [Tax Rates](https://woocommerce.github.io/woocommerce-rest-api-docs/#tax-rates)
        - [Tax Classes](https://woocommerce.github.io/woocommerce-rest-api-docs/#tax-classes)
        - [Shipping Zones](https://woocommerce.github.io/woocommerce-rest-api-docs/#shipping-zones)
        - [Shipping Methods](https://woocommerce.github.io/woocommerce-rest-api-docs/#shipping-methods)
        - [Payment Gateways](https://woocommerce.github.io/woocommerce-rest-api-docs/#payment-gateways)
        - [Settings](https://woocommerce.github.io/woocommerce-rest-api-docs/#settings)
        - [Webhooks](https://woocommerce.github.io/woocommerce-rest-api-docs/#webhooks)
        - [Reports](https://woocommerce.github.io/woocommerce-rest-api-docs/#reports)
        - [System Status](https://woocommerce.github.io/woocommerce-rest-api-docs/#system-status)
        
    • wordpress
      • README.md 3.2 KB
        # WordPress.com Routing Reference
        
        **App name:** `wordpress`
        **Base URL proxied:** `public-api.wordpress.com`
        
        ## API Path Pattern
        
        ```
        /wordpress/rest/v1.1/{endpoint}
        ```
        
        **Important:** WordPress.com uses REST API v1.1. Site-specific endpoints use `/sites/{site_id_or_domain}/{resource}`.
        
        ## Site Identifiers
        
        Sites can be identified by:
        - Numeric site ID (e.g., `252505333`)
        - Domain name (e.g., `myblog.wordpress.com`)
        
        ## Common Endpoints
        
        ### Sites
        
        #### Get Site Information
        ```bash
        GET /wordpress/rest/v1.1/sites/{site}
        ```
        
        ### Posts
        
        #### List Posts
        ```bash
        GET /wordpress/rest/v1.1/sites/{site}/posts
        ```
        
        Query parameters: `number`, `offset`, `page_handle`, `status`, `search`, `category`, `tag`, `author`
        
        #### Get Post
        ```bash
        GET /wordpress/rest/v1.1/sites/{site}/posts/{post_id}
        ```
        
        #### Create Post
        ```bash
        POST /wordpress/rest/v1.1/sites/{site}/posts/new
        Content-Type: application/json
        
        {
          "title": "Post Title",
          "content": "<p>Post content...</p>",
          "status": "draft",
          "categories": "news",
          "tags": "featured"
        }
        ```
        
        #### Update Post
        ```bash
        POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}
        Content-Type: application/json
        
        {
          "title": "Updated Title",
          "content": "<p>Updated content...</p>"
        }
        ```
        
        #### Delete Post
        ```bash
        POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/delete
        ```
        
        ### Pages
        
        #### List Pages
        ```bash
        GET /wordpress/rest/v1.1/sites/{site}/posts?type=page
        ```
        
        #### Create Page
        ```bash
        POST /wordpress/rest/v1.1/sites/{site}/posts/new?type=page
        Content-Type: application/json
        
        {
          "title": "Page Title",
          "content": "<p>Page content...</p>",
          "status": "publish"
        }
        ```
        
        ### Post Likes
        
        #### Get Post Likes
        ```bash
        GET /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/likes
        ```
        
        #### Like Post
        ```bash
        POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/likes/new
        ```
        
        ### Users
        
        #### List Site Users
        ```bash
        GET /wordpress/rest/v1.1/sites/{site}/users
        ```
        
        ### User Settings
        
        #### Get My Settings
        ```bash
        GET /wordpress/rest/v1.1/me/settings
        ```
        
        #### Update My Settings
        ```bash
        POST /wordpress/rest/v1.1/me/settings/
        Content-Type: application/json
        
        {
          "enable_translator": false
        }
        ```
        
        ### Post Types
        
        #### List Post Types
        ```bash
        GET /wordpress/rest/v1.1/sites/{site}/post-types
        ```
        
        ### Post Counts
        
        #### Get Post Counts
        ```bash
        GET /wordpress/rest/v1.1/sites/{site}/post-counts/{post_type}
        ```
        
        ## Pagination
        
        WordPress.com uses cursor-based pagination with `page_handle`:
        
        ```bash
        GET /wordpress/rest/v1.1/sites/{site}/posts?number=20
        # Response includes "meta": {"next_page": "..."}
        
        GET /wordpress/rest/v1.1/sites/{site}/posts?number=20&page_handle={next_page}
        ```
        
        Alternatively, use `offset` for simple pagination.
        
        ## Notes
        
        - API version is v1.1 (not v2)
        - POST is used for updates (not PUT/PATCH)
        - POST to `/delete` endpoint is used for deletes (not HTTP DELETE)
        - Categories and tags are created automatically when referenced in posts
        - Content is HTML-formatted
        - Date/time values are in ISO 8601 format
        
        ## Resources
        
        - [WordPress.com REST API Overview](https://developer.wordpress.com/docs/api/)
        - [Getting Started Guide](https://developer.wordpress.com/docs/api/getting-started/)
        - [API Reference](https://developer.wordpress.com/docs/api/rest-api-reference/)
        
    • xero
      • README.md 5.9 KB
        # Xero Routing Reference
        
        **App name:** `xero`
        **Base URL proxied:** `api.xero.com`
        
        ## Automatic Tenant ID Injection
        
        The router automatically injects the `Xero-Tenant-Id` header from your connection config. You do not need to provide it manually.
        
        ## API Path Pattern
        
        ```
        /xero/api.xro/2.0/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Contacts
        
        #### List Contacts
        ```bash
        GET /xero/api.xro/2.0/Contacts
        ```
        
        #### Get Contact
        ```bash
        GET /xero/api.xro/2.0/Contacts/{contactId}
        ```
        
        #### Create Contact
        ```bash
        POST /xero/api.xro/2.0/Contacts
        Content-Type: application/json
        
        {
          "Contacts": [{
            "Name": "John Doe",
            "EmailAddress": "john@example.com",
            "Phones": [{"PhoneType": "DEFAULT", "PhoneNumber": "555-1234"}]
          }]
        }
        ```
        
        ### Invoices
        
        #### List Invoices
        ```bash
        GET /xero/api.xro/2.0/Invoices
        ```
        
        #### Get Invoice
        ```bash
        GET /xero/api.xro/2.0/Invoices/{invoiceId}
        ```
        
        #### Create Invoice
        ```bash
        POST /xero/api.xro/2.0/Invoices
        Content-Type: application/json
        
        {
          "Invoices": [{
            "Type": "ACCREC",
            "Contact": {"ContactID": "xxx"},
            "LineItems": [{
              "Description": "Service",
              "Quantity": 1,
              "UnitAmount": 100.00,
              "AccountCode": "200"
            }]
          }]
        }
        ```
        
        ### Accounts
        
        #### List Accounts
        ```bash
        GET /xero/api.xro/2.0/Accounts
        ```
        
        ### Items
        
        #### List Items
        ```bash
        GET /xero/api.xro/2.0/Items
        ```
        
        ### Payments
        
        #### List Payments
        ```bash
        GET /xero/api.xro/2.0/Payments
        ```
        
        ### Bank Transactions
        
        #### List Bank Transactions
        ```bash
        GET /xero/api.xro/2.0/BankTransactions
        ```
        
        ### Reports
        
        #### Profit and Loss
        ```bash
        GET /xero/api.xro/2.0/Reports/ProfitAndLoss?fromDate=2024-01-01&toDate=2024-12-31
        ```
        
        #### Balance Sheet
        ```bash
        GET /xero/api.xro/2.0/Reports/BalanceSheet?date=2024-12-31
        ```
        
        #### Trial Balance
        ```bash
        GET /xero/api.xro/2.0/Reports/TrialBalance?date=2024-12-31
        ```
        
        ### Currencies
        
        #### List Currencies
        ```bash
        GET /xero/api.xro/2.0/Currencies
        ```
        
        ### Tax Rates
        
        #### List Tax Rates
        ```bash
        GET /xero/api.xro/2.0/TaxRates
        ```
        
        ### Credit Notes
        
        #### List Credit Notes
        ```bash
        GET /xero/api.xro/2.0/CreditNotes
        ```
        
        ### Purchase Orders
        
        #### List Purchase Orders
        ```bash
        GET /xero/api.xro/2.0/PurchaseOrders
        ```
        
        ### Organisation
        
        #### Get Organisation
        ```bash
        GET /xero/api.xro/2.0/Organisation
        ```
        
        ## Invoice Types
        
        - `ACCREC` - Accounts Receivable (sales invoice)
        - `ACCPAY` - Accounts Payable (bill)
        
        ## Notes
        
        - `Xero-Tenant-Id` header is automatically injected by the router
        - Dates are in `YYYY-MM-DD` format
        - Multiple records can be created in a single request using arrays
        - Updates use POST method with the record ID in the URL
        - Draft invoices can be deleted by setting `Status` to `DELETED`
        - Use `where` query parameter for filtering (e.g., `where=Status=="VOIDED"`)
        
        ## Resources
        
        - [API Overview](https://developer.xero.com/documentation/api/accounting/overview)
        - [List Contacts](https://developer.xero.com/documentation/api/accounting/contacts#get-contacts)
        - [Get Contact](https://developer.xero.com/documentation/api/accounting/contacts#get-contacts)
        - [Create Contact](https://developer.xero.com/documentation/api/accounting/contacts#put-contacts)
        - [Update Contact](https://developer.xero.com/documentation/api/accounting/contacts#post-contacts)
        - [List Invoices](https://developer.xero.com/documentation/api/accounting/invoices#get-invoices)
        - [Get Invoice](https://developer.xero.com/documentation/api/accounting/invoices#get-invoices)
        - [Create Invoice](https://developer.xero.com/documentation/api/accounting/invoices#put-invoices)
        - [Update Invoice](https://developer.xero.com/documentation/api/accounting/invoices#post-invoices)
        - [Email Invoice](https://developer.xero.com/documentation/api/accounting/invoices#emailing-an-invoice)
        - [List Accounts](https://developer.xero.com/documentation/api/accounting/accounts#get-accounts)
        - [Get Account](https://developer.xero.com/documentation/api/accounting/accounts#get-accounts)
        - [Create Account](https://developer.xero.com/documentation/api/accounting/accounts#put-accounts)
        - [Update Account](https://developer.xero.com/documentation/api/accounting/accounts#post-accounts)
        - [Delete Account](https://developer.xero.com/documentation/api/accounting/accounts#delete-accounts)
        - [List Items](https://developer.xero.com/documentation/api/accounting/items#get-items)
        - [Get Item](https://developer.xero.com/documentation/api/accounting/items#get-items)
        - [Create Item](https://developer.xero.com/documentation/api/accounting/items#put-items)
        - [Update Item](https://developer.xero.com/documentation/api/accounting/items#post-items)
        - [Delete Item](https://developer.xero.com/documentation/api/accounting/items#delete-items)
        - [List Payments](https://developer.xero.com/documentation/api/accounting/payments#get-payments)
        - [Get Payment](https://developer.xero.com/documentation/api/accounting/payments#get-payments)
        - [Create Payment](https://developer.xero.com/documentation/api/accounting/payments#put-payments)
        - [Update Payment](https://developer.xero.com/documentation/api/accounting/payments#post-payments)
        - [List Bank Transactions](https://developer.xero.com/documentation/api/accounting/banktransactions#get-banktransactions)
        - [Get Bank Transaction](https://developer.xero.com/documentation/api/accounting/banktransactions#get-banktransactions)
        - [Create Bank Transaction](https://developer.xero.com/documentation/api/accounting/banktransactions#put-banktransactions)
        - [Update Bank Transaction](https://developer.xero.com/documentation/api/accounting/banktransactions#post-banktransactions)
        - [Profit and Loss Report](https://developer.xero.com/documentation/api/accounting/reports#profitandloss)
        - [Balance Sheet Report](https://developer.xero.com/documentation/api/accounting/reports#balancesheet)
        - [Trial Balance Report](https://developer.xero.com/documentation/api/accounting/reports#trialbalance)
        - [Bank Summary Report](https://developer.xero.com/documentation/api/accounting/reports#banksummary)
        - [Get Organisation](https://developer.xero.com/documentation/api/accounting/organisation#get-organisation)
    • youtube
      • README.md 4 KB
        # YouTube Routing Reference
        
        **App name:** `youtube`
        **Base URL proxied:** `www.googleapis.com`
        
        ## API Path Pattern
        
        ```
        /youtube/youtube/v3/{resource}
        ```
        
        ## Common Endpoints
        
        ### Search Videos
        ```bash
        GET /youtube/youtube/v3/search?part=snippet&q=coding+tutorial&type=video&maxResults=10
        ```
        
        Query parameters:
        - `part` - Required: `snippet`
        - `q` - Search query
        - `type` - Filter: `video`, `channel`, `playlist`
        - `maxResults` - Results per page (1-50)
        - `order` - Sort: `date`, `rating`, `relevance`, `title`, `viewCount`
        - `videoDuration` - `short` (<4min), `medium` (4-20min), `long` (>20min)
        
        ### Get Video Details
        ```bash
        GET /youtube/youtube/v3/videos?part=snippet,statistics,contentDetails&id={videoId}
        ```
        
        Parts available: `snippet`, `statistics`, `contentDetails`, `status`, `player`
        
        ### Get Trending Videos
        ```bash
        GET /youtube/youtube/v3/videos?part=snippet,statistics&chart=mostPopular&regionCode=US&maxResults=10
        ```
        
        ### Rate Video
        ```bash
        POST /youtube/youtube/v3/videos/rate?id={videoId}&rating=like
        ```
        
        Rating values: `like`, `dislike`, `none`
        
        ### Get My Channel
        ```bash
        GET /youtube/youtube/v3/channels?part=snippet,statistics,contentDetails&mine=true
        ```
        
        ### Get Channel Details
        ```bash
        GET /youtube/youtube/v3/channels?part=snippet,statistics&id={channelId}
        ```
        
        ### List My Playlists
        ```bash
        GET /youtube/youtube/v3/playlists?part=snippet,contentDetails&mine=true&maxResults=25
        ```
        
        ### Create Playlist
        ```bash
        POST /youtube/youtube/v3/playlists?part=snippet,status
        Content-Type: application/json
        
        {
          "snippet": {
            "title": "My New Playlist",
            "description": "A collection of videos"
          },
          "status": {
            "privacyStatus": "private"
          }
        }
        ```
        
        Privacy values: `public`, `private`, `unlisted`
        
        ### Delete Playlist
        ```bash
        DELETE /youtube/youtube/v3/playlists?id={playlistId}
        ```
        
        ### List Playlist Items
        ```bash
        GET /youtube/youtube/v3/playlistItems?part=snippet,contentDetails&playlistId={playlistId}&maxResults=50
        ```
        
        ### Add Video to Playlist
        ```bash
        POST /youtube/youtube/v3/playlistItems?part=snippet
        Content-Type: application/json
        
        {
          "snippet": {
            "playlistId": "PLxyz123",
            "resourceId": {
              "kind": "youtube#video",
              "videoId": "abc123xyz"
            },
            "position": 0
          }
        }
        ```
        
        ### List My Subscriptions
        ```bash
        GET /youtube/youtube/v3/subscriptions?part=snippet&mine=true&maxResults=50
        ```
        
        ### Subscribe to Channel
        ```bash
        POST /youtube/youtube/v3/subscriptions?part=snippet
        Content-Type: application/json
        
        {
          "snippet": {
            "resourceId": {
              "kind": "youtube#channel",
              "channelId": "UCxyz123"
            }
          }
        }
        ```
        
        ### List Video Comments
        ```bash
        GET /youtube/youtube/v3/commentThreads?part=snippet,replies&videoId={videoId}&maxResults=100
        ```
        
        ### Add Comment to Video
        ```bash
        POST /youtube/youtube/v3/commentThreads?part=snippet
        Content-Type: application/json
        
        {
          "snippet": {
            "videoId": "abc123xyz",
            "topLevelComment": {
              "snippet": {
                "textOriginal": "Great video!"
              }
            }
          }
        }
        ```
        
        ## Notes
        
        - Video IDs are 11 characters (e.g., `dQw4w9WgXcQ`)
        - Channel IDs start with `UC` (e.g., `UCxyz123`)
        - Playlist IDs start with `PL` (user) or `UU` (uploads)
        - Use `pageToken` for pagination through large result sets
        - The `part` parameter is required and determines what data is returned
        - Quota costs vary by endpoint - search is expensive (100 units), reads are cheap (1 unit)
        
        ## Resources
        
        - [YouTube Data API Overview](https://developers.google.com/youtube/v3)
        - [Search](https://developers.google.com/youtube/v3/docs/search/list)
        - [Videos](https://developers.google.com/youtube/v3/docs/videos)
        - [Channels](https://developers.google.com/youtube/v3/docs/channels)
        - [Playlists](https://developers.google.com/youtube/v3/docs/playlists)
        - [PlaylistItems](https://developers.google.com/youtube/v3/docs/playlistItems)
        - [Subscriptions](https://developers.google.com/youtube/v3/docs/subscriptions)
        - [Comments](https://developers.google.com/youtube/v3/docs/comments)
        - [Quota Calculator](https://developers.google.com/youtube/v3/determine_quota_cost)
        
    • zoho-bigin
      • README.md 2.3 KB
        # Zoho Bigin Routing Reference
        
        **App name:** `zoho-bigin`
        **Base URL proxied:** `www.zohoapis.com`
        
        ## API Path Pattern
        
        ```
        /zoho-bigin/bigin/v2/{resource}
        ```
        
        ## Common Endpoints
        
        ### List Contacts
        ```bash
        GET /zoho-bigin/bigin/v2/Contacts?fields=First_Name,Last_Name,Email
        ```
        
        ### Get Contact
        ```bash
        GET /zoho-bigin/bigin/v2/Contacts/{id}
        ```
        
        ### Create Contact
        ```bash
        POST /zoho-bigin/bigin/v2/Contacts
        Content-Type: application/json
        
        {
          "data": [{
            "Last_Name": "Smith",
            "First_Name": "John",
            "Email": "john@example.com"
          }]
        }
        ```
        
        ### Update Contact
        ```bash
        PUT /zoho-bigin/bigin/v2/Contacts
        Content-Type: application/json
        
        {
          "data": [{
            "id": "{record_id}",
            "Phone": "+1-555-1234"
          }]
        }
        ```
        
        ### Delete Contact
        ```bash
        DELETE /zoho-bigin/bigin/v2/Contacts?ids={id1},{id2}
        ```
        
        ### Search Contacts
        ```bash
        GET /zoho-bigin/bigin/v2/Contacts/search?email=john@example.com
        GET /zoho-bigin/bigin/v2/Contacts/search?criteria=(Last_Name:equals:Smith)
        ```
        
        ### List Companies (Accounts)
        ```bash
        GET /zoho-bigin/bigin/v2/Accounts?fields=Account_Name,Website
        ```
        
        ### Get Users
        ```bash
        GET /zoho-bigin/bigin/v2/users?type=ActiveUsers
        ```
        
        ### Get Modules
        ```bash
        GET /zoho-bigin/bigin/v2/settings/modules
        ```
        
        ## Available Modules
        
        | Module | API Name | Description |
        |--------|----------|-------------|
        | Contacts | `Contacts` | Individual people |
        | Companies | `Accounts` | Organizations/businesses |
        | Pipelines | `Pipelines` | Sales opportunities/deals |
        | Products | `Products` | Items you sell |
        | Tasks | `Tasks` | To-do items |
        | Events | `Events` | Calendar appointments |
        | Calls | `Calls` | Phone call logs |
        | Notes | `Notes` | Notes attached to records |
        
        ## Notes
        
        - The `fields` query parameter is **required** for list operations
        - Module API names are case-sensitive (e.g., `Contacts`, not `contacts`)
        - Companies are accessed via the `Accounts` module
        - Sales opportunities are in the `Pipelines` module (not `Deals`)
        - Record IDs are numeric strings (e.g., `7255024000000596045`)
        - Maximum 200 records per page, 100 per create/update/delete
        - Some modules (Tasks, Events, Calls, Notes) require additional OAuth scopes
        
        ## Resources
        
        - [Bigin API Overview](https://www.bigin.com/developer/docs/apis/v2/)
        - [Bigin REST API Documentation](https://www.bigin.com/developer/docs/apis/)
        - [Modules API](https://www.bigin.com/developer/docs/apis/modules-api.html)
        
    • zoho-bookings
      • README.md 3.1 KB
        # Zoho Bookings Routing Reference
        
        **App name:** `zoho-bookings`
        **Base URL proxied:** `www.zohoapis.com`
        
        ## API Path Pattern
        
        ```
        /zoho-bookings/bookings/v1/json/{endpoint}
        ```
        
        ## Common Endpoints
        
        ### Workspaces
        
        ```bash
        # List workspaces
        GET /zoho-bookings/bookings/v1/json/workspaces
        
        # Get specific workspace
        GET /zoho-bookings/bookings/v1/json/workspaces?workspace_id={workspace_id}
        
        # Create workspace
        POST /zoho-bookings/bookings/v1/json/createworkspace
        Content-Type: application/x-www-form-urlencoded
        
        name=New+Workspace
        ```
        
        ### Services
        
        ```bash
        # List services (workspace_id required)
        GET /zoho-bookings/bookings/v1/json/services?workspace_id={workspace_id}
        
        # Create service
        POST /zoho-bookings/bookings/v1/json/createservice
        Content-Type: application/x-www-form-urlencoded
        
        name=Consultation&workspace_id={workspace_id}&duration=60
        ```
        
        ### Staff
        
        ```bash
        # List staff (workspace_id required)
        GET /zoho-bookings/bookings/v1/json/staffs?workspace_id={workspace_id}
        ```
        
        ### Appointments
        
        ```bash
        # Book appointment
        POST /zoho-bookings/bookings/v1/json/appointment
        Content-Type: application/x-www-form-urlencoded
        
        service_id={service_id}&staff_id={staff_id}&from_time=20-Feb-2026+10:00:00&customer_details={"name":"John","email":"john@example.com","phone_number":"+15551234567"}
        
        # Get appointment
        GET /zoho-bookings/bookings/v1/json/getappointment?booking_id=%23NU-00001
        
        # Fetch appointments (uses 'data' wrapper)
        POST /zoho-bookings/bookings/v1/json/fetchappointment
        Content-Type: application/x-www-form-urlencoded
        
        data={"from_time":"17-Feb-2026 00:00:00","to_time":"20-Feb-2026 23:59:59"}
        
        # Update appointment (cancel/complete/noshow)
        POST /zoho-bookings/bookings/v1/json/updateappointment
        Content-Type: application/x-www-form-urlencoded
        
        booking_id=#NU-00001&action=cancel
        ```
        
        ## Request Format Notes
        
        - **GET endpoints**: Use query parameters
        - **POST endpoints**: Use `application/x-www-form-urlencoded`
        - **fetchappointment**: Requires parameters wrapped in `data` field as JSON string
        - **customer_details**: Must be a JSON string, not an object
        - **Date format**: `dd-MMM-yyyy HH:mm:ss` (e.g., `20-Feb-2026 10:00:00`)
        
        ## Service Types
        
        - `APPOINTMENT` - One-on-one appointments
        - `RESOURCE` - Resource bookings
        - `CLASS` - Group classes
        - `COLLECTIVE` - Collective bookings with multiple staff
        
        ## Appointment Status Values
        
        - `UPCOMING` - Future appointments
        - `CANCEL` - Cancelled appointments
        - `COMPLETED` - Completed appointments
        - `NO_SHOW` - Customer no-shows
        - `PENDING` - Pending confirmation
        - `ONGOING` - Currently in progress
        
        ## Notes
        
        - Booking IDs include `#` prefix (URL-encode as `%23` in GET requests)
        - The `workspace_id` is required for services and staff endpoints
        - POST endpoints use form-urlencoded, not JSON body
        - Daily API limits: Free (250), Basic (1,000), Premium/Zoho One (3,000) per user
        
        ## Resources
        
        - [Zoho Bookings API Documentation](https://www.zoho.com/bookings/help/api/v1/oauthauthentication.html)
        - [Book Appointment API](https://www.zoho.com/bookings/help/api/v1/book-appointment.html)
        - [Fetch Services API](https://www.zoho.com/bookings/help/api/v1/fetch-services.html)
        
    • zoho-books
      • README.md 3.1 KB
        # Zoho Books Routing Reference
        
        **App name:** `zoho-books`
        **Base URL proxied:** `www.zohoapis.com`
        
        ## API Path Pattern
        
        ```
        /zoho-books/books/v3/{resource}
        ```
        
        ## Common Endpoints
        
        ### Contacts
        
        ```bash
        # List contacts
        GET /zoho-books/books/v3/contacts
        
        # Get contact
        GET /zoho-books/books/v3/contacts/{contact_id}
        
        # Create contact
        POST /zoho-books/books/v3/contacts
        Content-Type: application/json
        
        {
          "contact_name": "Customer Name",
          "contact_type": "customer"
        }
        
        # Update contact
        PUT /zoho-books/books/v3/contacts/{contact_id}
        
        # Delete contact
        DELETE /zoho-books/books/v3/contacts/{contact_id}
        ```
        
        ### Invoices
        
        ```bash
        # List invoices
        GET /zoho-books/books/v3/invoices
        
        # Get invoice
        GET /zoho-books/books/v3/invoices/{invoice_id}
        
        # Create invoice
        POST /zoho-books/books/v3/invoices
        
        # Mark as sent
        POST /zoho-books/books/v3/invoices/{invoice_id}/status/sent
        
        # Email invoice
        POST /zoho-books/books/v3/invoices/{invoice_id}/email
        ```
        
        ### Bills
        
        ```bash
        # List bills
        GET /zoho-books/books/v3/bills
        
        # Create bill
        POST /zoho-books/books/v3/bills
        
        # Update bill
        PUT /zoho-books/books/v3/bills/{bill_id}
        
        # Delete bill
        DELETE /zoho-books/books/v3/bills/{bill_id}
        ```
        
        ### Expenses
        
        ```bash
        # List expenses
        GET /zoho-books/books/v3/expenses
        
        # Create expense
        POST /zoho-books/books/v3/expenses
        
        # Update expense
        PUT /zoho-books/books/v3/expenses/{expense_id}
        
        # Delete expense
        DELETE /zoho-books/books/v3/expenses/{expense_id}
        ```
        
        ### Sales Orders
        
        ```bash
        GET /zoho-books/books/v3/salesorders
        POST /zoho-books/books/v3/salesorders
        ```
        
        ### Purchase Orders
        
        ```bash
        GET /zoho-books/books/v3/purchaseorders
        POST /zoho-books/books/v3/purchaseorders
        ```
        
        ### Credit Notes
        
        ```bash
        GET /zoho-books/books/v3/creditnotes
        ```
        
        ### Recurring Invoices
        
        ```bash
        GET /zoho-books/books/v3/recurringinvoices
        ```
        
        ### Recurring Bills
        
        ```bash
        GET /zoho-books/books/v3/recurringbills
        ```
        
        ## Available Modules
        
        | Module | Endpoint | Description |
        |--------|----------|-------------|
        | Contacts | `/contacts` | Customers and vendors |
        | Invoices | `/invoices` | Sales invoices |
        | Bills | `/bills` | Vendor bills |
        | Expenses | `/expenses` | Business expenses |
        | Sales Orders | `/salesorders` | Sales orders |
        | Purchase Orders | `/purchaseorders` | Purchase orders |
        | Credit Notes | `/creditnotes` | Customer credit notes |
        | Recurring Invoices | `/recurringinvoices` | Recurring invoices |
        | Recurring Bills | `/recurringbills` | Recurring bills |
        
        ## Notes
        
        - All successful responses have `code: 0`
        - Dates should be in `yyyy-mm-dd` format
        - Contact types are `customer` or `vendor`
        - Some modules (items, chart of accounts, bank accounts, projects) require additional OAuth scopes
        - Rate limits: 100 requests/minute per organization
        - Pagination uses `page` and `per_page` parameters with `has_more_page` in response
        
        ## Resources
        
        - [Zoho Books API v3 Introduction](https://www.zoho.com/books/api/v3/introduction/)
        - [Zoho Books Invoices API](https://www.zoho.com/books/api/v3/invoices/)
        - [Zoho Books Contacts API](https://www.zoho.com/books/api/v3/contacts/)
        - [Zoho Books Bills API](https://www.zoho.com/books/api/v3/bills/)
        - [Zoho Books Expenses API](https://www.zoho.com/books/api/v3/expenses/)
        
    • zoho-calendar
      • README.md 2.8 KB
        # Zoho Calendar Routing Reference
        
        **App name:** `zoho-calendar`
        **Base URL proxied:** `calendar.zoho.com`
        
        ## API Path Pattern
        
        ```
        /zoho-calendar/api/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### Calendars
        
        ```bash
        # List calendars
        GET /zoho-calendar/api/v1/calendars
        
        # Get calendar details
        GET /zoho-calendar/api/v1/calendars/{calendar_uid}
        
        # Create calendar
        POST /zoho-calendar/api/v1/calendars?calendarData={json}
        
        # Delete calendar
        DELETE /zoho-calendar/api/v1/calendars/{calendar_uid}
        ```
        
        ### Events
        
        ```bash
        # List events (range required, max 31 days)
        GET /zoho-calendar/api/v1/calendars/{calendar_uid}/events?range={"start":"yyyyMMdd","end":"yyyyMMdd"}
        
        # Get event details
        GET /zoho-calendar/api/v1/calendars/{calendar_uid}/events/{event_uid}
        
        # Create event
        POST /zoho-calendar/api/v1/calendars/{calendar_uid}/events?eventdata={json}
        
        # Update event (etag required in eventdata)
        PUT /zoho-calendar/api/v1/calendars/{calendar_uid}/events/{event_uid}?eventdata={json}
        
        # Delete event (etag required as HEADER)
        DELETE /zoho-calendar/api/v1/calendars/{calendar_uid}/events/{event_uid}
        Header: etag: {etag_value}
        ```
        
        ## Event Data Format
        
        ### Create/Update Event
        
        ```json
        {
          "title": "Meeting Title",
          "dateandtime": {
            "timezone": "America/Los_Angeles",
            "start": "yyyyMMdd'T'HHmmss'Z'",
            "end": "yyyyMMdd'T'HHmmss'Z'"
          },
          "description": "Event description",
          "location": "Meeting room",
          "isallday": false,
          "attendees": [
            {
              "email": "user@example.com",
              "permission": 1,
              "attendance": 1
            }
          ],
          "reminders": [
            {
              "action": "popup",
              "minutes": 30
            }
          ],
          "rrule": "FREQ=DAILY;COUNT=5"
        }
        ```
        
        ### Update Event (etag required)
        
        ```json
        {
          "title": "Updated Title",
          "dateandtime": {...},
          "etag": 1770368451507
        }
        ```
        
        ## Calendar Data Format
        
        ```json
        {
          "name": "Calendar Name",
          "color": "#FF5733",
          "textcolor": "#FFFFFF",
          "description": "Calendar description"
        }
        ```
        
        ## Notes
        
        - Event and calendar data is passed as JSON in query parameters (`eventdata`, `calendarData`)
        - Date/time format: `yyyyMMdd'T'HHmmss'Z'` (GMT) for timed events, `yyyyMMdd` for all-day
        - The `range` parameter for listing events cannot exceed 31 days
        - **IMPORTANT:** For delete operations, `etag` must be passed as an HTTP header, not a query parameter
        - The `etag` is required for update and delete operations - always get the latest etag before modifying
        - Permission levels for attendees: 0 (Guest), 1 (View), 2 (Invite), 3 (Edit)
        - Attendance: 0 (Non-participant), 1 (Required), 2 (Optional)
        - Reminder actions: `email`, `popup`, `notification`
        
        ## Resources
        
        - [Zoho Calendar API Introduction](https://www.zoho.com/calendar/help/api/introduction.html)
        - [Zoho Calendar Events API](https://www.zoho.com/calendar/help/api/events-api.html)
        - [Zoho Calendar Calendars API](https://www.zoho.com/calendar/help/api/calendars-api.html)
        
    • zoho-crm
      • README.md 4 KB
        # Zoho CRM Routing Reference
        
        **App name:** `zoho-crm`
        **Base URL proxied:** `www.zohoapis.com`
        
        ## API Path Pattern
        
        ```
        /zoho-crm/crm/v8/{resource}
        ```
        
        ## Common Endpoints
        
        ### Records
        
        ```bash
        # List records (fields required)
        GET /zoho-crm/crm/v8/{module_api_name}?fields={field1},{field2}
        
        # Get record
        GET /zoho-crm/crm/v8/{module_api_name}/{record_id}
        
        # Create records
        POST /zoho-crm/crm/v8/{module_api_name}
        Content-Type: application/json
        
        {
          "data": [
            {
              "field_api_name": "value"
            }
          ]
        }
        
        # Update records
        PUT /zoho-crm/crm/v8/{module_api_name}
        Content-Type: application/json
        
        {
          "data": [
            {
              "id": "record_id",
              "field_api_name": "updated_value"
            }
          ]
        }
        
        # Delete records
        DELETE /zoho-crm/crm/v8/{module_api_name}?ids={id1},{id2}
        ```
        
        ### Search
        
        ```bash
        # Search by criteria
        GET /zoho-crm/crm/v8/{module_api_name}/search?criteria=(Last_Name:equals:Smith)
        
        # Search by email
        GET /zoho-crm/crm/v8/{module_api_name}/search?email=user@example.com
        
        # Search by phone
        GET /zoho-crm/crm/v8/{module_api_name}/search?phone=555-1234
        
        # Global text search
        GET /zoho-crm/crm/v8/{module_api_name}/search?word=searchterm
        ```
        
        ### Organization
        
        ```bash
        # Get organization details
        GET /zoho-crm/crm/v8/org
        ```
        
        ### Users
        
        ```bash
        # List users (type: AllUsers, ActiveUsers, AdminUsers, CurrentUser, etc.)
        GET /zoho-crm/crm/v8/users?type=AllUsers
        
        # Get specific user
        GET /zoho-crm/crm/v8/users/{user_id}
        ```
        
        ### Settings / Metadata
        
        ```bash
        # List all modules
        GET /zoho-crm/crm/v8/settings/modules
        
        # Get fields for a module
        GET /zoho-crm/crm/v8/settings/fields?module={module_api_name}
        
        # Get layouts for a module
        GET /zoho-crm/crm/v8/settings/layouts?module={module_api_name}
        
        # List roles
        GET /zoho-crm/crm/v8/settings/roles
        
        # Get specific role
        GET /zoho-crm/crm/v8/settings/roles/{role_id}
        
        # List profiles
        GET /zoho-crm/crm/v8/settings/profiles
        
        # Get specific profile
        GET /zoho-crm/crm/v8/settings/profiles/{profile_id}
        ```
        
        ## Available Modules
        
        | Module | API Name | Description |
        |--------|----------|-------------|
        | Leads | `Leads` | Potential customers |
        | Contacts | `Contacts` | Individual people |
        | Accounts | `Accounts` | Organizations/companies |
        | Deals | `Deals` | Sales opportunities |
        | Campaigns | `Campaigns` | Marketing campaigns |
        | Tasks | `Tasks` | To-do items |
        | Calls | `Calls` | Phone call logs |
        | Events | `Events` | Calendar appointments |
        | Products | `Products` | Items for sale |
        
        ## Mandatory Fields
        
        | Module | Required Fields |
        |--------|-----------------|
        | Leads | `Last_Name` |
        | Contacts | `Last_Name` |
        | Accounts | `Account_Name` |
        | Deals | `Deal_Name`, `Stage` |
        | Tasks | `Subject` |
        
        ## Search Operators
        
        - Text: `equals`, `not_equal`, `starts_with`, `in`
        - Date/Number: `equals`, `not_equal`, `greater_than`, `less_than`, `between`, `in`
        - Boolean: `equals`, `not_equal`
        
        ## Notes
        
        - The `fields` parameter is **required** for list operations (max 50 fields)
        - Module API names are case-sensitive (e.g., `Leads`, not `leads`)
        - Maximum 100 records per create/update/delete request
        - Maximum 200 records returned per GET request
        - Use `page_token` for >2,000 records (expires after 24 hours)
        - If you receive a scope error, contact Maton support at support@maton.ai with the specific operations/APIs you need and your use-case
        - Empty datasets return HTTP 204 (No Content)
        
        ## Resources
        
        - [Zoho CRM API v8 Documentation](https://www.zoho.com/crm/developer/docs/api/v8/)
        - [Get Records API](https://www.zoho.com/crm/developer/docs/api/v8/get-records.html)
        - [Search Records API](https://www.zoho.com/crm/developer/docs/api/v8/search-records.html)
        - [Organization API](https://www.zoho.com/crm/developer/docs/api/v8/get-org-data.html)
        - [Users API](https://www.zoho.com/crm/developer/docs/api/v8/get-users.html)
        - [Modules API](https://www.zoho.com/crm/developer/docs/api/v8/modules-api.html)
        - [Fields API](https://www.zoho.com/crm/developer/docs/api/v8/field-meta.html)
        - [Roles API](https://www.zoho.com/crm/developer/docs/api/v8/get-roles.html)
        - [Profiles API](https://www.zoho.com/crm/developer/docs/api/v8/get-profiles.html)
        
    • zoho-inventory
      • README.md 5.6 KB
        # Zoho Inventory Routing Reference
        
        **App name:** `zoho-inventory`
        **Base URL proxied:** `www.zohoapis.com`
        
        ## API Path Pattern
        
        ```
        /zoho-inventory/inventory/v1/{resource}
        ```
        
        ## Common Endpoints
        
        ### Items
        
        ```bash
        # List items
        GET /zoho-inventory/inventory/v1/items
        
        # Get item
        GET /zoho-inventory/inventory/v1/items/{item_id}
        
        # Create item
        POST /zoho-inventory/inventory/v1/items
        Content-Type: application/json
        
        {
          "name": "Widget",
          "rate": 25.00,
          "purchase_rate": 10.00,
          "sku": "WDG-001",
          "item_type": "inventory",
          "product_type": "goods",
          "unit": "pcs"
        }
        
        # Update item
        PUT /zoho-inventory/inventory/v1/items/{item_id}
        
        # Delete item
        DELETE /zoho-inventory/inventory/v1/items/{item_id}
        
        # Mark as active/inactive
        POST /zoho-inventory/inventory/v1/items/{item_id}/active
        POST /zoho-inventory/inventory/v1/items/{item_id}/inactive
        ```
        
        ### Contacts
        
        ```bash
        # List contacts
        GET /zoho-inventory/inventory/v1/contacts
        
        # Get contact
        GET /zoho-inventory/inventory/v1/contacts/{contact_id}
        
        # Create contact
        POST /zoho-inventory/inventory/v1/contacts
        Content-Type: application/json
        
        {
          "contact_name": "Customer Name",
          "contact_type": "customer"
        }
        
        # Update contact
        PUT /zoho-inventory/inventory/v1/contacts/{contact_id}
        
        # Delete contact
        DELETE /zoho-inventory/inventory/v1/contacts/{contact_id}
        ```
        
        ### Sales Orders
        
        ```bash
        # List sales orders
        GET /zoho-inventory/inventory/v1/salesorders
        
        # Get sales order
        GET /zoho-inventory/inventory/v1/salesorders/{salesorder_id}
        
        # Create sales order
        POST /zoho-inventory/inventory/v1/salesorders
        
        # Update sales order
        PUT /zoho-inventory/inventory/v1/salesorders/{salesorder_id}
        
        # Delete sales order
        DELETE /zoho-inventory/inventory/v1/salesorders/{salesorder_id}
        
        # Status actions
        POST /zoho-inventory/inventory/v1/salesorders/{salesorder_id}/status/confirmed
        POST /zoho-inventory/inventory/v1/salesorders/{salesorder_id}/status/void
        ```
        
        ### Invoices
        
        ```bash
        # List invoices
        GET /zoho-inventory/inventory/v1/invoices
        
        # Get invoice
        GET /zoho-inventory/inventory/v1/invoices/{invoice_id}
        
        # Create invoice
        POST /zoho-inventory/inventory/v1/invoices
        
        # Update invoice
        PUT /zoho-inventory/inventory/v1/invoices/{invoice_id}
        
        # Delete invoice
        DELETE /zoho-inventory/inventory/v1/invoices/{invoice_id}
        
        # Status actions
        POST /zoho-inventory/inventory/v1/invoices/{invoice_id}/status/sent
        POST /zoho-inventory/inventory/v1/invoices/{invoice_id}/status/draft
        POST /zoho-inventory/inventory/v1/invoices/{invoice_id}/status/void
        
        # Email
        POST /zoho-inventory/inventory/v1/invoices/{invoice_id}/email
        ```
        
        ### Purchase Orders
        
        ```bash
        # List purchase orders
        GET /zoho-inventory/inventory/v1/purchaseorders
        
        # Create purchase order
        POST /zoho-inventory/inventory/v1/purchaseorders
        
        # Update purchase order
        PUT /zoho-inventory/inventory/v1/purchaseorders/{purchaseorder_id}
        
        # Delete purchase order
        DELETE /zoho-inventory/inventory/v1/purchaseorders/{purchaseorder_id}
        
        # Status actions
        POST /zoho-inventory/inventory/v1/purchaseorders/{purchaseorder_id}/status/issued
        POST /zoho-inventory/inventory/v1/purchaseorders/{purchaseorder_id}/status/cancelled
        ```
        
        ### Bills
        
        ```bash
        # List bills
        GET /zoho-inventory/inventory/v1/bills
        
        # Create bill
        POST /zoho-inventory/inventory/v1/bills
        
        # Update bill
        PUT /zoho-inventory/inventory/v1/bills/{bill_id}
        
        # Delete bill
        DELETE /zoho-inventory/inventory/v1/bills/{bill_id}
        
        # Status actions
        POST /zoho-inventory/inventory/v1/bills/{bill_id}/status/open
        POST /zoho-inventory/inventory/v1/bills/{bill_id}/status/void
        ```
        
        ### Item Groups
        
        ```bash
        GET /zoho-inventory/inventory/v1/itemgroups
        GET /zoho-inventory/inventory/v1/itemgroups/{itemgroup_id}
        POST /zoho-inventory/inventory/v1/itemgroups
        PUT /zoho-inventory/inventory/v1/itemgroups/{itemgroup_id}
        DELETE /zoho-inventory/inventory/v1/itemgroups/{itemgroup_id}
        ```
        
        ### Shipment Orders
        
        ```bash
        POST /zoho-inventory/inventory/v1/shipmentorders
        GET /zoho-inventory/inventory/v1/shipmentorders/{shipmentorder_id}
        PUT /zoho-inventory/inventory/v1/shipmentorders/{shipmentorder_id}
        DELETE /zoho-inventory/inventory/v1/shipmentorders/{shipmentorder_id}
        POST /zoho-inventory/inventory/v1/shipmentorders/{shipmentorder_id}/status/delivered
        ```
        
        ## Available Modules
        
        | Module | Endpoint | Description |
        |--------|----------|-------------|
        | Items | `/items` | Products and services |
        | Item Groups | `/itemgroups` | Grouped product variants |
        | Contacts | `/contacts` | Customers and vendors |
        | Sales Orders | `/salesorders` | Sales orders |
        | Invoices | `/invoices` | Sales invoices |
        | Purchase Orders | `/purchaseorders` | Purchase orders |
        | Bills | `/bills` | Vendor bills |
        | Shipment Orders | `/shipmentorders` | Shipment tracking |
        
        ## Notes
        
        - All successful responses have `code: 0`
        - Dates should be in `yyyy-mm-dd` format
        - Contact types are `customer` or `vendor`
        - The `organization_id` parameter is automatically handled by the gateway
        - Sales order and purchase order numbers are auto-generated by default
        - Pagination uses `page` and `per_page` parameters with `has_more_page` in response
        - Rate limits: 100 requests/minute per organization
        
        ## Resources
        
        - [Zoho Inventory API v1 Introduction](https://www.zoho.com/inventory/api/v1/introduction/)
        - [Zoho Inventory Items API](https://www.zoho.com/inventory/api/v1/items/)
        - [Zoho Inventory Contacts API](https://www.zoho.com/inventory/api/v1/contacts/)
        - [Zoho Inventory Sales Orders API](https://www.zoho.com/inventory/api/v1/salesorders/)
        - [Zoho Inventory Invoices API](https://www.zoho.com/inventory/api/v1/invoices/)
        - [Zoho Inventory Purchase Orders API](https://www.zoho.com/inventory/api/v1/purchaseorders/)
        - [Zoho Inventory Bills API](https://www.zoho.com/inventory/api/v1/bills/)
        
    • zoho-mail
      • README.md 3.9 KB
        # Zoho Mail Routing Reference
        
        **App name:** `zoho-mail`
        **Base URL proxied:** `mail.zoho.com`
        
        ## API Path Pattern
        
        ```
        /zoho-mail/api/{resource}
        ```
        
        ## Common Endpoints
        
        ### Accounts
        
        ```bash
        # Get all accounts
        GET /zoho-mail/api/accounts
        
        # Get account details
        GET /zoho-mail/api/accounts/{accountId}
        ```
        
        ### Folders
        
        ```bash
        # List all folders
        GET /zoho-mail/api/accounts/{accountId}/folders
        
        # Create folder
        POST /zoho-mail/api/accounts/{accountId}/folders
        Content-Type: application/json
        
        {
          "folderName": "My Folder"
        }
        
        # Rename folder
        PUT /zoho-mail/api/accounts/{accountId}/folders/{folderId}
        Content-Type: application/json
        
        {
          "folderName": "Renamed Folder"
        }
        
        # Delete folder
        DELETE /zoho-mail/api/accounts/{accountId}/folders/{folderId}
        ```
        
        ### Labels
        
        ```bash
        # List labels
        GET /zoho-mail/api/accounts/{accountId}/labels
        
        # Create label
        POST /zoho-mail/api/accounts/{accountId}/labels
        Content-Type: application/json
        
        {
          "labelName": "Important"
        }
        
        # Update label
        PUT /zoho-mail/api/accounts/{accountId}/labels/{labelId}
        
        # Delete label
        DELETE /zoho-mail/api/accounts/{accountId}/labels/{labelId}
        ```
        
        ### Messages
        
        ```bash
        # List emails in folder
        GET /zoho-mail/api/accounts/{accountId}/messages/view?folderId={folderId}&limit=50
        
        # Search emails
        GET /zoho-mail/api/accounts/{accountId}/messages/search?searchKey={query}
        
        # Get email content
        GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/content
        
        # Get email headers
        GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/header
        
        # Get email metadata
        GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/details
        
        # Get original MIME message
        GET /zoho-mail/api/accounts/{accountId}/messages/{messageId}/originalmessage
        
        # Send email
        POST /zoho-mail/api/accounts/{accountId}/messages
        Content-Type: application/json
        
        {
          "fromAddress": "sender@yourdomain.com",
          "toAddress": "recipient@example.com",
          "subject": "Subject",
          "content": "Email body",
          "mailFormat": "html"
        }
        
        # Reply to email
        POST /zoho-mail/api/accounts/{accountId}/messages/{messageId}
        
        # Update message (mark read, move, flag, archive, spam)
        PUT /zoho-mail/api/accounts/{accountId}/updatemessage
        Content-Type: application/json
        
        {
          "messageId": ["messageId1"],
          "folderId": "folderId",
          "mode": "markAsRead"
        }
        
        # Delete email
        DELETE /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}
        ```
        
        ### Attachments
        
        ```bash
        # Upload attachment
        POST /zoho-mail/api/accounts/{accountId}/messages/attachments
        Content-Type: multipart/form-data
        
        # Get attachment info
        GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/attachmentinfo
        
        # Download attachment
        GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/attachments/{attachmentId}
        ```
        
        ## Update Message Modes
        
        | Mode | Description |
        |------|-------------|
        | `markAsRead` | Mark messages as read |
        | `markAsUnread` | Mark messages as unread |
        | `moveMessage` | Move messages (requires `destfolderId`) |
        | `flag` | Set flag (requires `flagid`: 1-4) |
        | `archive` | Archive messages |
        | `unArchive` | Unarchive messages |
        | `spam` | Mark as spam |
        | `notSpam` | Mark as not spam |
        
        ## Default Folders
        
        | Folder | Type |
        |--------|------|
        | Inbox | `Inbox` |
        | Drafts | `Drafts` |
        | Templates | `Templates` |
        | Snoozed | `Snoozed` |
        | Sent | `Sent` |
        | Spam | `Spam` |
        | Trash | `Trash` |
        | Outbox | `Outbox` |
        
        ## Notes
        
        - Account IDs are required for most operations - get via `/api/accounts`
        - Message IDs and Folder IDs are numeric strings
        - The `fromAddress` must be associated with the authenticated account
        - Uses offset-based pagination with `start` and `limit` parameters
        - Some operations require additional OAuth scopes
        
        ## Resources
        
        - [Zoho Mail API Overview](https://www.zoho.com/mail/help/api/overview.html)
        - [Email Messages API](https://www.zoho.com/mail/help/api/email-api.html)
        - [Folders API](https://www.zoho.com/mail/help/api/get-all-folder-details.html)
        
    • zoho-people
      • README.md 3.5 KB
        # Zoho People Routing Reference
        
        **App name:** `zoho-people`
        **Base URL proxied:** `people.zoho.com`
        
        ## API Path Pattern
        
        ```
        /zoho-people/people/api/{resource}
        ```
        
        or for view-based endpoints:
        
        ```
        /zoho-people/api/forms/{viewName}/records
        ```
        
        ## Common Endpoints
        
        ### Forms
        
        ```bash
        # List all forms
        GET /zoho-people/people/api/forms
        ```
        
        ### Records (Bulk)
        
        ```bash
        # Get records from any form
        GET /zoho-people/people/api/forms/{formLinkName}/getRecords?sIndex=1&limit=200
        
        # Common form link names:
        # - employee
        # - department
        # - designation
        # - leave
        # - P_ClientDetails
        ```
        
        ### Records (View-based)
        
        ```bash
        # Get records using a view
        GET /zoho-people/api/forms/{viewName}/records?rec_limit=200
        
        # Common view names:
        # - P_EmployeeView
        # - P_DepartmentView
        # - P_DesignationView
        ```
        
        ### Search
        
        ```bash
        # Search by Employee ID
        GET /zoho-people/people/api/forms/employee/getRecords?SearchColumn=EMPLOYEEID&SearchValue={empId}
        
        # Search by Email
        GET /zoho-people/people/api/forms/employee/getRecords?SearchColumn=EMPLOYEEMAILALIAS&SearchValue={email}
        
        # Get modified records
        GET /zoho-people/people/api/forms/{formLinkName}/getRecords?modifiedtime={timestamp_ms}
        ```
        
        ### Insert Record
        
        ```bash
        POST /zoho-people/people/api/forms/json/{formLinkName}/insertRecord
        Content-Type: application/x-www-form-urlencoded
        
        inputData={"field1":"value1","field2":"value2"}
        ```
        
        ### Update Record
        
        ```bash
        POST /zoho-people/people/api/forms/json/{formLinkName}/updateRecord
        Content-Type: application/x-www-form-urlencoded
        
        inputData={"field1":"newValue"}&recordId={recordId}
        ```
        
        ### Attendance
        
        ```bash
        # Get attendance entries (requires additional scope)
        GET /zoho-people/people/api/attendance/getAttendanceEntries?date={date}&dateFormat={format}
        
        # Check-in/Check-out (requires additional scope)
        POST /zoho-people/people/api/attendance
        Content-Type: application/x-www-form-urlencoded
        
        dateFormat=dd/MM/yyyy HH:mm:ss&checkIn={datetime}&checkOut={datetime}&empId={empId}
        ```
        
        ### Leave
        
        ```bash
        # Get leave records
        GET /zoho-people/people/api/forms/leave/getRecords?sIndex=1&limit=200
        
        # Add leave
        POST /zoho-people/people/api/forms/json/leave/insertRecord
        Content-Type: application/x-www-form-urlencoded
        
        inputData={"Employee_ID":"EMP001","Leavetype":"123456","From":"01-Feb-2026","To":"02-Feb-2026"}
        ```
        
        ## Common Form Link Names
        
        | Form | formLinkName |
        |------|--------------|
        | Employee | `employee` |
        | Department | `department` |
        | Designation | `designation` |
        | Leave | `leave` |
        | Clients | `P_ClientDetails` |
        
        ## Pagination
        
        Uses index-based pagination:
        - `sIndex`: Starting index (1-based)
        - `limit`: Max records per request (max 200)
        
        For page 2: `sIndex=201&limit=200`
        
        ## Notes
        
        - Record IDs are numeric strings (e.g., `943596000000294355`)
        - Insert/Update use `application/x-www-form-urlencoded` content type
        - `inputData` parameter contains JSON object as string
        - Attendance endpoints require additional OAuth scopes
        - Maximum 200 records per request
        - Response wraps data in `response.result[]` array
        
        ## Error Codes
        
        | Code | Description |
        |------|-------------|
        | 7011 | Invalid form name |
        | 7012 | Invalid view name |
        | 7021 | Max limit exceeded (200) |
        | 7024 | No records found |
        | 7042 | Invalid search value |
        | 7218 | Invalid OAuth scope |
        
        ## Resources
        
        - [Zoho People API Overview](https://www.zoho.com/people/api/overview.html)
        - [Get Bulk Records API](https://www.zoho.com/people/api/bulk-records.html)
        - [Insert Record API](https://www.zoho.com/people/api/insert-records.html)
        - [Update Record API](https://www.zoho.com/people/api/update-records.html)
        
    • zoho-projects
      • README.md 3.8 KB
        # Zoho Projects Routing Reference
        
        **App name:** `zoho-projects`
        **Base URL proxied:** `projectsapi.zoho.com`
        
        ## API Path Pattern
        
        ```
        /zoho-projects/restapi/portals/
        /zoho-projects/restapi/portal/{portal_id}/projects/
        /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/
        /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasklists/
        /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/milestones/
        /zoho-projects/restapi/portal/{portal_id}/users/
        ```
        
        ## Important Notes
        
        - All POST requests use `application/x-www-form-urlencoded`, not JSON
        - Portal ID is required for most endpoints
        - Date format: `MM-dd-yyyy`
        - Empty lists return 204 No Content
        - Deleted items go to trash, not permanently deleted
        
        ## Common Endpoints
        
        ### Portals
        
        #### List Portals
        ```bash
        GET /zoho-projects/restapi/portals/
        ```
        
        #### Get Portal
        ```bash
        GET /zoho-projects/restapi/portal/{portal_id}/
        ```
        
        ### Projects
        
        #### List Projects
        ```bash
        GET /zoho-projects/restapi/portal/{portal_id}/projects/
        ```
        
        #### Get Project
        ```bash
        GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/
        ```
        
        #### Create Project
        ```bash
        POST /zoho-projects/restapi/portal/{portal_id}/projects/
        Content-Type: application/x-www-form-urlencoded
        
        name=New+Project
        ```
        
        #### Update Project
        ```bash
        POST /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/
        Content-Type: application/x-www-form-urlencoded
        
        name=Updated+Name
        ```
        
        #### Delete Project
        ```bash
        DELETE /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/
        ```
        
        ### Tasks
        
        #### List Tasks
        ```bash
        GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/
        ```
        
        #### Get Task
        ```bash
        GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/{task_id}/
        ```
        
        #### Get My Tasks
        ```bash
        GET /zoho-projects/restapi/portal/{portal_id}/mytasks/
        ```
        
        #### Create Task
        ```bash
        POST /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/
        Content-Type: application/x-www-form-urlencoded
        
        name=New+Task
        ```
        
        #### Update Task
        ```bash
        POST /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/{task_id}/
        Content-Type: application/x-www-form-urlencoded
        
        name=Updated+Name&priority=High
        ```
        
        #### Delete Task
        ```bash
        DELETE /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/{task_id}/
        ```
        
        ### Task Comments
        
        #### List Comments
        ```bash
        GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/{task_id}/comments/
        ```
        
        #### Add Comment
        ```bash
        POST /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/{task_id}/comments/
        Content-Type: application/x-www-form-urlencoded
        
        content=Comment+text
        ```
        
        ### Tasklists
        
        #### List Tasklists
        ```bash
        GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasklists/
        ```
        
        #### Create Tasklist
        ```bash
        POST /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasklists/
        Content-Type: application/x-www-form-urlencoded
        
        name=New+Tasklist
        ```
        
        ### Milestones
        
        #### List Milestones
        ```bash
        GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/milestones/
        ```
        
        #### Create Milestone
        ```bash
        POST /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/milestones/
        Content-Type: application/x-www-form-urlencoded
        
        name=Phase+1&start_date=03-01-2026&end_date=03-15-2026&owner={user_id}&flag=internal
        ```
        
        ### Users
        
        #### List Users
        ```bash
        GET /zoho-projects/restapi/portal/{portal_id}/users/
        ```
        
        ## Pagination
        
        Use `index` and `range` query parameters:
        ```bash
        GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/?index=1&range=50
        ```
        
        ## Resources
        
        - [Zoho Projects API Documentation](https://www.zoho.com/projects/help/rest-api/zohoprojectsapi.html)
        - [Projects API](https://www.zoho.com/projects/help/rest-api/projects-api.html)
        - [Tasks API](https://www.zoho.com/projects/help/rest-api/tasks-api.html)
        
    • zoho-recruit
      • README.md 3.5 KB
        # Zoho Recruit Routing Reference
        
        **App name:** `zoho-recruit`
        **Base URL proxied:** `recruit.zoho.com`
        
        ## API Path Pattern
        
        ```
        /zoho-recruit/recruit/v2/{module_api_name}
        ```
        
        ## Common Endpoints
        
        ### Modules
        
        ```bash
        # List all modules
        GET /zoho-recruit/recruit/v2/settings/modules
        
        # Get specific module
        GET /zoho-recruit/recruit/v2/settings/modules/{module_api_name}
        ```
        
        ### Records
        
        ```bash
        # List records
        GET /zoho-recruit/recruit/v2/{module_api_name}?page=1&per_page=200
        
        # Get single record
        GET /zoho-recruit/recruit/v2/{module_api_name}/{record_id}
        
        # Create records (max 100)
        POST /zoho-recruit/recruit/v2/{module_api_name}
        Content-Type: application/json
        
        {
          "data": [
            {"field_api_name": "value"}
          ]
        }
        
        # Update single record
        PUT /zoho-recruit/recruit/v2/{module_api_name}/{record_id}
        Content-Type: application/json
        
        {
          "data": [
            {"field_api_name": "new_value"}
          ]
        }
        
        # Update multiple records (max 100)
        PUT /zoho-recruit/recruit/v2/{module_api_name}
        Content-Type: application/json
        
        {
          "data": [
            {"id": "record_id", "field_api_name": "value"}
          ]
        }
        
        # Delete records (max 100)
        DELETE /zoho-recruit/recruit/v2/{module_api_name}?ids={id1},{id2}
        ```
        
        ### Search
        
        ```bash
        # Search by criteria
        GET /zoho-recruit/recruit/v2/{module_api_name}/search?criteria=(field:operator:value)
        
        # Search by email
        GET /zoho-recruit/recruit/v2/{module_api_name}/search?email=user@example.com
        
        # Search by phone
        GET /zoho-recruit/recruit/v2/{module_api_name}/search?phone=555-1234
        
        # Global word search
        GET /zoho-recruit/recruit/v2/{module_api_name}/search?word=keyword
        ```
        
        ## Available Modules
        
        | Module | API Name |
        |--------|----------|
        | Candidates | `Candidates` |
        | Job Openings | `Job_Openings` |
        | Applications | `Applications` |
        | Interviews | `Interviews` |
        | Departments | `Departments` |
        | Clients | `Clients` |
        | Contacts | `Contacts` |
        | Campaigns | `Campaigns` |
        | Referrals | `Referrals` |
        | Tasks | `Tasks` |
        | Events | `Events` |
        | Vendors | `Vendors` |
        
        ## Query Parameters
        
        | Parameter | Type | Description |
        |-----------|------|-------------|
        | `fields` | string | Comma-separated field API names |
        | `sort_order` | string | `asc` or `desc` |
        | `sort_by` | string | Field API name |
        | `converted` | string | `true`, `false`, or `both` |
        | `approved` | string | `true`, `false`, or `both` |
        | `page` | integer | Page number (default: 1) |
        | `per_page` | integer | Records per page (max 200) |
        
        ## Search Operators
        
        **Text fields:**
        - `equals`, `not_equal`, `starts_with`, `ends_with`, `contains`, `not_contains`, `in`
        
        **Date/Number fields:**
        - `equals`, `not_equal`, `greater_than`, `less_than`, `greater_equal`, `less_equal`, `between`
        
        ## Pagination
        
        Uses page-based pagination:
        - `page`: Page number (default: 1)
        - `per_page`: Records per page (max: 200)
        
        Response includes:
        ```json
        {
          "data": [...],
          "info": {
            "per_page": 200,
            "count": 50,
            "page": 1,
            "more_records": false
          }
        }
        ```
        
        ## Notes
        
        - Module API names are case-sensitive (e.g., `Job_Openings`)
        - Maximum 200 records per GET request
        - Maximum 100 records per POST/PUT/DELETE request
        - `Last_Name` is mandatory for Candidates
        - Date format: `yyyy-MM-dd`
        - DateTime format: `yyyy-MM-ddTHH:mm:ss±HH:mm` (ISO 8601)
        - Lookup fields use JSON objects with `id`
        
        ## Resources
        
        - [Zoho Recruit API v2 Overview](https://www.zoho.com/recruit/developer-guide/apiv2/)
        - [Get Records API](https://www.zoho.com/recruit/developer-guide/apiv2/get-records.html)
        - [Search Records API](https://www.zoho.com/recruit/developer-guide/apiv2/search-records.html)
        
  • LICENSE.txt 1 KB
    The MIT License (MIT)
    
    Copyright (c) 2026 Maton
    
    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:
    
    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.
    
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.
    
  • SKILL.md 31.1 KB
    ---
    name: api-gateway
    description: Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by [Maton](https://maton.ai). The API gateway lets y
      Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth.
      Use this skill when users want to interact with external services.
      Security: The MATON_API_KEY authenticates with Maton.ai but grants NO access to third-party services by itself. Each service requires explicit OAuth authorization by the user through Maton's connect flow. Access is strictly scoped to connections the user has authorized. Provided by Maton (https://maton.ai).
    compatibility: Requires network access and valid Maton API key
    metadata:
      author: maton
      version: "1.0"
      clawdbot:
        emoji: 🧠
        homepage: "https://maton.ai"
        requires:
          env:
            - MATON_API_KEY
    ---
    
    # API Gateway
    
    Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by [Maton](https://maton.ai). The API gateway lets you call native API endpoints directly.
    
    ## Quick Start
    
    ```bash
    # Native Slack API call
    python <<'EOF'
    import urllib.request, os, json
    data = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()
    req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    req.add_header('Content-Type', 'application/json')
    print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
    EOF
    ```
    
    
    ## Base URL
    
    ```
    https://gateway.maton.ai/{app}/{native-api-path}
    ```
    
    Replace `{app}` with the service name and `{native-api-path}` with the actual API endpoint path.
    
    IMPORTANT: The URL path MUST start with the connection's app name (eg. `/google-mail/...`). This prefix tells the gateway which app connection to use. For example, the native Gmail API path starts with `gmail/v1/`, so full paths look like `/google-mail/gmail/v1/users/me/messages`.
    
    ## Authentication
    
    All requests require the Maton API key in the Authorization header:
    
    ```
    Authorization: Bearer $MATON_API_KEY
    ```
    
    The API gateway automatically injects the appropriate OAuth token for the target service.
    
    **Environment Variable:** You can set your API key as the `MATON_API_KEY` environment variable:
    
    ```bash
    export MATON_API_KEY="YOUR_API_KEY"
    ```
    
    ## Getting Your API Key
    
    1. Sign in or create an account at [maton.ai](https://maton.ai)
    2. Go to [maton.ai/settings](https://maton.ai/settings)
    3. Click the copy button on the right side of API Key section to copy it
    
    ## Connection Management
    
    Connection management uses a separate base URL: `https://ctrl.maton.ai`
    
    ### List Connections
    
    ```bash
    python <<'EOF'
    import urllib.request, os, json
    req = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
    EOF
    ```
    
    **Query Parameters (optional):**
    - `app` - Filter by service name (e.g., `slack`, `hubspot`, `salesforce`)
    - `status` - Filter by connection status (`ACTIVE`, `PENDING`, `FAILED`)
    
    **Response:**
    ```json
    {
      "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": {}
        }
      ]
    }
    ```
    
    ### Create Connection
    
    ```bash
    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
    
    ```bash
    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:**
    ```json
    {
      "connection": {
        "connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
        "status": "ACTIVE",
        "creation_time": "2025-12-08T07:20:53.488460Z",
        "last_updated_time": "2026-01-31T20:03:32.593153Z",
        "url": "https://connect.maton.ai/?session_token=5e9...",
        "app": "slack",
        "metadata": {}
      }
    }
    ```
    
    Open the returned URL in a browser to complete OAuth.
    
    ### Delete Connection
    
    ```bash
    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:
    
    ```bash
    python <<'EOF'
    import urllib.request, os, json
    data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
    req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    req.add_header('Content-Type', 'application/json')
    req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
    print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
    EOF
    ```
    
    If omitted, the gateway uses the default (oldest) active connection for that app.
    
    ## Supported Services
    
    | Service | App Name | Base URL Proxied |
    |---------|----------|------------------|
    | ActiveCampaign | `active-campaign` | `{account}.api-us1.com` |
    | Acuity Scheduling | `acuity-scheduling` | `acuityscheduling.com` |
    | Airtable | `airtable` | `api.airtable.com` |
    | Apollo | `apollo` | `api.apollo.io` |
    | Asana | `asana` | `app.asana.com` |
    | Attio | `attio` | `api.attio.com` |
    | Basecamp | `basecamp` | `3.basecampapi.com` |
    | Baserow | `baserow` | `api.baserow.io` |
    | beehiiv | `beehiiv` | `api.beehiiv.com` |
    | Box | `box` | `api.box.com` |
    | Brevo | `brevo` | `api.brevo.com` |
    | Calendly | `calendly` | `api.calendly.com` |
    | Cal.com | `cal-com` | `api.cal.com` |
    | CallRail | `callrail` | `api.callrail.com` |
    | Chargebee | `chargebee` | `{subdomain}.chargebee.com` |
    | ClickFunnels | `clickfunnels` | `{subdomain}.myclickfunnels.com` |
    | ClickSend | `clicksend` | `rest.clicksend.com` |
    | ClickUp | `clickup` | `api.clickup.com` |
    | Clockify | `clockify` | `api.clockify.me` |
    | Coda | `coda` | `coda.io` |
    | Confluence | `confluence` | `api.atlassian.com` |
    | CompanyCam | `companycam` | `api.companycam.com` |
    | Cognito Forms | `cognito-forms` | `www.cognitoforms.com` |
    | Constant Contact | `constant-contact` | `api.cc.email` |
    | Dropbox | `dropbox` | `api.dropboxapi.com` |
    | Dropbox Business | `dropbox-business` | `api.dropboxapi.com` |
    | ElevenLabs | `elevenlabs` | `api.elevenlabs.io` |
    | Eventbrite | `eventbrite` | `www.eventbriteapi.com` |
    | 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 | `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` |
    | 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/](references/) for detailed routing guides per provider:
    - [ActiveCampaign](references/active-campaign/README.md) - Contacts, deals, tags, lists, automations, campaigns
    - [Acuity Scheduling](references/acuity-scheduling/README.md) - Appointments, calendars, clients, availability
    - [Airtable](references/airtable/README.md) - Records, bases, tables
    - [Apollo](references/apollo/README.md) - People search, enrichment, contacts
    - [Asana](references/asana/README.md) - Tasks, projects, workspaces, webhooks
    - [Attio](references/attio/README.md) - People, companies, records, tasks
    - [Basecamp](references/basecamp/README.md) - Projects, to-dos, messages, schedules, documents
    - [Baserow](references/baserow/README.md) - Database rows, fields, tables, batch operations
    - [beehiiv](references/beehiiv/README.md) - Publications, subscriptions, posts, custom fields
    - [Box](references/box/README.md) - Files, folders, collaborations, shared links
    - [Brevo](references/brevo/README.md) - Contacts, email campaigns, transactional emails, templates
    - [Calendly](references/calendly/README.md) - Event types, scheduled events, availability, webhooks
    - [Cal.com](references/cal-com/README.md) - Event types, bookings, schedules, availability slots, webhooks
    - [CallRail](references/callrail/README.md) - Calls, trackers, companies, tags, analytics
    - [Chargebee](references/chargebee/README.md) - Subscriptions, customers, invoices
    - [ClickFunnels](references/clickfunnels/README.md) - Contacts, products, orders, courses, webhooks
    - [ClickSend](references/clicksend/README.md) - SMS, MMS, voice messages, contacts, lists
    - [ClickUp](references/clickup/README.md) - Tasks, lists, folders, spaces, webhooks
    - [Clockify](references/clockify/README.md) - Time tracking, projects, clients, tasks, workspaces
    - [Coda](references/coda/README.md) - Docs, pages, tables, rows, formulas, controls
    - [Confluence](references/confluence/README.md) - Pages, spaces, blogposts, comments, attachments
    - [CompanyCam](references/companycam/README.md) - Projects, photos, users, tags, groups, documents
    - [Cognito Forms](references/cognito-forms/README.md) - Forms, entries, documents, files
    - [Constant Contact](references/constant-contact/README.md) - Contacts, email campaigns, lists, segments
    - [Dropbox](references/dropbox/README.md) - Files, folders, search, metadata, revisions, tags
    - [Dropbox Business](references/dropbox-business/README.md) - Team members, groups, team folders, devices, audit logs
    - [ElevenLabs](references/elevenlabs/README.md) - Text-to-speech, voice cloning, sound effects, audio processing
    - [Eventbrite](references/eventbrite/README.md) - Events, venues, tickets, orders, attendees
    - [Exa](references/exa/README.md) - Neural web search, content extraction, similar pages, AI answers, research tasks
    - [Fathom](references/fathom/README.md) - Meeting recordings, transcripts, summaries, webhooks
    - [Firebase](references/firebase/README.md) - Projects, web apps, Android apps, iOS apps, configurations
    - [Fireflies](references/fireflies/README.md) - Meeting transcripts, summaries, AskFred AI, channels
    - [GetResponse](references/getresponse/README.md) - Campaigns, contacts, newsletters, autoresponders, tags, segments
    - [Grafana](references/grafana/README.md) - Dashboards, data sources, folders, annotations, alerts, teams
    - [GitHub](references/github/README.md) - Repositories, issues, pull requests, commits
    - [Gumroad](references/gumroad/README.md) - Products, sales, subscribers, licenses, webhooks
    - [Granola MCP](references/granola-mcp/README.md) - MCP-based interface for meeting notes, transcripts, queries
    - [Google Ads](references/google-ads/README.md) - Campaigns, ad groups, GAQL queries
    - [Google Analytics Admin](references/google-analytics-admin/README.md) - Reports, dimensions, metrics
    - [Google Analytics Data](references/google-analytics-data/README.md) - Reports, dimensions, metrics
    - [Google BigQuery](references/google-bigquery/README.md) - Datasets, tables, jobs, SQL queries
    - [Google Calendar](references/google-calendar/README.md) - Events, calendars, free/busy
    - [Google Classroom](references/google-classroom/README.md) - Courses, coursework, students, teachers, announcements
    - [Google Contacts](references/google-contacts/README.md) - Contacts, contact groups, people search
    - [Google Docs](references/google-docs/README.md) - Document creation, batch updates
    - [Google Drive](references/google-drive/README.md) - Files, folders, permissions
    - [Google Forms](references/google-forms/README.md) - Forms, questions, responses
    - [Gmail](references/google-mail/README.md) - Messages, threads, labels
    - [Google Meet](references/google-meet/README.md) - Spaces, conference records, participants
    - [Google Merchant](references/google-merchant/README.md) - Products, inventories, promotions, reports
    - [Google Play](references/google-play/README.md) - In-app products, subscriptions, reviews
    - [Google Search Console](references/google-search-console/README.md) - Search analytics, sitemaps
    - [Google Sheets](references/google-sheets/README.md) - Values, ranges, formatting
    - [Google Slides](references/google-slides/README.md) - Presentations, slides, formatting
    - [Google Tasks](references/google-tasks/README.md) - Task lists, tasks, subtasks
    - [Google Workspace Admin](references/google-workspace-admin/README.md) - Users, groups, org units, domains, roles
    - [HubSpot](references/hubspot/README.md) - Contacts, companies, deals
    - [Instantly](references/instantly/README.md) - Campaigns, leads, accounts, email outreach
    - [Jira](references/jira/README.md) - Issues, projects, JQL queries
    - [Jobber](references/jobber/README.md) - Clients, jobs, invoices, quotes (GraphQL)
    - [JotForm](references/jotform/README.md) - Forms, submissions, webhooks
    - [Kaggle](references/kaggle/README.md) - Datasets, models, competitions, kernels
    - [Keap](references/keap/README.md) - Contacts, companies, tags, tasks, opportunities, campaigns
    - [Kibana](references/kibana/README.md) - Saved objects, dashboards, data views, spaces, alerts, fleet
    - [Kit](references/kit/README.md) - Subscribers, tags, forms, sequences, broadcasts
    - [Klaviyo](references/klaviyo/README.md) - Profiles, lists, campaigns, flows, events
    - [Lemlist](references/lemlist/README.md) - Campaigns, leads, activities, schedules, unsubscribes
    - [Linear](references/linear/README.md) - Issues, projects, teams, cycles (GraphQL)
    - [LinkedIn](references/linkedin/README.md) - Profile, posts, shares, media uploads
    - [Mailchimp](references/mailchimp/README.md) - Audiences, campaigns, templates, automations
    - [MailerLite](references/mailerlite/README.md) - Subscribers, groups, campaigns, automations, forms
    - [Mailgun](references/mailgun/README.md) - Email sending, domains, routes, templates, mailing lists, suppressions
    - [ManyChat](references/manychat/README.md) - Subscribers, tags, flows, messaging
    - [Manus](references/manus/README.md) - AI agent tasks, projects, files, webhooks
    - [Microsoft Excel](references/microsoft-excel/README.md) - Workbooks, worksheets, ranges, tables, charts
    - [Microsoft Teams](references/microsoft-teams/README.md) - Teams, channels, messages, members, chats
    - [Microsoft To Do](references/microsoft-to-do/README.md) - Task lists, tasks, checklist items, linked resources
    - [Monday.com](references/monday/README.md) - Boards, items, columns, groups (GraphQL)
    - [Motion](references/motion/README.md) - Tasks, projects, workspaces, schedules
    - [Netlify](references/netlify/README.md) - Sites, deploys, builds, DNS, environment variables
    - [Notion](references/notion/README.md) - Pages, databases, blocks
    - [Notion MCP](references/notion-mcp/README.md) - MCP-based interface for pages, databases, comments, teams, users
    - [OneDrive](references/one-drive/README.md) - Files, folders, drives, sharing
    - [Outlook](references/outlook/README.md) - Mail, calendar, contacts
    - [PDF.co](references/pdf-co/README.md) - PDF conversion, merge, split, edit, text extraction, barcodes
    - [Pipedrive](references/pipedrive/README.md) - Deals, persons, organizations, activities
    - [Podio](references/podio/README.md) - Organizations, workspaces, apps, items, tasks, comments
    - [PostHog](references/posthog/README.md) - Product analytics, feature flags, session recordings, experiments, HogQL queries
    - [QuickBooks](references/quickbooks/README.md) - Customers, invoices, reports
    - [Quo](references/quo/README.md) - Calls, messages, contacts, conversations, webhooks
    - [Reducto](references/reducto/README.md) - Document parsing, extraction, splitting, editing
    - [Salesforce](references/salesforce/README.md) - SOQL, sObjects, CRUD
    - [SignNow](references/signnow/README.md) - Documents, templates, invites, e-signatures
    - [SendGrid](references/sendgrid/README.md) - Email sending, contacts, templates, suppressions, statistics
    - [Sentry](references/sentry/README.md) - Issues, events, projects, teams, releases
    - [SharePoint](references/sharepoint/README.md) - Sites, lists, document libraries, files, folders, versions
    - [Slack](references/slack/README.md) - Messages, channels, users
    - [Snapchat](references/snapchat/README.md) - Ad accounts, campaigns, ad squads, ads, creatives, audiences
    - [Square](references/squareup/README.md) - Payments, customers, orders, catalog, inventory, invoices
    - [Squarespace](references/squarespace/README.md) - Products, inventory, orders, profiles, transactions
    - [Sunsama MCP](references/sunsama-mcp/README.md) - MCP-based interface for tasks, calendar, backlog, objectives, time tracking
    - [Stripe](references/stripe/README.md) - Customers, subscriptions, payments
    - [Systeme.io](references/systeme/README.md) - Contacts, tags, courses, communities, webhooks
    - [Tally](references/tally/README.md) - Forms, submissions, workspaces, webhooks
    - [Tavily](references/tavily/README.md) - AI web search, content extraction, crawling, research tasks
    - [Telegram](references/telegram/README.md) - Messages, chats, bots, updates, polls
    - [TickTick](references/ticktick/README.md) - Tasks, projects, task lists
    - [Todoist](references/todoist/README.md) - Tasks, projects, sections, labels, comments
    - [Toggl Track](references/toggl-track/README.md) - Time entries, projects, clients, tags, workspaces
    - [Trello](references/trello/README.md) - Boards, lists, cards, checklists
    - [Twilio](references/twilio/README.md) - SMS, voice calls, phone numbers, messaging
    - [Typeform](references/typeform/README.md) - Forms, responses, insights
    - [Unbounce](references/unbounce/README.md) - Landing pages, leads, accounts, sub-accounts, domains
    - [Vimeo](references/vimeo/README.md) - Videos, folders, albums, comments, likes
    - [WhatsApp Business](references/whatsapp-business/README.md) - Messages, templates, media
    - [WooCommerce](references/woocommerce/README.md) - Products, orders, customers, coupons
    - [WordPress.com](references/wordpress/README.md) - Posts, pages, sites, users, settings
    - [Xero](references/xero/README.md) - Contacts, invoices, reports
    - [YouTube](references/youtube/README.md) - Videos, playlists, channels, subscriptions
    - [Zoho Bigin](references/zoho-bigin/README.md) - Contacts, companies, pipelines, products
    - [Zoho Bookings](references/zoho-bookings/README.md) - Appointments, services, staff, workspaces
    - [Zoho Books](references/zoho-books/README.md) - Invoices, contacts, bills, expenses
    - [Zoho Calendar](references/zoho-calendar/README.md) - Calendars, events, attendees, reminders
    - [Zoho CRM](references/zoho-crm/README.md) - Leads, contacts, accounts, deals, search
    - [Zoho Inventory](references/zoho-inventory/README.md) - Items, sales orders, invoices, purchase orders, bills
    - [Zoho Mail](references/zoho-mail/README.md) - Messages, folders, labels, attachments
    - [Zoho People](references/zoho-people/README.md) - Employees, departments, designations, attendance, leave
    - [Zoho Projects](references/zoho-projects/README.md) - Projects, tasks, milestones, tasklists, comments
    - [Zoho Recruit](references/zoho-recruit/README.md) - Candidates, job openings, interviews, applications
    
    ## Examples
    
    ### Slack - Post Message (Native API)
    
    ```bash
    # Native Slack API: POST https://slack.com/api/chat.postMessage
    python <<'EOF'
    import urllib.request, os, json
    data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
    req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    req.add_header('Content-Type', 'application/json; charset=utf-8')
    print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
    EOF
    ```
    
    ### HubSpot - Create Contact (Native API)
    
    ```bash
    # Native HubSpot API: POST https://api.hubapi.com/crm/v3/objects/contacts
    python <<'EOF'
    import urllib.request, os, json
    data = json.dumps({'properties': {'email': 'john@example.com', 'firstname': 'John', 'lastname': 'Doe'}}).encode()
    req = urllib.request.Request('https://gateway.maton.ai/hubspot/crm/v3/objects/contacts', data=data, method='POST')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    req.add_header('Content-Type', 'application/json')
    print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
    EOF
    ```
    
    ### Google Sheets - Get Spreadsheet Values (Native API)
    
    ```bash
    # Native Sheets API: GET https://sheets.googleapis.com/v4/spreadsheets/{id}/values/{range}
    python <<'EOF'
    import urllib.request, os, json
    req = urllib.request.Request('https://gateway.maton.ai/google-sheets/v4/spreadsheets/122BS1sFN2RKL8AOUQjkLdubzOwgqzPT64KfZ2rvYI4M/values/Sheet1!A1:B2')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
    EOF
    ```
    
    ### Salesforce - SOQL Query (Native API)
    
    ```bash
    # Native Salesforce API: GET https://{instance}.salesforce.com/services/data/v64.0/query?q=...
    python <<'EOF'
    import urllib.request, os, json
    req = urllib.request.Request('https://gateway.maton.ai/salesforce/services/data/v64.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
    EOF
    ```
    
    ### Airtable - List Tables (Native API)
    
    ```bash
    # Native Airtable API: GET https://api.airtable.com/v0/meta/bases/{id}/tables
    python <<'EOF'
    import urllib.request, os, json
    req = urllib.request.Request('https://gateway.maton.ai/airtable/v0/meta/bases/appgqan2NzWGP5sBK/tables')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
    EOF
    ```
    
    ### Notion - Query Database (Native API)
    
    ```bash
    # Native Notion API: POST https://api.notion.com/v1/data_sources/{id}/query
    python <<'EOF'
    import urllib.request, os, json
    data = json.dumps({}).encode()
    req = urllib.request.Request('https://gateway.maton.ai/notion/v1/data_sources/23702dc5-9a3b-8001-9e1c-000b5af0a980/query', data=data, method='POST')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    req.add_header('Content-Type', 'application/json')
    req.add_header('Notion-Version', '2025-09-03')
    print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
    EOF
    ```
    
    ### Stripe - List Customers (Native API)
    
    ```bash
    # Native Stripe API: GET https://api.stripe.com/v1/customers
    python <<'EOF'
    import urllib.request, os, json
    req = urllib.request.Request('https://gateway.maton.ai/stripe/v1/customers?limit=10')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
    EOF
    ```
    
    ## Code Examples
    
    ### JavaScript (Node.js)
    
    ```javascript
    const response = await fetch('https://gateway.maton.ai/slack/api/chat.postMessage', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${process.env.MATON_API_KEY}`
      },
      body: JSON.stringify({ channel: 'C0123456', text: 'Hello!' })
    });
    ```
    
    ### Python
    
    ```python
    import os
    import requests
    
    response = requests.post(
        'https://gateway.maton.ai/slack/api/chat.postMessage',
        headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
        json={'channel': 'C0123456', 'text': 'Hello!'}
    )
    ```
    
    ## Error Handling
    
    | Status | Meaning |
    |--------|---------|
    | 400 | Missing connection for the requested app |
    | 401 | Invalid or missing Maton API key |
    | 429 | Rate limited (10 requests/second per account) |
    | 500 | Internal Server Error |
    | 4xx/5xx | Passthrough error from the target API |
    
    Errors from the target API are passed through with their original status codes and response bodies.
    
    ### Troubleshooting: API Key Issues
    
    1. Check that the `MATON_API_KEY` environment variable is set:
    
    ```bash
    echo $MATON_API_KEY
    ```
    
    2. Verify the API key is valid by listing connections:
    
    ```bash
    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`
    
    2. Ensure you have an active connection for the app. List your connections to verify:
    
    ```bash
    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
    
    ## 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
    
    - [Github](https://github.com/maton-ai/api-gateway-skill)
    - [API Reference](https://www.maton.ai/docs/api-reference)
    - [Maton Community](https://discord.com/invite/dBfFAcefs2)
    - [Maton Support](mailto:support@maton.ai)
    
  • _meta.json 131 B
    {
      "ownerId": "kn75240wq8bnv2qm2xgry748jd80b9r0",
      "slug": "api-gateway",
      "version": "1.0.62",
      "publishedAt": 1773006198444
    }

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related