@volter/world-core 2.0.0

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.
Files changed (180) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +29 -0
  3. package/app-route.cjs +154 -0
  4. package/app-route.d.cts +7 -0
  5. package/attach.cjs +80 -0
  6. package/dist/app-route.cjs +154 -0
  7. package/dist/app-route.d.cts +7 -0
  8. package/dist/attach.cjs +80 -0
  9. package/dist/generated/pack-facts.json +4306 -0
  10. package/dist/inject.cjs +1097 -0
  11. package/dist/network-policy.cjs +92 -0
  12. package/dist/network-policy.d.cts +10 -0
  13. package/dist/src/actions.d.ts +276 -0
  14. package/dist/src/actions.js +436 -0
  15. package/dist/src/ancestry.d.ts +22 -0
  16. package/dist/src/ancestry.js +238 -0
  17. package/dist/src/args.d.ts +3 -0
  18. package/dist/src/args.js +12 -0
  19. package/dist/src/blob-store.d.ts +55 -0
  20. package/dist/src/blob-store.js +186 -0
  21. package/dist/src/brand-tokens.d.ts +2 -0
  22. package/dist/src/brand-tokens.js +17 -0
  23. package/dist/src/changeset.d.ts +431 -0
  24. package/dist/src/changeset.js +0 -0
  25. package/dist/src/client-bundle.d.ts +1 -0
  26. package/dist/src/client-bundle.js +28 -0
  27. package/dist/src/credential.d.ts +38 -0
  28. package/dist/src/credential.js +114 -0
  29. package/dist/src/derived-core.d.ts +452 -0
  30. package/dist/src/derived-core.js +782 -0
  31. package/dist/src/derived.d.ts +84 -0
  32. package/dist/src/derived.js +122 -0
  33. package/dist/src/emit.d.ts +106 -0
  34. package/dist/src/emit.js +157 -0
  35. package/dist/src/executor.d.ts +120 -0
  36. package/dist/src/executor.js +387 -0
  37. package/dist/src/file-response.d.ts +3 -0
  38. package/dist/src/file-response.js +22 -0
  39. package/dist/src/fork.d.ts +26 -0
  40. package/dist/src/fork.js +68 -0
  41. package/dist/src/git/history.d.ts +36 -0
  42. package/dist/src/git/history.js +298 -0
  43. package/dist/src/git/index.d.ts +6 -0
  44. package/dist/src/git/index.js +6 -0
  45. package/dist/src/git/inflate.d.ts +11 -0
  46. package/dist/src/git/inflate.js +194 -0
  47. package/dist/src/git/objects.d.ts +64 -0
  48. package/dist/src/git/objects.js +161 -0
  49. package/dist/src/git/pack.d.ts +14 -0
  50. package/dist/src/git/pack.js +199 -0
  51. package/dist/src/git/refs.d.ts +19 -0
  52. package/dist/src/git/refs.js +35 -0
  53. package/dist/src/git/smart-http.d.ts +45 -0
  54. package/dist/src/git/smart-http.js +223 -0
  55. package/dist/src/hash.d.ts +38 -0
  56. package/dist/src/hash.js +48 -0
  57. package/dist/src/head.d.ts +140 -0
  58. package/dist/src/head.js +313 -0
  59. package/dist/src/history.d.ts +76 -0
  60. package/dist/src/history.js +322 -0
  61. package/dist/src/index.d.ts +73 -0
  62. package/dist/src/index.js +98 -0
  63. package/dist/src/lifecycle.d.ts +1 -0
  64. package/dist/src/lifecycle.js +8 -0
  65. package/dist/src/log.d.ts +254 -0
  66. package/dist/src/log.js +801 -0
  67. package/dist/src/mirror-shell.d.ts +2 -0
  68. package/dist/src/mirror-shell.js +13 -0
  69. package/dist/src/observe.d.ts +49 -0
  70. package/dist/src/observe.js +148 -0
  71. package/dist/src/pack-assets.d.ts +30 -0
  72. package/dist/src/pack-assets.js +88 -0
  73. package/dist/src/packRegistry.d.ts +374 -0
  74. package/dist/src/packRegistry.js +142 -0
  75. package/dist/src/placeholder-remote.d.ts +22 -0
  76. package/dist/src/placeholder-remote.js +86 -0
  77. package/dist/src/proxy.d.ts +25 -0
  78. package/dist/src/proxy.js +155 -0
  79. package/dist/src/rateBudget.d.ts +367 -0
  80. package/dist/src/rateBudget.js +925 -0
  81. package/dist/src/references.d.ts +18 -0
  82. package/dist/src/references.js +27 -0
  83. package/dist/src/remote-execute.d.ts +22 -0
  84. package/dist/src/remote-execute.js +1 -0
  85. package/dist/src/resource-blob.d.ts +10 -0
  86. package/dist/src/resource-blob.js +56 -0
  87. package/dist/src/scenario.d.ts +197 -0
  88. package/dist/src/scenario.js +425 -0
  89. package/dist/src/schemas.d.ts +78 -0
  90. package/dist/src/schemas.js +50 -0
  91. package/dist/src/serve-http.d.ts +48 -0
  92. package/dist/src/serve-http.js +340 -0
  93. package/dist/src/serve.d.ts +147 -0
  94. package/dist/src/serve.js +507 -0
  95. package/dist/src/shared-blob-index.d.ts +4 -0
  96. package/dist/src/shared-blob-index.js +126 -0
  97. package/dist/src/state-system.d.ts +70 -0
  98. package/dist/src/state-system.js +90 -0
  99. package/dist/src/storage.d.ts +101 -0
  100. package/dist/src/storage.js +337 -0
  101. package/dist/src/twin-fetch.d.ts +64 -0
  102. package/dist/src/twin-fetch.js +91 -0
  103. package/dist/src/types.d.ts +40 -0
  104. package/dist/src/types.js +1 -0
  105. package/dist/src/v1-removed.d.ts +159 -0
  106. package/dist/src/v1-removed.js +124 -0
  107. package/dist/src/volter-home.d.ts +5 -0
  108. package/dist/src/volter-home.js +10 -0
  109. package/dist/src/world-clock.d.ts +4 -0
  110. package/dist/src/world-clock.js +32 -0
  111. package/dist/src/world-env.d.ts +3 -0
  112. package/dist/src/world-env.js +22 -0
  113. package/dist/src/world-store-sql.d.ts +27 -0
  114. package/dist/src/world-store-sql.js +86 -0
  115. package/dist/src/world-store.d.ts +168 -0
  116. package/dist/src/world-store.js +475 -0
  117. package/dist/src/worldConfig.d.ts +9 -0
  118. package/dist/src/worldConfig.js +17 -0
  119. package/dist/stream-bridge.cjs +80 -0
  120. package/dist/vendor-hosts.cjs +200 -0
  121. package/generated/pack-facts.json +4306 -0
  122. package/inject.cjs +1097 -0
  123. package/network-policy.cjs +92 -0
  124. package/network-policy.d.cts +10 -0
  125. package/package.json +103 -0
  126. package/src/actions.ts +564 -0
  127. package/src/ancestry.ts +213 -0
  128. package/src/args.ts +14 -0
  129. package/src/blob-store.ts +185 -0
  130. package/src/brand-tokens.ts +17 -0
  131. package/src/changeset.ts +1032 -0
  132. package/src/client-bundle.ts +29 -0
  133. package/src/credential.ts +140 -0
  134. package/src/derived-core.ts +1004 -0
  135. package/src/derived.ts +176 -0
  136. package/src/emit.ts +242 -0
  137. package/src/executor.ts +431 -0
  138. package/src/file-response.ts +22 -0
  139. package/src/fork.ts +89 -0
  140. package/src/git/history.ts +177 -0
  141. package/src/git/index.ts +6 -0
  142. package/src/git/inflate.ts +125 -0
  143. package/src/git/objects.ts +110 -0
  144. package/src/git/pack.ts +105 -0
  145. package/src/git/refs.ts +25 -0
  146. package/src/git/smart-http.ts +149 -0
  147. package/src/hash.ts +66 -0
  148. package/src/head.ts +318 -0
  149. package/src/history.ts +246 -0
  150. package/src/index.ts +323 -0
  151. package/src/lifecycle.ts +8 -0
  152. package/src/log.ts +793 -0
  153. package/src/mirror-shell.ts +15 -0
  154. package/src/observe.ts +130 -0
  155. package/src/pack-assets.ts +81 -0
  156. package/src/packRegistry.ts +408 -0
  157. package/src/placeholder-remote.ts +81 -0
  158. package/src/proxy.ts +183 -0
  159. package/src/rateBudget.ts +1115 -0
  160. package/src/references.ts +46 -0
  161. package/src/remote-execute.ts +26 -0
  162. package/src/resource-blob.ts +57 -0
  163. package/src/scenario.ts +479 -0
  164. package/src/schemas.ts +56 -0
  165. package/src/serve-http.ts +299 -0
  166. package/src/serve.ts +618 -0
  167. package/src/shared-blob-index.ts +108 -0
  168. package/src/state-system.ts +115 -0
  169. package/src/storage.ts +407 -0
  170. package/src/twin-fetch.ts +147 -0
  171. package/src/types.ts +50 -0
  172. package/src/v1-removed.ts +172 -0
  173. package/src/volter-home.ts +11 -0
  174. package/src/world-clock.ts +33 -0
  175. package/src/world-env.ts +18 -0
  176. package/src/world-store-sql.ts +118 -0
  177. package/src/world-store.ts +572 -0
  178. package/src/worldConfig.ts +27 -0
  179. package/stream-bridge.cjs +80 -0
  180. package/vendor-hosts.cjs +200 -0
