@apteva/integrations 0.15.10 → 0.15.11

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 (48) hide show
  1. package/dist/http-executor.d.ts.map +1 -1
  2. package/dist/http-executor.js +62 -8
  3. package/dist/http-executor.js.map +1 -1
  4. package/dist/mcp-generator.js +24 -0
  5. package/dist/mcp-generator.js.map +1 -1
  6. package/dist/types.d.ts +4 -0
  7. package/dist/types.d.ts.map +1 -1
  8. package/package.json +1 -1
  9. package/src/apps/anthropic-admin.json +183 -0
  10. package/src/apps/aws-ses.json +1 -1
  11. package/src/apps/braintree.json +53 -0
  12. package/src/apps/bunny-stream.json +50 -28
  13. package/src/apps/ccbill.json +142 -0
  14. package/src/apps/close.json +238 -301
  15. package/src/apps/craftcloud.json +251 -202
  16. package/src/apps/dataforseo.json +1700 -2
  17. package/src/apps/deepgram.json +288 -1
  18. package/src/apps/elevenlabs.json +9 -0
  19. package/src/apps/gladia.json +158 -0
  20. package/src/apps/gmail.json +2 -5
  21. package/src/apps/gumroad.json +569 -0
  22. package/src/apps/imaterialise.json +171 -262
  23. package/src/apps/jlcpcb.json +43 -0
  24. package/src/apps/jungle-scout.json +166 -0
  25. package/src/apps/ko-fi.json +34 -0
  26. package/src/apps/lemon-squeezy.json +270 -0
  27. package/src/apps/mollie.json +219 -0
  28. package/src/apps/paddle.json +199 -9
  29. package/src/apps/payhip.json +162 -0
  30. package/src/apps/paystack.json +207 -0
  31. package/src/apps/pipedrive.json +221 -212
  32. package/src/apps/razorpay.json +207 -0
  33. package/src/apps/ringover.json +69 -0
  34. package/src/apps/runpod.json +727 -0
  35. package/src/apps/salesforce-crm.json +192 -233
  36. package/src/apps/sculpteo.json +98 -180
  37. package/src/apps/segpay.json +215 -0
  38. package/src/apps/shapeways.json +114 -136
  39. package/src/apps/slant3d.json +260 -168
  40. package/src/apps/soniox.json +194 -0
  41. package/src/apps/speechmatics.json +167 -0
  42. package/src/apps/stripe.json +1 -0
  43. package/src/apps/surfer.json +511 -0
  44. package/src/apps/twitter-api.json +14 -1
  45. package/src/apps/verotel.json +124 -0
  46. package/src/apps/whop.json +364 -0
  47. package/src/apps/zendesk-sell.json +248 -0
  48. package/src/apps/zendesk.json +190 -259
