@jskit-ai/connectors-catalog 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +192 -0
- package/docs/ai-upstream-notices.md +51 -0
- package/docs/ai.md +191 -0
- package/docs/airtable.md +130 -0
- package/docs/algolia.md +190 -0
- package/docs/amazon-redshift.md +229 -0
- package/docs/amplitude.md +210 -0
- package/docs/apify.md +162 -0
- package/docs/apollo-io.md +200 -0
- package/docs/asana.md +126 -0
- package/docs/ashby.md +188 -0
- package/docs/atlassian.md +224 -0
- package/docs/attention.md +162 -0
- package/docs/aws-athena.md +150 -0
- package/docs/aws-credentials.md +75 -0
- package/docs/aws-s3.md +193 -0
- package/docs/bigquery.md +146 -0
- package/docs/brevo.md +122 -0
- package/docs/calendly.md +158 -0
- package/docs/canva.md +191 -0
- package/docs/chargebee.md +192 -0
- package/docs/clay.md +194 -0
- package/docs/clickhouse.md +242 -0
- package/docs/confidence-exp.md +74 -0
- package/docs/confidence-flags.md +75 -0
- package/docs/confidence-oauth.md +137 -0
- package/docs/contentful.md +123 -0
- package/docs/databricks.md +180 -0
- package/docs/dbt-semantic-layer.md +175 -0
- package/docs/elevenlabs.md +102 -0
- package/docs/figma.md +132 -0
- package/docs/firebase-cloud-messaging.md +262 -0
- package/docs/firecrawl.md +137 -0
- package/docs/fireflies.md +95 -0
- package/docs/fireworks-ai.md +53 -0
- package/docs/gatewayapi.md +113 -0
- package/docs/gemini-enterprise.md +224 -0
- package/docs/github-api.md +133 -0
- package/docs/gitlab-api.md +138 -0
- package/docs/gmail.md +133 -0
- package/docs/gong.md +205 -0
- package/docs/google-ads.md +156 -0
- package/docs/google-analytics.md +202 -0
- package/docs/google-docs.md +105 -0
- package/docs/google-drive.md +108 -0
- package/docs/google-maps-platform.md +208 -0
- package/docs/google-oauth.md +123 -0
- package/docs/google-search-console.md +124 -0
- package/docs/google-sheets.md +94 -0
- package/docs/google-slides.md +95 -0
- package/docs/granola.md +178 -0
- package/docs/hex.md +161 -0
- package/docs/heygen.md +124 -0
- package/docs/hubspot.md +142 -0
- package/docs/incident-io.md +118 -0
- package/docs/inngest.md +178 -0
- package/docs/klipy.md +149 -0
- package/docs/lexware.md +144 -0
- package/docs/lightspeed.md +193 -0
- package/docs/linear.md +137 -0
- package/docs/linkedin.md +196 -0
- package/docs/logo-dev.md +152 -0
- package/docs/mailgun.md +153 -0
- package/docs/mapbox.md +174 -0
- package/docs/microsoft-excel.md +97 -0
- package/docs/microsoft-fabric.md +249 -0
- package/docs/microsoft-oauth.md +143 -0
- package/docs/microsoft-onedrive.md +76 -0
- package/docs/microsoft-onenote.md +75 -0
- package/docs/microsoft-outlook.md +90 -0
- package/docs/microsoft-powerpoint.md +119 -0
- package/docs/microsoft-sharepoint.md +75 -0
- package/docs/microsoft-teams.md +72 -0
- package/docs/microsoft-word.md +119 -0
- package/docs/miro.md +117 -0
- package/docs/n8n.md +169 -0
- package/docs/notion.md +137 -0
- package/docs/oura.md +161 -0
- package/docs/paddle.md +168 -0
- package/docs/perplexity.md +85 -0
- package/docs/pipedrive.md +120 -0
- package/docs/polar.md +63 -0
- package/docs/posthog.md +227 -0
- package/docs/prestashop.md +151 -0
- package/docs/replicate.md +60 -0
- package/docs/resend.md +153 -0
- package/docs/salesforce.md +234 -0
- package/docs/sanity.md +122 -0
- package/docs/semrush.md +276 -0
- package/docs/sentry.md +112 -0
- package/docs/sevdesk.md +107 -0
- package/docs/shopify.md +206 -0
- package/docs/slack.md +257 -0
- package/docs/snowflake.md +271 -0
- package/docs/storyblok.md +130 -0
- package/docs/stripe.md +77 -0
- package/docs/supabase.md +51 -0
- package/docs/tally.md +105 -0
- package/docs/telegram.md +165 -0
- package/docs/tiktok.md +201 -0
- package/docs/twilio.md +284 -0
- package/docs/twitch.md +428 -0
- package/docs/wave.md +440 -0
- package/docs/wix.md +1249 -0
- package/docs/wiz.md +177 -0
- package/docs/woocommerce.md +400 -0
- package/docs/wordpress-com.md +358 -0
- package/docs/wordpress-self-hosted.md +252 -0
- package/docs/workday.md +292 -0
- package/docs/x-twitter.md +188 -0
- package/docs/xero.md +429 -0
- package/docs/zoho-books.md +214 -0
- package/docs/zoho-crm.md +192 -0
- package/package.json +153 -0
- package/patterns/ai-connections/PATTERN.md +84 -0
- package/patterns/ai-connections/example/ai-model.js +11 -0
- package/patterns/ai-connections/example/perplexity-answer.js +29 -0
- package/patterns/api-key-connection/PATTERN.md +368 -0
- package/patterns/api-key-connection/example/connections.js +18 -0
- package/patterns/api-key-connection/example/integrations.json +19 -0
- package/patterns/assistant-mcp/PATTERN.md +110 -0
- package/patterns/assistant-mcp/example/integrations.json +13 -0
- package/patterns/assistant-mcp-oauth/PATTERN.md +235 -0
- package/patterns/assistant-mcp-oauth/example/integrations.json +102 -0
- package/patterns/aws-storage-queries/PATTERN.md +169 -0
- package/patterns/aws-storage-queries/example/formats/data-formats.js +35 -0
- package/patterns/aws-storage-queries/example/formats/package-lock.json +49 -0
- package/patterns/aws-storage-queries/example/formats/package.json +12 -0
- package/patterns/aws-storage-queries/example/formats/verify-formats.mjs +37 -0
- package/patterns/aws-storage-queries/example/integrations.json +38 -0
- package/patterns/aws-storage-queries/example/s3-transfer.js +34 -0
- package/patterns/event-delivery/PATTERN.md +151 -0
- package/patterns/event-delivery/example/integrations.json +17 -0
- package/patterns/firebase-messaging/PATTERN.md +156 -0
- package/patterns/firebase-messaging/example/server/notifications.js +23 -0
- package/patterns/google-ads-search/PATTERN.md +92 -0
- package/patterns/google-ads-search/example/ads-setup.js +25 -0
- package/patterns/oauth-connection/PATTERN.md +724 -0
- package/patterns/oauth-connection/example/integrations.json +20 -0
- package/patterns/paddle-catalogue/PATTERN.md +78 -0
- package/patterns/paddle-catalogue/example/create-products.js +38 -0
- package/patterns/public-image/PATTERN.md +84 -0
- package/patterns/public-image/example/integrations.json +13 -0
- package/patterns/public-image/example/logo-url.js +16 -0
- package/patterns/redshift-queries/PATTERN.md +150 -0
- package/patterns/redshift-queries/example/integrations.json +33 -0
- package/patterns/source-scanning/PATTERN.md +83 -0
- package/patterns/source-scanning/example/source-scanner.js +13 -0
- package/src/client/firebase-cloud-messaging.js +10 -0
- package/src/client/google-analytics.js +72 -0
- package/src/client/google-maps-platform.js +39 -0
- package/src/client/logo-dev.js +36 -0
- package/src/server/ai.js +46 -0
- package/src/server/airtable.js +67 -0
- package/src/server/algolia.js +63 -0
- package/src/server/amazon-redshift.js +96 -0
- package/src/server/amplitude.js +31 -0
- package/src/server/apify.js +68 -0
- package/src/server/apollo-io.js +85 -0
- package/src/server/asana.js +64 -0
- package/src/server/ashby.js +61 -0
- package/src/server/atlassian.js +32 -0
- package/src/server/attention.js +93 -0
- package/src/server/aws-athena.js +82 -0
- package/src/server/aws-s3.js +49 -0
- package/src/server/awsTransport.js +75 -0
- package/src/server/bigquery.js +97 -0
- package/src/server/brevo.js +97 -0
- package/src/server/calendly.js +77 -0
- package/src/server/canva.js +13 -0
- package/src/server/chargebee.js +88 -0
- package/src/server/clay.js +78 -0
- package/src/server/clickhouse.js +66 -0
- package/src/server/confidence.js +29 -0
- package/src/server/contentful.js +40 -0
- package/src/server/databricks.js +55 -0
- package/src/server/dbt-semantic-layer.js +95 -0
- package/src/server/elevenlabs.js +81 -0
- package/src/server/figma.js +24 -0
- package/src/server/firebase-cloud-messaging.js +111 -0
- package/src/server/firecrawl.js +70 -0
- package/src/server/fireflies.js +31 -0
- package/src/server/fireworks-ai.js +16 -0
- package/src/server/gatewayapi.js +48 -0
- package/src/server/gemini-enterprise.js +47 -0
- package/src/server/github-api.js +90 -0
- package/src/server/gitlab-api.js +67 -0
- package/src/server/gmail.js +60 -0
- package/src/server/gong.js +52 -0
- package/src/server/google-ads-search.js +134 -0
- package/src/server/google-ads.js +80 -0
- package/src/server/google-docs.js +36 -0
- package/src/server/google-drive.js +71 -0
- package/src/server/google-maps-platform.js +90 -0
- package/src/server/google-search-console.js +31 -0
- package/src/server/google-sheets.js +60 -0
- package/src/server/google-slides.js +36 -0
- package/src/server/google.js +61 -0
- package/src/server/granola.js +115 -0
- package/src/server/graphqlOperation.js +15 -0
- package/src/server/hex.js +29 -0
- package/src/server/heygen.js +54 -0
- package/src/server/hubspot.js +85 -0
- package/src/server/incident-io.js +68 -0
- package/src/server/inngest.js +86 -0
- package/src/server/jsonOperation.js +34 -0
- package/src/server/klipy.js +34 -0
- package/src/server/lexware.js +59 -0
- package/src/server/lightspeed.js +82 -0
- package/src/server/linear.js +52 -0
- package/src/server/linkedin.js +74 -0
- package/src/server/mailgun.js +76 -0
- package/src/server/mapbox.js +46 -0
- package/src/server/mcpRegistration.js +41 -0
- package/src/server/mcpTransport.js +60 -0
- package/src/server/microsoft-excel.js +67 -0
- package/src/server/microsoft-fabric.js +81 -0
- package/src/server/microsoft-onedrive.js +58 -0
- package/src/server/microsoft-onenote.js +52 -0
- package/src/server/microsoft-outlook.js +58 -0
- package/src/server/microsoft-powerpoint.js +5 -0
- package/src/server/microsoft-sharepoint.js +46 -0
- package/src/server/microsoft-teams.js +29 -0
- package/src/server/microsoft-word.js +5 -0
- package/src/server/microsoft.js +88 -0
- package/src/server/miro.js +29 -0
- package/src/server/n8n.js +78 -0
- package/src/server/notion.js +76 -0
- package/src/server/oura.js +48 -0
- package/src/server/paddle.js +83 -0
- package/src/server/perplexity.js +15 -0
- package/src/server/pipedrive.js +95 -0
- package/src/server/polar.js +20 -0
- package/src/server/posthog.js +44 -0
- package/src/server/prestashop.js +42 -0
- package/src/server/replicate.js +42 -0
- package/src/server/resend.js +93 -0
- package/src/server/salesforce.js +84 -0
- package/src/server/sanity.js +31 -0
- package/src/server/semrush.js +359 -0
- package/src/server/sentry.js +30 -0
- package/src/server/sevdesk.js +20 -0
- package/src/server/shopify.js +99 -0
- package/src/server/slack.js +143 -0
- package/src/server/snowflake.js +139 -0
- package/src/server/storyblok.js +49 -0
- package/src/server/stripe.js +13 -0
- package/src/server/supabase.js +13 -0
- package/src/server/tally.js +78 -0
- package/src/server/telegram.js +55 -0
- package/src/server/tiktok.js +86 -0
- package/src/server/twilio.js +90 -0
- package/src/server/twitch.js +409 -0
- package/src/server/wave.js +520 -0
- package/src/server/wix.js +1048 -0
- package/src/server/wiz.js +117 -0
- package/src/server/woocommerce.js +412 -0
- package/src/server/wordpress-com.js +236 -0
- package/src/server/wordpress-self-hosted.js +134 -0
- package/src/server/workday.js +136 -0
- package/src/server/x-twitter.js +110 -0
- package/src/server/xero.js +397 -0
- package/src/server/zoho-books.js +90 -0
- package/src/server/zoho-crm.js +89 -0
- package/src/server/zohoOAuth.js +21 -0
- package/src/shared/ai-models.json +8049 -0
- package/src/shared/ai.js +63 -0
- package/src/shared/algolia.js +29 -0
- package/src/shared/amazon-redshift.js +51 -0
- package/src/shared/amplitude.js +28 -0
- package/src/shared/atlassian.js +43 -0
- package/src/shared/aws.js +72 -0
- package/src/shared/canva.js +66 -0
- package/src/shared/chargebee.js +26 -0
- package/src/shared/clickhouse.js +38 -0
- package/src/shared/confidence.js +28 -0
- package/src/shared/databricks.js +33 -0
- package/src/shared/dbt-semantic-layer.js +32 -0
- package/src/shared/definitions.js +140 -0
- package/src/shared/figma.js +21 -0
- package/src/shared/firebase-cloud-messaging.js +45 -0
- package/src/shared/gemini-enterprise.js +33 -0
- package/src/shared/gong.js +33 -0
- package/src/shared/google-ads-search.js +31 -0
- package/src/shared/google-ads.js +28 -0
- package/src/shared/google-maps-platform.js +28 -0
- package/src/shared/google.js +133 -0
- package/src/shared/granola.js +25 -0
- package/src/shared/hex.js +28 -0
- package/src/shared/inngest.js +35 -0
- package/src/shared/lightspeed.js +75 -0
- package/src/shared/linkedin.js +27 -0
- package/src/shared/logo-dev.js +21 -0
- package/src/shared/mapbox.js +38 -0
- package/src/shared/mcp.js +92 -0
- package/src/shared/microsoft-fabric.js +47 -0
- package/src/shared/microsoft.js +231 -0
- package/src/shared/miro.js +27 -0
- package/src/shared/oura.js +23 -0
- package/src/shared/posthog.js +33 -0
- package/src/shared/prestashop.js +23 -0
- package/src/shared/salesforce.js +36 -0
- package/src/shared/semrush.js +24 -0
- package/src/shared/shopify.js +51 -0
- package/src/shared/siteUrl.js +12 -0
- package/src/shared/slack.js +88 -0
- package/src/shared/snowflake.js +55 -0
- package/src/shared/tiktok.js +22 -0
- package/src/shared/tokens.js +747 -0
- package/src/shared/twilio.js +41 -0
- package/src/shared/twitch.js +49 -0
- package/src/shared/wave.js +52 -0
- package/src/shared/wix.js +40 -0
- package/src/shared/wiz.js +41 -0
- package/src/shared/wordpress-com.js +30 -0
- package/src/shared/wordpress.js +69 -0
- package/src/shared/workday.js +50 -0
- package/src/shared/x-twitter.js +19 -0
- package/src/shared/xero.js +46 -0
- package/src/shared/zoho-books.js +39 -0
- package/src/shared/zoho-crm.js +43 -0
- package/src/shared/zoho-regions.js +12 -0
- package/test/ai.test.js +136 -0
- package/test/airtable.test.js +125 -0
- package/test/algolia.test.js +207 -0
- package/test/amazon-redshift.test.js +272 -0
- package/test/amplitude.test.js +239 -0
- package/test/apify.test.js +93 -0
- package/test/apollo-io.test.js +125 -0
- package/test/asana.test.js +99 -0
- package/test/ashby.test.js +97 -0
- package/test/atlassian.test.js +249 -0
- package/test/attention.test.js +79 -0
- package/test/aws.test.js +405 -0
- package/test/brevo.test.js +71 -0
- package/test/calendly.test.js +136 -0
- package/test/canva.test.js +258 -0
- package/test/chargebee.test.js +195 -0
- package/test/clickhouse.test.js +278 -0
- package/test/confidence.test.js +205 -0
- package/test/databricks.test.js +253 -0
- package/test/dbt-semantic-layer.test.js +221 -0
- package/test/designMcp.test.js +336 -0
- package/test/elevenlabs.test.js +52 -0
- package/test/firebase-cloud-messaging.test.js +242 -0
- package/test/firecrawl.test.js +66 -0
- package/test/gemini-enterprise.test.js +218 -0
- package/test/github-api.test.js +167 -0
- package/test/gitlab-api.test.js +160 -0
- package/test/gong.test.js +192 -0
- package/test/google-ads.test.js +350 -0
- package/test/google-maps-platform.test.js +191 -0
- package/test/google.test.js +710 -0
- package/test/granola.test.js +240 -0
- package/test/hex.test.js +253 -0
- package/test/heygen.test.js +121 -0
- package/test/hubspot.test.js +103 -0
- package/test/inngest.test.js +219 -0
- package/test/lightspeed.test.js +250 -0
- package/test/linear.test.js +146 -0
- package/test/linkedin.test.js +243 -0
- package/test/logo-dev.test.js +79 -0
- package/test/mailgun.test.js +107 -0
- package/test/mapbox.test.js +181 -0
- package/test/mcp.test.js +227 -0
- package/test/microsoft-fabric.test.js +258 -0
- package/test/microsoft.test.js +554 -0
- package/test/n8nOAuth.test.js +188 -0
- package/test/notionOAuth.test.js +183 -0
- package/test/oura.test.js +211 -0
- package/test/paddleCatalogue.test.js +51 -0
- package/test/paddlePermissions.test.js +101 -0
- package/test/perplexityComposition.test.js +39 -0
- package/test/pipedriveOAuth.test.js +140 -0
- package/test/posthog.test.js +200 -0
- package/test/prestashop.test.js +207 -0
- package/test/resend.test.js +163 -0
- package/test/salesforce.test.js +276 -0
- package/test/semrush.test.js +479 -0
- package/test/sentry.test.js +35 -0
- package/test/shopify.test.js +247 -0
- package/test/slack.test.js +320 -0
- package/test/snowflake.test.js +391 -0
- package/test/tally.test.js +75 -0
- package/test/telegram.test.js +58 -0
- package/test/tiktok.test.js +243 -0
- package/test/tokens.test.js +1079 -0
- package/test/twilio.test.js +221 -0
- package/test/twitch.test.js +573 -0
- package/test/wave.test.js +678 -0
- package/test/wix.test.js +1099 -0
- package/test/wiz.test.js +185 -0
- package/test/wordpress-com.test.js +469 -0
- package/test/wordpress.test.js +660 -0
- package/test/workday.test.js +314 -0
- package/test/x-twitter.test.js +256 -0
- package/test/xero.test.js +700 -0
- package/test/zoho-books.test.js +253 -0
- package/test/zoho-crm.test.js +223 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# dbt Semantic Layer
|
|
2
|
+
|
|
3
|
+
Import `dbtSemanticLayerProvider` from
|
|
4
|
+
`@jskit-ai/connectors-catalog/server/dbt-semantic-layer`. The library verifies an environment, browses metadata and queries metric values. CLI and Vibe64 use the
|
|
5
|
+
same file and validators. Saving does not contact dbt or run a warehouse query.
|
|
6
|
+
|
|
7
|
+
## Provider setup
|
|
8
|
+
|
|
9
|
+
1. Sign into the dbt account owning the project. Confirm Semantic Layer access,
|
|
10
|
+
configured metrics, a supported warehouse and a deployment environment.
|
|
11
|
+
2. Open **Account settings → Settings → Projects**, select your project, then
|
|
12
|
+
**Semantic Layer → Configure Semantic Layer**. Choose the deployment
|
|
13
|
+
environment containing those metrics and save.
|
|
14
|
+
3. Under **Credentials & service tokens**, choose **Add Semantic Layer
|
|
15
|
+
credential**. Supply a warehouse identity allowed to read the source schemas.
|
|
16
|
+
4. Map a new service token to that credential. Name it for this application and
|
|
17
|
+
grant **Semantic Layer Only** and **Metadata Only** permissions. Save.
|
|
18
|
+
5. Copy the one-time token. In Vibe64 enter `env:DBT_SERVICE_TOKEN` in
|
|
19
|
+
**Service token reference**, save configuration, and use **Set credential in
|
|
20
|
+
Env** to paste and save the token as `DBT_SERVICE_TOKEN`. CLI users supply the
|
|
21
|
+
same backend environment variable; source stores only its reference.
|
|
22
|
+
6. Copy the GraphQL hostname and Environment ID from the Semantic Layer
|
|
23
|
+
connection details. Use the GraphQL host, not the JDBC connection string.
|
|
24
|
+
7. Save and choose **Connect account / Verify again**. **Check connection** only reads saved status. CLI hosts call `connectApiKey`.
|
|
25
|
+
Verification reads the environment's data-platform dialect.
|
|
26
|
+
|
|
27
|
+
The provider's account plan, roles and warehouse credentials remain required.
|
|
28
|
+
[Semantic Layer setup](https://docs.getdbt.com/docs/use-dbt-semantic-layer/setup-sl)
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"schemaVersion": 1,
|
|
33
|
+
"registrations": {},
|
|
34
|
+
"integrations": {
|
|
35
|
+
"metrics": {
|
|
36
|
+
"provider": "dbt-semantic-layer",
|
|
37
|
+
"displayName": "Warehouse metadata",
|
|
38
|
+
"accountMode": "shared",
|
|
39
|
+
"scopes": [],
|
|
40
|
+
"settings": {
|
|
41
|
+
"host": "semantic-layer.cloud.getdbt.com",
|
|
42
|
+
"environmentId": "70506183142324"
|
|
43
|
+
},
|
|
44
|
+
"authentication": {
|
|
45
|
+
"method": "api-key",
|
|
46
|
+
"secretRef": "env:DBT_SERVICE_TOKEN"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The Environment ID is positive decimal **text**, locally bounded to 38 digits.
|
|
54
|
+
Never convert it through a JavaScript number. `assistant` ownership is also
|
|
55
|
+
available; neither mode connects separate accounts for application users.
|
|
56
|
+
|
|
57
|
+
## Hosts and operations
|
|
58
|
+
|
|
59
|
+
The transport sends Bearer-authenticated POST requests to
|
|
60
|
+
`https://<host>/api/graphql`, injecting the configured `environmentId` as a
|
|
61
|
+
`BigInt!` variable. Hosts support North America, EMEA, APAC, dbt single-tenant
|
|
62
|
+
and multi-cell patterns. Copy the actual hostname; these patterns do not prove
|
|
63
|
+
that a particular account exists. Arbitrary domains, URLs, paths and ports are
|
|
64
|
+
rejected. [GraphQL API](https://docs.getdbt.com/docs/dbt-apis/sl-graphql)
|
|
65
|
+
|
|
66
|
+
| Operation | Inputs | Selected result |
|
|
67
|
+
|---|---|---|
|
|
68
|
+
| `queries.create` | `metrics`, optional `groupBy` and `where`, `limit` (default 100, max 10000) | `data.createQuery.queryId` |
|
|
69
|
+
| `queries.get` | `queryId`, `pageNum` (default 1) | `data.query.status`, `totalPages`, decoded `jsonResult` |
|
|
70
|
+
| `environment.read` (verification) | None | `data.environmentInfo.dialect` |
|
|
71
|
+
| `metrics.list` | Paging and optional search | `data.metricsPaginated`, with name, description and type |
|
|
72
|
+
| `dimensions.list` | Required `metrics: [{ name }]`, plus paging/search | `data.dimensionsPaginated`, with name, description and type |
|
|
73
|
+
| `savedQueries.list` | Paging and optional search | `data.savedQueriesPaginated`, with name and description |
|
|
74
|
+
|
|
75
|
+
Paging inputs are `pageNum` (default 1, positive GraphQL integer) and `pageSize`
|
|
76
|
+
(default 20, local limit 100). `search` is at most 512 characters. Dimension
|
|
77
|
+
reads accept 1–100 metric names, each at most 512 characters. Page results keep
|
|
78
|
+
`items`, `pageNum`, `pageSize`, `totalItems` and `totalPages`. The original
|
|
79
|
+
GraphQL envelope is returned. Empty lists and nullable descriptions are valid.
|
|
80
|
+
|
|
81
|
+
Each call makes one request. No automatic paging, polling or retries occur.
|
|
82
|
+
The fixed documents keep caller data in variables. Environment and host are
|
|
83
|
+
configuration values, never operation overrides. Unknown operations, fields,
|
|
84
|
+
malformed pages and partial GraphQL errors fail before data is returned.
|
|
85
|
+
HTTP 401 requires reconnection; 403 reports denied permission; 429 reports
|
|
86
|
+
rate limiting. GraphQL error text is not used to guess authentication state
|
|
87
|
+
or exposed to the caller. Host, environment and token-reference changes require
|
|
88
|
+
reverification; updating the existing secret binding supports token rotation.
|
|
89
|
+
Disconnect removes local connection state, not the provider token.
|
|
90
|
+
|
|
91
|
+
## Application and CLI wiring
|
|
92
|
+
|
|
93
|
+
Compose this provider with the existing connection service, your file-backed
|
|
94
|
+
store, Env resolver and authorization callback. Vibe64 writes the same JSON;
|
|
95
|
+
it is not needed at runtime. After explicit token verification:
|
|
96
|
+
|
|
97
|
+
```js
|
|
98
|
+
const started = await connections.invoke({
|
|
99
|
+
context, integrationId: "metrics", operation: "queries.create",
|
|
100
|
+
input: {
|
|
101
|
+
metrics: [{ name: "order_total" }],
|
|
102
|
+
groupBy: [{ name: "metric_time", grain: "MONTH" }],
|
|
103
|
+
limit: 100
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
const page = await connections.invoke({
|
|
107
|
+
context, integrationId: "metrics", operation: "queries.get",
|
|
108
|
+
input: { queryId: started.data.createQuery.queryId, pageNum: 1 }
|
|
109
|
+
});
|
|
110
|
+
// If pending, schedule a bounded later check using the SAME query ID.
|
|
111
|
+
// If SUCCESSFUL, render page.data.query.jsonResult.data using its table schema.
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Other frameworks use their native HTTP client with the same host, exact string
|
|
115
|
+
Environment ID and backend Env token. They send the documented GraphQL requests
|
|
116
|
+
and implement their own result parsing/access policy. No JSKIT dependency or
|
|
117
|
+
Vibe64 service is required for those applications.
|
|
118
|
+
|
|
119
|
+
## Public, Online and universal URLs
|
|
120
|
+
|
|
121
|
+
This service-token variant has **no OAuth registration or callback URL**.
|
|
122
|
+
There is no universal URL to enter in dbt for it. The customer's VM or custom
|
|
123
|
+
domain can invoke the same backend library with the same configuration. Its
|
|
124
|
+
identity and authorized environment must remain stable when the address changes.
|
|
125
|
+
|
|
126
|
+
Each application owner supplies the customer's token and selected environment
|
|
127
|
+
through its own configuration and private Env. Its backend enforces access and
|
|
128
|
+
usage limits. Separate tokens do not establish independent account or warehouse
|
|
129
|
+
capacity; confirm any required provider arrangement. The adapter does not
|
|
130
|
+
provision provider accounts or warehouse capacity.
|
|
131
|
+
|
|
132
|
+
## Automation assessment
|
|
133
|
+
|
|
134
|
+
| Work | Feasibility |
|
|
135
|
+
|---|---|
|
|
136
|
+
| Write or edit configuration and wire the runtime | AI can use these exports, schema and ordinary file storage with externally supplied references. |
|
|
137
|
+
| Read metadata and query metric values | Implemented API operations; a valid customer token/environment are required. |
|
|
138
|
+
| Create two OAuth applications | Not applicable to the captured service-token flow. |
|
|
139
|
+
| Provision warehouse identities, dbt credentials and service tokens | Account-admin setup is required. The reviewed setup instructions do not establish a complete provisioning API; do not claim automated creation. An authorized operator can follow the portal steps above. |
|
|
140
|
+
| Choose account capacity or grant access | Requires the owner's account and warehouse decisions. No change is made by saving a form. |
|
|
141
|
+
|
|
142
|
+
## Current limits and evidence
|
|
143
|
+
|
|
144
|
+
Queries accept 1–100 metrics (`name`, optional `alias`), up to 100 dimensions
|
|
145
|
+
(`name`, optional `grain`: DAY/WEEK/MONTH/QUARTER/YEAR), and up to 20 trusted
|
|
146
|
+
`where: [{sql}]` filters. For example, group `order_total` by `metric_time` at
|
|
147
|
+
MONTH grain and filter with `{{ Dimension('metric_time') }} >= '2026-01-01'`.
|
|
148
|
+
The fixed GraphQL document uses variables, but SQL templates remain executable
|
|
149
|
+
provider expressions: the backend must construct trusted filters and enforce
|
|
150
|
+
customer access. Never interpolate arbitrary app-user text into them.
|
|
151
|
+
|
|
152
|
+
Submit once using `queries.create`; retain its ID and call `queries.get` at a
|
|
153
|
+
bounded interval while pending. SUCCESSFUL returns a decoded pandas TABLE object:
|
|
154
|
+
rows are in `jsonResult.data`, column metadata in `jsonResult.schema.fields`.
|
|
155
|
+
Request each page explicitly through `totalPages`; the provider normally uses
|
|
156
|
+
1024 rows per page. Local JSON pages are bounded to 5 MiB/1024 rows. FAILED raises
|
|
157
|
+
a generic error; inspect dbt for details. No retries or background polling are
|
|
158
|
+
performed, and a timed-out submission may still execute and consume warehouse
|
|
159
|
+
capacity. The app owns submission deduplication, deadlines and authorization.
|
|
160
|
+
|
|
161
|
+
**LIMITATIONS:** dbt recommends JSON for testing/validation because of its
|
|
162
|
+
performance cost. This path supports small metric tables; large production
|
|
163
|
+
analytics should use native dbt/Arrow tooling. Arrow decoding, SQL compilation,
|
|
164
|
+
saved-query execution, webhooks and app-user login are not supplied. For example,
|
|
165
|
+
an app can fetch monthly revenue and render its own chart, but this connector
|
|
166
|
+
does not build the chart or a continuous warehouse dashboard. Editor
|
|
167
|
+
Codex/OpenCode attachment remains deferred. Personal access
|
|
168
|
+
tokens are another documented provider option; the captured service-token setup
|
|
169
|
+
is the supported initial onboarding journey.
|
|
170
|
+
|
|
171
|
+
Controlled HTTP/file tests cover configuration, host restrictions, precise IDs,
|
|
172
|
+
metadata, empty pages, ownership, restart, rotation, malformed responses,
|
|
173
|
+
permission failures, cancellation and timeout. Live account setup, actual data
|
|
174
|
+
access and generated applications are not exercised. Editor form proof is
|
|
175
|
+
recorded separately when the installed package has passed browser checks.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# ElevenLabs
|
|
2
|
+
|
|
3
|
+
Import `elevenlabsProvider` from `@jskit-ai/connectors-catalog/server/elevenlabs`.
|
|
4
|
+
This connector discovers voices/models, generates audio and creates Instant Voice Clones.
|
|
5
|
+
|
|
6
|
+
## Set up access
|
|
7
|
+
|
|
8
|
+
1. Select the intended ElevenLabs workspace. Choose **Developers** in the
|
|
9
|
+
sidebar and open **API Keys**.
|
|
10
|
+
2. Create a named key. Keep restrictions enabled and grant read access to the
|
|
11
|
+
User read and Voices read. Add Models read and Text to Speech for synthesis; Voices write is required only for cloning.
|
|
12
|
+
3. Set an available credit limit and expiry appropriate for the application.
|
|
13
|
+
Copy the key when created; the full value is not displayed later.
|
|
14
|
+
4. Store the value outside source as `ELEVENLABS_API_KEY`. The configuration slot
|
|
15
|
+
uses provider `elevenlabs`, mode `shared` or `assistant`, empty `scopes`, and
|
|
16
|
+
`authentication: { "method": "api-key", "secretRef": "env:ELEVENLABS_API_KEY" }`.
|
|
17
|
+
5. Save and choose **Connect account / Verify again**, or call `connectApiKey` from your CLI host. **Check connection** only reads saved status. Verification reads the account without generating audio; it does not prove speech/cloning permissions.
|
|
18
|
+
Edit/revoke keys through the key's **•••** menu. See
|
|
19
|
+
[API-key setup](https://elevenlabs.io/docs/help-center/technical/how-do-i-authorize-myself-using-an-api-key).
|
|
20
|
+
|
|
21
|
+
## Runtime and AI composition
|
|
22
|
+
|
|
23
|
+
`account.read` uses `GET /v1/user` as the authenticated verification request.
|
|
24
|
+
`voices.list` uses `GET /v2/voices`, with `search`, `page_size` (1–100, default
|
|
25
|
+
10), and `next_page_token`. Results preserve the pagination envelope, including
|
|
26
|
+
`has_more` and `next_page_token`. Requests carry `xi-api-key`. See
|
|
27
|
+
[Account](https://elevenlabs.io/docs/api-reference/user/get) and
|
|
28
|
+
[Voices](https://elevenlabs.io/docs/api-reference/voices/search).
|
|
29
|
+
|
|
30
|
+
Compose the [API-key source pattern](../patterns/api-key-connection/PATTERN.md)
|
|
31
|
+
with this provider and an application authorizer. Keep resource ownership in
|
|
32
|
+
the application. A CLI edits the same portable JSON as Vibe64; neither requires
|
|
33
|
+
a database to store connection state.
|
|
34
|
+
|
|
35
|
+
## Provisioning automation and capacity
|
|
36
|
+
|
|
37
|
+
An AI can prepare source/configuration and wire these operations once a key
|
|
38
|
+
is provided; generation and cloning require explicit application authorization. This pass has not verified automated key/service-account issuance
|
|
39
|
+
for every plan; use console-assisted setup for the initial credential. Dedicated
|
|
40
|
+
service accounts can isolate resources where available, but that alone does not
|
|
41
|
+
prove separate workspace credits. See [Provider security guidance](https://elevenlabs.io/docs/eleven-api/guides/how-to/best-practices/security).
|
|
42
|
+
|
|
43
|
+
The application owner supplies its workspace/service credential through private
|
|
44
|
+
Env and verifies the actual billing and concurrency boundaries. Retain provider
|
|
45
|
+
key limits. Two key names in one workspace do not create independent capacity.
|
|
46
|
+
|
|
47
|
+
Fixtures cover both endpoints, the custom header, cursor encoding, page limits,
|
|
48
|
+
encrypted file restart, rotation and permission/rate-limit failures. No real
|
|
49
|
+
ElevenLabs requests or audio generation were performed.
|
|
50
|
+
|
|
51
|
+
## Speech and Instant Voice Cloning
|
|
52
|
+
|
|
53
|
+
- `models.list`: `GET /v1/models`; choose a model with `can_do_text_to_speech`.
|
|
54
|
+
- `speech.create`: `POST /v1/text-to-speech/{voiceId}`; required `voiceId`,
|
|
55
|
+
`model_id` and `text` (1–5000 characters). Optional `language_code` and bounded
|
|
56
|
+
`voice_settings` (stability, similarity_boost, style, use_speaker_boost, speed).
|
|
57
|
+
Output choices: mp3_44100_128 (default), mp3_22050_32, pcm_16000, ulaw_8000.
|
|
58
|
+
The result contains `bodyBase64`, `contentType`, `size`; decode it on the
|
|
59
|
+
backend and return audio through an authorized route. PCM/µ-law are raw formats,
|
|
60
|
+
not universally browser-playable files. MP3 is suitable for an HTML audio player.
|
|
61
|
+
- `voices.clone`: `POST /v1/voices/add`, multipart `files` plus `name`, optional
|
|
62
|
+
`description` and `remove_background_noise` (false by default). The portable
|
|
63
|
+
input supplies 1–5 files as `{name, contentType, base64}`, total at most 16 MiB,
|
|
64
|
+
with canonical base64 and a maximum 12 MiB encoded per file. The app must supply
|
|
65
|
+
`consentConfirmed: true` after obtaining speaker permission; this local flag
|
|
66
|
+
is not sent as a provider field. Response `requires_verification: true` means
|
|
67
|
+
the voice is not yet ready. Complete provider verification; never bypass it.
|
|
68
|
+
|
|
69
|
+
[Speech API](https://elevenlabs.io/docs/api-reference/text-to-speech/convert),
|
|
70
|
+
[Instant clone API](https://elevenlabs.io/docs/api-reference/voices/ivc/create).
|
|
71
|
+
For console cloning, open Voices > Add a new voice > Instant Voice Clone,
|
|
72
|
+
provide clear samples, a name and confirm rights. An eligible plan/voice slot
|
|
73
|
+
is required; [Instant cloning is available from Starter](https://help.elevenlabs.io/hc/en-us/articles/13313587528849-What-is-My-Voices).
|
|
74
|
+
|
|
75
|
+
```js
|
|
76
|
+
const audio = await connections.invoke({ context, integrationId: "voice",
|
|
77
|
+
operation: "speech.create", input: {
|
|
78
|
+
voiceId: selectedVoiceId, model_id: selectedModelId, text: approvedText
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
const bytes = Buffer.from(audio.bodyBase64, "base64");
|
|
82
|
+
// Serve bytes through your app's authenticated audio route, using contentType.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
The generated app owns authorization, voice selection, samples, storage, credit
|
|
86
|
+
limits and playback. Other frameworks use their native HTTP/multipart clients
|
|
87
|
+
with the same backend Env key and documented endpoints; no JSKIT runtime or
|
|
88
|
+
Vibe64 gateway is needed. API-key setup has no OAuth client or callback URL.
|
|
89
|
+
|
|
90
|
+
**LIMITATIONS:** Audio is buffered up to 16 MiB; it is not low-latency streaming.
|
|
91
|
+
Use native ElevenLabs streaming for live conversation or larger outputs.
|
|
92
|
+
Professional Voice Cloning, realtime agents, regional residency and provider
|
|
93
|
+
verification workflows are not implemented here. For example, an app can generate
|
|
94
|
+
an appointment announcement with an authorized cloned voice, but configuring this
|
|
95
|
+
connector does not create a phone agent or let Vibe64's coding assistant use it.
|
|
96
|
+
Editor assistant attachment is deferred. A failed or timed-out POST may already
|
|
97
|
+
have consumed credits or created a clone; no automatic retry is performed.
|
|
98
|
+
|
|
99
|
+
Focused fixtures additionally verify playable audio bytes/content type, malformed
|
|
100
|
+
and oversized responses, clone multipart/consent/verification status, denied
|
|
101
|
+
permissions, rate limiting and uncertain submissions. No live audio, account or
|
|
102
|
+
generated app was used.
|
package/docs/figma.md
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Figma remote MCP
|
|
2
|
+
|
|
3
|
+
Checked against Figma's public documentation and OAuth discovery on 9 September
|
|
4
|
+
2026. This fragment connects an assistant owner's account, discovers tools and
|
|
5
|
+
invokes an explicitly authorized tool. It uses the remote HTTP server, not the
|
|
6
|
+
desktop MCP server or a personal access token for Figma's REST API.
|
|
7
|
+
|
|
8
|
+
## Prerequisites and registration
|
|
9
|
+
|
|
10
|
+
Figma currently admits clients listed in its MCP catalogue. A new client must
|
|
11
|
+
request approval through the waitlist linked from the
|
|
12
|
+
[MCP introduction](https://developers.figma.com/docs/figma-mcp-server/).
|
|
13
|
+
The registration endpoint's existence does not remove that requirement.
|
|
14
|
+
|
|
15
|
+
1. Open that introduction and follow **join the waitlist** in the client-access
|
|
16
|
+
notice. Supply the intended assistant client and usage details requested by
|
|
17
|
+
Figma. Wait for acceptance; this package cannot approve a client.
|
|
18
|
+
2. Choose the callback implemented by your backend or CLI host. For your own
|
|
19
|
+
application, this is its actual HTTPS callback, or a loopback callback where
|
|
20
|
+
accepted. The host must retain the pending owner and state through consent.
|
|
21
|
+
3. After approval, use Vibe64's **OAuth client registration** section to copy
|
|
22
|
+
the endpoint and JSON body into an HTTP client and send one POST with
|
|
23
|
+
Content-Type application/json. Alternatively invoke `registerFigmaClient`
|
|
24
|
+
once from a trusted setup command.
|
|
25
|
+
It sends `client_name`, the exact callback, the authorization-code/refresh
|
|
26
|
+
grant types and `mcp:connect` to Figma's advertised registration endpoint.
|
|
27
|
+
It requests confidential client authentication using `client_secret_post`.
|
|
28
|
+
4. Put the returned client ID in `registrations.figma.clientId`. Store the
|
|
29
|
+
returned secret and callback in your host's existing secret/environment
|
|
30
|
+
facilities; place only references in `clientSecretRef` and `callbackUrlRef`.
|
|
31
|
+
5. In Vibe64, open **Integrations → Add Figma**. Enter **Client ID**,
|
|
32
|
+
**Client secret reference** and **Callback URL reference**. Keep **Assistant
|
|
33
|
+
access** and **Use Figma MCP tools**, then save. Use **Set credential in Env** for the returned secret and **Set
|
|
34
|
+
callback in Env** for the exact registered URL. Saving edits the same JSON
|
|
35
|
+
a CLI user writes; it does not register the client or start consent.
|
|
36
|
+
6. Your host calls `beginAuthorization` and opens its URL. Sign into Figma and
|
|
37
|
+
review the consent screen. Its callback calls `completeAuthorization` for
|
|
38
|
+
the original authenticated owner. The runtime verifies tool discovery before
|
|
39
|
+
saving a connected grant.
|
|
40
|
+
|
|
41
|
+
There is no separate REST-app dashboard step in this MCP registration fragment.
|
|
42
|
+
Figma's [remote-server instructions](https://developers.figma.com/docs/figma-mcp-server/remote-server-installation/)
|
|
43
|
+
show the consent UI for supported clients. Do not copy another client's ID to
|
|
44
|
+
bypass the approval process.
|
|
45
|
+
|
|
46
|
+
## Runtime and CLI composition
|
|
47
|
+
|
|
48
|
+
Import `figmaProvider` and `registerFigmaClient` from
|
|
49
|
+
`@jskit-ai/connectors-catalog/server/figma`. Use the
|
|
50
|
+
[assistant OAuth pattern](../patterns/assistant-mcp-oauth/PATTERN.md) with the
|
|
51
|
+
existing connection service, environment resolver and encrypted file store.
|
|
52
|
+
|
|
53
|
+
```js
|
|
54
|
+
const registration = await registerFigmaClient({
|
|
55
|
+
clientName: "My design assistant",
|
|
56
|
+
callbackUrl: configuredCallback
|
|
57
|
+
});
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The setup caller authorizes this operation and stores `registration.clientSecret`
|
|
61
|
+
securely. Do not print the result or run registration for each sign-in. On an
|
|
62
|
+
ambiguous failure, check with the provider before trying to create another client.
|
|
63
|
+
|
|
64
|
+
The provider's resource is `https://mcp.figma.com/mcp`. Authorization uses
|
|
65
|
+
`https://www.figma.com/oauth/mcp`; exchange/refresh use
|
|
66
|
+
`https://api.figma.com/v1/oauth/token`. Discovery advertises an authorization
|
|
67
|
+
response issuer, which the runtime requires and validates. PKCE, state,
|
|
68
|
+
single-use attempts, refresh, isolation and token storage belong to the shared
|
|
69
|
+
connection implementation.
|
|
70
|
+
[Authorization metadata](https://api.figma.com/.well-known/oauth-authorization-server),
|
|
71
|
+
[resource metadata](https://mcp.figma.com/.well-known/oauth-protected-resource).
|
|
72
|
+
|
|
73
|
+
Call `tools.list` first; use the returned schemas to validate inputs for
|
|
74
|
+
`tools.call`. The host must approve the exact name and arguments, including file
|
|
75
|
+
and node identity. `mcp:connect` is a broad MCP permission, not a read-only
|
|
76
|
+
guarantee. A host that only needs design reads should disallow write tools in its
|
|
77
|
+
own policy. Preserve the tool's `isError` result and surface provider failures.
|
|
78
|
+
Discovery does not prove access to a particular design.
|
|
79
|
+
|
|
80
|
+
## Connection ownership and callbacks
|
|
81
|
+
|
|
82
|
+
Register the real callback implemented by the runtime that owns this connection.
|
|
83
|
+
For an application integration, use the application's assigned hosting URL as
|
|
84
|
+
the initial origin and its implemented callback path. Store the exact callback
|
|
85
|
+
in its Env reference and provider registration. A domain change requires updating
|
|
86
|
+
both values if the callback URL changes; retain the application identity and its
|
|
87
|
+
persistent grants when moving hosts. Public Vibe64, Online and CLI users supply
|
|
88
|
+
their own registrations through this same contract.
|
|
89
|
+
See the [callback guide](../../connectors-core/docs/oauth-callbacks.md).
|
|
90
|
+
|
|
91
|
+
The registration and grants belong to the application or explicitly authorized
|
|
92
|
+
assistant host consuming Figma. Provider approval and usage quotas still apply;
|
|
93
|
+
separate client IDs do not establish separate capacity or broader permissions.
|
|
94
|
+
|
|
95
|
+
## Automation assessment and limits
|
|
96
|
+
|
|
97
|
+
The helper can automate the documented client-registration request and field
|
|
98
|
+
validation after eligibility is established. AI can prepare configuration,
|
|
99
|
+
callback handling and permitted tool policy. Provider approval, account sign-in
|
|
100
|
+
and user consent require the appropriate human/provider action. No account,
|
|
101
|
+
registration, consent or tool call was performed against Figma in these tests.
|
|
102
|
+
|
|
103
|
+
Tests use controlled OAuth/MCP responses with real encrypted file persistence.
|
|
104
|
+
They exercise issuer binding, refresh, owner isolation, replay, invalid inputs,
|
|
105
|
+
tool authorization, cancellation, safe failures and registration behavior.
|
|
106
|
+
Local desktop MCP, automatic chat attachment, login and resources/prompts
|
|
107
|
+
are not implemented by this fragment.
|
|
108
|
+
|
|
109
|
+
## Design context and topology
|
|
110
|
+
|
|
111
|
+
After connection, discover the current tool schemas and explicitly authorize the
|
|
112
|
+
selected file and node before calling `get_design_context`. A Figma frame link
|
|
113
|
+
identifies that selection. Preserve returned text, images and tool errors for
|
|
114
|
+
the authorized assistant host. The returned context is provider-owned, not a
|
|
115
|
+
fixed JSKIT design schema; fixtures demonstrate consumption rather than asserting
|
|
116
|
+
an immutable live tool signature. The host chooses the target framework and
|
|
117
|
+
performs code generation itself.
|
|
118
|
+
|
|
119
|
+
**LIMITATIONS:** This supplies remote MCP only. Installed Vibe64 and Online can
|
|
120
|
+
both use the remote server with their own approved registration. Desktop MCP is
|
|
121
|
+
local to the machine running Figma Desktop and the consuming client: on Online,
|
|
122
|
+
127.0.0.1 means the VPS, not the user's laptop. Native desktop clients may configure
|
|
123
|
+
Figma Desktop independently; no tunnel/proxy is provided here. Government-only
|
|
124
|
+
desktop deployments are outside this remote connector.
|
|
125
|
+
|
|
126
|
+
Editor coding-assistant attachment is deferred. For example, an explicitly wired
|
|
127
|
+
assistant host can receive an authorized booking-card layout and screenshot, but
|
|
128
|
+
saving Figma in Vibe64 does not yet let Codex/OpenCode reproduce that frame.
|
|
129
|
+
App-user login, Make resources/prompts and a visual Figma editor are not supplied.
|
|
130
|
+
Other frameworks use a native MCP/OAuth client and the same config/Env contract;
|
|
131
|
+
PHP/other runtime code does not belong in JSKIT. Provider approval remains external;
|
|
132
|
+
new-client registration is a guided setup/helper request, not automatic admission.
|