@every-app/sdk 0.2.0 → 0.3.0-rc.10
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/LICENSE +21 -0
- package/README.md +609 -3
- package/dist/cloudflare/catalogSettings.generated.d.ts +81 -0
- package/dist/cloudflare/catalogSettings.generated.d.ts.map +1 -0
- package/dist/cloudflare/catalogSettings.generated.js +174 -0
- package/dist/cloudflare/index.d.ts +23 -0
- package/dist/cloudflare/index.d.ts.map +1 -0
- package/dist/cloudflare/index.js +24 -0
- package/dist/cloudflare/sentinel.d.ts +127 -0
- package/dist/cloudflare/sentinel.d.ts.map +1 -0
- package/dist/cloudflare/sentinel.js +85 -0
- package/dist/cloudflare/worker.d.ts +805 -0
- package/dist/cloudflare/worker.d.ts.map +1 -0
- package/dist/cloudflare/worker.js +997 -0
- package/dist/dev/index.d.ts +8 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +7 -0
- package/dist/dev/keypair.d.ts +26 -0
- package/dist/dev/keypair.d.ts.map +1 -0
- package/dist/dev/keypair.js +62 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/internal/aiDefault.d.ts +204 -0
- package/dist/internal/aiDefault.d.ts.map +1 -0
- package/dist/internal/aiDefault.js +334 -0
- package/dist/internal/aiProviders.d.ts +72 -0
- package/dist/internal/aiProviders.d.ts.map +1 -0
- package/dist/internal/aiProviders.js +233 -0
- package/dist/internal/appSettings.d.ts +315 -0
- package/dist/internal/appSettings.d.ts.map +1 -0
- package/dist/internal/appSettings.js +549 -0
- package/dist/internal/audit.d.ts +108 -0
- package/dist/internal/audit.d.ts.map +1 -0
- package/dist/internal/audit.js +235 -0
- package/dist/internal/capabilities.d.ts +3174 -0
- package/dist/internal/capabilities.d.ts.map +1 -0
- package/dist/internal/capabilities.js +1110 -0
- package/dist/internal/catalog/commerce.d.ts +394 -0
- package/dist/internal/catalog/commerce.d.ts.map +1 -0
- package/dist/internal/catalog/commerce.js +477 -0
- package/dist/internal/catalog/comms.d.ts +375 -0
- package/dist/internal/catalog/comms.d.ts.map +1 -0
- package/dist/internal/catalog/comms.js +520 -0
- package/dist/internal/catalog/index.d.ts +1973 -0
- package/dist/internal/catalog/index.d.ts.map +1 -0
- package/dist/internal/catalog/index.js +19 -0
- package/dist/internal/catalog/inference.d.ts +393 -0
- package/dist/internal/catalog/inference.d.ts.map +1 -0
- package/dist/internal/catalog/inference.js +460 -0
- package/dist/internal/catalog/infra.d.ts +423 -0
- package/dist/internal/catalog/infra.d.ts.map +1 -0
- package/dist/internal/catalog/infra.js +543 -0
- package/dist/internal/catalog/search.d.ts +400 -0
- package/dist/internal/catalog/search.d.ts.map +1 -0
- package/dist/internal/catalog/search.js +463 -0
- package/dist/internal/devProviders.d.ts +49 -0
- package/dist/internal/devProviders.d.ts.map +1 -0
- package/dist/internal/devProviders.js +80 -0
- package/dist/internal/email.d.ts +280 -0
- package/dist/internal/email.d.ts.map +1 -0
- package/dist/internal/email.js +613 -0
- package/dist/internal/events.d.ts +193 -0
- package/dist/internal/events.d.ts.map +1 -0
- package/dist/internal/events.js +367 -0
- package/dist/internal/gatewaySettings.d.ts +83 -0
- package/dist/internal/gatewaySettings.d.ts.map +1 -0
- package/dist/internal/gatewaySettings.js +215 -0
- package/dist/internal/identity.d.ts +57 -5
- package/dist/internal/identity.d.ts.map +1 -1
- package/dist/internal/identity.js +99 -22
- package/dist/internal/index.d.ts +22 -1
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +22 -1
- package/dist/internal/members.d.ts +36 -0
- package/dist/internal/members.d.ts.map +1 -0
- package/dist/internal/members.js +7 -0
- package/dist/internal/oauthClient.d.ts +61 -0
- package/dist/internal/oauthClient.d.ts.map +1 -0
- package/dist/internal/oauthClient.js +133 -0
- package/dist/internal/oauthPresets.d.ts +33 -0
- package/dist/internal/oauthPresets.d.ts.map +1 -0
- package/dist/internal/oauthPresets.js +1064 -0
- package/dist/internal/oauthScopes.d.ts +172 -0
- package/dist/internal/oauthScopes.d.ts.map +1 -0
- package/dist/internal/oauthScopes.js +510 -0
- package/dist/internal/oauthSpec.d.ts +102 -0
- package/dist/internal/oauthSpec.d.ts.map +1 -0
- package/dist/internal/oauthSpec.js +789 -0
- package/dist/internal/organizationName.d.ts +18 -0
- package/dist/internal/organizationName.d.ts.map +1 -0
- package/dist/internal/organizationName.js +24 -0
- package/dist/internal/protocol.d.ts +150 -3
- package/dist/internal/protocol.d.ts.map +1 -1
- package/dist/internal/protocol.js +163 -2
- package/dist/internal/providerApps.d.ts +75 -0
- package/dist/internal/providerApps.d.ts.map +1 -0
- package/dist/internal/providerApps.js +59 -0
- package/dist/internal/providerRegistry.d.ts +218 -0
- package/dist/internal/providerRegistry.d.ts.map +1 -0
- package/dist/internal/providerRegistry.js +432 -0
- package/dist/internal/providerSpec.d.ts +66 -0
- package/dist/internal/providerSpec.d.ts.map +1 -0
- package/dist/internal/providerSpec.js +1154 -0
- package/dist/internal/remoteMcp.d.ts +188 -0
- package/dist/internal/remoteMcp.d.ts.map +1 -0
- package/dist/internal/remoteMcp.js +543 -0
- package/dist/internal/signInProviders.d.ts +104 -0
- package/dist/internal/signInProviders.d.ts.map +1 -0
- package/dist/internal/signInProviders.js +245 -0
- package/dist/internal/tools.d.ts +115 -0
- package/dist/internal/tools.d.ts.map +1 -0
- package/dist/internal/tools.js +80 -0
- package/dist/manifest.d.ts +238 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +30 -0
- package/dist/server/ai.d.ts +111 -0
- package/dist/server/ai.d.ts.map +1 -0
- package/dist/server/ai.js +145 -0
- package/dist/server/aiBinding.d.ts +68 -0
- package/dist/server/aiBinding.d.ts.map +1 -0
- package/dist/server/aiBinding.js +294 -0
- package/dist/server/attribution.d.ts +43 -0
- package/dist/server/attribution.d.ts.map +1 -0
- package/dist/server/attribution.js +75 -0
- package/dist/server/authorizeUrl.d.ts +43 -0
- package/dist/server/authorizeUrl.d.ts.map +1 -0
- package/dist/server/authorizeUrl.js +106 -0
- package/dist/server/connectUrl.d.ts +21 -0
- package/dist/server/connectUrl.d.ts.map +1 -0
- package/dist/server/connectUrl.js +37 -0
- package/dist/server/context.d.ts +68 -0
- package/dist/server/context.d.ts.map +1 -0
- package/dist/server/context.js +117 -0
- package/dist/server/emailBinding.d.ts +72 -0
- package/dist/server/emailBinding.d.ts.map +1 -0
- package/dist/server/emailBinding.js +124 -0
- package/dist/server/emit.d.ts +63 -0
- package/dist/server/emit.d.ts.map +1 -0
- package/dist/server/emit.js +101 -0
- package/dist/server/env.d.ts +44 -0
- package/dist/server/env.d.ts.map +1 -0
- package/dist/server/env.js +1 -0
- package/dist/server/everyApp.d.ts +65 -19
- package/dist/server/everyApp.d.ts.map +1 -1
- package/dist/server/everyApp.js +195 -30
- package/dist/server/fromMcpTools.d.ts +89 -0
- package/dist/server/fromMcpTools.d.ts.map +1 -0
- package/dist/server/fromMcpTools.js +192 -0
- package/dist/server/gatewayFetch.d.ts +54 -14
- package/dist/server/gatewayFetch.d.ts.map +1 -1
- package/dist/server/gatewayFetch.js +201 -37
- package/dist/server/gatewayUrl.d.ts +13 -0
- package/dist/server/gatewayUrl.d.ts.map +1 -0
- package/dist/server/gatewayUrl.js +34 -0
- package/dist/server/index.d.ts +23 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +19 -2
- package/dist/server/integrationFetch.d.ts +162 -0
- package/dist/server/integrationFetch.d.ts.map +1 -0
- package/dist/server/integrationFetch.js +688 -0
- package/dist/server/listMembers.d.ts +32 -0
- package/dist/server/listMembers.d.ts.map +1 -0
- package/dist/server/listMembers.js +71 -0
- package/dist/server/nodeServer.d.ts +48 -0
- package/dist/server/nodeServer.d.ts.map +1 -0
- package/dist/server/nodeServer.js +45 -0
- package/dist/server/refusal.d.ts +55 -0
- package/dist/server/refusal.d.ts.map +1 -0
- package/dist/server/refusal.js +193 -0
- package/dist/server/sendEmail.d.ts +39 -0
- package/dist/server/sendEmail.d.ts.map +1 -0
- package/dist/server/sendEmail.js +114 -0
- package/dist/server/tools.d.ts +184 -0
- package/dist/server/tools.d.ts.map +1 -0
- package/dist/server/tools.js +347 -0
- package/dist/server/toolsEndpoint.d.ts +32 -0
- package/dist/server/toolsEndpoint.d.ts.map +1 -0
- package/dist/server/toolsEndpoint.js +237 -0
- package/dist/tanstack-start/index.d.ts +9 -0
- package/dist/tanstack-start/index.d.ts.map +1 -0
- package/dist/tanstack-start/index.js +29 -0
- package/dist/testing/index.d.ts +93 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +156 -0
- package/package.json +42 -8
- package/dist/server/mcp.d.ts +0 -66
- package/dist/server/mcp.d.ts.map +0 -1
- package/dist/server/mcp.js +0 -147
|
@@ -0,0 +1,543 @@
|
|
|
1
|
+
export const INFRA = {
|
|
2
|
+
// Not CLOUDFLARE_API_TOKEN, the CLI's own deploy-login variable (packages/cli/src/lib/cf/account.ts): a person setting that name from their environment would hand apps the deploy token (TODO.md).
|
|
3
|
+
cloudflare: {
|
|
4
|
+
mode: "api_key",
|
|
5
|
+
label: "Cloudflare",
|
|
6
|
+
description: "Cloudflare's API: zones, DNS, Workers, R2, D1, KV and the rest of an account.",
|
|
7
|
+
auth: {
|
|
8
|
+
kind: "bearer",
|
|
9
|
+
secret: "CLOUDFLARE_PROVIDER_API_TOKEN",
|
|
10
|
+
},
|
|
11
|
+
docs: "https://dash.cloudflare.com/profile/api-tokens",
|
|
12
|
+
api: "https://developers.cloudflare.com/api/",
|
|
13
|
+
hosts: ["api.cloudflare.com"],
|
|
14
|
+
data: "account",
|
|
15
|
+
access: ["read", "write"],
|
|
16
|
+
readMethods: ["GET", "HEAD"],
|
|
17
|
+
writeMethods: ["POST", "PUT", "PATCH", "DELETE"],
|
|
18
|
+
accountWidePaths: [
|
|
19
|
+
["client", "v4", "user"],
|
|
20
|
+
["client", "v4", "memberships"],
|
|
21
|
+
["client", "v4", "organizations"],
|
|
22
|
+
["client", "v4", "tenants"],
|
|
23
|
+
["members"],
|
|
24
|
+
["tokens"],
|
|
25
|
+
["roles"],
|
|
26
|
+
["iam"],
|
|
27
|
+
["subscriptions"],
|
|
28
|
+
["payment-methods"],
|
|
29
|
+
["pay-invoice"],
|
|
30
|
+
["receipts"],
|
|
31
|
+
["invoices"],
|
|
32
|
+
["client-secret"],
|
|
33
|
+
["billing"],
|
|
34
|
+
["logs", "audit"],
|
|
35
|
+
["audit_logs"],
|
|
36
|
+
["alerting", "v3", "destinations", "webhooks"],
|
|
37
|
+
["ai", "run"],
|
|
38
|
+
["ai", "v1"],
|
|
39
|
+
],
|
|
40
|
+
hint: "An API token from My Profile > API Tokens with only the permissions the app needs; the Gateway sends it as a bearer token. A token on the Gateway's own account can read and change the Gateway, so keep it narrow or use another account.",
|
|
41
|
+
secrets: [
|
|
42
|
+
{
|
|
43
|
+
name: "CLOUDFLARE_PROVIDER_API_TOKEN",
|
|
44
|
+
hint: "A user or account-owned API token scoped to the zones and permissions the app needs, never a Global API Key.",
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
smoke: {
|
|
48
|
+
method: "GET",
|
|
49
|
+
path: "/client/v4/user/tokens/verify",
|
|
50
|
+
expect: [200],
|
|
51
|
+
free: true,
|
|
52
|
+
note: "For a user token; account-owned tokens use /client/v4/accounts/<id>/tokens/verify. Account-wide, so run it from the person's terminal.",
|
|
53
|
+
},
|
|
54
|
+
rate: {
|
|
55
|
+
note: "1,200 requests per 5 minutes per user or account token; 200 a second per IP; GraphQL by query cost, at most 320 per 5 minutes.",
|
|
56
|
+
},
|
|
57
|
+
example: "list the DNS records for my domain",
|
|
58
|
+
verified: {
|
|
59
|
+
on: "2026-10-25",
|
|
60
|
+
how: "docs",
|
|
61
|
+
},
|
|
62
|
+
tags: ["infrastructure", "dns", "hosting"],
|
|
63
|
+
},
|
|
64
|
+
posthog: {
|
|
65
|
+
mode: "api_key",
|
|
66
|
+
label: "PostHog",
|
|
67
|
+
description: "Product analytics: insights, feature flags, persons, cohorts, experiments and HogQL queries.",
|
|
68
|
+
auth: {
|
|
69
|
+
kind: "bearer",
|
|
70
|
+
secret: "POSTHOG_PERSONAL_API_KEY",
|
|
71
|
+
},
|
|
72
|
+
docs: "https://us.posthog.com/settings/user-api-keys",
|
|
73
|
+
api: "https://posthog.com/docs/api",
|
|
74
|
+
hosts: ["us.posthog.com", "eu.posthog.com"],
|
|
75
|
+
data: "account",
|
|
76
|
+
access: ["read", "write"],
|
|
77
|
+
readMethods: ["GET", "HEAD"],
|
|
78
|
+
writeMethods: ["POST", "PUT", "PATCH", "DELETE"],
|
|
79
|
+
accountWidePaths: [
|
|
80
|
+
["api", "users"],
|
|
81
|
+
["api", "user"],
|
|
82
|
+
["api", "organizations"],
|
|
83
|
+
["api", "billing"],
|
|
84
|
+
["api", "revoke_leaked_key"],
|
|
85
|
+
["project_secret_api_keys"],
|
|
86
|
+
["billing"],
|
|
87
|
+
["activity_log"],
|
|
88
|
+
["advanced_activity_logs"],
|
|
89
|
+
["hog_functions"],
|
|
90
|
+
["batch_exports"],
|
|
91
|
+
["integrations"],
|
|
92
|
+
],
|
|
93
|
+
hint: "A personal API key from Settings > Personal API keys, with only the scopes the app needs; the Gateway sends it as a bearer token to us.posthog.com or eu.posthog.com. HogQL queries are POSTs, so an app that runs them asks for write.",
|
|
94
|
+
secrets: [
|
|
95
|
+
{
|
|
96
|
+
name: "POSTHOG_PERSONAL_API_KEY",
|
|
97
|
+
hint: "A personal API key (phx_...) with only the scopes the app needs, from the region the project lives in; never the project token.",
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
smoke: {
|
|
101
|
+
method: "GET",
|
|
102
|
+
host: "us.posthog.com",
|
|
103
|
+
path: "/api/users/@me/",
|
|
104
|
+
expect: [200],
|
|
105
|
+
free: true,
|
|
106
|
+
note: "Needs the user:read scope; use eu.posthog.com for an EU project. Account-wide, so run it from the person's terminal.",
|
|
107
|
+
},
|
|
108
|
+
rate: {
|
|
109
|
+
perMinute: 480,
|
|
110
|
+
note: "Create, read, update and delete endpoints 480 a minute and 4,800 an hour; analytics endpoints 240 a minute; the query endpoint 2,400 an hour.",
|
|
111
|
+
},
|
|
112
|
+
example: "list the feature flags in my project and whether each is on",
|
|
113
|
+
verified: {
|
|
114
|
+
on: "2026-10-25",
|
|
115
|
+
how: "docs",
|
|
116
|
+
},
|
|
117
|
+
tags: ["analytics", "product", "feature-flags"],
|
|
118
|
+
},
|
|
119
|
+
mixpanel: {
|
|
120
|
+
mode: "api_key",
|
|
121
|
+
label: "Mixpanel",
|
|
122
|
+
description: "Product analytics: saved reports, profiles, raw event export and event import.",
|
|
123
|
+
auth: {
|
|
124
|
+
kind: "basic",
|
|
125
|
+
secret: "MIXPANEL_SERVICE_ACCOUNT_SECRET",
|
|
126
|
+
as: "password",
|
|
127
|
+
user: {
|
|
128
|
+
secret: "MIXPANEL_SERVICE_ACCOUNT_USERNAME",
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
docs: "https://mixpanel.com/settings/org#serviceaccounts",
|
|
132
|
+
api: "https://docs.mixpanel.com/reference/overview",
|
|
133
|
+
hosts: [
|
|
134
|
+
"mixpanel.com",
|
|
135
|
+
"eu.mixpanel.com",
|
|
136
|
+
"in.mixpanel.com",
|
|
137
|
+
"data.mixpanel.com",
|
|
138
|
+
"data-eu.mixpanel.com",
|
|
139
|
+
"data-in.mixpanel.com",
|
|
140
|
+
"api.mixpanel.com",
|
|
141
|
+
"api-eu.mixpanel.com",
|
|
142
|
+
"api-in.mixpanel.com",
|
|
143
|
+
],
|
|
144
|
+
data: "account",
|
|
145
|
+
access: ["read", "write"],
|
|
146
|
+
readMethods: ["GET", "HEAD"],
|
|
147
|
+
writeMethods: ["POST", "PUT", "PATCH", "DELETE"],
|
|
148
|
+
accountWidePaths: [
|
|
149
|
+
["api", "app", "me"],
|
|
150
|
+
["api", "app", "organizations"],
|
|
151
|
+
["service-accounts"],
|
|
152
|
+
["data-retrievals"],
|
|
153
|
+
["data-deletions"],
|
|
154
|
+
["nessie"],
|
|
155
|
+
],
|
|
156
|
+
hint: "A service account from Organization Settings > Service Accounts; the Gateway sends its username and secret as HTTP Basic. Most calls also need the project_id parameter, and an EU or India project uses its own hosts.",
|
|
157
|
+
secrets: [
|
|
158
|
+
{
|
|
159
|
+
name: "MIXPANEL_SERVICE_ACCOUNT_USERNAME",
|
|
160
|
+
hint: "The service account's username, shown when it is created in Organization Settings > Service Accounts.",
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: "MIXPANEL_SERVICE_ACCOUNT_SECRET",
|
|
164
|
+
hint: "The service account's secret, shown once when it is created; give the account the narrowest role and only the projects the app needs.",
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
smoke: {
|
|
168
|
+
method: "GET",
|
|
169
|
+
host: "mixpanel.com",
|
|
170
|
+
path: "/api/app/me",
|
|
171
|
+
expect: [200],
|
|
172
|
+
free: true,
|
|
173
|
+
note: "Lists the organizations and projects the service account reaches. Account-wide, so run it from the person's terminal.",
|
|
174
|
+
},
|
|
175
|
+
rate: {
|
|
176
|
+
note: "Per project: Query API 60 queries an hour, 5 at once; Raw Data Export 60 an hour, 3 a second, 100 at once; ingestion about 2 GB a minute.",
|
|
177
|
+
},
|
|
178
|
+
example: "pull last week's numbers from my saved Insights report",
|
|
179
|
+
verified: {
|
|
180
|
+
on: "2026-10-25",
|
|
181
|
+
how: "docs",
|
|
182
|
+
},
|
|
183
|
+
tags: ["analytics", "product"],
|
|
184
|
+
},
|
|
185
|
+
segment: {
|
|
186
|
+
mode: "api_key",
|
|
187
|
+
label: "Segment",
|
|
188
|
+
description: "Sends identify, track, page, group and alias events to a Segment source.",
|
|
189
|
+
auth: {
|
|
190
|
+
kind: "basic",
|
|
191
|
+
secret: "SEGMENT_WRITE_KEY",
|
|
192
|
+
as: "username",
|
|
193
|
+
},
|
|
194
|
+
docs: "https://www.twilio.com/docs/segment/connections/find-writekey",
|
|
195
|
+
api: "https://www.twilio.com/docs/segment/connections/sources/catalog/libraries/server/http-api",
|
|
196
|
+
hosts: ["api.segment.io", "events.eu1.segmentapis.com"],
|
|
197
|
+
data: "account",
|
|
198
|
+
access: ["write"],
|
|
199
|
+
readMethods: [],
|
|
200
|
+
writeMethods: ["POST"],
|
|
201
|
+
accountWidePaths: [],
|
|
202
|
+
hint: "The write key of an HTTP API source, from the source's Settings > API Keys; the Gateway sends it as the Basic username with an empty password. It only sends events; an EU workspace uses events.eu1.segmentapis.com.",
|
|
203
|
+
secrets: [
|
|
204
|
+
{
|
|
205
|
+
name: "SEGMENT_WRITE_KEY",
|
|
206
|
+
hint: "The write key of an HTTP API source, from the source's Settings > API Keys.",
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
rate: {
|
|
210
|
+
perSecond: 1000,
|
|
211
|
+
note: "Recommended ceiling per workspace; 32 KB per call, 500 KB and 2,500 events per batch.",
|
|
212
|
+
},
|
|
213
|
+
example: "record a Signed Up event for a new user",
|
|
214
|
+
verified: {
|
|
215
|
+
on: "2026-10-25",
|
|
216
|
+
how: "docs",
|
|
217
|
+
},
|
|
218
|
+
tags: ["analytics", "events", "cdp"],
|
|
219
|
+
},
|
|
220
|
+
supabase: {
|
|
221
|
+
mode: "api_key",
|
|
222
|
+
label: "Supabase",
|
|
223
|
+
description: "A Supabase project's Postgres REST API and Storage, with its secret key.",
|
|
224
|
+
auth: {
|
|
225
|
+
kind: "header",
|
|
226
|
+
secret: "SUPABASE_SECRET_KEY",
|
|
227
|
+
header: "apikey",
|
|
228
|
+
},
|
|
229
|
+
docs: "https://supabase.com/dashboard/project/_/settings/api-keys",
|
|
230
|
+
api: "https://supabase.com/docs/guides/api",
|
|
231
|
+
hosts: [],
|
|
232
|
+
hostSetting: "SUPABASE_HOST",
|
|
233
|
+
data: "account",
|
|
234
|
+
access: ["read", "write"],
|
|
235
|
+
readMethods: ["GET", "HEAD"],
|
|
236
|
+
writeMethods: ["POST", "PUT", "PATCH", "DELETE"],
|
|
237
|
+
accountWidePaths: [["auth", "v1", "admin"], ["pg"]],
|
|
238
|
+
hint: "A secret key (sb_secret_...) from Settings > API Keys and the project's host; the Gateway sends the key in the apikey header. The key bypasses Row Level Security, and RPC calls are POSTs, so they need write.",
|
|
239
|
+
secrets: [
|
|
240
|
+
{
|
|
241
|
+
name: "SUPABASE_SECRET_KEY",
|
|
242
|
+
hint: "A secret key (sb_secret_...) from Settings > API Keys, made for this Gateway alone; it bypasses Row Level Security.",
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
name: "SUPABASE_HOST",
|
|
246
|
+
hint: "The project's host, <project-ref>.supabase.co, from the project URL.",
|
|
247
|
+
},
|
|
248
|
+
],
|
|
249
|
+
smoke: {
|
|
250
|
+
method: "GET",
|
|
251
|
+
path: "/rest/v1/",
|
|
252
|
+
expect: [200],
|
|
253
|
+
free: true,
|
|
254
|
+
note: "The REST API's OpenAPI root, which only a secret key may read; sent to the host in SUPABASE_HOST.",
|
|
255
|
+
},
|
|
256
|
+
example: "list the ten newest rows in my orders table",
|
|
257
|
+
verified: {
|
|
258
|
+
on: "2026-10-25",
|
|
259
|
+
how: "docs",
|
|
260
|
+
},
|
|
261
|
+
tags: ["database", "postgres", "storage"],
|
|
262
|
+
},
|
|
263
|
+
turso: {
|
|
264
|
+
mode: "api_key",
|
|
265
|
+
label: "Turso",
|
|
266
|
+
description: "Turso's Platform API: databases, groups, locations and usage for one organization.",
|
|
267
|
+
auth: {
|
|
268
|
+
kind: "bearer",
|
|
269
|
+
secret: "TURSO_API_TOKEN",
|
|
270
|
+
},
|
|
271
|
+
docs: "https://docs.turso.tech/api-reference/authentication",
|
|
272
|
+
api: "https://docs.turso.tech/api-reference/introduction",
|
|
273
|
+
hosts: ["api.turso.tech"],
|
|
274
|
+
data: "account",
|
|
275
|
+
access: ["read", "write"],
|
|
276
|
+
readMethods: ["GET", "HEAD"],
|
|
277
|
+
writeMethods: ["POST", "PATCH", "DELETE"],
|
|
278
|
+
accountWidePaths: [
|
|
279
|
+
["auth"],
|
|
280
|
+
["api-tokens"],
|
|
281
|
+
["members"],
|
|
282
|
+
["invites"],
|
|
283
|
+
["invoices"],
|
|
284
|
+
["subscription"],
|
|
285
|
+
["plans"],
|
|
286
|
+
["audit-logs"],
|
|
287
|
+
["v1", "user"],
|
|
288
|
+
],
|
|
289
|
+
hint: "An organization-scoped Platform API token (turso auth api-tokens mint <name> --org <org>); the Gateway sends it as a bearer token to api.turso.tech. It manages databases and cannot query them: that is the turso-db entry.",
|
|
290
|
+
secrets: [
|
|
291
|
+
{
|
|
292
|
+
name: "TURSO_API_TOKEN",
|
|
293
|
+
hint: "An organization-scoped or group-scoped Platform API token from turso auth api-tokens mint <name> --org <org>; never an unrestricted one.",
|
|
294
|
+
},
|
|
295
|
+
],
|
|
296
|
+
smoke: {
|
|
297
|
+
method: "GET",
|
|
298
|
+
path: "/v1/auth/validate",
|
|
299
|
+
expect: [200],
|
|
300
|
+
free: true,
|
|
301
|
+
note: "Account-wide, so run it from the person's terminal.",
|
|
302
|
+
},
|
|
303
|
+
example: "list the databases in my Turso organization",
|
|
304
|
+
verified: {
|
|
305
|
+
on: "2026-10-25",
|
|
306
|
+
how: "docs",
|
|
307
|
+
},
|
|
308
|
+
tags: ["database", "sqlite"],
|
|
309
|
+
},
|
|
310
|
+
// The data plane, one database per entry (the host is the operator's); `turso` is the platform API.
|
|
311
|
+
"turso-db": {
|
|
312
|
+
mode: "api_key",
|
|
313
|
+
label: "Turso database",
|
|
314
|
+
description: "SQL over HTTP to one Turso database: queries, dumps and migration status.",
|
|
315
|
+
auth: {
|
|
316
|
+
kind: "bearer",
|
|
317
|
+
secret: "TURSO_DB_AUTH_TOKEN",
|
|
318
|
+
},
|
|
319
|
+
docs: "https://docs.turso.tech/sdk/authorization/tokens",
|
|
320
|
+
api: "https://docs.turso.tech/sdk/http/reference",
|
|
321
|
+
hosts: [],
|
|
322
|
+
hostSetting: "TURSO_DB_HOST",
|
|
323
|
+
data: "account",
|
|
324
|
+
access: ["read", "write"],
|
|
325
|
+
readMethods: ["GET", "HEAD"],
|
|
326
|
+
writeMethods: ["POST"],
|
|
327
|
+
accountWidePaths: [],
|
|
328
|
+
hint: "A database token (turso db tokens create <db>) and the database's HTTP host; the Gateway sends the token as a bearer token. Every query is a POST to /v2/pipeline, so an app that queries asks for write; a --read-only token keeps it to reads.",
|
|
329
|
+
secrets: [
|
|
330
|
+
{
|
|
331
|
+
name: "TURSO_DB_AUTH_TOKEN",
|
|
332
|
+
hint: "A database token from turso db tokens create <db>, with --read-only or fine-grained permissions when the app only reads.",
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
name: "TURSO_DB_HOST",
|
|
336
|
+
hint: "The database's HTTP host, <db>-<org>.turso.io, from turso db show <db> --http-url.",
|
|
337
|
+
},
|
|
338
|
+
],
|
|
339
|
+
example: "count the rows in my users table",
|
|
340
|
+
verified: {
|
|
341
|
+
on: "2026-10-25",
|
|
342
|
+
how: "docs",
|
|
343
|
+
},
|
|
344
|
+
tags: ["database", "sqlite", "sql"],
|
|
345
|
+
},
|
|
346
|
+
neon: {
|
|
347
|
+
mode: "api_key",
|
|
348
|
+
label: "Neon",
|
|
349
|
+
description: "Neon's management API: Postgres projects, branches, databases, roles and endpoints.",
|
|
350
|
+
auth: {
|
|
351
|
+
kind: "bearer",
|
|
352
|
+
secret: "NEON_API_KEY",
|
|
353
|
+
},
|
|
354
|
+
docs: "https://neon.com/docs/manage/api-keys",
|
|
355
|
+
api: "https://neon.com/docs/reference/api",
|
|
356
|
+
hosts: ["console.neon.tech"],
|
|
357
|
+
data: "account",
|
|
358
|
+
access: ["read", "write"],
|
|
359
|
+
readMethods: ["GET", "HEAD"],
|
|
360
|
+
writeMethods: ["POST", "PUT", "PATCH", "DELETE"],
|
|
361
|
+
accountWidePaths: [
|
|
362
|
+
["api", "v2", "auth"],
|
|
363
|
+
["api", "v2", "organizations"],
|
|
364
|
+
["users", "me"],
|
|
365
|
+
["api_keys"],
|
|
366
|
+
["members"],
|
|
367
|
+
["invitations"],
|
|
368
|
+
["permissions"],
|
|
369
|
+
["transfer_requests"],
|
|
370
|
+
["billing"],
|
|
371
|
+
["consumption_history"],
|
|
372
|
+
["connection_uri"],
|
|
373
|
+
["reveal_password"],
|
|
374
|
+
["reset_password"],
|
|
375
|
+
["credentials"],
|
|
376
|
+
["realtime", "secret"],
|
|
377
|
+
["rotate_secret"],
|
|
378
|
+
["auth", "keys"],
|
|
379
|
+
["auth", "webhooks"],
|
|
380
|
+
["oauth_providers"],
|
|
381
|
+
["email_server"],
|
|
382
|
+
["email_provider"],
|
|
383
|
+
["auth", "plugins"],
|
|
384
|
+
],
|
|
385
|
+
hint: "A project-scoped or organization API key from Settings > API keys; the Gateway sends it as a bearer token to console.neon.tech. It manages projects and branches; the database itself takes Postgres credentials, not this key.",
|
|
386
|
+
secrets: [
|
|
387
|
+
{
|
|
388
|
+
name: "NEON_API_KEY",
|
|
389
|
+
hint: "A project-scoped or organization API key from Settings > API keys; a project-scoped key reaches one project only.",
|
|
390
|
+
},
|
|
391
|
+
],
|
|
392
|
+
smoke: {
|
|
393
|
+
method: "GET",
|
|
394
|
+
path: "/api/v2/auth",
|
|
395
|
+
expect: [200],
|
|
396
|
+
free: true,
|
|
397
|
+
note: "Says which credential and identity the key is. Account-wide, so run it from the person's terminal.",
|
|
398
|
+
},
|
|
399
|
+
rate: {
|
|
400
|
+
perMinute: 700,
|
|
401
|
+
note: "About 11 a second, with bursts of 40 a second per route.",
|
|
402
|
+
},
|
|
403
|
+
example: "list my Neon projects and their branches",
|
|
404
|
+
verified: {
|
|
405
|
+
on: "2026-10-25",
|
|
406
|
+
how: "docs",
|
|
407
|
+
},
|
|
408
|
+
tags: ["database", "postgres"],
|
|
409
|
+
},
|
|
410
|
+
pinecone: {
|
|
411
|
+
mode: "api_key",
|
|
412
|
+
label: "Pinecone",
|
|
413
|
+
description: "Vector database: indexes, namespaces, vectors and documents, plus hosted embedding and rerank.",
|
|
414
|
+
auth: {
|
|
415
|
+
kind: "header",
|
|
416
|
+
secret: "PINECONE_API_KEY",
|
|
417
|
+
header: "Api-Key",
|
|
418
|
+
},
|
|
419
|
+
docs: "https://app.pinecone.io/organizations/-/projects/-/keys",
|
|
420
|
+
api: "https://docs.pinecone.io/reference/api/introduction",
|
|
421
|
+
hosts: ["api.pinecone.io"],
|
|
422
|
+
hostSetting: "PINECONE_HOST",
|
|
423
|
+
data: "account",
|
|
424
|
+
access: ["read", "write"],
|
|
425
|
+
readMethods: ["GET", "HEAD"],
|
|
426
|
+
writeMethods: ["POST", "PATCH", "DELETE"],
|
|
427
|
+
accountWidePaths: [["admin"], ["api-keys"]],
|
|
428
|
+
hint: "An API key from the project's API keys page and the host of the index the app uses; the Gateway sends the key in the Api-Key header to api.pinecone.io and that host. Query, search, embed and rerank are POSTs, so an app that uses them asks for write.",
|
|
429
|
+
secrets: [
|
|
430
|
+
{
|
|
431
|
+
name: "PINECONE_API_KEY",
|
|
432
|
+
hint: "An API key from the project's API keys page in the Pinecone console.",
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
name: "PINECONE_HOST",
|
|
436
|
+
hint: "The host of the index the app uses, <index>-<id>.svc.<env>.pinecone.io, from describe_index or the console.",
|
|
437
|
+
},
|
|
438
|
+
],
|
|
439
|
+
smoke: {
|
|
440
|
+
method: "GET",
|
|
441
|
+
host: "api.pinecone.io",
|
|
442
|
+
path: "/indexes",
|
|
443
|
+
expect: [200],
|
|
444
|
+
free: true,
|
|
445
|
+
note: "Lists the project's indexes; the app sends X-Pinecone-Api-Version itself.",
|
|
446
|
+
},
|
|
447
|
+
example: "list my Pinecone indexes and their dimensions",
|
|
448
|
+
verified: {
|
|
449
|
+
on: "2026-10-25",
|
|
450
|
+
how: "docs",
|
|
451
|
+
},
|
|
452
|
+
tags: ["vector", "database", "search"],
|
|
453
|
+
},
|
|
454
|
+
mapbox: {
|
|
455
|
+
mode: "api_key",
|
|
456
|
+
label: "Mapbox",
|
|
457
|
+
description: "Maps and location: geocoding, directions, styles, tilesets and datasets.",
|
|
458
|
+
auth: {
|
|
459
|
+
kind: "query",
|
|
460
|
+
secret: "MAPBOX_ACCESS_TOKEN",
|
|
461
|
+
param: "access_token",
|
|
462
|
+
},
|
|
463
|
+
docs: "https://console.mapbox.com/account/access-tokens/",
|
|
464
|
+
api: "https://docs.mapbox.com/api/overview/",
|
|
465
|
+
hosts: ["api.mapbox.com"],
|
|
466
|
+
data: "account",
|
|
467
|
+
access: ["read", "write"],
|
|
468
|
+
readMethods: ["GET", "HEAD"],
|
|
469
|
+
writeMethods: ["POST", "PUT", "PATCH", "DELETE"],
|
|
470
|
+
accountWidePaths: [["tokens"]],
|
|
471
|
+
hint: "An access token from Access tokens in the Mapbox console, with only the scopes the app needs; the Gateway adds it to every call as the access_token parameter.",
|
|
472
|
+
secrets: [
|
|
473
|
+
{
|
|
474
|
+
name: "MAPBOX_ACCESS_TOKEN",
|
|
475
|
+
hint: "An access token with only the scopes the app needs, from Access tokens in the Mapbox console.",
|
|
476
|
+
},
|
|
477
|
+
],
|
|
478
|
+
rate: {
|
|
479
|
+
note: "Per token and per API: Geocoding 1,000 a minute, Directions 300, Static Images 1,250; the Tokens API 100 a minute per account.",
|
|
480
|
+
},
|
|
481
|
+
example: "turn a street address into map coordinates",
|
|
482
|
+
verified: {
|
|
483
|
+
on: "2026-10-25",
|
|
484
|
+
how: "docs",
|
|
485
|
+
},
|
|
486
|
+
tags: ["maps", "geocoding", "location"],
|
|
487
|
+
},
|
|
488
|
+
openweather: {
|
|
489
|
+
mode: "api_key",
|
|
490
|
+
label: "OpenWeather",
|
|
491
|
+
description: "Weather data: current conditions, forecasts, One Call, history and weather map tiles.",
|
|
492
|
+
auth: {
|
|
493
|
+
kind: "query",
|
|
494
|
+
secret: "OPENWEATHER_API_KEY",
|
|
495
|
+
param: "appid",
|
|
496
|
+
},
|
|
497
|
+
docs: "https://home.openweathermap.org/api_keys",
|
|
498
|
+
api: "https://openweathermap.org/api",
|
|
499
|
+
hosts: [
|
|
500
|
+
"api.openweathermap.org",
|
|
501
|
+
"pro.openweathermap.org",
|
|
502
|
+
"history.openweathermap.org",
|
|
503
|
+
"tile.openweathermap.org",
|
|
504
|
+
"maps.openweathermap.org",
|
|
505
|
+
],
|
|
506
|
+
data: "per-call",
|
|
507
|
+
access: ["read"],
|
|
508
|
+
readMethods: ["GET", "HEAD"],
|
|
509
|
+
accountWidePaths: [
|
|
510
|
+
["data", "3", "stations"],
|
|
511
|
+
["data", "3", "measurements"],
|
|
512
|
+
],
|
|
513
|
+
hint: "An API key from the API keys tab of your OpenWeather account; the Gateway adds it to every call as the appid parameter. Paid products (hourly forecast, history, Weather Maps 2.0) need a plan that includes them.",
|
|
514
|
+
secrets: [
|
|
515
|
+
{
|
|
516
|
+
name: "OPENWEATHER_API_KEY",
|
|
517
|
+
hint: "An API key from the API keys tab of the OpenWeather account; a new key can take up to two hours to activate.",
|
|
518
|
+
},
|
|
519
|
+
],
|
|
520
|
+
smoke: {
|
|
521
|
+
method: "GET",
|
|
522
|
+
host: "api.openweathermap.org",
|
|
523
|
+
path: "/data/2.5/weather?lat=51.51&lon=-0.13",
|
|
524
|
+
expect: [200],
|
|
525
|
+
free: true,
|
|
526
|
+
note: "Counts one call against the plan's quota; free within it. A bad or not yet active key answers 401.",
|
|
527
|
+
},
|
|
528
|
+
cost: {
|
|
529
|
+
unit: "call",
|
|
530
|
+
note: "One Call API 3.0 includes 1,000 calls a day free, then is paid per call.",
|
|
531
|
+
},
|
|
532
|
+
rate: {
|
|
533
|
+
perMinute: 60,
|
|
534
|
+
note: "The Free plan answers 429 past 60 calls a minute.",
|
|
535
|
+
},
|
|
536
|
+
example: "get the current weather in Lisbon",
|
|
537
|
+
verified: {
|
|
538
|
+
on: "2026-10-25",
|
|
539
|
+
how: "docs",
|
|
540
|
+
},
|
|
541
|
+
tags: ["weather", "forecast"],
|
|
542
|
+
},
|
|
543
|
+
};
|