{"slug":"business/API_KEYS_STATUS","title":"API Keys Status Report","section":"business","sectionLabel":"Business","status":"unclassified","type":"document","path":"business/API_KEYS_STATUS.mdx","bytes":6662,"description":null,"updated":null,"source":"integratewise/Integratewise-docs-wiki","content":"\n> **Date:** 2026-06-09 14:15 UTC  \n> **Secrets Store ID:** `1fd83fc5881e4cd296ae3c2fbe80693c`\n\n---\n\n## ✅ Wired & Active\n\n### OpenRouter API Key\n\n- **Status:** ✅ ACTIVE\n- **Secret ID:** `a2dbb029b1964633a5485a564cf0a4c9`\n- **Created:** 2026-06-09 19:41 UTC\n- **Binding Name:** `OPENROUTER_API_KEY`\n- **Used By:**\n  - `intelligence` worker (dev/test/prod)\n  - `mcp-connector` worker (dev/test/prod)\n- **Verified:** ✅ Working (intelligence health check shows \"configured\")\n- **Free Tier:** `openrouter/auto` model working\n\n---\n\n## ⚠️ Referenced But Status Unknown\n\nThese API keys are referenced in wrangler.toml files but need verification:\n\n### Supabase Credentials\n\n- **Binding Names:**\n  - `SUPABASE_URL`\n  - `SUPABASE_SERVICE_KEY` (or `SUPABASE_SERVICE_ROLE_KEY`)\n- **Used By:**\n  - `mcp-connector` (REQUIRED — sole credential holder)\n  - `pipeline` (formerly normalizer)\n  - `store` (deprecated)\n  - `govern` (deprecated, merged into intelligence)\n  - `billing`\n  - `loader` (deprecated)\n- **Status:** ⏳ NEEDS VERIFICATION\n- **Priority:** 🔴 CRITICAL (MCP connector requires this)\n\n### GitHub Token\n\n- **Binding Name:** `GITHUB_TOKEN`\n- **Used By:**\n  - `loader` (deprecated)\n  - `intelligence` (commented out in Phase 1)\n- **Status:** ⏳ NEEDS VERIFICATION\n- **Priority:** 🟡 MEDIUM (loader deprecated, intelligence optional)\n\n### OpenAI API Key\n\n- **Binding Name:** `OPENAI_API_KEY`\n- **Used By:**\n  - `loader` (deprecated)\n  - `intelligence` (commented out in Phase 1)\n- **Status:** ⏳ NEEDS VERIFICATION\n- **Priority:** 🟢 LOW (optional, using Workers AI + OpenRouter instead)\n\n### Google API Key (Gemini)\n\n- **Binding Name:** `GOOGLE_API_KEY`\n- **Used By:**\n  - `loader` (deprecated)\n  - `intelligence` (commented out in Phase 1)\n- **Status:** ⏳ NEEDS VERIFICATION\n- **Priority:** 🟢 LOW (optional, using Workers AI + OpenRouter instead)\n\n### xAI API Key (Grok)\n\n- **Binding Name:** `XAI_API_KEY`\n- **Used By:**\n  - `intelligence` (commented out in Phase 1)\n- **Status:** ⏳ NEEDS VERIFICATION\n- **Priority:** 🟢 LOW (optional)\n\n### OpenCode API Key\n\n- **Binding Name:** `OPENCODE_API_KEY`\n- **Used By:**\n  - `intelligence` (commented out in Phase 1)\n- **Status:** ⏳ NEEDS VERIFICATION\n- **Priority:** 🟢 LOW (optional)\n\n### Vercel Token\n\n- **Binding Name:** `VERCEL_TOKEN`\n- **Used By:**\n  - `loader` (deprecated)\n- **Status:** ⏳ NEEDS VERIFICATION\n- **Priority:** 🟢 LOW (loader deprecated)\n\n### Database URL (Supabase Direct)\n\n- **Binding Name:** `DATABASE_URL`\n- **Used By:**\n  - `govern` (deprecated, merged into intelligence)\n- **Status:** ⏳ NEEDS VERIFICATION\n- **Priority:** 🟢 LOW (govern deprecated)\n\n### Triage Bot API Key\n\n- **Binding Name:** `TRIAGE_BOT_API_KEY`\n- **Used By:**\n  - `mcp-connector`\n  - `continuity`\n- **Status:** ⏳ NEEDS VERIFICATION\n- **Priority:** 🟡 MEDIUM (used for write access)\n- **Note:** Set via `wrangler secret put` (not Secrets Store)\n\n---\n\n## Verification Commands\n\n### List All Secrets in Store\n\n```bash\nunset CLOUDFLARE_API_TOKEN\nwrangler secrets-store secret list 1fd83fc5881e4cd296ae3c2fbe80693c\n```\n\n### Check Specific Secret\n\n```bash\nwrangler secrets-store secret get 1fd83fc5881e4cd296ae3c2fbe80693c <SECRET_NAME>\n```\n\n### Check Worker Bindings\n\n```bash\n# Intelligence worker\nwrangler deployments view --name intelligence\n\n# MCP connector\nwrangler deployments view --name integratewise-mcp-connector\n\n# Pipeline\nwrangler deployments view --name integratewise-pipeline\n```\n\n### Test API Key Availability\n\n```bash\n# Test OpenRouter via intelligence\ncurl https://intelligence.dev.integratewise.ai/health\n\n# Test MCP connector\ncurl https://mcp.integratewise.ai/health\n```\n\n---\n\n## Priority Actions\n\n### 🔴 CRITICAL (Do Now)\n\n1. **Verify Supabase credentials exist:**\n\n   ```bash\n   wrangler secrets-store secret get 1fd83fc5881e4cd296ae3c2fbe80693c SUPABASE_URL\n   wrangler secrets-store secret get 1fd83fc5881e4cd296ae3c2fbe80693c SUPABASE_SERVICE_ROLE_KEY\n   ```\n\n2. **Test MCP connector (requires Supabase):**\n\n   ```bash\n   curl https://mcp.integratewise.ai/health\n   ```\n\n   Expected response:\n\n   ```json\n   {\n     \"status\": \"ok\",\n     \"service\": \"mcp-connector\",\n     \"version\": \"2.0.0\",\n     \"oauth\": \"enabled\",\n     \"tools\": 18\n   }\n   ```\n\n### 🟡 MEDIUM (Do Soon)\n\n3. **Check Triage Bot API Key:**\n\n   ```bash\n   # This is a worker secret, not Secrets Store\n   wrangler secret list --name integratewise-mcp-connector\n   ```\n\n4. **Verify GitHub token (if loader is still in use):**\n   ```bash\n   wrangler secrets-store secret get 1fd83fc5881e4cd296ae3c2fbe80693c GITHUB_TOKEN\n   ```\n\n### 🟢 LOW (Optional)\n\n5. **Check optional AI API keys:**\n   - OpenAI, Google, xAI, OpenCode\n   - Only needed if expanding AI router beyond Workers AI + OpenRouter\n\n---\n\n## Current AI Router Configuration (intelligence)\n\n**Active (Phase 1):**\n\n- ✅ Cloudflare Workers AI (via `env.AI` binding)\n- ✅ AI Gateway (`integratewise-ai-dev`)\n- ✅ OpenRouter free tier (`openrouter/auto`)\n\n**Disabled (Commented Out in wrangler.toml):**\n\n- ❌ OpenAI API\n- ❌ Google Gemini API\n- ❌ xAI Grok API\n- ❌ OpenCode API\n- ❌ GitHub Copilot API\n\n**Rationale:**\n\n- Workers AI is free and edge-native\n- OpenRouter free tier provides fallback\n- Additional APIs can be enabled later if needed\n\n---\n\n## Adding New API Keys\n\n### Via Secrets Store (Recommended)\n\n```bash\nunset CLOUDFLARE_API_TOKEN\n\n# Create secret\nwrangler secrets-store secret create 1fd83fc5881e4cd296ae3c2fbe80693c \\\n  --name=<SECRET_NAME> \\\n  --scopes=workers\n\n# Set value\nwrangler secrets-store secret put 1fd83fc5881e4cd296ae3c2fbe80693c \\\n  <SECRET_NAME> \\\n  --value=\"<SECRET_VALUE>\"\n\n# Verify\nwrangler secrets-store secret get 1fd83fc5881e4cd296ae3c2fbe80693c <SECRET_NAME>\n```\n\n### Via Worker Secrets (Legacy)\n\n```bash\n# Set secret directly on worker\nwrangler secret put <SECRET_NAME> --name <WORKER_NAME>\n\n# List secrets\nwrangler secret list --name <WORKER_NAME>\n```\n\n---\n\n## Security Notes\n\n1. **Never commit API keys to git**\n2. **Use Secrets Store for shared secrets** (Supabase, OpenRouter)\n3. **Use worker secrets for worker-specific keys** (Triage Bot)\n4. **Rotate keys regularly** (especially Supabase service key)\n5. **Check .env files are gitignored** ✅ Already in `.gitignore`\n\n---\n\n## Next Steps\n\n1. ✅ Verify Supabase credentials exist in Secrets Store\n2. ✅ Test MCP connector health endpoint\n3. ⏳ Add missing keys if any workers fail\n4. ⏳ Document key rotation policy\n5. ⏳ Set up monitoring for API key expiration\n\n---\n\n**Status:** 1 of ~10 keys verified ✅  \n**Priority:** Verify Supabase credentials (CRITICAL)  \n**Last Updated:** 2026-06-09T14:15:00Z\n"}