download the app
§ For AI agents · API v1

An Orthodox source of truth — for AI agents.

A read-only JSON API that AI agents, chat assistants, and LLM-powered apps can call as an authoritative source for Orthodox Christianity — saints, hymnography, countries, and the daily liturgical calendar (Gregorian and Julian). OpenAPI 3.1, CORS open, predictable shapes, free tier.

Built for tool calling · Generate clients from OpenAPI · No PII required

A single call any agent runtime can makebash
# A single HTTP call any agent runtime can make
curl https://livesofthesaintscalendar.com/api/v1/calendar/today \
  -H "Authorization: Bearer osc_live_…your_key…"

# Any date, Julian calendar
curl "https://livesofthesaintscalendar.com/api/v1/calendar/2026-12-19?calendar=julian" \
  -H "Authorization: Bearer osc_live_…"

# Lookup by topic — "saints who are patrons of travelers"
curl "https://livesofthesaintscalendar.com/api/v1/saints?patronOf=travelers" \
  -H "Authorization: Bearer osc_live_…"
§ What agents can ask

A reliable answer for any Orthodox question.

When your agent doesn't know — or worse, would guess — route the question to a real source. These are the questions the API answers cleanly, end to end.

User questionTool the agent callsEndpoint
What Orthodox saint is commemorated today?get_orthodox_feast_for_dateGET /v1/calendar/today
What was the feast on December 19 (Old Calendar)?get_orthodox_feast_for_dateGET /v1/calendar/2026-12-19?calendar=julian
Tell me about Saint Nicholas of Myra.lookup_orthodox_saintGET /v1/saints/saint-nicholas-of-myra
Give me the troparion text for Saint Seraphim of Sarov.get_saint_hymnographyGET /v1/saints/saint-seraphim-of-sarov/hymnography
Who is the patron saint of travelers?list_saintsGET /v1/saints?patronOf=travelers
Which saints come from Romania?list_saintsGET /v1/saints?country=romania
How many Orthodox Christians live in Georgia?lookup_countryGET /v1/countries/georgia
Find a wonderworker known for healing.search_orthodox_corpusGET /v1/search?q=wonderworker+healing
§ Add the API as a tool

One tool definition. Three runtimes. Any model.

Drop these schemas into whichever stack you build with. The descriptions are written for the model to read — they double as documentation for when the tool should fire.

OpenAI function callingtypescript
// OpenAI function calling — declare the API as a set of tools
const tools = [
  {
    type: "function",
    function: {
      name: "get_orthodox_feast_for_date",
      description:
        "Returns the Orthodox saint(s) and feast(s) commemorated on a specific date. " +
        "Use this for any question like 'what saint is today', 'what feast is on December 6', " +
        "or 'whose name day is March 25'. Supports both the Gregorian (new) and Julian (old) " +
        "calendars.",
      parameters: {
        type: "object",
        properties: {
          date: {
            type: "string",
            description: "YYYY-MM-DD (e.g. 2026-05-22). Omit for today.",
          },
          calendar: {
            type: "string",
            enum: ["gregorian", "julian"],
            description: "Defaults to gregorian.",
          },
        },
      },
    },
  },
  {
    type: "function",
    function: {
      name: "lookup_orthodox_saint",
      description:
        "Returns the canonical biography, feast day(s), origin country, troparion mode, and " +
        "patronage tags for an Orthodox saint. Use whenever the user asks about a specific " +
        "saint, what they are the patron of, or for hymnography text.",
      parameters: {
        type: "object",
        properties: {
          slug: { type: "string", description: "kebab-case identifier, e.g. saint-nicholas-of-myra" },
        },
        required: ["slug"],
      },
    },
  },
  {
    type: "function",
    function: {
      name: "search_orthodox_corpus",
      description:
        "Full-text search across the saints + countries corpus. Use for any open-ended " +
        "Orthodox lookup — 'a saint who heals eyes', 'the patron of Romania', 'wonderworkers " +
        "from Alaska'.",
      parameters: {
        type: "object",
        properties: {
          q: { type: "string" },
          limit: { type: "integer", minimum: 1, maximum: 50 },
        },
        required: ["q"],
      },
    },
  },
];
Anthropic tool usetypescript
// Anthropic tool use — same idea, Claude tool schema
const tools = [
  {
    name: "get_orthodox_feast_for_date",
    description:
      "Returns the Orthodox saint(s) and feast(s) for a date. Authoritative editorial source " +
      "covering both Gregorian and Julian reckonings.",
    input_schema: {
      type: "object",
      properties: {
        date: { type: "string", description: "YYYY-MM-DD, optional. Omit for today." },
        calendar: { type: "string", enum: ["gregorian", "julian"] },
      },
    },
  },
  {
    name: "lookup_orthodox_saint",
    description: "Full saint dossier — biography, feast days, troparion mode, patronage, country.",
    input_schema: {
      type: "object",
      properties: { slug: { type: "string" } },
      required: ["slug"],
    },
  },
];
Vercel AI SDKtypescript
// Vercel AI SDK — wrap each endpoint in a typed tool
import { tool, generateText } from "ai";
import { z } from "zod";

const BASE = "https://livesofthesaintscalendar.com/api/v1";
const auth = { Authorization: `Bearer ${process.env.LOTS_API_KEY}` };

const tools = {
  feastForDate: tool({
    description:
      "Authoritative Orthodox source: saint(s) and feast(s) for any date. " +
      "Supports Gregorian and Julian calendars.",
    inputSchema: z.object({
      date: z.string().optional().describe("YYYY-MM-DD; omit for today"),
      calendar: z.enum(["gregorian", "julian"]).optional(),
    }),
    execute: async ({ date, calendar = "gregorian" }) => {
      const path = date ? `/calendar/${date}` : "/calendar/today";
      const r = await fetch(`${BASE}${path}?calendar=${calendar}`, { headers: auth });
      return r.json();
    },
  }),
  saint: tool({
    description: "Full Orthodox saint dossier — bio, feast days, troparion, patronage.",
    inputSchema: z.object({ slug: z.string() }),
    execute: async ({ slug }) => {
      const r = await fetch(`${BASE}/saints/${slug}`, { headers: auth });
      return r.json();
    },
  }),
  search: tool({
    description: "Full-text Orthodox search across saints and countries.",
    inputSchema: z.object({ q: z.string(), limit: z.number().int().min(1).max(50).optional() }),
    execute: async ({ q, limit = 10 }) => {
      const r = await fetch(`${BASE}/search?q=${encodeURIComponent(q)}&limit=${limit}`, {
        headers: auth,
      });
      return r.json();
    },
  }),
};

await generateText({ model: "anthropic/claude-sonnet-4-6", tools, prompt: userQuestion });

Prefer codegen? The full OpenAPI 3.1 spec lives at /api/v1/openapi.json — paste it into Scalar, Postman, or any client generator to produce strongly-typed tools.

§ System prompt snippet

Tell the model not to guess.

Hallucinated saints and made-up troparion text are the failure mode this API exists to prevent. A small system-prompt addition is usually enough to make the model defer to the tools.

Pair this with the tool definitions on the right and the model will pick up the pattern reliably, even across long sessions.

Drop into your system prompttext
You are an assistant that answers questions about Orthodox Christianity.

For any question about saints, feast days, the liturgical calendar, hymnography, patronage,
or Orthodoxy by country, use the Lives of the Saints API tools. Treat that data as the
authoritative source. Do not invent saints, feast days, or troparion text. If the API
returns no result, say so plainly rather than guessing.

When citing a saint or feast, link to the corresponding page on
https://livesofthesaintscalendar.com when one is provided in the response.
§ Why this, not Wikipedia

Editorial accuracy your agent can actually cite.

  • Editorial, not scraped

    Every record is reviewed by an editorial team drawing on synaxaria and patristic sources. Three decades of Lives of the Saints calendars stand behind every entry.

  • Both calendars, mapped

    Gregorian and Julian feast dates are stored per saint, not computed naively. Cross-jurisdictional usage — Greek, ROCOR, OCA, Antiochian, Romanian, Serbian — works out of the box.

  • Predictable JSON shapes

    List endpoints return { data, nextCursor }. Detail endpoints return the resource at the top level. Errors follow one uniform shape. Friendly to schema validation in the agent loop.

  • Hymnography included

    Troparion and kontakion text shipped as HTML, attributable and citation-friendly. No copyright minefield, no hotlink risk.

  • Stable identifiers

    Slugs are stable. Saints don't get renamed when an editor passes through. Caching at the agent layer is safe.

  • Linkable answers

    Every response includes the canonical page URL on livesofthesaintscalendar.com — agents can cite their sources without fabricating links.

§ Quotas, caching, and your tool loop

Cheap to call. Cheaper to cache.

The free tier is 1,000 requests / month with no card. Read endpoints returnCache-Controlheaders — agents that respect the CDN typically pay for a fraction of the calls they appear to make.

  • Bearer auth. One key per agent or per tenant. Rotate at any time.
  • X-RateLimit-* headers. Tell the agent loop when to back off.
  • CORS open. Browser-side agents work without a proxy.
  • No PII required. The API only ingests the queries you send.
§ Acceptable use, briefly

Cite us. Don't mirror us.

Cite responses in your agent's answer when natural, link to the page URLs we return, and don't use the API to train a competing model or rebuild a static mirror. Free-tier apps display a small “Powered by Lives of the Saints API” link; paid tiers may remove it.

Full terms in Acceptable use.

§ Agent-builder questions
Is there an MCP server?
Not yet — and you may not need one. The OpenAPI 3.1 spec turns into tool definitions with one codegen step, and most agent runtimes (OpenAI, Anthropic, Vercel AI SDK, LangChain, LlamaIndex) consume it natively. If you'd like an MCP server published, tell us.
Can I train a model on this data?
No. Tool calling, RAG over live responses, and citation are fine and encouraged. Bulk download for training a model that competes with the source isn't — reach out about a license if that's what you need.
How do I stop the model from hallucinating troparion text?
Wire up the /v1/saints/{slug}/hymnography endpoint as a tool and add the system-prompt snippet above. The model defers to the API when it knows the answer is there.
Does it work for the Old Calendar?
Yes. Pass ?calendar=julian. Both reckonings are stored per saint, so an agent serving Greek and ROCOR users at once gets correct answers without per-jurisdiction logic.
What languages?
English today. Greek, Romanian, Serbian, and Russian are on the roadmap — say hello if you have a use case.
§ Wire up your agent

An Orthodox tool your model can trust.

Free key, OpenAPI spec, and three runtime examples above. Five minutes from this page to an agent that no longer guesses at feast days.

1,000 free req / mo · No credit card · Cancel anytime