← back to Ventura Claw

server/data/connector-acquisition.json

167 lines

{
  "_note": "Per-connector API-key acquisition metadata. get_key_url deep-links to the exact provider portal page that mints the key.",
  "connectors": {
    "stripe": {
      "name": "Stripe",
      "auth": "api_key",
      "oauth": true,
      "get_key_url": "https://dashboard.stripe.com/apikeys",
      "get_key_steps": "Developers → API keys → Reveal secret key. Use sk_live_… for prod or sk_test_… for testing.",
      "fields": [{ "key": "STRIPE_SECRET_KEY", "label": "Secret key", "type": "password", "required": true }]
    },
    "cloudflare": {
      "name": "Cloudflare",
      "auth": "api_key",
      "oauth": false,
      "get_key_url": "https://dash.cloudflare.com/profile/api-tokens",
      "get_key_steps": "My Profile → API Tokens → Create Token → 'Edit zone DNS' template (or custom: Zone:Read, DNS:Edit, Cache:Purge).",
      "fields": [{ "key": "CF_API_TOKEN", "label": "API Token", "type": "password", "required": true }]
    },
    "slack": {
      "name": "Slack",
      "auth": "oauth2",
      "oauth": true,
      "get_key_url": "https://api.slack.com/apps",
      "get_key_steps": "Create New App → From scratch → OAuth & Permissions → add Bot Token Scopes (chat:write, channels:read, channels:history) → Install → copy Bot User OAuth Token (xoxb-…).",
      "fields": [{ "key": "SLACK_BOT_TOKEN", "label": "Bot OAuth Token", "type": "password", "required": true }]
    },
    "gmail": {
      "name": "Gmail (via george)",
      "auth": "basic",
      "oauth": false,
      "get_key_url": "http://127.0.0.1:9850",
      "get_key_steps": "George is Steve's local Gmail proxy on tailnet. Default basic auth: admin:DWSecure2024!. Already running — paste the Basic-Auth string.",
      "fields": [
        { "key": "GEORGE_URL", "label": "Endpoint", "type": "text", "default": "http://127.0.0.1:9850" },
        { "key": "GEORGE_BASIC_AUTH", "label": "Basic auth (user:pass)", "type": "password", "required": true }
      ]
    },
    "purelymail": {
      "name": "Purelymail",
      "auth": "api_key",
      "oauth": false,
      "get_key_url": "https://purelymail.com/manage/account/api-tokens",
      "get_key_steps": "Account → API Tokens → Create. Used for domain/mailbox management.",
      "fields": [{ "key": "PURELYMAIL_API_TOKEN", "label": "API Token", "type": "password", "required": true }]
    },
    "mailchimp": {
      "name": "Mailchimp",
      "auth": "api_key",
      "oauth": true,
      "get_key_url": "https://us1.admin.mailchimp.com/account/api/",
      "get_key_steps": "Account → Extras → API keys → Create A Key. Token format ends in -us6 (data-center suffix matters).",
      "fields": [{ "key": "MAILCHIMP_API_KEY", "label": "API Key (with -dc suffix)", "type": "password", "required": true }]
    },
    "hubspot": {
      "name": "HubSpot",
      "auth": "oauth2",
      "oauth": true,
      "get_key_url": "https://app.hubspot.com/private-apps",
      "get_key_steps": "Settings → Integrations → Private Apps → Create. Scopes: crm.objects.contacts.read/write, deals.read/write. Token is pat-na1-….",
      "fields": [{ "key": "HUBSPOT_TOKEN", "label": "Private App Token", "type": "password", "required": true }]
    },
    "notion": {
      "name": "Notion",
      "auth": "oauth2",
      "oauth": true,
      "get_key_url": "https://www.notion.so/my-integrations",
      "get_key_steps": "New integration → Internal → copy the Secret (ntn_…). Then SHARE each page/database with the integration manually.",
      "fields": [{ "key": "NOTION_TOKEN", "label": "Integration Secret", "type": "password", "required": true }]
    },
    "airtable": {
      "name": "Airtable",
      "auth": "api_key",
      "oauth": true,
      "get_key_url": "https://airtable.com/create/tokens",
      "get_key_steps": "Create new token → scopes: data.records:read, data.records:write, schema.bases:read → grant access to specific bases. Token starts with pat….",
      "fields": [
        { "key": "AIRTABLE_PAT", "label": "Personal Access Token", "type": "password", "required": true },
        { "key": "AIRTABLE_BASE_ID", "label": "Default Base ID (optional)", "type": "text" }
      ]
    },
    "twilio": {
      "name": "Twilio",
      "auth": "basic",
      "oauth": false,
      "get_key_url": "https://console.twilio.com/",
      "get_key_steps": "Console main page → Account Info card → Account SID + Auth Token. From Number = your Twilio phone (Phone Numbers → Active).",
      "fields": [
        { "key": "TWILIO_ACCOUNT_SID", "label": "Account SID", "type": "text", "required": true },
        { "key": "TWILIO_AUTH_TOKEN", "label": "Auth Token", "type": "password", "required": true },
        { "key": "TWILIO_FROM_NUMBER", "label": "From Number", "type": "text" }
      ]
    },
    "figma": {
      "name": "Figma",
      "auth": "api_key",
      "oauth": false,
      "get_key_url": "https://www.figma.com/settings",
      "get_key_steps": "Settings → Personal access tokens → Generate. Read-file scope is sufficient.",
      "fields": [{ "key": "FIGMA_TOKEN", "label": "Personal Access Token", "type": "password", "required": true }]
    },
    "canva": {
      "name": "Canva",
      "auth": "oauth2",
      "oauth": true,
      "get_key_url": "https://www.canva.com/developers/integrations",
      "get_key_steps": "Connect API integration → Configure → OAuth scopes (asset:write, design:content:read) → Generate access token via OAuth flow.",
      "fields": [{ "key": "CANVA_TOKEN", "label": "Access Token", "type": "password", "required": true }]
    },
    "etsy": {
      "name": "Etsy",
      "auth": "oauth2",
      "oauth": false,
      "get_key_url": "https://www.etsy.com/developers/your-apps",
      "get_key_steps": "Your Apps → Create A New App → keystring (x-api-key). Then run OAuth PKCE flow to get user access token (format: <user_id>.<token>).",
      "fields": [
        { "key": "ETSY_KEYSTRING", "label": "App Keystring", "type": "password", "required": true },
        { "key": "ETSY_ACCESS_TOKEN", "label": "OAuth Access Token", "type": "password", "required": true },
        { "key": "ETSY_SHOP_ID", "label": "Default Shop ID", "type": "text" }
      ]
    },
    "google": {
      "name": "Google (Sheets / Drive / Gmail)",
      "auth": "oauth2",
      "oauth": true,
      "get_key_url": "https://console.cloud.google.com/apis/credentials",
      "get_key_steps": "Create OAuth Client ID → Web application → Authorized redirect URIs: paste from /admin/oauth/google. Then click 'Connect with Google' to grant scopes.",
      "fields": []
    },
    "shopify": {
      "name": "Shopify",
      "auth": "api_key",
      "oauth": true,
      "get_key_url": "https://accounts.shopify.com/store-login",
      "get_key_steps": "Store admin → Apps → Develop apps → Create → Configure Admin API scopes → Install → reveal access token (shpat_…).",
      "fields": [
        { "key": "SHOPIFY_STORE", "label": "Store domain (e.g. mystore.myshopify.com)", "type": "text", "required": true },
        { "key": "SHOPIFY_ACCESS_TOKEN", "label": "Admin API Access Token", "type": "password", "required": true }
      ]
    },
    "discord": {
      "name": "Discord",
      "auth": "oauth2",
      "oauth": true,
      "get_key_url": "https://discord.com/developers/applications",
      "get_key_steps": "New Application → Bot → Reset Token → copy. OAuth2 → URL Generator → bot scope → install to your server.",
      "fields": [{ "key": "DISCORD_BOT_TOKEN", "label": "Bot Token", "type": "password", "required": true }]
    },
    "archive": {
      "name": "Archive (Wayback)",
      "auth": "none",
      "oauth": false,
      "get_key_url": "https://archive.org/help/wayback_api.php",
      "get_key_steps": "No key required. Free public Internet Archive APIs. Results filtered to public-domain + CC0 + CC-BY + CC-BY-SA only (no NC/ND).",
      "fields": []
    },
    "anthropic": {
      "name": "Anthropic / Claude",
      "auth": "api_key",
      "oauth": false,
      "get_key_url": "https://console.anthropic.com/settings/keys",
      "get_key_steps": "Console → Settings → API Keys → Create Key. Once connected, VenturaClaw auto-discovers your existing MCPs.",
      "fields": [{ "key": "ANTHROPIC_API_KEY", "label": "API Key", "type": "password", "required": true }]
    }
  }
}