CycleCalcs · Arazzo Workflow

Build a sun and moon calendar for a location

Version 1.0.0

One ranged request for the solar day, one for daily moon state, one for the quarter instants — a month of calendar in three calls, not ninety.

1 workflow 3 source APIs 1 provider
View Spec View on GitHub AstronomySpaceScienceEphemerisSunMoonPlanetsEclipsesTimeCalendarGeolocationMCPagent-nativeArazzoWorkflows

Provider

cyclecalcs

Workflows

sunAndMoonCalendar
A per-day sun/moon table plus the lunar quarter instants.
3 steps inputs: end, lat, lon, start, tz outputs: moonDays, quarters, solarDays
1
solarDays
Sunrise, sunset, solar noon, day length and the three twilights, one row a day. lat and lon are required on this operation.
2
moonDays
Daily phase, illumination, distance and rise/set.
3
quarters
The exact quarter instants in the window, with supermoon status under both competing rules and any attached eclipse.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Build a sun and moon calendar for a location
  version: 1.0.0
  summary: >-
    One ranged request for the solar day, one for daily moon state, one for the
    quarter instants — a month of calendar in three calls, not ninety.
sourceDescriptions:
- name: moonApi
  url: ../openapi/cyclecalcs-moon-api-openapi.yml
  type: openapi
- name: phasesApi
  url: ../openapi/cyclecalcs-phases-api-openapi.yml
  type: openapi
- name: sunApi
  url: ../openapi/cyclecalcs-sun-api-openapi.yml
  type: openapi
workflows:
- workflowId: sunAndMoonCalendar
  summary: A per-day sun/moon table plus the lunar quarter instants.
  inputs:
    type: object
    required: [lat, lon, start, end]
    properties:
      lat: {type: number}
      lon: {type: number}
      tz: {type: string}
      start: {type: string, description: ISO date, inclusive.: null}
      end: {type: string, description: ISO date, inclusive.: null}
  steps:
  - stepId: solarDays
    description: >-
      Sunrise, sunset, solar noon, day length and the three twilights, one
      row a day. lat and lon are required on this operation.
    operationId: getSun
    parameters:
    - name: lat
      in: query
      value: $inputs.lat
    - name: lon
      in: query
      value: $inputs.lon
    - name: tz
      in: query
      value: $inputs.tz
    - name: start
      in: query
      value: $inputs.start
    - name: end
      in: query
      value: $inputs.end
    - name: step
      in: query
      value: 1d
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      days: $response.body#/data
  - stepId: moonDays
    description: Daily phase, illumination, distance and rise/set.
    operationId: getMoon
    parameters:
    - name: lat
      in: query
      value: $inputs.lat
    - name: lon
      in: query
      value: $inputs.lon
    - name: tz
      in: query
      value: $inputs.tz
    - name: start
      in: query
      value: $inputs.start
    - name: end
      in: query
      value: $inputs.end
    - name: step
      in: query
      value: 1d
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      days: $response.body#/data
  - stepId: quarters
    description: >-
      The exact quarter instants in the window, with supermoon status under
      both competing rules and any attached eclipse.
    operationId: getPhases
    parameters:
    - name: start
      in: query
      value: $inputs.start
    - name: end
      in: query
      value: $inputs.end
    - name: tz
      in: query
      value: $inputs.tz
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      phases: $response.body#/data
  outputs:
    solarDays: $steps.solarDays.outputs.days
    moonDays: $steps.moonDays.outputs.days
    quarters: $steps.quarters.outputs.phases
x-generated: '2026-08-09'
x-method: generated
x-note: >-
  Free-tier cap is 366 daily rows for one body; a longer span returns 400
  RANGE_TOO_LARGE with a `cap` extension rather than a truncated 200.

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/cyclecalcs-sun-moon-calendar"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.