Atmospore Pollen Forecasts · Authentication Profile

Atmospore Pollen Forecasts Authentication

Authentication

API-key authentication only. One key, one environment, no OAuth, no OIDC, no scopes and no test/live separation. The same key authenticates REST and the hosted MCP server, though the two carry it differently.

Atmospore Pollen Forecasts secures its APIs with apiKey across 2 declared security schemes, as derived from its OpenAPI definitions.

weatherpollenallergyenvironmental-datahealthgeospatialforecastingsmart-homemcpopenapinorwayclimate
Methods: apiKey Schemes: 2 OAuth flows: API key in: header, query

Security Schemes

ApiKeyAuth apiKey
· in: header (x-api-key)
MCPBearer apiKey
· in: header (Authorization)

Source

Authentication Profile

Raw ↑
generated: '2026-08-09'
method: searched
source: openapi/atmospore-pollen-forecasts-openapi-original.json
docs: https://atmospore.com/api-docs
description: >-
  API-key authentication only. One key, one environment, no OAuth, no OIDC, no scopes and no
  test/live separation. The same key authenticates REST and the hosted MCP server, though the two
  carry it differently.
summary:
  types: [apiKey]
  api_key_in: [header, query]
  oauth2_flows: []
  scopes: false
  mtls: false
  environments: 1
schemes:
  - name: ApiKeyAuth
    type: apiKey
    in: header
    parameter: x-api-key
    description: API key from your Atmospore account settings
    surface: rest
    applies_to: [getPollenForecast, getPollenArea, getPollenTop]
    sources:
      - openapi/atmospore-pollen-forecasts-openapi-original.json
  - name: MCPBearer
    type: apiKey
    in: header
    parameter: Authorization
    format: 'Bearer ak_...'
    surface: mcp
    endpoint: https://mcp.atmospore.com/mcp
    alternative: {in: query, parameter: key}
    sources:
      - https://mcp.atmospore.com/mcp (live JSON-RPC -32001 error, 2026-08-09)
      - https://atmospore.com/article/mcp
unauthenticated_operations:
  - operationId: getSpecies
    path: /v1/species
    declared: 'security: [] in the OpenAPI'
    verified: '2026-08-09, HTTP 200 with no credentials'
    note: Species metadata is fully public and cacheable for 24 hours.
key_management:
  issuance: https://atmospore.com/account
  signup: https://atmospore.com/register
  free_tier: 3000 requests/month, no credit card
  observed_prefix: ak_
  documented_prefix: atmo_
  prefix_discrepancy: >-
    The MCP server's own error message says `Bearer ak_...`, while the setup snippet published at
    https://atmospore.com/article/mcp says `Bearer atmo_your_key_here`. One of the two is wrong.
  rotation_policy: not published
  key_scoping: none (a key is all-or-nothing across every operation)
  expiry: not published
failure_modes:
  - {status: 401, condition: no x-api-key header, body: '{"error":"Missing API key. Include x-api-key header."}', verified: true}
  - {status: 403, condition: unknown or malformed key, body: '{"error":"Invalid API key"}', verified: true, retry: never}
transport_security:
  https_required: true
  tls_version: TLSv1.3
  hsts: false
  note: >-
    No Strict-Transport-Security header on pollenapi.com or atmospore.com — a plaintext first
    request is not protected against downgrade. See security/atmospore-pollen-forecasts-domain-security.yml.
gaps:
  - Key travels in a header on REST and in an Authorization bearer on MCP with no unified statement anywhere.
  - No scopes, so an integration cannot be granted read-only or single-operation access — every key is total.
  - No key rotation, expiry or revocation policy published.
  - No HSTS on the API host.
  - Documented and actual key prefixes disagree.