Developer section: these pages cover the S6S workflow engine for self-hosted installs and developers. On s6s.ai, API keys and MCP access are issued by S6S on request (contact us); on a self-hosted install, an admin creates them on the API Keys page. For the AI Visibility product, start at the AI Visibility docs.
Integrations
S6S has built-in actions for popular platforms (for example slack, gmail, google_sheets). Other APIs work through provider.action syntax (for example notion.create_page) when S6S knows the integration, or through the http action. S6S Cloud can learn new integrations on demand.
Built-in providers
These providers have dedicated executors, OAuth or API key authentication, and config validation. They are available on both self-hosted installs and S6S Cloud.
| Provider | Services | Auth |
|---|---|---|
| Sheets, Drive, Gmail, YouTube | OAuth | |
| Slack | Send messages | OAuth |
| Discord | Send messages (bot) | API key (bot token) |
| Telegram | Messages, photos, documents, updates | API key (bot token) |
| X (Twitter) | Post tweets, search | 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 the http action | API key / none |
| Database | PostgreSQL (raw SQL) | Connection string |
For any service not listed above, you can always use the http action to call its REST API directly.
How actions are resolved
When you deploy, S6S resolves each step's action in this order:
1. Built-in action name (http, slack, gmail, …) → used as is 2. Sub-action of a built-in (gmail.send_message, google_sheets.append_row, telegram.send_photo) → rewritten to the built-in 3. Integration stored in the database → seeded or learned earlier 4. Learning from the provider's API docs → [Cloud] 5. Learning from model knowledge (no docs found) → [Cloud]
Steps 1–3 work everywhere. Sub-actions exist for gmail, google_sheets, google_drive, telegram, twitter, discord, imap, youtube and buffer. A new install already stores a set of seeded integrations (for example notion, stripe, hubspot and github). Steps 4–5 are S6S Cloud features. If a provider.action does not resolve, the step cannot run: the deploy fails, or saves it with an UNRESOLVED_INTEGRATION warning. Use a built-in action or http instead.
Examples
A built-in action. Slack needs channel and textTemplate. The credential "default" uses any connected Slack account (see Credentials).
{
"ref": "notify_team",
"action": "slack",
"config": {
"channel": "#alerts",
"textTemplate": "New order from {{trigger.output.body.customer}}"
},
"credential": "default"
}A sub-action in provider.action form. S6S rewrites google_sheets.append_row to the built-in google_sheets action with config.action set to append_row.
{
"ref": "log_order",
"action": "google_sheets.append_row",
"config": {
"spreadsheetId": "your-spreadsheet-id",
"range": "Orders!A:C",
"values": [["{{trigger.output.body.order_id}}", "{{trigger.output.body.customer}}", "{{run.startedAt}}"]]
},
"credential": "default"
}A stored integration works the same way. For "action": "notion.create_page", S6S builds the HTTP call from the stored endpoint. Config keys that match the stored body schema (here parent, properties and children) go into the request body. Config keys also fill placeholders in the endpoint URL, such as {database_id} for notion.query_database.
Output shape
Built-in actions return their own output (for example google_sheets append returns updatedRows and updatedRange). The output_shape field of GET /api/v1/integrations/{action} describes each one. Stored and learned integrations run as HTTP calls and return the HTTP envelope, where status is the numeric HTTP status:
{
"status": 200,
"statusCode": 200,
"statusText": "OK",
"body": { "id": "abc123" }
}Reference fields with {{step_ref.output.body.field}} in downstream steps. See the Expressions guide for details.
Discovery endpoints
GET /api/v1/integrations
Lists the built-in actions (description, effect and credential needs), the trigger types, and the credential providers (system and learned). No API key needed.
GET /api/v1/integrations/{id}
Details for a built-in action (config schema, output shape, expression fields), a system credential provider such as google or notion (auth config only), or another stored integration (its actions with endpoints and body schemas). No API key needed for known IDs. On S6S Cloud, an unknown ID is learned on demand when the request carries an API key.
MCP Tools
s6s_list_integrations and s6s_get_integration call these endpoints from the MCP server.
Dynamic integration learning
CloudOn S6S Cloud, unknown provider.action pairs are learned at deploy time. When a deploy references a provider S6S hasn't seen before:
- S6S looks for the platform's API documentation on the web.
- An LLM extracts endpoints, auth configuration, and request body schemas.
- The result is stored in the database — later deploys resolve it without learning again.
- After 30 days, the next deploy that uses it re-learns it from fresh docs.
One deploy learns at most 3 new providers.
Confidence scoring
Every learned integration gets a confidence score based on how it was learned.
| Score | Source | Meaning |
|---|---|---|
| — | System provider | Built into S6S. Listed as verified, with no numeric score |
| 0.85 | Docs-grounded | Learned with a documentation URL |
| 0.65 | Model knowledge | No docs URL, but the API's base URL is known |
| 0.4 | Model guess | No docs URL and no base URL. Still stored; treat with care |
When a call to a stored integration fails with a 401, 404 or 410, or the response mentions deprecation, S6S flags that provider. On S6S Cloud, the next deploy that uses it re-learns it from fresh docs.
Self-hosting
Self-hosted instances have every built-in provider, the seeded integrations, and any integration already stored in their database. For other services, use the http action to call the REST API directly. Learning new integrations comes from the proprietary packages/cloud module, which is licensed only as part of S6S Cloud.