@@ -0,0 +1,511 @@
1
+ {
2
+ "slug": "surfer",
3
+ "name": "Surfer",
4
+ "description": "Surfer SEO API for content editors, SEO guidelines, outlines, audits, SERP analyzer queries, AI detection, and humanizing text. V2 workspace-scoped endpoints are used where available; V1 tools use the default/oldest active workspace unless a default Workspace-Id is saved on the connection.",
5
+ "logo": "https://www.google.com/s2/favicons?domain=surferseo.com&sz=128",
6
+ "categories": ["seo", "content-seo", "content", "serp", "ai-writing", "marketing"],
7
+ "base_url": "https://app.surferseo.com",
8
+ "auth": {
9
+ "types": ["api_key"],
10
+ "headers": {
11
+ "API-KEY": "{{api_key}}"
12
+ },
13
+ "credential_fields": [
14
+ {
15
+ "name": "api_key",
16
+ "label": "API Key",
17
+ "description": "Surfer API key. Most requests require this in the API-KEY header."
18
+ },
19
+ {
20
+ "name": "workspace_id",
21
+ "label": "Default Workspace ID",
22
+ "description": "Optional. Used as Workspace-Id for Surfer V1 tools such as audit, SERP analyzer, and humanizer. V2 tools use workspace_id path parameters instead."
23
+ }
24
+ ]
25
+ },
26
+ "tools": [
27
+ {
28
+ "name": "list_workspaces",
29
+ "description": "List Surfer workspaces for the authenticated organization. Use an active workspace id for Content Editor workflows.",
30
+ "method": "GET",
31
+ "path": "/api/v2/workspaces",
32
+ "input_schema": {
33
+ "type": "object",
34
+ "properties": {
35
+ "page": { "type": "integer", "description": "Page number, 1-indexed." },
36
+ "page_size": { "type": "integer", "description": "Results per page, max 100." },
37
+ "filter_type": { "type": "string", "description": "Filter by workspace type." },
38
+ "filter_state": { "type": "string", "description": "Filter by workspace state, for example active." },
39
+ "sort": { "type": "string", "description": "Sort field such as name, inserted_at, or updated_at." },
40
+ "order": { "type": "string", "enum": ["asc", "desc"], "description": "Sort direction." }
41
+ }
42
+ },
43
+ "query_params": ["page", "page_size", "sort", "order"],
44
+ "query_param_aliases": {
45
+ "filter_type": "filter[type]",
46
+ "filter_state": "filter[state]"
47
+ }
48
+ },
49
+ {
50
+ "name": "list_locations",
51
+ "description": "List supported Surfer locations for Content Editors, Audits, and SERP Analyzer inputs. This endpoint is public but works with the same connection.",
52
+ "method": "GET",
53
+ "path": "/api/v1/locations",
54
+ "input_schema": { "type": "object", "properties": {} }
55
+ },
56
+ {
57
+ "name": "list_content_editors",
58
+ "description": "List Content Editors across all workspaces. Supports pagination and a 90-day created-at filter window.",
59
+ "method": "GET",
60
+ "path": "/api/v2/content_editors",
61
+ "input_schema": {
62
+ "type": "object",
63
+ "properties": {
64
+ "page": { "type": "integer" },
65
+ "page_size": { "type": "integer", "description": "Results per page, max 100." },
66
+ "sort": { "type": "string" },
67
+ "order": { "type": "string", "enum": ["asc", "desc"] },
68
+ "filter_state": { "type": "string", "description": "Filter by state, for example scheduled, executing, completed, failed." },
69
+ "filter_inserted_after": { "type": "string", "description": "Only editors created after this ISO8601 timestamp." },
70
+ "filter_inserted_before": { "type": "string", "description": "Only editors created before this ISO8601 timestamp." }
71
+ }
72
+ },
73
+ "query_params": ["page", "page_size", "sort", "order"],
74
+ "query_param_aliases": {
75
+ "filter_state": "filter[state]",
76
+ "filter_inserted_after": "filter[inserted_after]",
77
+ "filter_inserted_before": "filter[inserted_before]"
78
+ }
79
+ },
80
+ {
81
+ "name": "list_workspace_content_editors",
82
+ "description": "List Content Editors in one workspace. Use this to inspect active content SEO projects before opening guidelines or content.",
83
+ "method": "GET",
84
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors",
85
+ "input_schema": {
86
+ "type": "object",
87
+ "properties": {
88
+ "workspace_id": { "type": "integer", "description": "Surfer workspace id." },
89
+ "page": { "type": "integer" },
90
+ "page_size": { "type": "integer", "description": "Results per page, max 100." },
91
+ "sort": { "type": "string" },
92
+ "order": { "type": "string", "enum": ["asc", "desc"] },
93
+ "filter_state": { "type": "string" },
94
+ "filter_inserted_after": { "type": "string" },
95
+ "filter_inserted_before": { "type": "string" }
96
+ },
97
+ "required": ["workspace_id"]
98
+ },
99
+ "query_params": ["page", "page_size", "sort", "order"],
100
+ "query_param_aliases": {
101
+ "filter_state": "filter[state]",
102
+ "filter_inserted_after": "filter[inserted_after]",
103
+ "filter_inserted_before": "filter[inserted_before]"
104
+ }
105
+ },
106
+ {
107
+ "name": "create_content_editor",
108
+ "description": "Create a new Surfer Content Editor. This consumes one Content Editor credit and starts an asynchronous initialization; poll get_content_editor until state is completed.",
109
+ "method": "POST",
110
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors",
111
+ "timeout_ms": 60000,
112
+ "input_schema": {
113
+ "type": "object",
114
+ "properties": {
115
+ "workspace_id": { "type": "integer" },
116
+ "main_keyword": { "type": "string", "description": "Primary keyword that drives SERP analysis." },
117
+ "secondary_keywords": { "type": "array", "description": "Up to 19 secondary keywords.", "items": { "type": "string" } },
118
+ "location": { "type": "string", "default": "United States" },
119
+ "device": { "type": "string", "enum": ["mobile", "desktop"], "default": "mobile" },
120
+ "use_brand_knowledge": { "type": "boolean", "default": true },
121
+ "notes": { "type": "string" },
122
+ "custom_voice_id": { "type": ["integer", "null"] },
123
+ "custom_template_id": { "type": ["integer", "null"] },
124
+ "custom_instructions": { "type": "string" },
125
+ "import_content_url": { "type": "string" },
126
+ "target_word_count": { "type": "integer" },
127
+ "surfer_template": { "type": ["string", "null"] }
128
+ },
129
+ "required": ["workspace_id", "main_keyword"]
130
+ }
131
+ },
132
+ {
133
+ "name": "get_content_editor",
134
+ "description": "Get one Content Editor by id, including state, scores, keywords, metadata, permalinks, outline status, and guideline state.",
135
+ "method": "GET",
136
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}",
137
+ "input_schema": {
138
+ "type": "object",
139
+ "properties": {
140
+ "workspace_id": { "type": "integer" },
141
+ "content_editor_id": { "type": "integer" }
142
+ },
143
+ "required": ["workspace_id", "content_editor_id"]
144
+ }
145
+ },
146
+ {
147
+ "name": "update_content_editor",
148
+ "description": "Patch Content Editor metadata such as notes, target word count, template, custom voice, or instructions. For article body content, use update_content_html or update_content_markdown.",
149
+ "method": "PATCH",
150
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}",
151
+ "input_schema": {
152
+ "type": "object",
153
+ "properties": {
154
+ "workspace_id": { "type": "integer" },
155
+ "content_editor_id": { "type": "integer" },
156
+ "notes": { "type": "string" },
157
+ "custom_voice_id": { "type": ["integer", "null"] },
158
+ "custom_template_id": { "type": ["integer", "null"] },
159
+ "custom_instructions": { "type": "string" },
160
+ "target_word_count": { "type": "integer" },
161
+ "surfer_template": { "type": ["string", "null"] }
162
+ },
163
+ "required": ["workspace_id", "content_editor_id"]
164
+ }
165
+ },
166
+ {
167
+ "name": "delete_content_editor",
168
+ "description": "Delete a Content Editor from a workspace.",
169
+ "method": "DELETE",
170
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}",
171
+ "input_schema": {
172
+ "type": "object",
173
+ "properties": {
174
+ "workspace_id": { "type": "integer" },
175
+ "content_editor_id": { "type": "integer" }
176
+ },
177
+ "required": ["workspace_id", "content_editor_id"]
178
+ }
179
+ },
180
+ {
181
+ "name": "get_content_html",
182
+ "description": "Get the raw Content Editor body as HTML. Requires the editor to be completed.",
183
+ "method": "GET",
184
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/content",
185
+ "headers": { "Accept": "text/html" },
186
+ "input_schema": {
187
+ "type": "object",
188
+ "properties": {
189
+ "workspace_id": { "type": "integer" },
190
+ "content_editor_id": { "type": "integer" }
191
+ },
192
+ "required": ["workspace_id", "content_editor_id"]
193
+ }
194
+ },
195
+ {
196
+ "name": "get_content_markdown",
197
+ "description": "Get the raw Content Editor body as Markdown. Requires the editor to be completed.",
198
+ "method": "GET",
199
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/content",
200
+ "headers": { "Accept": "text/markdown" },
201
+ "input_schema": {
202
+ "type": "object",
203
+ "properties": {
204
+ "workspace_id": { "type": "integer" },
205
+ "content_editor_id": { "type": "integer" }
206
+ },
207
+ "required": ["workspace_id", "content_editor_id"]
208
+ }
209
+ },
210
+ {
211
+ "name": "update_content_html",
212
+ "description": "Replace the Content Editor body with HTML. Surfer sanitizes and reserializes the body, returns 204, then recalculates content scores asynchronously.",
213
+ "method": "PUT",
214
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/content",
215
+ "headers": { "Content-Type": "text/html" },
216
+ "body_root_param": "content",
217
+ "input_schema": {
218
+ "type": "object",
219
+ "properties": {
220
+ "workspace_id": { "type": "integer" },
221
+ "content_editor_id": { "type": "integer" },
222
+ "content": { "type": "string", "description": "HTML content body." }
223
+ },
224
+ "required": ["workspace_id", "content_editor_id", "content"]
225
+ }
226
+ },
227
+ {
228
+ "name": "update_content_markdown",
229
+ "description": "Replace the Content Editor body with Markdown. Surfer sanitizes and reserializes the body, returns 204, then recalculates content scores asynchronously.",
230
+ "method": "PUT",
231
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/content",
232
+ "headers": { "Content-Type": "text/markdown" },
233
+ "body_root_param": "content",
234
+ "input_schema": {
235
+ "type": "object",
236
+ "properties": {
237
+ "workspace_id": { "type": "integer" },
238
+ "content_editor_id": { "type": "integer" },
239
+ "content": { "type": "string", "description": "Markdown content body." }
240
+ },
241
+ "required": ["workspace_id", "content_editor_id", "content"]
242
+ }
243
+ },
244
+ {
245
+ "name": "get_seo_guidelines",
246
+ "description": "Get the full SEO Guidelines for a completed Content Editor: score, structure, terms, competitors, and topics/questions. This can be large; prefer subresources when possible.",
247
+ "method": "GET",
248
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/seo_guidelines",
249
+ "input_schema": {
250
+ "type": "object",
251
+ "properties": {
252
+ "workspace_id": { "type": "integer" },
253
+ "content_editor_id": { "type": "integer" }
254
+ },
255
+ "required": ["workspace_id", "content_editor_id"]
256
+ }
257
+ },
258
+ {
259
+ "name": "get_seo_guidelines_score",
260
+ "description": "Get SEO Guidelines score/status for a Content Editor. Poll this after content updates to know when score recalculation completed.",
261
+ "method": "GET",
262
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/seo_guidelines/score",
263
+ "input_schema": {
264
+ "type": "object",
265
+ "properties": {
266
+ "workspace_id": { "type": "integer" },
267
+ "content_editor_id": { "type": "integer" }
268
+ },
269
+ "required": ["workspace_id", "content_editor_id"]
270
+ }
271
+ },
272
+ {
273
+ "name": "get_seo_guidelines_status",
274
+ "description": "Get compact SEO Guidelines status including load-more competitor state.",
275
+ "method": "GET",
276
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/seo_guidelines/status",
277
+ "input_schema": {
278
+ "type": "object",
279
+ "properties": {
280
+ "workspace_id": { "type": "integer" },
281
+ "content_editor_id": { "type": "integer" }
282
+ },
283
+ "required": ["workspace_id", "content_editor_id"]
284
+ }
285
+ },
286
+ {
287
+ "name": "list_seo_competitors",
288
+ "description": "List crawled SERP competitor pages that drive Content Editor guideline calculations.",
289
+ "method": "GET",
290
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/seo_guidelines/competitors",
291
+ "input_schema": {
292
+ "type": "object",
293
+ "properties": {
294
+ "workspace_id": { "type": "integer" },
295
+ "content_editor_id": { "type": "integer" }
296
+ },
297
+ "required": ["workspace_id", "content_editor_id"]
298
+ }
299
+ },
300
+ {
301
+ "name": "get_seo_structure",
302
+ "description": "Get structural SEO guidelines such as target word count, headings, paragraphs, images, and character-count factors.",
303
+ "method": "GET",
304
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/seo_guidelines/structure",
305
+ "input_schema": {
306
+ "type": "object",
307
+ "properties": {
308
+ "workspace_id": { "type": "integer" },
309
+ "content_editor_id": { "type": "integer" }
310
+ },
311
+ "required": ["workspace_id", "content_editor_id"]
312
+ }
313
+ },
314
+ {
315
+ "name": "list_seo_terms",
316
+ "description": "List Surfer term recommendations with target ranges and included flags.",
317
+ "method": "GET",
318
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/seo_guidelines/terms",
319
+ "input_schema": {
320
+ "type": "object",
321
+ "properties": {
322
+ "workspace_id": { "type": "integer" },
323
+ "content_editor_id": { "type": "integer" }
324
+ },
325
+ "required": ["workspace_id", "content_editor_id"]
326
+ }
327
+ },
328
+ {
329
+ "name": "list_topics_and_questions",
330
+ "description": "List Surfer topics and questions recommendations for a Content Editor.",
331
+ "method": "GET",
332
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/seo_guidelines/topics_and_questions",
333
+ "input_schema": {
334
+ "type": "object",
335
+ "properties": {
336
+ "workspace_id": { "type": "integer" },
337
+ "content_editor_id": { "type": "integer" }
338
+ },
339
+ "required": ["workspace_id", "content_editor_id"]
340
+ }
341
+ },
342
+ {
343
+ "name": "get_outline",
344
+ "description": "Get the generated outline for a Content Editor.",
345
+ "method": "GET",
346
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/outline",
347
+ "input_schema": {
348
+ "type": "object",
349
+ "properties": {
350
+ "workspace_id": { "type": "integer" },
351
+ "content_editor_id": { "type": "integer" }
352
+ },
353
+ "required": ["workspace_id", "content_editor_id"]
354
+ }
355
+ },
356
+ {
357
+ "name": "regenerate_outline",
358
+ "description": "Retry/regenerate a failed or missing outline for a Content Editor, then poll get_content_editor or get_outline.",
359
+ "method": "POST",
360
+ "path": "/api/v2/workspaces/{workspace_id}/content_editors/{content_editor_id}/outline/regenerate",
361
+ "input_schema": {
362
+ "type": "object",
363
+ "properties": {
364
+ "workspace_id": { "type": "integer" },
365
+ "content_editor_id": { "type": "integer" }
366
+ },
367
+ "required": ["workspace_id", "content_editor_id"]
368
+ }
369
+ },
370
+ {
371
+ "name": "create_audit",
372
+ "description": "Create a Surfer Audit query for a URL, keyword, location, and device. This is asynchronous; poll get_audit with the returned id.",
373
+ "method": "POST",
374
+ "path": "/api/v1/audits",
375
+ "headers": { "Workspace-Id": "{{workspace_id}}" },
376
+ "input_schema": {
377
+ "type": "object",
378
+ "properties": {
379
+ "keyword": { "type": "string" },
380
+ "url": { "type": "string" },
381
+ "location": { "type": "string", "default": "United States" },
382
+ "device": { "type": "string", "enum": ["mobile", "desktop"], "default": "mobile" },
383
+ "cache": { "type": "integer", "description": "Cache duration in seconds." }
384
+ },
385
+ "required": ["keyword", "url"]
386
+ }
387
+ },
388
+ {
389
+ "name": "get_audit",
390
+ "description": "Get/poll a Surfer Audit query by id.",
391
+ "method": "GET",
392
+ "path": "/api/v1/audits/{id}",
393
+ "input_schema": {
394
+ "type": "object",
395
+ "properties": {
396
+ "id": { "type": "integer" }
397
+ },
398
+ "required": ["id"]
399
+ }
400
+ },
401
+ {
402
+ "name": "create_serp_analyzer",
403
+ "description": "Create a Surfer SERP Analyzer query for keyword/location/device. This consumes a SERP Analyzer query credit.",
404
+ "method": "POST",
405
+ "path": "/api/v1/serp_analyzers",
406
+ "headers": { "Workspace-Id": "{{workspace_id}}" },
407
+ "input_schema": {
408
+ "type": "object",
409
+ "properties": {
410
+ "keyword": { "type": "string" },
411
+ "location": { "type": "string", "default": "United States" },
412
+ "device": { "type": "string", "enum": ["mobile", "desktop"], "default": "mobile" },
413
+ "analyze_nlp_entity_sentiment": { "type": "boolean" },
414
+ "screenshot": { "type": "boolean" },
415
+ "analyze_nlp_sentiment": { "type": "boolean" }
416
+ },
417
+ "required": ["keyword"]
418
+ }
419
+ },
420
+ {
421
+ "name": "batch_create_serp_analyzers",
422
+ "description": "Create a batch of Surfer SERP Analyzer queries. Body is an array of query objects.",
423
+ "method": "POST",
424
+ "path": "/api/v1/serp_analyzers/batch",
425
+ "headers": { "Workspace-Id": "{{workspace_id}}" },
426
+ "body_root_param": "queries",
427
+ "input_schema": {
428
+ "type": "object",
429
+ "properties": {
430
+ "queries": {
431
+ "type": "array",
432
+ "items": { "type": "object" },
433
+ "description": "Array of SERP Analyzer query objects, for example [{\"keyword\":\"SEO\",\"location\":\"United States\",\"device\":\"mobile\"}]."
434
+ }
435
+ },
436
+ "required": ["queries"]
437
+ }
438
+ },
439
+ {
440
+ "name": "export_serp_analyzer_csv",
441
+ "description": "Export SERP Analyzer data as CSV.",
442
+ "method": "GET",
443
+ "path": "/api/v1/exports/csv/serp_analyzer",
444
+ "input_schema": {
445
+ "type": "object",
446
+ "properties": {}
447
+ }
448
+ },
449
+ {
450
+ "name": "export_serp_prominent_terms_csv",
451
+ "description": "Export prominent terms for one SERP Analyzer query as CSV.",
452
+ "method": "GET",
453
+ "path": "/api/v1/exports/csv/serp_analyzer/{serp_analyzer_id}/prominent_terms",
454
+ "input_schema": {
455
+ "type": "object",
456
+ "properties": {
457
+ "serp_analyzer_id": { "type": "integer" }
458
+ },
459
+ "required": ["serp_analyzer_id"]
460
+ }
461
+ },
462
+ {
463
+ "name": "export_serp_search_results_csv",
464
+ "description": "Export search results for one SERP Analyzer query as CSV.",
465
+ "method": "GET",
466
+ "path": "/api/v1/exports/csv/serp_analyzer/{serp_analyzer_id}/search_results",
467
+ "input_schema": {
468
+ "type": "object",
469
+ "properties": {
470
+ "serp_analyzer_id": { "type": "integer" }
471
+ },
472
+ "required": ["serp_analyzer_id"]
473
+ }
474
+ },
475
+ {
476
+ "name": "detect_ai_content",
477
+ "description": "Run Surfer AI Detector on text and return chunk-level and overall AI probability.",
478
+ "method": "POST",
479
+ "path": "/api/v1/ai_detector/detect",
480
+ "input_schema": {
481
+ "type": "object",
482
+ "properties": {
483
+ "text": { "type": "string" },
484
+ "model": { "type": "string", "default": "surfer-ai-detector-v1" },
485
+ "max_chunk_size": { "type": "integer" },
486
+ "semantic_chunking": { "type": "boolean" }
487
+ },
488
+ "required": ["text"]
489
+ }
490
+ },
491
+ {
492
+ "name": "humanize_text",
493
+ "description": "Use Surfer Humanizer to paraphrase text so it reads more naturally while keeping the meaning. Uses the connection's default Workspace-Id for V1 if configured.",
494
+ "method": "POST",
495
+ "path": "/api/v1/humanizer/humanize",
496
+ "headers": { "Workspace-Id": "{{workspace_id}}" },
497
+ "input_schema": {
498
+ "type": "object",
499
+ "properties": {
500
+ "text": { "type": "string" },
501
+ "model": { "type": "string", "default": "surfer-humanizer-v1" },
502
+ "stream": { "type": "boolean", "default": false }
503
+ },
504
+ "required": ["text"]
505
+ }
506
+ }
507
+ ],
508
+ "health_check": {
509
+ "tool": "list_workspaces"
510
+ }
511
+ }
@@ -165,7 +165,7 @@
165
165
  },
