These docs cover the S6S workflow engine — the developer playground layer underneath the product. For the main AI Visibility product (brand monitoring, the unified Report, fix actions), start at /docs/ai-visibility.
Integrations
S6S ships with built-in support for popular platforms. Use provider.action syntax in your workflow steps (e.g. slack.send_message, google_sheets.append_row). For APIs beyond the built-in set, S6S Cloud can learn new integrations automatically.
Built-in providers
These providers have native support with dedicated executors, OAuth or API key authentication, and config validation. Available on both self-hosted and cloud.
| Provider | Services | Auth |
|---|---|---|
| Sheets, Drive, Gmail, YouTube | OAuth | |
| Slack | Messages, channels | OAuth |
| Discord | Messages, webhooks | OAuth |
| Telegram | Messages, updates | API key |
| Posts, reads | OAuth | |
| Buffer | Social media posting (X, Instagram, TikTok) | API key |
| IMAP | Read email from any provider | Credentials |
| SMTP | Send email via any mail server | Credentials |
| HTTP | Any REST API via action.http | API key / none |
| Database | PostgreSQL, MySQL (raw SQL) | Connection string |
For any service not listed above, you can always use action.http to call its REST API directly.
How provider resolution works
When you use provider.action syntax, S6S resolves it through a chain:
1. Built-in providers (google, slack, etc.) → instant 2. Provider aliases (google_drive → google) → instant 3. Cached learned providers (from DB) → instant [Cloud] 4. Doc-verified learning (web search + LLM) → 3-8s [Cloud] 5. LLM knowledge fallback (no docs found) → 2-5s [Cloud]
Steps 1–2 work everywhere (self-hosted and cloud). Steps 3–5 are S6S Cloud features that use the integration learning pipeline to discover and cache unknown APIs.
Example: Using a provider integration
Any provider.action pair works as a step action. S6S resolves it using the chain above.
{
"ref": "notify_team",
"action": "slack.send_message",
"config": {
"channel": "#alerts",
"textTemplate": "New order from {{fetch_order.output.body.customer}}"
},
"credential": "slack"
}Output shape
All provider.action steps return an HTTP envelope. Access API data via expression templates.
{
"status": "ok",
"statusCode": 200,
"body": { ... } // API response data
}Reference fields with {{step_ref.output.body.field}} in downstream steps. See the Expressions guide for details.
Discovery endpoints
GET /api/v1/integrations
List all available built-in actions (with config schemas), triggers, and credential providers. Returns everything needed to build workflows.
GET /api/v1/integrations/{provider_id}
Full detail for a built-in action (e.g. gmail, youtube, buffer) or a credential provider. Returns config schema, output shape, and expression fields. On S6S Cloud, unknown providers are auto-learned on demand.
MCP Tools
s6s_list_integrations and s6s_get_integration are available via the MCP server.
Dynamic integration learning
CloudOn S6S Cloud, unknown provider.action pairs are learned automatically. When a deploy references a provider S6S hasn't seen before:
- S6S searches the web for the platform's API documentation.
- An LLM extracts endpoints, auth configuration, and request body schemas from the docs.
- The result is cached in the database — subsequent deploys resolve instantly.
- Learned integrations auto-re-verify from fresh docs every 30 days.
Confidence scoring
Every learned integration gets a confidence score based on how it was discovered.
| Score | Source | Meaning |
|---|---|---|
| 1.0 | Built-in | Hardcoded provider with dedicated executor |
| 0.85 | Docs-grounded | Learned from official API documentation |
| 0.65 | LLM knowledge only | No docs found; based on model training data |
| < threshold | Low confidence | Not persisted — too unreliable to cache |
APIs that change or deprecate are detected at runtime and re-learned automatically (self-healing). Failed API calls with 404, 410, or deprecation signals trigger re-verification on the next deploy.
Self-hosting
Self-hosted instances have full access to all built-in providers. For services not in the built-in list, use action.http to call any REST API directly. Dynamic integration learning (auto-discovering unknown APIs) is available on S6S Cloud.