@@ -0,0 +1,4306 @@
1
+ {
2
+ "//": "GENERATED by scripts/pack-facts.ts — do not hand-edit. Compiled from each pack's `pack: TwinPack` descriptor; pack-facts.test.ts fails on drift.",
3
+ "packs": {
4
+ "ahrefs": {
5
+ "adoption": {
6
+ "pypi": [],
7
+ "sdks": [
8
+ "@ahrefs/mcp"
9
+ ],
10
+ "scopes": [
11
+ "@ahrefs/"
12
+ ],
13
+ "envStems": [
14
+ "AHREFS"
15
+ ]
16
+ },
17
+ "hosts": [
18
+ {
19
+ "host": "api.ahrefs.com"
20
+ }
21
+ ],
22
+ "archetype": "crud",
23
+ "protocol": {
24
+ "declared": "2",
25
+ "major": 2,
26
+ "standing": "current"
27
+ },
28
+ "transport": "rest",
29
+ "resources": [
30
+ "target",
31
+ "usage",
32
+ "cache",
33
+ "audit"
34
+ ],
35
+ "serveExport": "createAhrefsTwinServer"
36
+ },
37
+ "ai-gateway": {
38
+ "adoption": {
39
+ "pypi": [],
40
+ "sdks": [
41
+ "@ai-sdk/gateway"
42
+ ],
43
+ "envStems": [
44
+ "AIGATEWAY"
45
+ ]
46
+ },
47
+ "hostsNone": "SDK is base-URL-configured (@ai-sdk/gateway baseURL / AI_GATEWAY_BASE_URL) — worlds wire the twin through explicit endpoint config; no injector entry grounded yet",
48
+ "archetype": "generative",
49
+ "protocol": {
50
+ "declared": "2",
51
+ "major": 2,
52
+ "standing": "current"
53
+ },
54
+ "transport": "rest",
55
+ "resources": [
56
+ "generation"
57
+ ],
58
+ "serveExport": "createAiGatewayTwinServer"
59
+ },
60
+ "airtable": {
61
+ "adoption": {
62
+ "pypi": [
63
+ "pyairtable",
64
+ "airtable-python-wrapper"
65
+ ],
66
+ "sdks": [
67
+ "airtable"
68
+ ],
69
+ "envStems": [
70
+ "AIRTABLE"
71
+ ]
72
+ },
73
+ "hosts": [
74
+ {
75
+ "host": "api.airtable.com"
76
+ }
77
+ ],
78
+ "archetype": "crud",
79
+ "protocol": {
80
+ "major": 1,
81
+ "standing": "deprecated"
82
+ },
83
+ "transport": "rest",
84
+ "resources": [
85
+ "base",
86
+ "table",
87
+ "record",
88
+ "comment"
89
+ ],
90
+ "endpointEnvNone": "the injector intercepts api.airtable.com (see `hosts`), which covers every client with no env at all; AIRTABLE_ENDPOINT_URL is real (Airtable.default_config(), airtable@0.12.2) but injecting it alongside interception is the strictly narrower answer — one wiring, not two.",
91
+ "serveExport": "createAirtableTwinServer"
92
+ },
93
+ "algolia": {
94
+ "adoption": {
95
+ "pypi": [
96
+ "algoliasearch"
97
+ ],
98
+ "sdks": [
99
+ "algoliasearch"
100
+ ],
101
+ "envStems": [
102
+ "ALGOLIA",
103
+ "ALGOLIAWRITE"
104
+ ]
105
+ },
106
+ "hostsNone": "per-app-ID host scheme ({appId}.algolia.net / {appId}-dsn.algolia.net / {appId}-N.algolianet.com, see the pack README §Host tolerance) — no fixed host list to match; the host-tolerant twin is wired by explicit client host config",
107
+ "archetype": "crud",
108
+ "protocol": {
109
+ "major": 1,
110
+ "standing": "deprecated"
111
+ },
112
+ "transport": "rest",
113
+ "resources": [
114
+ "index",
115
+ "record",
116
+ "synonym",
117
+ "settings"
118
+ ],
119
+ "serveExport": "createAlgoliaTwinServer"
120
+ },
121
+ "anthropic": {
122
+ "adoption": {
123
+ "pypi": [
124
+ "anthropic",
125
+ "claude-agent-sdk",
126
+ "claude-code-sdk"
127
+ ],
128
+ "sdks": [
129
+ "@anthropic-ai/sdk",
130
+ "@ai-sdk/anthropic",
131
+ "@anthropic-ai/vertex-sdk",
132
+ "@anthropic-ai/bedrock-sdk",
133
+ "@anthropic-ai/claude-agent-sdk"
134
+ ],
135
+ "scopes": [
136
+ "@anthropic-ai/"
137
+ ],
138
+ "envStems": [
139
+ "ANTHROPIC",
140
+ "CLAUDE"
141
+ ]
142
+ },
143
+ "hosts": [
144
+ {
145
+ "host": "api.anthropic.com"
146
+ }
147
+ ],
148
+ "archetype": "generative",
149
+ "protocol": {
150
+ "declared": "2",
151
+ "major": 2,
152
+ "standing": "current"
153
+ },
154
+ "transport": "rest",
155
+ "resources": [
156
+ "message_batch",
157
+ "file",
158
+ "agent",
159
+ "environment",
160
+ "session",
161
+ "vault",
162
+ "vault_credential",
163
+ "memory_store",
164
+ "memory",
165
+ "memory_version",
166
+ "deployment",
167
+ "deployment_run",
168
+ "skill",
169
+ "webhook_secret"
170
+ ],
171
+ "serveExport": "createAnthropicTwinServer"
172
+ },
173
+ "assemblyai": {
174
+ "adoption": {
175
+ "pypi": [
176
+ "assemblyai"
177
+ ],
178
+ "sdks": [
179
+ "assemblyai"
180
+ ],
181
+ "envStems": [
182
+ "ASSEMBLYAI"
183
+ ]
184
+ },
185
+ "hosts": [
186
+ {
187
+ "host": "api.assemblyai.com"
188
+ }
189
+ ],
190
+ "archetype": "generative",
191
+ "protocol": {
192
+ "declared": "2",
193
+ "major": 2,
194
+ "standing": "current"
195
+ },
196
+ "transport": "rest",
197
+ "resources": [
198
+ "transcript",
199
+ "upload"
200
+ ],
201
+ "serveExport": "createAssemblyAITwinServer"
202
+ },
203
+ "aws": {
204
+ "adoption": {
205
+ "pypi": [
206
+ "boto3",
207
+ "botocore",
208
+ "aioboto3",
209
+ "aiobotocore"
210
+ ],
211
+ "sdks": [
212
+ "@aws-sdk/client-s3",
213
+ "@aws-sdk/s3-request-presigner",
214
+ "@aws-sdk/lib-storage",
215
+ "@aws-sdk/client-dynamodb",
216
+ "@aws-sdk/lib-dynamodb",
217
+ "@aws-sdk/client-timestream-write",
218
+ "@aws-sdk/client-timestream-query",
219
+ "aws-sdk",
220
+ "@aws-sdk/client-sesv2",
221
+ "@aws-sdk/client-secrets-manager",
222
+ "@aws-sdk/client-bedrock-runtime",
223
+ "@aws-sdk/client-bedrock",
224
+ "@ai-sdk/amazon-bedrock"
225
+ ],
226
+ "envStems": [
227
+ "AWS",
228
+ "S3",
229
+ "LANGFUSELLMCONNECTIONBEDROCK"
230
+ ],
231
+ "worldIds": [
232
+ "s3",
233
+ "dynamodb",
234
+ "timestream",
235
+ "timestreamwrite",
236
+ "timestreamquery",
237
+ "sesv2",
238
+ "secretsmanager",
239
+ "bedrock"
240
+ ]
241
+ },
242
+ "hosts": [
243
+ {
244
+ "key": "s3",
245
+ "host": "s3.amazonaws.com"
246
+ },
247
+ {
248
+ "key": "s3",
249
+ "suffix": ".s3.amazonaws.com"
250
+ },
251
+ {
252
+ "key": "s3",
253
+ "hostPattern": "^s3[.-][a-z0-9-]+\\.amazonaws\\.com$"
254
+ },
255
+ {
256
+ "key": "s3",
257
+ "hostPattern": "\\.s3[.-][a-z0-9-]+\\.amazonaws\\.com$"
258
+ },
259
+ {
260
+ "key": "s3",
261
+ "hostPattern": "^s3\\.dualstack\\.[a-z0-9-]+\\.amazonaws\\.com$"
262
+ },
263
+ {
264
+ "key": "s3",
265
+ "hostPattern": "\\.s3\\.dualstack\\.[a-z0-9-]+\\.amazonaws\\.com$"
266
+ },
267
+ {
268
+ "key": "s3",
269
+ "suffix": ".s3-accelerate.amazonaws.com"
270
+ },
271
+ {
272
+ "key": "s3",
273
+ "suffix": ".s3-accelerate.dualstack.amazonaws.com"
274
+ },
275
+ {
276
+ "key": "dynamodb",
277
+ "hostPattern": "^dynamodb\\.[a-z0-9-]+\\.amazonaws\\.com$"
278
+ },
279
+ {
280
+ "key": "timestream",
281
+ "hostPattern": "(^|\\.)(ingest|query)\\.timestream\\.[a-z0-9-]+\\.amazonaws\\.com$"
282
+ },
283
+ {
284
+ "key": "sesv2",
285
+ "hostPattern": "^email\\.[a-z0-9-]+\\.amazonaws\\.com$"
286
+ },
287
+ {
288
+ "key": "secretsmanager",
289
+ "hostPattern": "^secretsmanager(-fips)?\\.[a-z0-9-]+\\.amazonaws\\.com$"
290
+ },
291
+ {
292
+ "key": "bedrock",
293
+ "hostPattern": "^bedrock(-runtime)?(-fips)?\\.[a-z0-9-]+\\.(amazonaws\\.com|api\\.aws)$"
294
+ }
295
+ ],
296
+ "archetype": "signed-protocol",
297
+ "protocol": {
298
+ "declared": "2",
299
+ "major": 2,
300
+ "standing": "current"
301
+ },
302
+ "transport": "rest",
303
+ "resourcesUnreachable": {
304
+ "foundation_model": "the account catalog: pulled from ListFoundationModels, never created by a caller"
305
+ },
306
+ "resources": [
307
+ "bucket",
308
+ "object",
309
+ "multipart_upload",
310
+ "table",
311
+ "item",
312
+ "database",
313
+ "record",
314
+ "message",
315
+ "secret",
316
+ "invocation",
317
+ "foundation_model",
318
+ "identity"
319
+ ],
320
+ "serveExport": "createAwsTwinServer"
321
+ },
322
+ "axiom": {
323
+ "adoption": {
324
+ "sdks": [
325
+ "@axiomhq/js",
326
+ "@axiomhq/logging",
327
+ "@axiomhq/nextjs"
328
+ ],
329
+ "pypi": [
330
+ "axiom-py"
331
+ ],
332
+ "envStems": [
333
+ "AXIOM"
334
+ ]
335
+ },
336
+ "hosts": [
337
+ {
338
+ "host": "api.axiom.co"
339
+ }
340
+ ],
341
+ "archetype": "crud",
342
+ "protocol": {
343
+ "declared": "2",
344
+ "major": 2,
345
+ "standing": "current"
346
+ },
347
+ "transport": "rest",
348
+ "resources": [
349
+ "dataset",
350
+ "event"
351
+ ],
352
+ "endpointEnvNone": "no env var: @axiomhq/js reads its base URL only from the `url` constructor option (httpClient.ts:33,45) and Dub constructs `new Axiom({ token })` with none, so interception is the hosts entry above; an AXIOM_URL no client reads would be invented surface.",
353
+ "serveExport": "createAxiomTwinServer"
354
+ },
355
+ "azure": {
356
+ "adoption": {
357
+ "pypi": [
358
+ "azure-storage-blob",
359
+ "azure-ai-inference"
360
+ ],
361
+ "sdks": [
362
+ "@azure/storage-blob",
363
+ "@azure/openai",
364
+ "@azure-rest/ai-inference",
365
+ "@ai-sdk/azure"
366
+ ],
367
+ "envStems": [
368
+ "AZURE",
369
+ "AZUREOPENAI",
370
+ "AZUREGPT4OMINI",
371
+ "AZUREGPT5",
372
+ "AZUREGPT5MINI",
373
+ "AZUREGPT5NANO"
374
+ ]
375
+ },
376
+ "hosts": [
377
+ {
378
+ "suffix": ".blob.core.windows.net"
379
+ },
380
+ {
381
+ "suffix": ".openai.azure.com"
382
+ },
383
+ {
384
+ "suffix": ".cognitiveservices.azure.com",
385
+ "pathPattern": "^/openai/"
386
+ }
387
+ ],
388
+ "archetype": "crud",
389
+ "protocol": {
390
+ "major": 1,
391
+ "standing": "deprecated"
392
+ },
393
+ "transport": "rest",
394
+ "resources": [
395
+ "container",
396
+ "blob",
397
+ "block",
398
+ "deployment"
399
+ ],
400
+ "endpointEnvNone": "Host-based interception only. @azure/storage-blob is configured with a blob endpoint URL or a connection string (both resolving to <account>.blob.core.windows.net, which the injector rewrites), and reads no base-URL environment variable of its own — the same reason the aws pack declares none.",
401
+ "serveExport": "createAzureTwinServer"
402
+ },
403
+ "azureformrecognizer": {
404
+ "adoption": {
405
+ "pypi": [
406
+ "azure-ai-documentintelligence",
407
+ "azure-ai-formrecognizer"
408
+ ],
409
+ "sdks": [
410
+ "@azure-rest/ai-document-intelligence",
411
+ "@azure/ai-form-recognizer"
412
+ ],
413
+ "envStems": [
414
+ "AZUREFORMRECOGNIZER",
415
+ "AZUREDOCUMENTINTELLIGENCE"
416
+ ]
417
+ },
418
+ "hosts": [
419
+ {
420
+ "suffix": ".cognitiveservices.azure.com",
421
+ "pathPattern": "^/(documentintelligence|formrecognizer)/"
422
+ }
423
+ ],
424
+ "archetype": "generative",
425
+ "protocol": {
426
+ "declared": "2",
427
+ "major": 2,
428
+ "standing": "current"
429
+ },
430
+ "transport": "rest",
431
+ "resourcesUnreachable": {
432
+ "model": "prebuilt models are the vendor's catalog; a custom model is born of a training job this twin does not run"
433
+ },
434
+ "resources": [
435
+ "analysis",
436
+ "model"
437
+ ],
438
+ "serveExport": "createAzureFormRecognizerTwinServer"
439
+ },
440
+ "bitly": {
441
+ "adoption": {
442
+ "pypi": [],
443
+ "envStems": [
444
+ "BITLY"
445
+ ]
446
+ },
447
+ "hosts": [
448
+ {
449
+ "host": "api-ssl.bitly.com"
450
+ }
451
+ ],
452
+ "archetype": "crud",
453
+ "protocol": {
454
+ "declared": "2",
455
+ "major": 2,
456
+ "standing": "current"
457
+ },
458
+ "transport": "rest",
459
+ "resources": [
460
+ "bitlink",
461
+ "group",
462
+ "organization",
463
+ "user",
464
+ "qr_code",
465
+ "campaign",
466
+ "channel",
467
+ "webhook",
468
+ "custom_bitlink",
469
+ "click"
470
+ ],
471
+ "endpointEnvNone": "no injector-free path: Bitly integrations hardcode https://api-ssl.bitly.com and the vendor documents no base-URL override, so interception is the hosts entry above; a BITLY_BASE_URL would be invented surface no app reads.",
472
+ "serveExport": "createBitlyTwinServer"
473
+ },
474
+ "bluesky": {
475
+ "adoption": {
476
+ "sdks": [
477
+ "@atproto/api"
478
+ ],
479
+ "pypi": [],
480
+ "envStems": [
481
+ "BLUESKY",
482
+ "BSKY"
483
+ ]
484
+ },
485
+ "hosts": [
486
+ {
487
+ "host": "bsky.social",
488
+ "pathPattern": "^/xrpc/(com\\.atproto|app\\.bsky)\\."
489
+ },
490
+ {
491
+ "hostPattern": "^[a-z0-9-]+\\.[a-z0-9-]+\\.host\\.bsky\\.network$",
492
+ "pathPattern": "^/xrpc/(com\\.atproto|app\\.bsky)\\."
493
+ },
494
+ {
495
+ "host": "api.bsky.app",
496
+ "pathPattern": "^/xrpc/app\\.bsky\\.(actor|feed)\\."
497
+ },
498
+ {
499
+ "host": "public.api.bsky.app",
500
+ "pathPattern": "^/xrpc/app\\.bsky\\.(actor|feed)\\."
501
+ },
502
+ {
503
+ "host": "video.bsky.app",
504
+ "pathPattern": "^/(xrpc/app\\.bsky\\.video\\.|watch/)"
505
+ },
506
+ {
507
+ "host": "cdn.bsky.app",
508
+ "pathPattern": "^/img/"
509
+ }
510
+ ],
511
+ "archetype": "crud",
512
+ "protocol": {
513
+ "declared": "2",
514
+ "major": 2,
515
+ "standing": "current"
516
+ },
517
+ "transport": "rest",
518
+ "resources": [
519
+ "account",
520
+ "post",
521
+ "follow",
522
+ "profile"
523
+ ],
524
+ "endpointEnvNone": "@atproto/api reads no base-URL environment variable (an AtpAgent takes its `service` URL in code, and the video service's is the social-app's constant), so a World reaches it through the hosts above; inventing a BLUESKY_BASE_URL the app never reads would report coverage the app does not have.",
525
+ "serveExport": "createBlueskyTwinServer"
526
+ },
527
+ "calcom": {
528
+ "adoption": {
529
+ "pypi": [],
530
+ "envStems": [
531
+ "CALCOM",
532
+ "CAL"
533
+ ]
534
+ },
535
+ "hosts": [
536
+ {
537
+ "host": "api.cal.com"
538
+ }
539
+ ],
540
+ "archetype": "crud",
541
+ "protocol": {
542
+ "declared": "2",
543
+ "major": 2,
544
+ "standing": "current"
545
+ },
546
+ "transport": "rest",
547
+ "resources": [
548
+ "booking",
549
+ "event_type",
550
+ "schedule",
551
+ "team",
552
+ "membership",
553
+ "webhook",
554
+ "slot"
555
+ ],
556
+ "serveExport": "createCalcomTwinServer"
557
+ },
558
+ "cerebras": {
559
+ "adoption": {
560
+ "sdks": [
561
+ "@cerebras/cerebras_cloud_sdk",
562
+ "@ai-sdk/cerebras"
563
+ ],
564
+ "envStems": [
565
+ "CEREBRAS"
566
+ ]
567
+ },
568
+ "hosts": [
569
+ {
570
+ "host": "api.cerebras.ai"
571
+ }
572
+ ],
573
+ "archetype": "generative",
574
+ "protocol": {
575
+ "declared": "2",
576
+ "major": 2,
577
+ "standing": "current"
578
+ },
579
+ "transport": "rest",
580
+ "resources": [],
581
+ "endpointEnvNone": "The injector intercepts api.cerebras.ai (see `hosts`), so a world wires this pack through CEREBRAS_TWIN_URL rather than an app-read base-URL var. The SDK would honour CEREBRAS_BASE_URL, but the injector covers all of that traffic with zero app edits while an app-read env covers only clients constructed after the env lands — emitting both would quietly forgo interception.",
582
+ "serveExport": "createCerebrasTwinServer"
583
+ },
584
+ "clerk": {
585
+ "adoption": {
586
+ "pypi": [
587
+ "clerk-backend-api"
588
+ ],
589
+ "sdks": [
590
+ "@clerk/backend",
591
+ "@clerk/clerk-sdk-node",
592
+ "@clerk/nextjs",
593
+ "@clerk/fastify",
594
+ "@clerk/express"
595
+ ],
596
+ "scopes": [
597
+ "@clerk/"
598
+ ],
599
+ "envStems": [
600
+ "CLERK"
601
+ ]
602
+ },
603
+ "hosts": [
604
+ {
605
+ "host": "api.clerk.com"
606
+ },
607
+ {
608
+ "suffix": ".clerk.accounts.dev"
609
+ }
610
+ ],
611
+ "archetype": "crud",
612
+ "protocol": {
613
+ "declared": "2",
614
+ "major": 2,
615
+ "standing": "current"
616
+ },
617
+ "transport": "rest",
618
+ "assets": [
619
+ "client/clerk-js-dist",
620
+ "client/clerk.browser.js"
621
+ ],
622
+ "resources": [
623
+ "user",
624
+ "session",
625
+ "organization",
626
+ "organization_membership",
627
+ "organization_invitation",
628
+ "invitation",
629
+ "allowlist_identifier",
630
+ "blocklist_identifier",
631
+ "jwt_template",
632
+ "sign_in_token"
633
+ ],
634
+ "serveExport": "createClerkTwinServer"
635
+ },
636
+ "cloudflare": {
637
+ "adoption": {
638
+ "pypi": [
639
+ "cloudflare"
640
+ ],
641
+ "tools": [
642
+ {
643
+ "package": "wrangler",
644
+ "usage": "deployment"
645
+ }
646
+ ],
647
+ "sdks": [
648
+ "cloudflare",
649
+ "aws4fetch"
650
+ ],
651
+ "envStems": [
652
+ "CLOUDFLARE"
653
+ ]
654
+ },
655
+ "hosts": [
656
+ {
657
+ "host": "api.cloudflare.com"
658
+ },
659
+ {
660
+ "host": "dash.cloudflare.com",
661
+ "pathPattern": "^/(login|_twin/users/|[0-9a-f]{32}/r2/|$)"
662
+ },
663
+ {
664
+ "suffix": ".r2.cloudflarestorage.com"
665
+ }
666
+ ],
667
+ "hostsClaimed": {
668
+ "door": "/twin/hosts",
669
+ "note": "the custom domains connected to R2 buckets"
670
+ },
671
+ "archetype": "crud",
672
+ "protocol": {
673
+ "declared": "2",
674
+ "major": 2,
675
+ "standing": "current"
676
+ },
677
+ "transport": "rest",
678
+ "resources": [
679
+ "account",
680
+ "zone",
681
+ "cloudflare_tunnel",
682
+ "tunnel_configuration",
683
+ "dns_record",
684
+ "worker_script",
685
+ "worker_route",
686
+ "worker_domain",
687
+ "workers_subdomain",
688
+ "durable_object_namespace",
689
+ "r2_bucket",
690
+ "r2_custom_domain",
691
+ "hyperdrive_config",
692
+ "queue",
693
+ "queue_consumer",
694
+ "worker_version",
695
+ "worker_asset",
696
+ "worker_asset_upload_session"
697
+ ],
698
+ "serveExport": "createCloudflareTwinServer"
699
+ },
700
+ "cohere": {
701
+ "adoption": {
702
+ "pypi": [
703
+ "cohere"
704
+ ],
705
+ "sdks": [
706
+ "cohere-ai",
707
+ "@ai-sdk/cohere"
708
+ ],
709
+ "envStems": [
710
+ "COHERE",
711
+ "CO"
712
+ ]
713
+ },
714
+ "hosts": [
715
+ {
716
+ "host": "api.cohere.com"
717
+ }
718
+ ],
719
+ "archetype": "generative",
720
+ "protocol": {
721
+ "major": 1,
722
+ "standing": "deprecated"
723
+ },
724
+ "transport": "rest",
725
+ "resources": [
726
+ "dataset",
727
+ "connector",
728
+ "embed_job",
729
+ "token"
730
+ ],
731
+ "endpointEnvNone": "neither official SDK reads a base-URL env var: cohere-ai@8.1.0 takes the override as the `baseUrl`/`environment` CONSTRUCTOR option and reads only CO_API_KEY from the environment (auth/BearerAuthProvider.js), and @ai-sdk/cohere@4.0.35 takes `options.baseURL` and reads only COHERE_API_KEY. Interception is host-based on api.cohere.com; inventing a COHERE_BASE_URL nothing reads would make `covers` claim a world it does not cover.",
732
+ "serveExport": "createCohereTwinServer"
733
+ },
734
+ "currencyapi": {
735
+ "adoption": {
736
+ "sdks": [
737
+ "@everapi/currencyapi-js"
738
+ ],
739
+ "pypi": [
740
+ "currencyapicom"
741
+ ],
742
+ "envStems": [
743
+ "CURRENCYAPI"
744
+ ]
745
+ },
746
+ "hosts": [
747
+ {
748
+ "host": "api.currencyapi.com"
749
+ },
750
+ {
751
+ "host": "app.currencyapi.com",
752
+ "pathPattern": "^/(register|login|dashboard|subscription)(/|$)"
753
+ }
754
+ ],
755
+ "archetype": "crud",
756
+ "protocol": {
757
+ "declared": "2",
758
+ "major": 2,
759
+ "standing": "current"
760
+ },
761
+ "transport": "rest",
762
+ "resources": [
763
+ "_account",
764
+ "_api_key",
765
+ "_usage",
766
+ "_web_session"
767
+ ],
768
+ "endpointEnvNone": "currencyapi's clients hardcode https://api.currencyapi.com/v3 (@everapi/currencyapi-js index.js `baseUrl`, dubinc/dub apps/web/lib/currencyapi/client.ts `baseUrl`) and read no base-URL env; interception is the hosts above.",
769
+ "serveExport": "createCurrencyapiTwinServer"
770
+ },
771
+ "datadog": {
772
+ "adoption": {
773
+ "pypi": [
774
+ "datadog",
775
+ "datadog-api-client",
776
+ "ddtrace"
777
+ ],
778
+ "sdks": [
779
+ "@datadog/datadog-api-client",
780
+ "@datadog/browser-rum",
781
+ "@datadog/browser-logs",
782
+ "dd-trace"
783
+ ],
784
+ "scopes": [
785
+ "@datadog/"
786
+ ],
787
+ "envStems": [
788
+ "DATADOG",
789
+ "DD"
790
+ ]
791
+ },
792
+ "hosts": [
793
+ {
794
+ "host": "datadoghq.com"
795
+ },
796
+ {
797
+ "suffix": ".datadoghq.com"
798
+ },
799
+ {
800
+ "host": "datadoghq.eu"
801
+ },
802
+ {
803
+ "suffix": ".datadoghq.eu"
804
+ },
805
+ {
806
+ "host": "ddog-gov.com"
807
+ },
808
+ {
809
+ "suffix": ".ddog-gov.com"
810
+ },
811
+ {
812
+ "hostPattern": "^([a-z0-9-]+\\.)?browser-intake-(?:[a-z0-9]+-)?(?:datadoghq\\.(?:com|eu)|ddog-gov\\.com)$"
813
+ }
814
+ ],
815
+ "archetype": "crud",
816
+ "protocol": {
817
+ "declared": "2",
818
+ "major": 2,
819
+ "standing": "current"
820
+ },
821
+ "transport": "rest",
822
+ "resources": [
823
+ "org",
824
+ "rum_application",
825
+ "rum_event",
826
+ "log",
827
+ "metric_series",
828
+ "metric_def",
829
+ "service_check",
830
+ "event",
831
+ "monitor",
832
+ "dashboard",
833
+ "host",
834
+ "slo",
835
+ "downtime",
836
+ "api_key",
837
+ "user"
838
+ ],
839
+ "serveExport": "createDatadogTwinServer"
840
+ },
841
+ "deepgram": {
842
+ "adoption": {
843
+ "pypi": [
844
+ "deepgram-sdk"
845
+ ],
846
+ "sdks": [
847
+ "@deepgram/sdk"
848
+ ],
849
+ "envStems": [
850
+ "DEEPGRAM"
851
+ ]
852
+ },
853
+ "hosts": [
854
+ {
855
+ "host": "api.deepgram.com"
856
+ }
857
+ ],
858
+ "archetype": "generative",
859
+ "protocol": {
860
+ "declared": "2",
861
+ "major": 2,
862
+ "standing": "current"
863
+ },
864
+ "transport": "rest",
865
+ "resourcesUnreachable": {
866
+ "project": "the tenant itself: born with the account, never created through the API"
867
+ },
868
+ "resources": [
869
+ "project",
870
+ "key",
871
+ "request"
872
+ ],
873
+ "serveExport": "createDeepgramTwinServer"
874
+ },
875
+ "deepinfra": {
876
+ "adoption": {
877
+ "sdks": [
878
+ "deepinfra",
879
+ "@ai-sdk/deepinfra"
880
+ ],
881
+ "envStems": [
882
+ "DEEPINFRA"
883
+ ]
884
+ },
885
+ "hosts": [
886
+ {
887
+ "host": "api.deepinfra.com"
888
+ }
889
+ ],
890
+ "archetype": "generative",
891
+ "protocol": {
892
+ "declared": "2",
893
+ "major": 2,
894
+ "standing": "current"
895
+ },
896
+ "transport": "rest",
897
+ "resourcesUnreachable": {
898
+ "model": "the vendor catalog",
899
+ "rate_limit": "the account ledger the vendor keeps; read-only"
900
+ },
901
+ "resources": [
902
+ "model",
903
+ "file",
904
+ "batch",
905
+ "rate_limit"
906
+ ],
907
+ "endpointEnvNone": "the deepinfra SDK exposes no base-URL env: DeepInfraClient takes the endpoint URL as a constructor argument (the modelName IS the full URL) and reads only DEEPINFRA_API_KEY; interception is the hosts above.",
908
+ "serveExport": "createDeepinfraTwinServer"
909
+ },
910
+ "deepseek": {
911
+ "adoption": {
912
+ "pypi": [],
913
+ "sdks": [
914
+ "@ai-sdk/deepseek"
915
+ ],
916
+ "envStems": [
917
+ "DEEPSEEK"
918
+ ]
919
+ },
920
+ "hosts": [
921
+ {
922
+ "host": "api.deepseek.com"
923
+ }
924
+ ],
925
+ "archetype": "generative",
926
+ "protocol": {
927
+ "major": 1,
928
+ "standing": "deprecated"
929
+ },
930
+ "transport": "rest",
931
+ "resourcesUnreachable": {
932
+ "model": "the vendor catalog",
933
+ "balance": "the account ledger the vendor keeps; read-only"
934
+ },
935
+ "resources": [
936
+ "model",
937
+ "file",
938
+ "balance",
939
+ "cache_prefix"
940
+ ],
941
+ "endpointEnvNone": "no app-read endpoint env: @ai-sdk/deepseek — the only first-party npm client of this surface — reads exactly one environment variable (DEEPSEEK_API_KEY, via loadApiKey in src/deepseek-provider.ts) and takes baseURL as a constructor option, so there is no vendor-documented base-URL var to inject. The injector covers api.deepseek.com instead (see `hosts`). NextChat's DEEPSEEK_URL is one application's own convention, not vendor surface, and claiming it would report a world covered while the SDK-based majority still reached the real vendor.",
942
+ "serveExport": "createDeepSeekTwinServer"
943
+ },
944
+ "discord": {
945
+ "adoption": {
946
+ "sdks": [
947
+ "discord.js",
948
+ "@discordjs/rest",
949
+ "@discordjs/core",
950
+ "@discordjs/builders",
951
+ "discord-api-types"
952
+ ],
953
+ "pypi": [
954
+ "discord.py",
955
+ "discord"
956
+ ],
957
+ "envStems": [
958
+ "DISCORD"
959
+ ]
960
+ },
961
+ "hosts": [
962
+ {
963
+ "host": "discord.com",
964
+ "pathPattern": "^/api/"
965
+ },
966
+ {
967
+ "host": "gateway.discord.gg"
968
+ },
969
+ {
970
+ "host": "discordapp.com",
971
+ "pathPattern": "^/api/"
972
+ }
973
+ ],
974
+ "archetype": "crud",
975
+ "protocol": {
976
+ "major": 1,
977
+ "standing": "deprecated"
978
+ },
979
+ "transport": "rest",
980
+ "resources": [
981
+ "application",
982
+ "application_command",
983
+ "ban",
984
+ "channel",
985
+ "guild",
986
+ "interaction_response",
987
+ "invite",
988
+ "member",
989
+ "message",
990
+ "oauth_grant",
991
+ "role",
992
+ "user",
993
+ "webhook"
994
+ ],
995
+ "endpointEnvNone": "no Discord client reads a base-URL env var — discord.js takes `api` as a REST constructor option and discord.py hardcodes its Route base, so interception is the `hosts` entries above. Inventing a DISCORD_BASE_URL would report coverage the app could not use.",
996
+ "serveExport": "createDiscordTwinServer"
997
+ },
998
+ "dynadot": {
999
+ "adoption": {
1000
+ "pypi": [],
1001
+ "envStems": [
1002
+ "DYNADOT"
1003
+ ]
1004
+ },
1005
+ "hosts": [
1006
+ {
1007
+ "host": "api.dynadot.com"
1008
+ }
1009
+ ],
1010
+ "archetype": "crud",
1011
+ "protocol": {
1012
+ "declared": "2",
1013
+ "major": 2,
1014
+ "standing": "current"
1015
+ },
1016
+ "transport": "rest",
1017
+ "resources": [
1018
+ "domain",
1019
+ "account"
1020
+ ],
1021
+ "serveExport": "createDynadotTwinServer"
1022
+ },
1023
+ "elevenlabs": {
1024
+ "adoption": {
1025
+ "pypi": [
1026
+ "elevenlabs"
1027
+ ],
1028
+ "sdks": [
1029
+ "elevenlabs",
1030
+ "@elevenlabs/elevenlabs-js"
1031
+ ],
1032
+ "scopes": [
1033
+ "@elevenlabs/"
1034
+ ],
1035
+ "envStems": [
1036
+ "ELEVENLABS"
1037
+ ]
1038
+ },
1039
+ "hosts": [
1040
+ {
1041
+ "host": "api.elevenlabs.io"
1042
+ }
1043
+ ],
1044
+ "archetype": "generative",
1045
+ "protocol": {
1046
+ "declared": "2",
1047
+ "major": 2,
1048
+ "standing": "current"
1049
+ },
1050
+ "transport": "rest",
1051
+ "resources": [
1052
+ "voice",
1053
+ "generated_voice",
1054
+ "pronunciation_dictionary",
1055
+ "dubbing",
1056
+ "history_item"
1057
+ ],
1058
+ "serveExport": "createElevenLabsTwinServer"
1059
+ },
1060
+ "expo": {
1061
+ "adoption": {
1062
+ "sdks": [
1063
+ "expo-server-sdk"
1064
+ ],
1065
+ "pypi": [
1066
+ "exponent-server-sdk"
1067
+ ],
1068
+ "envStems": [
1069
+ "EXPO"
1070
+ ]
1071
+ },
1072
+ "hosts": [
1073
+ {
1074
+ "host": "exp.host"
1075
+ }
1076
+ ],
1077
+ "archetype": "crud",
1078
+ "protocol": {
1079
+ "declared": "2",
1080
+ "major": 2,
1081
+ "standing": "current"
1082
+ },
1083
+ "transport": "rest",
1084
+ "resources": [
1085
+ "push_device",
1086
+ "push_ticket"
1087
+ ],
1088
+ "endpointEnvNone": "expo-server-sdk-node DOES read EXPO_BASE_URL (src/ExpoClientValues.ts builds both push URLs from process.env['EXPO_BASE_URL'] || 'https://exp.host'), but this pack claims exp.host in `hosts`, so interception is host-based and zero-edit; emitting the var would forgo that. Point EXPO_BASE_URL at the twin by hand only when running outside an injected world.",
1089
+ "serveExport": "createExpoTwinServer"
1090
+ },
1091
+ "fal": {
1092
+ "adoption": {
1093
+ "pypi": [
1094
+ "fal-client",
1095
+ "fal"
1096
+ ],
1097
+ "sdks": [
1098
+ "@fal-ai/client",
1099
+ "@fal-ai/serverless-client"
1100
+ ],
1101
+ "scopes": [
1102
+ "@fal-ai/"
1103
+ ],
1104
+ "envStems": [
1105
+ "FAL"
1106
+ ]
1107
+ },
1108
+ "hostsNone": "host-split surface (fal.run / queue.fal.run) with no injector entry grounded yet — worlds wire the twin via the client's explicit endpoint config; a visible gap until its hosts are grounded here",
1109
+ "archetype": "generative",
1110
+ "protocol": {
1111
+ "major": 1,
1112
+ "standing": "deprecated"
1113
+ },
1114
+ "transport": "rest",
1115
+ "resources": [
1116
+ "request",
1117
+ "signing_key"
1118
+ ],
1119
+ "serveExport": "createFalTwinServer"
1120
+ },
1121
+ "figma": {
1122
+ "adoption": {
1123
+ "pypi": [],
1124
+ "sdks": [
1125
+ "figma-api",
1126
+ "@figma/rest-api-spec"
1127
+ ],
1128
+ "scopes": [
1129
+ "@figma/"
1130
+ ],
1131
+ "envStems": [
1132
+ "FIGMA"
1133
+ ]
1134
+ },
1135
+ "hostsNone": "no injector entry grounded yet — the pack README wires clients at the twin by base URL (\"nothing changed but the base URL\"); zero-edit interception of api.figma.com is a visible gap until grounded here",
1136
+ "archetype": "crud",
1137
+ "protocol": {
1138
+ "major": 1,
1139
+ "standing": "deprecated"
1140
+ },
1141
+ "transport": "rest",
1142
+ "resources": [
1143
+ "file",
1144
+ "comment",
1145
+ "version",
1146
+ "project",
1147
+ "team",
1148
+ "user",
1149
+ "credential"
1150
+ ],
1151
+ "serveExport": "createFigmaTwinServer"
1152
+ },
1153
+ "firecrawl": {
1154
+ "adoption": {
1155
+ "pypi": [
1156
+ "firecrawl-py",
1157
+ "firecrawl"
1158
+ ],
1159
+ "sdks": [
1160
+ "@mendable/firecrawl-js",
1161
+ "firecrawl"
1162
+ ],
1163
+ "scopes": [
1164
+ "@mendable/"
1165
+ ],
1166
+ "envStems": [
1167
+ "FIRECRAWL",
1168
+ "S2SFIRECRAWLINTEGRATIONSTOFIRECRAWL"
1169
+ ]
1170
+ },
1171
+ "hosts": [
1172
+ {
1173
+ "host": "api.firecrawl.dev"
1174
+ }
1175
+ ],
1176
+ "archetype": "crud",
1177
+ "protocol": {
1178
+ "declared": "2",
1179
+ "major": 2,
1180
+ "standing": "current"
1181
+ },
1182
+ "transport": "rest",
1183
+ "resources": [
1184
+ "document",
1185
+ "crawl",
1186
+ "audit"
1187
+ ],
1188
+ "serveExport": "createFirecrawlTwinServer"
1189
+ },
1190
+ "fireworks": {
1191
+ "adoption": {
1192
+ "pypi": [
1193
+ "fireworks-ai"
1194
+ ],
1195
+ "sdks": [
1196
+ "@ai-sdk/fireworks"
1197
+ ],
1198
+ "envStems": [
1199
+ "FIREWORKS"
1200
+ ]
1201
+ },
1202
+ "hosts": [
1203
+ {
1204
+ "host": "api.fireworks.ai"
1205
+ }
1206
+ ],
1207
+ "archetype": "generative",
1208
+ "protocol": {
1209
+ "declared": "2",
1210
+ "major": 2,
1211
+ "standing": "current"
1212
+ },
1213
+ "transport": "rest",
1214
+ "resourcesUnreachable": {
1215
+ "account": "the vendor’s own account row (one per credential, not creatable through the API)",
1216
+ "quota": "vendor-assigned limits (read-only in the API; the twin derives them from the account)",
1217
+ "serverlessModel": "the vendor catalog (serverless models are curated by Fireworks, not created by callers)"
1218
+ },
1219
+ "resources": [
1220
+ "deployment",
1221
+ "dataset",
1222
+ "batchInferenceJob",
1223
+ "supervisedFineTuningJob",
1224
+ "user",
1225
+ "apiKey",
1226
+ "secret",
1227
+ "model"
1228
+ ],
1229
+ "endpointEnvNone": "The injector intercepts api.fireworks.ai (see `hosts`), so a world wires this pack through FIREWORKS_TWIN_URL rather than an app-read base-URL var. The `fireworks` Python client would honour FIREWORKS_BASE_URL, but @ai-sdk/fireworks — the dominant client in this repo’s demand census — takes its baseURL as a constructor option and reads no such env, so an app-read var would cover only half the traffic while disabling the interception that covers all of it.",
1230
+ "serveExport": "createFireworksTwinServer"
1231
+ },
1232
+ "fly": {
1233
+ "adoption": {
1234
+ "pypi": [],
1235
+ "sdks": [
1236
+ "fly-admin"
1237
+ ],
1238
+ "envStems": [
1239
+ "FLY"
1240
+ ]
1241
+ },
1242
+ "hosts": [
1243
+ {
1244
+ "host": "api.machines.dev"
1245
+ },
1246
+ {
1247
+ "host": "_api.internal"
1248
+ }
1249
+ ],
1250
+ "archetype": "engine-control",
1251
+ "protocol": {
1252
+ "declared": "2",
1253
+ "major": 2,
1254
+ "standing": "current"
1255
+ },
1256
+ "transport": "rest",
1257
+ "resources": [
1258
+ "app",
1259
+ "machine",
1260
+ "volume",
1261
+ "secret"
1262
+ ],
1263
+ "serveExport": "createFlyTwinServer"
1264
+ },
1265
+ "gcs": {
1266
+ "adoption": {
1267
+ "pypi": [
1268
+ "google-cloud-storage"
1269
+ ],
1270
+ "sdks": [
1271
+ "@google-cloud/storage"
1272
+ ],
1273
+ "envStems": [
1274
+ "GCS",
1275
+ "GOOGLECLOUDSTORAGE"
1276
+ ]
1277
+ },
1278
+ "hosts": [
1279
+ {
1280
+ "host": "storage.googleapis.com"
1281
+ },
1282
+ {
1283
+ "suffix": ".storage.googleapis.com"
1284
+ }
1285
+ ],
1286
+ "archetype": "crud",
1287
+ "protocol": {
1288
+ "declared": "2",
1289
+ "major": 2,
1290
+ "standing": "current"
1291
+ },
1292
+ "transport": "rest",
1293
+ "resources": [
1294
+ "bucket",
1295
+ "object",
1296
+ "upload"
1297
+ ],
1298
+ "serveExport": "createGcsTwinServer"
1299
+ },
1300
+ "gemini": {
1301
+ "adoption": {
1302
+ "pypi": [
1303
+ "google-genai",
1304
+ "google-generativeai"
1305
+ ],
1306
+ "sdks": [
1307
+ "@ai-sdk/google",
1308
+ "@ai-sdk/google-vertex",
1309
+ "@google/genai",
1310
+ "@google/generative-ai",
1311
+ "@google-cloud/vertexai"
1312
+ ],
1313
+ "envStems": [
1314
+ "GEMINI",
1315
+ "GOOGLEGENAI",
1316
+ "GOOGLEGENERATIVEAI",
1317
+ "GOOGLEGEMINI",
1318
+ "GOOGLEVERTEX"
1319
+ ],
1320
+ "worldIds": [
1321
+ "googlegenai",
1322
+ "googleauth"
1323
+ ]
1324
+ },
1325
+ "hosts": [
1326
+ {
1327
+ "host": "generativelanguage.googleapis.com"
1328
+ },
1329
+ {
1330
+ "host": "aiplatform.googleapis.com"
1331
+ },
1332
+ {
1333
+ "suffix": "-aiplatform.googleapis.com"
1334
+ },
1335
+ {
1336
+ "key": "googleauth",
1337
+ "host": "oauth2.googleapis.com"
1338
+ },
1339
+ {
1340
+ "key": "googleauth",
1341
+ "host": "www.googleapis.com",
1342
+ "pathPattern": "^/(token|oauth2/v4/token)/?$"
1343
+ }
1344
+ ],
1345
+ "archetype": "generative",
1346
+ "protocol": {
1347
+ "declared": "2",
1348
+ "major": 2,
1349
+ "standing": "current"
1350
+ },
1351
+ "transport": "rest",
1352
+ "resources": [
1353
+ "file",
1354
+ "cached_content"
1355
+ ],
1356
+ "serveExport": "createGeminiTwinServer"
1357
+ },
1358
+ "github": {
1359
+ "adoption": {
1360
+ "pypi": [
1361
+ "pygithub"
1362
+ ],
1363
+ "sdks": [
1364
+ "@octokit/rest",
1365
+ "@octokit/core",
1366
+ "octokit",
1367
+ "@octokit/auth-app",
1368
+ "@octokit/auth-oauth-app",
1369
+ "@octokit/auth-oauth-device",
1370
+ "@octokit/graphql",
1371
+ "@octokit/webhooks"
1372
+ ],
1373
+ "scopes": [
1374
+ "@octokit/"
1375
+ ],
1376
+ "envStems": [
1377
+ "GITHUB",
1378
+ "GH",
1379
+ "BACKENDGITHUB",
1380
+ "INFAPPCONNECTIONGITHUBAPP",
1381
+ "INFAPPCONNECTIONGITHUBOAUTH",
1382
+ "INFAPPCONNECTIONGITHUBRADARAPP",
1383
+ "APPSMITHOAUTH2GITHUB"
1384
+ ]
1385
+ },
1386
+ "hosts": [
1387
+ {
1388
+ "host": "api.github.com"
1389
+ },
1390
+ {
1391
+ "host": "uploads.github.com",
1392
+ "pathPattern": "^/repos/[^/]+/[^/]+/releases/\\d+/assets$"
1393
+ },
1394
+ {
1395
+ "host": "github.com",
1396
+ "pathPattern": "^/[^/]+/[^/]+/(info/refs|git-upload-pack|git-receive-pack)$"
1397
+ },
1398
+ {
1399
+ "host": "github.com",
1400
+ "pathPattern": "^/login/oauth/(authorize|access_token)$"
1401
+ },
1402
+ {
1403
+ "host": "github.com",
1404
+ "pathPattern": "^/apps/[^/]+/installations/new$"
1405
+ },
1406
+ {
1407
+ "host": "github.com",
1408
+ "pathPattern": "^/(organizations/[^/]+/)?settings/apps/new$"
1409
+ },
1410
+ {
1411
+ "host": "npm.pkg.github.com",
1412
+ "pathPattern": "^/@"
1413
+ }
1414
+ ],
1415
+ "archetype": "engine-control",
1416
+ "protocol": {
1417
+ "declared": "2",
1418
+ "major": 2,
1419
+ "standing": "current"
1420
+ },
1421
+ "transport": "rest",
1422
+ "resources": [
1423
+ "pull_request",
1424
+ "pull_request_review",
1425
+ "pull_request_review_comment",
1426
+ "issue",
1427
+ "issue_comment",
1428
+ "repository",
1429
+ "branch",
1430
+ "git_ref"
1431
+ ],
1432
+ "serveExport": "createGithubTwinServer"
1433
+ },
1434
+ "googleads": {
1435
+ "adoption": {
1436
+ "sdks": [
1437
+ "google-ads-api",
1438
+ "google-ads-node"
1439
+ ],
1440
+ "pypi": [
1441
+ "google-ads"
1442
+ ],
1443
+ "envStems": [
1444
+ "GOOGLEADS",
1445
+ "GOOGLEADSDEVELOPER"
1446
+ ]
1447
+ },
1448
+ "hosts": [
1449
+ {
1450
+ "host": "googleads.googleapis.com"
1451
+ },
1452
+ {
1453
+ "host": "datamanager.googleapis.com"
1454
+ }
1455
+ ],
1456
+ "archetype": "crud",
1457
+ "protocol": {
1458
+ "declared": "2",
1459
+ "major": 2,
1460
+ "standing": "current"
1461
+ },
1462
+ "transport": "rest",
1463
+ "resources": [
1464
+ "customer",
1465
+ "customer_client_link",
1466
+ "conversion_action",
1467
+ "click_conversion",
1468
+ "ingest_request"
1469
+ ],
1470
+ "endpointEnvNone": "no Google Ads client exposes an HTTP base-URL override: google-ads-api builds the host into the request literally, google-ads-python's `endpoint` is a gRPC host:port for its transport channel, and Dub hardcodes the host in a raw fetch. Interception is host-based.",
1471
+ "serveExport": "createGoogleAdsTwinServer"
1472
+ },
1473
+ "googlemaps": {
1474
+ "adoption": {
1475
+ "pypi": [
1476
+ "googlemaps"
1477
+ ],
1478
+ "sdks": [
1479
+ "@googlemaps/google-maps-services-js"
1480
+ ],
1481
+ "scopes": [
1482
+ "@googlemaps/"
1483
+ ],
1484
+ "envStems": [
1485
+ "GOOGLEMAPS"
1486
+ ]
1487
+ },
1488
+ "hosts": [
1489
+ {
1490
+ "host": "maps.googleapis.com"
1491
+ }
1492
+ ],
1493
+ "archetype": "crud",
1494
+ "protocol": {
1495
+ "declared": "2",
1496
+ "major": 2,
1497
+ "standing": "current"
1498
+ },
1499
+ "transport": "rest",
1500
+ "resources": [
1501
+ "geocode",
1502
+ "audit"
1503
+ ],
1504
+ "serveExport": "createGoogleMapsTwinServer"
1505
+ },
1506
+ "googleoauth": {
1507
+ "adoption": {
1508
+ "pypi": [
1509
+ "google-auth",
1510
+ "google-auth-oauthlib"
1511
+ ],
1512
+ "sdks": [
1513
+ "google-auth-library",
1514
+ "@googleapis/oauth2"
1515
+ ],
1516
+ "envStems": [
1517
+ "GOOGLE",
1518
+ "GOOGLEOAUTH",
1519
+ "GOOGLEOIDC",
1520
+ "AUTHGOOGLE",
1521
+ "AUTHGOOGLEOAUTH2",
1522
+ "BACKENDGOOGLE",
1523
+ "GOOGLEIOS",
1524
+ "GOOGLELOGIN",
1525
+ "GOOGLEWEB",
1526
+ "NEXTPRIVATEGOOGLE",
1527
+ "SSOGOOGLEOAUTH2",
1528
+ "APPSMITHOAUTH2GOOGLE"
1529
+ ]
1530
+ },
1531
+ "archetype": "crud",
1532
+ "protocol": {
1533
+ "declared": "2",
1534
+ "major": 2,
1535
+ "standing": "current"
1536
+ },
1537
+ "transport": "rest",
1538
+ "resources": [
1539
+ "oauth_client",
1540
+ "account",
1541
+ "auth_request",
1542
+ "authorization_code",
1543
+ "access_token",
1544
+ "refresh_token",
1545
+ "grant"
1546
+ ],
1547
+ "serveExport": "createGoogleOAuthTwinServer"
1548
+ },
1549
+ "groq": {
1550
+ "adoption": {
1551
+ "pypi": [
1552
+ "groq"
1553
+ ],
1554
+ "sdks": [
1555
+ "groq-sdk",
1556
+ "@ai-sdk/groq"
1557
+ ],
1558
+ "envStems": [
1559
+ "GROQ"
1560
+ ]
1561
+ },
1562
+ "hosts": [
1563
+ {
1564
+ "host": "api.groq.com"
1565
+ }
1566
+ ],
1567
+ "archetype": "generative",
1568
+ "protocol": {
1569
+ "major": 1,
1570
+ "standing": "deprecated"
1571
+ },
1572
+ "transport": "rest",
1573
+ "resourcesUnreachable": {
1574
+ "model": "the vendor catalog"
1575
+ },
1576
+ "resources": [
1577
+ "file",
1578
+ "batch",
1579
+ "model"
1580
+ ],
1581
+ "endpointEnvNone": "The injector intercepts api.groq.com (see `hosts`), so a world wires this pack through GROQ_TWIN_URL rather than an app-read base-URL var. groq-sdk would honour GROQ_BASE_URL, but @ai-sdk/groq — the dominant client in this repo's demand census — takes its baseURL as a constructor option and reads no such env, so an app-read var would cover only half the traffic while disabling the interception that covers all of it.",
1582
+ "serveExport": "createGroqTwinServer"
1583
+ },
1584
+ "hubspot": {
1585
+ "adoption": {
1586
+ "pypi": [
1587
+ "hubspot-api-client"
1588
+ ],
1589
+ "sdks": [
1590
+ "@hubspot/api-client"
1591
+ ],
1592
+ "envStems": [
1593
+ "HUBSPOT",
1594
+ "HUBSPOTPRIVATEAPP"
1595
+ ]
1596
+ },
1597
+ "hosts": [
1598
+ {
1599
+ "host": "api.hubapi.com"
1600
+ },
1601
+ {
1602
+ "host": "app.hubspot.com"
1603
+ },
1604
+ {
1605
+ "host": "api.hsforms.com"
1606
+ }
1607
+ ],
1608
+ "archetype": "crud",
1609
+ "protocol": {
1610
+ "declared": "2",
1611
+ "major": 2,
1612
+ "standing": "current"
1613
+ },
1614
+ "transport": "rest",
1615
+ "resourcesUnreachable": {
1616
+ "owner": "a portal user provisioned in HubSpot's admin, never through the CRM API"
1617
+ },
1618
+ "resources": [
1619
+ "crm_object",
1620
+ "property",
1621
+ "property_group",
1622
+ "pipeline",
1623
+ "association",
1624
+ "owner"
1625
+ ],
1626
+ "endpointEnvNone": "the @hubspot/api-client SDK takes its base URL from the `basePath` CONSTRUCTOR option (IConfiguration.basePath → ApiClientConfigurator.getBaseServer), not from any environment variable — it reads no process.env at all, and HubSpot documents no base-URL env var. Interception is the api.hubapi.com host entry; inventing a HUBSPOT_BASE_URL the app does not read would report a world covered while its traffic still left the machine.",
1627
+ "serveExport": "createHubspotTwinServer"
1628
+ },
1629
+ "inngest": {
1630
+ "adoption": {
1631
+ "pypi": [
1632
+ "inngest"
1633
+ ],
1634
+ "sdks": [
1635
+ "inngest"
1636
+ ],
1637
+ "envStems": [
1638
+ "INNGEST"
1639
+ ]
1640
+ },
1641
+ "hostsNone": "SDK is base-URL-configured by design (options.baseUrl / INNGEST_BASE_URL / INNGEST_EVENT_API_BASE_URL, verified in the pack README) — worlds wire the twin through those vars",
1642
+ "archetype": "crud",
1643
+ "protocol": {
1644
+ "major": 1,
1645
+ "standing": "deprecated"
1646
+ },
1647
+ "transport": "rest",
1648
+ "resources": [
1649
+ "event",
1650
+ "function",
1651
+ "run",
1652
+ "step",
1653
+ "signing_key"
1654
+ ],
1655
+ "endpointEnv": {
1656
+ "name": "INNGEST_BASE_URL",
1657
+ "templates": {
1658
+ "INNGEST_EVENT_API_BASE_URL": "${url}"
1659
+ },
1660
+ "note": "no injector entry: the inngest SDK is base-URL-configured through INNGEST_BASE_URL / INNGEST_EVENT_API_BASE_URL."
1661
+ },
1662
+ "serveExport": "createInngestTwinServer"
1663
+ },
1664
+ "instagram": {
1665
+ "adoption": {
1666
+ "envStems": [
1667
+ "INSTAGRAM"
1668
+ ]
1669
+ },
1670
+ "hosts": [
1671
+ {
1672
+ "host": "graph.facebook.com",
1673
+ "pathPattern": "^(?:/v\\d+\\.\\d+)?/(?:me|\\d{1,25})(?:/(?:media|media_publish|content_publishing_limit))?/?$|^/_twin/"
1674
+ },
1675
+ {
1676
+ "host": "graph.instagram.com",
1677
+ "pathPattern": "^(?:/v\\d+\\.\\d+)?/(?:me|\\d{1,25})(?:/(?:media|media_publish|content_publishing_limit))?/?$|^/_twin/"
1678
+ },
1679
+ {
1680
+ "host": "rupload.facebook.com",
1681
+ "pathPattern": "^/ig-api-upload/"
1682
+ },
1683
+ {
1684
+ "host": "scontent.cdninstagram.com",
1685
+ "pathPattern": "^/(?:o1/v/t16/f2/m86/|v/t51\\.(?:71878-15|2885-19)/)"
1686
+ }
1687
+ ],
1688
+ "archetype": "crud",
1689
+ "protocol": {
1690
+ "declared": "2",
1691
+ "major": 2,
1692
+ "standing": "current"
1693
+ },
1694
+ "transport": "rest",
1695
+ "resources": [
1696
+ "ig_user",
1697
+ "media"
1698
+ ],
1699
+ "endpointEnvNone": "Meta ships no Instagram Platform client that reads a base-URL environment variable: apps call https://graph.facebook.com/<version>/… and the rupload host by constant, so a World reaches them through the hosts above; inventing an INSTAGRAM_BASE_URL the app never reads would report coverage the app does not have.",
1700
+ "serveExport": "createInstagramTwinServer"
1701
+ },
1702
+ "intercom": {
1703
+ "adoption": {
1704
+ "pypi": [
1705
+ "python-intercom"
1706
+ ],
1707
+ "sdks": [
1708
+ "intercom-client"
1709
+ ],
1710
+ "envStems": [
1711
+ "INTERCOM"
1712
+ ]
1713
+ },
1714
+ "hosts": [
1715
+ {
1716
+ "host": "api.intercom.io"
1717
+ },
1718
+ {
1719
+ "host": "api.eu.intercom.io"
1720
+ },
1721
+ {
1722
+ "host": "api.au.intercom.io"
1723
+ }
1724
+ ],
1725
+ "archetype": "crud",
1726
+ "protocol": {
1727
+ "declared": "2",
1728
+ "major": 2,
1729
+ "standing": "current"
1730
+ },
1731
+ "transport": "rest",
1732
+ "resources": [
1733
+ "contact",
1734
+ "conversation",
1735
+ "message",
1736
+ "event",
1737
+ "data_attribute",
1738
+ "admin",
1739
+ "tag",
1740
+ "note",
1741
+ "company",
1742
+ "segment"
1743
+ ],
1744
+ "serveExport": "createIntercomTwinServer"
1745
+ },
1746
+ "jira": {
1747
+ "adoption": {
1748
+ "pypi": [
1749
+ "jira"
1750
+ ],
1751
+ "sdks": [
1752
+ "jira.js"
1753
+ ],
1754
+ "envStems": [
1755
+ "JIRA",
1756
+ "ATLASSIAN"
1757
+ ]
1758
+ },
1759
+ "hosts": [
1760
+ {
1761
+ "host": "atlassian.net"
1762
+ },
1763
+ {
1764
+ "suffix": ".atlassian.net"
1765
+ }
1766
+ ],
1767
+ "archetype": "crud",
1768
+ "protocol": {
1769
+ "declared": "2",
1770
+ "major": 2,
1771
+ "standing": "current"
1772
+ },
1773
+ "transport": "rest",
1774
+ "resourcesUnreachable": {
1775
+ "oauthtoken": "issued by Atlassian's OAuth authorization server, outside the REST API"
1776
+ },
1777
+ "resources": [
1778
+ "person",
1779
+ "issue",
1780
+ "comment",
1781
+ "issuelink",
1782
+ "attachment",
1783
+ "worklog",
1784
+ "watcher",
1785
+ "vote",
1786
+ "project",
1787
+ "component",
1788
+ "version",
1789
+ "sprint",
1790
+ "filter",
1791
+ "dashboard",
1792
+ "gadget",
1793
+ "webhook",
1794
+ "oauthtoken"
1795
+ ],
1796
+ "serveExport": "createJiraTwinServer"
1797
+ },
1798
+ "langfuse": {
1799
+ "adoption": {
1800
+ "pypi": [
1801
+ "langfuse"
1802
+ ],
1803
+ "sdks": [
1804
+ "langfuse",
1805
+ "langfuse-node"
1806
+ ],
1807
+ "envStems": [
1808
+ "LANGFUSE"
1809
+ ]
1810
+ },
1811
+ "hosts": [
1812
+ {
1813
+ "host": "cloud.langfuse.com"
1814
+ },
1815
+ {
1816
+ "host": "us.cloud.langfuse.com"
1817
+ }
1818
+ ],
1819
+ "archetype": "crud",
1820
+ "protocol": {
1821
+ "declared": "2",
1822
+ "major": 2,
1823
+ "standing": "current"
1824
+ },
1825
+ "transport": "rest",
1826
+ "resources": [
1827
+ "project",
1828
+ "api_key",
1829
+ "trace",
1830
+ "observation",
1831
+ "session",
1832
+ "score",
1833
+ "score_config",
1834
+ "prompt",
1835
+ "dataset",
1836
+ "dataset_item",
1837
+ "dataset_run",
1838
+ "dataset_run_item",
1839
+ "model",
1840
+ "comment",
1841
+ "annotation_queue",
1842
+ "annotation_queue_item",
1843
+ "media",
1844
+ "llm_connection",
1845
+ "ingestion_event"
1846
+ ],
1847
+ "serveExport": "createLangfuseTwinServer"
1848
+ },
1849
+ "linear": {
1850
+ "adoption": {
1851
+ "pypi": [],
1852
+ "sdks": [
1853
+ "@linear/sdk"
1854
+ ],
1855
+ "scopes": [
1856
+ "@linear/"
1857
+ ],
1858
+ "envStems": [
1859
+ "LINEAR"
1860
+ ]
1861
+ },
1862
+ "hosts": [
1863
+ {
1864
+ "host": "api.linear.app"
1865
+ }
1866
+ ],
1867
+ "archetype": "crud",
1868
+ "protocol": {
1869
+ "major": 1,
1870
+ "standing": "deprecated"
1871
+ },
1872
+ "transport": "graphql",
1873
+ "resourcesUnreachable": {
1874
+ "project": "born of the vendor's projectCreate mutation, which this twin does not model yet — pulled only",
1875
+ "cycle": "born of the vendor's cycleCreate mutation, which this twin does not model yet — pulled only",
1876
+ "user": "a workspace member, born of an invite flow outside the API",
1877
+ "workflowState": "born with the team's workflow; the API reads them"
1878
+ },
1879
+ "resources": [
1880
+ "issue",
1881
+ "team",
1882
+ "project",
1883
+ "cycle",
1884
+ "user",
1885
+ "label",
1886
+ "workflowState",
1887
+ "comment",
1888
+ "notification"
1889
+ ],
1890
+ "serveExport": "createDerivedLinearTwinServer"
1891
+ },
1892
+ "linkedin": {
1893
+ "adoption": {
1894
+ "sdks": [
1895
+ "linkedin-api-client"
1896
+ ],
1897
+ "pypi": [
1898
+ "linkedin-api-client"
1899
+ ],
1900
+ "envStems": [
1901
+ "LINKEDIN"
1902
+ ]
1903
+ },
1904
+ "hosts": [
1905
+ {
1906
+ "host": "api.linkedin.com",
1907
+ "pathPattern": "^(?:/rest/(?:posts|images|videos|organizationAcls|organizations|organizationsLookup|networkSizes)(?:/[^/]+)?/?|/v2/userinfo/?)$|^/_twin/"
1908
+ },
1909
+ {
1910
+ "host": "www.linkedin.com",
1911
+ "pathPattern": "^/dms-uploads/"
1912
+ },
1913
+ {
1914
+ "host": "media.licdn.com",
1915
+ "pathPattern": "^/dms/image/"
1916
+ },
1917
+ {
1918
+ "host": "dms.licdn.com",
1919
+ "pathPattern": "^/playlist/"
1920
+ }
1921
+ ],
1922
+ "archetype": "crud",
1923
+ "protocol": {
1924
+ "declared": "2",
1925
+ "major": 2,
1926
+ "standing": "current"
1927
+ },
1928
+ "transport": "rest",
1929
+ "resources": [
1930
+ "organization",
1931
+ "member",
1932
+ "organization_acl",
1933
+ "token",
1934
+ "post"
1935
+ ],
1936
+ "endpointEnvNone": "linkedin-api-client takes no base-URL environment variable (its RestliClient builds https://api.linkedin.com/rest URLs from a constant), so a World reaches it through the hosts above; inventing a LINKEDIN_BASE_URL the app never reads would report coverage the app does not have.",
1937
+ "serveExport": "createLinkedinTwinServer"
1938
+ },
1939
+ "livekit": {
1940
+ "adoption": {
1941
+ "pypi": [
1942
+ "livekit-api",
1943
+ "livekit",
1944
+ "livekit-agents"
1945
+ ],
1946
+ "sdks": [
1947
+ "livekit-server-sdk",
1948
+ "@livekit/rtc-node"
1949
+ ],
1950
+ "scopes": [
1951
+ "@livekit/"
1952
+ ],
1953
+ "envStems": [
1954
+ "LIVEKIT"
1955
+ ]
1956
+ },
1957
+ "hostsNone": "real local media plane (livekit-server) exposed via app-read env (LIVEKIT_URL is ws:// — WebSocket media is outside the HTTP injector's reach)",
1958
+ "archetype": "crud",
1959
+ "protocol": {
1960
+ "declared": "2",
1961
+ "major": 2,
1962
+ "standing": "current"
1963
+ },
1964
+ "transport": "rest",
1965
+ "resources": [
1966
+ "room",
1967
+ "participant",
1968
+ "egress",
1969
+ "ingress",
1970
+ "sip_inbound_trunk",
1971
+ "sip_outbound_trunk",
1972
+ "sip_dispatch_rule",
1973
+ "sip_participant",
1974
+ "agent_dispatch"
1975
+ ],
1976
+ "serveExport": "createLiveKitTwinServer"
1977
+ },
1978
+ "mailgun": {
1979
+ "adoption": {
1980
+ "pypi": [
1981
+ "mailgun"
1982
+ ],
1983
+ "sdks": [
1984
+ "mailgun.js"
1985
+ ],
1986
+ "envStems": [
1987
+ "MAILGUN"
1988
+ ]
1989
+ },
1990
+ "hosts": [
1991
+ {
1992
+ "host": "api.mailgun.net"
1993
+ },
1994
+ {
1995
+ "host": "api.eu.mailgun.net"
1996
+ }
1997
+ ],
1998
+ "archetype": "crud",
1999
+ "protocol": {
2000
+ "major": 1,
2001
+ "standing": "deprecated"
2002
+ },
2003
+ "transport": "rest",
2004
+ "resources": [
2005
+ "domain",
2006
+ "message",
2007
+ "event",
2008
+ "bounce",
2009
+ "complaint",
2010
+ "unsubscribe",
2011
+ "whitelist",
2012
+ "webhook",
2013
+ "route",
2014
+ "mailing_list",
2015
+ "list_member",
2016
+ "template",
2017
+ "template_version",
2018
+ "api_key",
2019
+ "tag",
2020
+ "account"
2021
+ ],
2022
+ "endpointEnvNone": "the mailgun.js SDK reads no environment variable of its own — verified in the shipped v14.0.0 bundle: `MAILGUN` occurs zero times, and every `process.env` hit belongs to bundled axios (proxy vars) or `debug` (DEBUG). The base URL is the constructor `url` option, so no app-read endpoint env exists to inject; redirection is via the `hosts` injector entries.",
2023
+ "serveExport": "createMailgunTwinServer"
2024
+ },
2025
+ "mapbox": {
2026
+ "adoption": {
2027
+ "pypi": [
2028
+ "mapbox"
2029
+ ],
2030
+ "sdks": [
2031
+ "@mapbox/mapbox-sdk"
2032
+ ],
2033
+ "scopes": [
2034
+ "@mapbox/"
2035
+ ],
2036
+ "envStems": [
2037
+ "MAPBOX"
2038
+ ]
2039
+ },
2040
+ "hosts": [
2041
+ {
2042
+ "host": "api.mapbox.com"
2043
+ }
2044
+ ],
2045
+ "archetype": "crud",
2046
+ "protocol": {
2047
+ "major": 1,
2048
+ "standing": "deprecated"
2049
+ },
2050
+ "transport": "rest",
2051
+ "resources": [
2052
+ "geocode",
2053
+ "dataset",
2054
+ "dsfeature",
2055
+ "style",
2056
+ "token",
2057
+ "tileset",
2058
+ "upload"
2059
+ ],
2060
+ "serveExport": "createMapboxTwinServer"
2061
+ },
2062
+ "mistral": {
2063
+ "adoption": {
2064
+ "pypi": [
2065
+ "mistralai"
2066
+ ],
2067
+ "sdks": [
2068
+ "@mistralai/mistralai",
2069
+ "@ai-sdk/mistral"
2070
+ ],
2071
+ "envStems": [
2072
+ "MISTRAL"
2073
+ ]
2074
+ },
2075
+ "hosts": [
2076
+ {
2077
+ "host": "api.mistral.ai"
2078
+ },
2079
+ {
2080
+ "host": "api.eu.mistral.ai"
2081
+ },
2082
+ {
2083
+ "host": "api.us.mistral.ai"
2084
+ }
2085
+ ],
2086
+ "archetype": "generative",
2087
+ "protocol": {
2088
+ "major": 1,
2089
+ "standing": "deprecated"
2090
+ },
2091
+ "transport": "rest",
2092
+ "resources": [
2093
+ "file",
2094
+ "batch_job",
2095
+ "agent",
2096
+ "conversation",
2097
+ "conversation_entry"
2098
+ ],
2099
+ "serveExport": "createMistralTwinServer"
2100
+ },
2101
+ "mixpanel": {
2102
+ "adoption": {
2103
+ "pypi": [
2104
+ "mixpanel"
2105
+ ],
2106
+ "sdks": [
2107
+ "mixpanel",
2108
+ "mixpanel-browser"
2109
+ ]
2110
+ },
2111
+ "hosts": [
2112
+ {
2113
+ "host": "api.mixpanel.com"
2114
+ },
2115
+ {
2116
+ "host": "api-eu.mixpanel.com"
2117
+ },
2118
+ {
2119
+ "host": "api-in.mixpanel.com"
2120
+ },
2121
+ {
2122
+ "host": "api-js.mixpanel.com"
2123
+ },
2124
+ {
2125
+ "host": "data.mixpanel.com"
2126
+ },
2127
+ {
2128
+ "host": "data-eu.mixpanel.com"
2129
+ },
2130
+ {
2131
+ "host": "data-in.mixpanel.com"
2132
+ },
2133
+ {
2134
+ "host": "mixpanel.com"
2135
+ }
2136
+ ],
2137
+ "archetype": "crud",
2138
+ "protocol": {
2139
+ "major": 1,
2140
+ "standing": "deprecated"
2141
+ },
2142
+ "transport": "rest",
2143
+ "resources": [
2144
+ "event",
2145
+ "profile",
2146
+ "identity",
2147
+ "alias"
2148
+ ],
2149
+ "serveExport": "createMixpanelTwinServer"
2150
+ },
2151
+ "moonshot": {
2152
+ "adoption": {
2153
+ "pypi": [],
2154
+ "sdks": [],
2155
+ "envStems": [
2156
+ "MOONSHOT"
2157
+ ]
2158
+ },
2159
+ "hosts": [
2160
+ {
2161
+ "host": "api.moonshot.ai"
2162
+ }
2163
+ ],
2164
+ "archetype": "generative",
2165
+ "protocol": {
2166
+ "declared": "2",
2167
+ "major": 2,
2168
+ "standing": "current"
2169
+ },
2170
+ "transport": "rest",
2171
+ "resourcesUnreachable": {
2172
+ "model": "the vendor catalog",
2173
+ "balance": "the account ledger the vendor keeps; read-only"
2174
+ },
2175
+ "resources": [
2176
+ "file",
2177
+ "batch",
2178
+ "balance",
2179
+ "model"
2180
+ ],
2181
+ "endpointEnvNone": "Moonshot ships no SDK of its own; its documented clients (the standard openai/anthropic SDKs) take their base URL as a constructor option and read no MOONSHOT_BASE_URL env, so an app-read var would cover only env-configured callers while disabling the api.moonshot.ai interception that covers all traffic.",
2182
+ "serveExport": "createMoonshotTwinServer"
2183
+ },
2184
+ "notion": {
2185
+ "adoption": {
2186
+ "pypi": [
2187
+ "notion-client"
2188
+ ],
2189
+ "sdks": [
2190
+ "@notionhq/client"
2191
+ ],
2192
+ "scopes": [
2193
+ "@notionhq/"
2194
+ ],
2195
+ "envStems": [
2196
+ "NOTION"
2197
+ ]
2198
+ },
2199
+ "hostsNone": "no injector entry grounded yet — worlds point @notionhq/client at the twin via its baseUrl option; zero-edit interception of api.notion.com is a visible gap until grounded here",
2200
+ "archetype": "crud",
2201
+ "protocol": {
2202
+ "major": 1,
2203
+ "standing": "deprecated"
2204
+ },
2205
+ "transport": "rest",
2206
+ "resourcesUnreachable": {
2207
+ "user": "a workspace member, born of the workspace admin, read-only through the API"
2208
+ },
2209
+ "resources": [
2210
+ "page",
2211
+ "block",
2212
+ "database",
2213
+ "comment",
2214
+ "user",
2215
+ "webhook"
2216
+ ],
2217
+ "serveExport": "createNotionTwinServer"
2218
+ },
2219
+ "npm-registry": {
2220
+ "adoption": {
2221
+ "pypi": [],
2222
+ "envStems": [
2223
+ "NPM"
2224
+ ]
2225
+ },
2226
+ "hosts": [
2227
+ {
2228
+ "host": "registry.npmjs.org"
2229
+ },
2230
+ {
2231
+ "host": "npm.pkg.github.com"
2232
+ }
2233
+ ],
2234
+ "archetype": "crud",
2235
+ "protocol": {
2236
+ "major": 1,
2237
+ "standing": "deprecated"
2238
+ },
2239
+ "transport": "rest",
2240
+ "resources": [
2241
+ "package",
2242
+ "tarball",
2243
+ "advisory"
2244
+ ],
2245
+ "serveExport": "createNpmRegistryTwinServer"
2246
+ },
2247
+ "oa-treasury": {
2248
+ "adoption": {
2249
+ "pypi": [],
2250
+ "envStems": [
2251
+ "MODELPROXY",
2252
+ "MODELPROXYADMIN",
2253
+ "AGENTPROXY",
2254
+ "AGENTPROXYADMIN",
2255
+ "AGENTPROXYHMAC"
2256
+ ]
2257
+ },
2258
+ "hosts": [
2259
+ {
2260
+ "hostPattern": "^volter-agent-model-proxy\\.[a-z0-9.-]+\\.workers\\.dev$"
2261
+ },
2262
+ {
2263
+ "host": "open-autonomy.org"
2264
+ },
2265
+ {
2266
+ "host": "www.open-autonomy.org"
2267
+ }
2268
+ ],
2269
+ "archetype": "crud",
2270
+ "protocol": {
2271
+ "major": 1,
2272
+ "standing": "deprecated"
2273
+ },
2274
+ "transport": "rest",
2275
+ "resources": [
2276
+ "account",
2277
+ "supplier",
2278
+ "coupon",
2279
+ "reserve",
2280
+ "run",
2281
+ "rail"
2282
+ ],
2283
+ "serveExport": "createOaTreasuryTwinServer"
2284
+ },
2285
+ "openai": {
2286
+ "adoption": {
2287
+ "pypi": [
2288
+ "openai",
2289
+ "openai-agents"
2290
+ ],
2291
+ "sdks": [
2292
+ "openai",
2293
+ "@ai-sdk/openai"
2294
+ ],
2295
+ "envStems": [
2296
+ "OPENAI",
2297
+ "APOPENAI",
2298
+ "OPENAIMODERATION",
2299
+ "REWORKDPLATFORMOPENAI"
2300
+ ]
2301
+ },
2302
+ "hosts": [
2303
+ {
2304
+ "host": "api.openai.com"
2305
+ },
2306
+ {
2307
+ "host": "platform.openai.com",
2308
+ "pathPattern": "^/(settings/proj[-_][^/]+/api-keys|login$)"
2309
+ }
2310
+ ],
2311
+ "archetype": "generative",
2312
+ "protocol": {
2313
+ "declared": "2",
2314
+ "major": 2,
2315
+ "standing": "current"
2316
+ },
2317
+ "transport": "rest",
2318
+ "resources": [
2319
+ "file",
2320
+ "batch",
2321
+ "fine_tuning_job",
2322
+ "vector_store",
2323
+ "vector_store_file",
2324
+ "response",
2325
+ "chat_completion"
2326
+ ],
2327
+ "serveExport": "createOpenAITwinServer"
2328
+ },
2329
+ "openrouter": {
2330
+ "adoption": {
2331
+ "pypi": [
2332
+ "openrouter"
2333
+ ],
2334
+ "sdks": [
2335
+ "@openrouter/ai-sdk-provider"
2336
+ ],
2337
+ "scopes": [
2338
+ "@openrouter/"
2339
+ ],
2340
+ "envStems": [
2341
+ "OPENROUTER",
2342
+ "OR"
2343
+ ]
2344
+ },
2345
+ "hosts": [
2346
+ {
2347
+ "host": "openrouter.ai"
2348
+ }
2349
+ ],
2350
+ "archetype": "generative",
2351
+ "protocol": {
2352
+ "declared": "2",
2353
+ "major": 2,
2354
+ "standing": "current"
2355
+ },
2356
+ "transport": "rest",
2357
+ "resources": [
2358
+ "generation",
2359
+ "api_key",
2360
+ "byok",
2361
+ "preset"
2362
+ ],
2363
+ "serveExport": "createOpenRouterTwinServer"
2364
+ },
2365
+ "openweather": {
2366
+ "adoption": {
2367
+ "pypi": [
2368
+ "pyowm"
2369
+ ],
2370
+ "sdks": [
2371
+ "openweather-api-node"
2372
+ ],
2373
+ "envStems": [
2374
+ "OPENWEATHER",
2375
+ "OPENWEATHERMAP"
2376
+ ]
2377
+ },
2378
+ "hosts": [
2379
+ {
2380
+ "host": "api.openweathermap.org"
2381
+ }
2382
+ ],
2383
+ "archetype": "crud",
2384
+ "protocol": {
2385
+ "declared": "2",
2386
+ "major": 2,
2387
+ "standing": "current"
2388
+ },
2389
+ "transport": "rest",
2390
+ "resources": [
2391
+ "observation",
2392
+ "audit"
2393
+ ],
2394
+ "serveExport": "createOpenWeatherTwinServer"
2395
+ },
2396
+ "paypal": {
2397
+ "adoption": {
2398
+ "sdks": [
2399
+ "paypal-rest-sdk"
2400
+ ],
2401
+ "pypi": [
2402
+ "paypalrestsdk"
2403
+ ],
2404
+ "envStems": [
2405
+ "PAYPAL"
2406
+ ]
2407
+ },
2408
+ "hosts": [
2409
+ {
2410
+ "host": "api.paypal.com",
2411
+ "pathPattern": "^/v1/(?:oauth2/token/?$|identity/openidconnect/|payments/payouts(?:-item)?(?:/|$)|notifications/)|^/_twin/"
2412
+ },
2413
+ {
2414
+ "host": "api-m.paypal.com",
2415
+ "pathPattern": "^/v1/(?:oauth2/token/?$|identity/openidconnect/|payments/payouts(?:-item)?(?:/|$)|notifications/)|^/_twin/"
2416
+ },
2417
+ {
2418
+ "host": "api.sandbox.paypal.com",
2419
+ "pathPattern": "^/v1/(?:oauth2/token/?$|identity/openidconnect/|payments/payouts(?:-item)?(?:/|$)|notifications/)|^/_twin/"
2420
+ },
2421
+ {
2422
+ "host": "api-m.sandbox.paypal.com",
2423
+ "pathPattern": "^/v1/(?:oauth2/token/?$|identity/openidconnect/|payments/payouts(?:-item)?(?:/|$)|notifications/)|^/_twin/"
2424
+ },
2425
+ {
2426
+ "host": "www.paypal.com",
2427
+ "pathPattern": "^/signin/authorize/?$|^/connect/?$|^/webapps/auth/protocol/openidconnect/|^/_twin/"
2428
+ },
2429
+ {
2430
+ "host": "www.sandbox.paypal.com",
2431
+ "pathPattern": "^/signin/authorize/?$|^/connect/?$|^/webapps/auth/protocol/openidconnect/|^/_twin/"
2432
+ }
2433
+ ],
2434
+ "archetype": "crud",
2435
+ "protocol": {
2436
+ "declared": "2",
2437
+ "major": 2,
2438
+ "standing": "current"
2439
+ },
2440
+ "transport": "rest",
2441
+ "resources": [
2442
+ "oauth_client",
2443
+ "account",
2444
+ "session",
2445
+ "auth_request",
2446
+ "authorization_code",
2447
+ "access_token",
2448
+ "refresh_token",
2449
+ "payout_batch",
2450
+ "payout_item",
2451
+ "webhook",
2452
+ "webhook_event"
2453
+ ],
2454
+ "endpointEnvNone": "no PayPal client reads a base-URL env var — paypal-rest-sdk takes mode: sandbox|live, the current @paypal server SDK takes an Environment enum, and the motivating app computes its host from NODE_ENV — so interception is the host entries above.",
2455
+ "serveExport": "createPaypalTwinServer"
2456
+ },
2457
+ "perplexity": {
2458
+ "adoption": {
2459
+ "pypi": [
2460
+ "perplexityai"
2461
+ ],
2462
+ "sdks": [
2463
+ "@ai-sdk/perplexity"
2464
+ ],
2465
+ "envStems": [
2466
+ "PERPLEXITY"
2467
+ ]
2468
+ },
2469
+ "hosts": [
2470
+ {
2471
+ "host": "api.perplexity.ai"
2472
+ }
2473
+ ],
2474
+ "archetype": "generative",
2475
+ "protocol": {
2476
+ "major": 1,
2477
+ "standing": "deprecated"
2478
+ },
2479
+ "transport": "rest",
2480
+ "resources": [
2481
+ "async_request"
2482
+ ],
2483
+ "endpointEnvNone": "@ai-sdk/perplexity — the dominant client in the 2026-08-31-b demand census — takes its baseURL as a constructor option and reads NO base-URL environment variable (perplexity-provider.ts: `withoutTrailingSlash(options.baseURL ?? 'https://api.perplexity.ai')`, and `loadApiKey` reads only PERPLEXITY_API_KEY). Perplexity documents no base-URL env var for any client, so there is nothing to inject; a fabricated PERPLEXITY_BASE_URL would let `covers` call a world covered while the app kept calling api.perplexity.ai. The injector intercepts that host (see `hosts`) instead.",
2484
+ "serveExport": "createPerplexityTwinServer"
2485
+ },
2486
+ "pinecone": {
2487
+ "adoption": {
2488
+ "pypi": [
2489
+ "pinecone",
2490
+ "pinecone-client"
2491
+ ],
2492
+ "sdks": [
2493
+ "@pinecone-database/pinecone"
2494
+ ],
2495
+ "scopes": [
2496
+ "@pinecone-database/"
2497
+ ],
2498
+ "envStems": [
2499
+ "PINECONE"
2500
+ ]
2501
+ },
2502
+ "hostsNone": "control/data host split with per-index data-plane hostnames ({index}-{project}.svc.{env}.pinecone.io, see the pack README) — SDK is pointed at the twin by explicit host config",
2503
+ "archetype": "crud",
2504
+ "protocol": {
2505
+ "major": 1,
2506
+ "standing": "deprecated"
2507
+ },
2508
+ "transport": "rest",
2509
+ "resources": [
2510
+ "index",
2511
+ "collection",
2512
+ "vector"
2513
+ ],
2514
+ "serveExport": "createPineconeTwinServer"
2515
+ },
2516
+ "plain": {
2517
+ "adoption": {
2518
+ "pypi": [],
2519
+ "sdks": [
2520
+ "@team-plain/typescript-sdk"
2521
+ ],
2522
+ "scopes": [
2523
+ "@team-plain/"
2524
+ ],
2525
+ "envStems": [
2526
+ "PLAIN",
2527
+ "NEXTPRIVATEPLAIN"
2528
+ ]
2529
+ },
2530
+ "hosts": [
2531
+ {
2532
+ "host": "core-api.uk.plain.com"
2533
+ }
2534
+ ],
2535
+ "archetype": "crud",
2536
+ "protocol": {
2537
+ "declared": "2",
2538
+ "major": 2,
2539
+ "standing": "current"
2540
+ },
2541
+ "transport": "graphql",
2542
+ "resourcesUnreachable": {
2543
+ "company": "born of the vendor's createCompany mutation, which this twin does not model (no manifest entry) — pulled only",
2544
+ "customerGroup": "born of createCustomerGroup, filed as todo plain.customergroups.op_create — pulled only",
2545
+ "customerGroupMembership": "born of addCustomerToCustomerGroups over a group the twin cannot create yet — pulled only",
2546
+ "workspace": "the tenant itself",
2547
+ "user": "a workspace member, born of an invite",
2548
+ "machineUser": "born in the workspace settings UI"
2549
+ },
2550
+ "resources": [
2551
+ "workspace",
2552
+ "user",
2553
+ "machineUser",
2554
+ "customer",
2555
+ "company",
2556
+ "tenant",
2557
+ "customerGroup",
2558
+ "customerGroupMembership",
2559
+ "thread",
2560
+ "label",
2561
+ "labelType",
2562
+ "threadField",
2563
+ "timelineEntry",
2564
+ "note",
2565
+ "customerEvent",
2566
+ "webhookTarget",
2567
+ "attachment"
2568
+ ],
2569
+ "serveExport": "createPlainTwinServer"
2570
+ },
2571
+ "planetscale": {
2572
+ "adoption": {
2573
+ "pypi": [],
2574
+ "sdks": [
2575
+ "@planetscale/database"
2576
+ ],
2577
+ "envStems": [
2578
+ "PLANETSCALE"
2579
+ ]
2580
+ },
2581
+ "hosts": [
2582
+ {
2583
+ "suffix": ".psdb.cloud"
2584
+ },
2585
+ {
2586
+ "host": "api.planetscale.com",
2587
+ "pathPattern": "^/v1/organizations(/|$)"
2588
+ },
2589
+ {
2590
+ "host": "app.planetscale.com",
2591
+ "pathPattern": "^/(sign-in|[^/]+/settings/service-tokens)(/|$)"
2592
+ }
2593
+ ],
2594
+ "archetype": "crud",
2595
+ "protocol": {
2596
+ "declared": "2",
2597
+ "major": 2,
2598
+ "standing": "current"
2599
+ },
2600
+ "transport": "rest",
2601
+ "nativeTransport": {
2602
+ "protocol": "mysql",
2603
+ "flag": "--mysql",
2604
+ "upstreamEnv": "PLANETSCALE_TWIN_URL"
2605
+ },
2606
+ "resources": [
2607
+ "table",
2608
+ "row",
2609
+ "_session",
2610
+ "_backup"
2611
+ ],
2612
+ "endpointEnv": {
2613
+ "name": "PLANETSCALE_TWIN_URL",
2614
+ "templates": {
2615
+ "PLANETSCALE_DATABASE_URL": "http://twin:twin@${host}:${port}"
2616
+ },
2617
+ "note": "the @planetscale/database client reads PLANETSCALE_DATABASE_URL and honours http:; the injector also redirects *.psdb.cloud."
2618
+ },
2619
+ "prismaAdapter": {
2620
+ "adapter": "@prisma/adapter-planetscale",
2621
+ "export": "PrismaPlanetScale",
2622
+ "urlEnv": "PLANETSCALE_DATABASE_URL"
2623
+ },
2624
+ "serveExport": "createPlanetscaleTwinServer"
2625
+ },
2626
+ "polar": {
2627
+ "adoption": {
2628
+ "pypi": [
2629
+ "polar-sdk"
2630
+ ],
2631
+ "sdks": [
2632
+ "@polar-sh/sdk"
2633
+ ],
2634
+ "scopes": [
2635
+ "@polar-sh/"
2636
+ ],
2637
+ "envStems": [
2638
+ "POLAR"
2639
+ ]
2640
+ },
2641
+ "hosts": [
2642
+ {
2643
+ "host": "api.polar.sh"
2644
+ },
2645
+ {
2646
+ "host": "sandbox-api.polar.sh"
2647
+ }
2648
+ ],
2649
+ "archetype": "crud",
2650
+ "protocol": {
2651
+ "declared": "2",
2652
+ "major": 2,
2653
+ "standing": "current"
2654
+ },
2655
+ "transport": "rest",
2656
+ "resources": [
2657
+ "customer",
2658
+ "product",
2659
+ "subscription",
2660
+ "order",
2661
+ "checkout",
2662
+ "benefit",
2663
+ "discount",
2664
+ "meter",
2665
+ "event",
2666
+ "customer_session",
2667
+ "webhook_endpoint"
2668
+ ],
2669
+ "serveExport": "createPolarTwinServer"
2670
+ },
2671
+ "posthog": {
2672
+ "adoption": {
2673
+ "pypi": [
2674
+ "posthog"
2675
+ ],
2676
+ "sdks": [
2677
+ "posthog-node",
2678
+ "posthog-js",
2679
+ "@posthog/api-client",
2680
+ "@posthog/react"
2681
+ ],
2682
+ "envStems": [
2683
+ "POSTHOG",
2684
+ "POSTHOGANALYTICS",
2685
+ "POSTHOGPERSONAL",
2686
+ "POSTHOGPROJECT",
2687
+ "POSTHOGPUBLIC"
2688
+ ]
2689
+ },
2690
+ "hosts": [
2691
+ {
2692
+ "host": "app.posthog.com"
2693
+ },
2694
+ {
2695
+ "host": "us.posthog.com"
2696
+ },
2697
+ {
2698
+ "host": "eu.posthog.com"
2699
+ },
2700
+ {
2701
+ "suffix": ".i.posthog.com"
2702
+ }
2703
+ ],
2704
+ "archetype": "crud",
2705
+ "protocol": {
2706
+ "declared": "2",
2707
+ "major": 2,
2708
+ "standing": "current"
2709
+ },
2710
+ "transport": "rest",
2711
+ "resources": [
2712
+ "project",
2713
+ "event",
2714
+ "person",
2715
+ "feature_flag",
2716
+ "insight",
2717
+ "cohort",
2718
+ "experiment",
2719
+ "annotation",
2720
+ "dashboard",
2721
+ "action",
2722
+ "group",
2723
+ "org_member",
2724
+ "early_access_feature",
2725
+ "event_definition",
2726
+ "property_definition"
2727
+ ],
2728
+ "serveExport": "createPosthogTwinServer"
2729
+ },
2730
+ "postmark": {
2731
+ "adoption": {
2732
+ "pypi": [
2733
+ "postmarker"
2734
+ ],
2735
+ "sdks": [
2736
+ "postmark"
2737
+ ],
2738
+ "envStems": [
2739
+ "POSTMARK"
2740
+ ]
2741
+ },
2742
+ "hosts": [
2743
+ {
2744
+ "host": "api.postmarkapp.com"
2745
+ }
2746
+ ],
2747
+ "archetype": "crud",
2748
+ "protocol": {
2749
+ "declared": "2",
2750
+ "major": 2,
2751
+ "standing": "current"
2752
+ },
2753
+ "transport": "rest",
2754
+ "resources": [
2755
+ "message",
2756
+ "bounce",
2757
+ "template",
2758
+ "message_stream",
2759
+ "webhook",
2760
+ "suppression",
2761
+ "server",
2762
+ "domain",
2763
+ "sender_signature",
2764
+ "inbound_rule"
2765
+ ],
2766
+ "serveExport": "createPostmarkTwinServer"
2767
+ },
2768
+ "reddit": {
2769
+ "adoption": {
2770
+ "sdks": [
2771
+ "snoowrap"
2772
+ ],
2773
+ "pypi": [],
2774
+ "envStems": [
2775
+ "REDDIT"
2776
+ ]
2777
+ },
2778
+ "hosts": [
2779
+ {
2780
+ "host": "oauth.reddit.com",
2781
+ "pathPattern": "^/(?:api/v1/me|api/submit|api/del|api/comment|api/info|api/media/asset|by_id/[^/]+|r/[^/]+/(?:about|new|api/info)|user/[^/]+/(?:about|submitted)|subreddits/mine/(?:moderator|contributor)|(?:r/[^/]+/)?comments/[a-z0-9]+(?:/[^/]*)?)(?:\\.json)?/?$|^/_twin/"
2782
+ },
2783
+ {
2784
+ "host": "www.reddit.com",
2785
+ "pathPattern": "^/api/v1/access_token$"
2786
+ },
2787
+ {
2788
+ "host": "reddit-uploaded-media.s3-accelerate.amazonaws.com"
2789
+ },
2790
+ {
2791
+ "host": "v.redd.it",
2792
+ "pathPattern": "^/[a-z0-9]{13}/DASH_\\d{2,4}\\.mp4$"
2793
+ },
2794
+ {
2795
+ "host": "preview.redd.it",
2796
+ "pathPattern": "^/[a-z0-9]{13}\\.(?:png|jpg|gif)$"
2797
+ },
2798
+ {
2799
+ "host": "i.redd.it",
2800
+ "pathPattern": "^/[a-z0-9]{13}\\.(?:png|jpg|gif)$"
2801
+ }
2802
+ ],
2803
+ "archetype": "crud",
2804
+ "protocol": {
2805
+ "declared": "2",
2806
+ "major": 2,
2807
+ "standing": "current"
2808
+ },
2809
+ "transport": "rest",
2810
+ "resources": [
2811
+ "user",
2812
+ "subreddit",
2813
+ "link",
2814
+ "comment"
2815
+ ],
2816
+ "endpointEnvNone": "reddit clients take no base-URL environment variable (snoowrap and PRAW build https://oauth.reddit.com and https://www.reddit.com URLs from constants or explicit constructor options), so a World reaches them through the hosts above; inventing a REDDIT_BASE_URL the app never reads would report coverage the app does not have.",
2817
+ "serveExport": "createRedditTwinServer"
2818
+ },
2819
+ "replicate": {
2820
+ "adoption": {
2821
+ "pypi": [
2822
+ "replicate"
2823
+ ],
2824
+ "sdks": [
2825
+ "replicate",
2826
+ "@ai-sdk/replicate"
2827
+ ],
2828
+ "envStems": [
2829
+ "REPLICATE",
2830
+ "REWORKDPLATFORMREPLICATE"
2831
+ ]
2832
+ },
2833
+ "hostsNone": "no injector entry grounded yet — worlds wire the twin via the SDK's explicit baseUrl config; zero-edit interception of api.replicate.com is a visible gap until its hosts are grounded here",
2834
+ "archetype": "generative",
2835
+ "protocol": {
2836
+ "major": 1,
2837
+ "standing": "deprecated"
2838
+ },
2839
+ "transport": "rest",
2840
+ "resourcesUnreachable": {
2841
+ "model_version": "born of `cog push`, never of the HTTP API; pulled"
2842
+ },
2843
+ "resources": [
2844
+ "prediction",
2845
+ "model",
2846
+ "model_version",
2847
+ "webhook_secret"
2848
+ ],
2849
+ "serveExport": "createReplicateTwinServer"
2850
+ },
2851
+ "resend": {
2852
+ "adoption": {
2853
+ "pypi": [
2854
+ "resend"
2855
+ ],
2856
+ "sdks": [
2857
+ "resend"
2858
+ ],
2859
+ "envStems": [
2860
+ "RESEND",
2861
+ "NEXTPRIVATERESEND"
2862
+ ]
2863
+ },
2864
+ "hosts": [
2865
+ {
2866
+ "host": "api.resend.com"
2867
+ }
2868
+ ],
2869
+ "archetype": "crud",
2870
+ "protocol": {
2871
+ "declared": "2",
2872
+ "major": 2,
2873
+ "standing": "current"
2874
+ },
2875
+ "transport": "rest",
2876
+ "resources": [
2877
+ "email",
2878
+ "audience",
2879
+ "contact",
2880
+ "domain",
2881
+ "api_key"
2882
+ ],
2883
+ "serveExport": "createResendTwinServer"
2884
+ },
2885
+ "runhuman": {
2886
+ "adoption": {
2887
+ "sdks": [
2888
+ "runhuman"
2889
+ ]
2890
+ },
2891
+ "hosts": [
2892
+ {
2893
+ "host": "runhuman.com",
2894
+ "pathPattern": "^/api/"
2895
+ }
2896
+ ],
2897
+ "archetype": "crud",
2898
+ "protocol": {
2899
+ "declared": "2",
2900
+ "major": 2,
2901
+ "standing": "current"
2902
+ },
2903
+ "transport": "rest",
2904
+ "resources": [
2905
+ "organization",
2906
+ "project",
2907
+ "api_key",
2908
+ "user",
2909
+ "tester_profile",
2910
+ "job",
2911
+ "pipeline_run"
2912
+ ],
2913
+ "endpointEnv": {
2914
+ "name": "RUNHUMAN_API_URL",
2915
+ "note": "grounded in volter-ai/runhuman packages/cli/src/lib/config.ts, which overrides the CLI apiUrl from RUNHUMAN_API_URL; RH2 reads its human-marketplace base URL from the provider row spec.url instead, which a rehearsal World sets to this same twin URL."
2916
+ },
2917
+ "serveExport": "createRunhumanTwinServer"
2918
+ },
2919
+ "scrapecreators": {
2920
+ "adoption": {
2921
+ "pypi": [],
2922
+ "sdks": [
2923
+ "@scrapecreators/cli"
2924
+ ],
2925
+ "envStems": [
2926
+ "SCRAPECREATORS"
2927
+ ]
2928
+ },
2929
+ "hosts": [
2930
+ {
2931
+ "host": "api.scrapecreators.com"
2932
+ }
2933
+ ],
2934
+ "archetype": "crud",
2935
+ "protocol": {
2936
+ "declared": "2",
2937
+ "major": 2,
2938
+ "standing": "current"
2939
+ },
2940
+ "transport": "rest",
2941
+ "resources": [
2942
+ "profile",
2943
+ "content",
2944
+ "cache",
2945
+ "account",
2946
+ "usage"
2947
+ ],
2948
+ "serveExport": "createScrapeCreatorsTwinServer"
2949
+ },
2950
+ "segment": {
2951
+ "adoption": {
2952
+ "pypi": [
2953
+ "segment-analytics-python",
2954
+ "analytics-python"
2955
+ ],
2956
+ "sdks": [
2957
+ "@segment/analytics-node"
2958
+ ],
2959
+ "envStems": [
2960
+ "SEGMENT"
2961
+ ]
2962
+ },
2963
+ "hosts": [
2964
+ {
2965
+ "host": "api.segment.io"
2966
+ },
2967
+ {
2968
+ "host": "events.eu1.segmentapis.com"
2969
+ },
2970
+ {
2971
+ "host": "oauth2.segment.io"
2972
+ },
2973
+ {
2974
+ "host": "oauth2.eu1.segmentapis.com"
2975
+ }
2976
+ ],
2977
+ "archetype": "crud",
2978
+ "protocol": {
2979
+ "major": 1,
2980
+ "standing": "deprecated"
2981
+ },
2982
+ "transport": "rest",
2983
+ "resources": [
2984
+ "event",
2985
+ "identity",
2986
+ "group",
2987
+ "dropped"
2988
+ ],
2989
+ "serveExport": "createSegmentTwinServer"
2990
+ },
2991
+ "sendblue": {
2992
+ "adoption": {
2993
+ "pypi": [
2994
+ "sendblue"
2995
+ ],
2996
+ "sdks": [
2997
+ "sendblue"
2998
+ ],
2999
+ "envStems": [
3000
+ "SENDBLUE"
3001
+ ]
3002
+ },
3003
+ "hostsNone": "no injector entry grounded yet — worlds wire the twin via explicit client endpoint config; a visible gap until its host is grounded here",
3004
+ "archetype": "crud",
3005
+ "protocol": {
3006
+ "major": 1,
3007
+ "standing": "deprecated"
3008
+ },
3009
+ "transport": "rest",
3010
+ "resources": [
3011
+ "message",
3012
+ "credential"
3013
+ ],
3014
+ "serveExport": "createSendblueTwinServer"
3015
+ },
3016
+ "sendgrid": {
3017
+ "adoption": {
3018
+ "pypi": [
3019
+ "sendgrid"
3020
+ ],
3021
+ "sdks": [
3022
+ "@sendgrid/mail",
3023
+ "@sendgrid/client"
3024
+ ],
3025
+ "envStems": [
3026
+ "SENDGRID",
3027
+ "SENDGRIDSYNC"
3028
+ ]
3029
+ },
3030
+ "hosts": [
3031
+ {
3032
+ "host": "api.sendgrid.com"
3033
+ },
3034
+ {
3035
+ "host": "api.eu.sendgrid.com"
3036
+ },
3037
+ {
3038
+ "host": "email.twilio.com"
3039
+ }
3040
+ ],
3041
+ "archetype": "crud",
3042
+ "protocol": {
3043
+ "major": 1,
3044
+ "standing": "deprecated"
3045
+ },
3046
+ "transport": "rest",
3047
+ "resources": [
3048
+ "message"
3049
+ ],
3050
+ "serveExport": "createSendgridTwinServer"
3051
+ },
3052
+ "sentry": {
3053
+ "adoption": {
3054
+ "pypi": [
3055
+ "sentry-sdk"
3056
+ ],
3057
+ "sdks": [
3058
+ "@sentry/node",
3059
+ "@sentry/browser",
3060
+ "@sentry/react",
3061
+ "@sentry/nextjs",
3062
+ "@sentry/vue",
3063
+ "@sentry/sveltekit",
3064
+ "@sentry/astro",
3065
+ "@sentry/remix",
3066
+ "@sentry/electron",
3067
+ "@sentry/react-native"
3068
+ ],
3069
+ "scopes": [
3070
+ "@sentry/"
3071
+ ],
3072
+ "envStems": [
3073
+ "SENTRY",
3074
+ "APPSMITHSENTRY"
3075
+ ]
3076
+ },
3077
+ "hosts": [
3078
+ {
3079
+ "host": "sentry.io"
3080
+ },
3081
+ {
3082
+ "suffix": ".ingest.sentry.io"
3083
+ }
3084
+ ],
3085
+ "archetype": "crud",
3086
+ "protocol": {
3087
+ "declared": "2",
3088
+ "major": 2,
3089
+ "standing": "current"
3090
+ },
3091
+ "transport": "rest",
3092
+ "resources": [
3093
+ "organization",
3094
+ "team",
3095
+ "project",
3096
+ "project_key",
3097
+ "issue",
3098
+ "event",
3099
+ "event_attachment",
3100
+ "session",
3101
+ "project_ownership",
3102
+ "codeowners",
3103
+ "project_filter",
3104
+ "release",
3105
+ "release_file",
3106
+ "deploy",
3107
+ "alert_rule",
3108
+ "metric_alert",
3109
+ "org_integration"
3110
+ ],
3111
+ "serveExport": "createSentryTwinServer"
3112
+ },
3113
+ "slack": {
3114
+ "adoption": {
3115
+ "worldIds": [
3116
+ "slackapp"
3117
+ ],
3118
+ "pypi": [
3119
+ "slack-sdk",
3120
+ "slack-bolt",
3121
+ "slackclient"
3122
+ ],
3123
+ "sdks": [
3124
+ "@slack/web-api",
3125
+ "@slack/bolt",
3126
+ "@slack/webhook",
3127
+ "@slack/oauth"
3128
+ ],
3129
+ "scopes": [
3130
+ "@slack/"
3131
+ ],
3132
+ "envStems": [
3133
+ "SLACK",
3134
+ "SLACKBOTUSER"
3135
+ ]
3136
+ },
3137
+ "hosts": [
3138
+ {
3139
+ "key": "slackapp",
3140
+ "host": "slack.com",
3141
+ "pathPattern": "^/api/apps\\.connections\\.open/?$"
3142
+ },
3143
+ {
3144
+ "host": "slack.com"
3145
+ },
3146
+ {
3147
+ "host": "www.slack.com"
3148
+ },
3149
+ {
3150
+ "host": "api.slack.com"
3151
+ },
3152
+ {
3153
+ "host": "hooks.slack.com",
3154
+ "pathPattern": "^/services/"
3155
+ },
3156
+ {
3157
+ "host": "avatars.slack-edge.com",
3158
+ "pathPattern": "^/T[A-Za-z0-9-]+/(([UWA][A-Za-z0-9-]+|icon)_[0-9]{1,4}\\.png|[UW][A-Za-z0-9-]+-[0-9a-f]{12}_([0-9]{1,4}|original)\\.(png|gif))$"
3159
+ }
3160
+ ],
3161
+ "archetype": "crud",
3162
+ "protocol": {
3163
+ "declared": "2",
3164
+ "major": 2,
3165
+ "standing": "current"
3166
+ },
3167
+ "transport": "web-api",
3168
+ "resources": [
3169
+ "channel",
3170
+ "user",
3171
+ "message",
3172
+ "file",
3173
+ "audit"
3174
+ ],
3175
+ "serveExport": "createSlackTwinServer"
3176
+ },
3177
+ "smtp": {
3178
+ "adoption": {
3179
+ "pypi": [
3180
+ "aiosmtplib"
3181
+ ],
3182
+ "sdks": [
3183
+ "nodemailer",
3184
+ "nodemailer-smtp-transport",
3185
+ "emailjs"
3186
+ ],
3187
+ "envStems": [
3188
+ "NEXTPRIVATESMTP"
3189
+ ]
3190
+ },
3191
+ "hostsNone": "RAW-PROTOCOL pack — there is no host to map. SMTP is a line protocol over a raw TCP socket, so the injector (which patches http/fetch) cannot see the traffic at all, and there is no vendor hostname either: the relay is whatever the operator names (smtp.gmail.com, email-smtp.us-east-1.amazonaws.com, localhost:1025 …). Interception is app-read env instead — the world injects SMTP_HOST/SMTP_PORT + EMAIL_SERVER/EMAIL_SERVER_HOST/EMAIL_SERVER_PORT at the twin's listener (APP_READ_ENDPOINT_ENV in world-runtime/src/init.ts), which is the ONLY thing every SMTP client is configured with. Same class as livekit's ws:// media plane, one layer further down.",
3192
+ "archetype": "crud",
3193
+ "protocol": {
3194
+ "major": 1,
3195
+ "standing": "deprecated"
3196
+ },
3197
+ "transport": "raw-tcp",
3198
+ "resources": [
3199
+ "message",
3200
+ "relay"
3201
+ ],
3202
+ "serveExport": "createSmtpTwinServer"
3203
+ },
3204
+ "snowflake": {
3205
+ "adoption": {
3206
+ "pypi": [
3207
+ "snowflake-connector-python",
3208
+ "snowflake",
3209
+ "snowflake-snowpark-python",
3210
+ "snowflake-sqlalchemy"
3211
+ ],
3212
+ "sdks": [
3213
+ "snowflake-sdk"
3214
+ ],
3215
+ "envStems": [
3216
+ "SNOWFLAKE"
3217
+ ]
3218
+ },
3219
+ "hosts": [
3220
+ {
3221
+ "suffix": ".snowflakecomputing.com"
3222
+ },
3223
+ {
3224
+ "suffix": ".snowflakecomputing.cn"
3225
+ }
3226
+ ],
3227
+ "archetype": "crud",
3228
+ "protocol": {
3229
+ "major": 1,
3230
+ "standing": "deprecated"
3231
+ },
3232
+ "transport": "rest",
3233
+ "resources": [
3234
+ "database",
3235
+ "schema",
3236
+ "table",
3237
+ "view",
3238
+ "warehouse",
3239
+ "session",
3240
+ "query"
3241
+ ],
3242
+ "endpointEnvNone": "the snowflake-sdk takes its endpoint through createConnection()'s own account/host/accessUrl/protocol/port options or a connections.toml under SNOWFLAKE_HOME; it reads NO base-URL environment variable (verified against the packed snowflake-sdk@3.2.0 tarball, whose lib/ reads SNOWFLAKE_HOME, SNOWFLAKE_DEFAULT_CONNECTION_NAME, the SNOWFLAKE_DISABLE_*/SNOWFLAKE_CRL_*/SNOWFLAKE_RUNNING_INSIDE_SPCS switches, the SF_OCSP_*/SF_TELEMETRY_*/SF_CLIENT_CONFIG_FILE/SF_TEMPORARY_CREDENTIAL_CACHE_DIR debug and cache switches, the standard http_proxy family, and some non-Snowflake names like AWS_REGION/HOME - no base-URL variable of any kind). Interception is host-based via the .snowflakecomputing.com and .snowflakecomputing.cn suffix entries; a SNOWFLAKE_BASE_URL would be a var no app reads.",
3243
+ "serveExport": "createSnowflakeTwinServer"
3244
+ },
3245
+ "stigg": {
3246
+ "adoption": {
3247
+ "sdks": [
3248
+ "@stigg/node-server-sdk",
3249
+ "@stigg/react-sdk",
3250
+ "@stigg/js-client-sdk",
3251
+ "@stigg/api-client-js"
3252
+ ],
3253
+ "pypi": [
3254
+ "stigg-api-client",
3255
+ "stigg"
3256
+ ],
3257
+ "scopes": [
3258
+ "@stigg/"
3259
+ ],
3260
+ "envStems": [
3261
+ "STIGG",
3262
+ "STIGGCLIENT"
3263
+ ]
3264
+ },
3265
+ "hosts": [
3266
+ {
3267
+ "host": "api.stigg.io"
3268
+ },
3269
+ {
3270
+ "host": "edge.api.stigg.io"
3271
+ }
3272
+ ],
3273
+ "archetype": "crud",
3274
+ "protocol": {
3275
+ "declared": "2",
3276
+ "major": 2,
3277
+ "standing": "current"
3278
+ },
3279
+ "transport": "graphql",
3280
+ "resources": [
3281
+ "product",
3282
+ "plan",
3283
+ "feature",
3284
+ "packageEntitlement",
3285
+ "price",
3286
+ "customer",
3287
+ "subscription",
3288
+ "usageMeasurement",
3289
+ "promotionalEntitlement",
3290
+ "coupon",
3291
+ "integration",
3292
+ "hook"
3293
+ ],
3294
+ "endpointEnvNone": "the Stigg SDKs take their base URL as a constructor option (Stigg.initialize({ baseUri, baseEdgeUri })) and read NO env var for it. Verified by grep for process.env across the SDK dists: @stigg/node-server-sdk 4.55.0 (the version this pack pins and installs) and, in the consumer tree that motivated the pack, @stigg/node-server-sdk 4.2.0 and @stigg/js-client-sdk 3.67.0 — every one of them references only process.env.NODE_ENV. (The browser SDKs are NOT installed in this repo; that half of the evidence comes from ~/Code/Ponder and is therefore not re-checkable here, which is why both trees are named rather than one. §9 round 1 flagged the original citation for naming versions this repo does not carry.) Interception is by the api.stigg.io / edge.api.stigg.io host entries above.",
3295
+ "serveExport": "createStiggTwinServer"
3296
+ },
3297
+ "stream": {
3298
+ "adoption": {
3299
+ "pypi": [
3300
+ "stream-chat"
3301
+ ],
3302
+ "sdks": [
3303
+ "stream-chat"
3304
+ ],
3305
+ "envStems": [
3306
+ "STREAM",
3307
+ "GETSTREAM"
3308
+ ]
3309
+ },
3310
+ "hosts": [
3311
+ {
3312
+ "host": "chat.stream-io-api.com"
3313
+ }
3314
+ ],
3315
+ "archetype": "crud",
3316
+ "protocol": {
3317
+ "declared": "2",
3318
+ "major": 2,
3319
+ "standing": "current"
3320
+ },
3321
+ "transport": "rest",
3322
+ "resources": [
3323
+ "user",
3324
+ "channel",
3325
+ "message",
3326
+ "channeltype",
3327
+ "device",
3328
+ "ban",
3329
+ "mute",
3330
+ "flag"
3331
+ ],
3332
+ "serveExport": "createStreamTwinServer"
3333
+ },
3334
+ "stripe": {
3335
+ "adoption": {
3336
+ "pypi": [
3337
+ "stripe"
3338
+ ],
3339
+ "sdks": [
3340
+ "stripe"
3341
+ ],
3342
+ "envStems": [
3343
+ "STRIPE",
3344
+ "NEXTPRIVATESTRIPE"
3345
+ ]
3346
+ },
3347
+ "hosts": [
3348
+ {
3349
+ "host": "api.stripe.com"
3350
+ },
3351
+ {
3352
+ "host": "checkout.stripe.com",
3353
+ "pathPattern": "^/c/pay/"
3354
+ },
3355
+ {
3356
+ "host": "billing.stripe.com",
3357
+ "pathPattern": "^/p/session/"
3358
+ },
3359
+ {
3360
+ "host": "connect.stripe.com",
3361
+ "pathPattern": "^/setup/"
3362
+ },
3363
+ {
3364
+ "host": "dashboard.stripe.com",
3365
+ "pathPattern": "^/settings/public/?$"
3366
+ },
3367
+ {
3368
+ "host": "verify.stripe.com",
3369
+ "pathPattern": "^/start/"
3370
+ },
3371
+ {
3372
+ "host": "js.stripe.com",
3373
+ "pathPattern": "^/v3/financial-connections/|^/v3/?$|^/(v3|[a-z]+)/stripe\\.js$"
3374
+ }
3375
+ ],
3376
+ "archetype": "crud",
3377
+ "protocol": {
3378
+ "declared": "2",
3379
+ "major": 2,
3380
+ "standing": "current"
3381
+ },
3382
+ "transport": "rest",
3383
+ "resources": [
3384
+ "charge",
3385
+ "customer",
3386
+ "payment_intent",
3387
+ "setup_intent",
3388
+ "payment_method",
3389
+ "subscription",
3390
+ "price",
3391
+ "product",
3392
+ "invoice",
3393
+ "invoiceitem",
3394
+ "refund",
3395
+ "event"
3396
+ ],
3397
+ "serveExport": "createStripeTwinServer"
3398
+ },
3399
+ "supabase": {
3400
+ "adoption": {
3401
+ "pypi": [
3402
+ "supabase",
3403
+ "gotrue",
3404
+ "supabase-auth",
3405
+ "postgrest",
3406
+ "storage3",
3407
+ "supafunc",
3408
+ "realtime"
3409
+ ],
3410
+ "sdks": [
3411
+ "@supabase/supabase-js"
3412
+ ],
3413
+ "scopes": [
3414
+ "@supabase/"
3415
+ ],
3416
+ "envStems": [
3417
+ "SUPABASE"
3418
+ ],
3419
+ "worldIds": [
3420
+ "supabasemgmt"
3421
+ ]
3422
+ },
3423
+ "hostsNone": "dual-plane by design: the data plane is the REAL local Supabase stack (external service, app reads discovered SUPABASE_URL); the management twin is app-read via SUPABASE_MGMT_TWIN_URL (cookbook/saas-ai-supabase/app.mjs) — no fixed-host interception wired",
3424
+ "archetype": "engine-control",
3425
+ "protocol": {
3426
+ "major": 1,
3427
+ "standing": "deprecated"
3428
+ },
3429
+ "transport": "rest",
3430
+ "resourcesUnreachable": {
3431
+ "access_token": "a personal access token minted in the dashboard; the twin only reads it as seeded state",
3432
+ "network_ban": "born of the vendor's abuse detector",
3433
+ "backup": "born of the vendor's scheduler"
3434
+ },
3435
+ "resources": [
3436
+ "organization",
3437
+ "org_member",
3438
+ "access_token",
3439
+ "project",
3440
+ "branch",
3441
+ "config",
3442
+ "secret",
3443
+ "function",
3444
+ "network_restrictions",
3445
+ "network_ban",
3446
+ "custom_hostname",
3447
+ "read_replica",
3448
+ "backup"
3449
+ ],
3450
+ "serveExport": "createSupabaseTwinServer"
3451
+ },
3452
+ "supermemory": {
3453
+ "adoption": {
3454
+ "pypi": [
3455
+ "supermemory"
3456
+ ],
3457
+ "sdks": [
3458
+ "supermemory"
3459
+ ],
3460
+ "envStems": [
3461
+ "SUPERMEMORY"
3462
+ ]
3463
+ },
3464
+ "hosts": [
3465
+ {
3466
+ "host": "api.supermemory.ai"
3467
+ }
3468
+ ],
3469
+ "archetype": "crud",
3470
+ "protocol": {
3471
+ "declared": "2",
3472
+ "major": 2,
3473
+ "standing": "current"
3474
+ },
3475
+ "transport": "rest",
3476
+ "resources": [
3477
+ "document",
3478
+ "setting"
3479
+ ],
3480
+ "serveExport": "createSupermemoryTwinServer"
3481
+ },
3482
+ "svix": {
3483
+ "adoption": {
3484
+ "pypi": [
3485
+ "svix"
3486
+ ],
3487
+ "sdks": [
3488
+ "svix"
3489
+ ],
3490
+ "envStems": [
3491
+ "SVIX"
3492
+ ]
3493
+ },
3494
+ "hosts": [
3495
+ {
3496
+ "host": "api.svix.com"
3497
+ },
3498
+ {
3499
+ "host": "api.us.svix.com"
3500
+ },
3501
+ {
3502
+ "host": "api.eu.svix.com"
3503
+ },
3504
+ {
3505
+ "host": "api.in.svix.com"
3506
+ },
3507
+ {
3508
+ "host": "api.ca.svix.com"
3509
+ },
3510
+ {
3511
+ "host": "api.au.svix.com"
3512
+ }
3513
+ ],
3514
+ "archetype": "crud",
3515
+ "protocol": {
3516
+ "declared": "2",
3517
+ "major": 2,
3518
+ "standing": "current"
3519
+ },
3520
+ "transport": "rest",
3521
+ "resources": [
3522
+ "application",
3523
+ "endpoint",
3524
+ "message",
3525
+ "message_attempt",
3526
+ "event_type"
3527
+ ],
3528
+ "serveExport": "createSvixTwinServer"
3529
+ },
3530
+ "tavily": {
3531
+ "adoption": {
3532
+ "sdks": [
3533
+ "@tavily/core"
3534
+ ],
3535
+ "pypi": [
3536
+ "tavily-python"
3537
+ ],
3538
+ "envStems": [
3539
+ "TAVILY"
3540
+ ]
3541
+ },
3542
+ "hosts": [
3543
+ {
3544
+ "host": "api.tavily.com"
3545
+ }
3546
+ ],
3547
+ "archetype": "crud",
3548
+ "protocol": {
3549
+ "declared": "2",
3550
+ "major": 2,
3551
+ "standing": "current"
3552
+ },
3553
+ "transport": "rest",
3554
+ "resources": [
3555
+ "page",
3556
+ "usage",
3557
+ "log",
3558
+ "research",
3559
+ "keyless"
3560
+ ],
3561
+ "endpointEnvNone": "the @tavily/core SDK exposes no base-URL env var — it reads only TAVILY_API_KEY/TAVILY_HTTP(S)_PROXY/TAVILY_ORG_ID/TAVILY_PROJECT from process.env; base-URL override is the constructor option apiBaseURL (dist/index.mjs post()/get(): `apiBaseURL || BASE_URL`), so interception is the hosts entry above.",
3562
+ "serveExport": "createTavilyTwinServer"
3563
+ },
3564
+ "tiktok": {
3565
+ "adoption": {
3566
+ "sdks": [],
3567
+ "pypi": [],
3568
+ "envStems": [
3569
+ "TIKTOK"
3570
+ ]
3571
+ },
3572
+ "hosts": [
3573
+ {
3574
+ "host": "www.tiktok.com",
3575
+ "pathPattern": "^/v2/auth/authorize/?$|^/_twin/"
3576
+ },
3577
+ {
3578
+ "host": "open.tiktokapis.com",
3579
+ "pathPattern": "^/v2/(?:oauth/(?:token|revoke)|user/info|video/(?:list|query)|post/publish/(?:creator_info/query|video/init|inbox/video/init|status/fetch))/?$|^/_twin/"
3580
+ },
3581
+ {
3582
+ "host": "open-upload.tiktokapis.com",
3583
+ "pathPattern": "^/video/?$"
3584
+ }
3585
+ ],
3586
+ "archetype": "crud",
3587
+ "protocol": {
3588
+ "declared": "2",
3589
+ "major": 2,
3590
+ "standing": "current"
3591
+ },
3592
+ "transport": "rest",
3593
+ "resources": [
3594
+ "oauth_client",
3595
+ "account",
3596
+ "session",
3597
+ "auth_request",
3598
+ "grant",
3599
+ "video",
3600
+ "publish"
3601
+ ],
3602
+ "endpointEnvNone": "no app-read base-URL env exists: TikTok publishes no official SDK with a base-URL option and integrations (Dub included) hardcode www.tiktok.com and open.tiktokapis.com, so interception is the path-scoped hosts entries above.",
3603
+ "serveExport": "createTikTokTwinServer"
3604
+ },
3605
+ "tinybird": {
3606
+ "adoption": {
3607
+ "pypi": [
3608
+ "tinybird-python-sdk",
3609
+ "tinybird-cli"
3610
+ ],
3611
+ "sdks": [
3612
+ "@chronark/zod-bird"
3613
+ ],
3614
+ "scopes": [
3615
+ "@chronark/zod-bird"
3616
+ ],
3617
+ "envStems": [
3618
+ "TINYBIRD"
3619
+ ]
3620
+ },
3621
+ "hosts": [
3622
+ {
3623
+ "host": "api.tinybird.co"
3624
+ },
3625
+ {
3626
+ "hostPattern": "^api\\.[a-z0-9.-]+\\.tinybird\\.co$"
3627
+ }
3628
+ ],
3629
+ "archetype": "crud",
3630
+ "protocol": {
3631
+ "declared": "2",
3632
+ "major": 2,
3633
+ "standing": "current"
3634
+ },
3635
+ "transport": "rest",
3636
+ "resources": [
3637
+ "datasource",
3638
+ "pipe",
3639
+ "event",
3640
+ "token",
3641
+ "job",
3642
+ "tag"
3643
+ ],
3644
+ "serveExport": "createTinybirdTwinServer"
3645
+ },
3646
+ "togetherai": {
3647
+ "adoption": {
3648
+ "sdks": [
3649
+ "together-ai"
3650
+ ],
3651
+ "envStems": [
3652
+ "TOGETHER"
3653
+ ]
3654
+ },
3655
+ "hosts": [
3656
+ {
3657
+ "host": "api.together.ai"
3658
+ }
3659
+ ],
3660
+ "archetype": "generative",
3661
+ "protocol": {
3662
+ "declared": "2",
3663
+ "major": 2,
3664
+ "standing": "current"
3665
+ },
3666
+ "transport": "rest",
3667
+ "resourcesUnreachable": {
3668
+ "model": "the vendor catalog"
3669
+ },
3670
+ "resources": [
3671
+ "file",
3672
+ "batch",
3673
+ "finetune",
3674
+ "model"
3675
+ ],
3676
+ "endpointEnv": {
3677
+ "name": "TOGETHER_TWIN_URL",
3678
+ "templates": {
3679
+ "TOGETHER_API_BASE_URL": "${url}/v1"
3680
+ },
3681
+ "note": "the injector covers api.together.ai, but together-ai's files.upload() reads TOGETHER_API_BASE_URL at module load and ignores client.baseURL (lib/upload.js:12) — the template points it at the twin's /v1 so the SDK upload flow does not egress to the real vendor."
3682
+ },
3683
+ "serveExport": "createTogetheraiTwinServer"
3684
+ },
3685
+ "tremendous": {
3686
+ "adoption": {
3687
+ "pypi": [],
3688
+ "sdks": [
3689
+ "tremendous"
3690
+ ],
3691
+ "envStems": [
3692
+ "TREMENDOUS"
3693
+ ]
3694
+ },
3695
+ "hosts": [
3696
+ {
3697
+ "host": "api.tremendous.com"
3698
+ },
3699
+ {
3700
+ "host": "testflight.tremendous.com"
3701
+ }
3702
+ ],
3703
+ "archetype": "crud",
3704
+ "protocol": {
3705
+ "major": 1,
3706
+ "standing": "deprecated"
3707
+ },
3708
+ "transport": "rest",
3709
+ "resources": [
3710
+ "order",
3711
+ "reward",
3712
+ "campaign",
3713
+ "product",
3714
+ "funding_source",
3715
+ "invoice",
3716
+ "topup",
3717
+ "balance_txn",
3718
+ "member",
3719
+ "field",
3720
+ "webhook",
3721
+ "organization",
3722
+ "settings"
3723
+ ],
3724
+ "serveExport": "createTremendousTwinServer"
3725
+ },
3726
+ "tunnel": {
3727
+ "adoption": {
3728
+ "pypi": [],
3729
+ "sdks": [
3730
+ "@volter/tunnel"
3731
+ ],
3732
+ "envStems": [
3733
+ "TUNNEL",
3734
+ "VOLTERTUNNEL"
3735
+ ]
3736
+ },
3737
+ "hostsNone": "no injector entry by design: native cloudflared is an external binary, while @volter/tunnel opens a configurable WebSocket control channel and the CLI reads TUNNEL_SERVER_URL. Worlds wire that app-read endpoint directly; claiming api.trycloudflare.com in the Node injector would not redirect cloudflared and would falsely imply the Cloudflare edge data plane was twinned",
3738
+ "archetype": "proxy",
3739
+ "protocol": {
3740
+ "major": 1,
3741
+ "standing": "deprecated"
3742
+ },
3743
+ "transport": "rest",
3744
+ "resources": [
3745
+ "quick_tunnel",
3746
+ "relay_tunnel",
3747
+ "relay"
3748
+ ],
3749
+ "serveExport": "createTunnelTwinServer"
3750
+ },
3751
+ "turbopuffer": {
3752
+ "adoption": {
3753
+ "sdks": [
3754
+ "@turbopuffer/turbopuffer"
3755
+ ],
3756
+ "pypi": [
3757
+ "turbopuffer"
3758
+ ],
3759
+ "scopes": [
3760
+ "@turbopuffer/"
3761
+ ],
3762
+ "envStems": [
3763
+ "TURBOPUFFER"
3764
+ ]
3765
+ },
3766
+ "hosts": [
3767
+ {
3768
+ "hostPattern": "^(?:aws|gcp|azure)-[a-z0-9-]+\\.turbopuffer\\.com$"
3769
+ },
3770
+ {
3771
+ "host": "turbopuffer.com",
3772
+ "pathPattern": "^/(login|dashboard|_twin/users)(/|$)"
3773
+ }
3774
+ ],
3775
+ "archetype": "crud",
3776
+ "protocol": {
3777
+ "declared": "2",
3778
+ "major": 2,
3779
+ "standing": "current"
3780
+ },
3781
+ "transport": "rest",
3782
+ "resources": [
3783
+ "namespace",
3784
+ "document"
3785
+ ],
3786
+ "endpointEnv": {
3787
+ "name": "TURBOPUFFER_TWIN_URL",
3788
+ "templates": {
3789
+ "TURBOPUFFER_BASE_URL": "${url}/{region}"
3790
+ },
3791
+ "note": "grounded in @turbopuffer/turbopuffer@2.8.0 src/client.ts:253-288 (TURBOPUFFER_BASE_URL, {region} placeholder substitution) and internal/custom/fetch-node.ts (undici Agent.request under node, outside the injector); the injector also claims the regional *.turbopuffer.com hosts for fetch-based runtimes."
3792
+ },
3793
+ "serveExport": "createTurbopufferTwinServer"
3794
+ },
3795
+ "twelvelabs": {
3796
+ "adoption": {
3797
+ "pypi": [
3798
+ "twelvelabs"
3799
+ ],
3800
+ "sdks": [
3801
+ "twelvelabs-js"
3802
+ ],
3803
+ "envStems": [
3804
+ "TWELVELABS"
3805
+ ]
3806
+ },
3807
+ "hosts": [
3808
+ {
3809
+ "host": "api.twelvelabs.io"
3810
+ }
3811
+ ],
3812
+ "archetype": "generative",
3813
+ "protocol": {
3814
+ "major": 1,
3815
+ "standing": "deprecated"
3816
+ },
3817
+ "transport": "rest",
3818
+ "resources": [
3819
+ "index",
3820
+ "task",
3821
+ "video"
3822
+ ],
3823
+ "serveExport": "createTwelvelabsTwinServer"
3824
+ },
3825
+ "twilio": {
3826
+ "adoption": {
3827
+ "pypi": [
3828
+ "twilio"
3829
+ ],
3830
+ "sdks": [
3831
+ "twilio"
3832
+ ],
3833
+ "envStems": [
3834
+ "TWILIO"
3835
+ ]
3836
+ },
3837
+ "hostsNone": "no injector entry grounded yet — worlds point the twilio SDK at the twin via explicit client config; zero-edit interception of the three real Twilio hosts (pack README §Coverage) is a visible gap until grounded here",
3838
+ "archetype": "crud",
3839
+ "protocol": {
3840
+ "major": 1,
3841
+ "standing": "deprecated"
3842
+ },
3843
+ "transport": "rest",
3844
+ "resources": [
3845
+ "message",
3846
+ "verification",
3847
+ "phone_number",
3848
+ "signing_key"
3849
+ ],
3850
+ "serveExport": "createTwilioTwinServer"
3851
+ },
3852
+ "upstash": {
3853
+ "adoption": {
3854
+ "pypi": [
3855
+ "upstash-redis",
3856
+ "upstash-ratelimit",
3857
+ "qstash",
3858
+ "upstash-workflow"
3859
+ ],
3860
+ "sdks": [
3861
+ "@upstash/redis",
3862
+ "@upstash/ratelimit",
3863
+ "@upstash/qstash",
3864
+ "@upstash/workflow"
3865
+ ],
3866
+ "scopes": [
3867
+ "@upstash/redis",
3868
+ "@upstash/ratelimit",
3869
+ "@upstash/qstash",
3870
+ "@upstash/workflow"
3871
+ ],
3872
+ "envStems": [
3873
+ "UPSTASHREDIS",
3874
+ "KVREST",
3875
+ "QSTASH"
3876
+ ]
3877
+ },
3878
+ "hosts": [
3879
+ {
3880
+ "suffix": ".upstash.io"
3881
+ },
3882
+ {
3883
+ "suffix": "-vector.upstash.io",
3884
+ "exclude": true
3885
+ },
3886
+ {
3887
+ "host": "api.upstash.com",
3888
+ "pathPattern": "^/v2/(redis|team|teams)(/|$)"
3889
+ },
3890
+ {
3891
+ "host": "console.upstash.com",
3892
+ "pathPattern": "^/(login|account/(api|teams)|qstash|invite)(/|$)"
3893
+ }
3894
+ ],
3895
+ "archetype": "crud",
3896
+ "protocol": {
3897
+ "declared": "2",
3898
+ "major": 2,
3899
+ "standing": "current"
3900
+ },
3901
+ "transport": "rest",
3902
+ "resources": [
3903
+ "key"
3904
+ ],
3905
+ "endpointEnv": {
3906
+ "name": "UPSTASH_TWIN_URL",
3907
+ "templates": {
3908
+ "QSTASH_URL": "${url}"
3909
+ },
3910
+ "note": "@upstash/qstash and @upstash/workflow read QSTASH_URL; the injector also redirects *.upstash.io (Redis databases, QStash) to this twin."
3911
+ },
3912
+ "serveExport": "createUpstashRedisTwinServer"
3913
+ },
3914
+ "upstashvector": {
3915
+ "adoption": {
3916
+ "pypi": [
3917
+ "upstash-vector"
3918
+ ],
3919
+ "sdks": [
3920
+ "@upstash/vector"
3921
+ ],
3922
+ "scopes": [
3923
+ "@upstash/vector"
3924
+ ],
3925
+ "envStems": [
3926
+ "UPSTASHVECTOR"
3927
+ ]
3928
+ },
3929
+ "hosts": [
3930
+ {
3931
+ "suffix": "-vector.upstash.io"
3932
+ }
3933
+ ],
3934
+ "archetype": "crud",
3935
+ "protocol": {
3936
+ "declared": "2",
3937
+ "major": 2,
3938
+ "standing": "current"
3939
+ },
3940
+ "transport": "rest",
3941
+ "resources": [
3942
+ "vector",
3943
+ "namespace",
3944
+ "config"
3945
+ ],
3946
+ "serveExport": "createUpstashVectorTwinServer"
3947
+ },
3948
+ "vercel": {
3949
+ "adoption": {
3950
+ "pypi": [
3951
+ "vercel"
3952
+ ],
3953
+ "sdks": [
3954
+ "@vercel/sdk",
3955
+ "@vercel/edge-config"
3956
+ ],
3957
+ "envStems": [
3958
+ "VERCEL"
3959
+ ]
3960
+ },
3961
+ "hosts": [
3962
+ {
3963
+ "host": "api.vercel.com"
3964
+ },
3965
+ {
3966
+ "host": "edge-config.vercel.com"
3967
+ },
3968
+ {
3969
+ "host": "avatar.vercel.sh"
3970
+ },
3971
+ {
3972
+ "host": "vercel.com",
3973
+ "pathPattern": "^/(login|account/tokens)(/|$)"
3974
+ }
3975
+ ],
3976
+ "archetype": "crud",
3977
+ "protocol": {
3978
+ "declared": "2",
3979
+ "major": 2,
3980
+ "standing": "current"
3981
+ },
3982
+ "transport": "rest",
3983
+ "resources": [
3984
+ "team",
3985
+ "project",
3986
+ "project_domain",
3987
+ "domain",
3988
+ "dns_record",
3989
+ "env_var",
3990
+ "edge_config",
3991
+ "deployment",
3992
+ "alias",
3993
+ "auth_token"
3994
+ ],
3995
+ "serveExport": "createVercelTwinServer"
3996
+ },
3997
+ "veriff": {
3998
+ "adoption": {
3999
+ "pypi": [],
4000
+ "sdks": [
4001
+ "@veriff/js-sdk"
4002
+ ],
4003
+ "scopes": [
4004
+ "@veriff/"
4005
+ ],
4006
+ "envStems": [
4007
+ "VERIFF"
4008
+ ]
4009
+ },
4010
+ "hosts": [
4011
+ {
4012
+ "host": "stationapi.veriff.com"
4013
+ },
4014
+ {
4015
+ "host": "api.veriff.me"
4016
+ }
4017
+ ],
4018
+ "archetype": "crud",
4019
+ "protocol": {
4020
+ "declared": "2",
4021
+ "major": 2,
4022
+ "standing": "current"
4023
+ },
4024
+ "transport": "rest",
4025
+ "resources": [
4026
+ "session",
4027
+ "attempt",
4028
+ "media",
4029
+ "delivery"
4030
+ ],
4031
+ "serveExport": "createVeriffTwinServer"
4032
+ },
4033
+ "vital": {
4034
+ "adoption": {
4035
+ "pypi": [
4036
+ "vital"
4037
+ ],
4038
+ "sdks": [
4039
+ "@tryvital/vital-node"
4040
+ ],
4041
+ "scopes": [
4042
+ "@tryvital/"
4043
+ ],
4044
+ "envStems": [
4045
+ "VITAL"
4046
+ ]
4047
+ },
4048
+ "hosts": [
4049
+ {
4050
+ "host": "api.tryvital.io"
4051
+ },
4052
+ {
4053
+ "host": "api.sandbox.tryvital.io"
4054
+ }
4055
+ ],
4056
+ "archetype": "crud",
4057
+ "protocol": {
4058
+ "declared": "2",
4059
+ "major": 2,
4060
+ "standing": "current"
4061
+ },
4062
+ "transport": "rest",
4063
+ "resources": [
4064
+ "user",
4065
+ "order",
4066
+ "appointment",
4067
+ "webhook"
4068
+ ],
4069
+ "serveExport": "createVitalTwinServer"
4070
+ },
4071
+ "volteridentity": {
4072
+ "adoption": {
4073
+ "sdks": [
4074
+ "@volter/identity"
4075
+ ],
4076
+ "pypi": [],
4077
+ "envStems": []
4078
+ },
4079
+ "hosts": [
4080
+ {
4081
+ "host": "id.volter.ai"
4082
+ }
4083
+ ],
4084
+ "archetype": "crud",
4085
+ "protocol": {
4086
+ "declared": "2",
4087
+ "major": 2,
4088
+ "standing": "current"
4089
+ },
4090
+ "transport": "rest",
4091
+ "resources": [
4092
+ "person",
4093
+ "session",
4094
+ "oauth_client",
4095
+ "oauth_resource",
4096
+ "client_resource",
4097
+ "consent",
4098
+ "authorization_code",
4099
+ "access_token",
4100
+ "refresh_token",
4101
+ "device_code",
4102
+ "organization",
4103
+ "member",
4104
+ "invitation"
4105
+ ],
4106
+ "endpointEnv": {
4107
+ "name": "VOLTER_ISSUER",
4108
+ "note": "grounded in the consumers: browser-substrate services/gateway/cloudflare/volter.ts (`VOLTER_ISSUER`, \"the identity service, https://id.volter.ai\") discovers the issuer from it, and Volter Teams is configured with `VOLTER_ISSUER` (volter-ai/identity ROADMAP I4); the twin is its own issuer, so discovery, tokens and redirects all name the injected URL."
4109
+ },
4110
+ "serveExport": "createVolterIdentityTwinServer"
4111
+ },
4112
+ "webrisk": {
4113
+ "adoption": {
4114
+ "pypi": [
4115
+ "google-cloud-webrisk"
4116
+ ],
4117
+ "sdks": [
4118
+ "@google-cloud/web-risk"
4119
+ ],
4120
+ "envStems": [
4121
+ "WEBRISK"
4122
+ ]
4123
+ },
4124
+ "hosts": [
4125
+ {
4126
+ "host": "webrisk.googleapis.com"
4127
+ }
4128
+ ],
4129
+ "archetype": "crud",
4130
+ "protocol": {
4131
+ "declared": "2",
4132
+ "major": 2,
4133
+ "standing": "current"
4134
+ },
4135
+ "transport": "rest",
4136
+ "resources": [
4137
+ "verdict",
4138
+ "submission",
4139
+ "operation",
4140
+ "audit",
4141
+ "iam_policy"
4142
+ ],
4143
+ "serveExport": "createWebRiskTwinServer"
4144
+ },
4145
+ "x": {
4146
+ "adoption": {
4147
+ "pypi": [
4148
+ "tweepy"
4149
+ ],
4150
+ "sdks": [
4151
+ "twitter-api-v2"
4152
+ ]
4153
+ },
4154
+ "hosts": [
4155
+ {
4156
+ "host": "api.x.com",
4157
+ "pathPattern": "^(?:/2/media/upload/?|/2/media/upload/initialize/?|/2/media/upload/[0-9]+/(?:append|finalize)/?|/2/tweets/?|/2/tweets/[^/]+/?|/2/tweets/search/recent/?|/2/users/(?!me/?$)[^/]+/?|/2/users/by/username/[^/]+/?|/2/users/[^/]+/mentions/?|/2/users/[^/]+/tweets/?|/2/users/[^/]+/timelines/reverse_chronological/?)$|^/_twin/"
4158
+ },
4159
+ {
4160
+ "host": "api.twitter.com",
4161
+ "pathPattern": "^(?:/2/media/upload/?|/2/media/upload/initialize/?|/2/media/upload/[0-9]+/(?:append|finalize)/?|/2/tweets/?|/2/tweets/[^/]+/?|/2/tweets/search/recent/?|/2/users/(?!me/?$)[^/]+/?|/2/users/by/username/[^/]+/?|/2/users/[^/]+/mentions/?|/2/users/[^/]+/tweets/?|/2/users/[^/]+/timelines/reverse_chronological/?)$|^/_twin/"
4162
+ }
4163
+ ],
4164
+ "archetype": "crud",
4165
+ "protocol": {
4166
+ "major": 1,
4167
+ "standing": "deprecated"
4168
+ },
4169
+ "transport": "rest",
4170
+ "resources": [
4171
+ "account",
4172
+ "token",
4173
+ "post",
4174
+ "follow",
4175
+ "rate_limit"
4176
+ ],
4177
+ "serveExport": "createXTwinServer"
4178
+ },
4179
+ "xai": {
4180
+ "adoption": {
4181
+ "pypi": [
4182
+ "xai-sdk"
4183
+ ],
4184
+ "sdks": [
4185
+ "@ai-sdk/xai"
4186
+ ],
4187
+ "envStems": [
4188
+ "XAI",
4189
+ "GROK"
4190
+ ]
4191
+ },
4192
+ "hosts": [
4193
+ {
4194
+ "host": "api.x.ai"
4195
+ }
4196
+ ],
4197
+ "archetype": "generative",
4198
+ "protocol": {
4199
+ "declared": "2",
4200
+ "major": 2,
4201
+ "standing": "current"
4202
+ },
4203
+ "transport": "rest",
4204
+ "resourcesUnreachable": {
4205
+ "language_model": "the vendor catalog",
4206
+ "model": "the vendor catalog"
4207
+ },
4208
+ "resources": [
4209
+ "deferred_completion",
4210
+ "language_model",
4211
+ "model",
4212
+ "oauth_account",
4213
+ "oauth_device_authorization",
4214
+ "oauth_usage"
4215
+ ],
4216
+ "serveExport": "createXaiTwinServer"
4217
+ },
4218
+ "xidentity": {
4219
+ "adoption": {
4220
+ "pypi": [],
4221
+ "sdks": [
4222
+ "@xdevplatform/xdk",
4223
+ "twitter-api-sdk"
4224
+ ],
4225
+ "scopes": [
4226
+ "@xdevplatform/"
4227
+ ],
4228
+ "envStems": [
4229
+ "X",
4230
+ "TWITTER"
4231
+ ]
4232
+ },
4233
+ "hosts": [
4234
+ {
4235
+ "host": "x.com",
4236
+ "pathPattern": "^/i/oauth2/authorize/?$|^/_twin/"
4237
+ },
4238
+ {
4239
+ "host": "twitter.com",
4240
+ "pathPattern": "^/i/oauth2/authorize/?$|^/_twin/"
4241
+ },
4242
+ {
4243
+ "host": "api.x.com",
4244
+ "pathPattern": "^/2/(?:oauth2/(?:token|revoke)|users/me)/?$"
4245
+ },
4246
+ {
4247
+ "host": "api.twitter.com",
4248
+ "pathPattern": "^/2/(?:oauth2/(?:token|revoke)|users/me)/?$"
4249
+ }
4250
+ ],
4251
+ "archetype": "crud",
4252
+ "protocol": {
4253
+ "major": 1,
4254
+ "standing": "deprecated"
4255
+ },
4256
+ "transport": "rest",
4257
+ "resources": [
4258
+ "oauth_client",
4259
+ "account",
4260
+ "session",
4261
+ "auth_request",
4262
+ "authorization_code",
4263
+ "access_token",
4264
+ "refresh_token",
4265
+ "grant",
4266
+ "rate_window"
4267
+ ],
4268
+ "serveExport": "createXIdentityTwinServer"
4269
+ },
4270
+ "youtube": {
4271
+ "adoption": {
4272
+ "pypi": [],
4273
+ "sdks": [
4274
+ "@googleapis/youtube"
4275
+ ],
4276
+ "envStems": [
4277
+ "YOUTUBE"
4278
+ ]
4279
+ },
4280
+ "hosts": [
4281
+ {
4282
+ "host": "youtube.googleapis.com"
4283
+ },
4284
+ {
4285
+ "host": "www.googleapis.com",
4286
+ "pathPattern": "^/(upload/)?youtube/v3(/|$)"
4287
+ }
4288
+ ],
4289
+ "archetype": "crud",
4290
+ "protocol": {
4291
+ "declared": "2",
4292
+ "major": 2,
4293
+ "standing": "current"
4294
+ },
4295
+ "transport": "rest",
4296
+ "resources": [
4297
+ "channel",
4298
+ "video",
4299
+ "playlist",
4300
+ "playlistItem"
4301
+ ],
4302
+ "serveExport": "createYouTubeTwinServer"
4303
+ }
4304
+ },
4305
+ "undeclared": []
4306
+ }