feat: add 23 new CLI tools and integration guides
New tools across 13 categories: - Email/Newsletter: beehiiv, klaviyo, postmark, brevo, activecampaign - Data Enrichment: clearbit, apollo - CRO/Testing: hotjar, optimizely - Analytics: plausible - Scheduling: calendly, savvycal - Forms: typeform - Messaging: intercom - Social: buffer - Video: wistia - Payments: paddle - Affiliate: partnerstack - Reviews: trustpilot, g2 - Push: onesignal - Webinar: demio, livestorm Each tool includes a zero-dependency CLI and integration guide. Registry and CLI README updated with all new entries. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,337 @@
|
||||
# ActiveCampaign
|
||||
|
||||
Email marketing automation platform with CRM, contacts, deals pipeline, tags, automations, and campaign management.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API v3 for contacts, deals, automations, campaigns, tags |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [activecampaign.js](../clis/activecampaign.js) |
|
||||
| SDK | ✓ | Python, PHP, Node.js, Ruby |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Token
|
||||
- **Header**: `Api-Token: {api_token}`
|
||||
- **Base URL**: `https://{yourAccountName}.api-us1.com/api/3`
|
||||
- **Get key**: Settings > Developer tab in your ActiveCampaign account
|
||||
- **Note**: Each user has a unique API key. Base URL is account-specific (found in Settings > Developer).
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Get current user
|
||||
|
||||
```bash
|
||||
GET https://{account}.api-us1.com/api/3/users/me
|
||||
```
|
||||
|
||||
### List contacts
|
||||
|
||||
```bash
|
||||
GET https://{account}.api-us1.com/api/3/contacts?limit=20&offset=0
|
||||
|
||||
# Search by email
|
||||
GET https://{account}.api-us1.com/api/3/contacts?email=user@example.com
|
||||
|
||||
# Search by name
|
||||
GET https://{account}.api-us1.com/api/3/contacts?search=Jane
|
||||
```
|
||||
|
||||
### Create contact
|
||||
|
||||
```bash
|
||||
POST https://{account}.api-us1.com/api/3/contacts
|
||||
|
||||
{
|
||||
"contact": {
|
||||
"email": "user@example.com",
|
||||
"firstName": "Jane",
|
||||
"lastName": "Doe",
|
||||
"phone": "+15551234567"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Update contact
|
||||
|
||||
```bash
|
||||
PUT https://{account}.api-us1.com/api/3/contacts/{contactId}
|
||||
|
||||
{
|
||||
"contact": {
|
||||
"firstName": "Updated",
|
||||
"lastName": "Name"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Sync contact (create or update)
|
||||
|
||||
```bash
|
||||
POST https://{account}.api-us1.com/api/3/contact/sync
|
||||
|
||||
{
|
||||
"contact": {
|
||||
"email": "user@example.com",
|
||||
"firstName": "Jane",
|
||||
"lastName": "Doe"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Delete contact
|
||||
|
||||
```bash
|
||||
DELETE https://{account}.api-us1.com/api/3/contacts/{contactId}
|
||||
```
|
||||
|
||||
### List all lists
|
||||
|
||||
```bash
|
||||
GET https://{account}.api-us1.com/api/3/lists?limit=20&offset=0
|
||||
```
|
||||
|
||||
### Create list
|
||||
|
||||
```bash
|
||||
POST https://{account}.api-us1.com/api/3/lists
|
||||
|
||||
{
|
||||
"list": {
|
||||
"name": "Newsletter",
|
||||
"stringid": "newsletter",
|
||||
"sender_url": "https://example.com",
|
||||
"sender_reminder": "You signed up for our newsletter."
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Subscribe contact to list
|
||||
|
||||
```bash
|
||||
POST https://{account}.api-us1.com/api/3/contactLists
|
||||
|
||||
{
|
||||
"contactList": {
|
||||
"list": "1",
|
||||
"contact": "1",
|
||||
"status": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Unsubscribe contact from list
|
||||
|
||||
```bash
|
||||
POST https://{account}.api-us1.com/api/3/contactLists
|
||||
|
||||
{
|
||||
"contactList": {
|
||||
"list": "1",
|
||||
"contact": "1",
|
||||
"status": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List campaigns
|
||||
|
||||
```bash
|
||||
GET https://{account}.api-us1.com/api/3/campaigns?limit=20&offset=0
|
||||
```
|
||||
|
||||
### List deals
|
||||
|
||||
```bash
|
||||
GET https://{account}.api-us1.com/api/3/deals?limit=20&offset=0
|
||||
|
||||
# Filter by pipeline stage
|
||||
GET https://{account}.api-us1.com/api/3/deals?filters[stage]=1
|
||||
```
|
||||
|
||||
### Create deal
|
||||
|
||||
```bash
|
||||
POST https://{account}.api-us1.com/api/3/deals
|
||||
|
||||
{
|
||||
"deal": {
|
||||
"title": "New Enterprise Deal",
|
||||
"value": 50000,
|
||||
"currency": "usd",
|
||||
"group": "1",
|
||||
"stage": "1",
|
||||
"owner": "1",
|
||||
"contact": "1"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Update deal
|
||||
|
||||
```bash
|
||||
PUT https://{account}.api-us1.com/api/3/deals/{dealId}
|
||||
|
||||
{
|
||||
"deal": {
|
||||
"stage": "2",
|
||||
"value": 75000
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List automations
|
||||
|
||||
```bash
|
||||
GET https://{account}.api-us1.com/api/3/automations?limit=20&offset=0
|
||||
```
|
||||
|
||||
### Add contact to automation
|
||||
|
||||
```bash
|
||||
POST https://{account}.api-us1.com/api/3/contactAutomations
|
||||
|
||||
{
|
||||
"contactAutomation": {
|
||||
"contact": "1",
|
||||
"automation": "1"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List tags
|
||||
|
||||
```bash
|
||||
GET https://{account}.api-us1.com/api/3/tags?limit=20&offset=0
|
||||
```
|
||||
|
||||
### Create tag
|
||||
|
||||
```bash
|
||||
POST https://{account}.api-us1.com/api/3/tags
|
||||
|
||||
{
|
||||
"tag": {
|
||||
"tag": "VIP Customer",
|
||||
"tagType": "contact"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Add tag to contact
|
||||
|
||||
```bash
|
||||
POST https://{account}.api-us1.com/api/3/contactTags
|
||||
|
||||
{
|
||||
"contactTag": {
|
||||
"contact": "1",
|
||||
"tag": "1"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List pipelines (deal groups)
|
||||
|
||||
```bash
|
||||
GET https://{account}.api-us1.com/api/3/dealGroups?limit=20&offset=0
|
||||
```
|
||||
|
||||
### List webhooks
|
||||
|
||||
```bash
|
||||
GET https://{account}.api-us1.com/api/3/webhooks?limit=20&offset=0
|
||||
```
|
||||
|
||||
### Create webhook
|
||||
|
||||
```bash
|
||||
POST https://{account}.api-us1.com/api/3/webhooks
|
||||
|
||||
{
|
||||
"webhook": {
|
||||
"name": "Contact Updated",
|
||||
"url": "https://example.com/webhook",
|
||||
"events": ["subscribe", "unsubscribe"],
|
||||
"sources": ["public", "admin", "api", "system"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## API Pattern
|
||||
|
||||
ActiveCampaign uses REST with resource wrapping (e.g., `{ "contact": {...} }`). Responses include the resource object plus metadata. Related resources are managed via junction endpoints (e.g., `/contactLists`, `/contactTags`, `/contactAutomations`). The base URL is account-specific. Pagination uses `limit` and `offset` parameters.
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Contact Fields
|
||||
- `email` - Email address
|
||||
- `firstName`, `lastName` - Name fields
|
||||
- `phone` - Phone number
|
||||
- `cdate` - Creation date
|
||||
- `udate` - Last updated date
|
||||
- `deals` - Related deals count
|
||||
|
||||
### Deal Fields
|
||||
- `title` - Deal name
|
||||
- `value` - Deal value in cents
|
||||
- `currency` - Currency code
|
||||
- `stage` - Pipeline stage ID
|
||||
- `group` - Pipeline (deal group) ID
|
||||
- `owner` - Assigned user ID
|
||||
- `status` - 0 (open), 1 (won), 2 (lost)
|
||||
|
||||
### Campaign Metrics
|
||||
- `sends` - Total sends
|
||||
- `opens` - Opens count
|
||||
- `clicks` - Clicks count
|
||||
- `uniqueopens` - Unique opens
|
||||
- `uniquelinks` - Unique clicks
|
||||
|
||||
## Parameters
|
||||
|
||||
### Contact List Status
|
||||
- `1` - Subscribed (active)
|
||||
- `2` - Unsubscribed
|
||||
|
||||
### Deal Status
|
||||
- `0` - Open
|
||||
- `1` - Won
|
||||
- `2` - Lost
|
||||
|
||||
### Tag Types
|
||||
- `contact` - Contact tags
|
||||
- `deal` - Deal tags
|
||||
|
||||
### Common Query Parameters
|
||||
- `limit` - Results per page (default 20)
|
||||
- `offset` - Skip N results
|
||||
- `search` - Text search
|
||||
- `email` - Filter contacts by email
|
||||
- `filters[stage]` - Filter deals by stage
|
||||
- `filters[owner]` - Filter deals by owner
|
||||
|
||||
## When to Use
|
||||
|
||||
- Marketing automation with complex conditional workflows
|
||||
- CRM with deal pipeline management
|
||||
- Contact management with tagging and segmentation
|
||||
- Email campaign creation and tracking
|
||||
- Triggering automations based on external events
|
||||
- B2B sales pipeline tracking integrated with marketing
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- 5 requests per second per account
|
||||
- Rate limit applies across all API users on the same account
|
||||
- 429 responses include `Retry-After` header
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- email-sequence
|
||||
- lifecycle-marketing
|
||||
- crm-integration
|
||||
- sales-pipeline
|
||||
- marketing-automation
|
||||
@@ -0,0 +1,148 @@
|
||||
# Apollo.io
|
||||
|
||||
B2B prospecting and data enrichment platform with 210M+ contacts and 35M+ companies for sales intelligence.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | People Search, Company Search, Enrichment, Sequences |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [apollo.js](../clis/apollo.js) |
|
||||
| SDK | - | REST API only |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Key
|
||||
- **Header**: `x-api-key: {api_key}` or `Authorization: Bearer {token}`
|
||||
- **Get key**: Settings > Integrations > API at https://app.apollo.io
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### People Search
|
||||
|
||||
```bash
|
||||
POST https://api.apollo.io/api/v1/mixed_people/api_search
|
||||
|
||||
{
|
||||
"person_titles": ["Sales Manager"],
|
||||
"person_locations": ["United States"],
|
||||
"organization_num_employees_ranges": ["1,100"],
|
||||
"page": 1
|
||||
}
|
||||
```
|
||||
|
||||
### Person Enrichment
|
||||
|
||||
```bash
|
||||
POST https://api.apollo.io/api/v1/people/match
|
||||
|
||||
{
|
||||
"first_name": "Tim",
|
||||
"last_name": "Zheng",
|
||||
"domain": "apollo.io"
|
||||
}
|
||||
```
|
||||
|
||||
### Bulk People Enrichment
|
||||
|
||||
```bash
|
||||
POST https://api.apollo.io/api/v1/people/bulk_match
|
||||
|
||||
{
|
||||
"details": [
|
||||
{ "email": "tim@apollo.io" },
|
||||
{ "first_name": "Jane", "last_name": "Doe", "domain": "example.com" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Organization Search
|
||||
|
||||
```bash
|
||||
POST https://api.apollo.io/api/v1/mixed_companies/search
|
||||
|
||||
{
|
||||
"organization_locations": ["United States"],
|
||||
"organization_num_employees_ranges": ["1,100"],
|
||||
"page": 1
|
||||
}
|
||||
```
|
||||
|
||||
### Organization Enrichment
|
||||
|
||||
```bash
|
||||
POST https://api.apollo.io/api/v1/organizations/enrich
|
||||
|
||||
{
|
||||
"domain": "apollo.io"
|
||||
}
|
||||
```
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Person Data
|
||||
- `first_name`, `last_name` - Name
|
||||
- `title` - Job title
|
||||
- `email` - Verified email
|
||||
- `linkedin_url` - LinkedIn profile
|
||||
- `organization` - Company details
|
||||
- `seniority` - Seniority level
|
||||
- `departments` - Department list
|
||||
|
||||
### Organization Data
|
||||
- `name` - Company name
|
||||
- `website_url` - Website
|
||||
- `estimated_num_employees` - Employee count
|
||||
- `industry` - Industry
|
||||
- `annual_revenue` - Revenue
|
||||
- `technologies` - Tech stack
|
||||
- `funding_total` - Total funding
|
||||
|
||||
## Parameters
|
||||
|
||||
### People Search
|
||||
- `person_titles` - Array of job titles
|
||||
- `person_locations` - Array of locations
|
||||
- `person_seniorities` - Array: owner, founder, c_suite, partner, vp, head, director, manager, senior, entry
|
||||
- `organization_num_employees_ranges` - Array of ranges (e.g., "1,100")
|
||||
- `organization_ids` - Filter by Apollo org IDs
|
||||
- `page` - Page number (default: 1)
|
||||
- `per_page` - Results per page (default: 25, max: 100)
|
||||
|
||||
### Person Enrichment
|
||||
- `email` - Email address
|
||||
- `first_name` + `last_name` + `domain` - Alternative lookup
|
||||
- `linkedin_url` - LinkedIn URL
|
||||
- `reveal_personal_emails` - Include personal emails
|
||||
- `reveal_phone_number` - Include phone numbers
|
||||
|
||||
### Organization Search
|
||||
- `organization_locations` - Array of locations
|
||||
- `organization_num_employees_ranges` - Employee count ranges
|
||||
- `organization_ids` - Specific org IDs
|
||||
- `page` - Page number
|
||||
|
||||
## When to Use
|
||||
|
||||
- Building targeted prospect lists by role, seniority, and company size
|
||||
- Enriching leads with verified contact info
|
||||
- Finding decision-makers at target accounts
|
||||
- Company research and firmographic analysis
|
||||
- ABM campaign targeting
|
||||
- Sales intelligence and outbound prospecting
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Rate limits vary by plan
|
||||
- Standard: 100 requests/minute for most endpoints
|
||||
- Bulk enrichment: up to 10 people per request
|
||||
- Search: max 50,000 records (100 per page, 500 pages)
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- abm-strategy
|
||||
- lead-enrichment
|
||||
- lead-scoring
|
||||
- cold-email
|
||||
- competitor-alternatives
|
||||
@@ -0,0 +1,157 @@
|
||||
# Beehiiv
|
||||
|
||||
Newsletter platform with subscriber management, post publishing, automations, and referral programs.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API v2 for publications, subscriptions, posts, segments |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [beehiiv.js](../clis/beehiiv.js) |
|
||||
| SDK | - | No official SDK; OpenAPI spec available for codegen |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Bearer Token
|
||||
- **Header**: `Authorization: Bearer {api_key}`
|
||||
- **Get key**: Settings > API under Workspace Settings at https://app.beehiiv.com
|
||||
- **Note**: API key is only shown once on creation; copy and store it immediately
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List publications
|
||||
|
||||
```bash
|
||||
GET https://api.beehiiv.com/v2/publications
|
||||
```
|
||||
|
||||
### Get publication details
|
||||
|
||||
```bash
|
||||
GET https://api.beehiiv.com/v2/publications/{publicationId}
|
||||
```
|
||||
|
||||
### List subscriptions
|
||||
|
||||
```bash
|
||||
GET https://api.beehiiv.com/v2/publications/{publicationId}/subscriptions?limit=10&status=active
|
||||
|
||||
# Filter by email
|
||||
GET https://api.beehiiv.com/v2/publications/{publicationId}/subscriptions?email=user@example.com
|
||||
```
|
||||
|
||||
### Create subscription
|
||||
|
||||
```bash
|
||||
POST https://api.beehiiv.com/v2/publications/{publicationId}/subscriptions
|
||||
|
||||
{
|
||||
"email": "user@example.com",
|
||||
"reactivate_existing": false,
|
||||
"send_welcome_email": true,
|
||||
"utm_source": "api",
|
||||
"tier": "free"
|
||||
}
|
||||
```
|
||||
|
||||
### Update subscription
|
||||
|
||||
```bash
|
||||
PUT https://api.beehiiv.com/v2/publications/{publicationId}/subscriptions/{subscriptionId}
|
||||
|
||||
{
|
||||
"tier": "premium"
|
||||
}
|
||||
```
|
||||
|
||||
### Delete subscription
|
||||
|
||||
```bash
|
||||
DELETE https://api.beehiiv.com/v2/publications/{publicationId}/subscriptions/{subscriptionId}
|
||||
```
|
||||
|
||||
### List posts
|
||||
|
||||
```bash
|
||||
GET https://api.beehiiv.com/v2/publications/{publicationId}/posts?limit=10&status=confirmed
|
||||
```
|
||||
|
||||
### Create post (Enterprise only)
|
||||
|
||||
```bash
|
||||
POST https://api.beehiiv.com/v2/publications/{publicationId}/posts
|
||||
|
||||
{
|
||||
"title": "Weekly Update",
|
||||
"subtitle": "What happened this week",
|
||||
"content": "<p>Hello subscribers...</p>",
|
||||
"status": "draft"
|
||||
}
|
||||
```
|
||||
|
||||
### List segments
|
||||
|
||||
```bash
|
||||
GET https://api.beehiiv.com/v2/publications/{publicationId}/segments
|
||||
```
|
||||
|
||||
### List automations
|
||||
|
||||
```bash
|
||||
GET https://api.beehiiv.com/v2/publications/{publicationId}/automations
|
||||
```
|
||||
|
||||
### Get referral program
|
||||
|
||||
```bash
|
||||
GET https://api.beehiiv.com/v2/publications/{publicationId}/referral_program
|
||||
```
|
||||
|
||||
## API Pattern
|
||||
|
||||
All endpoints are scoped to a publication. The publication ID is a required path parameter for most operations. Responses use cursor-based pagination with a `cursor` parameter for fetching subsequent pages.
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Subscription Fields
|
||||
- `status` - validating, invalid, pending, active, inactive
|
||||
- `tier` - free or premium
|
||||
- `created` - Subscription creation timestamp
|
||||
- `utm_source`, `utm_medium`, `utm_campaign` - Acquisition tracking
|
||||
- `referral_code` - Unique referral code for subscriber
|
||||
|
||||
### Post Fields
|
||||
- `status` - draft, confirmed (scheduled), archived
|
||||
- `publish_date` - When the post was/will be published
|
||||
- `stats` - Open rate, click rate, subscriber count (with expand)
|
||||
|
||||
## Parameters
|
||||
|
||||
### Common Query Parameters
|
||||
- `limit` - Results per page (1-100, default 10)
|
||||
- `cursor` - Cursor for next page of results
|
||||
- `expand[]` - Include additional data: stats, custom_fields, referrals
|
||||
- `status` - Filter by subscription/post status
|
||||
- `tier` - Filter by subscription tier (free, premium)
|
||||
|
||||
## When to Use
|
||||
|
||||
- Managing newsletter subscribers programmatically
|
||||
- Syncing subscribers from external signup forms or landing pages
|
||||
- Building referral program integrations
|
||||
- Automating post creation and publishing workflows
|
||||
- Tracking subscriber growth and engagement metrics
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- API rate limits apply per API key
|
||||
- Use cursor-based pagination for efficient data retrieval
|
||||
- Batch operations not available; iterate with individual requests
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- email-sequence
|
||||
- newsletter-growth
|
||||
- referral-program
|
||||
- content-strategy
|
||||
@@ -0,0 +1,268 @@
|
||||
# Brevo
|
||||
|
||||
All-in-one marketing platform (formerly Sendinblue) for email, SMS, and WhatsApp with contacts, campaigns, and transactional messaging.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API v3 for contacts, campaigns, transactional email/SMS |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [brevo.js](../clis/brevo.js) |
|
||||
| SDK | ✓ | Node.js, Python, PHP, Ruby, Java, C#, Go |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Key
|
||||
- **Header**: `api-key: {api_key}`
|
||||
- **Get key**: SMTP & API settings at https://app.brevo.com/settings/keys/api
|
||||
- **Note**: API key is only shown once on creation; store securely. Formerly used `api.sendinblue.com` base URL.
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Get account info
|
||||
|
||||
```bash
|
||||
GET https://api.brevo.com/v3/account
|
||||
```
|
||||
|
||||
### List contacts
|
||||
|
||||
```bash
|
||||
GET https://api.brevo.com/v3/contacts?limit=50&offset=0
|
||||
```
|
||||
|
||||
### Get contact by email
|
||||
|
||||
```bash
|
||||
GET https://api.brevo.com/v3/contacts/user@example.com
|
||||
```
|
||||
|
||||
### Create contact
|
||||
|
||||
```bash
|
||||
POST https://api.brevo.com/v3/contacts
|
||||
|
||||
{
|
||||
"email": "user@example.com",
|
||||
"attributes": {
|
||||
"FIRSTNAME": "Jane",
|
||||
"LASTNAME": "Doe"
|
||||
},
|
||||
"listIds": [1, 2]
|
||||
}
|
||||
```
|
||||
|
||||
### Update contact
|
||||
|
||||
```bash
|
||||
PUT https://api.brevo.com/v3/contacts/user@example.com
|
||||
|
||||
{
|
||||
"attributes": {
|
||||
"FIRSTNAME": "Updated"
|
||||
},
|
||||
"listIds": [3]
|
||||
}
|
||||
```
|
||||
|
||||
### Delete contact
|
||||
|
||||
```bash
|
||||
DELETE https://api.brevo.com/v3/contacts/user@example.com
|
||||
```
|
||||
|
||||
### Import contacts
|
||||
|
||||
```bash
|
||||
POST https://api.brevo.com/v3/contacts/import
|
||||
|
||||
{
|
||||
"jsonBody": [
|
||||
{ "email": "user1@example.com" },
|
||||
{ "email": "user2@example.com" }
|
||||
],
|
||||
"listIds": [1]
|
||||
}
|
||||
```
|
||||
|
||||
### List contact lists
|
||||
|
||||
```bash
|
||||
GET https://api.brevo.com/v3/contacts/lists?limit=50&offset=0
|
||||
```
|
||||
|
||||
### Create list
|
||||
|
||||
```bash
|
||||
POST https://api.brevo.com/v3/contacts/lists
|
||||
|
||||
{
|
||||
"name": "Newsletter Subscribers",
|
||||
"folderId": 1
|
||||
}
|
||||
```
|
||||
|
||||
### Add contacts to list
|
||||
|
||||
```bash
|
||||
POST https://api.brevo.com/v3/contacts/lists/{listId}/contacts/add
|
||||
|
||||
{
|
||||
"emails": ["user1@example.com", "user2@example.com"]
|
||||
}
|
||||
```
|
||||
|
||||
### Remove contacts from list
|
||||
|
||||
```bash
|
||||
POST https://api.brevo.com/v3/contacts/lists/{listId}/contacts/remove
|
||||
|
||||
{
|
||||
"emails": ["user1@example.com"]
|
||||
}
|
||||
```
|
||||
|
||||
### Send transactional email
|
||||
|
||||
```bash
|
||||
POST https://api.brevo.com/v3/smtp/email
|
||||
|
||||
{
|
||||
"sender": {
|
||||
"name": "My App",
|
||||
"email": "noreply@example.com"
|
||||
},
|
||||
"to": [
|
||||
{ "email": "user@example.com", "name": "Jane Doe" }
|
||||
],
|
||||
"subject": "Order Confirmation",
|
||||
"htmlContent": "<html><body><p>Your order is confirmed.</p></body></html>"
|
||||
}
|
||||
```
|
||||
|
||||
### List email campaigns
|
||||
|
||||
```bash
|
||||
GET https://api.brevo.com/v3/emailCampaigns?limit=50&offset=0&type=classic&status=sent
|
||||
```
|
||||
|
||||
### Create email campaign
|
||||
|
||||
```bash
|
||||
POST https://api.brevo.com/v3/emailCampaigns
|
||||
|
||||
{
|
||||
"name": "January Newsletter",
|
||||
"subject": "Monthly Update",
|
||||
"sender": { "name": "My Brand", "email": "news@example.com" },
|
||||
"htmlContent": "<html><body><p>Newsletter content</p></body></html>",
|
||||
"recipients": { "listIds": [1, 2] }
|
||||
}
|
||||
```
|
||||
|
||||
### Send campaign immediately
|
||||
|
||||
```bash
|
||||
POST https://api.brevo.com/v3/emailCampaigns/{campaignId}/sendNow
|
||||
```
|
||||
|
||||
### Send test email for campaign
|
||||
|
||||
```bash
|
||||
POST https://api.brevo.com/v3/emailCampaigns/{campaignId}/sendTest
|
||||
|
||||
{
|
||||
"emailTo": ["test@example.com"]
|
||||
}
|
||||
```
|
||||
|
||||
### Send transactional SMS
|
||||
|
||||
```bash
|
||||
POST https://api.brevo.com/v3/transactionalSMS/sms
|
||||
|
||||
{
|
||||
"sender": "MyApp",
|
||||
"recipient": "+15551234567",
|
||||
"content": "Your verification code is 123456",
|
||||
"type": "transactional"
|
||||
}
|
||||
```
|
||||
|
||||
### List SMS campaigns
|
||||
|
||||
```bash
|
||||
GET https://api.brevo.com/v3/smsCampaigns?limit=50&offset=0
|
||||
```
|
||||
|
||||
### List senders
|
||||
|
||||
```bash
|
||||
GET https://api.brevo.com/v3/senders
|
||||
```
|
||||
|
||||
## API Pattern
|
||||
|
||||
Brevo uses standard REST with offset-based pagination (`limit` and `offset` parameters). Contact attributes use uppercase field names (FIRSTNAME, LASTNAME). Lists are nested under the contacts resource path. Transactional email uses the `/smtp/email` endpoint despite being REST-based.
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Contact Fields
|
||||
- `email` - Email address
|
||||
- `attributes` - Custom attributes (FIRSTNAME, LASTNAME, SMS, etc.)
|
||||
- `listIds` - Associated list IDs
|
||||
- `emailBlacklisted` - Email opt-out status
|
||||
- `smsBlacklisted` - SMS opt-out status
|
||||
- `statistics` - Engagement stats (with expand)
|
||||
|
||||
### Campaign Metrics
|
||||
- `sent` - Total sends
|
||||
- `delivered` - Successful deliveries
|
||||
- `openRate` - Open percentage
|
||||
- `clickRate` - Click percentage
|
||||
- `unsubscribed` - Unsubscribe count
|
||||
- `hardBounces`, `softBounces` - Bounce counts
|
||||
|
||||
### Transactional Email Response
|
||||
- `messageId` - Unique message identifier for tracking
|
||||
|
||||
## Parameters
|
||||
|
||||
### Contact Parameters
|
||||
- `email` - Contact email address
|
||||
- `attributes` - Key-value object of custom attributes
|
||||
- `listIds` - Array of list IDs to subscribe to
|
||||
- `unlinkListIds` - Array of list IDs to unsubscribe from
|
||||
|
||||
### Campaign Parameters
|
||||
- `name` - Campaign name
|
||||
- `subject` - Email subject line
|
||||
- `sender` - Object with `name` and `email`
|
||||
- `htmlContent` / `textContent` - Email body
|
||||
- `recipients` - Object with `listIds` array
|
||||
- `type` - classic or trigger
|
||||
|
||||
## When to Use
|
||||
|
||||
- Multi-channel marketing (email + SMS + WhatsApp)
|
||||
- Transactional email sending with tracking
|
||||
- Managing contacts and segmented lists
|
||||
- Creating and scheduling email campaigns
|
||||
- SMS notifications and marketing
|
||||
- Affordable all-in-one marketing automation
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- API rate limits depend on plan (free tier: limited sends/day)
|
||||
- Transactional email: varies by plan
|
||||
- Contact imports: batch processing with async status
|
||||
- Rate limit headers returned with responses
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- email-sequence
|
||||
- sms-marketing
|
||||
- transactional-email
|
||||
- lifecycle-marketing
|
||||
- contact-management
|
||||
@@ -0,0 +1,138 @@
|
||||
# Buffer
|
||||
|
||||
Social media scheduling, publishing, and analytics platform for managing multiple social profiles.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API v1 for profiles, updates, scheduling |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [buffer.js](../clis/buffer.js) |
|
||||
| SDK | - | No official SDK; legacy API still supported |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: OAuth 2.0 Bearer Token
|
||||
- **Header**: `Authorization: Bearer {access_token}`
|
||||
- **Get key**: Register app at https://buffer.com/developers/apps then complete OAuth flow
|
||||
- **Note**: Buffer is no longer accepting new developer app registrations; existing apps continue to work. New public API is in development at https://buffer.com/developer-api
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Get user info
|
||||
|
||||
```bash
|
||||
GET https://api.bufferapp.com/1/user.json
|
||||
|
||||
Authorization: Bearer {token}
|
||||
```
|
||||
|
||||
### List connected profiles
|
||||
|
||||
```bash
|
||||
GET https://api.bufferapp.com/1/profiles.json
|
||||
|
||||
Authorization: Bearer {token}
|
||||
```
|
||||
|
||||
### Get profile posting schedules
|
||||
|
||||
```bash
|
||||
GET https://api.bufferapp.com/1/profiles/{profile_id}/schedules.json
|
||||
```
|
||||
|
||||
### Create a scheduled post
|
||||
|
||||
```bash
|
||||
POST https://api.bufferapp.com/1/updates/create.json
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
|
||||
profile_ids[]={profile_id}&text=Your+post+content&scheduled_at=2026-03-01T10:00:00Z
|
||||
```
|
||||
|
||||
### Get pending updates for a profile
|
||||
|
||||
```bash
|
||||
GET https://api.bufferapp.com/1/profiles/{profile_id}/updates/pending.json?count=25
|
||||
```
|
||||
|
||||
### Get sent updates for a profile
|
||||
|
||||
```bash
|
||||
GET https://api.bufferapp.com/1/profiles/{profile_id}/updates/sent.json?count=25
|
||||
```
|
||||
|
||||
### Publish a pending update immediately
|
||||
|
||||
```bash
|
||||
POST https://api.bufferapp.com/1/updates/{update_id}/share.json
|
||||
```
|
||||
|
||||
### Delete an update
|
||||
|
||||
```bash
|
||||
POST https://api.bufferapp.com/1/updates/{update_id}/destroy.json
|
||||
```
|
||||
|
||||
### Reorder queue
|
||||
|
||||
```bash
|
||||
POST https://api.bufferapp.com/1/profiles/{profile_id}/updates/reorder.json
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
|
||||
order[]={update_id_1}&order[]={update_id_2}&order[]={update_id_3}
|
||||
```
|
||||
|
||||
## API Pattern
|
||||
|
||||
Buffer API v1 uses `.json` extensions on all endpoints. POST requests use `application/x-www-form-urlencoded` content type. Array parameters use bracket notation (e.g., `profile_ids[]`).
|
||||
|
||||
Responses include a `success` boolean for mutation operations.
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Profile Metrics
|
||||
- `followers` - Follower count for connected profile
|
||||
- `service` - Platform name (twitter, facebook, instagram, linkedin, etc.)
|
||||
|
||||
### Update Metrics (sent updates)
|
||||
- `statistics.reach` - Post reach
|
||||
- `statistics.clicks` - Link clicks
|
||||
- `statistics.retweets` - Retweets/shares
|
||||
- `statistics.favorites` - Likes/favorites
|
||||
- `statistics.mentions` - Mentions
|
||||
|
||||
## Parameters
|
||||
|
||||
### Update Create Parameters
|
||||
- `profile_ids[]` - Required. Array of profile IDs to post to
|
||||
- `text` - Required. Post content
|
||||
- `scheduled_at` - ISO 8601 timestamp for scheduling
|
||||
- `now` - Set to `true` to publish immediately
|
||||
- `top` - Set to `true` to add to top of queue
|
||||
- `shorten` - Set to `true` to auto-shorten links
|
||||
- `media[photo]` - URL to photo attachment
|
||||
- `media[thumbnail]` - URL to thumbnail
|
||||
- `media[link]` - URL for link attachment
|
||||
|
||||
## When to Use
|
||||
|
||||
- Scheduling social media posts across multiple platforms
|
||||
- Managing social media content queues
|
||||
- Analyzing post performance across channels
|
||||
- Automating social media publishing workflows
|
||||
- Coordinating team social media activity
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- 60 authenticated requests per user per minute
|
||||
- Exceeding returns HTTP 429
|
||||
- Higher limits available by contacting hello@buffer.com
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- social-media-calendar
|
||||
- content-repurposing
|
||||
- social-proof
|
||||
- launch-sequence
|
||||
@@ -0,0 +1,161 @@
|
||||
# Calendly
|
||||
|
||||
Scheduling and booking platform API for managing event types, scheduled events, invitees, and availability.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API v2 - event types, scheduled events, invitees, availability |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [calendly.js](../clis/calendly.js) |
|
||||
| SDK | ✓ | No official SDK; community libraries available |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Bearer Token (Personal Access Token or OAuth 2.0)
|
||||
- **Header**: `Authorization: Bearer {token}`
|
||||
- **Get key**: https://calendly.com/integrations/api_webhooks (Personal Access Token)
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Get current user
|
||||
|
||||
```bash
|
||||
GET https://api.calendly.com/users/me
|
||||
```
|
||||
|
||||
### List event types
|
||||
|
||||
```bash
|
||||
GET https://api.calendly.com/event_types?user={user_uri}
|
||||
```
|
||||
|
||||
### List scheduled events
|
||||
|
||||
```bash
|
||||
GET https://api.calendly.com/scheduled_events?user={user_uri}&min_start_time=2024-01-01T00:00:00Z&max_start_time=2024-12-31T23:59:59Z&status=active
|
||||
```
|
||||
|
||||
### Get a scheduled event
|
||||
|
||||
```bash
|
||||
GET https://api.calendly.com/scheduled_events/{event_uuid}
|
||||
```
|
||||
|
||||
### List invitees for an event
|
||||
|
||||
```bash
|
||||
GET https://api.calendly.com/scheduled_events/{event_uuid}/invitees
|
||||
```
|
||||
|
||||
### Cancel a scheduled event
|
||||
|
||||
```bash
|
||||
POST https://api.calendly.com/scheduled_events/{event_uuid}/cancellation
|
||||
|
||||
{
|
||||
"reason": "Cancellation reason"
|
||||
}
|
||||
```
|
||||
|
||||
### Get available times
|
||||
|
||||
```bash
|
||||
GET https://api.calendly.com/event_type_available_times?event_type={event_type_uri}&start_time=2024-01-20T00:00:00Z&end_time=2024-01-27T00:00:00Z
|
||||
```
|
||||
|
||||
### Get user busy times
|
||||
|
||||
```bash
|
||||
GET https://api.calendly.com/user_busy_times?user={user_uri}&start_time=2024-01-20T00:00:00Z&end_time=2024-01-27T00:00:00Z
|
||||
```
|
||||
|
||||
### List organization members
|
||||
|
||||
```bash
|
||||
GET https://api.calendly.com/organization_memberships?organization={organization_uri}
|
||||
```
|
||||
|
||||
### Create webhook subscription
|
||||
|
||||
```bash
|
||||
POST https://api.calendly.com/webhook_subscriptions
|
||||
|
||||
{
|
||||
"url": "https://example.com/webhook",
|
||||
"events": ["invitee.created", "invitee.canceled"],
|
||||
"organization": "{organization_uri}",
|
||||
"scope": "organization"
|
||||
}
|
||||
```
|
||||
|
||||
### List webhook subscriptions
|
||||
|
||||
```bash
|
||||
GET https://api.calendly.com/webhook_subscriptions?organization={organization_uri}&scope=organization
|
||||
```
|
||||
|
||||
### Delete webhook subscription
|
||||
|
||||
```bash
|
||||
DELETE https://api.calendly.com/webhook_subscriptions/{webhook_uuid}
|
||||
```
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Scheduled Event Data
|
||||
- `uri` - Unique event URI
|
||||
- `name` - Event type name
|
||||
- `status` - Event status (active, canceled)
|
||||
- `start_time` / `end_time` - Event timing
|
||||
- `event_type` - URI of the event type
|
||||
- `location` - Meeting location details
|
||||
- `invitees_counter` - Count of invitees (active, limit, total)
|
||||
|
||||
### Invitee Data
|
||||
- `name` - Invitee full name
|
||||
- `email` - Invitee email
|
||||
- `status` - active or canceled
|
||||
- `questions_and_answers` - Custom question responses
|
||||
- `tracking` - UTM parameters
|
||||
- `created_at` / `updated_at` - Timestamps
|
||||
|
||||
## Parameters
|
||||
|
||||
### List Scheduled Events
|
||||
- `user` - User URI (required)
|
||||
- `min_start_time` / `max_start_time` - Date range filter (ISO 8601)
|
||||
- `status` - Filter by status (active, canceled)
|
||||
- `count` - Number of results (default 20, max 100)
|
||||
- `page_token` - Pagination token
|
||||
- `sort` - Sort order (start_time:asc or start_time:desc)
|
||||
|
||||
### List Event Types
|
||||
- `user` - User URI
|
||||
- `organization` - Organization URI
|
||||
- `active` - Filter active/inactive
|
||||
- `count` - Results per page
|
||||
- `sort` - Sort order
|
||||
|
||||
## When to Use
|
||||
|
||||
- Retrieving scheduled meeting data for CRM sync
|
||||
- Monitoring booking activity and conversion rates
|
||||
- Automating follow-up workflows after meetings
|
||||
- Checking availability before suggesting meeting times
|
||||
- Tracking meeting cancellations and no-shows
|
||||
- Building custom booking interfaces
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Not officially documented; implement retry logic with exponential backoff
|
||||
- Use conservative request rates (avoid bursting)
|
||||
- Monitor for HTTP 429 responses
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- lead-generation
|
||||
- sales-automation
|
||||
- customer-onboarding
|
||||
- appointment-scheduling
|
||||
@@ -0,0 +1,142 @@
|
||||
# Clearbit (HubSpot Breeze Intelligence)
|
||||
|
||||
Company and person data enrichment API for converting leads with 100+ firmographic and technographic attributes.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Person, Company, Combined Enrichment, Reveal, Name to Domain, Prospector |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [clearbit.js](../clis/clearbit.js) |
|
||||
| SDK | ✓ | Node, Ruby, Python, PHP |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Bearer Token (or Basic Auth with API key as username)
|
||||
- **Header**: `Authorization: Bearer {api_key}`
|
||||
- **Get key**: https://dashboard.clearbit.com/api
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Person Enrichment (by email)
|
||||
|
||||
```bash
|
||||
GET https://person.clearbit.com/v2/people/find?email=alex@clearbit.com
|
||||
```
|
||||
|
||||
Returns 100+ attributes: name, title, company, location, social profiles, employment history.
|
||||
|
||||
### Company Enrichment (by domain)
|
||||
|
||||
```bash
|
||||
GET https://company.clearbit.com/v2/companies/find?domain=clearbit.com
|
||||
```
|
||||
|
||||
Returns firmographics: industry, size, revenue, tech stack, location, funding.
|
||||
|
||||
### Combined Enrichment (person + company)
|
||||
|
||||
```bash
|
||||
GET https://person.clearbit.com/v2/combined/find?email=alex@clearbit.com
|
||||
```
|
||||
|
||||
Returns both person and company data in a single request.
|
||||
|
||||
### Reveal (IP to company)
|
||||
|
||||
```bash
|
||||
GET https://reveal.clearbit.com/v1/companies/find?ip=104.132.0.0
|
||||
```
|
||||
|
||||
Identifies the company behind a website visitor by IP address.
|
||||
|
||||
### Name to Domain
|
||||
|
||||
```bash
|
||||
GET https://company.clearbit.com/v1/domains/find?name=Clearbit
|
||||
```
|
||||
|
||||
Converts a company name to its domain.
|
||||
|
||||
### Prospector (find employees)
|
||||
|
||||
```bash
|
||||
GET https://prospector.clearbit.com/v1/people/search?domain=clearbit.com&role=sales&seniority=executive
|
||||
```
|
||||
|
||||
Finds employees at a company filtered by role, seniority, title.
|
||||
|
||||
## API Pattern
|
||||
|
||||
Clearbit uses separate subdomains per API:
|
||||
- `person.clearbit.com` - Person data
|
||||
- `company.clearbit.com` - Company data, Name to Domain
|
||||
- `person-stream.clearbit.com` - Streaming person lookup (blocking, up to 60s)
|
||||
- `company-stream.clearbit.com` - Streaming company lookup (blocking, up to 60s)
|
||||
- `reveal.clearbit.com` - IP to company
|
||||
- `prospector.clearbit.com` - Employee search
|
||||
|
||||
Standard endpoints return `202 Accepted` if data is being processed (use webhooks). Stream endpoints block until data is ready.
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Person Attributes
|
||||
- `name.fullName` - Full name
|
||||
- `title` - Job title
|
||||
- `role` - Job role (sales, engineering, etc.)
|
||||
- `seniority` - Seniority level
|
||||
- `employment.name` - Company name
|
||||
- `linkedin.handle` - LinkedIn profile
|
||||
|
||||
### Company Attributes
|
||||
- `name` - Company name
|
||||
- `domain` - Website domain
|
||||
- `category.industry` - Industry
|
||||
- `metrics.employees` - Employee count
|
||||
- `metrics.estimatedAnnualRevenue` - Revenue range
|
||||
- `tech` - Technology stack array
|
||||
- `metrics.raised` - Total funding raised
|
||||
|
||||
## Parameters
|
||||
|
||||
### Person Enrichment
|
||||
- `email` (required) - Email address to look up
|
||||
- `webhook_url` - URL for async results
|
||||
- `subscribe` - Subscribe to future changes
|
||||
|
||||
### Company Enrichment
|
||||
- `domain` (required) - Company domain to look up
|
||||
- `webhook_url` - URL for async results
|
||||
|
||||
### Prospector
|
||||
- `domain` (required) - Company domain
|
||||
- `role` - Job role filter (sales, engineering, marketing, etc.)
|
||||
- `seniority` - Seniority filter (executive, director, manager, etc.)
|
||||
- `title` - Exact title filter
|
||||
- `page` - Page number (default: 1)
|
||||
- `page_size` - Results per page (default: 5, max: 20)
|
||||
|
||||
## When to Use
|
||||
|
||||
- Lead scoring and qualification based on firmographic data
|
||||
- Enriching CRM contacts with company and person data
|
||||
- De-anonymizing website visitors with Reveal
|
||||
- Building prospect lists with Prospector
|
||||
- Personalizing marketing based on company attributes
|
||||
- Routing leads based on company size, industry, or tech stack
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Enrichment: 600 requests/minute
|
||||
- Prospector: 100 requests/minute
|
||||
- Reveal: 600 requests/minute
|
||||
- Responses include `X-RateLimit-Limit` and `X-RateLimit-Remaining` headers
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- lead-scoring
|
||||
- personalization
|
||||
- abm-strategy
|
||||
- lead-enrichment
|
||||
- competitor-alternatives
|
||||
@@ -0,0 +1,182 @@
|
||||
# Demio
|
||||
|
||||
Webinar platform for hosting live, automated, and on-demand webinars with built-in registration and attendee tracking.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Events, Registration, Participants, Sessions |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [demio.js](../clis/demio.js) |
|
||||
| SDK | ✓ | PHP (official), Ruby (community) |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Key + API Secret
|
||||
- **Headers**: `Api-Key: {key}` and `Api-Secret: {secret}`
|
||||
- **Get credentials**: Account Settings > API (Owner access required)
|
||||
- **Docs**: https://publicdemioapi.docs.apiary.io/
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Ping (health check)
|
||||
|
||||
```bash
|
||||
GET https://my.demio.com/api/v1/ping
|
||||
|
||||
Headers:
|
||||
Api-Key: {API_KEY}
|
||||
Api-Secret: {API_SECRET}
|
||||
```
|
||||
|
||||
### List all events
|
||||
|
||||
```bash
|
||||
GET https://my.demio.com/api/v1/events
|
||||
|
||||
Headers:
|
||||
Api-Key: {API_KEY}
|
||||
Api-Secret: {API_SECRET}
|
||||
```
|
||||
|
||||
### List events by type
|
||||
|
||||
```bash
|
||||
GET https://my.demio.com/api/v1/events?type=upcoming
|
||||
|
||||
Headers:
|
||||
Api-Key: {API_KEY}
|
||||
Api-Secret: {API_SECRET}
|
||||
```
|
||||
|
||||
### Get a specific event
|
||||
|
||||
```bash
|
||||
GET https://my.demio.com/api/v1/event/{event_id}
|
||||
|
||||
Headers:
|
||||
Api-Key: {API_KEY}
|
||||
Api-Secret: {API_SECRET}
|
||||
```
|
||||
|
||||
### Get event date details
|
||||
|
||||
```bash
|
||||
GET https://my.demio.com/api/v1/event/{event_id}/date/{date_id}
|
||||
|
||||
Headers:
|
||||
Api-Key: {API_KEY}
|
||||
Api-Secret: {API_SECRET}
|
||||
```
|
||||
|
||||
### Register attendee for event
|
||||
|
||||
```bash
|
||||
POST https://my.demio.com/api/v1/event/register
|
||||
|
||||
Headers:
|
||||
Api-Key: {API_KEY}
|
||||
Api-Secret: {API_SECRET}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"id": 12345,
|
||||
"name": "Jane Doe",
|
||||
"email": "jane@example.com"
|
||||
}
|
||||
```
|
||||
|
||||
### Register attendee for specific date
|
||||
|
||||
```bash
|
||||
POST https://my.demio.com/api/v1/event/register
|
||||
|
||||
Headers:
|
||||
Api-Key: {API_KEY}
|
||||
Api-Secret: {API_SECRET}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"id": 12345,
|
||||
"date_id": 67890,
|
||||
"name": "Jane Doe",
|
||||
"email": "jane@example.com"
|
||||
}
|
||||
```
|
||||
|
||||
### Get participants for event date
|
||||
|
||||
```bash
|
||||
GET https://my.demio.com/api/v1/date/{date_id}/participants
|
||||
|
||||
Headers:
|
||||
Api-Key: {API_KEY}
|
||||
Api-Secret: {API_SECRET}
|
||||
```
|
||||
|
||||
## API Pattern
|
||||
|
||||
Demio uses a straightforward REST API:
|
||||
- All requests require both `Api-Key` and `Api-Secret` headers
|
||||
- Responses are JSON objects
|
||||
- Registration returns a `join_link` URL for the attendee
|
||||
- Events have multiple "dates" (sessions), each with a unique `date_id`
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Event Metrics
|
||||
- `id` - Event ID
|
||||
- `name` - Event name
|
||||
- `date_id` - Session/date identifier
|
||||
- `status` - Event status (upcoming, past, active)
|
||||
- `type` - Event type (live, automated, on-demand)
|
||||
- `registration_url` - Public registration page URL
|
||||
|
||||
### Participant Metrics
|
||||
- `name` - Participant name
|
||||
- `email` - Participant email
|
||||
- `status` - Attendance status (registered, attended, missed)
|
||||
- `attended_minutes` - Duration of attendance
|
||||
- `join_link` - Unique join URL for the participant
|
||||
|
||||
## Parameters
|
||||
|
||||
### Event List Filters
|
||||
- `type` - Filter by event type: `upcoming`, `past`, `all`
|
||||
|
||||
### Registration Fields
|
||||
- `id` - Event ID (required)
|
||||
- `name` - Registrant name (required)
|
||||
- `email` - Registrant email (required)
|
||||
- `date_id` - Specific session date ID (optional)
|
||||
- `ref_url` - Referral URL for tracking (optional)
|
||||
|
||||
### Custom Fields
|
||||
- Custom fields are supported via their UID (not display name)
|
||||
- Check your event settings for available custom field UIDs
|
||||
|
||||
## When to Use
|
||||
|
||||
- Automating webinar registration from landing pages or forms
|
||||
- Syncing webinar attendee data with CRM
|
||||
- Building custom registration flows for webinars
|
||||
- Tracking webinar attendance and engagement
|
||||
- Triggering follow-up sequences based on attendance status
|
||||
- Managing multiple webinar sessions programmatically
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- **180 requests per minute** (3 per second)
|
||||
- **Free Trial**: 100 API calls per day
|
||||
- **Paid Plans**: 5,000 API calls per day (reset at 00:00 UTC)
|
||||
- Contact Demio to request higher daily limits
|
||||
- Exceeding limits returns an error response
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- webinar-marketing
|
||||
- lead-generation
|
||||
- event-marketing
|
||||
- content-strategy
|
||||
- lifecycle-marketing
|
||||
@@ -0,0 +1,179 @@
|
||||
# G2
|
||||
|
||||
Software review and research platform for B2B buyers. Access reviews, product data, competitor comparisons, and buyer intent signals.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Reviews, Products, Reports, Categories, Tracking |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [g2.js](../clis/g2.js) |
|
||||
| SDK | - | REST API with JSON:API format |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Token
|
||||
- **Header**: `Authorization: Token token={YOUR_API_TOKEN}`
|
||||
- **Content-Type**: `application/vnd.api+json` (JSON:API)
|
||||
- **Get token**: G2 Admin Portal > Integrations > API Tokens
|
||||
- **Docs**: https://data.g2.com/api/docs
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List reviews (survey responses)
|
||||
|
||||
```bash
|
||||
GET https://data.g2.com/api/v1/survey-responses?page[size]=25&page[number]=1
|
||||
|
||||
Headers:
|
||||
Authorization: Token token={API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
```
|
||||
|
||||
### Get a specific review
|
||||
|
||||
```bash
|
||||
GET https://data.g2.com/api/v1/survey-responses/{id}
|
||||
|
||||
Headers:
|
||||
Authorization: Token token={API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
```
|
||||
|
||||
### Filter reviews by product
|
||||
|
||||
```bash
|
||||
GET https://data.g2.com/api/v1/survey-responses?filter[product_id]={product_id}&page[size]=25
|
||||
|
||||
Headers:
|
||||
Authorization: Token token={API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
```
|
||||
|
||||
### List products
|
||||
|
||||
```bash
|
||||
GET https://data.g2.com/api/v1/products?page[size]=25&page[number]=1
|
||||
|
||||
Headers:
|
||||
Authorization: Token token={API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
```
|
||||
|
||||
### Get a specific product
|
||||
|
||||
```bash
|
||||
GET https://data.g2.com/api/v1/products/{id}
|
||||
|
||||
Headers:
|
||||
Authorization: Token token={API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
```
|
||||
|
||||
### List reports
|
||||
|
||||
```bash
|
||||
GET https://data.g2.com/api/v1/reports?page[size]=25&page[number]=1
|
||||
|
||||
Headers:
|
||||
Authorization: Token token={API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
```
|
||||
|
||||
### List categories
|
||||
|
||||
```bash
|
||||
GET https://data.g2.com/api/v1/categories?page[size]=25&page[number]=1
|
||||
|
||||
Headers:
|
||||
Authorization: Token token={API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
```
|
||||
|
||||
### Get competitor comparisons
|
||||
|
||||
```bash
|
||||
GET https://data.g2.com/api/v1/competitor-comparisons?filter[product_id]={product_id}&page[size]=25
|
||||
|
||||
Headers:
|
||||
Authorization: Token token={API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
```
|
||||
|
||||
### Get tracking events (buyer intent)
|
||||
|
||||
```bash
|
||||
GET https://data.g2.com/api/v1/tracking-events?filter[start_date]=2025-01-01&filter[end_date]=2025-12-31
|
||||
|
||||
Headers:
|
||||
Authorization: Token token={API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
```
|
||||
|
||||
## API Pattern
|
||||
|
||||
G2 follows the JSON:API specification (https://jsonapi.org/):
|
||||
- Responses use `data`, `attributes`, `relationships`, `meta` structure
|
||||
- Pagination: `page[number]` and `page[size]` query parameters
|
||||
- Filtering: `filter[field]=value` query parameters
|
||||
- Reviews returned newest-first by default (10 per page default)
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Review Metrics
|
||||
- `star_rating` - Overall star rating
|
||||
- `title` - Review title
|
||||
- `comment_answers` - Structured review responses (likes, dislikes, recommendations)
|
||||
- `submitted_at` - Review submission date
|
||||
- `is_public` - Whether the review is publicly visible
|
||||
|
||||
### Product Metrics
|
||||
- `name` - Product name
|
||||
- `slug` - URL slug on G2
|
||||
- `avg_rating` - Average star rating
|
||||
- `total_reviews` - Total review count
|
||||
- `category` - G2 category placement
|
||||
|
||||
### Buyer Intent (Tracking)
|
||||
- `company_name` - Visiting company name
|
||||
- `page_visited` - G2 page URL visited
|
||||
- `visited_at` - Visit timestamp
|
||||
- `activity_type` - Type of buyer activity
|
||||
|
||||
## Parameters
|
||||
|
||||
### Pagination
|
||||
- `page[number]` - Page number (default: 1)
|
||||
- `page[size]` - Items per page (default: 10, max: 100)
|
||||
|
||||
### Review Filters
|
||||
- `filter[product_id]` - Filter by product ID
|
||||
- `filter[state]` - Filter by review state
|
||||
|
||||
### Tracking Filters
|
||||
- `filter[start_date]` - Start date (YYYY-MM-DD)
|
||||
- `filter[end_date]` - End date (YYYY-MM-DD)
|
||||
|
||||
## When to Use
|
||||
|
||||
- Monitoring and analyzing software product reviews
|
||||
- Tracking buyer intent signals from G2 visitors
|
||||
- Pulling competitor comparison data for positioning
|
||||
- Feeding review data into CRM or marketing automation
|
||||
- Building social proof content from G2 reviews
|
||||
- Tracking G2 category rankings and report placements
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- 10,000 requests per hour per API token
|
||||
- Implement exponential backoff on 429 responses
|
||||
- Cache results where possible to reduce API calls
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- competitor-alternatives
|
||||
- social-proof
|
||||
- reputation-management
|
||||
- customer-feedback
|
||||
- review-generation
|
||||
@@ -0,0 +1,147 @@
|
||||
# Hotjar
|
||||
|
||||
Behavior analytics platform with heatmaps, session recordings, and surveys for understanding user experience.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Surveys, Responses, Sites, Heatmaps, Recordings |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [hotjar.js](../clis/hotjar.js) |
|
||||
| SDK | ✓ | JavaScript tracking snippet, Identify API, Events API |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: OAuth 2.0 Client Credentials
|
||||
- **Token endpoint**: `POST https://api.hotjar.io/v1/oauth/token`
|
||||
- **Header**: `Authorization: Bearer {access_token}`
|
||||
- **Get credentials**: Hotjar Dashboard > Integrations > API
|
||||
- **Token expiry**: 3600 seconds (1 hour)
|
||||
|
||||
### Token Request
|
||||
|
||||
```bash
|
||||
POST https://api.hotjar.io/v1/oauth/token
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
|
||||
grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}
|
||||
```
|
||||
|
||||
### Token Response
|
||||
|
||||
```json
|
||||
{
|
||||
"access_token": "<token>",
|
||||
"token_type": "Bearer",
|
||||
"expires_in": 3600
|
||||
}
|
||||
```
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List Sites
|
||||
|
||||
```bash
|
||||
GET https://api.hotjar.io/v1/sites
|
||||
|
||||
Authorization: Bearer {access_token}
|
||||
```
|
||||
|
||||
### List Surveys
|
||||
|
||||
```bash
|
||||
GET https://api.hotjar.io/v1/sites/{site_id}/surveys
|
||||
|
||||
Authorization: Bearer {access_token}
|
||||
```
|
||||
|
||||
### Get Survey Responses
|
||||
|
||||
```bash
|
||||
GET https://api.hotjar.io/v1/sites/{site_id}/surveys/{survey_id}/responses?limit=100
|
||||
|
||||
Authorization: Bearer {access_token}
|
||||
```
|
||||
|
||||
Supports cursor-based pagination with `cursor` and `limit` parameters.
|
||||
|
||||
### List Heatmaps
|
||||
|
||||
```bash
|
||||
GET https://api.hotjar.io/v1/sites/{site_id}/heatmaps
|
||||
|
||||
Authorization: Bearer {access_token}
|
||||
```
|
||||
|
||||
### List Recordings
|
||||
|
||||
```bash
|
||||
GET https://api.hotjar.io/v1/sites/{site_id}/recordings
|
||||
|
||||
Authorization: Bearer {access_token}
|
||||
```
|
||||
|
||||
### List Forms
|
||||
|
||||
```bash
|
||||
GET https://api.hotjar.io/v1/sites/{site_id}/forms
|
||||
|
||||
Authorization: Bearer {access_token}
|
||||
```
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Survey Response Data
|
||||
- `response_id` - Unique response identifier
|
||||
- `answers` - Array of question/answer pairs
|
||||
- `created_at` - Response timestamp
|
||||
- `device_type` - Desktop, mobile, tablet
|
||||
|
||||
### Heatmap Data
|
||||
- `url` - Page URL
|
||||
- `click_count` - Total clicks tracked
|
||||
- `visitors` - Unique visitors
|
||||
- `created_at` - Heatmap creation date
|
||||
|
||||
### Recording Data
|
||||
- `recording_id` - Unique recording ID
|
||||
- `duration` - Session duration
|
||||
- `pages_visited` - Pages in session
|
||||
- `device` - Device information
|
||||
|
||||
## Parameters
|
||||
|
||||
### Survey Responses
|
||||
- `limit` - Results per page (default: 100)
|
||||
- `cursor` - Pagination cursor from previous response
|
||||
- `sort` - Sort order (default: created_at desc)
|
||||
|
||||
### Recordings
|
||||
- `limit` - Results per page
|
||||
- `cursor` - Pagination cursor
|
||||
- `date_from` - Start date filter
|
||||
- `date_to` - End date filter
|
||||
|
||||
## When to Use
|
||||
|
||||
- Analyzing user behavior patterns on landing pages
|
||||
- Collecting qualitative feedback via on-site surveys
|
||||
- Identifying UX issues through session recordings
|
||||
- Understanding scroll depth and engagement via heatmaps
|
||||
- Validating CRO hypotheses with user behavior data
|
||||
- Form abandonment analysis
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- 3000 requests/minute (50 per second)
|
||||
- Rate limited by source IP address
|
||||
- Cursor-based pagination for large result sets
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- page-cro
|
||||
- ab-test-setup
|
||||
- analytics-tracking
|
||||
- ux-audit
|
||||
- landing-page
|
||||
@@ -0,0 +1,292 @@
|
||||
# Intercom
|
||||
|
||||
Customer messaging and support platform API for managing contacts, conversations, messages, companies, articles, and tags.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API v2.11+ - contacts, conversations, messages, companies, articles, tags |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [intercom.js](../clis/intercom.js) |
|
||||
| SDK | ✓ | Node.js, Ruby, Python, PHP, Go |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Bearer Token (Access Token or OAuth 2.0)
|
||||
- **Header**: `Authorization: Bearer {token}`
|
||||
- **Version Header**: `Intercom-Version: 2.11`
|
||||
- **Get key**: Developer Hub at https://app.intercom.com/a/apps/_/developer-hub
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List contacts
|
||||
|
||||
```bash
|
||||
GET https://api.intercom.io/contacts
|
||||
```
|
||||
|
||||
### Get a contact
|
||||
|
||||
```bash
|
||||
GET https://api.intercom.io/contacts/{id}
|
||||
```
|
||||
|
||||
### Create a contact
|
||||
|
||||
```bash
|
||||
POST https://api.intercom.io/contacts
|
||||
|
||||
{
|
||||
"role": "user",
|
||||
"email": "user@example.com",
|
||||
"name": "Jane Doe",
|
||||
"custom_attributes": {
|
||||
"plan": "pro"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Update a contact
|
||||
|
||||
```bash
|
||||
PUT https://api.intercom.io/contacts/{id}
|
||||
|
||||
{
|
||||
"name": "Jane Smith",
|
||||
"custom_attributes": {
|
||||
"plan": "enterprise"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Search contacts
|
||||
|
||||
```bash
|
||||
POST https://api.intercom.io/contacts/search
|
||||
|
||||
{
|
||||
"query": {
|
||||
"field": "email",
|
||||
"operator": "=",
|
||||
"value": "user@example.com"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Delete a contact
|
||||
|
||||
```bash
|
||||
DELETE https://api.intercom.io/contacts/{id}
|
||||
```
|
||||
|
||||
### List conversations
|
||||
|
||||
```bash
|
||||
GET https://api.intercom.io/conversations
|
||||
```
|
||||
|
||||
### Get a conversation
|
||||
|
||||
```bash
|
||||
GET https://api.intercom.io/conversations/{id}
|
||||
```
|
||||
|
||||
### Search conversations
|
||||
|
||||
```bash
|
||||
POST https://api.intercom.io/conversations/search
|
||||
|
||||
{
|
||||
"query": {
|
||||
"field": "open",
|
||||
"operator": "=",
|
||||
"value": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Reply to a conversation
|
||||
|
||||
```bash
|
||||
POST https://api.intercom.io/conversations/{id}/reply
|
||||
|
||||
{
|
||||
"message_type": "comment",
|
||||
"type": "admin",
|
||||
"admin_id": "{admin_id}",
|
||||
"body": "Thanks for reaching out!"
|
||||
}
|
||||
```
|
||||
|
||||
### Create a message
|
||||
|
||||
```bash
|
||||
POST https://api.intercom.io/messages
|
||||
|
||||
{
|
||||
"message_type": "inapp",
|
||||
"body": "Welcome to our platform!",
|
||||
"from": {
|
||||
"type": "admin",
|
||||
"id": "{admin_id}"
|
||||
},
|
||||
"to": {
|
||||
"type": "user",
|
||||
"id": "{user_id}"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List companies
|
||||
|
||||
```bash
|
||||
GET https://api.intercom.io/companies
|
||||
```
|
||||
|
||||
### Create or update a company
|
||||
|
||||
```bash
|
||||
POST https://api.intercom.io/companies
|
||||
|
||||
{
|
||||
"company_id": "company_123",
|
||||
"name": "Acme Corp",
|
||||
"plan": "enterprise",
|
||||
"custom_attributes": {
|
||||
"industry": "Technology"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List tags
|
||||
|
||||
```bash
|
||||
GET https://api.intercom.io/tags
|
||||
```
|
||||
|
||||
### Create a tag
|
||||
|
||||
```bash
|
||||
POST https://api.intercom.io/tags
|
||||
|
||||
{
|
||||
"name": "VIP Customer"
|
||||
}
|
||||
```
|
||||
|
||||
### Tag a contact
|
||||
|
||||
```bash
|
||||
POST https://api.intercom.io/contacts/{contact_id}/tags
|
||||
|
||||
{
|
||||
"id": "{tag_id}"
|
||||
}
|
||||
```
|
||||
|
||||
### List articles
|
||||
|
||||
```bash
|
||||
GET https://api.intercom.io/articles
|
||||
```
|
||||
|
||||
### Create an article
|
||||
|
||||
```bash
|
||||
POST https://api.intercom.io/articles
|
||||
|
||||
{
|
||||
"title": "Getting Started Guide",
|
||||
"body": "<p>Welcome to our platform...</p>",
|
||||
"author_id": "{admin_id}",
|
||||
"state": "published"
|
||||
}
|
||||
```
|
||||
|
||||
### List admins
|
||||
|
||||
```bash
|
||||
GET https://api.intercom.io/admins
|
||||
```
|
||||
|
||||
### Submit events
|
||||
|
||||
```bash
|
||||
POST https://api.intercom.io/events
|
||||
|
||||
{
|
||||
"event_name": "purchased-item",
|
||||
"created_at": 1706140800,
|
||||
"user_id": "user_123",
|
||||
"metadata": {
|
||||
"item_name": "Pro Plan",
|
||||
"price": 99.00
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Contact Data
|
||||
- `id` - Unique contact identifier
|
||||
- `role` - user or lead
|
||||
- `email` - Contact email
|
||||
- `name` - Contact name
|
||||
- `created_at` / `updated_at` - Timestamps
|
||||
- `last_seen_at` - Last activity
|
||||
- `custom_attributes` - Custom data fields
|
||||
- `tags` - Applied tags
|
||||
- `companies` - Associated companies
|
||||
|
||||
### Conversation Data
|
||||
- `id` - Conversation identifier
|
||||
- `state` - open, closed, snoozed
|
||||
- `open` - Boolean open status
|
||||
- `read` - Read status
|
||||
- `priority` - Priority level
|
||||
- `statistics` - Response times, counts
|
||||
- `conversation_parts` - Message history
|
||||
|
||||
## Parameters
|
||||
|
||||
### List Contacts
|
||||
- `per_page` - Results per page (default 50, max 150)
|
||||
- `starting_after` - Pagination cursor
|
||||
|
||||
### List Conversations
|
||||
- `per_page` - Results per page (default 20, max 150)
|
||||
- `starting_after` - Pagination cursor
|
||||
|
||||
### Search (Contacts & Conversations)
|
||||
- `query.field` - Field to search
|
||||
- `query.operator` - Comparison operator (=, !=, >, <, ~, IN, NIN)
|
||||
- `query.value` - Search value
|
||||
- `pagination.per_page` - Results per page
|
||||
- `pagination.starting_after` - Cursor for next page
|
||||
- `sort.field` / `sort.order` - Sort configuration
|
||||
|
||||
## When to Use
|
||||
|
||||
- Managing customer contact records and segments
|
||||
- Automating customer messaging and onboarding
|
||||
- Monitoring and responding to support conversations
|
||||
- Tracking customer events and behavior
|
||||
- Building custom support workflows
|
||||
- Syncing customer data between platforms
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- **Default**: 10,000 API calls per minute per app
|
||||
- **Per workspace**: 25,000 API calls per minute
|
||||
- Distributed in 10-second windows (resets every 10 seconds)
|
||||
- Headers: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`
|
||||
- HTTP 429 returned when exceeded
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- customer-onboarding
|
||||
- customer-retention
|
||||
- lead-generation
|
||||
- customer-support
|
||||
- in-app-messaging
|
||||
@@ -0,0 +1,228 @@
|
||||
# Klaviyo
|
||||
|
||||
E-commerce email and SMS marketing platform with profiles, flows, campaigns, segments, and event tracking.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API with JSON:API spec, revision-versioned |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [klaviyo.js](../clis/klaviyo.js) |
|
||||
| SDK | ✓ | Python, Node.js, Ruby, PHP, Java, C# |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Private API Key
|
||||
- **Header**: `Authorization: Klaviyo-API-Key {private_api_key}`
|
||||
- **Revision Header**: `revision: 2024-10-15` (required on all requests)
|
||||
- **Get key**: Account Settings > API Keys at https://www.klaviyo.com/settings/account/api-keys
|
||||
- **Note**: Private keys are prefixed with `pk_`; public keys (6-char site ID) are for client-side only
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List profiles
|
||||
|
||||
```bash
|
||||
GET https://a.klaviyo.com/api/profiles/?page[size]=20
|
||||
|
||||
# Filter by email
|
||||
GET https://a.klaviyo.com/api/profiles/?filter=equals(email,"user@example.com")
|
||||
```
|
||||
|
||||
### Create profile
|
||||
|
||||
```bash
|
||||
POST https://a.klaviyo.com/api/profiles/
|
||||
|
||||
{
|
||||
"data": {
|
||||
"type": "profile",
|
||||
"attributes": {
|
||||
"email": "user@example.com",
|
||||
"first_name": "Jane",
|
||||
"last_name": "Doe",
|
||||
"phone_number": "+15551234567"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Update profile
|
||||
|
||||
```bash
|
||||
PATCH https://a.klaviyo.com/api/profiles/{profileId}/
|
||||
|
||||
{
|
||||
"data": {
|
||||
"type": "profile",
|
||||
"id": "{profileId}",
|
||||
"attributes": {
|
||||
"first_name": "Updated Name"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List all lists
|
||||
|
||||
```bash
|
||||
GET https://a.klaviyo.com/api/lists/
|
||||
```
|
||||
|
||||
### Create list
|
||||
|
||||
```bash
|
||||
POST https://a.klaviyo.com/api/lists/
|
||||
|
||||
{
|
||||
"data": {
|
||||
"type": "list",
|
||||
"attributes": {
|
||||
"name": "Newsletter Subscribers"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Add profiles to list
|
||||
|
||||
```bash
|
||||
POST https://a.klaviyo.com/api/lists/{listId}/relationships/profiles/
|
||||
|
||||
{
|
||||
"data": [
|
||||
{ "type": "profile", "id": "{profileId1}" },
|
||||
{ "type": "profile", "id": "{profileId2}" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Track event
|
||||
|
||||
```bash
|
||||
POST https://a.klaviyo.com/api/events/
|
||||
|
||||
{
|
||||
"data": {
|
||||
"type": "event",
|
||||
"attributes": {
|
||||
"metric": {
|
||||
"data": {
|
||||
"type": "metric",
|
||||
"attributes": { "name": "Placed Order" }
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"data": {
|
||||
"type": "profile",
|
||||
"attributes": { "email": "user@example.com" }
|
||||
}
|
||||
},
|
||||
"properties": {
|
||||
"value": 99.99,
|
||||
"items": ["Product A"]
|
||||
},
|
||||
"time": "2025-01-15T10:00:00Z"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List campaigns
|
||||
|
||||
```bash
|
||||
GET https://a.klaviyo.com/api/campaigns/?filter=equals(messages.channel,"email")
|
||||
```
|
||||
|
||||
### List flows
|
||||
|
||||
```bash
|
||||
GET https://a.klaviyo.com/api/flows/
|
||||
```
|
||||
|
||||
### Update flow status
|
||||
|
||||
```bash
|
||||
PATCH https://a.klaviyo.com/api/flows/{flowId}/
|
||||
|
||||
{
|
||||
"data": {
|
||||
"type": "flow",
|
||||
"id": "{flowId}",
|
||||
"attributes": {
|
||||
"status": "live"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List metrics
|
||||
|
||||
```bash
|
||||
GET https://a.klaviyo.com/api/metrics/
|
||||
```
|
||||
|
||||
### List segments
|
||||
|
||||
```bash
|
||||
GET https://a.klaviyo.com/api/segments/
|
||||
```
|
||||
|
||||
## API Pattern
|
||||
|
||||
Klaviyo uses the JSON:API specification. All request/response bodies use `{ "data": { "type": "...", "attributes": {...} } }` format. Relationships are managed via `/relationships/` sub-endpoints. The `revision` header is required on every request and determines API behavior version.
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Profile Fields
|
||||
- `email` - Email address
|
||||
- `phone_number` - Phone for SMS
|
||||
- `first_name`, `last_name` - Name fields
|
||||
- `properties` - Custom properties object
|
||||
- `subscriptions` - Email/SMS subscription status
|
||||
|
||||
### Event Fields
|
||||
- `metric` - The metric/event name
|
||||
- `properties` - Custom event properties
|
||||
- `time` - Event timestamp
|
||||
- `value` - Monetary value (for revenue tracking)
|
||||
|
||||
### Campaign/Flow Metrics
|
||||
- `send_count` - Number of sends
|
||||
- `open_rate` - Open percentage
|
||||
- `click_rate` - Click percentage
|
||||
- `revenue` - Attributed revenue
|
||||
|
||||
## Parameters
|
||||
|
||||
### Common Query Parameters
|
||||
- `page[size]` - Results per page (default 20, max 100)
|
||||
- `page[cursor]` - Cursor for pagination
|
||||
- `filter` - Filter expressions (e.g., `equals(email,"user@example.com")`)
|
||||
- `sort` - Sort field (prefix `-` for descending)
|
||||
- `include` - Include related resources
|
||||
- `fields[resource]` - Sparse fieldsets
|
||||
|
||||
## When to Use
|
||||
|
||||
- E-commerce email/SMS marketing automation
|
||||
- Syncing customer profiles from external systems
|
||||
- Tracking purchase events and customer behavior
|
||||
- Managing email flows and drip campaigns
|
||||
- Segmenting audiences for targeted campaigns
|
||||
- Reporting on campaign and flow performance
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Steady-state: 75 requests/second for most endpoints
|
||||
- Burst: up to 700 requests in 1 minute
|
||||
- Rate limit headers: `RateLimit-Limit`, `RateLimit-Remaining`, `RateLimit-Reset`
|
||||
- Lower limits on some write endpoints (profiles, events)
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- email-sequence
|
||||
- ecommerce-email
|
||||
- lifecycle-marketing
|
||||
- customer-segmentation
|
||||
@@ -0,0 +1,313 @@
|
||||
# Livestorm
|
||||
|
||||
Video engagement platform for webinars, virtual events, and online meetings with built-in analytics and integrations.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Events, Sessions, People, Recordings, Webhooks |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [livestorm.js](../clis/livestorm.js) |
|
||||
| SDK | - | REST API with JSON:API format |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Token
|
||||
- **Header**: `Authorization: {API_TOKEN}` (no prefix)
|
||||
- **Content-Type**: `application/vnd.api+json` (JSON:API)
|
||||
- **Scopes**: Identity, Events, Admin, Webhooks
|
||||
- **Get token**: Account Settings > Integrations > Public API
|
||||
- **Docs**: https://developers.livestorm.co/
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Ping (test authentication)
|
||||
|
||||
```bash
|
||||
GET https://api.livestorm.co/v1/ping
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Accept: application/vnd.api+json
|
||||
```
|
||||
|
||||
### List events
|
||||
|
||||
```bash
|
||||
GET https://api.livestorm.co/v1/events?page[number]=1&page[size]=25
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Accept: application/vnd.api+json
|
||||
```
|
||||
|
||||
### Create an event
|
||||
|
||||
```bash
|
||||
POST https://api.livestorm.co/v1/events
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
|
||||
{
|
||||
"data": {
|
||||
"type": "events",
|
||||
"attributes": {
|
||||
"title": "Product Demo Webinar",
|
||||
"slug": "product-demo-webinar",
|
||||
"estimated_duration": 60
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Get event details
|
||||
|
||||
```bash
|
||||
GET https://api.livestorm.co/v1/events/{event_id}
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Accept: application/vnd.api+json
|
||||
```
|
||||
|
||||
### Update an event
|
||||
|
||||
```bash
|
||||
PATCH https://api.livestorm.co/v1/events/{event_id}
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
|
||||
{
|
||||
"data": {
|
||||
"type": "events",
|
||||
"id": "{event_id}",
|
||||
"attributes": {
|
||||
"title": "Updated Webinar Title"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List sessions
|
||||
|
||||
```bash
|
||||
GET https://api.livestorm.co/v1/sessions?page[number]=1&page[size]=25
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Accept: application/vnd.api+json
|
||||
```
|
||||
|
||||
### Create a session for an event
|
||||
|
||||
```bash
|
||||
POST https://api.livestorm.co/v1/events/{event_id}/sessions
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
|
||||
{
|
||||
"data": {
|
||||
"type": "sessions",
|
||||
"attributes": {
|
||||
"estimated_started_at": "2025-06-15T14:00:00.000Z",
|
||||
"timezone": "America/New_York"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Register someone for a session
|
||||
|
||||
```bash
|
||||
POST https://api.livestorm.co/v1/sessions/{session_id}/people
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
|
||||
{
|
||||
"data": {
|
||||
"type": "people",
|
||||
"attributes": {
|
||||
"fields": {
|
||||
"email": "attendee@example.com",
|
||||
"first_name": "Jane",
|
||||
"last_name": "Doe"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List session participants
|
||||
|
||||
```bash
|
||||
GET https://api.livestorm.co/v1/sessions/{session_id}/people?page[number]=1&page[size]=25
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Accept: application/vnd.api+json
|
||||
```
|
||||
|
||||
### Remove a registrant from session
|
||||
|
||||
```bash
|
||||
DELETE https://api.livestorm.co/v1/sessions/{session_id}/people?filter[email]=attendee@example.com
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
```
|
||||
|
||||
### List session chat messages
|
||||
|
||||
```bash
|
||||
GET https://api.livestorm.co/v1/sessions/{session_id}/chat-messages
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Accept: application/vnd.api+json
|
||||
```
|
||||
|
||||
### List session questions
|
||||
|
||||
```bash
|
||||
GET https://api.livestorm.co/v1/sessions/{session_id}/questions
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Accept: application/vnd.api+json
|
||||
```
|
||||
|
||||
### Get session recordings
|
||||
|
||||
```bash
|
||||
GET https://api.livestorm.co/v1/sessions/{session_id}/recordings
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Accept: application/vnd.api+json
|
||||
```
|
||||
|
||||
### List all people
|
||||
|
||||
```bash
|
||||
GET https://api.livestorm.co/v1/people?page[number]=1&page[size]=25
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Accept: application/vnd.api+json
|
||||
```
|
||||
|
||||
### Create a webhook
|
||||
|
||||
```bash
|
||||
POST https://api.livestorm.co/v1/webhooks
|
||||
|
||||
Headers:
|
||||
Authorization: {API_TOKEN}
|
||||
Content-Type: application/vnd.api+json
|
||||
|
||||
{
|
||||
"data": {
|
||||
"type": "webhooks",
|
||||
"attributes": {
|
||||
"target_url": "https://example.com/webhook",
|
||||
"event_name": "attendance"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## API Pattern
|
||||
|
||||
Livestorm follows the JSON:API specification:
|
||||
- All responses use `data`, `attributes`, `relationships` structure
|
||||
- Pagination: `page[number]` and `page[size]` query parameters
|
||||
- Filtering: `filter[field]=value` query parameters
|
||||
- Events contain multiple Sessions; Sessions contain People
|
||||
- ISO 8601 timestamps throughout
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Event Metrics
|
||||
- `title` - Event title
|
||||
- `slug` - URL-friendly identifier
|
||||
- `estimated_duration` - Duration in minutes
|
||||
- `registration_page_enabled` - Registration page status
|
||||
- `everyone_can_speak` - Whether all attendees can speak
|
||||
|
||||
### Session Metrics
|
||||
- `status` - Session status (upcoming, live, past)
|
||||
- `estimated_started_at` - Scheduled start time
|
||||
- `started_at` - Actual start time
|
||||
- `ended_at` - Actual end time
|
||||
- `timezone` - Session timezone
|
||||
- `attendees_count` - Number of attendees
|
||||
- `registrants_count` - Number of registrants
|
||||
|
||||
### People Metrics
|
||||
- `email` - Contact email
|
||||
- `first_name` / `last_name` - Contact name
|
||||
- `registrant_detail` - Registration metadata
|
||||
- `attendance_rate` - Attendance percentage
|
||||
- `attended_at` - Join timestamp
|
||||
- `left_at` - Leave timestamp
|
||||
|
||||
## Parameters
|
||||
|
||||
### Pagination
|
||||
- `page[number]` - Page number (default: 1)
|
||||
- `page[size]` - Items per page (default: 25)
|
||||
|
||||
### Event Attributes
|
||||
- `title` - Event title (required for create)
|
||||
- `slug` - URL slug
|
||||
- `description` - Event description
|
||||
- `estimated_duration` - Duration in minutes
|
||||
|
||||
### Session Attributes
|
||||
- `estimated_started_at` - ISO 8601 start time
|
||||
- `timezone` - IANA timezone string
|
||||
|
||||
### Registration Fields
|
||||
- `email` - Registrant email (required)
|
||||
- `first_name` - First name
|
||||
- `last_name` - Last name
|
||||
|
||||
### Webhook Events
|
||||
- `attendance` - Triggered on session attendance
|
||||
- `registration` - Triggered on new registration
|
||||
- `unregistration` - Triggered on unregistration
|
||||
|
||||
## When to Use
|
||||
|
||||
- Hosting product demos and marketing webinars
|
||||
- Automated webinar registration and attendee management
|
||||
- Tracking webinar engagement and attendance rates
|
||||
- Retrieving session recordings for content repurposing
|
||||
- Building custom registration pages with API-driven registration
|
||||
- Syncing webinar data with CRM and marketing automation
|
||||
- Monitoring session Q&A and chat for follow-up
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- **10,000 API calls per 30-day period** (organization-wide)
|
||||
- Rate limits shared across all API tokens in the organization
|
||||
- Plan accordingly for high-volume operations
|
||||
- Use webhooks instead of polling to conserve quota
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- webinar-marketing
|
||||
- event-marketing
|
||||
- lead-generation
|
||||
- content-strategy
|
||||
- lifecycle-marketing
|
||||
- customer-engagement
|
||||
@@ -0,0 +1,229 @@
|
||||
# OneSignal
|
||||
|
||||
Push notification, email, SMS, and in-app messaging platform for customer engagement at scale.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Notifications, Users, Segments, Templates, Apps |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [onesignal.js](../clis/onesignal.js) |
|
||||
| SDK | ✓ | JavaScript, Node.js, Python, Java, PHP, Ruby, Go, .NET |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: REST API Key (Basic Auth)
|
||||
- **Header**: `Authorization: Basic {REST_API_KEY}`
|
||||
- **App ID**: Required as `app_id` in request bodies
|
||||
- **Get credentials**: Dashboard > Settings > Keys & IDs
|
||||
- **Security**: HTTPS required, TLS 1.2+ on port 443
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Send push notification to segment
|
||||
|
||||
```bash
|
||||
POST https://api.onesignal.com/api/v1/notifications
|
||||
|
||||
Headers:
|
||||
Authorization: Basic {REST_API_KEY}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"app_id": "YOUR_APP_ID",
|
||||
"included_segments": ["Subscribed Users"],
|
||||
"headings": { "en": "New Feature!" },
|
||||
"contents": { "en": "Check out our latest update." },
|
||||
"url": "https://example.com/feature"
|
||||
}
|
||||
```
|
||||
|
||||
### Send notification to specific users
|
||||
|
||||
```bash
|
||||
POST https://api.onesignal.com/api/v1/notifications
|
||||
|
||||
Headers:
|
||||
Authorization: Basic {REST_API_KEY}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"app_id": "YOUR_APP_ID",
|
||||
"include_aliases": { "external_id": ["user-123", "user-456"] },
|
||||
"target_channel": "push",
|
||||
"contents": { "en": "You have a new message." }
|
||||
}
|
||||
```
|
||||
|
||||
### Schedule a notification
|
||||
|
||||
```bash
|
||||
POST https://api.onesignal.com/api/v1/notifications
|
||||
|
||||
Headers:
|
||||
Authorization: Basic {REST_API_KEY}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"app_id": "YOUR_APP_ID",
|
||||
"included_segments": ["Subscribed Users"],
|
||||
"contents": { "en": "Scheduled notification" },
|
||||
"send_after": "2025-12-01 12:00:00 GMT-0500"
|
||||
}
|
||||
```
|
||||
|
||||
### List notifications
|
||||
|
||||
```bash
|
||||
GET https://api.onesignal.com/api/v1/notifications?app_id={APP_ID}&limit=50&offset=0
|
||||
|
||||
Headers:
|
||||
Authorization: Basic {REST_API_KEY}
|
||||
```
|
||||
|
||||
### View a notification
|
||||
|
||||
```bash
|
||||
GET https://api.onesignal.com/api/v1/notifications/{notification_id}?app_id={APP_ID}
|
||||
|
||||
Headers:
|
||||
Authorization: Basic {REST_API_KEY}
|
||||
```
|
||||
|
||||
### Cancel a scheduled notification
|
||||
|
||||
```bash
|
||||
DELETE https://api.onesignal.com/api/v1/notifications/{notification_id}?app_id={APP_ID}
|
||||
|
||||
Headers:
|
||||
Authorization: Basic {REST_API_KEY}
|
||||
```
|
||||
|
||||
### List segments
|
||||
|
||||
```bash
|
||||
GET https://api.onesignal.com/api/v1/apps/{APP_ID}/segments
|
||||
|
||||
Headers:
|
||||
Authorization: Basic {REST_API_KEY}
|
||||
```
|
||||
|
||||
### Create a segment
|
||||
|
||||
```bash
|
||||
POST https://api.onesignal.com/api/v1/apps/{APP_ID}/segments
|
||||
|
||||
Headers:
|
||||
Authorization: Basic {REST_API_KEY}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"name": "Active Users",
|
||||
"filters": [
|
||||
{ "field": "session_count", "relation": ">", "value": "5" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Get user by external ID
|
||||
|
||||
```bash
|
||||
GET https://api.onesignal.com/api/v1/apps/{APP_ID}/users/by/external_id/{external_id}
|
||||
|
||||
Headers:
|
||||
Authorization: Basic {REST_API_KEY}
|
||||
```
|
||||
|
||||
### Create a user
|
||||
|
||||
```bash
|
||||
POST https://api.onesignal.com/api/v1/apps/{APP_ID}/users
|
||||
|
||||
Headers:
|
||||
Authorization: Basic {REST_API_KEY}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"identity": { "external_id": "user-789" },
|
||||
"subscriptions": [
|
||||
{ "type": "Email", "token": "user@example.com" }
|
||||
],
|
||||
"tags": { "plan": "pro", "signup_source": "organic" }
|
||||
}
|
||||
```
|
||||
|
||||
### List templates
|
||||
|
||||
```bash
|
||||
GET https://api.onesignal.com/api/v1/templates?app_id={APP_ID}
|
||||
|
||||
Headers:
|
||||
Authorization: Basic {REST_API_KEY}
|
||||
```
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Notification Metrics
|
||||
- `successful` - Number of successful deliveries
|
||||
- `failed` - Number of failed deliveries
|
||||
- `converted` - Users who clicked/converted
|
||||
- `remaining` - Notifications still queued
|
||||
- `errored` - Count of errors
|
||||
- `opened` - Notification open count
|
||||
|
||||
### User Metrics
|
||||
- `session_count` - Total user sessions
|
||||
- `last_active` - Last activity timestamp
|
||||
- `tags` - Custom key-value metadata
|
||||
- `subscriptions` - Active subscription channels
|
||||
|
||||
## Parameters
|
||||
|
||||
### Notification Parameters
|
||||
- `app_id` - Application ID (required)
|
||||
- `included_segments` - Target segments array
|
||||
- `excluded_segments` - Excluded segments array
|
||||
- `include_aliases` - Target specific users by alias
|
||||
- `target_channel` - Channel: `push`, `email`, `sms`
|
||||
- `contents` - Message content by language code
|
||||
- `headings` - Notification title by language code
|
||||
- `url` - Launch URL on click
|
||||
- `data` - Custom key-value data payload
|
||||
- `send_after` - Scheduled send time (UTC string)
|
||||
- `ttl` - Time to live in seconds
|
||||
|
||||
### Segment Filter Fields
|
||||
- `session_count` - Number of sessions
|
||||
- `first_session` - First session date
|
||||
- `last_session` - Last session date
|
||||
- `tag` - Custom tag value
|
||||
- `language` - User language
|
||||
- `app_version` - App version
|
||||
- `country` - User country code
|
||||
|
||||
## When to Use
|
||||
|
||||
- Sending push notifications for product updates
|
||||
- Triggered notifications based on user behavior
|
||||
- Multi-channel messaging (push + email + SMS)
|
||||
- Re-engagement campaigns for inactive users
|
||||
- Segmenting users for targeted messaging
|
||||
- A/B testing notification content
|
||||
- Scheduling promotional campaigns
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- **Free Plan**: 150 notification requests/second per app
|
||||
- **Paid Plan**: 6,000 notification requests/second per app
|
||||
- **User/Subscription ops**: 1,000 requests/second per app
|
||||
- **Burst limit**: No more than 10x total subscribers in 15 minutes
|
||||
- **429 response**: Includes `RetryAfter` header with seconds to wait
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- push-notifications
|
||||
- customer-engagement
|
||||
- retention-campaign
|
||||
- re-engagement
|
||||
- lifecycle-marketing
|
||||
@@ -0,0 +1,171 @@
|
||||
# Optimizely
|
||||
|
||||
A/B testing and experimentation platform with a REST API for managing projects, experiments, campaigns, and results.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Projects, Experiments, Campaigns, Audiences, Results |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [optimizely.js](../clis/optimizely.js) |
|
||||
| SDK | ✓ | JavaScript, Python, Ruby, Java, Go, C#, PHP, React, Swift, Android |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Bearer Token (Personal Access Token or OAuth 2.0)
|
||||
- **Header**: `Authorization: Bearer {personal_token}`
|
||||
- **Get token**: https://app.optimizely.com/v2/profile/api > Generate New Token
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List Projects
|
||||
|
||||
```bash
|
||||
GET https://api.optimizely.com/v2/projects
|
||||
```
|
||||
|
||||
### Get Project
|
||||
|
||||
```bash
|
||||
GET https://api.optimizely.com/v2/projects/{project_id}
|
||||
```
|
||||
|
||||
### List Experiments
|
||||
|
||||
```bash
|
||||
GET https://api.optimizely.com/v2/experiments?project_id={project_id}
|
||||
```
|
||||
|
||||
### Get Experiment
|
||||
|
||||
```bash
|
||||
GET https://api.optimizely.com/v2/experiments/{experiment_id}
|
||||
```
|
||||
|
||||
### Get Experiment Results
|
||||
|
||||
```bash
|
||||
GET https://api.optimizely.com/v2/experiments/{experiment_id}/results
|
||||
```
|
||||
|
||||
### Create Experiment
|
||||
|
||||
```bash
|
||||
POST https://api.optimizely.com/v2/experiments
|
||||
|
||||
{
|
||||
"project_id": 12345,
|
||||
"name": "Homepage CTA Test",
|
||||
"type": "a/b",
|
||||
"variations": [
|
||||
{ "name": "Control", "weight": 5000 },
|
||||
{ "name": "Variation 1", "weight": 5000 }
|
||||
],
|
||||
"metrics": [{ "event_id": 67890 }],
|
||||
"status": "not_started"
|
||||
}
|
||||
```
|
||||
|
||||
### Update Experiment
|
||||
|
||||
```bash
|
||||
PATCH https://api.optimizely.com/v2/experiments/{experiment_id}
|
||||
|
||||
{
|
||||
"status": "running"
|
||||
}
|
||||
```
|
||||
|
||||
### List Campaigns
|
||||
|
||||
```bash
|
||||
GET https://api.optimizely.com/v2/campaigns?project_id={project_id}
|
||||
```
|
||||
|
||||
### Get Campaign Results
|
||||
|
||||
```bash
|
||||
GET https://api.optimizely.com/v2/campaigns/{campaign_id}/results
|
||||
```
|
||||
|
||||
### List Audiences
|
||||
|
||||
```bash
|
||||
GET https://api.optimizely.com/v2/audiences?project_id={project_id}
|
||||
```
|
||||
|
||||
### List Events
|
||||
|
||||
```bash
|
||||
GET https://api.optimizely.com/v2/events?project_id={project_id}
|
||||
```
|
||||
|
||||
### List Pages
|
||||
|
||||
```bash
|
||||
GET https://api.optimizely.com/v2/pages?project_id={project_id}
|
||||
```
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Experiment Results
|
||||
- `variation_id` - Variation identifier
|
||||
- `variation_name` - Variation display name
|
||||
- `visitors` - Unique visitors per variation
|
||||
- `conversions` - Conversion count
|
||||
- `conversion_rate` - Rate as decimal
|
||||
- `improvement` - Percentage improvement vs. control
|
||||
- `statistical_significance` - Confidence level
|
||||
- `is_baseline` - Whether this is the control
|
||||
|
||||
### Experiment Properties
|
||||
- `name` - Experiment name
|
||||
- `status` - not_started, running, paused, archived
|
||||
- `type` - a/b, multivariate, personalization
|
||||
- `traffic_allocation` - Percentage of traffic (0-10000 = 0-100%)
|
||||
- `variations` - Array of variations with weights
|
||||
|
||||
## Parameters
|
||||
|
||||
### List Experiments
|
||||
- `project_id` (required) - Project to list experiments for
|
||||
- `page` - Page number
|
||||
- `per_page` - Results per page (default: 25)
|
||||
- `status` - Filter by status
|
||||
|
||||
### Get Results
|
||||
- `start_time` - Results start time (ISO 8601)
|
||||
- `end_time` - Results end time (ISO 8601)
|
||||
|
||||
### Create Experiment
|
||||
- `project_id` (required) - Parent project
|
||||
- `name` (required) - Experiment name
|
||||
- `type` - Experiment type (default: a/b)
|
||||
- `variations` (required) - Array of variations with name and weight
|
||||
- `metrics` - Array of metric/event configurations
|
||||
- `audience_conditions` - Targeting conditions
|
||||
- `traffic_allocation` - Traffic percentage (0-10000)
|
||||
|
||||
## When to Use
|
||||
|
||||
- Running A/B tests on web pages and features
|
||||
- Managing experimentation programs at scale
|
||||
- Pulling experiment results for analysis
|
||||
- Automating experiment creation and monitoring
|
||||
- Feature flag management
|
||||
- Personalization campaigns
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- 50 requests/second per personal token
|
||||
- Pagination via `page` and `per_page` parameters
|
||||
- OpenAPI spec available at https://api.optimizely.com/v2/swagger.json
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- ab-test-setup
|
||||
- page-cro
|
||||
- landing-page
|
||||
- personalization
|
||||
- analytics-tracking
|
||||
@@ -0,0 +1,212 @@
|
||||
# Paddle
|
||||
|
||||
SaaS billing and payments platform with built-in tax compliance, acting as merchant of record for global sales.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API for products, prices, subscriptions, transactions |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [paddle.js](../clis/paddle.js) |
|
||||
| SDK | ✓ | Node.js, Python, PHP, Go |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Bearer Token
|
||||
- **Header**: `Authorization: Bearer {api_key}`
|
||||
- **Get key**: Paddle dashboard > Developer Tools > Authentication
|
||||
- **Production URL**: `https://api.paddle.com`
|
||||
- **Sandbox URL**: `https://sandbox-api.paddle.com`
|
||||
- **Note**: Version specified via header, not path. Set `PADDLE_SANDBOX=true` env var for sandbox.
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List products
|
||||
|
||||
```bash
|
||||
GET https://api.paddle.com/products
|
||||
```
|
||||
|
||||
### Create a product
|
||||
|
||||
```bash
|
||||
POST https://api.paddle.com/products
|
||||
|
||||
{
|
||||
"name": "Pro Plan",
|
||||
"tax_category": "standard",
|
||||
"description": "Professional tier subscription"
|
||||
}
|
||||
```
|
||||
|
||||
### Create a price for a product
|
||||
|
||||
```bash
|
||||
POST https://api.paddle.com/prices
|
||||
|
||||
{
|
||||
"product_id": "pro_01abc...",
|
||||
"description": "Monthly Pro",
|
||||
"unit_price": {
|
||||
"amount": "2999",
|
||||
"currency_code": "USD"
|
||||
},
|
||||
"billing_cycle": {
|
||||
"interval": "month",
|
||||
"frequency": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List customers
|
||||
|
||||
```bash
|
||||
GET https://api.paddle.com/customers
|
||||
```
|
||||
|
||||
### Create a customer
|
||||
|
||||
```bash
|
||||
POST https://api.paddle.com/customers
|
||||
|
||||
{
|
||||
"email": "customer@example.com",
|
||||
"name": "Jane Smith"
|
||||
}
|
||||
```
|
||||
|
||||
### List subscriptions
|
||||
|
||||
```bash
|
||||
GET https://api.paddle.com/subscriptions?status=active
|
||||
```
|
||||
|
||||
### Get subscription details
|
||||
|
||||
```bash
|
||||
GET https://api.paddle.com/subscriptions/{subscription_id}
|
||||
```
|
||||
|
||||
### Cancel a subscription
|
||||
|
||||
```bash
|
||||
POST https://api.paddle.com/subscriptions/{subscription_id}/cancel
|
||||
|
||||
{
|
||||
"effective_from": "next_billing_period"
|
||||
}
|
||||
```
|
||||
|
||||
### Pause a subscription
|
||||
|
||||
```bash
|
||||
POST https://api.paddle.com/subscriptions/{subscription_id}/pause
|
||||
```
|
||||
|
||||
### List transactions
|
||||
|
||||
```bash
|
||||
GET https://api.paddle.com/transactions
|
||||
```
|
||||
|
||||
### Create a discount
|
||||
|
||||
```bash
|
||||
POST https://api.paddle.com/discounts
|
||||
|
||||
{
|
||||
"amount": "20",
|
||||
"type": "percentage",
|
||||
"description": "20% off first month",
|
||||
"code": "WELCOME20"
|
||||
}
|
||||
```
|
||||
|
||||
### Create a refund adjustment
|
||||
|
||||
```bash
|
||||
POST https://api.paddle.com/adjustments
|
||||
|
||||
{
|
||||
"transaction_id": "txn_01abc...",
|
||||
"action": "refund",
|
||||
"reason": "Customer requested refund",
|
||||
"items": [{"item_id": "txnitm_01abc...", "type": "full"}]
|
||||
}
|
||||
```
|
||||
|
||||
### List events
|
||||
|
||||
```bash
|
||||
GET https://api.paddle.com/events
|
||||
```
|
||||
|
||||
### List event types
|
||||
|
||||
```bash
|
||||
GET https://api.paddle.com/event-types
|
||||
```
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Transaction Metrics
|
||||
- `totals.total` - Total amount charged
|
||||
- `totals.tax` - Tax amount
|
||||
- `totals.subtotal` - Amount before tax
|
||||
- `totals.discount` - Discount applied
|
||||
- `currency_code` - Transaction currency
|
||||
|
||||
### Subscription Metrics
|
||||
- `status` - active, canceled, paused, past_due, trialing
|
||||
- `current_billing_period` - Current period start/end
|
||||
- `next_billed_at` - Next billing date
|
||||
- `scheduled_change` - Pending changes (cancellation, plan change)
|
||||
|
||||
### Product/Price Metrics
|
||||
- `unit_price.amount` - Price in lowest denomination
|
||||
- `billing_cycle` - Interval and frequency
|
||||
- `trial_period` - Trial duration if set
|
||||
|
||||
## Parameters
|
||||
|
||||
### List Filtering
|
||||
- `status` - Filter by status (e.g., active, archived)
|
||||
- `after` - Cursor for pagination
|
||||
- `per_page` - Results per page (default: 50)
|
||||
- `order_by` - Sort field and direction
|
||||
|
||||
### Subscription Cancel Options
|
||||
- `effective_from` - `immediately` or `next_billing_period`
|
||||
|
||||
### Price Billing Cycle
|
||||
- `interval` - `day`, `week`, `month`, `year`
|
||||
- `frequency` - Number of intervals between billings
|
||||
|
||||
### Tax Categories
|
||||
- `standard` - Standard tax rate
|
||||
- `digital-goods` - Digital goods tax rate
|
||||
- `saas` - SaaS-specific tax rate
|
||||
|
||||
## When to Use
|
||||
|
||||
- Managing SaaS subscription billing with tax compliance
|
||||
- Creating products and pricing tiers
|
||||
- Processing refunds and adjustments
|
||||
- Handling subscription lifecycle (create, pause, cancel, resume)
|
||||
- Global tax handling as merchant of record
|
||||
- Discount and coupon management for promotions
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- 100 requests per minute
|
||||
- Applies across all endpoints
|
||||
- HTTP 429 returned when exceeded
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- pricing-page
|
||||
- saas-metrics
|
||||
- churn-reduction
|
||||
- launch-sequence
|
||||
- monetization-strategy
|
||||
@@ -0,0 +1,222 @@
|
||||
# PartnerStack
|
||||
|
||||
Partner and affiliate program management platform for SaaS companies with deal tracking, rewards, and multi-tier partnerships.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Vendor API v2 for partnerships, deals, customers, transactions |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [partnerstack.js](../clis/partnerstack.js) |
|
||||
| SDK | - | No official SDK; REST API with Basic Auth |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Basic Auth (Vendor API)
|
||||
- **Header**: `Authorization: Basic {base64(public_key:secret_key)}`
|
||||
- **Get credentials**: Vendor dashboard > Settings > Integrations > PartnerStack API Keys
|
||||
- **Note**: Separate Test and Production API keys. Test transactions can only be added to customers created with Test keys.
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List partnerships
|
||||
|
||||
```bash
|
||||
GET https://api.partnerstack.com/api/v2/partnerships?limit=25
|
||||
|
||||
Authorization: Basic {base64(public_key:secret_key)}
|
||||
```
|
||||
|
||||
### Create a partnership
|
||||
|
||||
```bash
|
||||
POST https://api.partnerstack.com/api/v2/partnerships
|
||||
|
||||
{
|
||||
"email": "partner@example.com",
|
||||
"group_key": "affiliates",
|
||||
"first_name": "Jane",
|
||||
"last_name": "Smith"
|
||||
}
|
||||
```
|
||||
|
||||
### List customers
|
||||
|
||||
```bash
|
||||
GET https://api.partnerstack.com/api/v2/customers?limit=25
|
||||
```
|
||||
|
||||
### Create a customer (attribute to partner)
|
||||
|
||||
```bash
|
||||
POST https://api.partnerstack.com/api/v2/customers
|
||||
|
||||
{
|
||||
"email": "customer@example.com",
|
||||
"partner_key": "prtnr_abc123",
|
||||
"name": "John Doe"
|
||||
}
|
||||
```
|
||||
|
||||
### Record a transaction
|
||||
|
||||
```bash
|
||||
POST https://api.partnerstack.com/api/v2/transactions
|
||||
|
||||
{
|
||||
"customer_key": "cust_abc123",
|
||||
"amount": 9900,
|
||||
"currency": "USD",
|
||||
"product_key": "pro_plan"
|
||||
}
|
||||
```
|
||||
|
||||
### List deals
|
||||
|
||||
```bash
|
||||
GET https://api.partnerstack.com/api/v2/deals?limit=25
|
||||
```
|
||||
|
||||
### Create a deal
|
||||
|
||||
```bash
|
||||
POST https://api.partnerstack.com/api/v2/deals
|
||||
|
||||
{
|
||||
"partner_key": "prtnr_abc123",
|
||||
"name": "Enterprise Opportunity",
|
||||
"amount": 50000,
|
||||
"stage": "qualified"
|
||||
}
|
||||
```
|
||||
|
||||
### Record an action (event-based rewards)
|
||||
|
||||
```bash
|
||||
POST https://api.partnerstack.com/api/v2/actions
|
||||
|
||||
{
|
||||
"customer_key": "cust_abc123",
|
||||
"key": "signup_completed",
|
||||
"value": 1
|
||||
}
|
||||
```
|
||||
|
||||
### Create a reward
|
||||
|
||||
```bash
|
||||
POST https://api.partnerstack.com/api/v2/rewards
|
||||
|
||||
{
|
||||
"partner_key": "prtnr_abc123",
|
||||
"amount": 5000,
|
||||
"description": "Bonus for Q1 performance"
|
||||
}
|
||||
```
|
||||
|
||||
### List leads
|
||||
|
||||
```bash
|
||||
GET https://api.partnerstack.com/api/v2/leads?limit=25
|
||||
```
|
||||
|
||||
### Create a lead
|
||||
|
||||
```bash
|
||||
POST https://api.partnerstack.com/api/v2/leads
|
||||
|
||||
{
|
||||
"partner_key": "prtnr_abc123",
|
||||
"email": "lead@company.com",
|
||||
"name": "Potential Customer",
|
||||
"company": "Acme Corp"
|
||||
}
|
||||
```
|
||||
|
||||
### List partner groups
|
||||
|
||||
```bash
|
||||
GET https://api.partnerstack.com/api/v2/groups
|
||||
```
|
||||
|
||||
### Manage webhooks
|
||||
|
||||
```bash
|
||||
POST https://api.partnerstack.com/api/v2/webhooks
|
||||
|
||||
{
|
||||
"target": "https://example.com/webhooks/partnerstack",
|
||||
"events": ["deal.created", "transaction.created", "customer.created"]
|
||||
}
|
||||
```
|
||||
|
||||
## API Pattern
|
||||
|
||||
PartnerStack uses cursor-based pagination. List responses include `has_more` and item keys for `starting_after` / `ending_before` parameters.
|
||||
|
||||
All responses follow the format:
|
||||
```json
|
||||
{
|
||||
"data": { ... },
|
||||
"message": "...",
|
||||
"status": "2xx"
|
||||
}
|
||||
```
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Partnership Metrics
|
||||
- `partner_key` - Unique partner identifier
|
||||
- `group` - Partner tier/group
|
||||
- `status` - active, pending, archived
|
||||
- `created_at` - Partnership start date
|
||||
|
||||
### Transaction Metrics
|
||||
- `amount` - Transaction value in cents
|
||||
- `currency` - Currency code
|
||||
- `product_key` - Associated product
|
||||
- `customer_key` - Associated customer
|
||||
|
||||
### Deal Metrics
|
||||
- `amount` - Deal value
|
||||
- `stage` - Deal pipeline stage
|
||||
- `status` - open, won, lost
|
||||
|
||||
### Reward Metrics
|
||||
- `amount` - Reward amount in cents
|
||||
- `status` - pending, approved, paid
|
||||
|
||||
## Parameters
|
||||
|
||||
### Pagination Parameters
|
||||
- `limit` - Items per page (1-250, default: 10)
|
||||
- `starting_after` - Cursor for next page (item key)
|
||||
- `ending_before` - Cursor for previous page (item key)
|
||||
- `order_by` - Sort field, prefix with `-` for descending
|
||||
|
||||
### Common Filters
|
||||
- `include_archived` - Include archived records
|
||||
- `has_sub_id` - Filter by sub ID presence
|
||||
|
||||
## When to Use
|
||||
|
||||
- Managing SaaS affiliate and referral programs
|
||||
- Tracking partner-driven revenue and attributions
|
||||
- Automating partner onboarding and rewards
|
||||
- Deal registration and pipeline tracking
|
||||
- Multi-tier partnership programs (affiliates, resellers, agencies)
|
||||
- Event-based reward triggers (signups, upgrades, etc.)
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Not explicitly documented
|
||||
- Use reasonable request rates; implement exponential backoff on 429 responses
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- referral-program
|
||||
- affiliate-marketing
|
||||
- partner-enablement
|
||||
- saas-metrics
|
||||
- launch-sequence
|
||||
@@ -0,0 +1,177 @@
|
||||
# Plausible Analytics
|
||||
|
||||
Privacy-focused, open-source web analytics with a simple API for stats queries without cookies or personal data collection.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Stats v2 Query, Sites Provisioning, Goals, Shared Links |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [plausible.js](../clis/plausible.js) |
|
||||
| SDK | - | REST API only |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Bearer Token
|
||||
- **Header**: `Authorization: Bearer {api_key}`
|
||||
- **Get key**: https://plausible.io/settings > API Keys
|
||||
- **Note**: Sites API requires Enterprise plan
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Stats Query (v2)
|
||||
|
||||
```bash
|
||||
POST https://plausible.io/api/v2/query
|
||||
|
||||
{
|
||||
"site_id": "example.com",
|
||||
"metrics": ["visitors", "pageviews", "bounce_rate", "visit_duration"],
|
||||
"date_range": "30d"
|
||||
}
|
||||
```
|
||||
|
||||
### Top Pages
|
||||
|
||||
```bash
|
||||
POST https://plausible.io/api/v2/query
|
||||
|
||||
{
|
||||
"site_id": "example.com",
|
||||
"metrics": ["visitors", "pageviews"],
|
||||
"date_range": "30d",
|
||||
"dimensions": ["event:page"]
|
||||
}
|
||||
```
|
||||
|
||||
### Traffic Sources
|
||||
|
||||
```bash
|
||||
POST https://plausible.io/api/v2/query
|
||||
|
||||
{
|
||||
"site_id": "example.com",
|
||||
"metrics": ["visitors", "bounce_rate"],
|
||||
"date_range": "30d",
|
||||
"dimensions": ["visit:source"]
|
||||
}
|
||||
```
|
||||
|
||||
### Time Series
|
||||
|
||||
```bash
|
||||
POST https://plausible.io/api/v2/query
|
||||
|
||||
{
|
||||
"site_id": "example.com",
|
||||
"metrics": ["visitors", "pageviews"],
|
||||
"date_range": "30d",
|
||||
"dimensions": ["time:day"]
|
||||
}
|
||||
```
|
||||
|
||||
### Breakdown by Country
|
||||
|
||||
```bash
|
||||
POST https://plausible.io/api/v2/query
|
||||
|
||||
{
|
||||
"site_id": "example.com",
|
||||
"metrics": ["visitors", "percentage"],
|
||||
"date_range": "30d",
|
||||
"dimensions": ["visit:country"]
|
||||
}
|
||||
```
|
||||
|
||||
### Filtered Query (specific page)
|
||||
|
||||
```bash
|
||||
POST https://plausible.io/api/v2/query
|
||||
|
||||
{
|
||||
"site_id": "example.com",
|
||||
"metrics": ["visitors", "pageviews", "bounce_rate"],
|
||||
"date_range": "30d",
|
||||
"filters": [["is", "event:page", ["/pricing"]]]
|
||||
}
|
||||
```
|
||||
|
||||
### Realtime Visitors (v1)
|
||||
|
||||
```bash
|
||||
GET https://plausible.io/api/v1/stats/realtime/visitors?site_id=example.com
|
||||
```
|
||||
|
||||
### List Sites
|
||||
|
||||
```bash
|
||||
GET https://plausible.io/api/v1/sites
|
||||
```
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Available Metrics
|
||||
- `visitors` - Unique visitors
|
||||
- `visits` - Total visits (sessions)
|
||||
- `pageviews` - Total page views
|
||||
- `views_per_visit` - Pages per session
|
||||
- `bounce_rate` - Bounce rate percentage
|
||||
- `visit_duration` - Average session duration (seconds)
|
||||
- `events` - Total events
|
||||
- `conversion_rate` - Goal conversion rate
|
||||
- `time_on_page` - Average time on page
|
||||
- `scroll_depth` - Average scroll depth
|
||||
- `percentage` - Share of total
|
||||
|
||||
### Available Dimensions
|
||||
- `event:page` - Page path
|
||||
- `event:goal` - Goal name
|
||||
- `visit:source` - Traffic source
|
||||
- `visit:referrer` - Referrer URL
|
||||
- `visit:channel` - Traffic channel
|
||||
- `visit:utm_source`, `visit:utm_medium`, `visit:utm_campaign` - UTM params
|
||||
- `visit:device` - Device type
|
||||
- `visit:browser` - Browser name
|
||||
- `visit:os` - Operating system
|
||||
- `visit:country`, `visit:region`, `visit:city` - Location
|
||||
- `visit:entry_page`, `visit:exit_page` - Entry/exit pages
|
||||
- `time`, `time:day`, `time:week`, `time:month` - Time periods
|
||||
|
||||
## Parameters
|
||||
|
||||
### Stats Query (v2)
|
||||
- `site_id` (required) - Domain registered in Plausible
|
||||
- `metrics` (required) - Array of metrics to return
|
||||
- `date_range` (required) - Time period: "day", "7d", "30d", "month", "6mo", "12mo", "year", or custom ["2024-01-01", "2024-01-31"]
|
||||
- `dimensions` - Array of dimensions to group by
|
||||
- `filters` - Array of filter conditions: `[operator, dimension, values]`
|
||||
- `order_by` - Array of sort specs: `[[metric, "desc"]]`
|
||||
- `pagination` - `{ "limit": 100, "offset": 0 }`
|
||||
|
||||
### Filter Operators
|
||||
- `is` / `is_not` - Exact match
|
||||
- `contains` / `contains_not` - Substring match
|
||||
- `matches` / `matches_not` - Wildcard match
|
||||
|
||||
## When to Use
|
||||
|
||||
- Privacy-first web analytics without cookies
|
||||
- Simple, lightweight traffic analysis
|
||||
- UTM campaign performance tracking
|
||||
- Goal and conversion tracking
|
||||
- Geographic and device breakdown
|
||||
- GDPR/CCPA-compliant analytics alternative to GA4
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- 600 requests/hour per API key
|
||||
- All requests must be over HTTPS
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- analytics-tracking
|
||||
- content-strategy
|
||||
- programmatic-seo
|
||||
- page-cro
|
||||
- utm-tracking
|
||||
@@ -0,0 +1,234 @@
|
||||
# Postmark
|
||||
|
||||
Transactional email delivery service with fast delivery, templates, bounce management, and detailed analytics.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API for email sending, templates, bounces, stats |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [postmark.js](../clis/postmark.js) |
|
||||
| SDK | ✓ | Node.js, Ruby, Python, PHP, Java, .NET, Go |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Server Token (or Account Token for account-level ops)
|
||||
- **Header**: `X-Postmark-Server-Token: {server_token}` (server-level)
|
||||
- **Header**: `X-Postmark-Account-Token: {account_token}` (account-level)
|
||||
- **Get key**: API Tokens tab at https://account.postmarkapp.com/servers
|
||||
- **Note**: Server tokens are per-server; account tokens apply across all servers
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Send single email
|
||||
|
||||
```bash
|
||||
POST https://api.postmarkapp.com/email
|
||||
|
||||
{
|
||||
"From": "sender@example.com",
|
||||
"To": "recipient@example.com",
|
||||
"Subject": "Welcome!",
|
||||
"HtmlBody": "<html><body><p>Hello!</p></body></html>",
|
||||
"TextBody": "Hello!",
|
||||
"MessageStream": "outbound",
|
||||
"TrackOpens": true,
|
||||
"TrackLinks": "HtmlAndText"
|
||||
}
|
||||
```
|
||||
|
||||
### Send with template
|
||||
|
||||
```bash
|
||||
POST https://api.postmarkapp.com/email/withTemplate
|
||||
|
||||
{
|
||||
"From": "sender@example.com",
|
||||
"To": "recipient@example.com",
|
||||
"TemplateId": 12345,
|
||||
"TemplateModel": {
|
||||
"name": "Jane",
|
||||
"action_url": "https://example.com/verify"
|
||||
},
|
||||
"MessageStream": "outbound"
|
||||
}
|
||||
```
|
||||
|
||||
### Send batch emails
|
||||
|
||||
```bash
|
||||
POST https://api.postmarkapp.com/email/batch
|
||||
|
||||
[
|
||||
{
|
||||
"From": "sender@example.com",
|
||||
"To": "user1@example.com",
|
||||
"Subject": "Notification",
|
||||
"TextBody": "Hello user 1"
|
||||
},
|
||||
{
|
||||
"From": "sender@example.com",
|
||||
"To": "user2@example.com",
|
||||
"Subject": "Notification",
|
||||
"TextBody": "Hello user 2"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### List templates
|
||||
|
||||
```bash
|
||||
GET https://api.postmarkapp.com/templates?Count=100&Offset=0
|
||||
```
|
||||
|
||||
### Get template
|
||||
|
||||
```bash
|
||||
GET https://api.postmarkapp.com/templates/{templateIdOrAlias}
|
||||
```
|
||||
|
||||
### Create template
|
||||
|
||||
```bash
|
||||
POST https://api.postmarkapp.com/templates
|
||||
|
||||
{
|
||||
"Name": "Welcome Email",
|
||||
"Alias": "welcome",
|
||||
"Subject": "Welcome {{name}}!",
|
||||
"HtmlBody": "<html><body><p>Hello {{name}}</p></body></html>",
|
||||
"TextBody": "Hello {{name}}"
|
||||
}
|
||||
```
|
||||
|
||||
### Get delivery stats
|
||||
|
||||
```bash
|
||||
GET https://api.postmarkapp.com/deliverystats
|
||||
```
|
||||
|
||||
### List bounces
|
||||
|
||||
```bash
|
||||
GET https://api.postmarkapp.com/bounces?count=50&offset=0&type=HardBounce
|
||||
```
|
||||
|
||||
### Activate bounce (reactivate recipient)
|
||||
|
||||
```bash
|
||||
PUT https://api.postmarkapp.com/bounces/{bounceId}/activate
|
||||
```
|
||||
|
||||
### Search outbound messages
|
||||
|
||||
```bash
|
||||
GET https://api.postmarkapp.com/messages/outbound?count=50&offset=0&recipient=user@example.com
|
||||
```
|
||||
|
||||
### Get outbound stats overview
|
||||
|
||||
```bash
|
||||
GET https://api.postmarkapp.com/stats/outbound?fromdate=2025-01-01&todate=2025-01-31
|
||||
```
|
||||
|
||||
### Get open stats
|
||||
|
||||
```bash
|
||||
GET https://api.postmarkapp.com/stats/outbound/opens?fromdate=2025-01-01&todate=2025-01-31
|
||||
```
|
||||
|
||||
### Get click stats
|
||||
|
||||
```bash
|
||||
GET https://api.postmarkapp.com/stats/outbound/clicks?fromdate=2025-01-01&todate=2025-01-31
|
||||
```
|
||||
|
||||
### Get server info
|
||||
|
||||
```bash
|
||||
GET https://api.postmarkapp.com/server
|
||||
```
|
||||
|
||||
### List suppressions
|
||||
|
||||
```bash
|
||||
GET https://api.postmarkapp.com/message-streams/outbound/suppressions/dump
|
||||
```
|
||||
|
||||
### Create suppression
|
||||
|
||||
```bash
|
||||
POST https://api.postmarkapp.com/message-streams/outbound/suppressions
|
||||
|
||||
{
|
||||
"Suppressions": [
|
||||
{ "EmailAddress": "user@example.com" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## API Pattern
|
||||
|
||||
Postmark uses simple REST endpoints with PascalCase field names in request/response bodies. Authentication is via custom headers rather than Authorization. Pagination uses `Count` and `Offset` parameters. Email sending is synchronous with immediate delivery confirmation.
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Delivery Metrics
|
||||
- `Sent` - Total emails sent
|
||||
- `Bounced` - Bounce count by type (hard, soft, transient)
|
||||
- `SpamComplaints` - Spam complaint count
|
||||
- `Opens` - Open count and unique opens
|
||||
- `Clicks` - Click count and unique clicks
|
||||
|
||||
### Bounce Types
|
||||
- `HardBounce` - Permanent delivery failure
|
||||
- `SoftBounce` - Temporary delivery failure
|
||||
- `Transient` - Temporary issue (retry)
|
||||
- `SpamNotification` - Marked as spam
|
||||
|
||||
### Message Fields
|
||||
- `MessageID` - Unique message identifier
|
||||
- `SubmittedAt` - Submission timestamp
|
||||
- `Status` - Delivery status
|
||||
- `Recipients` - Recipient list
|
||||
|
||||
## Parameters
|
||||
|
||||
### Email Parameters
|
||||
- `From` - Sender address (must be verified)
|
||||
- `To` - Recipient (comma-separated for multiple)
|
||||
- `Subject` - Email subject
|
||||
- `HtmlBody` / `TextBody` - Email content
|
||||
- `MessageStream` - outbound (transactional) or broadcast
|
||||
- `TrackOpens` - Enable open tracking (boolean)
|
||||
- `TrackLinks` - None, HtmlAndText, HtmlOnly, TextOnly
|
||||
- `Tag` - Custom tag for categorization
|
||||
|
||||
### Stats Parameters
|
||||
- `fromdate` - Start date (YYYY-MM-DD)
|
||||
- `todate` - End date (YYYY-MM-DD)
|
||||
- `tag` - Filter by tag
|
||||
|
||||
## When to Use
|
||||
|
||||
- Transactional emails (password resets, order confirmations, notifications)
|
||||
- Template-based email sending with dynamic variables
|
||||
- Monitoring email deliverability and bounce rates
|
||||
- Tracking email engagement (opens, clicks)
|
||||
- Managing email suppressions and bounces
|
||||
- High-reliability email delivery with fast performance
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- 500 messages per batch request
|
||||
- 10 MB max per single message (including attachments)
|
||||
- 50 MB max per batch request
|
||||
- API rate limits vary by plan
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- email-sequence
|
||||
- transactional-email
|
||||
- email-deliverability
|
||||
- onboarding-email
|
||||
@@ -0,0 +1,181 @@
|
||||
# SavvyCal
|
||||
|
||||
Scheduling platform API for managing scheduling links, events, availability slots, and webhooks.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API v1 - scheduling links, events, webhooks |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [savvycal.js](../clis/savvycal.js) |
|
||||
| SDK | - | No official SDK |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Bearer Token (Personal Access Token or OAuth 2.0)
|
||||
- **Header**: `Authorization: Bearer {token}`
|
||||
- **Get key**: Developer Settings in SavvyCal dashboard (create a Personal Access Token)
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Get current user
|
||||
|
||||
```bash
|
||||
GET https://api.savvycal.com/v1/me
|
||||
```
|
||||
|
||||
### List scheduling links
|
||||
|
||||
```bash
|
||||
GET https://api.savvycal.com/v1/scheduling-links
|
||||
```
|
||||
|
||||
### Get a scheduling link
|
||||
|
||||
```bash
|
||||
GET https://api.savvycal.com/v1/scheduling-links/{id}
|
||||
```
|
||||
|
||||
### Create a scheduling link
|
||||
|
||||
```bash
|
||||
POST https://api.savvycal.com/v1/scheduling-links
|
||||
|
||||
{
|
||||
"name": "30 Minute Meeting",
|
||||
"slug": "30min",
|
||||
"duration_minutes": 30
|
||||
}
|
||||
```
|
||||
|
||||
### Update a scheduling link
|
||||
|
||||
```bash
|
||||
PATCH https://api.savvycal.com/v1/scheduling-links/{id}
|
||||
|
||||
{
|
||||
"name": "Updated Meeting Name"
|
||||
}
|
||||
```
|
||||
|
||||
### Delete a scheduling link
|
||||
|
||||
```bash
|
||||
DELETE https://api.savvycal.com/v1/scheduling-links/{id}
|
||||
```
|
||||
|
||||
### Duplicate a scheduling link
|
||||
|
||||
```bash
|
||||
POST https://api.savvycal.com/v1/scheduling-links/{id}/duplicate
|
||||
```
|
||||
|
||||
### Toggle link state (active/disabled)
|
||||
|
||||
```bash
|
||||
POST https://api.savvycal.com/v1/scheduling-links/{id}/toggle
|
||||
```
|
||||
|
||||
### Get available time slots
|
||||
|
||||
```bash
|
||||
GET https://api.savvycal.com/v1/scheduling-links/{id}/slots
|
||||
```
|
||||
|
||||
### List events
|
||||
|
||||
```bash
|
||||
GET https://api.savvycal.com/v1/events
|
||||
```
|
||||
|
||||
### Get an event
|
||||
|
||||
```bash
|
||||
GET https://api.savvycal.com/v1/events/{id}
|
||||
```
|
||||
|
||||
### Create an event
|
||||
|
||||
```bash
|
||||
POST https://api.savvycal.com/v1/events
|
||||
|
||||
{
|
||||
"scheduling_link_id": "{link_id}",
|
||||
"start_at": "2024-01-20T10:00:00Z",
|
||||
"name": "John Doe",
|
||||
"email": "john@example.com"
|
||||
}
|
||||
```
|
||||
|
||||
### Cancel an event
|
||||
|
||||
```bash
|
||||
POST https://api.savvycal.com/v1/events/{id}/cancel
|
||||
```
|
||||
|
||||
### List webhooks
|
||||
|
||||
```bash
|
||||
GET https://api.savvycal.com/v1/webhooks
|
||||
```
|
||||
|
||||
### Create a webhook
|
||||
|
||||
```bash
|
||||
POST https://api.savvycal.com/v1/webhooks
|
||||
|
||||
{
|
||||
"url": "https://example.com/webhook",
|
||||
"events": ["event.created", "event.canceled"]
|
||||
}
|
||||
```
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Scheduling Link Data
|
||||
- `id` - Unique link identifier
|
||||
- `name` - Display name
|
||||
- `slug` - URL slug
|
||||
- `duration_minutes` - Meeting duration
|
||||
- `state` - Active or disabled
|
||||
- `url` - Full scheduling URL
|
||||
|
||||
### Event Data
|
||||
- `id` - Unique event identifier
|
||||
- `name` - Invitee name
|
||||
- `email` - Invitee email
|
||||
- `start_at` / `end_at` - Event timing
|
||||
- `status` - Event status
|
||||
- `scheduling_link` - Associated scheduling link
|
||||
|
||||
## Parameters
|
||||
|
||||
### List Events
|
||||
- `before` / `after` - Pagination cursors
|
||||
- `limit` - Results per page (default 20, max 100)
|
||||
|
||||
### List Scheduling Links
|
||||
- `before` / `after` - Pagination cursors
|
||||
- `limit` - Results per page
|
||||
|
||||
## When to Use
|
||||
|
||||
- Managing scheduling links programmatically
|
||||
- Retrieving booked events for CRM or analytics sync
|
||||
- Checking available time slots for custom booking UIs
|
||||
- Automating scheduling link creation for campaigns
|
||||
- Monitoring booking activity via webhooks
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Not officially documented
|
||||
- Implement retry logic with exponential backoff
|
||||
- Monitor for HTTP 429 responses
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- lead-generation
|
||||
- sales-automation
|
||||
- appointment-scheduling
|
||||
- customer-onboarding
|
||||
@@ -0,0 +1,191 @@
|
||||
# Trustpilot
|
||||
|
||||
Business review management platform for collecting, managing, and showcasing customer reviews.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Business Units, Reviews, Invitations, Tags |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [trustpilot.js](../clis/trustpilot.js) |
|
||||
| SDK | ✓ | Node.js (official), community wrappers |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Key (public endpoints) + OAuth 2.0 (private endpoints)
|
||||
- **Public Header**: `apikey: {YOUR_API_KEY}`
|
||||
- **Private Header**: `Authorization: Bearer {access_token}`
|
||||
- **OAuth Grant**: Client Credentials (`Basic base64(API_KEY:API_SECRET)`)
|
||||
- **Token Lifetime**: Access tokens expire after 100 hours, refresh tokens after 30 days
|
||||
- **Get credentials**: https://businessapp.b2b.trustpilot.com/ > Integrations > API
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Search for a business unit
|
||||
|
||||
```bash
|
||||
GET https://api.trustpilot.com/v1/business-units/search?query=example.com&limit=10
|
||||
|
||||
Headers:
|
||||
apikey: {API_KEY}
|
||||
```
|
||||
|
||||
### Get business unit details
|
||||
|
||||
```bash
|
||||
GET https://api.trustpilot.com/v1/business-units/{businessUnitId}
|
||||
|
||||
Headers:
|
||||
apikey: {API_KEY}
|
||||
```
|
||||
|
||||
### Get business profile info
|
||||
|
||||
```bash
|
||||
GET https://api.trustpilot.com/v1/business-units/{businessUnitId}/profileinfo
|
||||
|
||||
Headers:
|
||||
apikey: {API_KEY}
|
||||
```
|
||||
|
||||
### List public reviews
|
||||
|
||||
```bash
|
||||
GET https://api.trustpilot.com/v1/business-units/{businessUnitId}/reviews?perPage=20&orderBy=createdat.desc
|
||||
|
||||
Headers:
|
||||
apikey: {API_KEY}
|
||||
```
|
||||
|
||||
### List private reviews (with customer data)
|
||||
|
||||
```bash
|
||||
GET https://api.trustpilot.com/v1/private/business-units/{businessUnitId}/reviews?perPage=20
|
||||
|
||||
Headers:
|
||||
Authorization: Bearer {access_token}
|
||||
```
|
||||
|
||||
### Reply to a review
|
||||
|
||||
```bash
|
||||
POST https://api.trustpilot.com/v1/private/reviews/{reviewId}/reply
|
||||
|
||||
Headers:
|
||||
Authorization: Bearer {access_token}
|
||||
|
||||
{
|
||||
"message": "Thank you for your feedback!"
|
||||
}
|
||||
```
|
||||
|
||||
### Send email invitation
|
||||
|
||||
```bash
|
||||
POST https://api.trustpilot.com/v1/private/business-units/{businessUnitId}/email-invitations
|
||||
|
||||
Headers:
|
||||
Authorization: Bearer {access_token}
|
||||
|
||||
{
|
||||
"consumerEmail": "customer@example.com",
|
||||
"consumerName": "Jane Doe",
|
||||
"referenceNumber": "order-123",
|
||||
"redirectUri": "https://example.com/thanks"
|
||||
}
|
||||
```
|
||||
|
||||
### Generate review invitation link
|
||||
|
||||
```bash
|
||||
POST https://api.trustpilot.com/v1/private/business-units/{businessUnitId}/invitation-links
|
||||
|
||||
Headers:
|
||||
Authorization: Bearer {access_token}
|
||||
|
||||
{
|
||||
"email": "customer@example.com",
|
||||
"name": "Jane Doe",
|
||||
"referenceId": "order-123",
|
||||
"redirectUri": "https://example.com/thanks"
|
||||
}
|
||||
```
|
||||
|
||||
### List invitation templates
|
||||
|
||||
```bash
|
||||
GET https://api.trustpilot.com/v1/private/business-units/{businessUnitId}/templates
|
||||
|
||||
Headers:
|
||||
Authorization: Bearer {access_token}
|
||||
```
|
||||
|
||||
### Add tags to a review
|
||||
|
||||
```bash
|
||||
PUT https://api.trustpilot.com/v1/private/reviews/{reviewId}/tags
|
||||
|
||||
Headers:
|
||||
Authorization: Bearer {access_token}
|
||||
|
||||
{
|
||||
"tags": [{ "group": "sentiment", "value": "positive" }]
|
||||
}
|
||||
```
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Business Unit Metrics
|
||||
- `numberOfReviews` - Total review count
|
||||
- `trustScore` - Overall trust score (1-5)
|
||||
- `stars` - Star rating displayed
|
||||
- `status` - Claim status (claimed, unclaimed)
|
||||
|
||||
### Review Metrics
|
||||
- `stars` - Individual review star rating (1-5)
|
||||
- `language` - Review language code
|
||||
- `createdAt` - Review creation timestamp
|
||||
- `isVerified` - Whether the review is verified
|
||||
- `status` - Review status (active, reported, flagged)
|
||||
|
||||
## Parameters
|
||||
|
||||
### Review Filters
|
||||
- `stars` - Filter by star rating (1-5)
|
||||
- `language` - Filter by language code (e.g., `en`)
|
||||
- `orderBy` - Sort order (`createdat.desc`, `createdat.asc`, `stars.desc`, `stars.asc`)
|
||||
- `perPage` - Results per page (max 100)
|
||||
|
||||
### Invitation Parameters
|
||||
- `consumerEmail` - Recipient email (required)
|
||||
- `consumerName` - Recipient name (required)
|
||||
- `referenceNumber` - Order or transaction reference
|
||||
- `templateId` - Email template ID
|
||||
- `redirectUri` - URL to redirect after review submission
|
||||
- `senderEmail` - Custom sender email
|
||||
- `replyTo` - Custom reply-to address
|
||||
|
||||
## When to Use
|
||||
|
||||
- Collecting and managing customer reviews at scale
|
||||
- Automating post-purchase review invitation flows
|
||||
- Monitoring brand reputation and review sentiment
|
||||
- Responding to customer feedback programmatically
|
||||
- Showcasing TrustScore and reviews on marketing pages
|
||||
- Tagging and categorizing reviews for analysis
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Recommended: no more than 833 calls per 5 minutes (10K/hour)
|
||||
- Throttled at more than 1 request per second
|
||||
- Rate limit headers returned in responses
|
||||
- Use webhooks instead of polling where possible
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- reputation-management
|
||||
- customer-feedback
|
||||
- review-generation
|
||||
- social-proof
|
||||
- post-purchase-flow
|
||||
@@ -0,0 +1,190 @@
|
||||
# Typeform
|
||||
|
||||
Forms and surveys platform API for creating typeforms, retrieving responses, managing webhooks, themes, images, and workspaces.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Create, Responses, Webhooks APIs |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [typeform.js](../clis/typeform.js) |
|
||||
| SDK | ✓ | JavaScript (@typeform/js-api-client), Embed SDK |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Bearer Token (Personal Access Token or OAuth 2.0)
|
||||
- **Header**: `Authorization: Bearer {token}`
|
||||
- **Get key**: https://admin.typeform.com/account#/section/tokens
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List forms
|
||||
|
||||
```bash
|
||||
GET https://api.typeform.com/forms
|
||||
```
|
||||
|
||||
### Get a form
|
||||
|
||||
```bash
|
||||
GET https://api.typeform.com/forms/{form_id}
|
||||
```
|
||||
|
||||
### Create a form
|
||||
|
||||
```bash
|
||||
POST https://api.typeform.com/forms
|
||||
|
||||
{
|
||||
"title": "Customer Feedback Survey",
|
||||
"fields": [
|
||||
{
|
||||
"type": "short_text",
|
||||
"title": "What is your name?"
|
||||
},
|
||||
{
|
||||
"type": "rating",
|
||||
"title": "How would you rate our service?",
|
||||
"properties": {
|
||||
"steps": 5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Update a form
|
||||
|
||||
```bash
|
||||
PUT https://api.typeform.com/forms/{form_id}
|
||||
|
||||
{
|
||||
"title": "Updated Survey Title"
|
||||
}
|
||||
```
|
||||
|
||||
### Delete a form
|
||||
|
||||
```bash
|
||||
DELETE https://api.typeform.com/forms/{form_id}
|
||||
```
|
||||
|
||||
### Retrieve responses
|
||||
|
||||
```bash
|
||||
GET https://api.typeform.com/forms/{form_id}/responses?page_size=25&since=2024-01-01T00:00:00Z
|
||||
```
|
||||
|
||||
### Delete responses
|
||||
|
||||
```bash
|
||||
DELETE https://api.typeform.com/forms/{form_id}/responses?included_response_ids={id1},{id2}
|
||||
```
|
||||
|
||||
### List webhooks
|
||||
|
||||
```bash
|
||||
GET https://api.typeform.com/forms/{form_id}/webhooks
|
||||
```
|
||||
|
||||
### Create or update webhook
|
||||
|
||||
```bash
|
||||
PUT https://api.typeform.com/forms/{form_id}/webhooks/{tag}
|
||||
|
||||
{
|
||||
"url": "https://example.com/webhook",
|
||||
"enabled": true
|
||||
}
|
||||
```
|
||||
|
||||
### Delete webhook
|
||||
|
||||
```bash
|
||||
DELETE https://api.typeform.com/forms/{form_id}/webhooks/{tag}
|
||||
```
|
||||
|
||||
### List themes
|
||||
|
||||
```bash
|
||||
GET https://api.typeform.com/themes
|
||||
```
|
||||
|
||||
### List images
|
||||
|
||||
```bash
|
||||
GET https://api.typeform.com/images
|
||||
```
|
||||
|
||||
### List workspaces
|
||||
|
||||
```bash
|
||||
GET https://api.typeform.com/workspaces
|
||||
```
|
||||
|
||||
### Get a workspace
|
||||
|
||||
```bash
|
||||
GET https://api.typeform.com/workspaces/{workspace_id}
|
||||
```
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Response Data
|
||||
- `response_id` - Unique response identifier
|
||||
- `landed_at` / `submitted_at` - Timestamps
|
||||
- `answers` - Array of field answers
|
||||
- `variables` - Calculated variables
|
||||
- `hidden` - Hidden field values
|
||||
- `calculated` - Score calculations
|
||||
|
||||
### Form Data
|
||||
- `id` - Form ID (from URL)
|
||||
- `title` - Form title
|
||||
- `fields` - Array of form fields
|
||||
- `logic` - Logic jumps
|
||||
- `settings` - Form settings (notifications, meta, etc.)
|
||||
- `_links` - Display and responses URLs
|
||||
|
||||
## Parameters
|
||||
|
||||
### Retrieve Responses
|
||||
- `page_size` - Results per page (default 25, max 1000)
|
||||
- `since` / `until` - Date range filter (ISO 8601 or Unix timestamp)
|
||||
- `after` / `before` - Pagination tokens
|
||||
- `response_type` - Filter: started, partial, completed (default: completed)
|
||||
- `query` - Text search within responses
|
||||
- `fields` - Show only specific fields in answers
|
||||
- `sort` - Sort order: `{fieldID},{asc|desc}`
|
||||
- `included_response_ids` / `excluded_response_ids` - Filter specific responses
|
||||
- `answered_fields` - Only responses containing specified fields
|
||||
|
||||
### List Forms
|
||||
- `page` - Page number
|
||||
- `page_size` - Results per page (default 10, max 200)
|
||||
- `workspace_id` - Filter by workspace
|
||||
- `search` - Search by form title
|
||||
|
||||
## When to Use
|
||||
|
||||
- Collecting lead information and survey data
|
||||
- Building custom form experiences programmatically
|
||||
- Automating survey creation for campaigns
|
||||
- Analyzing form response data at scale
|
||||
- Setting up real-time response webhooks
|
||||
- Managing form themes and branding
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- **Create & Responses APIs**: 2 requests per second per account
|
||||
- **Webhooks & Embed**: No rate limits (push-based)
|
||||
- Monitor for HTTP 429 responses
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- lead-generation
|
||||
- customer-research
|
||||
- page-cro
|
||||
- signup-flow-cro
|
||||
- customer-feedback
|
||||
@@ -0,0 +1,164 @@
|
||||
# Wistia
|
||||
|
||||
Video hosting, management, and analytics platform built for marketers with detailed engagement tracking.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Data API (v1/modern), Stats API, Upload API |
|
||||
| MCP | - | Not available |
|
||||
| CLI | ✓ | [wistia.js](../clis/wistia.js) |
|
||||
| SDK | ✓ | Ruby (official), community wrappers for other languages |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: Bearer Token
|
||||
- **Header**: `Authorization: Bearer {api_token}`
|
||||
- **Get key**: Account Settings > API tab at https://account.wistia.com/account/api
|
||||
- **Note**: Only Account Owners can create/manage tokens. Tokens can only be copied when first created.
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List all projects
|
||||
|
||||
```bash
|
||||
GET https://api.wistia.com/v1/projects.json?page=1&per_page=25
|
||||
```
|
||||
|
||||
### Create a project
|
||||
|
||||
```bash
|
||||
POST https://api.wistia.com/v1/projects.json
|
||||
|
||||
{
|
||||
"name": "Marketing Videos Q1"
|
||||
}
|
||||
```
|
||||
|
||||
### List all media
|
||||
|
||||
```bash
|
||||
GET https://api.wistia.com/v1/medias.json?page=1&per_page=25
|
||||
```
|
||||
|
||||
### Get media details
|
||||
|
||||
```bash
|
||||
GET https://api.wistia.com/v1/medias/{media_hashed_id}.json
|
||||
```
|
||||
|
||||
### Get media stats
|
||||
|
||||
```bash
|
||||
GET https://api.wistia.com/v1/medias/{media_hashed_id}/stats.json
|
||||
```
|
||||
|
||||
### Get account-wide stats
|
||||
|
||||
```bash
|
||||
GET https://api.wistia.com/v1/stats/account.json
|
||||
```
|
||||
|
||||
### Get media engagement data (heatmap)
|
||||
|
||||
```bash
|
||||
GET https://api.wistia.com/v1/stats/medias/{media_id}/engagement.json
|
||||
```
|
||||
|
||||
### Get media stats by date
|
||||
|
||||
```bash
|
||||
GET https://api.wistia.com/v1/stats/medias/{media_id}/by_date.json?start_date=2026-01-01&end_date=2026-01-31
|
||||
```
|
||||
|
||||
### List visitors
|
||||
|
||||
```bash
|
||||
GET https://api.wistia.com/v1/stats/visitors.json?page=1&per_page=25
|
||||
```
|
||||
|
||||
### List viewing events
|
||||
|
||||
```bash
|
||||
GET https://api.wistia.com/v1/stats/events.json?media_id={media_id}
|
||||
```
|
||||
|
||||
### Update media metadata
|
||||
|
||||
```bash
|
||||
PUT https://api.wistia.com/v1/medias/{media_hashed_id}.json
|
||||
|
||||
{
|
||||
"name": "Updated Video Title",
|
||||
"description": "New description"
|
||||
}
|
||||
```
|
||||
|
||||
### List captions for a video
|
||||
|
||||
```bash
|
||||
GET https://api.wistia.com/v1/medias/{media_hashed_id}/captions.json
|
||||
```
|
||||
|
||||
## API Versions
|
||||
|
||||
Wistia has two API versions:
|
||||
- **v1** (`/v1/`) - Legacy, perpetually supported, no breaking changes
|
||||
- **modern** (`/modern/`) - Current version, date-based versioning via `X-Wistia-Api-Version` header
|
||||
|
||||
The CLI uses v1 for maximum stability.
|
||||
|
||||
## Key Metrics
|
||||
|
||||
### Media Stats
|
||||
- `plays` - Total video plays
|
||||
- `visitors` - Unique visitors
|
||||
- `pageLoads` - Page load count
|
||||
- `averagePercentWatched` - Average watch percentage
|
||||
- `percentOfVisitorsClickingPlay` - Play click rate
|
||||
|
||||
### Engagement Data
|
||||
- Heatmap data showing exactly where viewers watch, rewatch, and drop off
|
||||
- Per-second engagement breakdown
|
||||
|
||||
### Account Stats
|
||||
- `total_medias` - Total video count
|
||||
- `total_plays` - Account-wide plays
|
||||
- `total_hours_watched` - Total hours of video watched
|
||||
|
||||
## Parameters
|
||||
|
||||
### Media List Parameters
|
||||
- `page` - Page number (default: 1)
|
||||
- `per_page` - Results per page (default: 25, max: 100)
|
||||
- `project_id` - Filter by project
|
||||
- `name` - Filter by name
|
||||
- `type` - Filter by type (Video, Audio, Image, etc.)
|
||||
|
||||
### Stats Date Parameters
|
||||
- `start_date` - Start date (YYYY-MM-DD)
|
||||
- `end_date` - End date (YYYY-MM-DD)
|
||||
|
||||
## When to Use
|
||||
|
||||
- Hosting marketing and product videos with analytics
|
||||
- Tracking video engagement and viewer behavior
|
||||
- A/B testing video thumbnails and CTAs
|
||||
- Embedding videos with custom player branding
|
||||
- Analyzing which parts of videos drive engagement
|
||||
- Lead generation via video email gates
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- 600 requests per minute per account
|
||||
- Exceeding returns HTTP 429 with `Retry-After` header
|
||||
- Asset access (media file downloads) does not count toward limit
|
||||
- Events data returns records from past 2 years only
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- video-marketing
|
||||
- content-repurposing
|
||||
- landing-page-optimization
|
||||
- lead-generation
|
||||
Reference in New Issue
Block a user