0nmcp 2.9.1 → 2.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/catalog.js CHANGED
@@ -1918,6 +1918,987 @@ export const SERVICE_CATALOG = {
1918
1918
  }),
1919
1919
  },
1920
1920
 
1921
+ // ── Figma ─────────────────────────────────────────────────
1922
+ figma: {
1923
+ name: "Figma",
1924
+ type: "design",
1925
+ description: "Design platform — files, components, styles, variables, images, comments, webhooks, dev resources",
1926
+ baseUrl: "https://api.figma.com",
1927
+ authType: "api_key",
1928
+ credentialKeys: ["personalAccessToken"],
1929
+ capabilities: [
1930
+ { name: "manage_files", actions: ["get", "list"], description: "Read design files and nodes" },
1931
+ { name: "export_images", actions: ["export"], description: "Export frames as PNG/SVG/PDF" },
1932
+ { name: "manage_components", actions: ["list", "get"], description: "List and read components and styles" },
1933
+ { name: "manage_variables", actions: ["get", "update"], description: "Read and write design tokens/variables" },
1934
+ { name: "manage_comments", actions: ["list", "create", "delete"], description: "Manage file comments" },
1935
+ { name: "manage_webhooks", actions: ["create", "list", "delete"], description: "Subscribe to design events" },
1936
+ { name: "manage_dev_resources", actions: ["create", "list", "delete"], description: "Manage developer annotations" },
1937
+ ],
1938
+ endpoints: {
1939
+ get_file: { method: "GET", path: "/v1/files/{file_key}" },
1940
+ get_file_nodes: { method: "GET", path: "/v1/files/{file_key}/nodes", query: ["ids", "depth"] },
1941
+ get_file_meta: { method: "GET", path: "/v1/files/{file_key}/meta" },
1942
+ get_file_versions: { method: "GET", path: "/v1/files/{file_key}/versions" },
1943
+ export_images: { method: "GET", path: "/v1/images/{file_key}", query: ["ids", "scale", "format", "svg_outline_text"] },
1944
+ get_image_fills: { method: "GET", path: "/v1/files/{file_key}/images" },
1945
+ get_team_components: { method: "GET", path: "/v1/teams/{team_id}/components", query: ["page_size", "after"] },
1946
+ get_file_components: { method: "GET", path: "/v1/files/{file_key}/components" },
1947
+ get_component: { method: "GET", path: "/v1/components/{key}" },
1948
+ get_team_component_sets: { method: "GET", path: "/v1/teams/{team_id}/component_sets" },
1949
+ get_team_styles: { method: "GET", path: "/v1/teams/{team_id}/styles" },
1950
+ get_file_styles: { method: "GET", path: "/v1/files/{file_key}/styles" },
1951
+ get_style: { method: "GET", path: "/v1/styles/{key}" },
1952
+ get_local_variables: { method: "GET", path: "/v1/files/{file_key}/variables/local" },
1953
+ get_published_variables: { method: "GET", path: "/v1/files/{file_key}/variables/published" },
1954
+ update_variables: { method: "POST", path: "/v1/files/{file_key}/variables", body: {} },
1955
+ get_comments: { method: "GET", path: "/v1/files/{file_key}/comments" },
1956
+ post_comment: { method: "POST", path: "/v1/files/{file_key}/comments", body: { message: "" } },
1957
+ delete_comment: { method: "DELETE", path: "/v1/files/{file_key}/comments/{comment_id}" },
1958
+ react_to_comment: { method: "POST", path: "/v1/files/{file_key}/comments/{comment_id}/reactions", body: { emoji: "" } },
1959
+ create_webhook: { method: "POST", path: "/v2/webhooks", body: { event_type: "", team_id: "", endpoint: "", passcode: "" } },
1960
+ list_webhooks: { method: "GET", path: "/v2/webhooks", query: ["team_id"] },
1961
+ get_webhook: { method: "GET", path: "/v2/webhooks/{webhook_id}" },
1962
+ update_webhook: { method: "PUT", path: "/v2/webhooks/{webhook_id}", body: {} },
1963
+ delete_webhook: { method: "DELETE", path: "/v2/webhooks/{webhook_id}" },
1964
+ get_dev_resources: { method: "GET", path: "/v1/files/{file_key}/dev_resources", query: ["node_ids"] },
1965
+ create_dev_resources: { method: "POST", path: "/v1/dev_resources", body: { dev_resources: [] } },
1966
+ update_dev_resources: { method: "PUT", path: "/v1/dev_resources", body: { dev_resources: [] } },
1967
+ delete_dev_resource: { method: "DELETE", path: "/v1/files/{file_key}/dev_resources/{dev_resource_id}" },
1968
+ list_projects: { method: "GET", path: "/v1/teams/{team_id}/projects" },
1969
+ list_project_files: { method: "GET", path: "/v1/projects/{project_id}/files" },
1970
+ get_me: { method: "GET", path: "/v1/me" },
1971
+ },
1972
+ authHeader: (creds) => ({ "X-Figma-Token": creds.personalAccessToken }),
1973
+ },
1974
+
1975
+ // ── ElevenLabs ──────────────────────────────────────────
1976
+ elevenlabs: {
1977
+ name: "ElevenLabs",
1978
+ type: "ai",
1979
+ description: "AI voice synthesis — text-to-speech, voice cloning, audio generation",
1980
+ baseUrl: "https://api.elevenlabs.io",
1981
+ authType: "api_key",
1982
+ credentialKeys: ["apiKey"],
1983
+ capabilities: [
1984
+ { name: "text_to_speech", actions: ["generate"], description: "Convert text to natural speech" },
1985
+ { name: "manage_voices", actions: ["list", "get", "clone"], description: "List, get, and clone voices" },
1986
+ { name: "manage_audio", actions: ["get_history"], description: "View generation history" },
1987
+ ],
1988
+ endpoints: {
1989
+ text_to_speech: { method: "POST", path: "/v1/text-to-speech/{voice_id}", body: { text: "", model_id: "eleven_monolingual_v1" } },
1990
+ text_to_speech_stream: { method: "POST", path: "/v1/text-to-speech/{voice_id}/stream", body: { text: "", model_id: "eleven_monolingual_v1" } },
1991
+ list_voices: { method: "GET", path: "/v1/voices" },
1992
+ get_voice: { method: "GET", path: "/v1/voices/{voice_id}" },
1993
+ delete_voice: { method: "DELETE", path: "/v1/voices/{voice_id}" },
1994
+ get_models: { method: "GET", path: "/v1/models" },
1995
+ get_history: { method: "GET", path: "/v1/history", query: ["page_size", "start_after_history_item_id"] },
1996
+ get_user: { method: "GET", path: "/v1/user" },
1997
+ },
1998
+ authHeader: (creds) => ({ "xi-api-key": creds.apiKey, "Content-Type": "application/json" }),
1999
+ },
2000
+
2001
+ // ── Deepgram ────────────────────────────────────────────
2002
+ deepgram: {
2003
+ name: "Deepgram",
2004
+ type: "ai",
2005
+ description: "Speech-to-text and audio intelligence — transcription, summarization, topic detection",
2006
+ baseUrl: "https://api.deepgram.com",
2007
+ authType: "api_key",
2008
+ credentialKeys: ["apiKey"],
2009
+ capabilities: [
2010
+ { name: "transcribe", actions: ["transcribe_url", "transcribe_file"], description: "Convert speech to text" },
2011
+ { name: "manage_projects", actions: ["list", "get"], description: "Manage Deepgram projects" },
2012
+ { name: "manage_keys", actions: ["list", "create"], description: "Manage API keys" },
2013
+ ],
2014
+ endpoints: {
2015
+ transcribe_url: { method: "POST", path: "/v1/listen", query: ["model", "language", "punctuate", "diarize", "summarize", "topics"], body: { url: "" } },
2016
+ list_projects: { method: "GET", path: "/v1/projects" },
2017
+ get_project: { method: "GET", path: "/v1/projects/{project_id}" },
2018
+ list_keys: { method: "GET", path: "/v1/projects/{project_id}/keys" },
2019
+ create_key: { method: "POST", path: "/v1/projects/{project_id}/keys", body: { comment: "", scopes: [] } },
2020
+ get_usage: { method: "GET", path: "/v1/projects/{project_id}/usage", query: ["start", "end"] },
2021
+ list_balances: { method: "GET", path: "/v1/projects/{project_id}/balances" },
2022
+ },
2023
+ authHeader: (creds) => ({ "Authorization": `Token ${creds.apiKey}`, "Content-Type": "application/json" }),
2024
+ },
2025
+
2026
+ // ── Groq ────────────────────────────────────────────────
2027
+ groq: {
2028
+ name: "Groq",
2029
+ type: "ai",
2030
+ description: "Ultra-fast AI inference — chat completions, embeddings, audio transcription",
2031
+ baseUrl: "https://api.groq.com/openai",
2032
+ authType: "api_key",
2033
+ credentialKeys: ["apiKey"],
2034
+ capabilities: [
2035
+ { name: "chat", actions: ["complete"], description: "Chat completions with Llama, Mixtral, Gemma" },
2036
+ { name: "audio", actions: ["transcribe"], description: "Audio transcription via Whisper" },
2037
+ { name: "models", actions: ["list"], description: "List available models" },
2038
+ ],
2039
+ endpoints: {
2040
+ chat_completion: { method: "POST", path: "/v1/chat/completions", body: { model: "llama-3.3-70b-versatile", messages: [] } },
2041
+ create_transcription: { method: "POST", path: "/v1/audio/transcriptions", contentType: "multipart/form-data" },
2042
+ list_models: { method: "GET", path: "/v1/models" },
2043
+ },
2044
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.apiKey}`, "Content-Type": "application/json" }),
2045
+ },
2046
+
2047
+ // ── Cohere ──────────────────────────────────────────────
2048
+ cohere: {
2049
+ name: "Cohere",
2050
+ type: "ai",
2051
+ description: "Enterprise AI — text generation, embeddings, reranking, classification",
2052
+ baseUrl: "https://api.cohere.com",
2053
+ authType: "api_key",
2054
+ credentialKeys: ["apiKey"],
2055
+ capabilities: [
2056
+ { name: "generate", actions: ["chat", "generate"], description: "Text generation and chat" },
2057
+ { name: "embed", actions: ["embed"], description: "Create text embeddings" },
2058
+ { name: "rerank", actions: ["rerank"], description: "Rerank search results" },
2059
+ { name: "classify", actions: ["classify"], description: "Text classification" },
2060
+ ],
2061
+ endpoints: {
2062
+ chat: { method: "POST", path: "/v2/chat", body: { model: "command-r-plus", messages: [] } },
2063
+ generate: { method: "POST", path: "/v1/generate", body: { model: "command", prompt: "" } },
2064
+ embed: { method: "POST", path: "/v2/embed", body: { model: "embed-english-v3.0", texts: [], input_type: "search_document" } },
2065
+ rerank: { method: "POST", path: "/v2/rerank", body: { model: "rerank-english-v3.0", query: "", documents: [] } },
2066
+ classify: { method: "POST", path: "/v1/classify", body: { model: "embed-english-v3.0", inputs: [], examples: [] } },
2067
+ list_models: { method: "GET", path: "/v1/models" },
2068
+ },
2069
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.apiKey}`, "Content-Type": "application/json" }),
2070
+ },
2071
+
2072
+ // ── Mistral ─────────────────────────────────────────────
2073
+ mistral: {
2074
+ name: "Mistral",
2075
+ type: "ai",
2076
+ description: "Open-weight AI models — chat, embeddings, code generation, function calling",
2077
+ baseUrl: "https://api.mistral.ai",
2078
+ authType: "api_key",
2079
+ credentialKeys: ["apiKey"],
2080
+ capabilities: [
2081
+ { name: "chat", actions: ["complete"], description: "Chat completions" },
2082
+ { name: "embed", actions: ["embed"], description: "Text embeddings" },
2083
+ { name: "models", actions: ["list"], description: "List available models" },
2084
+ ],
2085
+ endpoints: {
2086
+ chat_completion: { method: "POST", path: "/v1/chat/completions", body: { model: "mistral-large-latest", messages: [] } },
2087
+ create_embedding: { method: "POST", path: "/v1/embeddings", body: { model: "mistral-embed", input: [] } },
2088
+ list_models: { method: "GET", path: "/v1/models" },
2089
+ },
2090
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.apiKey}`, "Content-Type": "application/json" }),
2091
+ },
2092
+
2093
+ // ── Replicate ───────────────────────────────────────────
2094
+ replicate: {
2095
+ name: "Replicate",
2096
+ type: "ai",
2097
+ description: "Run open-source AI models — image generation, LLMs, video, audio",
2098
+ baseUrl: "https://api.replicate.com",
2099
+ authType: "api_key",
2100
+ credentialKeys: ["apiKey"],
2101
+ capabilities: [
2102
+ { name: "predictions", actions: ["create", "get", "list", "cancel"], description: "Run model predictions" },
2103
+ { name: "models", actions: ["list", "get", "search"], description: "Browse and search models" },
2104
+ ],
2105
+ endpoints: {
2106
+ create_prediction: { method: "POST", path: "/v1/predictions", body: { version: "", input: {} } },
2107
+ get_prediction: { method: "GET", path: "/v1/predictions/{prediction_id}" },
2108
+ list_predictions: { method: "GET", path: "/v1/predictions" },
2109
+ cancel_prediction: { method: "POST", path: "/v1/predictions/{prediction_id}/cancel" },
2110
+ get_model: { method: "GET", path: "/v1/models/{owner}/{name}" },
2111
+ list_model_versions:{ method: "GET", path: "/v1/models/{owner}/{name}/versions" },
2112
+ search_models: { method: "GET", path: "/v1/models", query: ["query"] },
2113
+ list_collections: { method: "GET", path: "/v1/collections" },
2114
+ },
2115
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.apiKey}`, "Content-Type": "application/json" }),
2116
+ },
2117
+
2118
+ // ── Stability AI ────────────────────────────────────────
2119
+ stability: {
2120
+ name: "Stability AI",
2121
+ type: "ai",
2122
+ description: "Image generation — Stable Diffusion, upscaling, inpainting, image-to-image",
2123
+ baseUrl: "https://api.stability.ai",
2124
+ authType: "api_key",
2125
+ credentialKeys: ["apiKey"],
2126
+ capabilities: [
2127
+ { name: "generate_image", actions: ["generate", "upscale", "edit"], description: "Generate and edit images" },
2128
+ { name: "engines", actions: ["list"], description: "List available engines" },
2129
+ ],
2130
+ endpoints: {
2131
+ text_to_image: { method: "POST", path: "/v1/generation/{engine_id}/text-to-image", body: { text_prompts: [{ text: "" }], cfg_scale: 7, steps: 30 } },
2132
+ image_to_image: { method: "POST", path: "/v1/generation/{engine_id}/image-to-image", contentType: "multipart/form-data" },
2133
+ upscale: { method: "POST", path: "/v1/generation/{engine_id}/image-to-image/upscale", contentType: "multipart/form-data" },
2134
+ list_engines: { method: "GET", path: "/v1/engines/list" },
2135
+ get_account: { method: "GET", path: "/v1/user/account" },
2136
+ get_balance: { method: "GET", path: "/v1/user/balance" },
2137
+ },
2138
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.apiKey}`, "Content-Type": "application/json" }),
2139
+ },
2140
+
2141
+ // ── Telegram ────────────────────────────────────────────
2142
+ telegram: {
2143
+ name: "Telegram",
2144
+ type: "messaging",
2145
+ description: "Messaging platform — send messages, manage bots, groups, channels",
2146
+ baseUrl: "https://api.telegram.org/bot{botToken}",
2147
+ authType: "api_key",
2148
+ credentialKeys: ["botToken"],
2149
+ capabilities: [
2150
+ { name: "send_messages", actions: ["send_text", "send_photo", "send_document"], description: "Send messages, photos, files" },
2151
+ { name: "manage_chats", actions: ["get_chat", "get_members"], description: "Manage chats and groups" },
2152
+ { name: "manage_updates", actions: ["get_updates", "set_webhook"], description: "Receive and handle updates" },
2153
+ ],
2154
+ endpoints: {
2155
+ send_message: { method: "POST", path: "/sendMessage", body: { chat_id: "", text: "", parse_mode: "HTML" } },
2156
+ send_photo: { method: "POST", path: "/sendPhoto", body: { chat_id: "", photo: "", caption: "" } },
2157
+ send_document: { method: "POST", path: "/sendDocument", contentType: "multipart/form-data" },
2158
+ get_updates: { method: "GET", path: "/getUpdates", query: ["offset", "limit", "timeout"] },
2159
+ set_webhook: { method: "POST", path: "/setWebhook", body: { url: "" } },
2160
+ delete_webhook: { method: "POST", path: "/deleteWebhook" },
2161
+ get_chat: { method: "GET", path: "/getChat", query: ["chat_id"] },
2162
+ get_chat_member_count: { method: "GET", path: "/getChatMemberCount", query: ["chat_id"] },
2163
+ get_me: { method: "GET", path: "/getMe" },
2164
+ },
2165
+ authHeader: () => ({ "Content-Type": "application/json" }),
2166
+ },
2167
+
2168
+ // ── Postmark ────────────────────────────────────────────
2169
+ postmark: {
2170
+ name: "Postmark",
2171
+ type: "email",
2172
+ description: "Transactional email — send, templates, webhooks, bounce management",
2173
+ baseUrl: "https://api.postmarkapp.com",
2174
+ authType: "api_key",
2175
+ credentialKeys: ["serverToken"],
2176
+ capabilities: [
2177
+ { name: "send_email", actions: ["send", "send_batch", "send_template"], description: "Send transactional emails" },
2178
+ { name: "manage_templates", actions: ["list", "get", "create"], description: "Manage email templates" },
2179
+ { name: "manage_bounces", actions: ["list", "get"], description: "Track bounces and deliverability" },
2180
+ ],
2181
+ endpoints: {
2182
+ send_email: { method: "POST", path: "/email", body: { From: "", To: "", Subject: "", HtmlBody: "" } },
2183
+ send_batch: { method: "POST", path: "/email/batch", body: [] },
2184
+ send_template: { method: "POST", path: "/email/withTemplate", body: { TemplateId: 0, To: "", TemplateModel: {} } },
2185
+ list_templates: { method: "GET", path: "/templates", query: ["Count", "Offset"] },
2186
+ get_template: { method: "GET", path: "/templates/{templateId}" },
2187
+ create_template: { method: "POST", path: "/templates", body: { Name: "", Subject: "", HtmlBody: "" } },
2188
+ list_bounces: { method: "GET", path: "/bounces", query: ["count", "offset", "type"] },
2189
+ get_delivery_stats: { method: "GET", path: "/deliverystats" },
2190
+ get_server: { method: "GET", path: "/server" },
2191
+ },
2192
+ authHeader: (creds) => ({ "X-Postmark-Server-Token": creds.serverToken, "Content-Type": "application/json", "Accept": "application/json" }),
2193
+ },
2194
+
2195
+ // ── Mailgun ─────────────────────────────────────────────
2196
+ mailgun: {
2197
+ name: "Mailgun",
2198
+ type: "email",
2199
+ description: "Email API — send, receive, validate, track deliverability",
2200
+ baseUrl: "https://api.mailgun.net/v3",
2201
+ authType: "api_key",
2202
+ credentialKeys: ["apiKey", "domain"],
2203
+ capabilities: [
2204
+ { name: "send_email", actions: ["send"], description: "Send emails" },
2205
+ { name: "manage_domains", actions: ["list", "get"], description: "Manage sending domains" },
2206
+ { name: "track_events", actions: ["list"], description: "Track email events" },
2207
+ { name: "validate_email", actions: ["validate"], description: "Validate email addresses" },
2208
+ ],
2209
+ endpoints: {
2210
+ send_message: { method: "POST", path: "/{domain}/messages", contentType: "multipart/form-data" },
2211
+ list_domains: { method: "GET", path: "/domains" },
2212
+ get_domain: { method: "GET", path: "/domains/{domain}" },
2213
+ list_events: { method: "GET", path: "/{domain}/events", query: ["begin", "end", "event", "limit"] },
2214
+ get_stats: { method: "GET", path: "/{domain}/stats/total", query: ["event", "start", "end"] },
2215
+ validate_email: { method: "GET", path: "/address/validate", query: ["address"] },
2216
+ list_bounces: { method: "GET", path: "/{domain}/bounces" },
2217
+ list_unsubscribes: { method: "GET", path: "/{domain}/unsubscribes" },
2218
+ },
2219
+ authHeader: (creds) => ({ "Authorization": "Basic " + Buffer.from("api:" + creds.apiKey).toString("base64") }),
2220
+ },
2221
+
2222
+ // ── ConvertKit ──────────────────────────────────────────
2223
+ convertkit: {
2224
+ name: "ConvertKit",
2225
+ type: "email_marketing",
2226
+ description: "Creator email marketing — subscribers, sequences, broadcasts, forms, tags",
2227
+ baseUrl: "https://api.convertkit.com/v3",
2228
+ authType: "api_key",
2229
+ credentialKeys: ["apiSecret"],
2230
+ capabilities: [
2231
+ { name: "manage_subscribers", actions: ["list", "get", "create", "tag"], description: "Manage subscribers" },
2232
+ { name: "manage_sequences", actions: ["list", "subscribe"], description: "Manage email sequences" },
2233
+ { name: "manage_broadcasts", actions: ["list", "create"], description: "Send broadcasts" },
2234
+ { name: "manage_tags", actions: ["list", "create"], description: "Manage subscriber tags" },
2235
+ { name: "manage_forms", actions: ["list", "subscribe"], description: "Manage signup forms" },
2236
+ ],
2237
+ endpoints: {
2238
+ list_subscribers: { method: "GET", path: "/subscribers", query: ["api_secret", "page", "sort_order"] },
2239
+ get_subscriber: { method: "GET", path: "/subscribers/{subscriber_id}", query: ["api_secret"] },
2240
+ create_subscriber: { method: "POST", path: "/forms/{form_id}/subscribe", body: { api_secret: "", email: "" } },
2241
+ tag_subscriber: { method: "POST", path: "/tags/{tag_id}/subscribe", body: { api_secret: "", email: "" } },
2242
+ list_tags: { method: "GET", path: "/tags", query: ["api_secret"] },
2243
+ create_tag: { method: "POST", path: "/tags", body: { api_secret: "", tag: { name: "" } } },
2244
+ list_sequences: { method: "GET", path: "/sequences", query: ["api_secret"] },
2245
+ add_to_sequence: { method: "POST", path: "/sequences/{sequence_id}/subscribe", body: { api_secret: "", email: "" } },
2246
+ list_forms: { method: "GET", path: "/forms", query: ["api_secret"] },
2247
+ list_broadcasts: { method: "GET", path: "/broadcasts", query: ["api_secret"] },
2248
+ create_broadcast: { method: "POST", path: "/broadcasts", body: { api_secret: "", subject: "", content: "" } },
2249
+ },
2250
+ authHeader: () => ({ "Content-Type": "application/json" }),
2251
+ },
2252
+
2253
+ // ── Brevo (Sendinblue) ──────────────────────────────────
2254
+ brevo: {
2255
+ name: "Brevo",
2256
+ type: "email_marketing",
2257
+ description: "Email & SMS marketing — campaigns, transactional, contacts, automation",
2258
+ baseUrl: "https://api.brevo.com/v3",
2259
+ authType: "api_key",
2260
+ credentialKeys: ["apiKey"],
2261
+ capabilities: [
2262
+ { name: "send_email", actions: ["send_transactional", "send_campaign"], description: "Send transactional and campaign emails" },
2263
+ { name: "manage_contacts", actions: ["create", "update", "list"], description: "Manage contact lists" },
2264
+ { name: "send_sms", actions: ["send"], description: "Send SMS messages" },
2265
+ ],
2266
+ endpoints: {
2267
+ send_transactional: { method: "POST", path: "/smtp/email", body: { sender: {}, to: [{}], subject: "", htmlContent: "" } },
2268
+ list_contacts: { method: "GET", path: "/contacts", query: ["limit", "offset", "sort"] },
2269
+ create_contact: { method: "POST", path: "/contacts", body: { email: "", attributes: {} } },
2270
+ update_contact: { method: "PUT", path: "/contacts/{identifier}", body: { attributes: {} } },
2271
+ get_contact: { method: "GET", path: "/contacts/{identifier}" },
2272
+ list_lists: { method: "GET", path: "/contacts/lists", query: ["limit", "offset"] },
2273
+ send_sms: { method: "POST", path: "/transactionalSMS/sms", body: { sender: "", recipient: "", content: "" } },
2274
+ get_account: { method: "GET", path: "/account" },
2275
+ },
2276
+ authHeader: (creds) => ({ "api-key": creds.apiKey, "Content-Type": "application/json" }),
2277
+ },
2278
+
2279
+ // ── ActiveCampaign ──────────────────────────────────────
2280
+ activecampaign: {
2281
+ name: "ActiveCampaign",
2282
+ type: "email_marketing",
2283
+ description: "Email marketing + CRM — contacts, automations, deals, campaigns, tags",
2284
+ baseUrl: "https://{accountName}.api-us1.com/api/3",
2285
+ authType: "api_key",
2286
+ credentialKeys: ["apiKey", "accountName"],
2287
+ capabilities: [
2288
+ { name: "manage_contacts", actions: ["create", "update", "list", "search"], description: "Manage contacts" },
2289
+ { name: "manage_tags", actions: ["list", "add", "remove"], description: "Tag contacts" },
2290
+ { name: "manage_automations", actions: ["list"], description: "List automations" },
2291
+ { name: "manage_deals", actions: ["create", "list", "update"], description: "Manage CRM deals" },
2292
+ ],
2293
+ endpoints: {
2294
+ create_contact: { method: "POST", path: "/contacts", body: { contact: { email: "", firstName: "", lastName: "" } } },
2295
+ list_contacts: { method: "GET", path: "/contacts", query: ["search", "limit", "offset"] },
2296
+ get_contact: { method: "GET", path: "/contacts/{id}" },
2297
+ update_contact: { method: "PUT", path: "/contacts/{id}", body: { contact: {} } },
2298
+ add_tag: { method: "POST", path: "/contactTags", body: { contactTag: { contact: "", tag: "" } } },
2299
+ list_tags: { method: "GET", path: "/tags", query: ["search", "limit"] },
2300
+ list_automations: { method: "GET", path: "/automations" },
2301
+ create_deal: { method: "POST", path: "/deals", body: { deal: { title: "", value: 0 } } },
2302
+ list_deals: { method: "GET", path: "/deals", query: ["search", "limit"] },
2303
+ list_lists: { method: "GET", path: "/lists" },
2304
+ },
2305
+ authHeader: (creds) => ({ "Api-Token": creds.apiKey, "Content-Type": "application/json" }),
2306
+ },
2307
+
2308
+ // ── Lemlist ─────────────────────────────────────────────
2309
+ lemlist: {
2310
+ name: "Lemlist",
2311
+ type: "cold_email",
2312
+ description: "Cold email outreach — campaigns, leads, sequences, email warmup",
2313
+ baseUrl: "https://api.lemlist.com/api",
2314
+ authType: "api_key",
2315
+ credentialKeys: ["apiKey"],
2316
+ capabilities: [
2317
+ { name: "manage_campaigns", actions: ["list", "get"], description: "Manage outreach campaigns" },
2318
+ { name: "manage_leads", actions: ["add", "list", "delete"], description: "Manage campaign leads" },
2319
+ { name: "manage_activities", actions: ["list"], description: "Track email activities" },
2320
+ ],
2321
+ endpoints: {
2322
+ list_campaigns: { method: "GET", path: "/campaigns" },
2323
+ get_campaign: { method: "GET", path: "/campaigns/{campaignId}" },
2324
+ add_lead: { method: "POST", path: "/campaigns/{campaignId}/leads/{email}", body: { firstName: "", lastName: "", companyName: "" } },
2325
+ list_leads: { method: "GET", path: "/campaigns/{campaignId}/leads" },
2326
+ delete_lead: { method: "DELETE", path: "/campaigns/{campaignId}/leads/{email}" },
2327
+ list_activities: { method: "GET", path: "/activities", query: ["campaignId", "type", "limit"] },
2328
+ get_team: { method: "GET", path: "/team" },
2329
+ },
2330
+ authHeader: (creds) => ({ "Authorization": "Basic " + Buffer.from(":" + creds.apiKey).toString("base64") }),
2331
+ },
2332
+
2333
+ // ── AWS ─────────────────────────────────────────────────
2334
+ aws: {
2335
+ name: "AWS",
2336
+ type: "cloud",
2337
+ description: "Amazon Web Services — S3 storage, Lambda functions, SES email, SNS notifications",
2338
+ baseUrl: "https://s3.amazonaws.com",
2339
+ authType: "aws_signature",
2340
+ credentialKeys: ["accessKeyId", "secretAccessKey", "region"],
2341
+ capabilities: [
2342
+ { name: "manage_s3", actions: ["list_buckets", "put_object", "get_object", "delete_object"], description: "S3 storage operations" },
2343
+ { name: "send_email", actions: ["send"], description: "Send email via SES" },
2344
+ { name: "manage_lambda", actions: ["invoke", "list"], description: "Lambda function management" },
2345
+ ],
2346
+ endpoints: {
2347
+ list_buckets: { method: "GET", path: "/" },
2348
+ list_objects: { method: "GET", path: "/{bucket}", query: ["prefix", "max-keys", "delimiter"] },
2349
+ put_object: { method: "PUT", path: "/{bucket}/{key}" },
2350
+ get_object: { method: "GET", path: "/{bucket}/{key}" },
2351
+ delete_object: { method: "DELETE", path: "/{bucket}/{key}" },
2352
+ },
2353
+ authHeader: (creds) => ({ "Content-Type": "application/json" }),
2354
+ },
2355
+
2356
+ // ── Webflow ─────────────────────────────────────────────
2357
+ webflow: {
2358
+ name: "Webflow",
2359
+ type: "websites",
2360
+ description: "Visual web builder — sites, CMS collections, forms, e-commerce, memberships",
2361
+ baseUrl: "https://api.webflow.com/v2",
2362
+ authType: "api_key",
2363
+ credentialKeys: ["accessToken"],
2364
+ capabilities: [
2365
+ { name: "manage_sites", actions: ["list", "get", "publish"], description: "Manage Webflow sites" },
2366
+ { name: "manage_collections", actions: ["list", "get", "create_item"], description: "Manage CMS collections" },
2367
+ { name: "manage_forms", actions: ["list", "get_submissions"], description: "Get form submissions" },
2368
+ { name: "manage_ecommerce", actions: ["list_products", "create_order"], description: "E-commerce operations" },
2369
+ ],
2370
+ endpoints: {
2371
+ list_sites: { method: "GET", path: "/sites" },
2372
+ get_site: { method: "GET", path: "/sites/{site_id}" },
2373
+ publish_site: { method: "POST", path: "/sites/{site_id}/publish", body: { domains: [] } },
2374
+ list_collections: { method: "GET", path: "/sites/{site_id}/collections" },
2375
+ get_collection: { method: "GET", path: "/collections/{collection_id}" },
2376
+ list_items: { method: "GET", path: "/collections/{collection_id}/items", query: ["limit", "offset"] },
2377
+ create_item: { method: "POST", path: "/collections/{collection_id}/items", body: { fieldData: {} } },
2378
+ update_item: { method: "PATCH", path: "/collections/{collection_id}/items/{item_id}", body: { fieldData: {} } },
2379
+ delete_item: { method: "DELETE", path: "/collections/{collection_id}/items/{item_id}" },
2380
+ list_forms: { method: "GET", path: "/sites/{site_id}/forms" },
2381
+ list_form_submissions: { method: "GET", path: "/forms/{form_id}/submissions" },
2382
+ list_products: { method: "GET", path: "/sites/{site_id}/products" },
2383
+ },
2384
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.accessToken}`, "Content-Type": "application/json" }),
2385
+ },
2386
+
2387
+ // ── WordPress ───────────────────────────────────────────
2388
+ wordpress: {
2389
+ name: "WordPress",
2390
+ type: "websites",
2391
+ description: "WordPress REST API — posts, pages, media, users, comments, plugins",
2392
+ baseUrl: "https://{siteUrl}/wp-json/wp/v2",
2393
+ authType: "basic",
2394
+ credentialKeys: ["siteUrl", "username", "applicationPassword"],
2395
+ capabilities: [
2396
+ { name: "manage_posts", actions: ["create", "update", "list", "delete"], description: "Manage blog posts" },
2397
+ { name: "manage_pages", actions: ["create", "update", "list"], description: "Manage pages" },
2398
+ { name: "manage_media", actions: ["upload", "list"], description: "Manage media library" },
2399
+ { name: "manage_users", actions: ["list", "get"], description: "Manage users" },
2400
+ ],
2401
+ endpoints: {
2402
+ list_posts: { method: "GET", path: "/posts", query: ["per_page", "page", "search", "status"] },
2403
+ create_post: { method: "POST", path: "/posts", body: { title: "", content: "", status: "draft" } },
2404
+ update_post: { method: "PUT", path: "/posts/{id}", body: {} },
2405
+ delete_post: { method: "DELETE", path: "/posts/{id}" },
2406
+ list_pages: { method: "GET", path: "/pages", query: ["per_page", "page", "search"] },
2407
+ create_page: { method: "POST", path: "/pages", body: { title: "", content: "", status: "draft" } },
2408
+ update_page: { method: "PUT", path: "/pages/{id}", body: {} },
2409
+ list_media: { method: "GET", path: "/media", query: ["per_page", "page"] },
2410
+ upload_media: { method: "POST", path: "/media", contentType: "multipart/form-data" },
2411
+ list_users: { method: "GET", path: "/users" },
2412
+ list_comments: { method: "GET", path: "/comments", query: ["post", "per_page"] },
2413
+ list_categories: { method: "GET", path: "/categories" },
2414
+ list_tags: { method: "GET", path: "/tags" },
2415
+ },
2416
+ authHeader: (creds) => ({ "Authorization": "Basic " + Buffer.from(creds.username + ":" + creds.applicationPassword).toString("base64"), "Content-Type": "application/json" }),
2417
+ },
2418
+
2419
+ // ── Monday.com ──────────────────────────────────────────
2420
+ monday: {
2421
+ name: "Monday.com",
2422
+ type: "project_mgmt",
2423
+ description: "Work management — boards, items, columns, updates, automations via GraphQL",
2424
+ baseUrl: "https://api.monday.com/v2",
2425
+ authType: "api_key",
2426
+ credentialKeys: ["apiKey"],
2427
+ capabilities: [
2428
+ { name: "manage_boards", actions: ["list", "create"], description: "Manage boards" },
2429
+ { name: "manage_items", actions: ["create", "update", "list"], description: "Manage items/rows" },
2430
+ { name: "manage_updates", actions: ["create", "list"], description: "Post updates on items" },
2431
+ ],
2432
+ endpoints: {
2433
+ graphql: { method: "POST", path: "/", body: { query: "" } },
2434
+ },
2435
+ authHeader: (creds) => ({ "Authorization": creds.apiKey, "Content-Type": "application/json" }),
2436
+ },
2437
+
2438
+ // ── Trello ──────────────────────────────────────────────
2439
+ trello: {
2440
+ name: "Trello",
2441
+ type: "project_mgmt",
2442
+ description: "Kanban boards — cards, lists, boards, checklists, labels, members",
2443
+ baseUrl: "https://api.trello.com/1",
2444
+ authType: "api_key",
2445
+ credentialKeys: ["apiKey", "apiToken"],
2446
+ capabilities: [
2447
+ { name: "manage_boards", actions: ["list", "get", "create"], description: "Manage Trello boards" },
2448
+ { name: "manage_cards", actions: ["create", "update", "move", "delete"], description: "Manage cards" },
2449
+ { name: "manage_lists", actions: ["create", "list"], description: "Manage lists" },
2450
+ ],
2451
+ endpoints: {
2452
+ list_boards: { method: "GET", path: "/members/me/boards", query: ["key", "token"] },
2453
+ get_board: { method: "GET", path: "/boards/{id}", query: ["key", "token"] },
2454
+ create_board: { method: "POST", path: "/boards", query: ["key", "token", "name"] },
2455
+ get_lists: { method: "GET", path: "/boards/{boardId}/lists", query: ["key", "token"] },
2456
+ create_list: { method: "POST", path: "/lists", query: ["key", "token", "name", "idBoard"] },
2457
+ create_card: { method: "POST", path: "/cards", query: ["key", "token", "name", "idList"] },
2458
+ update_card: { method: "PUT", path: "/cards/{id}", query: ["key", "token"] },
2459
+ delete_card: { method: "DELETE", path: "/cards/{id}", query: ["key", "token"] },
2460
+ get_card: { method: "GET", path: "/cards/{id}", query: ["key", "token"] },
2461
+ list_labels: { method: "GET", path: "/boards/{boardId}/labels", query: ["key", "token"] },
2462
+ },
2463
+ authHeader: () => ({}),
2464
+ },
2465
+
2466
+ // ── Typeform ────────────────────────────────────────────
2467
+ typeform: {
2468
+ name: "Typeform",
2469
+ type: "forms",
2470
+ description: "Interactive forms — create forms, collect responses, webhooks",
2471
+ baseUrl: "https://api.typeform.com",
2472
+ authType: "api_key",
2473
+ credentialKeys: ["accessToken"],
2474
+ capabilities: [
2475
+ { name: "manage_forms", actions: ["list", "get", "create"], description: "Manage forms" },
2476
+ { name: "manage_responses", actions: ["list"], description: "Get form responses" },
2477
+ { name: "manage_webhooks", actions: ["create", "list"], description: "Manage form webhooks" },
2478
+ ],
2479
+ endpoints: {
2480
+ list_forms: { method: "GET", path: "/forms", query: ["page", "page_size", "search"] },
2481
+ get_form: { method: "GET", path: "/forms/{form_id}" },
2482
+ create_form: { method: "POST", path: "/forms", body: { title: "", fields: [] } },
2483
+ list_responses: { method: "GET", path: "/forms/{form_id}/responses", query: ["page_size", "since", "until"] },
2484
+ create_webhook: { method: "PUT", path: "/forms/{form_id}/webhooks/{tag}", body: { url: "", enabled: true } },
2485
+ list_webhooks: { method: "GET", path: "/forms/{form_id}/webhooks" },
2486
+ list_workspaces: { method: "GET", path: "/workspaces" },
2487
+ },
2488
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.accessToken}`, "Content-Type": "application/json" }),
2489
+ },
2490
+
2491
+ // ── DocuSign ────────────────────────────────────────────
2492
+ docusign: {
2493
+ name: "DocuSign",
2494
+ type: "productivity",
2495
+ description: "E-signatures — envelopes, templates, recipients, signing workflows",
2496
+ baseUrl: "https://demo.docusign.net/restapi/v2.1",
2497
+ authType: "oauth",
2498
+ credentialKeys: ["accessToken", "accountId"],
2499
+ capabilities: [
2500
+ { name: "manage_envelopes", actions: ["create", "get", "list", "send"], description: "Create and send documents for signing" },
2501
+ { name: "manage_templates", actions: ["list", "get"], description: "Manage document templates" },
2502
+ ],
2503
+ endpoints: {
2504
+ create_envelope: { method: "POST", path: "/accounts/{accountId}/envelopes", body: { emailSubject: "", documents: [], recipients: {}, status: "sent" } },
2505
+ get_envelope: { method: "GET", path: "/accounts/{accountId}/envelopes/{envelopeId}" },
2506
+ list_envelopes: { method: "GET", path: "/accounts/{accountId}/envelopes", query: ["from_date", "status"] },
2507
+ list_recipients: { method: "GET", path: "/accounts/{accountId}/envelopes/{envelopeId}/recipients" },
2508
+ list_templates: { method: "GET", path: "/accounts/{accountId}/templates" },
2509
+ get_template: { method: "GET", path: "/accounts/{accountId}/templates/{templateId}" },
2510
+ },
2511
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.accessToken}`, "Content-Type": "application/json" }),
2512
+ },
2513
+
2514
+ // ── Xero ────────────────────────────────────────────────
2515
+ xero: {
2516
+ name: "Xero",
2517
+ type: "accounting",
2518
+ description: "Cloud accounting — invoices, contacts, payments, bank reconciliation, reports",
2519
+ baseUrl: "https://api.xero.com/api.xro/2.0",
2520
+ authType: "oauth",
2521
+ credentialKeys: ["accessToken", "tenantId"],
2522
+ capabilities: [
2523
+ { name: "manage_invoices", actions: ["create", "list", "get"], description: "Manage invoices" },
2524
+ { name: "manage_contacts", actions: ["create", "list", "get"], description: "Manage accounting contacts" },
2525
+ { name: "manage_payments", actions: ["create", "list"], description: "Record payments" },
2526
+ ],
2527
+ endpoints: {
2528
+ list_invoices: { method: "GET", path: "/Invoices" },
2529
+ create_invoice: { method: "POST", path: "/Invoices", body: { Type: "ACCREC", Contact: {}, LineItems: [] } },
2530
+ get_invoice: { method: "GET", path: "/Invoices/{InvoiceID}" },
2531
+ list_contacts: { method: "GET", path: "/Contacts" },
2532
+ create_contact: { method: "POST", path: "/Contacts", body: { Name: "", EmailAddress: "" } },
2533
+ list_payments: { method: "GET", path: "/Payments" },
2534
+ create_payment: { method: "PUT", path: "/Payments", body: { Invoice: {}, Account: {}, Amount: 0 } },
2535
+ list_accounts: { method: "GET", path: "/Accounts" },
2536
+ get_organisation: { method: "GET", path: "/Organisation" },
2537
+ },
2538
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.accessToken}`, "xero-tenant-id": creds.tenantId, "Content-Type": "application/json" }),
2539
+ },
2540
+
2541
+ // ── Freshdesk ───────────────────────────────────────────
2542
+ freshdesk: {
2543
+ name: "Freshdesk",
2544
+ type: "support",
2545
+ description: "Help desk — tickets, contacts, agents, groups, automations",
2546
+ baseUrl: "https://{domain}.freshdesk.com/api/v2",
2547
+ authType: "api_key",
2548
+ credentialKeys: ["apiKey", "domain"],
2549
+ capabilities: [
2550
+ { name: "manage_tickets", actions: ["create", "update", "list", "get"], description: "Manage support tickets" },
2551
+ { name: "manage_contacts", actions: ["create", "list", "get"], description: "Manage contacts" },
2552
+ ],
2553
+ endpoints: {
2554
+ list_tickets: { method: "GET", path: "/tickets", query: ["per_page", "page", "filter"] },
2555
+ create_ticket: { method: "POST", path: "/tickets", body: { subject: "", description: "", email: "", priority: 1, status: 2 } },
2556
+ update_ticket: { method: "PUT", path: "/tickets/{id}", body: {} },
2557
+ get_ticket: { method: "GET", path: "/tickets/{id}" },
2558
+ list_contacts: { method: "GET", path: "/contacts", query: ["per_page", "page"] },
2559
+ create_contact: { method: "POST", path: "/contacts", body: { name: "", email: "" } },
2560
+ get_contact: { method: "GET", path: "/contacts/{id}" },
2561
+ list_agents: { method: "GET", path: "/agents" },
2562
+ },
2563
+ authHeader: (creds) => ({ "Authorization": "Basic " + Buffer.from(creds.apiKey + ":X").toString("base64"), "Content-Type": "application/json" }),
2564
+ },
2565
+
2566
+ // ── WooCommerce ─────────────────────────────────────────
2567
+ woocommerce: {
2568
+ name: "WooCommerce",
2569
+ type: "ecommerce",
2570
+ description: "WordPress e-commerce — products, orders, customers, coupons, reports",
2571
+ baseUrl: "https://{siteUrl}/wp-json/wc/v3",
2572
+ authType: "basic",
2573
+ credentialKeys: ["siteUrl", "consumerKey", "consumerSecret"],
2574
+ capabilities: [
2575
+ { name: "manage_products", actions: ["create", "update", "list", "delete"], description: "Manage products" },
2576
+ { name: "manage_orders", actions: ["create", "update", "list"], description: "Manage orders" },
2577
+ { name: "manage_customers", actions: ["create", "list", "get"], description: "Manage customers" },
2578
+ { name: "manage_coupons", actions: ["create", "list"], description: "Manage coupons" },
2579
+ ],
2580
+ endpoints: {
2581
+ list_products: { method: "GET", path: "/products", query: ["per_page", "page", "search", "status"] },
2582
+ create_product: { method: "POST", path: "/products", body: { name: "", type: "simple", regular_price: "" } },
2583
+ update_product: { method: "PUT", path: "/products/{id}", body: {} },
2584
+ get_product: { method: "GET", path: "/products/{id}" },
2585
+ list_orders: { method: "GET", path: "/orders", query: ["per_page", "page", "status"] },
2586
+ create_order: { method: "POST", path: "/orders", body: { line_items: [] } },
2587
+ update_order: { method: "PUT", path: "/orders/{id}", body: {} },
2588
+ list_customers: { method: "GET", path: "/customers", query: ["per_page", "page", "search"] },
2589
+ create_customer: { method: "POST", path: "/customers", body: { email: "", first_name: "", last_name: "" } },
2590
+ list_coupons: { method: "GET", path: "/coupons" },
2591
+ create_coupon: { method: "POST", path: "/coupons", body: { code: "", amount: "", discount_type: "percent" } },
2592
+ get_reports: { method: "GET", path: "/reports/sales", query: ["period"] },
2593
+ },
2594
+ authHeader: (creds) => ({ "Authorization": "Basic " + Buffer.from(creds.consumerKey + ":" + creds.consumerSecret).toString("base64"), "Content-Type": "application/json" }),
2595
+ },
2596
+
2597
+ // ── YouTube ─────────────────────────────────────────────
2598
+ youtube: {
2599
+ name: "YouTube",
2600
+ type: "social_media",
2601
+ description: "Video platform — channels, videos, playlists, comments, analytics",
2602
+ baseUrl: "https://www.googleapis.com/youtube/v3",
2603
+ authType: "oauth",
2604
+ credentialKeys: ["accessToken", "apiKey"],
2605
+ capabilities: [
2606
+ { name: "manage_videos", actions: ["list", "search"], description: "Search and list videos" },
2607
+ { name: "manage_channels", actions: ["list"], description: "Get channel information" },
2608
+ { name: "manage_playlists", actions: ["list", "create"], description: "Manage playlists" },
2609
+ { name: "manage_comments", actions: ["list"], description: "List video comments" },
2610
+ ],
2611
+ endpoints: {
2612
+ search: { method: "GET", path: "/search", query: ["q", "type", "part", "maxResults", "order", "key"] },
2613
+ list_videos: { method: "GET", path: "/videos", query: ["id", "part", "chart", "maxResults", "key"] },
2614
+ list_channels: { method: "GET", path: "/channels", query: ["id", "part", "mine", "key"] },
2615
+ list_playlists: { method: "GET", path: "/playlists", query: ["channelId", "part", "maxResults", "key"] },
2616
+ list_playlist_items:{ method: "GET", path: "/playlistItems", query: ["playlistId", "part", "maxResults", "key"] },
2617
+ list_comments: { method: "GET", path: "/commentThreads", query: ["videoId", "part", "maxResults", "key"] },
2618
+ },
2619
+ authHeader: (creds) => creds.accessToken ? { "Authorization": `Bearer ${creds.accessToken}` } : {},
2620
+ },
2621
+
2622
+ // ── Netlify ─────────────────────────────────────────────
2623
+ netlify: {
2624
+ name: "Netlify",
2625
+ type: "cloud",
2626
+ description: "Web deployment — sites, deploys, forms, functions, DNS",
2627
+ baseUrl: "https://api.netlify.com/api/v1",
2628
+ authType: "api_key",
2629
+ credentialKeys: ["accessToken"],
2630
+ capabilities: [
2631
+ { name: "manage_sites", actions: ["list", "get", "create"], description: "Manage sites" },
2632
+ { name: "manage_deploys", actions: ["list", "create"], description: "Manage deployments" },
2633
+ { name: "manage_forms", actions: ["list"], description: "Get form submissions" },
2634
+ ],
2635
+ endpoints: {
2636
+ list_sites: { method: "GET", path: "/sites" },
2637
+ get_site: { method: "GET", path: "/sites/{site_id}" },
2638
+ create_site: { method: "POST", path: "/sites", body: { name: "" } },
2639
+ list_deploys: { method: "GET", path: "/sites/{site_id}/deploys" },
2640
+ get_deploy: { method: "GET", path: "/deploys/{deploy_id}" },
2641
+ list_forms: { method: "GET", path: "/sites/{site_id}/forms" },
2642
+ list_form_submissions: { method: "GET", path: "/forms/{form_id}/submissions" },
2643
+ list_dns_zones: { method: "GET", path: "/dns_zones" },
2644
+ get_account: { method: "GET", path: "/accounts" },
2645
+ },
2646
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.accessToken}` }),
2647
+ },
2648
+
2649
+ // ── Cloudflare (already exists but ensure it's comprehensive) ──
2650
+
2651
+ // ── Pinterest ───────────────────────────────────────────
2652
+ pinterest: {
2653
+ name: "Pinterest",
2654
+ type: "social_media",
2655
+ description: "Visual discovery — pins, boards, ads, analytics",
2656
+ baseUrl: "https://api.pinterest.com/v5",
2657
+ authType: "oauth",
2658
+ credentialKeys: ["accessToken"],
2659
+ capabilities: [
2660
+ { name: "manage_pins", actions: ["create", "list", "get"], description: "Manage pins" },
2661
+ { name: "manage_boards", actions: ["create", "list"], description: "Manage boards" },
2662
+ { name: "analytics", actions: ["get"], description: "Get account analytics" },
2663
+ ],
2664
+ endpoints: {
2665
+ create_pin: { method: "POST", path: "/pins", body: { board_id: "", title: "", description: "", media_source: {} } },
2666
+ list_pins: { method: "GET", path: "/pins", query: ["bookmark", "page_size"] },
2667
+ get_pin: { method: "GET", path: "/pins/{pin_id}" },
2668
+ list_boards: { method: "GET", path: "/boards", query: ["bookmark", "page_size"] },
2669
+ create_board: { method: "POST", path: "/boards", body: { name: "", description: "" } },
2670
+ get_user_account: { method: "GET", path: "/user_account" },
2671
+ get_analytics: { method: "GET", path: "/user_account/analytics", query: ["start_date", "end_date", "metric_types"] },
2672
+ },
2673
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.accessToken}`, "Content-Type": "application/json" }),
2674
+ },
2675
+
2676
+ // ── BigCommerce ──────────────────────────────────────────
2677
+ bigcommerce: {
2678
+ name: "BigCommerce", type: "ecommerce",
2679
+ description: "E-commerce platform — products, orders, customers, categories",
2680
+ baseUrl: "https://api.bigcommerce.com/stores/{store_hash}/v3",
2681
+ authType: "api_key", credentialKeys: ["accessToken", "storeHash"],
2682
+ capabilities: [
2683
+ { name: "manage_products", actions: ["create", "list", "get"], description: "Manage products" },
2684
+ { name: "manage_orders", actions: ["list", "get"], description: "Manage orders" },
2685
+ { name: "manage_customers", actions: ["create", "list"], description: "Manage customers" },
2686
+ ],
2687
+ endpoints: {
2688
+ list_products: { method: "GET", path: "/catalog/products", query: ["page", "limit"] },
2689
+ create_product: { method: "POST", path: "/catalog/products", body: { name: "", type: "physical", weight: 0, price: 0 } },
2690
+ get_product: { method: "GET", path: "/catalog/products/{product_id}" },
2691
+ list_orders: { method: "GET", path: "/orders", query: ["page", "limit"] },
2692
+ get_order: { method: "GET", path: "/orders/{order_id}" },
2693
+ list_customers: { method: "GET", path: "/customers", query: ["page", "limit"] },
2694
+ create_customer:{ method: "POST", path: "/customers", body: [{ email: "", first_name: "", last_name: "" }] },
2695
+ list_categories:{ method: "GET", path: "/catalog/categories" },
2696
+ },
2697
+ authHeader: (creds) => ({ "X-Auth-Token": creds.accessToken, "Content-Type": "application/json" }),
2698
+ },
2699
+
2700
+ // ── Twitch ──────────────────────────────────────────────
2701
+ twitch: {
2702
+ name: "Twitch", type: "social_media",
2703
+ description: "Live streaming — streams, users, channels, clips, chat",
2704
+ baseUrl: "https://api.twitch.tv/helix",
2705
+ authType: "oauth", credentialKeys: ["accessToken", "clientId"],
2706
+ capabilities: [
2707
+ { name: "manage_streams", actions: ["list"], description: "Get stream info" },
2708
+ { name: "manage_users", actions: ["get", "search"], description: "Get user data" },
2709
+ { name: "manage_clips", actions: ["list", "create"], description: "Manage clips" },
2710
+ ],
2711
+ endpoints: {
2712
+ get_streams: { method: "GET", path: "/streams", query: ["user_id", "user_login", "game_id", "first"] },
2713
+ get_users: { method: "GET", path: "/users", query: ["id", "login"] },
2714
+ search_channels: { method: "GET", path: "/search/channels", query: ["query", "first"] },
2715
+ get_clips: { method: "GET", path: "/clips", query: ["broadcaster_id", "id", "first"] },
2716
+ create_clip: { method: "POST", path: "/clips", query: ["broadcaster_id"] },
2717
+ get_channel_info: { method: "GET", path: "/channels", query: ["broadcaster_id"] },
2718
+ get_top_games: { method: "GET", path: "/games/top", query: ["first"] },
2719
+ },
2720
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.accessToken}`, "Client-Id": creds.clientId }),
2721
+ },
2722
+
2723
+ // ── Wave ────────────────────────────────────────────────
2724
+ wave: {
2725
+ name: "Wave", type: "accounting",
2726
+ description: "Free accounting — invoicing, payments, expenses via GraphQL",
2727
+ baseUrl: "https://gql.waveapps.com/graphql/public",
2728
+ authType: "oauth", credentialKeys: ["accessToken"],
2729
+ capabilities: [
2730
+ { name: "manage_invoices", actions: ["create", "list"], description: "Manage invoices" },
2731
+ { name: "manage_customers", actions: ["create", "list"], description: "Manage customers" },
2732
+ ],
2733
+ endpoints: {
2734
+ graphql: { method: "POST", path: "/", body: { query: "" } },
2735
+ },
2736
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.accessToken}`, "Content-Type": "application/json" }),
2737
+ },
2738
+
2739
+ // ── Loom ────────────────────────────────────────────────
2740
+ loom: {
2741
+ name: "Loom", type: "productivity",
2742
+ description: "Video messaging — recordings, transcripts, workspace",
2743
+ baseUrl: "https://developer.loom.com",
2744
+ authType: "api_key", credentialKeys: ["accessToken"],
2745
+ capabilities: [
2746
+ { name: "manage_videos", actions: ["list", "get", "delete"], description: "Manage recordings" },
2747
+ ],
2748
+ endpoints: {
2749
+ list_videos: { method: "POST", path: "/v1/videos", body: {} },
2750
+ get_video: { method: "GET", path: "/v1/videos/{id}" },
2751
+ delete_video: { method: "DELETE", path: "/v1/videos/{id}" },
2752
+ get_video_transcript:{ method: "GET", path: "/v1/videos/{id}/transcript" },
2753
+ },
2754
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.accessToken}`, "Content-Type": "application/json" }),
2755
+ },
2756
+
2757
+ // ── Google Cloud ────────────────────────────────────────
2758
+ gcloud: {
2759
+ name: "Google Cloud", type: "cloud",
2760
+ description: "GCP — Cloud Storage, Compute Engine, BigQuery",
2761
+ baseUrl: "https://storage.googleapis.com/storage/v1",
2762
+ authType: "oauth", credentialKeys: ["accessToken", "projectId"],
2763
+ capabilities: [
2764
+ { name: "manage_storage", actions: ["list_buckets", "list_objects"], description: "Cloud Storage" },
2765
+ ],
2766
+ endpoints: {
2767
+ list_buckets: { method: "GET", path: "/b", query: ["project"] },
2768
+ get_bucket: { method: "GET", path: "/b/{bucket}" },
2769
+ list_objects: { method: "GET", path: "/b/{bucket}/o", query: ["prefix", "maxResults"] },
2770
+ get_object: { method: "GET", path: "/b/{bucket}/o/{object}" },
2771
+ delete_object: { method: "DELETE", path: "/b/{bucket}/o/{object}" },
2772
+ },
2773
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.accessToken}` }),
2774
+ },
2775
+
2776
+ // ── Neon ────────────────────────────────────────────────
2777
+ neon: {
2778
+ name: "Neon", type: "database",
2779
+ description: "Serverless Postgres — projects, branches, databases, endpoints",
2780
+ baseUrl: "https://console.neon.tech/api/v2",
2781
+ authType: "api_key", credentialKeys: ["apiKey"],
2782
+ capabilities: [
2783
+ { name: "manage_projects", actions: ["create", "list", "delete"], description: "Manage projects" },
2784
+ { name: "manage_branches", actions: ["create", "list"], description: "Manage branches" },
2785
+ ],
2786
+ endpoints: {
2787
+ list_projects: { method: "GET", path: "/projects" },
2788
+ create_project: { method: "POST", path: "/projects", body: { project: { name: "" } } },
2789
+ get_project: { method: "GET", path: "/projects/{project_id}" },
2790
+ delete_project: { method: "DELETE", path: "/projects/{project_id}" },
2791
+ list_branches: { method: "GET", path: "/projects/{project_id}/branches" },
2792
+ create_branch: { method: "POST", path: "/projects/{project_id}/branches", body: {} },
2793
+ list_databases: { method: "GET", path: "/projects/{project_id}/branches/{branch_id}/databases" },
2794
+ list_endpoints: { method: "GET", path: "/projects/{project_id}/endpoints" },
2795
+ },
2796
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.apiKey}`, "Content-Type": "application/json" }),
2797
+ },
2798
+
2799
+ // ── PlanetScale ─────────────────────────────────────────
2800
+ planetscale: {
2801
+ name: "PlanetScale", type: "database",
2802
+ description: "Serverless MySQL — databases, branches, deploy requests",
2803
+ baseUrl: "https://api.planetscale.com/v1",
2804
+ authType: "oauth", credentialKeys: ["accessToken", "organizationId"],
2805
+ capabilities: [
2806
+ { name: "manage_databases", actions: ["create", "list", "delete"], description: "Manage databases" },
2807
+ { name: "manage_branches", actions: ["create", "list"], description: "Manage branches" },
2808
+ ],
2809
+ endpoints: {
2810
+ list_databases: { method: "GET", path: "/organizations/{organization}/databases" },
2811
+ create_database: { method: "POST", path: "/organizations/{organization}/databases", body: { name: "" } },
2812
+ get_database: { method: "GET", path: "/organizations/{organization}/databases/{database}" },
2813
+ delete_database: { method: "DELETE", path: "/organizations/{organization}/databases/{database}" },
2814
+ list_branches: { method: "GET", path: "/organizations/{organization}/databases/{database}/branches" },
2815
+ create_branch: { method: "POST", path: "/organizations/{organization}/databases/{database}/branches", body: { name: "" } },
2816
+ list_deploy_requests: { method: "GET", path: "/organizations/{organization}/databases/{database}/deploy-requests" },
2817
+ },
2818
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.accessToken}`, "Content-Type": "application/json" }),
2819
+ },
2820
+
2821
+ // ── Turso ───────────────────────────────────────────────
2822
+ turso: {
2823
+ name: "Turso", type: "database",
2824
+ description: "Edge SQLite — databases, groups, locations, tokens",
2825
+ baseUrl: "https://api.turso.tech/v1",
2826
+ authType: "api_key", credentialKeys: ["apiToken", "organizationName"],
2827
+ capabilities: [
2828
+ { name: "manage_databases", actions: ["create", "list", "delete"], description: "Manage databases" },
2829
+ { name: "manage_groups", actions: ["create", "list"], description: "Manage groups" },
2830
+ ],
2831
+ endpoints: {
2832
+ list_databases: { method: "GET", path: "/organizations/{organizationName}/databases" },
2833
+ create_database: { method: "POST", path: "/organizations/{organizationName}/databases", body: { name: "", group: "default" } },
2834
+ get_database: { method: "GET", path: "/organizations/{organizationName}/databases/{databaseName}" },
2835
+ delete_database: { method: "DELETE", path: "/organizations/{organizationName}/databases/{databaseName}" },
2836
+ list_groups: { method: "GET", path: "/organizations/{organizationName}/groups" },
2837
+ create_group: { method: "POST", path: "/organizations/{organizationName}/groups", body: { name: "", location: "ord" } },
2838
+ list_locations: { method: "GET", path: "/organizations/{organizationName}/locations" },
2839
+ create_token: { method: "POST", path: "/organizations/{organizationName}/databases/{databaseName}/auth/tokens" },
2840
+ },
2841
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.apiToken}`, "Content-Type": "application/json" }),
2842
+ },
2843
+
2844
+ // ── CockroachDB ─────────────────────────────────────────
2845
+ cockroachdb: {
2846
+ name: "CockroachDB", type: "database",
2847
+ description: "Distributed SQL — clusters, databases, SQL users, backups",
2848
+ baseUrl: "https://cockroachlabs.cloud/api/v1",
2849
+ authType: "api_key", credentialKeys: ["apiKey"],
2850
+ capabilities: [
2851
+ { name: "manage_clusters", actions: ["create", "list", "get"], description: "Manage clusters" },
2852
+ ],
2853
+ endpoints: {
2854
+ list_clusters: { method: "GET", path: "/clusters" },
2855
+ create_cluster: { method: "POST", path: "/clusters", body: { name: "", provider: "GCP", spec: {} } },
2856
+ get_cluster: { method: "GET", path: "/clusters/{cluster_id}" },
2857
+ delete_cluster: { method: "DELETE", path: "/clusters/{cluster_id}" },
2858
+ list_sql_users: { method: "GET", path: "/clusters/{cluster_id}/sql-users" },
2859
+ create_sql_user: { method: "POST", path: "/clusters/{cluster_id}/sql-users", body: { name: "", password: "" } },
2860
+ list_databases: { method: "GET", path: "/clusters/{cluster_id}/databases" },
2861
+ },
2862
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.apiKey}`, "Content-Type": "application/json" }),
2863
+ },
2864
+
2865
+ // ── Railway ─────────────────────────────────────────────
2866
+ railway: {
2867
+ name: "Railway", type: "cloud",
2868
+ description: "Deploy anything — projects, services, environments via GraphQL",
2869
+ baseUrl: "https://backboard.railway.app/graphql/v2",
2870
+ authType: "api_key", credentialKeys: ["apiToken"],
2871
+ capabilities: [
2872
+ { name: "manage_projects", actions: ["create", "list"], description: "Manage projects" },
2873
+ ],
2874
+ endpoints: {
2875
+ graphql: { method: "POST", path: "/", body: { query: "" } },
2876
+ },
2877
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.apiToken}`, "Content-Type": "application/json" }),
2878
+ },
2879
+
2880
+ // ── Render ──────────────────────────────────────────────
2881
+ render: {
2882
+ name: "Render", type: "cloud",
2883
+ description: "Cloud platform — web services, static sites, databases, cron jobs",
2884
+ baseUrl: "https://api.render.com/v1",
2885
+ authType: "api_key", credentialKeys: ["apiKey"],
2886
+ capabilities: [
2887
+ { name: "manage_services", actions: ["create", "list", "get"], description: "Manage services" },
2888
+ { name: "manage_deploys", actions: ["list", "create"], description: "Manage deploys" },
2889
+ ],
2890
+ endpoints: {
2891
+ list_services: { method: "GET", path: "/services", query: ["limit", "cursor", "type"] },
2892
+ get_service: { method: "GET", path: "/services/{serviceId}" },
2893
+ create_service: { method: "POST", path: "/services", body: { type: "web_service", name: "" } },
2894
+ list_deploys: { method: "GET", path: "/services/{serviceId}/deploys", query: ["limit"] },
2895
+ create_deploy: { method: "POST", path: "/services/{serviceId}/deploys", body: {} },
2896
+ get_deploy: { method: "GET", path: "/services/{serviceId}/deploys/{deployId}" },
2897
+ list_env_groups:{ method: "GET", path: "/env-groups" },
2898
+ },
2899
+ authHeader: (creds) => ({ "Authorization": `Bearer ${creds.apiKey}`, "Content-Type": "application/json" }),
2900
+ },
2901
+
1921
2902
  };
1922
2903
 
1923
2904
  // ── Helpers ────────────────────────────────────────────────