Ekkle Assistant
Type it. It's done.
AI that runs your church — not just writes about it. The Assistant uses tools to update your app: events, pages, rosters, notifications, and more. Calm. Clear. Under your control.
Assistant in action
Short demo coming here (volunteer roster → push notification → new event). For now, start a trial and open the Assistant inside your church admin.
Read-only AI vs. Ekkle Assistant
Many tools answer questions or chart your data. Ekkle focuses on actions your team would otherwise click through by hand.
Typical "church AI"
- —Sermon repurposing, captions, or social copy.
- —Natural language → charts or filters (read-only).
- —External chat connected to a database (still mostly read).
Ekkle Assistant
- ✓Create and update events, home blocks, and site pages.
- ✓Send push notifications to your congregation (where enabled).
- ✓Auto-assign volunteer responsibilities with proposals you can lock, swap, and apply.
- ✓Search sermon transcripts and navigate admins to the right screen.
Volunteer scheduling
Auto-roster with a human in the loop
The Assistant can propose multi-week responsibility rosters that respect eligibility, avoid back-to-back assignments, balance load, and prevent double-booking. Leaders lock cells, swap names, regenerate slices, then apply when ready.
In chat, the Assistant can embed an interactive roster card you can act on in the app.
Preview
[[ekkle:roster-proposal:…]]
Interactive roster proposal rendered in the app — not a wall of text.
Built on tools, not guesses
Capabilities map to real product tools. Super-admins can toggle tools per church. Every change happens in your tenant — the Assistant does not replace human leadership; it removes repetitive clicks.
What the Assistant can do today
Pulled from the shipped ability matrix in the Ekkle repo (docs/capabilities/abilities.yaml) — supported tools only.
130 supported capabilities
About Content
Add a new content block to the about page
manage_about_block
Remove a content block from the about page
manage_about_block
List content blocks on the church about page
list_about_blocks
Edit an existing about page content block
manage_about_block
Analytics
Summarize church analytics (DAU/WAU/MAU, feature engagement, sessions, Sunday Spine metrics) for the assistant
get_church_analytics_summary
Sunday Spine effectiveness metrics — time-to-Sunday-ready, inquiry response rate by kind/channel, and proactive sunday_prep ops — for monthly review and get_church_analytics_summary
get_church_analytics_summary
Appearance
Remove the church logo (revert to text wordmark)
remove_church_logo
Set the church logo from a public image URL (server-side fetch + re-host)
set_church_logo
Update header color and SPA tab-icon overrides
set_church_theme
View logo, header color, and nav icon visibility
get_church_theme
Assistant
Admin-only assistant tool wrapping AssistantInquiryService.AskBulletinReadinessAsync with the same AssistantProactivityLevel gate as ask_preacher_for_sunday. Asks the resolved bulletin maker how the bulletin is coming along. Backs the Wednesday sunday_prep recipe and can also be called ad hoc.
ask_bulletin_status_for_sunday
Admin-only assistant tool wrapping AskPreacherAsync with the AssistantProactivityLevel gate: "off" refuses, "suggest only" requires a propose_quick_replies permission round-trip before sending, "act with approval" sends immediately. Backs the Tuesday sunday_prep recipe and can also be called ad hoc if an admin asks Ekkle to nudge the preacher.
ask_preacher_for_sunday
Admin-only assistant tool wrapping AssistantInquiryService.AskSermonPlanAsync with the same AssistantProactivityLevel gate as ask_preacher_for_sunday: "off" refuses, "suggest only" requires a propose_quick_replies permission round-trip before sending, "act with approval" sends immediately. Asks the resolved preacher for their sermon title and passage. Backs the Wednesday sunday_prep recipe and can also be called ad hoc.
ask_sermon_plan_for_sunday
Cancel a scheduled agent task by id so it will not fire again
manage_agent_task
Turn off a built-in automation recipe by cancelling its underlying agent task.
disable_automation_recipe
Turn on a built-in automation recipe for this church (creates / reactivates the underlying agent task).
enable_automation_recipe
Schedule the assistant to react to a domain event (e.g. prayer_request_created, roster_confirmation_declined, event_reminder_owner_review_due) instead of a cron time. Uses schedule_agent_task with schedule_kind='on_event'.
schedule_agent_task
Fetch verified overnight/church activity for the daily admin briefing (prayer 24h, yesterday giving vs same weekday last week, new members 24h, roster gaps next 7 days, background job failures 24h, new visitors 24h + open/overdue follow-up tasks). Also injected server-side when the daily_admin_briefing recipe fires at 7am.
get_admin_daily_briefing
Show who currently receives proactive Ekkle Assistant outreach for this church (church-default + per-recipe overrides).
get_assistant_routing
List scheduled agent tasks for the current admin or the whole church
list_agent_tasks
List every Ekkle Assistant automation recipe known to the system, with whether it's enabled for this church and who currently receives it.
list_automation_recipes
Navigate the admin user to in-app pages (SPA) from chat; registry aligned with AppShell admin nav
navigate_to_page
Pause a scheduled agent task so it stops firing without being cancelled. Resume later with resume_agent_task.
manage_agent_task
Open a brand-new turn in the admin's bot conversation without a preceding user message. Used by event-triggered and proactive cron tasks to deliver briefings and event alerts.
schedule_agent_task
Send a companion push notification when a proactive turn opens, deep-linking the recipient to the bot conversation. Honors NotificationPreferenceCategory.AdminNotifications.
schedule_agent_task
Attach interactive quick-reply buttons (2–4 options) to the assistant's next reply so the user can pick a named action with one tap; the user may still type a free-form reply
propose_quick_replies
Curated recipe — every morning at 7am the assistant DMs the primary admin a 1-screen briefing of overnight prayer requests, giving, new members, roster gaps, background-job failures, and pastoral care (new visitors + open/overdue follow-ups), with one suggested action. Server pre-fetches verified data as briefingContext JSON before the assistant formats the reply.
enable_automation_recipe
Curated recipe — on the 1st of each month at 9am (church timezone) the assistant DMs the primary admin a review of the last 30 days of analytics and 3–5 suggestions for how Ekkle could be more effective; may call report_missing_capability once for the top product gap. Skips churches with MAU below 5. Off by default.
enable_automation_recipe
Curated recipe — when a member submits a prayer request the assistant DMs the primary admin (or ministry-role recipient for private requests) with a classification, suggested responder, and quick-reply actions.
enable_automation_recipe
Curated recipe — when a roster confirmation is declined the assistant DMs the group's leader with 1–3 eligible replacement candidates honoring back-to-back and load-balance rules.
enable_automation_recipe
Curated recipe — after a Sunday broadcast is transcribed, scan the full service transcript for announced upcoming events (bake sale, mission trip, prayer night, etc.). Any candidate not already on the calendar triggers a proactive DM to the primary admin with a draft event the assistant can create on confirmation.
enable_automation_recipe
Curated recipe — every Saturday at 4pm (church timezone) the assistant DMs the primary admin a readiness summary for tomorrow's service: what's confirmed, what's still open (critical roster gaps first), and a one-tap way to nudge again via propose_quick_replies. Server pre-fetches verified data as sundayReadinessContext JSON. Default on for every church; a true no-op until the church also sets AssistantProactivityLevel above "off".
enable_automation_recipe
Curated recipe — every Thursday at 9am (church timezone) the assistant DMs the primary admin about critical roster gaps and any still-pending roster confirmation requests for the upcoming service, and offers (or directly sends, depending on proactivity level) a nudge via send_roster_confirmation_requests_for_cells. Server pre-fetches verified data as sundayRosterNudgeContext JSON, including the current proactivityLevel/allowsDirectAction so the model doesn't need to re-derive it. Default on for every church; a true no-op until the church also sets AssistantProactivityLevel above "off".
enable_automation_recipe
Curated recipe — every Tuesday at 9am (church timezone) the assistant checks get_sunday_status for the upcoming Sunday and, if the preacher isn't confirmed, follows the proactivity-level behavior (silent no-op if "off"; propose-then-confirm if "suggest only"; ask directly if "act with approval") via ask_preacher_for_sunday. Default on for every church; a true no-op until the church also sets AssistantProactivityLevel above "off".
enable_automation_recipe
Curated recipe — every Wednesday at 9am (church timezone) the assistant checks get_sunday_status for the upcoming Sunday. If the preacher isn't confirmed yet it does nothing (Tuesday's job); otherwise if the sermon plan isn't confirmed it asks for it via ask_sermon_plan_for_sunday, else if the bulletin isn't confirmed it asks via ask_bulletin_status_for_sunday — following the same proactivity-level branching as the Tuesday recipe. Default on for every church; a true no-op until the church also sets AssistantProactivityLevel above "off".
enable_automation_recipe
Resume a previously-paused agent task; recomputes next-run from cron + timezone.
manage_agent_task
Schedule the assistant to take an action later (one-time at a specific UTC instant, or recurring via a cron expression in the church's timezone). At fire time the stored instruction is replayed back into the conversation as a synthetic user turn from the original admin and the assistant reacts to it normally
schedule_agent_task
Override the recipient on a specific recipe-spawned agent task so this single automation goes to a different admin than the church default.
set_automation_recipient
Choose (or clear) the church's primary Ekkle Assistant recipient — the single admin who receives every proactive automation by default. Same setting is also exposed at GET/PUT /churches/{id}/primary-assistant-admin.
set_primary_assistant_admin
Snooze a specific setup gap (by its key from get_setup_gaps) for N days (default 14) so the weekly proactive check stops raising it for a while. Does not fix anything — get_setup_gaps still reports a snoozed gap when the admin asks directly.
dismiss_setup_gap
List currently-detected Sunday Spine setup gaps (no bulletin_maker contact, unfilled critical roster slots for the upcoming week, a Sunday-looking group not linked to a service time, unclassified group responsibilities, streaming not configured), each with a human-readable description and a suggested next step. Always answerable on request regardless of the church's proactivity setting — the setting only gates unprompted surfacing (see setup_gap_coach.recipe_weekly_check).
get_setup_gaps
Curated recipe — once a week the assistant DMs the primary admin any active (non-snoozed) setup gaps and their suggested next steps. Skipped entirely when proactivity is Off, or when there are no active gaps. Under ActWithApproval, the assistant may additionally draft a one-tap fix (e.g. propose set_responsibility_contact or set_responsibility_kind) via propose_quick_replies, gated by AssistantProactivityGate.AllowsDirectAction — it never applies a fix without an explicit confirming tap.
enable_automation_recipe
Set or clear a church's default responsibility contact (bulletin_maker, primary_preacher, worship_leader, streaming_operator, other) via the assistant — the conversational fix for the "no bulletin maker" setup gap. Same underlying data as sunday_spine.responsibility_contacts; this row tracks the new assistant-tool path onto it.
set_responsibility_contact
AssistantChat
Answer an Ekkle-initiated question (e.g. "are you preaching this Sunday?") via quick-reply buttons or free text in the member/admin bot conversation; the reply drives the existing Sunday Spine write-back tools and marks the AssistantInquiry answered.
set_service_preacher
Dashboard
Update one allow-listed field (sermonTitle, passageRaw, label, sermonPlanStatus, bulletinStatus, guestBio) on a Sunday Spine service plan occurrence
set_service_plan_field
Set who's preaching for a Sunday Spine service plan occurrence (admin or the resolved preacher)
set_service_preacher
See the readiness status for an upcoming Sunday: preacher, sermon plan, and bulletin (unset/requested/confirmed), plus any unfilled critical roster slots (sound, streaming, greeters, etc.) resolved from the roster, default responsibility contacts, or the church admin.
get_sunday_status
Events
Skip the member reminder for one event occurrence (event stays on calendar)
cancel_event_occurrence
Confirm a pending event reminder so the member push notification is sent
confirm_event_reminder
Create a new church event
create_event
Delete a church event
delete_event
Get details of a specific event
get_event
List upcoming church events
list_events
View attendees / RSVPs for an event
list_event_attendees
List events the member owns, including pending reminder reviews
list_my_owned_events
Remove a member RSVP from an owned event (owner or admin)
remove_event_attendee
Headcount and attendee summary for an owned event
get_event_rsvp_summary
Set or update a member RSVP on an owned event (owner or admin)
set_event_attendee_rsvp
Assign event owners who confirm reminders and manage the event via assistant
set_event_owners
Update or reschedule an existing event (admins or assigned event owners)
update_event
Edit proposed push notification text before confirming an event reminder
update_event_reminder_preview
Features
Choose which ministry role receives notifications for private prayer requests (or default to church app admins)
set_prayer_private_recipient_role
Enable or disable the AI assistant
toggle_feature
Enable or disable service bulletin PDF upload and display
toggle_feature
Enable or disable the events feature
toggle_feature
Enable or disable online giving
toggle_feature
Enable or disable content moderation
toggle_feature
Enable or disable prayer requests
toggle_feature
Enable or disable sermon study guides
toggle_feature
Master switch for the whole Sunday Spine feature area — whether the admin-facing "This Sunday" readiness card is shown at all. Off by default; Ask and Capture and the proactivity level only take effect once this is on.
toggle_feature
Enable or disable thumbnail enhancement (including auto-apply)
toggle_feature
Enable or disable sermon transcription
toggle_feature
View enabled/disabled status of all church features
get_feature_status
General
Update church name, address, or service schedule
update_church_info
Change the church's URL slug
update_church_slug
View church name, address, service schedule, and feature status
get_church_info
Giving
Cancel a recurring gift subscription
cancel_my_recurring_gift
List active recurring gift subscriptions
list_my_recurring_gifts
View personal giving history
show_my_giving_history
Groups
Create, edit, delete groups and manage group membership
list_groups
Auto-assign responsibilities for one or more upcoming events with multi-week planning UX. The planner respects eligibility allow-lists, avoids back-to-back assignments, balances load, and prevents double-booking the same person across responsibilities in a single event. Leaders can lock cells, manually swap, regenerate scoped slices, or apply the whole roster. Group leaders (not just church admins) can drive the full flow through Ekkle for groups they lead.
manage_roster
Maintain a per-responsibility allow-list of which group members are eligible for an assignment (e.g. only pastors can serve Lord's Supper, only musicians can lead worship). When a responsibility has zero eligibility rows the entire group is eligible.
manage_group_responsibility
Classify a group responsibility with a semantic Sunday Spine kind (sound_av, streaming, worship_leader, bulletin_maker, greeter, childcare, hospitality, prayer, primary_preacher, other) and mark it critical for the service to run. A keyword heuristic (no LLM) suggests a kind first.
set_responsibility_kind
Home Content
Add a new content block to the home page
manage_home_block
Remove a content block from the home page
manage_home_block
List content blocks on the church home page
list_home_blocks
Edit an existing home page content block
manage_home_block
Live Stream
Upload a PDF service bulletin for the upcoming Sunday (auto-matched
get_bulletin_status
Set auto-shutoff duration for live streams (next or current)
set_stream_duration
Members
Assign or remove a member from a ministry role
manage_ministry_role
Create, rename, or delete a ministry role for the church
manage_ministry_role
List all church members with app roles, emails, and ministry role assignments
list_members
List church-defined ministry roles (pastor, elder, etc.) and who holds them
list_ministry_roles
Remove a member from the church
remove_member
Send a password-reset email to a church member
send_password_reset_email
Promote a member to Admin or demote to Member
update_member_role
View ministry roles assigned to the signed-in user in the current church
get_my_ministry_roles
Messaging
Send a single test SMS via the church's Telnyx number to verify the SMS setup
send_test_sms
Notifications
Cancel a pending scheduled notification
cancel_scheduled_notification
Schedule a push notification for future delivery
send_push_notification
Send a push notification to all members or specific individuals
send_push_notification
View sent and scheduled church notification history with delivery stats
list_notifications
Pastoral Care
Assign and track pastoral follow-up tasks for visitors and prayer requests
assign_pastoral_follow_up
Track visitor/guest records (CRM-lite) by week and follow-up status
list_visitors
Prayer
View and manage prayer requests
manage_prayer_request
Sermons
Search sermon transcripts by topic, scripture, or theme
search_sermons
Site Navigation
Add a navigation link to the church website
manage_site_nav
List primary and footer navigation items
list_site_nav
Remove a navigation link from the church website
manage_site_nav
Reorder all nav items in a single location (primary or footer)
manage_site_nav
Edit a nav item's label, target href, or location
manage_site_nav
Site Pages
Append (or insert at position) a structured section; image_url is fetched and re-hosted server-side
manage_page_sections
Remove the social-share preview image from a page
manage_site_page
Create a new custom website page
manage_site_page
Delete a website page
manage_site_page
List custom website pages
list_site_pages
List a page's structured content sections in display order with 0-based indices
manage_page_sections
Publish or unpublish a website page
manage_site_page
Remove a single section by current 0-based index
manage_page_sections
Reorder all sections on a page via permutation of current indices
manage_page_sections
Set a page's social-share preview image from a public URL (server-side fetch + re-host)
manage_site_page
Update an existing website page
manage_site_page
Patch a section's editable fields by current 0-based index
manage_page_sections
Support
Escalate a technical issue to the human support team
escalate_to_human
Website
Claim or replace a custom domain for the church website
manage_custom_domain
Re-run DNS verification and certificate issuance after publishing DNS records
manage_custom_domain
Stop serving the website on a custom domain (slug.ekkle.app keeps working)
manage_custom_domain
View custom-domain status, verification token, and required DNS records
manage_custom_domain
Toggle the public Give and Events pages on the church website
set_website_features
View the public-website feature toggles and their underlying feature flags
get_website_features
Ready to try it?
Apply as an early adopter — we onboard you personally, and the Assistant is available where your church enables it.
Apply as an early adopter