@hasna/connectors 0.2.6 → 0.2.8

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 (73) hide show
  1. package/bin/index.js +3 -3
  2. package/bin/mcp.js +19 -19
  3. package/connectors/connect-anthropic/AGENTS.md +22 -0
  4. package/connectors/connect-anthropic/CLAUDE.md +29 -0
  5. package/connectors/connect-anthropic/README.md +22 -3
  6. package/connectors/connect-anthropic/src/types/index.ts +46 -2
  7. package/connectors/connect-aws/CLAUDE.md +16 -0
  8. package/connectors/connect-brandsight/CLAUDE.md +5 -0
  9. package/connectors/connect-cloudflare/CLAUDE.md +21 -0
  10. package/connectors/connect-discord/CLAUDE.md +19 -0
  11. package/connectors/connect-docker/CLAUDE.md +8 -0
  12. package/connectors/connect-e2b/CLAUDE.md +21 -0
  13. package/connectors/connect-elevenlabs/CLAUDE.md +24 -0
  14. package/connectors/connect-exa/CLAUDE.md +35 -0
  15. package/connectors/connect-figma/CLAUDE.md +34 -0
  16. package/connectors/connect-firecrawl/CLAUDE.md +27 -0
  17. package/connectors/connect-github/CLAUDE.md +32 -2
  18. package/connectors/connect-gmail/CLAUDE.md +22 -0
  19. package/connectors/connect-google/CLAUDE.md +11 -0
  20. package/connectors/connect-googlecalendar/CLAUDE.md +9 -0
  21. package/connectors/connect-googlecloud/CLAUDE.md +12 -0
  22. package/connectors/connect-googlecontacts/CLAUDE.md +7 -0
  23. package/connectors/connect-googledocs/CLAUDE.md +7 -0
  24. package/connectors/connect-googledrive/CLAUDE.md +5 -0
  25. package/connectors/connect-googlegemini/CLAUDE.md +18 -0
  26. package/connectors/connect-googlegemini/src/types/index.ts +10 -3
  27. package/connectors/connect-googlemaps/CLAUDE.md +15 -0
  28. package/connectors/connect-googlesheets/CLAUDE.md +10 -0
  29. package/connectors/connect-googletasks/CLAUDE.md +6 -0
  30. package/connectors/connect-hedra/CLAUDE.md +15 -0
  31. package/connectors/connect-heygen/CLAUDE.md +14 -0
  32. package/connectors/connect-huggingface/CLAUDE.md +20 -0
  33. package/connectors/connect-icons8/CLAUDE.md +6 -0
  34. package/connectors/connect-maropost/CLAUDE.md +6 -0
  35. package/connectors/connect-mercury/CLAUDE.md +14 -0
  36. package/connectors/connect-meta/CLAUDE.md +16 -0
  37. package/connectors/connect-midjourney/CLAUDE.md +7 -0
  38. package/connectors/connect-mistral/CLAUDE.md +20 -0
  39. package/connectors/connect-mistral/src/types/index.ts +42 -7
  40. package/connectors/connect-mixpanel/CLAUDE.md +11 -0
  41. package/connectors/connect-notion/CLAUDE.md +30 -0
  42. package/connectors/connect-openai/AGENTS.md +15 -0
  43. package/connectors/connect-openai/CLAUDE.md +23 -0
  44. package/connectors/connect-openai/src/types/index.ts +36 -14
  45. package/connectors/connect-openweathermap/CLAUDE.md +8 -0
  46. package/connectors/connect-pandadoc/CLAUDE.md +18 -0
  47. package/connectors/connect-quo/CLAUDE.md +5 -0
  48. package/connectors/connect-reddit/CLAUDE.md +20 -0
  49. package/connectors/connect-reducto/CLAUDE.md +16 -0
  50. package/connectors/connect-resend/CLAUDE.md +21 -0
  51. package/connectors/connect-revolut/CLAUDE.md +17 -0
  52. package/connectors/connect-sedo/CLAUDE.md +6 -0
  53. package/connectors/connect-sentry/CLAUDE.md +11 -0
  54. package/connectors/connect-shadcn/CLAUDE.md +42 -0
  55. package/connectors/connect-shopify/CLAUDE.md +18 -0
  56. package/connectors/connect-snap/CLAUDE.md +6 -0
  57. package/connectors/connect-stabilityai/CLAUDE.md +13 -0
  58. package/connectors/connect-stripe/CLAUDE.md +19 -0
  59. package/connectors/connect-stripeatlas/CLAUDE.md +7 -0
  60. package/connectors/connect-substack/CLAUDE.md +6 -0
  61. package/connectors/connect-tiktok/CLAUDE.md +25 -0
  62. package/connectors/connect-tinker/CLAUDE.md +6 -0
  63. package/connectors/connect-twilio/CLAUDE.md +9 -0
  64. package/connectors/connect-uspto/CLAUDE.md +8 -0
  65. package/connectors/connect-webflow/CLAUDE.md +19 -0
  66. package/connectors/connect-wix/CLAUDE.md +20 -0
  67. package/connectors/connect-x/CLAUDE.md +15 -0
  68. package/connectors/connect-xads/CLAUDE.md +10 -0
  69. package/connectors/connect-xai/CLAUDE.md +15 -0
  70. package/connectors/connect-xai/src/types/index.ts +20 -4
  71. package/connectors/connect-youtube/CLAUDE.md +28 -0
  72. package/connectors/connect-zoom/CLAUDE.md +15 -0
  73. package/package.json +1 -1
package/bin/index.js CHANGED
@@ -6583,7 +6583,7 @@ var PRESETS = {
6583
6583
  commerce: { description: "Commerce and finance", connectors: ["stripe", "shopify", "revolut", "mercury", "pandadoc"] }
6584
6584
  };
6585
6585
  var program2 = new Command;
6586
- program2.name("connectors").description("Install API connectors for your project").version("0.2.6");
6586
+ program2.name("connectors").description("Install API connectors for your project").version("0.2.8");
6587
6587
  program2.command("interactive", { isDefault: true }).alias("i").description("Interactive connector browser").action(() => {
6588
6588
  if (!isTTY) {
6589
6589
  console.log(`Non-interactive environment detected. Use a subcommand:
@@ -7746,7 +7746,7 @@ program2.command("import").argument("<file>", "JSON backup file to import (use -
7746
7746
  }
7747
7747
  });
7748
7748
  program2.command("upgrade").alias("self-update").option("--check", "Only check for updates, don't install", false).option("--json", "Output as JSON", false).description("Check for updates and upgrade to the latest version").action(async (options) => {
7749
- const currentVersion = "0.2.6";
7749
+ const currentVersion = "0.2.8";
7750
7750
  try {
7751
7751
  const res = await fetch("https://registry.npmjs.org/@hasna/connectors/latest");
7752
7752
  if (!res.ok)
@@ -7962,7 +7962,7 @@ Available presets:
7962
7962
  program2.command("whoami").option("--json", "Output as JSON", false).description("Show current setup: config dir, installed connectors, auth status").action((options) => {
7963
7963
  const configDir = join5(homedir3(), ".connectors");
7964
7964
  const installed = getInstalledConnectors();
7965
- const version = "0.2.6";
7965
+ const version = "0.2.8";
7966
7966
  let configured = 0;
7967
7967
  let unconfigured = 0;
7968
7968
  const connectorDetails = [];
package/bin/mcp.js CHANGED
@@ -20275,13 +20275,13 @@ function guessKeyField(name) {
20275
20275
  loadConnectorVersions();
20276
20276
  var server = new McpServer({
20277
20277
  name: "connectors",
20278
- version: "0.2.6"
20278
+ version: "0.2.8"
20279
20279
  });
20280
20280
  server.registerTool("search_connectors", {
20281
20281
  title: "Search Connectors",
20282
- description: "Search the connector library by name, description, or keyword. " + "Use this to discover available API connectors (e.g. 'payment', 'ai', 'email').",
20282
+ description: "Search connectors by name, keyword, or description.",
20283
20283
  inputSchema: {
20284
- query: exports_external.string().describe("Search query (name, keyword, or description)")
20284
+ query: exports_external.string().describe("Search query")
20285
20285
  }
20286
20286
  }, async ({ query }) => {
20287
20287
  const results = searchConnectors(query);
@@ -20302,9 +20302,9 @@ server.registerTool("search_connectors", {
20302
20302
  });
20303
20303
  server.registerTool("list_connectors", {
20304
20304
  title: "List Connectors",
20305
- description: "List all available connectors, optionally filtered by category. " + "Returns name, version, category, and description for each connector.",
20305
+ description: "List connectors, optionally filtered by category.",
20306
20306
  inputSchema: {
20307
- category: exports_external.string().optional().describe("Filter by category. Available: " + CATEGORIES.join(", "))
20307
+ category: exports_external.string().optional().describe("Filter by category (e.g. 'AI & ML', 'Developer Tools')")
20308
20308
  }
20309
20309
  }, async ({ category }) => {
20310
20310
  let connectors = CONNECTORS;
@@ -20340,9 +20340,9 @@ server.registerTool("list_connectors", {
20340
20340
  });
20341
20341
  server.registerTool("connector_docs", {
20342
20342
  title: "Connector Documentation",
20343
- description: "Get detailed documentation for a connector including auth method, " + "required environment variables, CLI commands, and API capabilities. " + "Use this BEFORE installing a connector to understand how to use it.",
20343
+ description: "Get auth, env vars, CLI commands, and API docs for a connector.",
20344
20344
  inputSchema: {
20345
- name: exports_external.string().describe("Connector name (e.g. 'stripe', 'anthropic', 'gmail')")
20345
+ name: exports_external.string().describe("Connector name")
20346
20346
  }
20347
20347
  }, async ({ name }) => {
20348
20348
  const meta = getConnector(name);
@@ -20381,10 +20381,10 @@ server.registerTool("connector_docs", {
20381
20381
  });
20382
20382
  server.registerTool("install_connector", {
20383
20383
  title: "Install Connector",
20384
- description: "Install one or more API connectors into the current project. " + "Connectors are copied to .connectors/ with an auto-generated index.ts for imports.",
20384
+ description: "Install connectors into .connectors/ with auto-generated index.ts.",
20385
20385
  inputSchema: {
20386
- names: exports_external.array(exports_external.string()).describe("Connector names to install (e.g. ['stripe', 'figma'])"),
20387
- overwrite: exports_external.boolean().optional().describe("Overwrite if already installed (default: false)")
20386
+ names: exports_external.array(exports_external.string()).describe("Connector names to install"),
20387
+ overwrite: exports_external.boolean().optional().describe("Overwrite if already installed")
20388
20388
  }
20389
20389
  }, async ({ names, overwrite }) => {
20390
20390
  const results = names.map((name) => installConnector(name, { overwrite: overwrite ?? false }));
@@ -20422,7 +20422,7 @@ server.registerTool("remove_connector", {
20422
20422
  });
20423
20423
  server.registerTool("list_installed", {
20424
20424
  title: "List Installed Connectors",
20425
- description: "List connectors currently installed in the project's .connectors/ directory.",
20425
+ description: "List connectors installed in .connectors/.",
20426
20426
  inputSchema: {}
20427
20427
  }, async () => {
20428
20428
  const installed = getInstalledConnectors();
@@ -20437,7 +20437,7 @@ server.registerTool("list_installed", {
20437
20437
  });
20438
20438
  server.registerTool("connector_info", {
20439
20439
  title: "Connector Info",
20440
- description: "Get metadata about a specific connector including version, category, " + "tags, and whether it's currently installed.",
20440
+ description: "Get connector metadata: version, category, tags, installed status.",
20441
20441
  inputSchema: {
20442
20442
  name: exports_external.string().describe("Connector name")
20443
20443
  }
@@ -20462,9 +20462,9 @@ server.registerTool("connector_info", {
20462
20462
  });
20463
20463
  server.registerTool("connector_auth_status", {
20464
20464
  title: "Connector Auth Status",
20465
- description: "Check the authentication status of an installed connector. " + "Returns auth type (oauth/apikey/bearer), whether it's configured, " + "token expiry for OAuth connectors, and environment variable status.",
20465
+ description: "Check auth status: type (oauth/apikey/bearer), configured, token expiry, env vars.",
20466
20466
  inputSchema: {
20467
- name: exports_external.string().describe("Connector name (e.g. 'gmail', 'stripe', 'anthropic')")
20467
+ name: exports_external.string().describe("Connector name")
20468
20468
  }
20469
20469
  }, async ({ name }) => {
20470
20470
  const meta = getConnector(name);
@@ -20490,11 +20490,11 @@ server.registerTool("connector_auth_status", {
20490
20490
  });
20491
20491
  server.registerTool("configure_auth", {
20492
20492
  title: "Configure Auth",
20493
- description: "Save an API key or bearer token for a connector. " + "Stores credentials in ~/.connectors/connect-{name}/profiles/. " + "Use connector_docs to find required env vars and field names first.",
20493
+ description: "Save an API key or bearer token for a connector.",
20494
20494
  inputSchema: {
20495
- name: exports_external.string().describe("Connector name (e.g. 'stripe', 'anthropic', 'openai')"),
20496
- key: exports_external.string().describe("The API key or bearer token value"),
20497
- field: exports_external.string().optional().describe("Key field name (defaults to the connector's primary key field, usually 'apiKey')")
20495
+ name: exports_external.string().describe("Connector name"),
20496
+ key: exports_external.string().describe("API key or bearer token"),
20497
+ field: exports_external.string().optional().describe("Field name (default: 'apiKey')")
20498
20498
  }
20499
20499
  }, async ({ name, key, field }) => {
20500
20500
  try {
@@ -20521,7 +20521,7 @@ server.registerTool("configure_auth", {
20521
20521
  });
20522
20522
  server.registerTool("list_categories", {
20523
20523
  title: "List Categories",
20524
- description: "List all connector categories with the number of connectors in each.",
20524
+ description: "List connector categories with counts.",
20525
20525
  inputSchema: {}
20526
20526
  }, async () => {
20527
20527
  const categoryCounts = CATEGORIES.map((category) => ({
@@ -47,6 +47,28 @@ src/
47
47
  └── index.ts # Library exports
48
48
  ```
49
49
 
50
+ ## Models (2026)
51
+
52
+ | Model ID | Description |
53
+ |----------|-------------|
54
+ | `claude-opus-4-6` | Most intelligent (default for complex tasks), 200K ctx, 128K output |
55
+ | `claude-sonnet-4-6` | Best balance — **use this as default** |
56
+ | `claude-opus-4-20250514` | Claude 4 Opus (2025) |
57
+ | `claude-sonnet-4-20250514` | Claude 4 Sonnet (2025) |
58
+ | `claude-3-5-haiku-20241022` | Fast, cheap |
59
+
60
+ Default: `claude-sonnet-4-6`
61
+
62
+ ## Adaptive Thinking
63
+
64
+ On `claude-opus-4-6` and `claude-sonnet-4-6`, use:
65
+ ```typescript
66
+ thinking: { type: 'adaptive' } // Claude decides when to think
67
+ thinking: { type: 'adaptive', effort: 'low' } // less thinking
68
+ thinking: { type: 'adaptive', effort: 'high' } // most thinking (default)
69
+ ```
70
+ Deprecated on 4.6: `thinking: { type: 'enabled', budget_tokens: N }`
71
+
50
72
  ## Authentication
51
73
 
52
74
  Bearer Token authentication. Credentials can be set via:
@@ -47,6 +47,35 @@ src/
47
47
  └── index.ts # Library exports
48
48
  ```
49
49
 
50
+ ## Models (2026)
51
+
52
+ | Model ID | Description |
53
+ |----------|-------------|
54
+ | `claude-opus-4-6` | Most intelligent, 200K context (1M beta), 128K max output, adaptive thinking |
55
+ | `claude-sonnet-4-6` | Best speed/intelligence balance, 200K context (1M beta), 64K max output |
56
+ | `claude-opus-4-20250514` | Claude 4 Opus (2025) |
57
+ | `claude-sonnet-4-20250514` | Claude 4 Sonnet (2025) |
58
+ | `claude-3-5-haiku-20241022` | Fast and cost-effective |
59
+ | `claude-3-5-sonnet-20241022` | Claude 3.5 Sonnet |
60
+
61
+ Default model: `claude-sonnet-4-6`
62
+
63
+ ## Adaptive Thinking (claude-opus-4-6 / claude-sonnet-4-6)
64
+
65
+ Use adaptive thinking to let Claude decide when and how much to think:
66
+
67
+ ```typescript
68
+ const response = await client.messages.create({
69
+ model: 'claude-opus-4-6',
70
+ max_tokens: 16000,
71
+ thinking: { type: 'adaptive' }, // default effort: high
72
+ thinking: { type: 'adaptive', effort: 'low' }, // less thinking for simple problems
73
+ messages: [{ role: 'user', content: '...' }],
74
+ });
75
+ ```
76
+
77
+ Note: `thinking: {type: "enabled", budget_tokens: N}` is deprecated on 4.6 models. Use adaptive thinking instead.
78
+
50
79
  ## Authentication
51
80
 
52
81
  Bearer Token authentication. Credentials can be set via:
@@ -56,6 +56,18 @@ connect-anthropic -p personal <command>
56
56
  connect-anthropic profile list
57
57
  ```
58
58
 
59
+ ## Models (2026)
60
+
61
+ | Model ID | Context | Description |
62
+ |----------|---------|-------------|
63
+ | `claude-opus-4-6` | 200K (1M beta) | Most intelligent, adaptive thinking |
64
+ | `claude-sonnet-4-6` | 200K (1M beta) | Best speed/intelligence balance |
65
+ | `claude-opus-4-20250514` | 200K | Claude 4 Opus |
66
+ | `claude-sonnet-4-20250514` | 200K | Claude 4 Sonnet |
67
+ | `claude-3-5-haiku-20241022` | 200K | Fast, cost-effective |
68
+
69
+ Default: `claude-sonnet-4-6`
70
+
59
71
  ## Library Usage
60
72
 
61
73
  ```typescript
@@ -63,8 +75,15 @@ import { Anthropic } from '@hasna/connect-anthropic';
63
75
 
64
76
  const client = new Anthropic({ apiKey: 'YOUR_API_KEY' });
65
77
 
66
- // Use the client
67
- // See CLAUDE.md for detailed API documentation
78
+ // Basic chat
79
+ const response = await client.chat('Explain quantum computing');
80
+
81
+ // With adaptive thinking (claude-opus-4-6 / claude-sonnet-4-6)
82
+ const response = await client.chat('Solve this hard problem', {
83
+ model: 'claude-opus-4-6',
84
+ thinking: { type: 'adaptive' },
85
+ maxTokens: 16000,
86
+ });
68
87
  ```
69
88
 
70
89
  ## Environment Variables
@@ -103,4 +122,4 @@ bun run typecheck
103
122
 
104
123
  ## License
105
124
 
106
- MIT
125
+ Apache-2.0
@@ -14,25 +14,37 @@ export interface AnthropicConfig {
14
14
  // ============================================
15
15
 
16
16
  export type AnthropicModel =
17
+ // Claude 4.6 (latest, 2026)
18
+ | 'claude-opus-4-6'
19
+ | 'claude-sonnet-4-6'
20
+ // Claude 4 (2025)
17
21
  | 'claude-opus-4-20250514'
18
22
  | 'claude-sonnet-4-20250514'
23
+ // Claude 3.5
19
24
  | 'claude-3-5-haiku-20241022'
20
25
  | 'claude-3-5-sonnet-20241022'
26
+ // Claude 3 (legacy)
21
27
  | 'claude-3-opus-20240229'
22
28
  | 'claude-3-sonnet-20240229'
23
29
  | 'claude-3-haiku-20240307';
24
30
 
25
31
  export const ANTHROPIC_MODELS: AnthropicModel[] = [
32
+ // Claude 4.6 (latest, 2026)
33
+ 'claude-opus-4-6',
34
+ 'claude-sonnet-4-6',
35
+ // Claude 4 (2025)
26
36
  'claude-opus-4-20250514',
27
37
  'claude-sonnet-4-20250514',
38
+ // Claude 3.5
28
39
  'claude-3-5-haiku-20241022',
29
40
  'claude-3-5-sonnet-20241022',
41
+ // Claude 3 (legacy)
30
42
  'claude-3-opus-20240229',
31
43
  'claude-3-sonnet-20240229',
32
44
  'claude-3-haiku-20240307',
33
45
  ];
34
46
 
35
- export const DEFAULT_MODEL: AnthropicModel = 'claude-sonnet-4-20250514';
47
+ export const DEFAULT_MODEL: AnthropicModel = 'claude-sonnet-4-6';
36
48
 
37
49
  // ============================================
38
50
  // Messages API
@@ -71,6 +83,7 @@ export interface MessagesRequest {
71
83
  top_k?: number;
72
84
  stop_sequences?: string[];
73
85
  stream?: boolean;
86
+ thinking?: ThinkingConfig;
74
87
  metadata?: {
75
88
  user_id?: string;
76
89
  };
@@ -81,6 +94,16 @@ export interface TextBlock {
81
94
  text: string;
82
95
  }
83
96
 
97
+ export interface ThinkingBlock {
98
+ type: 'thinking';
99
+ thinking: string;
100
+ }
101
+
102
+ export interface RedactedThinkingBlock {
103
+ type: 'redacted_thinking';
104
+ data: string;
105
+ }
106
+
84
107
  export interface ToolUseBlock {
85
108
  type: 'tool_use';
86
109
  id: string;
@@ -88,7 +111,27 @@ export interface ToolUseBlock {
88
111
  input: Record<string, unknown>;
89
112
  }
90
113
 
91
- export type ResponseContentBlock = TextBlock | ToolUseBlock;
114
+ export type ResponseContentBlock = TextBlock | ThinkingBlock | RedactedThinkingBlock | ToolUseBlock;
115
+
116
+ // ============================================
117
+ // Thinking (Extended / Adaptive)
118
+ // ============================================
119
+
120
+ export type ThinkingEffort = 'low' | 'medium' | 'high';
121
+
122
+ /** Adaptive thinking (recommended for claude-opus-4-6 and claude-sonnet-4-6) */
123
+ export interface AdaptiveThinking {
124
+ type: 'adaptive';
125
+ effort?: ThinkingEffort;
126
+ budget_tokens?: number;
127
+ }
128
+
129
+ /** Disabled thinking */
130
+ export interface DisabledThinking {
131
+ type: 'disabled';
132
+ }
133
+
134
+ export type ThinkingConfig = AdaptiveThinking | DisabledThinking;
92
135
 
93
136
  export interface MessagesResponse {
94
137
  id: string;
@@ -168,6 +211,7 @@ export interface ChatOptions {
168
211
  topK?: number;
169
212
  stopSequences?: string[];
170
213
  systemPrompt?: string;
214
+ thinking?: ThinkingConfig;
171
215
  }
172
216
 
173
217
  // ============================================
@@ -47,6 +47,22 @@ src/
47
47
  └── index.ts # Library exports
48
48
  ```
49
49
 
50
+ ## Auth Updates (2025-2026)
51
+
52
+ ### Amazon Bedrock API Keys (GA Jul 2025, GovCloud Jan 2026)
53
+ Bedrock now supports direct API keys for authentication — no IAM principal setup required:
54
+ - Short-term keys: valid for console session or up to 12 hours
55
+ - Long-term keys: custom validity, managed from IAM console
56
+ - Generate from Bedrock console or AWS SDK
57
+
58
+ ### IAM Role Creation in Service Workflows (Mar 2026)
59
+ IAM roles can now be created and customized inline within service workflows (no tab-switching). Available for EC2, Lambda, EKS, ECS, Glue, CloudFormation, DMS, Systems Manager, Secrets Manager, RDS, IoT Core. US East (N. Virginia) region first.
60
+
61
+ ### Best Practice: Use IAM Roles, Not Access Keys
62
+ - Prefer IAM roles with temporary credentials over long-term access keys
63
+ - Use `AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY` + `AWS_REGION` for programmatic access
64
+ - Or use IAM Instance Roles / ECS Task Roles for zero-key auth in cloud environments
65
+
50
66
  ## Authentication
51
67
 
52
68
  API Key authentication. Credentials can be set via:
@@ -47,6 +47,11 @@ src/
47
47
  └── index.ts # Library exports
48
48
  ```
49
49
 
50
+ ## API Notes (2026)
51
+
52
+ Brandsight provides brand monitoring and analytics APIs. Check https://brandsight.com/docs for current API reference.
53
+ Auth: API key via header or query parameter.
54
+
50
55
  ## Authentication
51
56
 
52
57
  SSO Key authentication. Credentials can be set via:
@@ -47,6 +47,27 @@ src/
47
47
  └── index.ts # Library exports
48
48
  ```
49
49
 
50
+ ## API Updates (2025-2026)
51
+
52
+ ### New Workers REST API (Beta, Sep 2025)
53
+ New resource-oriented REST API with cleaner separation:
54
+ - `POST /workers/beta/workers` — create Worker (no code needed)
55
+ - `POST /workers/beta/workers/{id}/versions` — upload code as version
56
+ - `POST /scripts/{name}/deployments` — deploy a version
57
+
58
+ Workers and Versions use new `/workers/` beta endpoints; Deployments remain on `/scripts/` endpoint.
59
+
60
+ ### Workers AI — New Capabilities (2026)
61
+ - **Markdown Conversion** (`env.AI.toMarkdown()`): PDF, HTML, images with `conversionOptions` (CSS selectors, language)
62
+ - **Real-time Transcription**: 10 languages via Deepgram Nova-3 on Workers AI in RealtimeKit
63
+ - REST: `POST /accounts/{id}/ai/tomarkdown`
64
+
65
+ ### Browser Rendering — Rate Limit Increase (Mar 2026)
66
+ Workers Paid plans: 3 req/s → **10 req/s** (600/min). Endpoints: `/links`, `/json`, `/scrape`, `/snapshot`, `/markdown`, `/pdf`, `/screenshot`, `/content`
67
+
68
+ ### Sandboxes — Real-time File Watching (Mar 2026)
69
+ `sandbox.watch(path, options)` — SSE stream backed by inotify. Events: `create`, `modify`, `delete`, `move`.
70
+
50
71
  ## Authentication
51
72
 
52
73
  API Key authentication. Credentials can be set via:
@@ -47,6 +47,25 @@ src/
47
47
  └── index.ts # Library exports
48
48
  ```
49
49
 
50
+ ## API Updates (2025-2026)
51
+
52
+ ### Current API Version: v10 (unchanged)
53
+
54
+ ### New in Oct 2025 (Developer Newsletter)
55
+ - **Bot profiles per server**: Bots can now set unique profiles per server
56
+ - **New UI components**: Label and TextDisplay components in modals; all select menus now work in modals
57
+ - **New Social SDK webhooks**: `LOBBY_MESSAGE_*` and `GAME_DIRECT_MESSAGE_*` events for moderation
58
+ - **Server-side Provisional Account API**: New endpoint for creating provisional accounts in games
59
+ - **Rate limit**: New rate limit when requesting all guild members via gateway
60
+
61
+ ### Deprecations (Oct 2025)
62
+ - Non-E2EE voice calls being phased out
63
+ - Deprecated voice and video transport modes — update implementations
64
+
65
+ ### Bug Fixes (Mar 2026)
66
+ - Escaped mentions `\@everyone` no longer trigger mentions — backend now properly respects escape characters
67
+ - Desktop app p50 TTI reduced by 11.8% via API payload ordering optimization
68
+
50
69
  ## Authentication
51
70
 
52
71
  Bearer Token authentication. Credentials can be set via:
@@ -47,6 +47,14 @@ src/
47
47
  └── index.ts # Library exports
48
48
  ```
49
49
 
50
+ ## API Notes (2026)
51
+
52
+ Docker Hub REST API: `https://hub.docker.com/v2/`
53
+ Docker Engine API: `https://unix:///var/run/docker.sock/v1.xx/` (local socket)
54
+ Current Engine API version: v1.47+ (Docker Engine 27+)
55
+
56
+ Auth: Docker Hub uses JWT tokens (POST /users/login). Docker Engine uses unix socket or TCP.
57
+
50
58
  ## Authentication
51
59
 
52
60
  API Key authentication. Credentials can be set via:
@@ -47,6 +47,27 @@ src/
47
47
  └── index.ts # Library exports
48
48
  ```
49
49
 
50
+ ## API Updates (2024-2025)
51
+
52
+ ### SDKs
53
+ - Python: `e2b` or `e2b-code-interpreter`
54
+ - JavaScript/TypeScript: `@e2b/code-interpreter`
55
+
56
+ ### Sandbox Lifecycle
57
+ - Start: ~150ms spin-up time
58
+ - Pause/resume: data persistence across sessions
59
+ - `download_url`/`downloadUrl` method on sandbox
60
+ - Env vars configurable on `sandbox.create()`
61
+
62
+ ### Desktop Sandbox (Dec 2024)
63
+ Virtual desktop for LLM computer use. Isolated VMs with full desktop environment.
64
+
65
+ ### Interactive Charts (Oct 2024)
66
+ Automatic chart detection from Matplotlib code via `runCode()`/`run_code()`. Returns chart data to client for custom rendering.
67
+
68
+ ### Multi-language Support
69
+ Python, JavaScript/TypeScript, and other languages via code interpreter.
70
+
50
71
  ## Authentication
51
72
 
52
73
  API Key authentication. Credentials can be set via:
@@ -47,6 +47,30 @@ src/
47
47
  └── index.ts # Library exports
48
48
  ```
49
49
 
50
+ ## Models (2026)
51
+
52
+ | Model | Description |
53
+ |-------|-------------|
54
+ | `eleven_v3` | **Eleven v3** — GA since Feb 2026. Most expressive TTS. Audio tags, multi-speaker dialogue, 70+ languages. 68% error reduction on numbers/symbols. |
55
+ | `eleven_multilingual_v2` | Multilingual v2 — stable, recommended for real-time/conversational use |
56
+ | `eleven_turbo_v2_5` | Turbo v2.5 — lowest latency, real-time |
57
+ | `eleven_flash_v2_5` | Flash v2.5 — fastest, lowest cost |
58
+
59
+ ### Eleven v3 Features (GA Feb 2026)
60
+ - **Audio tags**: `[excited]`, `[whispers]`, `[sighs]`, `[laughs]` inline in text
61
+ - **Multi-speaker dialogue**: New `POST /v1/text-to-dialogue` endpoint
62
+ - **70+ languages** with improved accuracy (99% error reduction for phone numbers, chemical formulas)
63
+ - Requires more prompt engineering than v2 — not recommended for real-time/low-latency use cases
64
+
65
+ ### Text to Dialogue API (new endpoint)
66
+ ```json
67
+ POST /v1/text-to-dialogue
68
+ [
69
+ {"speaker_id": "voice-id-1", "text": "[cheerfully] Hello there!"},
70
+ {"speaker_id": "voice-id-2", "text": "Hey, how are you?"}
71
+ ]
72
+ ```
73
+
50
74
  ## Authentication
51
75
 
52
76
  API Key (Header) authentication. Credentials can be set via:
@@ -47,6 +47,41 @@ src/
47
47
  └── index.ts # Library exports
48
48
  ```
49
49
 
50
+ ## API Updates (2025-2026)
51
+
52
+ ### Company Search (Jan 2026)
53
+ New fine-tuned retrieval model with entity matching for company queries. Use `type="auto"` + `category="company"`.
54
+
55
+ ```bash
56
+ curl -X POST https://api.exa.ai/search \
57
+ -H "x-api-key: $EXA_API_KEY" \
58
+ -d '{"query": "fintech companies in Switzerland", "type": "auto", "category": "company", "numResults": 10}'
59
+ ```
60
+
61
+ Results now include **structured entity data** (`entities[]`) with:
62
+ - `name`, `foundedYear`, `description`, `workforce.total`
63
+ - `headquarters` (address, city, country)
64
+ - `financials` (fundingTotal, fundingLatestRound)
65
+ - `webTraffic.total`
66
+
67
+ Supports: semantic queries, composite queries, funding queries, attribute filtering, named lookups.
68
+
69
+ ### Endpoints Overview (2026)
70
+ | Endpoint | Description |
71
+ |----------|-------------|
72
+ | `POST /search` | Neural/keyword search (`type`: auto, neural, keyword) |
73
+ | `POST /search` with `type=deep` | Multi-query deep search with structured answers |
74
+ | `POST /findSimilar` | Find pages similar to a given URL |
75
+ | `POST /contents` | Extract text, summaries, highlights from URLs |
76
+ | `POST /answer` | Direct answers with citations |
77
+ | `POST /research` | Async agent-style deep research |
78
+
79
+ ### Search Types
80
+ - `neural` — semantic/embedding-based
81
+ - `keyword` — fast keyword matching
82
+ - `auto` — automatically selects best type
83
+ - `deep` — multi-query with structured answers (slower, better for complex queries)
84
+
50
85
  ## Authentication
51
86
 
52
87
  API Key authentication. Credentials can be set via:
@@ -47,6 +47,40 @@ src/
47
47
  └── index.ts # Library exports
48
48
  ```
49
49
 
50
+ ## API Updates (2025-2026)
51
+
52
+ ### Variables API — Extended Collections (Nov 2025)
53
+ Extended collections allow variants of existing variable collections with overrides while maintaining a single source of truth.
54
+
55
+ New fields on `VariableCollection`:
56
+ - `isExtension: boolean`
57
+ - `parentVariableCollectionId: string` — only when isExtension is true
58
+ - `rootVariableCollectionId: string`
59
+ - `inheritedVariableIds: string[]`
60
+ - `localVariableIds: string[]`
61
+ - `variableOverrides: Record<variableId, Record<modeId, value>>`
62
+
63
+ New `POST /v1/files/:key/variables` param: `initialModeIdToParentModeIdMapping`
64
+
65
+ ### Node Properties (Jan 2026)
66
+ New node properties:
67
+ - `transformModifiers` on TRANSFORM_GROUP nodes
68
+ - `textPathStartData` on TEXT_PATH nodes
69
+ - `variableWidthPoints` — variable width stroke profiles
70
+ - `complexStrokeProperties` — brush and dynamic strokes
71
+
72
+ ### Rate Limits (Nov 2025)
73
+ Published rate limits now enforced. Check [rate limits docs](https://developers.figma.com/docs/rest-api/rate-limits) for current values.
74
+
75
+ ### Figma MCP Server (beta, Sep 2025)
76
+ Figma now has an official MCP Server in beta for AI agent access to design files.
77
+
78
+ ### OAuth App Publishing (Nov 2025)
79
+ All OAuth apps must complete the new publishing flow via the Apps page. PAT generation via docs is temporarily removed — use the Postman workspace for testing.
80
+
81
+ ### Discovery API (Jan 2026)
82
+ For Enterprise plans with Governance+: can now retrieve text of user-submitted AI prompts from Figma AI tools.
83
+
50
84
  ## Authentication
51
85
 
52
86
  API Key authentication. Credentials can be set via:
@@ -47,6 +47,33 @@ src/
47
47
  └── index.ts # Library exports
48
48
  ```
49
49
 
50
+ ## API Updates (2025-2026)
51
+
52
+ ### Endpoints (v1)
53
+ | Endpoint | Description |
54
+ |----------|-------------|
55
+ | `POST /v1/scrape` | Scrape a single URL |
56
+ | `POST /v1/crawl` | Crawl a website |
57
+ | `POST /v1/map` | Map a website's URLs |
58
+ | `POST /v1/search` | Search the web and scrape results (Jun 2025) |
59
+ | `POST /v1/extract` | Extract structured data (v2: pagination, search, FIRE-1) |
60
+ | `POST /v1/agent` | Agentic data gathering (Dec 2025) |
61
+ | `POST /v1/batch/scrape` | Parallel agent batch processing |
62
+
63
+ ### New in 2026
64
+ - **Browser Sandbox** (Feb 2026) — Fully managed isolated browser for agents. Zero config, pre-loaded tools.
65
+ - **PDF Parser v2** (Feb 2026) — 3x faster Rust-based parser. Three auto-adapting modes (clean text, scanned, complex).
66
+ - **Parallel Agents** (Jan 2026) — Batch `/agent` queries in spreadsheet/JSON format with streaming.
67
+ - **Branding Format v2** (Feb 2026) — Improved logo extraction for AI agents.
68
+ - **Spark 1 Pro/Mini models** (Jan 2026) — Flexible model selection for `/agent`. Mini is 60% cheaper.
69
+ - **Claude Code plugin** (Feb 2026) — Official Firecrawl skill for Claude Code.
70
+
71
+ ### /extract v2 (Apr 2025)
72
+ Added: pagination, FIRE-1 intelligent interaction, built-in search integration.
73
+
74
+ ### FIRE-1 Agent (Apr 2025)
75
+ New AI agent that intelligently navigates and interacts with web pages for complex scraping.
76
+
50
77
  ## Authentication
51
78
 
52
79
  Bearer Token authentication. Credentials can be set via: