{
  "ok": true,
  "mode": "provider-key-visible",
  "provider": "tavily",
  "selectedVariable": "TAVILY_API_KEY",
  "providerKeyAutoNormalized": false,
  "providerKeyNormalizationNotes": [],
  "acceptedVariableNames": [
    "TAVILY_API_KEY",
    "TAVILY_KEY",
    "TAVILY_SEARCH_API_KEY",
    "TAVILY_TOKEN",
    "TVLY_API_KEY"
  ],
  "keyVisibleToBrowser": false,
  "answer": "ArchE Internet Research Test Mode can see a search provider key inside the Netlify Function. Run providerTest=1 or a controlled research question next. External web results remain research-only until owner/admin review approves them as site facts.",
  "setup": [
    "Confirm you are editing the same Netlify project that serves mtthorne.com.",
    "In Netlify, open Project configuration → Environment variables.",
    "Create or edit TAVILY_API_KEY. The Production value should contain only the key itself, such as tvly-... Do not include TAVILY_API_KEY=, Authorization:, Bearer, quotes, or extra text.",
    "Make sure its scope includes Functions. If the UI is confusing, set it to all scopes/all deploy contexts for this repair step, then tighten it later.",
    "Save the value, then trigger a fresh production deploy. Use Clear cache and deploy site if available.",
    "Open /.netlify/functions/arche-research?diagnostic=1 to check safe key-shape, performance, and research-quality diagnostics.",
    "Open /.netlify/functions/arche-research?providerTest=1 to test the actual Tavily Search endpoint without relying on the chat interface."
  ],
  "diagnostics": {
    "diagnosticVersion": "v3.2.17",
    "netlifyContext": null,
    "netlifyDeployUrlPresent": false,
    "netlifySiteNamePresent": true,
    "relatedEnvironmentKeyNamesSeenByFunction": [
      "TAVILY_API_KEY"
    ],
    "providerCandidates": [
      {
        "name": "TAVILY_API_KEY",
        "present": true,
        "rawLength": 57,
        "normalizedLength": 57,
        "rawStartsWithTvly": true,
        "rawContainsBearer": false,
        "rawHasEqualsSign": false,
        "rawContainsTvlyToken": true,
        "normalizedStartsWithTvly": true,
        "wasAutoNormalized": false,
        "normalizationNotes": [],
        "looksWrappedInQuotes": false
      },
      {
        "name": "TAVILY_KEY",
        "present": false,
        "rawLength": 0,
        "normalizedLength": 0,
        "rawStartsWithTvly": false,
        "rawContainsBearer": false,
        "rawHasEqualsSign": false,
        "rawContainsTvlyToken": false,
        "normalizedStartsWithTvly": false,
        "wasAutoNormalized": false,
        "normalizationNotes": [],
        "looksWrappedInQuotes": false
      },
      {
        "name": "TAVILY_SEARCH_API_KEY",
        "present": false,
        "rawLength": 0,
        "normalizedLength": 0,
        "rawStartsWithTvly": false,
        "rawContainsBearer": false,
        "rawHasEqualsSign": false,
        "rawContainsTvlyToken": false,
        "normalizedStartsWithTvly": false,
        "wasAutoNormalized": false,
        "normalizationNotes": [],
        "looksWrappedInQuotes": false
      },
      {
        "name": "TAVILY_TOKEN",
        "present": false,
        "rawLength": 0,
        "normalizedLength": 0,
        "rawStartsWithTvly": false,
        "rawContainsBearer": false,
        "rawHasEqualsSign": false,
        "rawContainsTvlyToken": false,
        "normalizedStartsWithTvly": false,
        "wasAutoNormalized": false,
        "normalizationNotes": [],
        "looksWrappedInQuotes": false
      },
      {
        "name": "TVLY_API_KEY",
        "present": false,
        "rawLength": 0,
        "normalizedLength": 0,
        "rawStartsWithTvly": false,
        "rawContainsBearer": false,
        "rawHasEqualsSign": false,
        "rawContainsTvlyToken": false,
        "normalizedStartsWithTvly": false,
        "wasAutoNormalized": false,
        "normalizationNotes": [],
        "looksWrappedInQuotes": false
      }
    ],
    "performanceControls": {
      "startupDependencies": 0,
      "providerTimeoutMs": 9500,
      "providerTestTimeoutMs": 6500,
      "publicStatusDurableCacheSeconds": 30,
      "staleWhileRevalidateSeconds": 120,
      "timedProviderLogs": true,
      "researchPostCached": false,
      "answerQualityRepair": true,
      "dedupeSources": true,
      "sourceQualityLabels": true,
      "officialSourcePreference": true
    },
    "note": "This diagnostic never returns the secret API key value. It only reports whether the Function can see matching variable names, whether the value shape looks plausible, and which performance/source-quality controls are active."
  },
  "requestType": "diagnostic-status-check",
  "diagnosticUrl": "/.netlify/functions/arche-research?diagnostic=1",
  "providerTestUrl": "/.netlify/functions/arche-research?providerTest=1",
  "cachePolicy": "no-store diagnostic response"
}