166
166
  {
167
167
  "name": "post_tweet",
168
- "description": "Post a new tweet. Can include text, reply to another tweet, or quote tweet. Max 280 characters.",
168
+ "description": "Create or edit a post. Can include text, reply to another post, quote a post, attach media, or edit a previous post via edit_options.previous_post_id when the authenticated account/API plan permits it. Max 280 characters.",
169
169
  "method": "POST",
170
170
  "path": "/2/tweets",
171
171
  "input_schema": {
@@ -193,6 +193,19 @@
193
193
  "type": "string",
194
194
  "description": "Tweet ID to quote"
195
195
  },
196
+ "edit_options": {
197
+ "type": "object",
198
+ "description": "Edit settings. To edit a published post, pass {previous_post_id: '<post id>'}. X edit support depends on the authenticated account and API plan.",
199
+ "properties": {
200
+ "previous_post_id": {
201
+ "type": "string",
202
+ "description": "The existing post ID to edit."
203
+ }
204
+ },
205
+ "required": [
206
+ "previous_post_id"
207
+ ]
208
+ },
196
209
  "media": {
197
210
  "type": "object",
198
211
  "description": "Media attachments",
@@ -0,0 +1,124 @@
1
+ {
2
+ "slug": "verotel",
3
+ "name": "Verotel",
4
+ "description": "Adult-friendly Verotel Control Center API for websites, sales, transactions, refunds, subscription cancellation, termination, extension, and downgrade operations.",
5
+ "logo": "https://www.google.com/s2/favicons?domain=verotel.com&sz=128",
6
+ "categories": ["payments", "adult", "high-risk", "subscriptions", "checkout"],
7
+ "base_url": "https://controlcenter.verotel.com/api",
8
+ "auth": {
9
+ "types": ["basic"],
10
+ "headers": {
11
+ "Authorization": "Basic {{basic_auth}}",
12
+ "Accept": "application/json; version=2.0.0",
13
+ "Content-Type": "application/json"
14
+ },
15
+ "credential_fields": [
16
+ {
17
+ "name": "basic_auth",
18
+ "label": "Basic Auth",
19
+ "description": "Base64-encoded Verotel Control Center API credentials. Do not include the 'Basic ' prefix."
20
+ }
21
+ ]
22
+ },
23
+ "tools": [
24
+ {
25
+ "name": "list_websites",
26
+ "description": "List Verotel websites available to the Control Center API credential.",
27
+ "method": "GET",
28
+ "path": "/websites",
29
+ "input_schema": { "type": "object", "properties": {} }
30
+ },
31
+ {
32
+ "name": "list_website_sales",
33
+ "description": "List Verotel sales for a website, sorted by created_at. Use date filters to keep results below the 5000 sale API limit.",
34
+ "method": "GET",
35
+ "path": "/website/{website_id}/sales",
36
+ "input_schema": {
37
+ "type": "object",
38
+ "properties": {
39
+ "website_id": { "type": "integer" },
40
+ "from_date": { "type": "string", "description": "ISO date, e.g. 2026-06-01." },
41
+ "to_date": { "type": "string", "description": "ISO date, e.g. 2026-06-30." },
42
+ "is_approved": { "type": "boolean" },
43
+ "is_testing": { "type": "boolean" }
44
+ },
45
+ "required": ["website_id", "from_date"]
46
+ }
47
+ },
48
+ {
49
+ "name": "list_website_transactions",
50
+ "description": "List Verotel transactions for a website, sorted by created_at. Use date filters to keep results below the 5000 transaction API limit.",
51
+ "method": "GET",
52
+ "path": "/website/{website_id}/transactions",
53
+ "input_schema": {
54
+ "type": "object",
55
+ "properties": {
56
+ "website_id": { "type": "integer" },
57
+ "from_date": { "type": "string" },
58
+ "to_date": { "type": "string" },
59
+ "is_approved": { "type": "boolean" },
60
+ "is_testing": { "type": "boolean" },
61
+ "convert_to_currency": { "type": "string" }
62
+ },
63
+ "required": ["website_id", "from_date"]
64
+ }
65
+ },
66
+ {
67
+ "name": "get_sale",
68
+ "description": "Retrieve one Verotel sale by ID.",
69
+ "method": "GET",
70
+ "path": "/sale/{sale_id}",
71
+ "input_schema": { "type": "object", "properties": { "sale_id": { "type": "integer" } }, "required": ["sale_id"] }
72
+ },
73
+ {
74
+ "name": "get_sale_transactions",
75
+ "description": "List transactions for one Verotel sale.",
76
+ "method": "GET",
77
+ "path": "/sale/{sale_id}/transactions",
78
+ "input_schema": { "type": "object", "properties": { "sale_id": { "type": "integer" } }, "required": ["sale_id"] }
79
+ },
80
+ {
81
+ "name": "get_transaction",
82
+ "description": "Retrieve one Verotel transaction by ID.",
83
+ "method": "GET",
84
+ "path": "/transaction/{transaction_id}",
85
+ "input_schema": { "type": "object", "properties": { "transaction_id": { "type": "integer" } }, "required": ["transaction_id"] }
86
+ },
87
+ {
88
+ "name": "refund_transaction",
89
+ "description": "Refund a Verotel transaction. Provide partial_refund_amount for a partial refund.",
90
+ "method": "POST",
91
+ "path": "/transaction/{transaction_id}/refund",
92
+ "input_schema": { "type": "object", "properties": { "transaction_id": { "type": "integer" }, "partial_refund_amount": { "type": "number" } }, "required": ["transaction_id"] }
93
+ },
94
+ {
95
+ "name": "cancel_future_billing",
96
+ "description": "Cancel future billing for a Verotel sale.",
97
+ "method": "POST",
98
+ "path": "/sale/{sale_id}/cancel",
99
+ "input_schema": { "type": "object", "properties": { "sale_id": { "type": "integer" } }, "required": ["sale_id"] }
100
+ },
101
+ {
102
+ "name": "terminate_sale",
103
+ "description": "Terminate a Verotel sale.",
104
+ "method": "POST",
105
+ "path": "/sale/{sale_id}/terminate",
106
+ "input_schema": { "type": "object", "properties": { "sale_id": { "type": "integer" } }, "required": ["sale_id"] }
107
+ },
108
+ {
109
+ "name": "extend_sale",
110
+ "description": "Extend the subscription period of a Verotel sale.",
111
+ "method": "POST",
112
+ "path": "/sale/{sale_id}/extend",
113
+ "input_schema": { "type": "object", "properties": { "sale_id": { "type": "integer" }, "original_expiration_date": { "type": "string" }, "extend_by_days": { "type": "integer" } }, "required": ["sale_id", "original_expiration_date", "extend_by_days"] }
114
+ },
115
+ {
116
+ "name": "downgrade_sale",
117
+ "description": "Downgrade a Verotel sale to a lower price.",
118
+ "method": "POST",
119
+ "path": "/sale/{sale_id}/downgrade",
120
+ "input_schema": { "type": "object", "properties": { "sale_id": { "type": "integer" }, "currency": { "type": "string" }, "new_price": { "type": "number" } }, "required": ["sale_id", "currency", "new_price"] }
121
+ }
122
+ ],
123
+ "health_check": { "tool": "list_websites" }
124
+ }