Skip to main content
Glama

Server Details

Faith tools for AI agents: cited KJV Scripture, ORA Q&A, sermons, churches, prayer & giving.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 37 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A4.3/5.0

Scored across 19 tools

Disambiguation5/5

Each tool targets a distinct resource or action: verse lookup, sermon search/retrieval/purchase, prayer submission/status, church directory, credit balance, faith context, lectionary, speech synthesis, doctrinal fit, and Scripture verification. Even overlapping tools like ask_ora vs get_verse are clearly differentiated by descriptions, and the two payment methods (purchase_sermon vs pay_with_x402) serve different rails with distinct workflows.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern, e.g., get_verse, search_sermons, purchase_bundle, submit_prayer_request. Even pay_with_x402 and ask_ora adhere to the verb-object structure, with objects being multi-word or proper nouns. No mixing of camelCase or inconsistent verb styles.

Tool Count4/5

With 19 tools, the server is at the upper edge of what is reasonable for a faith platform that spans multiple sub-domains (Bible study, sermons, prayer, giving, church discovery, liturgical calendar, user context, and speech synthesis). While it exceeds the typical 3-15 well-scoped range, the breadth of functionality justifies the count, and each tool addresses a distinct need.

Completeness4/5

The tool surface covers the core lifecycles for its primary resources: sermons (search, fetch, purchase via credits or x402, bundle purchase), prayers (submit, check status), and credits (balance check). However, there are minor gaps such as no tool to update or delete a prayer request, no tool to list user's purchases, and no direct top-up tool (though mentioned in docs). These are workable for an agent and do not cause critical failures.

Available Tools

19 tools
ask_oraA
Read-only
Inspect

Ask ORA, SoapBox's Scripture study aid, a Bible or faith question. Returns a grounded answer that cites public-domain (KJV) passages, plus the citations used. ORA is a STUDY AID — not a pastor, counselor, or therapist; for personal crises or pastoral/medical needs it points to a trusted pastor or professional. Use this for explanatory/study questions ('what does Romans 8 teach about...', 'where does the Bible discuss...'); use get_verse when you just need a verse's text.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesA Bible or faith study question in natural language.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=true, openWorldHint=true), the description discloses the response format (grounded answer with public-domain KJV citations) and the tool's scope as a study aid, not a substitute for pastoral or professional care. This adds meaningful behavioral context not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: it front-loads the action and result, then adds critical limitations and usage guidance. Every sentence serves a purpose with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter, no output schema, and relevant annotations, the description comprehensively covers what the tool does, what it returns, its limitations, and when to use it. It is complete enough for an agent to select and invoke the tool correctly without external documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the single parameter 'question' (a natural-language Bible/faith study question) with examples and length constraints, achieving 100% coverage. The description does not add additional parameter-level detail, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action (ask ORA a Bible or faith question) and the resource (SoapBox's Scripture study aid), with a distinct outcome (returns grounded answer citing KJV passages plus citations). It also explicitly differentiates from the sibling tool get_verse, making its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance for explanatory/study questions and names the alternative (get_verse) for simple verse lookups. It also clarifies limitations, directing users to trusted professionals for personal crises, which prevents misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browse_catalogA
Read-only
Inspect

Browse purchasable faith-content products on SoapBox (currently consented sermons; reading-plan and devotional bundles coming). Returns products with id, title, church, and price. Then buy with purchase_sermon. Optional church_id and text filter. No key required.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoOptional case-insensitive text filter matched against product titles.
limitNoMaximum number of products to return.
church_idNoOptional SoapBox community id to scope the catalog to a single church.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable context: 'No key required' (auth needs), 'currently consented sermons; reading-plan and devotional bundles coming' (scope/currency), and the exact return fields (id, title, church, price). This enriches beyond the annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: what it does, what it returns, and a purchase pointer. Every sentence adds value, and the structure is front-loaded with the tool's purpose. No fluff or redundant detail beyond the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list/browse tool, the description is complete: it states the products available, return fields, an optional filter, and the follow-up purchase action. With no output schema, the return fields are explicitly listed. OpenWorldHint is covered by annotations, and the 'No key required' note resolves auth concerns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters with descriptions and examples. The description merely mentions 'Optional church_id and text filter', adding no new meaning beyond what the schema already provides. Given the high schema coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Browse') with a clear resource ('purchasable faith-content products on SoapBox') and explicitly distinguishes from the purchase step ('Then buy with purchase_sermon'). It also clarifies current scope, making it distinct from sibling tools like search_sermons.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a workflow: use browse_catalog to discover products, then purchase with purchase_sermon. It notes the current content scope ('currently consented sermons'), hinting at when this tool is appropriate. However, it does not explicitly state when not to use it or mention alternatives like search_sermons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_prayer_statusA
Read-only
Inspect

Check how many people are praying for a prayer request previously submitted for a user (and whether it's been marked answered). Requires the same user's consent_token; only returns status for that user's own prayers.

ParametersJSON Schema
NameRequiredDescriptionDefault
prayer_idYesThe prayer_id returned by submit_prayer_request.
consent_tokenYesThe same user's SoapBox consent token (scope 'prayer:write') used when the prayer was submitted. Only returns status for that user's own prayers.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and destructiveHint=false, so the tool is a safe read. The description adds valuable context beyond annotations: it discloses that a valid consent_token is required (authorization constraint) and that results are restricted to the user's own prayers. It also mentions the answered status field. It does not detail response format or error behavior, but for a read-only tool with this level of annotation coverage, the added context is solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the core action, the prerequisite, and the scoping rule with zero waste. Every clause earns its place, making it efficient for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two well-documented parameters and no output schema, the description covers the essential aspects: what it does, the prerequisite (consent_token), and the data it returns (count and answered flag). It does not describe the response format explicitly, but the description implies the key fields. No significant information an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% – both prayer_id and consent_token have descriptive entries in the schema. The description does not add new semantics beyond what the schema already provides, though it reinforces the consent_token requirement. Since the schema carries the full parameter documentation, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Check how many people are praying for a prayer request previously submitted for a user (and whether it's been marked answered).' It uses a specific verb (check), names the resource (prayer status), and distinguishes itself from the sibling submit_prayer_request by referencing 'previously submitted'. The scope constraint ('only returns status for that user's own prayers') further clarifies what it does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: 'previously submitted' implies it should be used after a prayer request has been created via submit_prayer_request. It also specifies a prerequisite ('Requires the same user's consent_token') and the scoping rule. However, it does not explicitly name alternatives or state 'use this instead of X', though the sibling list makes the pairing obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_churchesA
Read-only
Inspect

Find churches near a location from SoapBox's public church directory. Given latitude/longitude (and optional radius, denomination filter), returns nearby churches with name, denomination, city/state/country, website, distance in miles, and whether the church is on SoapBox (with its community id for deep-linking). Public directory data only — no personal contact info.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude of the search center, in decimal degrees.
lngYesLongitude of the search center, in decimal degrees.
limitNoMaximum number of churches to return.
denominationNoOptional case-insensitive denomination filter.
radius_milesNoSearch radius in miles.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and non-destructive. The description adds context about the public directory scope, absence of personal contact info, and the specific return fields including distance and SoapBox status, going beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main action, and every phrase adds value. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description enumerates the return fields and the data scope, which is essential. It does not cover edge cases or error behavior but is sufficient for a straightforward lookup tool with strong annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all five parameters including types, ranges, and defaults. The description only mentions 'optional radius, denomination filter', which duplicates the schema, adding no new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Find' with a clear resource 'churches near a location' and details what is returned. It distinguishes itself from sibling tools like browse_catalog by focusing on church location search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing nearby churches but does not explicitly state when not to use it or mention alternatives. The note about public data is a constraint, not a comparative guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_credit_balanceA
Read-only
Inspect

Check how many marketplace credits your API key has (in cents) for buying paid sermon access, plus your tier and daily rate limit. Top-ups are done via the topup API action or the SoapBox developer portal.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable context about what the balance represents (marketplace credits in cents), the inclusion of tier and rate limit in the response, and the location of top-up functionality, going beyond the annotation safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise, front-loaded sentences. The first sentence states the core purpose and return content; the second adds relevant operational context about top-ups. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description responsibly describes what the caller receives (credit balance in cents, tier, daily rate limit). It also covers the related top-up action, making the tool's role within the system clear. Fully adequate for a parameterless read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no need for parameter explanation. Baseline for 0 params is 4, and the description appropriately focuses on return values rather than parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'Check' and the resource 'marketplace credits' with specifics: amount in cents, tier, and daily rate limit. Distinguishes from siblings by focusing on balance for buying sermon access.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states that top-ups are done via the topup API action or portal, clearly implying this tool is only for checking balance and not for topping up. This provides a clear alternative and when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_faith_contextA
Read-only
Inspect

Read a user's portable 'faith context' to personalize your responses — their denomination, preferred language, faith journey, and ministry interests — shared WITH THE USER'S EXPLICIT CONSENT. Requires the user's consent_token with the 'context:read' scope (bound to this agent). Use it to tailor tone, tradition, and language. It returns only the user's declared profile (never their private prayers or journal).

ParametersJSON Schema
NameRequiredDescriptionDefault
consent_tokenYesOpaque SoapBox consent token with the 'context:read' scope. The user generates it in the SoapBox app (Settings › AI Agents). The first agent key to use a token is bound to it; a token no agent uses within 24 hours of being created stops working. Returns only the user's declared profile (denomination, preferred language, faith journey, ministry interests) — never their private prayers or journal. An invalid, expired, or wrong-scope token returns an authorization error.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare readOnlyHint=true and destructiveHint=false, but the description goes beyond by detailing the consent requirement, the token binding to the agent, the 24-hour token lifecycle, and the explicit exclusion of private prayers/journal. It also warns about authorization errors. This is rich behavioral context that annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured, with the main purpose front-loaded, followed by consent requirements and privacy scoping. While the parameter description is comprehensive, it is slightly lengthy but still focused. Every sentence serves a clear purpose, balancing conciseness and necessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given it has a single parameter with high schema coverage and no output schema, the description fully compensates by explaining the exact data returned and the authorization failure case. There is no ambiguity about what the tool does, what inputs it needs, and what the agent should expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes the consent_token with examples and scope, but the description adds value by embedding the full token lifecycle and privacy guarantees. It reinforces what the token is and its constraints, complementing the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to read a user's portable faith context for personalization, with explicit consent. It distinguishes this from siblings like get_verse or get_sermon by focusing on the user's profile data. The description also specifies what is included (denomination, language, journey, interests) and what is excluded (praises, journal).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use it: to tailor tone, tradition, and language. It also provides clear constraints: requires the user's consent_token with specific scope, and clarifies that it returns only declared profile, not private data. This gives the agent precise conditions for invocation and what to expect.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_lectionaryA
Read-only
Inspect

Get the Western (Revised Common Lectionary / Roman) liturgical season, liturgical color, RCL year (A/B/C), and any major feast for a date (defaults to today). Useful for date-aware, season-appropriate faith content. Daily readings are not included (those tables are licensed). No key required.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoOptional ISO date (YYYY-MM-DD). Defaults to today in UTC.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint and destructiveHint, so safety is covered. The description adds that no key is required, that it defaults to today, and that daily readings are excluded due to licensing. This provides useful context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with essential information front-loaded. No redundancy, every clause adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one optional parameter and no output schema, the description covers return values, default behavior, exclusions, and authentication. It is fully sufficient given the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers the single 'date' parameter with format, pattern, examples, and description. The tool description repeats the default-to-today behavior but adds no new meaning beyond the schema. With 100% schema coverage, baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states the verb 'Get' and the specific resource: Western liturgical season, color, RCL year, and major feast for a date. It clearly differentiates from siblings like get_sermon or get_verse by focusing on liturgical calendar data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States 'Useful for date-aware, season-appropriate faith content' which gives context. Excludes daily readings with the note about licensing, implicitly steering users elsewhere for readings. However, it doesn't name specific alternative tools, so not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sermonA
Read-only
Inspect

Fetch full metadata and (optionally) the transcript for ONE sermon by its id — typically a sermon_id returned by search_sermons. Only returns sermons a pastor has opted in to share with agents; otherwise returns not-found. If the sermon is paid and you haven't purchased it, the transcript is withheld and a price is returned — call purchase_sermon first. Free sermons return the transcript directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
sermon_idYesThe sermon's id, typically the sermon_id from a search_sermons result.
include_transcriptNoWhether to include the full transcript text (only for free or already-purchased sermons).

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, but the description adds significant behavioral context beyond that: the parishioner opt-in requirement, not-found response, and transcript withholding for unpaid sermons with price return. These are critical behavioral traits that annotations cannot convey. No contradiction exists between description and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the main action and purpose. Each sentence carries essential information: primary function, availability constraints, and pricing behavior. No filler or redundancy. It is concise yet complete, achieving high information density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter fetch tool with no output schema, the description covers all critical context: identifying the sermon, opt-in limitations, paid vs. free access, and the recommended purchase flow. It explains return variations (not-found, withheld transcript with price) without needing to enumerate metadata fields. Given the tool's simplicity and the supporting annotations, this description is fully adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful context for sermon_id by stating it's 'typically a sermon_id returned by search_sermons', which connects the tool to its sibling workflow. It also clarifies the include_transcript behavior by explaining when the transcript is returned (free or purchased) versus withheld. This goes slightly beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Fetch') and resource ('metadata and optionally the transcript for ONE sermon by its id'). It explicitly distinguishes from siblings like search_sermons (which lists/search) and purchase_sermon (which buys). The scope ('ONE sermon') and the reference to 'sermon_id returned by search_sermons' anchor its unique role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context: use after search_sermons to get details for a specific sermon. It also gives an alternative/next step: 'call purchase_sermon first' for paid sermons. It explains when results are not available (opt-out pastors) and distinguishes free vs paid behavior, giving clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_verseA
Read-only
Inspect

Look up a public-domain KJV Bible verse by book, chapter, and verse.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookYesCanonical book name (English). Accepts common forms like 'John', 'Psalms', '1 Corinthians', 'Song of Solomon'.
verseYesVerse number within the chapter (1-based).
chapterYesChapter number (1-based).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds the context that the verse is from the public-domain KJV translation, which clarifies the source. However, it does not describe error behavior or the exact return format beyond the implication that the verse text is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that conveys the tool's purpose without redundancy. Every word contributes to understanding the action and scope, making it highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple read-only nature confirmed by annotations and the complete parameter schema, the description adequately covers the core use case. It specifies the translation and addressing scheme, though it doesn't detail return format or error handling. For a tool of this simplicity, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes all three required parameters with descriptions and examples, achieving 100% coverage. The description merely repeats the parameter names ('book, chapter, and verse') without adding additional semantics, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'look up' and clearly identifies the resource as a public-domain KJV Bible verse addressed by book, chapter, and verse. This distinguishes it from siblings like verify_scripture or lookup_strongs, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when a specific verse is needed but provides no explicit guidance on when to choose this tool over siblings like verify_scripture or get_lectionary. There are no exclusion criteria or alternative tools mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

give_to_churchA
DestructiveIdempotent
Inspect

Make a one-time donation to a church ON BEHALF OF A USER, within the spending caps they pre-authorized. Requires the user's consent_token with the 'giving:write' scope (bound to this agent) and a card they saved in the SoapBox app. The gift goes straight to the church (passthrough — SoapBox takes no cut). Rejected if the amount exceeds the per-gift or monthly cap. Pass a stable idempotency_key to avoid double-charging on retries. Amounts are in the smallest currency unit (cents). This moves the user's money: confirm the church and amount with the user before every call. The user is notified of every gift.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional short note to the church accompanying the gift.
currencyNoOptional ISO 4217 currency code (lowercase). Must be the church's own currency; omit it to use that. AI-agent gifts are available in USD, CAD, GBP, EUR, AUD and NZD.
amount_centsYesGift amount in the smallest currency unit (cents), at least 100. Must be within the user's per-gift and monthly caps or the call is rejected.
community_idYesThe recipient church's SoapBox community id (e.g. the soapbox_community_id from find_churches).
consent_tokenYesOpaque SoapBox consent token with the 'giving:write' scope, carrying the user's pre-authorized per-gift and monthly caps. Generated by the user in the SoapBox app (Settings › AI Agents). The first agent key to use a token is bound to it; a token no agent uses within 24 hours of being created stops working.
idempotency_keyNoA stable, caller-generated key so retries don't double-charge. Reuse the same key when retrying the same intended gift.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=true), the description discloses the passthrough mechanism ('SoapBox takes no cut'), rejection on cap violations, the need for a stable idempotency_key, the mandatory user confirmation, and user notification. These behavioral specifics are not inferable from annotations and substantially aid correct invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, then layers prerequisites, rejection conditions, idempotency, and safety guidance in a logical order. Every sentence carries practical, non-redundant information; no filler, no repetition of annotation values. Its length is justified by the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a money-moving tool with no output schema, the description covers prerequisites (token, card), failure modes (caps), idempotency, user-confirmation duty, and notification. It does not specify the response/return payload or what happens when a saved card is missing, but these are minor given the schema and annotations cover the main operational concerns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description mostly repeats schema facts, e.g., 'Amounts are in the smallest currency unit (cents)' and 'Pass a stable idempotency_key to avoid double-charging on retries' mirror the parameter descriptions exactly. It adds no new parameter-level insight beyond what the schema already communicates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb-resource pair ('Make a one-time donation to a church') and adds the crucial 'ON BEHALF OF A USER' scope, which distinguishes it from generic payment tools. It also mentions the spending-cap constraint and the giving:write consent scope, making it unmistakable among siblings like purchase_sermon or pay_with_x402.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear preconditions: a consent_token with 'giving:write', pre-authorized caps, and a saved card. It also instructs the agent to confirm with the user before calling. However, it never explicitly names alternatives or states 'use this for giving, not purchasing', so it stops short of the explicit routing in the strongest examples.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_strongsA
Read-only
Inspect

Look up a Strong's Greek/Hebrew lexicon entry (lemma, transliteration, gloss, definition).

ParametersJSON Schema
NameRequiredDescriptionDefault
strongs_numberYesA Strong's number: 'G' + digits for Greek (New Testament) or 'H' + digits for Hebrew (Old Testament).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds value by explicitly stating the content of the lexicon entry (lemma, transliteration, gloss, definition), giving the agent insight into the return data. This exceeds what annotations alone provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the action and resource, and it efficiently lists the key output fields without unnecessary detail. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple single-parameter lookup. The description covers the input (Strong's number), the lexicons (Greek/Hebrew), and the expected output (lemma, transliteration, gloss, definition). Given the annotations and schema, the description is fully adequate for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the strongs_number parameter with pattern and examples, achieving 100% schema description coverage. The description adds no parameter information, but the schema carries the semantic weight, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Look up a Strong's Greek/Hebrew lexicon entry' with the specific data fields (lemma, transliteration, gloss, definition). This specific verb+resource combination distinctly identifies its purpose and differentiates it from sibling tools like get_verse or search_sermons.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by defining what the tool returns, but it does not explicitly state when to use it versus alternatives. It lacks guidance on when to prefer this tool over others, though the unique purpose makes the context fairly clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pay_with_x402A
Idempotent
Inspect

Pay for a paid sermon or bundle per-call in USDC on Base using the x402 protocol — the AGENT-NATIVE rail, no SoapBox account, API key, or prepaid credits required (https://github.com/coinbase/x402). Two-step, exactly per spec: (1) call with just the sermon_id (or bundle_id) and NO payment to get back the HTTP-402 payment requirements — the USDC amount, asset, network ('base'), and SoapBox's payTo receive address. (2) Send EXACTLY maxAmountRequired USDC on Base to payTo — any other amount is refused. Sign the 402's onchainPayment.message (your tx hash in lower case, and the item) with the wallet that paid, then call again with x_payment set to base64 of {"txHash":"0x...","signature":"0x..."} — SoapBox checks the on-chain transfer came from the signing wallet, records the sale (church keeps 70%), and returns the transcript. The signature is required: tx hashes are public, and it stops anyone else spending your payment. Idempotent per tx hash. Gasless EIP-3009 'exact' payments via an x402 facilitator are also accepted in the same x_payment field.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundle_idNoThe bundle to pay for. Provide exactly one of sermon_id or bundle_id.
sermon_idNoThe sermon to pay for. Provide exactly one of sermon_id or bundle_id.
x_paymentNoStep 2 only: a base64-encoded JSON x402 payment payload (e.g. base64 of {"txHash":"0x...","signature":"0x..."} for an on-chain Base USDC transfer, signed by the paying wallet as the 402's onchainPayment says, or an EIP-3009 authorization for a facilitator). Omit entirely on step 1 to receive the HTTP-402 payment requirements.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes far beyond the annotations, detailing the two-step 402 flow, the requirement to send exactly maxAmountRequired, refusal of other amounts, the mandatory signature, idempotency per tx hash, and accepted EIP-3009 gasless payments. This is rich, accurate behavioral disclosure with no contradiction against the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although long, the description is well structured and every sentence earns its place. The core purpose is front-loaded, followed by a numbered two-step flow, clear payment constraints, and the reason the signature is required. The length is justified by the complexity of the protocol.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex payment tool with no output schema, the description is remarkably complete: it covers the full call sequence, exact payment amount and network, recipient address, signing requirements, idempotency, and an alternative payment path. An agent has enough information to invoke both steps correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful protocol-level meaning: exactly one of sermon_id or bundle_id is required, x_payment must be omitted on step 1, and step 2 requires a base64 payload containing a signed tx hash as described. This goes beyond the schema's property descriptions without being redundant.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action and resource: paying for a sermon or bundle per-call in USDC on Base using x402. It differentiates this rail from SoapBox's account/credit-based flow by explicitly saying no account, API key, or prepaid credits are required.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the appropriate context clear: agent-native per-call payments without SoapBox credentials, with a precise two-step protocol. It does not explicitly name sibling alternatives like purchase_sermon or purchase_bundle and state when to choose them instead, so it stops short of full when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

purchase_bundleA
Idempotent
Inspect

Buy a bundle (a sermon series — multiple sermons sold together at one price) using prepaid marketplace credits. Grants access to EVERY sermon in the bundle. Same terms as purchase_sermon: church keeps 70% of net, SoapBox 30% (a content sale, not a donation). Idempotent. Find bundles via browse_catalog (type: bundle). No key / no credits? Pay per-call in USDC on Base via x402 — call pay_with_x402 with this bundle_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundle_idYesThe bundle's id — the product_id from browse_catalog where type=bundle.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond annotations by disclosing revenue split (70/30), classifying the transaction as a content sale rather than a donation, and confirming that it grants access to every sermon. While the idempotentHint is already in annotations, the description reinforces it and adds valuable financial and access context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise yet information-dense, covering all key aspects (action, payment, discovery, revenue split, idempotency) without redundancy. Each sentence earns its place, and the structure is clear and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter purchase tool, the description is remarkably complete: it explains what a bundle is, how to acquire it (credits or x402), how to find it, the financial terms, and idempotency. There is no output schema, so return format is not required. The description leaves no obvious gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully describes bundle_id, including its origin as product_id from browse_catalog. The description adds marginal value by referencing the use of bundle_id in pay_with_x402, but this is more about an alternative flow than the parameter's semantics for this tool. With 100% schema coverage, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'buy' and the resource 'bundle (a sermon series)', and explains it grants access to every sermon. It distinguishes itself from sibling purchase_sermon by focusing on bundles and mentions how to find bundles via browse_catalog. The explicit reference to 'same terms as purchase_sermon' further differentiates it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: use this tool to purchase bundles with prepaid credits; if no credits, use pay_with_x402 with the same bundle_id. It also directs users to browse_catalog for discovery. This gives clear usage context and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

purchase_sermonA
Idempotent
Inspect

Buy permanent access to a paid sermon using your prepaid marketplace credits. SoapBox is the Merchant of Record: the church keeps 70% and SoapBox takes a 30% platform fee (this is a content SALE, NOT a donation — donations always go 100% directly to the church). After purchase, get_sermon returns the full transcript. Purchases are idempotent (buying the same sermon twice won't double-charge). If you have insufficient credits, check get_credit_balance and top up. No key / no credits? Pay per-call in USDC on Base via x402 instead — call pay_with_x402 with this sermon_id (agent-native, no SoapBox account).

ParametersJSON Schema
NameRequiredDescriptionDefault
sermon_idYesThe paid sermon to purchase, e.g. a sermon_id from search_sermons or browse_catalog.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description adds valuable context: merchant-of-record fee split (70/30), the fact it's a sale not a donation, that get_sermon will then return the full transcript, and that purchases are idempotent (no double-charge). This goes well beyond what annotations declare, giving clear behavioral expectations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose and every sentence earns its place: fee structure, post-purchase behavior, idempotency, credit insufficiency handling, and the x402 alternative. It is dense but not bloated, with no redundant repetition of schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single-parameter schema, no output schema, and modest annotations, the description covers all necessary context: what the tool does, how payment works, what happens after purchase (get_sermon returns transcript), failure modes (insufficient credits), and alternative payment routes. It paints a complete mental model for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes sermon_id with examples and explanation ('The paid sermon to purchase, e.g. a sermon_id from search_sermons or browse_catalog'). Schema coverage is 100%, so the description adds little parameter-specific meaning beyond the schema. The description mentions the sermon_id in the context of x402, but that's not new semantic detail for the parameter itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Buy permanent access to a paid sermon using your prepaid marketplace credits.' This clearly states what the tool does and uniquely positions it among siblings like get_sermon (which retrieves after purchase) and pay_with_x402 (an alternative payment method).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use and when-not-to-use guidance, including alternatives: 'If you have insufficient credits, check get_credit_balance and top up. No key / no credits? Pay per-call in USDC on Base via x402 instead — call pay_with_x402 with this sermon_id.' It also differentiates from donations, clarifying this is a content sale.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_doctrinal_fitA
Read-only
Inspect

Assess how well a statement aligns with a named Christian tradition's historic doctrinal positions (e.g. Reformed, Roman Catholic, Pentecostal, Eastern Orthodox). Returns an impartial alignment rating, score, summary, and the relevant doctrinal loci. Analytical, not proselytizing. No key required.

ParametersJSON Schema
NameRequiredDescriptionDefault
statementYesThe theological statement or claim to assess.
traditionYesThe Christian tradition or denomination to assess alignment against.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable context beyond this: it returns an impartial rating, score, summary, and doctrinal loci, and explicitly states it is analytical and not proselytizing. These details clarify the tool's tone and output, going beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, consisting of two focused sentences. The first states the core purpose, and the second covers output, impartiality, and access requirements. Every sentence contributes meaningful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description clearly enumerates the return values (rating, score, summary, loci) and notes the impartial, analytical nature. It does not mention potential errors or limitations, but for a read-only, non-destructive tool, the description is sufficiently complete for an agent to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters fully described and examples provided. The description does not add additional parameter-specific semantics beyond what the schema already offers, so it relies on the schema to carry the parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool assesses doctrinal alignment with named Christian traditions, using specific verbs and resources. It distinguishes itself from siblings like verify_scripture by focusing on tradition-based evaluation rather than scriptural verification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on the tool's appropriate use: it's analytical, not proselytizing, and requires no key, implying open access. However, it does not explicitly mention when not to use it or mention sibling alternatives, falling slightly short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_sermonsA
Read-only
Inspect

Semantically search real sermons on SoapBox that pastors have explicitly opted in to share with AI agents. Returns ranked transcript excerpts with the sermon title, church, speaker, scripture reference, and a start-time (seconds) so you can cite the exact moment. Use this to find what churches are actually preaching on a topic. Only consented, published sermons are searchable.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesA topic, phrase, or question to semantically search sermon transcripts for.
church_idNoOptional SoapBox community id to scope the search to a single church.
match_countNoMaximum number of ranked excerpts to return.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that only consented, published sermons are searchable and describes the return format (ranked excerpts with title, church, speaker, scripture reference, start-time). This goes beyond the readOnlyHint annotation, adding material context about data provenance and output structure without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences with each serving a distinct purpose: core function, return fields, usage recommendation, and consent constraint. No redundant or filler content; information is front-loaded with the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, so the description compensates by detailing exact return fields and the start-time for citation. It also covers the data source scope and consent. This is complete for a search tool, leaving no major informational gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides full descriptions for all three parameters (query, church_id, match_count) with examples and constraints. The description's mention of 'semantic search' adds no new parameter-level meaning beyond what the schema states, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'semantically search real sermons on SoapBox' with a specific resource (opted-in sermon transcripts) and output (ranked excerpts with metadata). It differentiates from siblings like get_sermon (retrieving a specific sermon) and find_churches (searching churches) by focusing on topical sermon search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the use case: 'Use this to find what churches are actually preaching on a topic.' It also mentions the consent constraint. However, it does not explicitly say when not to use it or name alternative tools, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_prayer_requestAInspect

Post a prayer request to SoapBox's prayer wall ON BEHALF OF A USER, so their community can pray for it. Requires the user's consent_token (which they generate in the SoapBox app and which must include the 'prayer:write' scope) — an API key alone is not enough to act for a user. Returns the new prayer_id; use check_prayer_status to see how many are praying.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe prayer request text, in the user's own words.
is_privateNoIf true, keep it private to the user; if false, share it on the community wall so others can pray.
consent_tokenYesOpaque SoapBox consent token with the 'prayer:write' scope, generated by the user in the SoapBox app (Settings › AI Agents). The first agent key to use a token is bound to it; a token no agent uses within 24 hours of being created stops working. An invalid, expired, or wrong-scope token returns an authorization error.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With all annotation hints set to false (readOnly, openWorld, idempotent, destructive), the description carries the burden of behavioral disclosure. It excels by revealing critical traits: the token binding to the first agent, the 24-hour expiry, the requirement for prayer:write scope, and the return of a new prayer_id. It also implies non-idempotency through 'Post' and 'Returns the new prayer_id'. This is substantial and goes beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, but every part earns its place. The first sentence front-loads the primary action and its on-behalf-of nature. The second packs the consent-token requirement, the API-key limitation, the return value, and a pointer to the follow-up tool. No redundant phrases, perfectly structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is a mutation tool with no output schema, the description is nearly complete. It states the action, prerequisites, token constraints, return value, and a follow-up tool. It does omit specifics on error handling beyond token issues and does not describe any side effects like visibility timing, but given the schema already handles parameter details, this is adequate for an agent to invoke it correctly. A slight gap is the lack of explicit behavioral notes for is_private, but that's in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100% for all three parameters, with each having its own detailed description (e.g., consent_token explains scope, binding, and expiry). The tool description adds only the return value as context, not per-parameter nuances. Since the schema already documents the parameters thoroughly, the description's contribution is minimal, matching the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Post a prayer request'), the resource ('SoapBox's prayer wall'), and the scope ('ON BEHALF OF A USER'). It also distinguishes itself from the sibling check_prayer_status by mentioning the return of a prayer_id and directing to that tool for follow-up, which differentiates its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear prerequisite: it requires a user's consent_token with the 'prayer:write' scope and explicitly notes that an API key alone is insufficient. This serves as an implicit condition for when to use the tool. It also recommends check_prayer_status for post-creation status checks. However, it does not explicitly state when not to use it or name alternative creation tools, though the token requirement effectively bounds usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

synthesize_speechA
Idempotent
Inspect

Generate spoken-audio (text-to-speech) for a verse, prayer, or devotional in 50+ languages, and get back a playable audio URL. Pass BCP-47 language (e.g. en-US, es-ES, sw-KE), optional voice/gender. Results are cached. Requires an API key (audio generation has real cost).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to synthesize into speech (a verse, prayer, or short devotional).
voiceNoOptional specific Google Cloud TTS voice name; overrides the default voice for the language.
formatNoAudio container/encoding of the returned URL.mp3
genderNoPreferred voice gender when a specific voice is not named.NEUTRAL
languageNoBCP-47 language tag for the voice.en-US

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavioral traits: results are cached (consistent with idempotentHint), requires an API key, and notes that audio generation has real cost. This adds valuable context that annotations alone do not convey and aligns with the non-read-only, non-destructive hints. No contradiction found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each with a clear purpose: the first states the core function and output, the second covers the primary input parameters, the third notes caching behavior, and the fourth explains the API key requirement and cost. No filler or redundancy; front-loaded with the main purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description tells you exactly what to expect ('playable audio URL'), covers the required input (text), key optional parameters, caching, auth, and cost. All five parameters are well-specified in the schema, and the description provides the missing operational context (cost, key) needed for a complete usage picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters in detail. The description adds only a small framing benefit (e.g., '50+ languages', 'optional voice/gender') but does not provide new semantic details beyond the schema's own parameter descriptions. This matches the baseline for complete schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Generate') and resource ('spoken-audio / text-to-speech') and clearly states the output ('playable audio URL'). It also scopes the content domain ('verse, prayer, or devotional'), distinguishing it clearly from sibling tools like get_verse or search_sermons, which are text-based.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context on how to use the tool by mentioning the BCP-47 language tag and optional voice/gender parameters. The cost and API key requirement give practical usage guidance, though it does not explicitly name alternatives or state when not to use this tool (no TTS alternatives exist among siblings anyway).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_scriptureA
Read-only
Inspect

Verify whether a quote is real Scripture and cited correctly (anti-hallucination). Returns whether it matches a real verse, the canonical KJV reference + text, a confidence score, and — if you pass a claimed reference — whether the attribution is correct. Use this before presenting any Bible quote to avoid misquotes/fabrications.

ParametersJSON Schema
NameRequiredDescriptionDefault
quoteYesThe exact quote to verify, as you would present it to a user.
referenceNoOptional claimed reference to check the attribution against.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnlyHint=true and destructiveHint=false, the description adds value by detailing what the tool returns: whether it matches a real verse, canonical KJV reference + text, a confidence score, and attribution correctness. This gives the agent a clear expectation of the tool's behavior beyond the generic read-only hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and each sentence earns its place. It avoids fluff while packing in the essential behavioral details and usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description compensates by listing the key return elements (real verse match, KJV reference + text, confidence score, attribution correctness). The tool is simple (2 params, read-only), and the description covers the purpose, usage, and outputs thoroughly, making it complete for an agent to decide when and how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters, providing a baseline of 3. The description adds meaning beyond the schema by explaining the purpose of the optional reference parameter ('if you pass a claimed reference — whether the attribution is correct') and by emphasizing that the quote is verified against real Scripture. This enhances the semantic understanding of the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Verify whether a quote is real Scripture and cited correctly (anti-hallucination).' This uses a specific verb (verify) and resource (quote/Scripture), and distinguishes it from sibling tools like get_verse by focusing on verification rather than retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: 'Use this before presenting any Bible quote to avoid misquotes/fabrications.' It also explains the conditional use of the reference parameter ('if you pass a claimed reference'). It doesn't explicitly mention alternatives or when-not-to-use, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • Changedcheck_prayer_status1 field changed
      • changedInput schema / properties / consent_token / examples
        Previous value: -[
        -  "sbxpr_9f3a2b7c4d5e6f7a…"
        -]New value: +[
        +  "sbxc_9f3a2b7c4d5e6f7a…"
        +]
    • Changedget_faith_context2 fields changed
      • changedInput schema / properties / consent_token / description
        Previous value: -"Opaque SoapBox consent token with the 'context:read' scope, bound to your agent key. The user generates it in the SoapBox app. Returns only the user's declared profile (denomination, preferred language, faith journey, ministry interests) — never their private prayers or journal. An invalid, expired, or wrong-scope token returns an authorization error."New value: +"Opaque SoapBox consent token with the 'context:read' scope. The user generates it in the SoapBox app (Settings › AI Agents). The first agent key to use a token is bound to it; a token no agent uses within 24 hours of being created stops working. Returns only the user's declared profile (denomination, preferred language, faith journey, ministry interests) — never their private prayers or journal. An invalid, expired, or wrong-scope token returns an authorization error."
      • changedInput schema / properties / consent_token / examples
        Previous value: -[
        -  "sbxctx_9f3a2b7c4d5e6f7a…"
        -]New value: +[
        +  "sbxc_9f3a2b7c4d5e6f7a…"
        +]
    • Changedgive_to_church6 fields changed
      • changedInput schema / properties / amount_cents / description
        Previous value: -"Gift amount in the smallest currency unit (cents). Must be within the user's per-gift and monthly caps or the call is rejected."New value: +"Gift amount in the smallest currency unit (cents), at least 100. Must be within the user's per-gift and monthly caps or the call is rejected."
      • changedInput schema / properties / amount_cents / minimum
        Previous value: -1New value: +100
      • changedInput schema / properties / consent_token / description
        Previous value: -"Opaque SoapBox consent token with the 'giving:write' scope, bound to your agent key and carrying the user's pre-authorized per-gift and monthly caps. Generated by the user in the SoapBox app."New value: +"Opaque SoapBox consent token with the 'giving:write' scope, carrying the user's pre-authorized per-gift and monthly caps. Generated by the user in the SoapBox app (Settings › AI Agents). The first agent key to use a token is bound to it; a token no agent uses within 24 hours of being created stops working."
      • changedInput schema / properties / consent_token / examples
        Previous value: -[
        -  "sbxgv_9f3a2b7c4d5e6f7a…"
        -]New value: +[
        +  "sbxc_9f3a2b7c4d5e6f7a…"
        +]
      • changedInput schema / properties / currency / description
        Previous value: -"Optional ISO 4217 currency code (lowercase). Defaults to the church's own currency."New value: +"Optional ISO 4217 currency code (lowercase). Must be the church's own currency; omit it to use that. AI-agent gifts are available in USD, CAD, GBP, EUR, AUD and NZD."
      • changedInput schema / properties / currency / examples
        Previous value: -[
        -  "usd",
        -  "ugx"
        -]New value: +[
        +  "usd",
        +  "cad"
        +]
    • Changedsubmit_prayer_request2 fields changed
      • changedInput schema / properties / consent_token / description
        Previous value: -"Opaque SoapBox consent token with the 'prayer:write' scope, generated by the user in the SoapBox app. An invalid, expired, or wrong-scope token returns an authorization error."New value: +"Opaque SoapBox consent token with the 'prayer:write' scope, generated by the user in the SoapBox app (Settings › AI Agents). The first agent key to use a token is bound to it; a token no agent uses within 24 hours of being created stops working. An invalid, expired, or wrong-scope token returns an authorization error."
      • changedInput schema / properties / consent_token / examples
        Previous value: -[
        -  "sbxpr_9f3a2b7c4d5e6f7a…"
        -]New value: +[
        +  "sbxc_9f3a2b7c4d5e6f7a…"
        +]
  2. 1 tool update
    • Changedpay_with_x4022 fields changed
      • changedInput schema / properties / x_payment / description
        Previous value: -"Step 2 only: a base64-encoded JSON x402 payment payload (e.g. base64 of {\"txHash\":\"0x...\"} for an on-chain Base USDC transfer, or an EIP-3009 authorization for a facilitator). Omit entirely on step 1 to receive the HTTP-402 payment requirements."New value: +"Step 2 only: a base64-encoded JSON x402 payment payload (e.g. base64 of {\"txHash\":\"0x...\",\"signature\":\"0x...\"} for an on-chain Base USDC transfer, signed by the paying wallet as the 402's onchainPayment says, or an EIP-3009 authorization for a facilitator). Omit entirely on step 1 to receive the HTTP-402 payment requirements."
      • changedInput schema / properties / x_payment / examples
        Previous value: -[
        -  "eyJ0eEhhc2giOiIweGFiYzEyMy4uLiJ9"
        -]New value: +[
        +  "eyJ0eEhhc2giOiIweGFiYzEyMy4uLiIsInNpZ25hdHVyZSI6IjB4ZGVmNDU2Li4uIn0="
        +]
  3. 18 tool updates
    • Changedask_ora4 fields changed
      • changedInput schema / properties / question / description
        Previous value: -"The Bible or faith question to ask ORA (max 1000 chars)."New value: +"A Bible or faith study question in natural language."
      • addedInput schema / properties / question / examples
        Added value: +[
        +  "What does Romans 8 teach about suffering?",
        +  "Where does the Bible discuss forgiveness?"
        +]
      • addedInput schema / properties / question / maxLength
        Added value: +1000
      • addedInput schema / properties / question / minLength
        Added value: +3
    • Changedbrowse_catalog9 fields changed
      • changedInput schema / properties / church_id / description
        Previous value: -"Optional SoapBox community id to scope to one church."New value: +"Optional SoapBox community id to scope the catalog to a single church."
      • addedInput schema / properties / church_id / examples
        Added value: +[
        +  "b3095717-5cc0-4213-8964-a01a5ee6b250"
        +]
      • addedInput schema / properties / church_id / format
        Added value: +"uuid"
      • addedInput schema / properties / limit / default
        Added value: +25
      • changedInput schema / properties / limit / description
        Previous value: -"Max products (1-100, default 25)."New value: +"Maximum number of products to return."
      • addedInput schema / properties / limit / maximum
        Added value: +100
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / q / description
        Previous value: -"Optional text filter on product title."New value: +"Optional case-insensitive text filter matched against product titles."
      • addedInput schema / properties / q / examples
        Added value: +[
        +  "romans",
        +  "advent"
        +]
    • Changedcheck_prayer_status5 fields changed
      • changedInput schema / properties / consent_token / description
        Previous value: -"The user's SoapBox consent token (scope prayer:write)."New value: +"The same user's SoapBox consent token (scope 'prayer:write') used when the prayer was submitted. Only returns status for that user's own prayers."
      • addedInput schema / properties / consent_token / examples
        Added value: +[
        +  "sbxpr_9f3a2b7c4d5e6f7a…"
        +]
      • addedInput schema / properties / consent_token / minLength
        Added value: +16
      • addedInput schema / properties / prayer_id / examples
        Added value: +[
        +  "b3095717-5cc0-4213-8964-a01a5ee6b250"
        +]
      • addedInput schema / properties / prayer_id / format
        Added value: +"uuid"
    • Changedfind_churches18 fields changed
      • changedInput schema / properties / denomination / description
        Previous value: -"Optional denomination filter, e.g. 'Baptist'."New value: +"Optional case-insensitive denomination filter."
      • addedInput schema / properties / denomination / examples
        Added value: +[
        +  "Baptist",
        +  "Catholic",
        +  "Non-denominational"
        +]
      • changedInput schema / properties / lat / description
        Previous value: -"Latitude of the search center."New value: +"Latitude of the search center, in decimal degrees."
      • addedInput schema / properties / lat / examples
        Added value: +[
        +  34.0522
        +]
      • addedInput schema / properties / lat / maximum
        Added value: +90
      • addedInput schema / properties / lat / minimum
        Added value: +-90
      • addedInput schema / properties / limit / default
        Added value: +10
      • changedInput schema / properties / limit / description
        Previous value: -"Max results (default 10, max 25)."New value: +"Maximum number of churches to return."
      • addedInput schema / properties / limit / maximum
        Added value: +25
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / lng / description
        Previous value: -"Longitude of the search center."New value: +"Longitude of the search center, in decimal degrees."
      • addedInput schema / properties / lng / examples
        Added value: +[
        +  -118.2437
        +]
      • addedInput schema / properties / lng / maximum
        Added value: +180
      • addedInput schema / properties / lng / minimum
        Added value: +-180
      • addedInput schema / properties / radius_miles / default
        Added value: +25
      • changedInput schema / properties / radius_miles / description
        Previous value: -"Search radius in miles (default 25, max 100)."New value: +"Search radius in miles."
      • addedInput schema / properties / radius_miles / maximum
        Added value: +100
      • addedInput schema / properties / radius_miles / minimum
        Added value: +1
    • Changedget_faith_context3 fields changed
      • changedInput schema / properties / consent_token / description
        Previous value: -"The user's SoapBox consent token (scope context:read, bound to this agent)."New value: +"Opaque SoapBox consent token with the 'context:read' scope, bound to your agent key. The user generates it in the SoapBox app. Returns only the user's declared profile (denomination, preferred language, faith journey, ministry interests) — never their private prayers or journal. An invalid, expired, or wrong-scope token returns an authorization error."
      • addedInput schema / properties / consent_token / examples
        Added value: +[
        +  "sbxctx_9f3a2b7c4d5e6f7a…"
        +]
      • addedInput schema / properties / consent_token / minLength
        Added value: +16
    • Changedget_lectionary4 fields changed
      • changedInput schema / properties / date / description
        Previous value: -"Optional date YYYY-MM-DD (defaults to today, UTC)."New value: +"Optional ISO date (YYYY-MM-DD). Defaults to today in UTC."
      • addedInput schema / properties / date / examples
        Added value: +[
        +  "2026-12-25"
        +]
      • addedInput schema / properties / date / format
        Added value: +"date"
      • addedInput schema / properties / date / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
    • Changedget_sermon5 fields changed
      • addedInput schema / properties / include_transcript / default
        Added value: +true
      • changedInput schema / properties / include_transcript / description
        Previous value: -"Include the full transcript text (default true)."New value: +"Whether to include the full transcript text (only for free or already-purchased sermons)."
      • changedInput schema / properties / sermon_id / description
        Previous value: -"The sermon's id (from search_sermons results)."New value: +"The sermon's id, typically the sermon_id from a search_sermons result."
      • addedInput schema / properties / sermon_id / examples
        Added value: +[
        +  "ffffbeb3-41ee-482a-9c04-a592995ab821"
        +]
      • addedInput schema / properties / sermon_id / format
        Added value: +"uuid"
    • Changedget_verse8 fields changed
      • changedInput schema / properties / book / description
        Previous value: -"Book name, e.g. 'John' or 'Psalms'."New value: +"Canonical book name (English). Accepts common forms like 'John', 'Psalms', '1 Corinthians', 'Song of Solomon'."
      • addedInput schema / properties / book / examples
        Added value: +[
        +  "John",
        +  "Psalms",
        +  "1 Corinthians"
        +]
      • addedInput schema / properties / chapter / description
        Added value: +"Chapter number (1-based)."
      • addedInput schema / properties / chapter / examples
        Added value: +[
        +  3
        +]
      • addedInput schema / properties / chapter / minimum
        Added value: +1
      • addedInput schema / properties / verse / description
        Added value: +"Verse number within the chapter (1-based)."
      • addedInput schema / properties / verse / examples
        Added value: +[
        +  16
        +]
      • addedInput schema / properties / verse / minimum
        Added value: +1
    • Changedgive_to_church16 fields changed
      • changedInput schema / properties / amount_cents / description
        Previous value: -"Gift amount in cents (e.g. 2500 = $25). Must be within the user's caps."New value: +"Gift amount in the smallest currency unit (cents). Must be within the user's per-gift and monthly caps or the call is rejected."
      • addedInput schema / properties / amount_cents / examples
        Added value: +[
        +  2500
        +]
      • addedInput schema / properties / amount_cents / minimum
        Added value: +1
      • changedInput schema / properties / community_id / description
        Previous value: -"The church's SoapBox community id (e.g. from find_churches' soapbox_community_id)."New value: +"The recipient church's SoapBox community id (e.g. the soapbox_community_id from find_churches)."
      • addedInput schema / properties / community_id / examples
        Added value: +[
        +  "b3095717-5cc0-4213-8964-a01a5ee6b250"
        +]
      • addedInput schema / properties / community_id / format
        Added value: +"uuid"
      • changedInput schema / properties / consent_token / description
        Previous value: -"The user's SoapBox consent token (scope giving:write, bound to this agent)."New value: +"Opaque SoapBox consent token with the 'giving:write' scope, bound to your agent key and carrying the user's pre-authorized per-gift and monthly caps. Generated by the user in the SoapBox app."
      • addedInput schema / properties / consent_token / examples
        Added value: +[
        +  "sbxgv_9f3a2b7c4d5e6f7a…"
        +]
      • addedInput schema / properties / consent_token / minLength
        Added value: +16
      • changedInput schema / properties / currency / description
        Previous value: -"Optional ISO currency (defaults to the church's currency)."New value: +"Optional ISO 4217 currency code (lowercase). Defaults to the church's own currency."
      • addedInput schema / properties / currency / examples
        Added value: +[
        +  "usd",
        +  "ugx"
        +]
      • addedInput schema / properties / currency / pattern
        Added value: +"^[a-z]{3}$"
      • changedInput schema / properties / idempotency_key / description
        Previous value: -"Stable key to make retries safe (no double-charge)."New value: +"A stable, caller-generated key so retries don't double-charge. Reuse the same key when retrying the same intended gift."
      • addedInput schema / properties / idempotency_key / examples
        Added value: +[
        +  "gift-2026-07-20-abc123"
        +]
      • changedInput schema / properties / note / description
        Previous value: -"Optional note to the church."New value: +"Optional short note to the church accompanying the gift."
      • addedInput schema / properties / note / maxLength
        Added value: +280
    • Changedlookup_strongs3 fields changed
      • changedInput schema / properties / strongs_number / description
        Previous value: -"e.g. 'G26' or 'H7225'."New value: +"A Strong's number: 'G' + digits for Greek (New Testament) or 'H' + digits for Hebrew (Old Testament)."
      • addedInput schema / properties / strongs_number / examples
        Added value: +[
        +  "G26",
        +  "H7225"
        +]
      • addedInput schema / properties / strongs_number / pattern
        Added value: +"^[GH]\\d{1,4}$"
    • Changedpay_with_x4028 fields changed
      • changedInput schema / properties / bundle_id / description
        Previous value: -"The bundle to pay for (omit if paying for a sermon)."New value: +"The bundle to pay for. Provide exactly one of sermon_id or bundle_id."
      • addedInput schema / properties / bundle_id / examples
        Added value: +[
        +  "a1b2c3d4-1111-2222-3333-444455556666"
        +]
      • addedInput schema / properties / bundle_id / format
        Added value: +"uuid"
      • changedInput schema / properties / sermon_id / description
        Previous value: -"The sermon to pay for (omit if paying for a bundle)."New value: +"The sermon to pay for. Provide exactly one of sermon_id or bundle_id."
      • addedInput schema / properties / sermon_id / examples
        Added value: +[
        +  "ffffbeb3-41ee-482a-9c04-a592995ab821"
        +]
      • addedInput schema / properties / sermon_id / format
        Added value: +"uuid"
      • changedInput schema / properties / x_payment / description
        Previous value: -"Step 2 only: base64-encoded JSON x402 payment payload (e.g. base64 of {\"txHash\":\"0x...\"} for an on-chain Base USDC transfer, or an EIP-3009 authorization for a facilitator). Omit on step 1 to receive the 402 requirements."New value: +"Step 2 only: a base64-encoded JSON x402 payment payload (e.g. base64 of {\"txHash\":\"0x...\"} for an on-chain Base USDC transfer, or an EIP-3009 authorization for a facilitator). Omit entirely on step 1 to receive the HTTP-402 payment requirements."
      • addedInput schema / properties / x_payment / examples
        Added value: +[
        +  "eyJ0eEhhc2giOiIweGFiYzEyMy4uLiJ9"
        +]
    • Changedpurchase_bundle3 fields changed
      • changedInput schema / properties / bundle_id / description
        Previous value: -"The bundle's id (product_id from browse_catalog where type=bundle)."New value: +"The bundle's id — the product_id from browse_catalog where type=bundle."
      • addedInput schema / properties / bundle_id / examples
        Added value: +[
        +  "a1b2c3d4-1111-2222-3333-444455556666"
        +]
      • addedInput schema / properties / bundle_id / format
        Added value: +"uuid"
    • Changedpurchase_sermon3 fields changed
      • changedInput schema / properties / sermon_id / description
        Previous value: -"The sermon to purchase (from search_sermons results)."New value: +"The paid sermon to purchase, e.g. a sermon_id from search_sermons or browse_catalog."
      • addedInput schema / properties / sermon_id / examples
        Added value: +[
        +  "ffffbeb3-41ee-482a-9c04-a592995ab821"
        +]
      • addedInput schema / properties / sermon_id / format
        Added value: +"uuid"
    • Changedscore_doctrinal_fit6 fields changed
      • changedInput schema / properties / statement / description
        Previous value: -"The statement/claim to assess (max 1500 chars)."New value: +"The theological statement or claim to assess."
      • addedInput schema / properties / statement / examples
        Added value: +[
        +  "Salvation is by faith alone, apart from works."
        +]
      • addedInput schema / properties / statement / maxLength
        Added value: +1500
      • addedInput schema / properties / statement / minLength
        Added value: +3
      • changedInput schema / properties / tradition / description
        Previous value: -"The tradition/denomination to assess against."New value: +"The Christian tradition or denomination to assess alignment against."
      • addedInput schema / properties / tradition / examples
        Added value: +[
        +  "Reformed",
        +  "Roman Catholic",
        +  "Pentecostal",
        +  "Eastern Orthodox"
        +]
    • Changedsearch_sermons11 fields changed
      • changedInput schema / properties / church_id / description
        Previous value: -"Optional SoapBox community id to scope the search to one church."New value: +"Optional SoapBox community id to scope the search to a single church."
      • addedInput schema / properties / church_id / examples
        Added value: +[
        +  "b3095717-5cc0-4213-8964-a01a5ee6b250"
        +]
      • addedInput schema / properties / church_id / format
        Added value: +"uuid"
      • addedInput schema / properties / match_count / default
        Added value: +6
      • changedInput schema / properties / match_count / description
        Previous value: -"Max results to return (1-20, default 6)."New value: +"Maximum number of ranked excerpts to return."
      • addedInput schema / properties / match_count / maximum
        Added value: +20
      • addedInput schema / properties / match_count / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"What to search for (a topic, phrase, or question). Max 1000 chars."New value: +"A topic, phrase, or question to semantically search sermon transcripts for."
      • addedInput schema / properties / query / examples
        Added value: +[
        +  "grace and works",
        +  "how to forgive someone who hurt you"
        +]
      • addedInput schema / properties / query / maxLength
        Added value: +1000
      • addedInput schema / properties / query / minLength
        Added value: +2
    • Changedsubmit_prayer_request9 fields changed
      • changedInput schema / properties / consent_token / description
        Previous value: -"The user's SoapBox consent token (scope prayer:write)."New value: +"Opaque SoapBox consent token with the 'prayer:write' scope, generated by the user in the SoapBox app. An invalid, expired, or wrong-scope token returns an authorization error."
      • addedInput schema / properties / consent_token / examples
        Added value: +[
        +  "sbxpr_9f3a2b7c4d5e6f7a…"
        +]
      • addedInput schema / properties / consent_token / minLength
        Added value: +16
      • changedInput schema / properties / content / description
        Previous value: -"The prayer request text."New value: +"The prayer request text, in the user's own words."
      • addedInput schema / properties / content / examples
        Added value: +[
        +  "Please pray for my mother's surgery on Friday."
        +]
      • addedInput schema / properties / content / maxLength
        Added value: +2000
      • addedInput schema / properties / content / minLength
        Added value: +1
      • addedInput schema / properties / is_private / default
        Added value: +false
      • changedInput schema / properties / is_private / description
        Previous value: -"If true, keep it private to the user (default false = shared so others can pray)."New value: +"If true, keep it private to the user; if false, share it on the community wall so others can pray."
    • Changedsynthesize_speech16 fields changed
      • addedInput schema / properties / format / default
        Added value: +"mp3"
      • changedInput schema / properties / format / description
        Previous value: -"mp3 (default) or ogg."New value: +"Audio container/encoding of the returned URL."
      • addedInput schema / properties / format / enum
        Added value: +[
        +  "mp3",
        +  "ogg"
        +]
      • addedInput schema / properties / gender / default
        Added value: +"NEUTRAL"
      • changedInput schema / properties / gender / description
        Previous value: -"NEUTRAL | MALE | FEMALE (default NEUTRAL)."New value: +"Preferred voice gender when a specific voice is not named."
      • addedInput schema / properties / gender / enum
        Added value: +[
        +  "NEUTRAL",
        +  "MALE",
        +  "FEMALE"
        +]
      • addedInput schema / properties / language / default
        Added value: +"en-US"
      • changedInput schema / properties / language / description
        Previous value: -"BCP-47 language code, e.g. en-US, es-ES, sw-KE (default en-US)."New value: +"BCP-47 language tag for the voice."
      • addedInput schema / properties / language / examples
        Added value: +[
        +  "en-US",
        +  "es-ES",
        +  "sw-KE"
        +]
      • addedInput schema / properties / language / pattern
        Added value: +"^[a-z]{2}-[A-Z]{2}$"
      • changedInput schema / properties / text / description
        Previous value: -"Text to speak (max 2000 chars)."New value: +"The text to synthesize into speech (a verse, prayer, or short devotional)."
      • addedInput schema / properties / text / examples
        Added value: +[
        +  "For God so loved the world..."
        +]
      • addedInput schema / properties / text / maxLength
        Added value: +2000
      • addedInput schema / properties / text / minLength
        Added value: +1
      • changedInput schema / properties / voice / description
        Previous value: -"Optional specific Google voice name."New value: +"Optional specific Google Cloud TTS voice name; overrides the default voice for the language."
      • addedInput schema / properties / voice / examples
        Added value: +[
        +  "en-US-Neural2-D"
        +]
    • Changedverify_scripture7 fields changed
      • changedInput schema / properties / quote / description
        Previous value: -"The quote to verify."New value: +"The exact quote to verify, as you would present it to a user."
      • addedInput schema / properties / quote / examples
        Added value: +[
        +  "For God so loved the world",
        +  "money is the root of all evil"
        +]
      • addedInput schema / properties / quote / maxLength
        Added value: +1000
      • addedInput schema / properties / quote / minLength
        Added value: +3
      • changedInput schema / properties / reference / description
        Previous value: -"Optional claimed reference, e.g. 'John 3:16'."New value: +"Optional claimed reference to check the attribution against."
      • addedInput schema / properties / reference / examples
        Added value: +[
        +  "John 3:16",
        +  "1 Timothy 6:10"
        +]
      • addedInput schema / properties / reference / pattern
        Added value: +"^[0-9]?\\s?[A-Za-z .]+\\s+\\d+:\\d+$"
  4. 1 tool update
    • Addedpay_with_x402
  5. 18 tool updates
    • First observedask_ora
    • First observedbrowse_catalog
    • First observedcheck_prayer_status
    • First observedfind_churches
    • First observedget_credit_balance
    • First observedget_faith_context
    • First observedget_lectionary
    • First observedget_sermon
    • First observedget_verse
    • First observedgive_to_church
    • First observedlookup_strongs
    • First observedpurchase_bundle
    • First observedpurchase_sermon
    • First observedscore_doctrinal_fit
    • First observedsearch_sermons
    • First observedsubmit_prayer_request
    • First observedsynthesize_speech
    • First observedverify_scripture

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Faith tools for AI agents: cited public-domain (KJV) Scripture verification, ORA Bible Q&A, sermon search, a church directory, and consent-gated prayer requests and giving. Free read tools need no key.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides comprehensive Biblical research tools including scripture lookup, interlinear Greek/Hebrew data, and Strong's concordance within a Protestant theological framework. It enables AI applications to perform full-text biblical searches, topical studies, and cross-referencing using authoritative theological data.
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables semantic search of the KJV Bible and personal knowledge graph for scripture study, notes, prayers, and memory verses, all running locally with no cloud dependencies.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Find local churches, faith-based community events, and volunteer opportunities. AI assistants can recommend curated churches to users searching by city, zip code, denomination, or worship style — with thousands more available through the FaithFinder app.
    1
    10 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources