Guide

Gianna for AI agents

Connect Claude, ChatGPT, Codex, Cursor, or any MCP client to Gianna for the liturgical calendar, exact prayers and Scripture, novenas, Mass and Confession times, and your own reminders and tasks.

agentsmcpapidevelopers

Updated 2026-10-02 · View resource

Gianna runs an MCP server at https://gianna.chat/mcp. Connect your AI agent to it and the agent can:

General-purpose models often misremember prayers and feast days and make up Mass times. Gianna's tools return checked text and dates, with the source.

Every Gianna plan includes agent access.

Connect by signing in

No key needed. Gianna asks you to sign in and approve the connection.

On the approval page, leave Also add and change ticked if the assistant should set reminders, add tasks, and keep your novena. The connection appears in Settings, Developer access, where you can disconnect it.

The Gianna skill

The skill tells an agent when to use Gianna's tools and how: quote prayers exactly, cite Mass time sources, and check that an action succeeded. It is at https://gianna.chat/skill.md in the Agent Skills format.

mkdir -p ~/.agents/skills/gianna
curl -o ~/.agents/skills/gianna/SKILL.md https://gianna.chat/skill.md

Coding agents and other clients: use a key

1. Create a key

In Gianna, open Settings, Developer access and create an API key. Tick Allow changes if the agent should add tasks, reminders, intentions, or novenas. Copy the key; it is shown once.

Set it in your shell so the examples below can read it:

export GIANNA_API_KEY=gianna_...

2. Connect your agent

Claude Code

claude mcp add --transport http gianna https://gianna.chat/mcp \
  --header "Authorization: Bearer $GIANNA_API_KEY"

Codex

To use a key instead of signing in, add to ~/.codex/config.toml:

[mcp_servers.gianna]
url = "https://gianna.chat/mcp"
bearer_token_env_var = "GIANNA_API_KEY"

Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "gianna": {
      "url": "https://gianna.chat/mcp",
      "headers": { "Authorization": "Bearer ${env:GIANNA_API_KEY}" }
    }
  }
}

VS Code

Add to .vscode/mcp.json:

{
  "servers": {
    "gianna": {
      "type": "http",
      "url": "https://gianna.chat/mcp",
      "headers": { "Authorization": "Bearer ${env:GIANNA_API_KEY}" }
    }
  }
}

Gemini CLI

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "gianna": {
      "httpUrl": "https://gianna.chat/mcp",
      "headers": { "Authorization": "Bearer $GIANNA_API_KEY" }
    }
  }
}

Any other MCP client

Use the Streamable HTTP transport and the URL https://gianna.chat/mcp, with either the header Authorization: Bearer <your key> or OAuth 2.1 sign-in (discovered from /.well-known/oauth-protected-resource/mcp).

Things to ask

Tools

ToolWhat it doesScope
get_liturgical_dayA day's celebration, rank, colour, saints, readings, or Office hourliturgy:read
get_scriptureExact Bible text with its citationliturgy:read
get_prayerExact text of a common prayer, in English or Latinliturgy:read
find_novenaFind a novena for a saint, feast, or needliturgy:read
find_church_teachingRead the Catechism and Church documents from vatican.valiturgy:read
find_catholic_sourcesFind reliable Catholic sources on a questionliturgy:read
find_churchesChurches near a placedirectory:read
get_church_timesA church's Mass and Confession times, with sourcedirectory:read
list_tasks, list_reminders, list_routinesYour household's planshousehold:read
list_prayer_intentions, get_active_novenaYour prayer life in Giannahousehold:read
find_memories, get_parishWhat Gianna remembers, and your parishhousehold:read
add_task, complete_task, update_task, remove_task, reopen_taskChange taskshousehold:write
add_reminder, update_reminderSet and change remindershousehold:write
add_prayer_intention, update_prayer_intention, mark_prayer_intention_prayedKeep intentionshousehold:write
start_novena, complete_novena_day, update_novena_intentionKeep a novenahousehold:write
add_memoryAsk Gianna to remember somethinghousehold:write

A key without a scope does not see that scope's tools. Each tool result includes structuredContent.state_changed; an action happened only when it is true.

Without MCP

Limits and privacy