arch-cursor-plugin
This MCP server provides two tools: a paid theological review service through Arch and a free offline King James Version verse lookup.
arch_review: Submit faith, Scripture, or doctrinal text (up to 50,000 characters) for Arch's theological review. Requires a user-suppliedARCH_API_KEY; supports optionalmax_tokens,idempotency_key, and legacypayment_method_id. Returnsreview,passed,suggestions,charge_id,billing_status, andmeta. Each review costs $2.00, and it fails closed on missing keys, non-2xx responses, network failures, or non-JSON success bodies.kjv_lookup: Look up King James Version verses or same-chapter verse ranges offline from bundled public-domain text. No API key, network call, or charge. Accepts references such asJohn 3:16,Romans 8:28-30, numbered books, and common abbreviations; returns verse text or a clear error for unreadable references, unknown books, missing chapters, or missing verses.
Arch
Cursor and Grok Bot plugin with two MCP tools:
arch_review— paid theological review of faith, Scripture, or doctrinal textkjv_lookup— free, offline King James verse lookup from text bundled in this plugin
Arch endpoint: POST https://arch.tnvolman.com/v1/review
Auth (arch_review only): X-API-Key from the plugin variable ARCH_API_KEY (each end user supplies their own key)
Homepage: https://arch.tnvolman.com
kjv_lookup does not use the key, does not call the network, and does not charge.
Install
Install this repository as a Cursor or Grok Bot plugin (marketplace listing, or a local plugin directory that contains .cursor-plugin/plugin.json).
The plugin starts a zero-dependency Node stdio server. The launch command is the arch-mcp executable (bin/arch-mcp), which runs server/index.mjs:
{
"mcpServers": {
"arch": {
"command": "${CURSOR_PLUGIN_ROOT}/bin/arch-mcp",
"args": [],
"env": {
"ARCH_API_KEY": "${ARCH_API_KEY}"
}
}
}
}The executable basename is arch-mcp. package.json maps that command name to bin/arch-mcp. Node.js 18 or newer is required (fetch is built in). There are no npm dependencies. bin/arch-mcp itself needs Node.js 18.19 or newer, which is when Node runs an extensionless file in a "type": "module" package.
On Windows, bin/arch-mcp is a shebang script. Windows users can still run node server/index.mjs from the plugin directory. Use that same command on Node versions older than 18.19.
Related MCP server: CodeRabbit MCP
Get an Arch API key
Arch does not publish a separate API-key page. https://arch.tnvolman.com/api-key is not a page. The key form is on the homepage: Get your API key. The API docs quick start points at that same page.
Submit your name, email, and privacy consent. The page issues a key immediately and shows it once; a copy is also emailed. Attach a card from the link on that result, or later from the developer dashboard (email magic link), before a paid review.
Configure ARCH_API_KEY
Get a key at arch.tnvolman.com/#access, as described above.
In the plugin dashboard, open Plugins → Arch → Configure.
Set Arch API Key (
ARCH_API_KEY).
The plugin stores only the variable name. The key stays in the client configuration and is passed to the server as ARCH_API_KEY. arch_review fails closed when the key is missing. kjv_lookup never reads it.
Pricing
This plugin is free. It calls the Arch API with your own key, and Arch bills each review.
Cost
Each paid review is $2.00. Volume pricing for businesses is by agreement: api@tnvolman.com.
kjv_lookup is free.
Skills
Skills live in skills/*/SKILL.md.
Skill | What it does |
Check a sermon before publishing | One |
Review a devotional | One |
Review a Bible study or Sunday school lesson | The user pastes the lesson text. One |
Arch theological review | The general review skill for other faith, Scripture, or doctrinal text. |
A failed review is not retried, and a long text is not split into extra paid calls, unless the user agrees to another charge.
Fail closed
arch_review returns an error, and never a made-up verdict, when:
ARCH_API_KEYis missing or emptyArch returns any non-2xx status
401 bad API key
400 bad text
402 no payment method, or payment declined
429 rate limit (60 requests per minute)
503 upstream unavailable
the network fails, or a 2xx body is not JSON
On an error, do not publish the content and do not invent passed, review, or suggestions.
kjv_lookup is separate. A bad reference returns an error and no verse text. It does not change arch_review.
Tool: arch_review
Request:
Field | Required | Notes |
| yes | string, at most 50000 characters |
| no | number |
| no | legacy |
| no | also sent as the |
Success body fields: review, passed, suggestions, charge_id, billing_status, meta.
Tool: kjv_lookup
Offline lookup of the public-domain King James Version (1769). No network call, no API key, and no charge. It returns verse wording only. It does not review theology; use arch_review for that.
Field | Required | Notes |
| yes |
|
Success fields: reference, translation, edition, book, chapter, verse_start, verse_end, and verses (verse, text).
A reference that cannot be read, an unknown book, a missing chapter, or a missing verse returns a clear error. Ranges stay inside one chapter.
KJV text source
Bundled file: server/data/kjv.json (4,248,786 bytes). 66 books, 31,102 verses, no Apocrypha.
The text is the 1769 King James Version, which is in the public domain. It comes from farskipper/kjv json/verses-1769.json at commit 8f06584d580a767425d7d4b4c314b967e6d45ab5. That repository's LICENSE is The Unlicense, a public-domain dedication with no license restrictions, and its README says "Public Domain."
This plugin stores a compact copy of that verse text. A leading # paragraph marker was removed from verses that had one. Words the source marks as italics stay in square brackets, for example [his]. The source titles Song of Solomon as "Solomon's Song"; lookup accepts both, and the book name it returns is "Song of Solomon".
Tests
node --testnpm test runs the same command. The tests do not call Arch.
What this plugin does not do
It does not call or wrap /api/arch/review, /arch/request-access, billing setup, the dashboard, admin or internal routes, or api.arch.tnvolman.com.
kjv_lookup does not call Arch. arch_review reviews the theology of text only.
Data
Review text is sent to the Arch API for review, and Arch does not use it to train AI models. See the Privacy Policy for which services process it.
Legal
Support
Contact api@tnvolman.com.
License
MIT. See LICENSE. The bundled King James text is public domain, as noted above.
Available Tools
2 toolsarch_reviewA
Review faith, Scripture, or doctrinal text before publishing it. POST /v1/review on https://arch.tnvolman.com. Returns only Arch's review, passed, suggestions, charge_id, billing_status, and meta. Each paid review costs $2.00 or less. Fails closed: missing ARCH_API_KEY or any non-2xx is an error, never a fabricated pass. Do not call for non-theological text.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Required review body. Max 50000 characters. | |
| max_tokens | No | Optional max tokens for the review response. Default 1024. | |
| idempotency_key | No | Optional idempotency key. When set, also sent as Idempotency-Key header. | |
| payment_method_id | No | Legacy optional payment method id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the endpoint, the exact return fields, per-call cost ($2.00 or less), required auth (ARCH_API_KEY), and a fail-closed error contract that explicitly forbids a fabricated pass. This is exactly the behavioral context an agent needs before a paid, credentialed call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, front-loaded with purpose, then mechanism, return shape, cost, failure mode, and exclusion. Every sentence carries distinct decision-relevant information with no repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description enumerates the return payload (review, passed, suggestions, charge_id, billing_status, meta) and covers cost, auth, and failure semantics. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is already documented in the schema. The description adds only indirect meaning (that calls are paid, implying max_tokens affects cost) without explaining idempotency_key or payment_method_id beyond what the schema states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Review') and a precise resource ('faith, Scripture, or doctrinal text') plus the publishing context it serves. The domain boundary ('Do not call for non-theological text') cleanly separates it from the kjv_lookup sibling, which serves a lookup rather than a review function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use ('before publishing it') and an explicit when-not ('Do not call for non-theological text'). It does not name an alternative tool for non-theological review, but no sibling serves that need, so the omission is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kjv_lookupA
Look up a King James Version verse or same-chapter verse range from the bundled public-domain KJV text. Offline: no API key, no network call, and no charge. Accepts references such as "John 3:16", "Romans 8:28-30", numbered books ("1 John 4:8"), and common abbreviations ("Jn 3:16", "Rom 8:28", "1 Cor 13:4"). Returns the verse text only. This is not a theological review; use arch_review for that. Unknown books, chapters, and verses return an error.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Bible reference, for example "John 3:16" or "Romans 8:28-30". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses offline execution, absence of API key/network/cost, that the return is verse text only, and that unknown books/chapters/verses return an error. That covers the operational and failure profile an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences: purpose and source first, then the operational guarantees, then accepted input forms, then the return/error behavior and sibling routing. No sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
One required parameter, no output schema, no annotations — and the description still closes the gaps by stating the return value ('verse text only'), error behavior, and call cost. An agent could invoke this correctly without opening the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds real meaning beyond the schema by enumerating accepted reference forms: same-chapter ranges, numbered books ('1 John 4:8'), and common abbreviations ('Jn', 'Rom', '1 Cor'). It only omits edge-case details such as whitespace or case handling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up a King James Version verse or same-chapter verse range') plus the source ('bundled public-domain KJV text'). It also explicitly distinguishes itself from the only sibling by declaring 'This is not a theological review; use arch_review for that.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the positive case (verse/range lookup in KJV), an explicit exclusion with the named alternative ('use arch_review for that'), and the operating conditions ('Offline: no API key, no network call, and no charge'). The agent knows exactly when to pick this tool and when not to.
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.
2 tool updates
v0.1.0- First observed
arch_review - First observed
kjv_lookup
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: arch_review performs theological review, while kjv_lookup retrieves KJV verse text offline. Their descriptions explicitly cross-reference each other and state when not to use each tool.
Both names use lowercase snake_case with a source/namespace prefix followed by an action: arch_review and kjv_lookup. The pattern is predictable and consistent.
Two tools is slightly thin, but each covers a distinct, essential operation for this focused plugin. Neither feels redundant or unnecessary.
The core review and lookup workflows are covered, including error behavior and billing notes. Minor gaps exist around review history or broader Scripture search, but agents can work around them for the stated scope.
Maintenance
Related MCP Connectors
Agentic code review, no signup to try: reality gates + frontier-model review, with veto.
Checkout reviews via OAuth or agent API keys: bot blocks, payment methods, outcomes and effort.
Versioned artifact review for people and AI agents, with contextual comments and human control.
Multi-LLM council: 25+ frontier models in parallel, consensus scoring, verdict-first code review.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables code review through Cursor CLI integration with GPT-5. Provides a cursor.review tool that executes code reviews and returns structured JSON results with automatic audit logging.2MIT
- AlicenseNot gradedqualityDmaintenanceExposes CodeRabbit IDE review comments as MCP tools and resources, allowing scanning, listing, and managing comments from clients like Cursor.5 npm1MIT
- AlicenseNot gradedqualityDmaintenanceMCP bridge from OpenCode to Cursor agent CLI, enabling code review, debugging, and planning via Cursor cloud.6 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables agents to submit markdown for human review, track feedback, and apply revisions through an HTTP API with an optional MCP wrapper.2Apache 2.0