{"success":true,"total":39,"connection_guide":{"api_key_services":{"description":"Agent connects autonomously \u2014 NO human action required","method":"POST \/api\/v1\/agents\/{id}\/connections\/store-credentials","example":"{\"service\": \"ahrefs\", \"credentials\": {\"api_key\": \"...\"}}","metadata_example":"{\"service\":\"bing\",\"credentials\":{\"api_key\":\"BING_API_KEY\"},\"metadata\":{\"site_url\":\"https:\/\/example.com\/\"}}","endpoint_warning":"The agent id is required in the path. Do not use \/api\/v1\/store-credentials or guessed endpoint variants.","services":["dataforseo","ahrefs","semrush","google_alerts","microsoft_clarity","bing","openai_ads","twitter","sftp","wordpress","activecampaign","jotform","resend","bluesky","posthog","google_trends","ubersuggest","trustpilot"]},"oauth_services":{"description":"HUMAN LOGIN REQUIRED. Covers Google, Facebook\/Instagram, LinkedIn, TikTok and Microsoft e-mail. The agent CANNOT complete OAuth on its own \u2014 the human owner must open the returned authorization_url in a browser, sign into the provider, and click Allow.","method":"POST \/api\/v1\/agents\/{id}\/connections\/init \u2192 returns authorization_url \u2192 give this URL to the human \u2192 human clicks it and logs in","agent_responsibility":"Output the authorization_url to the user and explicitly tell them: \"Please open this link, log into your <Provider> account, and authorize access.\" Then wait \u2014 do not retry or attempt to log in yourself.","example":"{\"service\": \"ga4\"}  \/\/ agent calls init, then forwards authorization_url to human","services":["ga4","google_tag_manager","gsc","google_ads","google_merchant_center","google_data_manager","google_business","meta_ads","facebook","instagram","linkedin","tiktok","google_calendar","google_drive","google_sheets","google_docs","youtube","google_keyword_planner"]},"webhook_services":{"description":"Agent provides a webhook URL for receiving events","method":"POST \/api\/v1\/agents\/{id}\/connections\/store-credentials","example":"{\"service\": \"webhook\", \"credentials\": {\"url\": \"https:\/\/...\"}}","services":[]}},"by_category":{"seo":{"dataforseo":{"name":"DataForSEO","category":"seo","auth":"api_key","description":"DataForSEO live SEO API \u2014 Google organic SERP snapshots, keyword search volume & CPC, domain ranked-keyword discovery, and backlink profile summaries. Covers competitor research, content planning, and link-building diligence for marketingbot. Estonia (location 2233) and Estonian language default.","credentials_schema":{"login":{"required":true,"description":"DataForSEO account email (used as HTTP Basic Auth username)."},"password":{"required":true,"description":"DataForSEO API password. Generate at app.dataforseo.com\/api-dashboard \u2192 API Access \u2192 \"API password\" (do NOT use your dashboard login password)."}},"credentials_required":["login","password"],"bot":"marketingbot"},"ahrefs":{"name":"Ahrefs","category":"seo","auth":"api_key","description":"Ahrefs research on the owner's own Ahrefs API v3 key \u2014 domain rating, backlinks, referring domains, organic keywords, top pages, organic competitors, keyword metrics, keyword ideas and volume history for any site or keyword. Spends the owner's Ahrefs API units (at least 50 a request, shown in each answer), so lists are capped and start at 10 rows. Needs an eligible paid Ahrefs plan; a workspace owner or admin creates the key. Not Ahrefs' MCP server, which Ahrefs does not allow backends to use: on a plan without API access the owner can add https:\/\/api.ahrefs.com\/mcp\/mcp to their own AI tool instead.","credentials_schema":{"api_key":{"required":true,"description":"Ahrefs API v3 key: app.ahrefs.com \u2192 Account settings \u2192 API keys \u2192 create a key (workspace owner or admin only; set a monthly unit limit on it). Use a regular API key, not an \"MCP key\"."}},"credentials_required":["api_key"],"bot":"marketingbot"},"semrush":{"name":"Semrush","category":"seo","auth":"api_key","description":"Semrush research on the owner's own Semrush API (v3) key \u2014 domain overview, organic keywords, organic competitors and keyword gap per regional database. Spends the owner's Semrush API units (10 to 80 a line, estimated in each answer), so lists are capped and start at 10 lines. The Standard API needs a Business plan with API units; on other plans the owner can add https:\/\/mcp.semrush.com\/v2\/mcp to their own AI tool instead (Semrush's MCP is for named AI clients, not backends).","credentials_schema":{"api_key":{"required":true,"description":"Semrush v3 API key: semrush.com \u2192 your profile \u2192 API keys (also under Subscription info \u2192 API units). It is a key, not an OAuth login."}},"credentials_required":["api_key"],"bot":"marketingbot"},"google_trends":{"name":"Google Trends","category":"seo","auth":"api_key","description":"Search trend analysis \u2014 interest over time, related queries, trending searches. Uses SerpAPI key for reliable access. Works without connection via scraping fallback.","credentials_schema":{"api_key":{"required":true,"description":"SerpAPI key (serpapi.com \u2192 Dashboard \u2192 Your private API key). Google Trends also works without one; the key makes it steadier."}},"credentials_required":["api_key"],"bot":"marketingbot"},"google_keyword_planner":{"name":"Google Keyword Planner","category":"seo","auth":"oauth","description":"Keyword research \u2014 search volumes, competition, CPC estimates, keyword ideas from seeds or URLs. Requires Google Ads connection.","credentials_required":["access_token"],"bot":"marketingbot"},"ubersuggest":{"name":"Ubersuggest","category":"seo","auth":"api_key","description":"Neil Patel SEO tool \u2014 keyword suggestions with volume\/difficulty\/CPC, domain traffic overview, top pages. Works without connection via scraping fallback.","credentials_required":["api_key"],"bot":"marketingbot"}},"analytics":{"google_alerts":{"name":"Google Alerts","category":"analytics","auth":"api_key","description":"Brand mentions, keyword alerts, web monitoring via Google Alerts RSS feeds. No API key needed \u2014 the agent stores RSS feed URLs as metadata. Create alerts at google.com\/alerts with Deliver set to \"RSS feed\", copy the URL(s).","metadata_schema":{"rss_feeds":{"required":true,"description":"Array of Google Alerts RSS feed URLs. Create an alert at google.com\/alerts \u2192 click \"Show options\" \u2192 set Deliver to \"RSS feed\" \u2192 copy the feed URL.","example":["https:\/\/www.google.com\/alerts\/feeds\/01234567890123456789012\/abcdefghijklm"]}},"bot":"marketingbot"},"ga4":{"name":"Google Analytics 4","category":"analytics","auth":"oauth","auth_methods":["oauth","service_account"],"description":"Website traffic, audience insights, conversion tracking, real-time data","config_required":["property_id"],"aliases":["google_analytics"],"bot":"marketingbot"},"google_tag_manager":{"name":"Google Tag Manager","category":"analytics","auth":"oauth","description":"Tags, triggers and variables of a Google Tag Manager container; tag changes go through the approval gate.","config_required":["container_id"],"aliases":["gtm"],"bot":"marketingbot"},"gsc":{"name":"Google Search Console","category":"analytics","auth":"oauth","auth_methods":["oauth","service_account"],"description":"Search performance, keywords, indexing status, crawl errors","config_required":["site_url"],"aliases":["google_search_console"],"bot":"marketingbot"},"microsoft_clarity":{"name":"Microsoft Clarity","category":"analytics","auth":"api_key","description":"Microsoft Clarity session analytics \u2014 sessions, dead clicks, rage clicks, scroll depth, JS errors, quickback clicks. Last 1\u20133 days only (Clarity API limit). Complements GA4 with UX behavior signals.","credentials_schema":{"api_token":{"required":true,"description":"Per-project Clarity API token. Generate at clarity.microsoft.com \u2192 Settings \u2192 Setup \u2192 \"Generate new API token\". This is NOT an Azure AD OAuth token."}},"credentials_required":["api_token"],"metadata_schema":{"project_id":{"required":false,"description":"Clarity project ID (informational only \u2014 the API token is already project-scoped).","example":"abc123def"}},"aliases":["clarity","ms_clarity"],"bot":"marketingbot"},"bing":{"name":"Bing Webmaster Tools","category":"analytics","auth":"api_key","description":"Bing organic search performance \u2014 clicks, impressions, top queries, top pages, crawl & index stats. Complements Google Search Console with Bing\/Microsoft search data.","credentials_schema":{"api_key":{"required":true,"description":"Bing Webmaster API key. Generate at https:\/\/www.bing.com\/webmasters \u2192 Settings \u2192 API Access."}},"credentials_required":["api_key"],"metadata_schema":{"site_url":{"required":true,"description":"Verified site URL in Bing Webmaster Tools (must match exactly, including https:\/\/ and trailing slash).","example":"https:\/\/example.com\/"}},"config_required":["site_url"],"aliases":["bing_webmaster","bing_webmaster_tools"],"bot":"marketingbot"},"google_business":{"name":"Google Business Profile","category":"analytics","auth":"oauth","description":"Local business info, reviews, insights, local SEO metrics, Google Maps presence","config_required":["location_id"],"aliases":["gmb","google_my_business"],"bot":"marketingbot"},"posthog":{"name":"PostHog","category":"analytics","auth":"api_key","description":"Product analytics \u2014 events, persons, insights, feature flags","credentials_schema":{"api_key":{"required":true,"description":"PostHog personal API key: PostHog \u2192 Settings \u2192 Personal API keys \u2192 Create (read access to the project)."},"project_id":{"required":true,"description":"PostHog project ID: Settings \u2192 Project \u2192 Project ID (a number)."},"host":{"required":false,"description":"Only for PostHog EU Cloud or a self-hosted instance: its public https address, e.g. https:\/\/eu.posthog.com. Default: US Cloud."}},"credentials_required":["api_key","project_id"],"bot":"marketingbot"}},"advertising":{"openai_ads":{"name":"OpenAI Ads (ChatGPT)","category":"advertising","auth":"api_key","description":"ChatGPT Ads (beta, read-only) \u2014 account, campaigns, ad groups, ads and performance insights. API key from ads.openai.com > Settings.","credentials_schema":{"api_key":{"required":true,"description":"ChatGPT Ads API key: ads.openai.com \u2192 Settings \u2192 API Keys \u2192 Create New Key. It is shown only once."}},"credentials_required":["api_key"],"aliases":["chatgpt_ads","openai_ads_manager"],"bot":"marketingbot"},"google_ads":{"name":"Google Ads","category":"advertising","auth":"oauth","description":"Campaign management, keywords, bidding, performance metrics","metadata_schema":{"customer_id":{"required":true,"description":"Google Ads account (customer) ID, 10 digits, dashes optional. Pick it from GET \u2026\/connections\/google_ads\/options \u2014 only options with status \"enabled\" can be read.","example":"1234567890"},"login_customer_id":{"required":false,"description":"Manager (MCC) account ID the customer is reached through. Send it when the chosen option carries login_customer_id; omit for a directly accessible account.","example":"9876543210"}},"bot":"marketingbot"},"google_merchant_center":{"name":"Google Merchant Center","category":"advertising","auth":"oauth","description":"Merchant API v1: product status and item-level issues (disapprovals, missing GTIN, price\/availability mismatches), data sources, and approved product-data corrections through a SharksAPI supplemental data source","metadata_schema":{"merchant_id":{"required":true,"description":"Merchant Center account id. Pick it from GET \u2026\/connections\/google_merchant_center\/options.","example":"123456789"}},"config_required":["merchant_id"],"aliases":["merchant_center","google_merchant","gmc"],"bot":"marketingbot"},"google_data_manager":{"name":"Google Data Manager (offline conversions)","category":"advertising","auth":"oauth","description":"Upload CRM outcomes (qualified leads, sales, values) to Google Ads conversion actions \u2014 the Google-required path for offline conversion imports since 15 June 2026. Uses the project's Google Ads account; the signed-in Google user needs access to it.","aliases":["data_manager","google_offline_conversions","offline_conversions"],"bot":"marketingbot"},"meta_ads":{"name":"Meta Ads (Facebook & Instagram)","category":"advertising","auth":"oauth","description":"Ad campaigns, audience targeting, ROI tracking","metadata_schema":{"ad_account_id":{"required":true,"description":"Meta ad account ID (act_NNN). Pick it from GET \u2026\/connections\/meta_ads\/options.","example":"act_1234567890"}},"bot":"marketingbot"}},"social":{"facebook":{"name":"Facebook Pages","category":"social","auth":"oauth","description":"Page management, posts, insights, audience data","aliases":["facebook_page","facebook_pages"],"bot":"marketingbot"},"instagram":{"name":"Instagram","category":"social","auth":"oauth","description":"Posts, stories, reels, insights, audience data","bot":"marketingbot"},"linkedin":{"name":"LinkedIn","category":"social","auth":"oauth","description":"Company pages, posts, analytics, employee advocacy","metadata_schema":{"organization_urn":{"required":false,"description":"Full LinkedIn org URN (urn:li:organization:NNN). Returned by the connections\/{service}\/options endpoint. Server parses the numeric ID and stores all variants.","example":"urn:li:organization:15086507"},"organization_id":{"required":false,"description":"Numeric LinkedIn organization ID. Either organization_urn or organization_id must be provided when configuring this connection.","example":"15086507"}},"bot":"marketingbot"},"twitter":{"name":"Twitter \/ X","category":"social","auth":"api_key","description":"Read-only X with the owner's own X API key (the Bearer Token of their own X developer app; X bills every read to their X account): profile, own recent posts, post lookup and recent search. Posting needs a user login on an X app, which SharksAPI does not run, so an X post goes to the owner as a draft to publish in X.","credentials_schema":{"bearer_token":{"required":true,"description":"Bearer Token of your own X developer app: console.x.com (developer.x.com) \u2192 your app \u2192 Keys and tokens \u2192 Bearer Token. X bills each read to your X developer account, so it needs credits there."},"username":{"required":true,"description":"The X account to read, without @ (for example yourcompany)."}},"credentials_required":["bearer_token","username"],"bot":"marketingbot"},"tiktok":{"name":"TikTok","category":"social","auth":"oauth","description":"Account stats (followers, likes, videos) + own videos with engagement via the Display API; owner authorizes once with TikTok Login Kit","credentials_required":[],"bot":"marketingbot"},"youtube":{"name":"YouTube","category":"social","auth":"oauth","description":"YouTube channel statistics and YouTube Analytics (read-only): subscribers, views, watch time, average view duration, likes, comments, shares, subscribers gained and lost, top videos for a period. Google sign-in with the account that manages the channel.","config_required":["channel_id"],"bot":"marketingbot"},"bluesky":{"name":"Bluesky","category":"social","auth":"api_key","description":"Decentralized social \u2014 posts, feed, notifications, followers","credentials_schema":{"identifier":{"required":true,"description":"Your Bluesky handle (name.bsky.social) or the account e-mail."},"password":{"required":true,"description":"An app password, not your login password: Bluesky \u2192 Settings \u2192 Privacy and security \u2192 App passwords \u2192 Add."}},"credentials_required":["identifier","password"],"bot":"marketingbot"}},"email":{"email":{"name":"Email (SMTP\/IMAP)","category":"email","auth":"interactive_form","description":"Send and receive email via any SMTP\/IMAP server. Use \/connections\/init to get a web form URL for the human owner to fill in credentials.","credentials_required":["smtp_host","smtp_port","smtp_username","smtp_password","smtp_encryption","imap_host","imap_port","imap_username","imap_password","imap_encryption"],"bot":"marketingbot"},"office_email":{"name":"Office Email (SMTP\/IMAP)","category":"email","auth":"interactive_form","description":"Office email sending, scheduling, inbox management via SMTP\/IMAP. Use \/connections\/init to get a web form URL for the human owner to fill in credentials.","credentials_required":["smtp_host","smtp_port","smtp_username","smtp_password","smtp_encryption","imap_host","imap_port","imap_username","imap_password","imap_encryption"],"bot":"managementbot"},"resend":{"name":"Resend","category":"email","auth":"api_key","description":"Developer email API, transactional emails, domains","credentials_schema":{"api_key":{"required":true,"description":"Resend API key: resend.com \u2192 API Keys \u2192 Create API key (Sending access)."}},"credentials_required":["api_key"],"bot":"marketingbot"}},"email_marketing":{"marketing_email":{"name":"Marketing Email (SMTP\/IMAP)","category":"email_marketing","auth":"interactive_form","description":"Marketing email campaigns, scheduling, analytics via SMTP\/IMAP. Use \/connections\/init to get a web form URL for the human owner to fill in credentials.","credentials_required":["smtp_host","smtp_port","smtp_username","smtp_password","smtp_encryption","imap_host","imap_port","imap_username","imap_password","imap_encryption"],"bot":"marketingbot"}},"development":{"sftp":{"name":"Web server (SFTP)","category":"development","auth":"api_key","description":"SFTP access to a WordPress site for the developer agent: list, read and safely change theme and mu-plugin files (backup, PHP lint, health check with automatic rollback). No shell; wp-config.php, .htaccess, uploads and plugins are out of reach. Use \/connections\/init with {\"service\":\"sftp\"} to get a form URL for the human owner \u2014 never ask for these credentials in chat or task notes.","credentials_schema":{"host":{"required":true,"description":"SFTP server host name, e.g. \"ssh.zone.ee\" or the server IP."},"port":{"required":false,"description":"SFTP port, usually 22."},"username":{"required":true,"description":"SFTP \/ SSH user name from the hosting panel."},"password":{"required":false,"description":"SSH password \u2014 or leave empty and paste a private key below (a key is safer)."},"private_key":{"required":false,"description":"Private key (OpenSSH \/ PEM) of a key made only for SharksAPI and added to the hosting account."},"passphrase":{"required":false,"description":"Passphrase of the private key, if it has one."},"root_path":{"required":true,"description":"Absolute path of the WordPress root on the server (the folder that contains wp-content), e.g. \"\/data01\/virt12345\/domeenid\/www.example.ee\/htdocs\"."},"site_url":{"required":true,"description":"Public URL of the site, e.g. \"https:\/\/example.ee\" \u2014 checked after every change, and a broken page rolls the change back."}},"credentials_required":["host","username","root_path","site_url"],"bot":"marketingbot"}},"cms":{"wordpress":{"name":"WordPress","category":"cms","auth":"api_key","description":"Posts, pages, media, categories, tags, SEO, users","credentials_schema":{"site_url":{"required":true,"description":"Full URL of your WordPress site (e.g. \"https:\/\/example.com\")","example":"https:\/\/example.com","accepts_aliases":["url"]},"username":{"required":true,"description":"WordPress admin username."},"application_password":{"required":true,"description":"WordPress Application Password. Generate at Users \u2192 Profile \u2192 Application Passwords.","accepts_aliases":["app_password"]}},"credentials_required":["site_url","username","application_password"],"bot":"marketingbot"}},"marketing_automation":{"activecampaign":{"name":"ActiveCampaign","category":"marketing_automation","auth":"api_key","description":"Email marketing, CRM, sales automation, contacts, deals, campaigns","credentials_schema":{"api_url":{"required":true,"description":"ActiveCampaign API URL: Settings \u2192 Developer \u2192 URL, like https:\/\/youraccount.api-us1.com."},"api_key":{"required":true,"description":"ActiveCampaign API key: the Key on the same Developer page."}},"credentials_required":["api_key","api_url"],"bot":"marketingbot"}},"forms":{"jotform":{"name":"Jotform","category":"forms","auth":"api_key","description":"Online forms \u2014 forms, submissions, questions, integrations","credentials_schema":{"api_key":{"required":true,"description":"Jotform API key: Jotform \u2192 My Account \u2192 API \u2192 Create New Key (Read Access is enough)."}},"credentials_required":["api_key"],"bot":"marketingbot"}},"office":{"google_calendar":{"name":"Google Calendar","category":"office","auth":"oauth","description":"Google Workspace calendar \u2014 list calendars and events, create events, upcoming schedule","aliases":["calendar"],"bot":"marketingbot"},"google_drive":{"name":"Google Drive","category":"office","auth":"oauth","description":"Google Workspace files \u2014 list, search, read, create, update and delete files and folders","aliases":["drive"],"bot":"marketingbot"},"google_sheets":{"name":"Google Sheets","category":"office","auth":"oauth","description":"Google Sheets \u2014 read ranges, write and append values, create spreadsheets","aliases":["sheets"],"bot":"marketingbot"},"google_docs":{"name":"Google Docs","category":"office","auth":"oauth","description":"Google Docs \u2014 read, create and append text to documents","aliases":["docs"],"bot":"marketingbot"}},"reviews":{"trustpilot":{"name":"Trustpilot","category":"reviews","auth":"api_key","description":"Review platform \u2014 find business by domain, read reviews, get TrustScore, reply to reviews. Essential for local SEO and reputation management.","credentials_schema":{"api_key":{"required":true,"description":"Trustpilot API key: Trustpilot Business \u2192 Integrations \u2192 API \u2192 your application (needs a plan with API access)."},"api_secret":{"required":true,"description":"The API secret shown next to that key."}},"credentials_required":["api_key","api_secret"],"bot":"marketingbot"}}},"all_integrations":{"dataforseo":{"name":"DataForSEO","category":"seo","auth":"api_key","description":"DataForSEO live SEO API \u2014 Google organic SERP snapshots, keyword search volume & CPC, domain ranked-keyword discovery, and backlink profile summaries. Covers competitor research, content planning, and link-building diligence for marketingbot. Estonia (location 2233) and Estonian language default.","credentials_schema":{"login":{"required":true,"description":"DataForSEO account email (used as HTTP Basic Auth username)."},"password":{"required":true,"description":"DataForSEO API password. Generate at app.dataforseo.com\/api-dashboard \u2192 API Access \u2192 \"API password\" (do NOT use your dashboard login password)."}},"credentials_required":["login","password"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"ahrefs":{"name":"Ahrefs","category":"seo","auth":"api_key","description":"Ahrefs research on the owner's own Ahrefs API v3 key \u2014 domain rating, backlinks, referring domains, organic keywords, top pages, organic competitors, keyword metrics, keyword ideas and volume history for any site or keyword. Spends the owner's Ahrefs API units (at least 50 a request, shown in each answer), so lists are capped and start at 10 rows. Needs an eligible paid Ahrefs plan; a workspace owner or admin creates the key. Not Ahrefs' MCP server, which Ahrefs does not allow backends to use: on a plan without API access the owner can add https:\/\/api.ahrefs.com\/mcp\/mcp to their own AI tool instead.","credentials_schema":{"api_key":{"required":true,"description":"Ahrefs API v3 key: app.ahrefs.com \u2192 Account settings \u2192 API keys \u2192 create a key (workspace owner or admin only; set a monthly unit limit on it). Use a regular API key, not an \"MCP key\"."}},"credentials_required":["api_key"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"semrush":{"name":"Semrush","category":"seo","auth":"api_key","description":"Semrush research on the owner's own Semrush API (v3) key \u2014 domain overview, organic keywords, organic competitors and keyword gap per regional database. Spends the owner's Semrush API units (10 to 80 a line, estimated in each answer), so lists are capped and start at 10 lines. The Standard API needs a Business plan with API units; on other plans the owner can add https:\/\/mcp.semrush.com\/v2\/mcp to their own AI tool instead (Semrush's MCP is for named AI clients, not backends).","credentials_schema":{"api_key":{"required":true,"description":"Semrush v3 API key: semrush.com \u2192 your profile \u2192 API keys (also under Subscription info \u2192 API units). It is a key, not an OAuth login."}},"credentials_required":["api_key"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"google_alerts":{"name":"Google Alerts","category":"analytics","auth":"api_key","description":"Brand mentions, keyword alerts, web monitoring via Google Alerts RSS feeds. No API key needed \u2014 the agent stores RSS feed URLs as metadata. Create alerts at google.com\/alerts with Deliver set to \"RSS feed\", copy the URL(s).","metadata_schema":{"rss_feeds":{"required":true,"description":"Array of Google Alerts RSS feed URLs. Create an alert at google.com\/alerts \u2192 click \"Show options\" \u2192 set Deliver to \"RSS feed\" \u2192 copy the feed URL.","example":["https:\/\/www.google.com\/alerts\/feeds\/01234567890123456789012\/abcdefghijklm"]}},"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"ga4":{"name":"Google Analytics 4","category":"analytics","auth":"oauth","auth_methods":["oauth","service_account"],"description":"Website traffic, audience insights, conversion tracking, real-time data","config_required":["property_id"],"aliases":["google_analytics"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"google_tag_manager":{"name":"Google Tag Manager","category":"analytics","auth":"oauth","description":"Tags, triggers and variables of a Google Tag Manager container; tag changes go through the approval gate.","config_required":["container_id"],"aliases":["gtm"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"gsc":{"name":"Google Search Console","category":"analytics","auth":"oauth","auth_methods":["oauth","service_account"],"description":"Search performance, keywords, indexing status, crawl errors","config_required":["site_url"],"aliases":["google_search_console"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"microsoft_clarity":{"name":"Microsoft Clarity","category":"analytics","auth":"api_key","description":"Microsoft Clarity session analytics \u2014 sessions, dead clicks, rage clicks, scroll depth, JS errors, quickback clicks. Last 1\u20133 days only (Clarity API limit). Complements GA4 with UX behavior signals.","credentials_schema":{"api_token":{"required":true,"description":"Per-project Clarity API token. Generate at clarity.microsoft.com \u2192 Settings \u2192 Setup \u2192 \"Generate new API token\". This is NOT an Azure AD OAuth token."}},"credentials_required":["api_token"],"metadata_schema":{"project_id":{"required":false,"description":"Clarity project ID (informational only \u2014 the API token is already project-scoped).","example":"abc123def"}},"aliases":["clarity","ms_clarity"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"bing":{"name":"Bing Webmaster Tools","category":"analytics","auth":"api_key","description":"Bing organic search performance \u2014 clicks, impressions, top queries, top pages, crawl & index stats. Complements Google Search Console with Bing\/Microsoft search data.","credentials_schema":{"api_key":{"required":true,"description":"Bing Webmaster API key. Generate at https:\/\/www.bing.com\/webmasters \u2192 Settings \u2192 API Access."}},"credentials_required":["api_key"],"metadata_schema":{"site_url":{"required":true,"description":"Verified site URL in Bing Webmaster Tools (must match exactly, including https:\/\/ and trailing slash).","example":"https:\/\/example.com\/"}},"config_required":["site_url"],"aliases":["bing_webmaster","bing_webmaster_tools"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"openai_ads":{"name":"OpenAI Ads (ChatGPT)","category":"advertising","auth":"api_key","description":"ChatGPT Ads (beta, read-only) \u2014 account, campaigns, ad groups, ads and performance insights. API key from ads.openai.com > Settings.","credentials_schema":{"api_key":{"required":true,"description":"ChatGPT Ads API key: ads.openai.com \u2192 Settings \u2192 API Keys \u2192 Create New Key. It is shown only once."}},"credentials_required":["api_key"],"aliases":["chatgpt_ads","openai_ads_manager"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"google_ads":{"name":"Google Ads","category":"advertising","auth":"oauth","description":"Campaign management, keywords, bidding, performance metrics","metadata_schema":{"customer_id":{"required":true,"description":"Google Ads account (customer) ID, 10 digits, dashes optional. Pick it from GET \u2026\/connections\/google_ads\/options \u2014 only options with status \"enabled\" can be read.","example":"1234567890"},"login_customer_id":{"required":false,"description":"Manager (MCC) account ID the customer is reached through. Send it when the chosen option carries login_customer_id; omit for a directly accessible account.","example":"9876543210"}},"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"google_merchant_center":{"name":"Google Merchant Center","category":"advertising","auth":"oauth","description":"Merchant API v1: product status and item-level issues (disapprovals, missing GTIN, price\/availability mismatches), data sources, and approved product-data corrections through a SharksAPI supplemental data source","metadata_schema":{"merchant_id":{"required":true,"description":"Merchant Center account id. Pick it from GET \u2026\/connections\/google_merchant_center\/options.","example":"123456789"}},"config_required":["merchant_id"],"aliases":["merchant_center","google_merchant","gmc"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"google_data_manager":{"name":"Google Data Manager (offline conversions)","category":"advertising","auth":"oauth","description":"Upload CRM outcomes (qualified leads, sales, values) to Google Ads conversion actions \u2014 the Google-required path for offline conversion imports since 15 June 2026. Uses the project's Google Ads account; the signed-in Google user needs access to it.","aliases":["data_manager","google_offline_conversions","offline_conversions"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"google_business":{"name":"Google Business Profile","category":"analytics","auth":"oauth","description":"Local business info, reviews, insights, local SEO metrics, Google Maps presence","config_required":["location_id"],"aliases":["gmb","google_my_business"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"meta_ads":{"name":"Meta Ads (Facebook & Instagram)","category":"advertising","auth":"oauth","description":"Ad campaigns, audience targeting, ROI tracking","metadata_schema":{"ad_account_id":{"required":true,"description":"Meta ad account ID (act_NNN). Pick it from GET \u2026\/connections\/meta_ads\/options.","example":"act_1234567890"}},"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"facebook":{"name":"Facebook Pages","category":"social","auth":"oauth","description":"Page management, posts, insights, audience data","aliases":["facebook_page","facebook_pages"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"instagram":{"name":"Instagram","category":"social","auth":"oauth","description":"Posts, stories, reels, insights, audience data","bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"linkedin":{"name":"LinkedIn","category":"social","auth":"oauth","description":"Company pages, posts, analytics, employee advocacy","metadata_schema":{"organization_urn":{"required":false,"description":"Full LinkedIn org URN (urn:li:organization:NNN). Returned by the connections\/{service}\/options endpoint. Server parses the numeric ID and stores all variants.","example":"urn:li:organization:15086507"},"organization_id":{"required":false,"description":"Numeric LinkedIn organization ID. Either organization_urn or organization_id must be provided when configuring this connection.","example":"15086507"}},"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"twitter":{"name":"Twitter \/ X","category":"social","auth":"api_key","description":"Read-only X with the owner's own X API key (the Bearer Token of their own X developer app; X bills every read to their X account): profile, own recent posts, post lookup and recent search. Posting needs a user login on an X app, which SharksAPI does not run, so an X post goes to the owner as a draft to publish in X.","credentials_schema":{"bearer_token":{"required":true,"description":"Bearer Token of your own X developer app: console.x.com (developer.x.com) \u2192 your app \u2192 Keys and tokens \u2192 Bearer Token. X bills each read to your X developer account, so it needs credits there."},"username":{"required":true,"description":"The X account to read, without @ (for example yourcompany)."}},"credentials_required":["bearer_token","username"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"tiktok":{"name":"TikTok","category":"social","auth":"oauth","description":"Account stats (followers, likes, videos) + own videos with engagement via the Display API; owner authorizes once with TikTok Login Kit","credentials_required":[],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"email":{"name":"Email (SMTP\/IMAP)","category":"email","auth":"interactive_form","description":"Send and receive email via any SMTP\/IMAP server. Use \/connections\/init to get a web form URL for the human owner to fill in credentials.","credentials_required":["smtp_host","smtp_port","smtp_username","smtp_password","smtp_encryption","imap_host","imap_port","imap_username","imap_password","imap_encryption"],"bot":"marketingbot"},"marketing_email":{"name":"Marketing Email (SMTP\/IMAP)","category":"email_marketing","auth":"interactive_form","description":"Marketing email campaigns, scheduling, analytics via SMTP\/IMAP. Use \/connections\/init to get a web form URL for the human owner to fill in credentials.","credentials_required":["smtp_host","smtp_port","smtp_username","smtp_password","smtp_encryption","imap_host","imap_port","imap_username","imap_password","imap_encryption"],"bot":"marketingbot"},"office_email":{"name":"Office Email (SMTP\/IMAP)","category":"email","auth":"interactive_form","description":"Office email sending, scheduling, inbox management via SMTP\/IMAP. Use \/connections\/init to get a web form URL for the human owner to fill in credentials.","credentials_required":["smtp_host","smtp_port","smtp_username","smtp_password","smtp_encryption","imap_host","imap_port","imap_username","imap_password","imap_encryption"],"bot":"managementbot"},"sftp":{"name":"Web server (SFTP)","category":"development","auth":"api_key","description":"SFTP access to a WordPress site for the developer agent: list, read and safely change theme and mu-plugin files (backup, PHP lint, health check with automatic rollback). No shell; wp-config.php, .htaccess, uploads and plugins are out of reach. Use \/connections\/init with {\"service\":\"sftp\"} to get a form URL for the human owner \u2014 never ask for these credentials in chat or task notes.","credentials_schema":{"host":{"required":true,"description":"SFTP server host name, e.g. \"ssh.zone.ee\" or the server IP."},"port":{"required":false,"description":"SFTP port, usually 22."},"username":{"required":true,"description":"SFTP \/ SSH user name from the hosting panel."},"password":{"required":false,"description":"SSH password \u2014 or leave empty and paste a private key below (a key is safer)."},"private_key":{"required":false,"description":"Private key (OpenSSH \/ PEM) of a key made only for SharksAPI and added to the hosting account."},"passphrase":{"required":false,"description":"Passphrase of the private key, if it has one."},"root_path":{"required":true,"description":"Absolute path of the WordPress root on the server (the folder that contains wp-content), e.g. \"\/data01\/virt12345\/domeenid\/www.example.ee\/htdocs\"."},"site_url":{"required":true,"description":"Public URL of the site, e.g. \"https:\/\/example.ee\" \u2014 checked after every change, and a broken page rolls the change back."}},"credentials_required":["host","username","root_path","site_url"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"wordpress":{"name":"WordPress","category":"cms","auth":"api_key","description":"Posts, pages, media, categories, tags, SEO, users","credentials_schema":{"site_url":{"required":true,"description":"Full URL of your WordPress site (e.g. \"https:\/\/example.com\")","example":"https:\/\/example.com","accepts_aliases":["url"]},"username":{"required":true,"description":"WordPress admin username."},"application_password":{"required":true,"description":"WordPress Application Password. Generate at Users \u2192 Profile \u2192 Application Passwords.","accepts_aliases":["app_password"]}},"credentials_required":["site_url","username","application_password"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"activecampaign":{"name":"ActiveCampaign","category":"marketing_automation","auth":"api_key","description":"Email marketing, CRM, sales automation, contacts, deals, campaigns","credentials_schema":{"api_url":{"required":true,"description":"ActiveCampaign API URL: Settings \u2192 Developer \u2192 URL, like https:\/\/youraccount.api-us1.com."},"api_key":{"required":true,"description":"ActiveCampaign API key: the Key on the same Developer page."}},"credentials_required":["api_key","api_url"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"jotform":{"name":"Jotform","category":"forms","auth":"api_key","description":"Online forms \u2014 forms, submissions, questions, integrations","credentials_schema":{"api_key":{"required":true,"description":"Jotform API key: Jotform \u2192 My Account \u2192 API \u2192 Create New Key (Read Access is enough)."}},"credentials_required":["api_key"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"google_calendar":{"name":"Google Calendar","category":"office","auth":"oauth","description":"Google Workspace calendar \u2014 list calendars and events, create events, upcoming schedule","aliases":["calendar"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"google_drive":{"name":"Google Drive","category":"office","auth":"oauth","description":"Google Workspace files \u2014 list, search, read, create, update and delete files and folders","aliases":["drive"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"google_sheets":{"name":"Google Sheets","category":"office","auth":"oauth","description":"Google Sheets \u2014 read ranges, write and append values, create spreadsheets","aliases":["sheets"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"google_docs":{"name":"Google Docs","category":"office","auth":"oauth","description":"Google Docs \u2014 read, create and append text to documents","aliases":["docs"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"youtube":{"name":"YouTube","category":"social","auth":"oauth","description":"YouTube channel statistics and YouTube Analytics (read-only): subscribers, views, watch time, average view duration, likes, comments, shares, subscribers gained and lost, top videos for a period. Google sign-in with the account that manages the channel.","config_required":["channel_id"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"resend":{"name":"Resend","category":"email","auth":"api_key","description":"Developer email API, transactional emails, domains","credentials_schema":{"api_key":{"required":true,"description":"Resend API key: resend.com \u2192 API Keys \u2192 Create API key (Sending access)."}},"credentials_required":["api_key"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"bluesky":{"name":"Bluesky","category":"social","auth":"api_key","description":"Decentralized social \u2014 posts, feed, notifications, followers","credentials_schema":{"identifier":{"required":true,"description":"Your Bluesky handle (name.bsky.social) or the account e-mail."},"password":{"required":true,"description":"An app password, not your login password: Bluesky \u2192 Settings \u2192 Privacy and security \u2192 App passwords \u2192 Add."}},"credentials_required":["identifier","password"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"posthog":{"name":"PostHog","category":"analytics","auth":"api_key","description":"Product analytics \u2014 events, persons, insights, feature flags","credentials_schema":{"api_key":{"required":true,"description":"PostHog personal API key: PostHog \u2192 Settings \u2192 Personal API keys \u2192 Create (read access to the project)."},"project_id":{"required":true,"description":"PostHog project ID: Settings \u2192 Project \u2192 Project ID (a number)."},"host":{"required":false,"description":"Only for PostHog EU Cloud or a self-hosted instance: its public https address, e.g. https:\/\/eu.posthog.com. Default: US Cloud."}},"credentials_required":["api_key","project_id"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"google_trends":{"name":"Google Trends","category":"seo","auth":"api_key","description":"Search trend analysis \u2014 interest over time, related queries, trending searches. Uses SerpAPI key for reliable access. Works without connection via scraping fallback.","credentials_schema":{"api_key":{"required":true,"description":"SerpAPI key (serpapi.com \u2192 Dashboard \u2192 Your private API key). Google Trends also works without one; the key makes it steadier."}},"credentials_required":["api_key"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"google_keyword_planner":{"name":"Google Keyword Planner","category":"seo","auth":"oauth","description":"Keyword research \u2014 search volumes, competition, CPC estimates, keyword ideas from seeds or URLs. Requires Google Ads connection.","credentials_required":["access_token"],"bot":"marketingbot","requires_human_login":true,"connection_note":"Human owner must sign into the provider account. Agent calls POST \/api\/v1\/agents\/{id}\/connections\/init and forwards the returned authorization_url to the human."},"ubersuggest":{"name":"Ubersuggest","category":"seo","auth":"api_key","description":"Neil Patel SEO tool \u2014 keyword suggestions with volume\/difficulty\/CPC, domain traffic overview, top pages. Works without connection via scraping fallback.","credentials_required":["api_key"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."},"trustpilot":{"name":"Trustpilot","category":"reviews","auth":"api_key","description":"Review platform \u2014 find business by domain, read reviews, get TrustScore, reply to reviews. Essential for local SEO and reputation management.","credentials_schema":{"api_key":{"required":true,"description":"Trustpilot API key: Trustpilot Business \u2192 Integrations \u2192 API \u2192 your application (needs a plan with API access)."},"api_secret":{"required":true,"description":"The API secret shown next to that key."}},"credentials_required":["api_key","api_secret"],"bot":"marketingbot","requires_human_login":false,"connection_note":"Agent connects autonomously via POST \/api\/v1\/agents\/{id}\/connections\/store-credentials."}}}