Atmospore Pollen Forecasts · Arazzo Workflow

Build a regional pollen risk board

Version 1.0.0

Resolve the species catalogue, then read tree/grass/weed aggregates across a radius for a regional dashboard or a smart-home ventilation rule. Every operationId exists verbatim in the referenced OpenAPI.

1 workflow 1 source API 1 provider
View Spec View on GitHub weatherpollenallergyenvironmental-datahealthgeospatialforecastingsmart-homemcpopenapinorwayclimateArazzoWorkflows

Provider

atmospore-pollen-forecasts

Workflows

regional-risk-board
Category-level pollen aggregates and trend over an area.
One unauthenticated metadata call plus one authenticated area call. NOTE the radius unit — the API takes METRES (default 25000, max 50000), while the Atmospore MCP tool get_area_average takes kilometres.
2 steps inputs: apiKey, dt, forecast_days, lat, lon, radius outputs: board, risk_levels, units
1
list-species
getSpecies
Resolve categories and risk thresholds for labelling the board. No API key required.
2
area-aggregates
getPollenArea
Average, minimum and maximum for the tree, grass and weed rollups across the radius, one entry per day.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Build a regional pollen risk board
  version: 1.0.0
  description: >-
    Resolve the species catalogue, then read tree/grass/weed aggregates across a radius for a
    regional dashboard or a smart-home ventilation rule. Every operationId exists verbatim in the
    referenced OpenAPI.
sourceDescriptions:
  - name: atmospore
    url: ../openapi/atmospore-pollen-forecasts-openapi-original.json
    type: openapi
workflows:
  - workflowId: regional-risk-board
    summary: Category-level pollen aggregates and trend over an area.
    description: >-
      One unauthenticated metadata call plus one authenticated area call. NOTE the radius unit —
      the API takes METRES (default 25000, max 50000), while the Atmospore MCP tool
      get_area_average takes kilometres.
    inputs:
      type: object
      required: [lat, lon, dt]
      properties:
        apiKey:
          type: string
          description: Atmospore API key from https://atmospore.com/account (x-api-key header).
        lat:
          type: number
          description: Centre latitude. Example 51.51 (London).
        lon:
          type: number
          description: Centre longitude. Example -0.13 (London).
        dt:
          type: string
          format: date
          description: Start date, YYYY-MM-DD.
        forecast_days:
          type: integer
          default: 7
          description: Horizon, 1-14.
        radius:
          type: integer
          default: 25000
          description: Search radius in METRES. Maximum 50000.
    steps:
      - stepId: list-species
        description: Resolve categories and risk thresholds for labelling the board. No API key required.
        operationId: getSpecies
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          categories: $response.body#/meta/categories
          risk_levels: $response.body#/meta/risk_levels
          units: $response.body#/meta/units

      - stepId: area-aggregates
        description: >-
          Average, minimum and maximum for the tree, grass and weed rollups across the radius,
          one entry per day.
        operationId: getPollenArea
        parameters:
          - name: lat
            in: query
            value: $inputs.lat
          - name: lon
            in: query
            value: $inputs.lon
          - name: dt
            in: query
            value: $inputs.dt
          - name: forecast_days
            in: query
            value: $inputs.forecast_days
          - name: radius
            in: query
            value: $inputs.radius
          - name: species
            in: query
            value: tree_tot,grass_tot,weed_tot
          - name: x-api-key
            in: header
            value: $inputs.apiKey
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          days: $response.body#/data
          radius_echo: $response.body#/meta/radius
          generated_at: $response.body#/meta/generated_at
    outputs:
      board: $steps.area-aggregates.outputs.days
      units: $steps.list-species.outputs.units
      risk_levels: $steps.list-species.outputs.risk_levels