Honest Elf
Presentación electrónica de documentos judiciales para agentes de IA. Busque tribunales y casos de Texas, redacte escritos, obtenga cotizaciones de tarifas reales y presente con la aprobación explícita del usuario mediante una integración certificada de Tyler EFM.
Servidor MCP alojado
npx add-mcp 'https://mcp.honestelf.com/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
Honest Elf MCP Server
A remote Model Context Protocol (MCP) server that lets AI assistants prepare, submit, and track court e-filings through Honest Elf, a certified Texas Electronic Filing Service Provider (EFSP). This page is the reference for users and IT administrators: how the server is connected, how it authenticates, exactly what its tools can do, and how data is handled.
Overview
Honest Elf is an Electronic Filing Service Provider operated by Zhakhan LLC. It transmits court filings to Texas courts through the Tyler Technologies Odyssey File & Serve Electronic Filing Manager (EFM) — the same state-mandated infrastructure every Texas e-filing provider uses. The MCP server exposes that capability to MCP-compatible AI clients (Claude, Claude Code, ChatGPT, and custom agents).
An agent connected to the server acts on behalf of one signed-in Honest Elf user, within that user's firm and jurisdiction. It can look up courts and their filing rules, search existing cases in the court record, assemble filing drafts with PDF documents, obtain an official fee quote, submit for clerk review after explicit user approval, and track outcomes. Filings submitted this way are ordinary e-filings: courts see a standard submission from a certified EFSP, reviewed by a clerk like any other.
Connection details
| Endpoint | https://mcp.honestelf.com/mcp |
|---|---|
| Transport | Streamable HTTP |
| Authentication | OAuth 2.1 with PKCE and dynamic client registration |
| Scope | efile |
| Tools | 39 (see the tool reference below) |
| Jurisdiction | Texas courts (all Tyler-served e-filing courts) |
| Hosting | Cloud-hosted by Honest Elf; TLS on all endpoints |
Connecting a client
Claude.ai / Claude Desktop: add a custom connector pointing at https://mcp.honestelf.com/mcp (Settings → Connectors → Add custom connector), or install it from the Claude connector directory if listed there.
Claude Code:
claude mcp add --transport http honest-elf https://mcp.honestelf.com/mcp
Other MCP clients: any client supporting the Streamable HTTP transport and OAuth 2.1 works. The server publishes standard OAuth discovery metadata; clients register themselves via dynamic client registration — there are no API keys to provision or share.
On first use the client opens a browser window on Honest Elf's consent page. The user signs in with their Honest Elf account and approves access. No account yet? Registration is at honestelf.com/register.
Authentication & access control
- Per-user OAuth, no shared secrets. Each connection is authorized by an individual user on Honest Elf's hosted consent page. The user's password is entered only on that page — it is never shared with the AI client, the model, or the conversation.
- OAuth 2.1 with PKCE and rotating refresh tokens. Access tokens are short-lived; refresh tokens rotate on use. The single
efilescope covers the tools on this page and nothing else. - Scoped to the user's own firm. Every tool call executes as the authorizing user, with that user's existing permissions. There is no cross-firm or administrative access through the MCP server.
- Revocable at any time. Users can revoke an agent's access from their Honest Elf account; revocation takes effect immediately. The server also supports standard OAuth token revocation.
- Court sessions are separate. If the user's session with the court system expires, tools return
relink_requiredwith a URL where the user re-authenticates — the agent's own authorization is unaffected and never widens. - Full audit trail. Every tool call is logged with the acting user, firm, and OAuth client. Drafts and filings created by agents appear in the Honest Elf web app, where a person can review, edit, or cancel them.
What the server can and cannot do
An agent can
- Read court configuration, fees, and filing rules
- Search cases in courts within the user's jurisdiction
- Read the firm's filings, attorneys, contacts, and masked payment accounts
- Create and edit filing drafts and attach PDFs
- Request an official fee quote
- Submit a prepared filing — only with the quote's confirmation token
- Track clerk review outcomes and e-service
An agent cannot
- Submit anything without a fee quote the user was shown
- See card or bank numbers (payment accounts are masked references)
- Add or modify payment accounts, attorneys, or firm users
- Access another firm's or user's data
- Delete or alter submitted filings (only cancel before clerk review starts)
- Act after the user revokes access
Fees and the approval model
E-filing costs real money — court fees, optional services, e-service, and Honest Elf's provider fee. The server is built so that no charge can happen without a human seeing the number first:
prepare_filingvalidates the draft and returns the official, itemized fee quote from the court system, a review URL where the user can read the entire prepared filing on one page, and a confirmation token that expires in 15 minutes.submit_filingrequires that token. Client instructions direct the agent to show the user the fee total and obtain explicit approval first; the user can also submit from the review page themselves.- At submit time the server re-verifies the draft contents and re-checks fees against the court system. If anything changed since the quote, the submission is refused (
fee_changed) and must be re-prepared and re-approved. - Submissions carry a client-generated idempotency key, so a retried call can never file — or charge — twice. If the court system times out mid-submission, the server reports the in-doubt state and clients reconcile with
sync_filingsinstead of resubmitting.
Tool reference
All 39 tools, grouped by function. Read tools only return data; Write tools change state — almost all of them only on private drafts inside Honest Elf. The sole tools with court-facing side effects are submit_filing and cancel_filing; prepare_filing requests a quote from the court system but files nothing.
Account
Orientation. Clients typically call whoami first to see who is signed in and whether the court-system link is live.
| Tool | Type | What it does |
|---|---|---|
whoami | Read | Shows the connected user, firm, jurisdiction, and whether the Tyler e-filing link is currently live (with a re-link URL if not). |
Courts & filing codes
Read-only lookups of each court's own configuration. Every court defines its own case categories, types, filing codes, party roles, and fees.
| Tool | Type | What it does |
|---|---|---|
search_courts | Read | Search e-filable court locations by name; returns the court_id used by every other court tool. |
get_court | Read | One court's capabilities and filing rules: accepted filing paths, service and payment rules, required fields, accepted file types. |
list_case_categories | Read | Case categories for a court — the first classification choice when filing. |
list_case_types | Read | Case types for a court, optionally filtered by category, with base filing fees. |
list_case_subtypes | Read | Case subtype codes, for courts that require one. |
list_filing_codes | Read | Filing codes available for a filing context (court + initial/subsequent + case classification). |
get_filing_code_details | Read | Everything needed to attach documents for one filing code: components, document security types, and optional services with fees. |
list_party_types | Read | Party role codes for a court, including the roles a case type requires. |
list_case_extras | Read | Category-dependent extra fields: damage amounts, procedure/remedy options, cross-reference number types. |
Live case lookup
Read-only queries against the court record, scoped to courts in the user's jurisdiction.
| Tool | Type | What it does |
|---|---|---|
search_cases | Read | Find an existing case in a court by case number, party name, or organization name. |
get_case | Read | Full detail for one existing case: classification codes and current parties. |
get_case_service_contacts | Read | Service contacts attached to an existing case — who would receive e-service on a Serve filing. |
Firm data
Read-only lists scoped to the signed-in user's firm. New payment accounts and attorneys cannot be created through the MCP server — only in the Honest Elf web app.
| Tool | Type | What it does |
|---|---|---|
list_attorneys | Read | The firm's attorneys registered with the court system, for use as filing or party attorneys. |
list_firm_service_contacts | Read | The firm's master list of service contacts for e-service. |
list_payment_accounts | Read | The firm's registered payment accounts (masked — no card or bank numbers). A draft references one by id. |
Drafting
Drafts are private working copies inside Honest Elf. Nothing reaches the court until submit_filing. Drafts created by agents are visible and editable in the web app.
| Tool | Type | What it does |
|---|---|---|
create_draft | Write | Create a filing draft (envelope) with case, parties, filings, and service recipients in one call. |
get_draft | Read | Inspect a draft: case, parties, filings with documents, service recipients, and current validation problems. |
update_draft | Write | Update envelope-level fields (payment account, filer type, filing attorney, comment, fee-responsible party). |
delete_draft | Write | Delete a draft and its documents. Only drafts — submitted envelopes are court records and cannot be deleted. |
add_filing | Write | Add another filing to an existing draft. |
update_filing | Write | Update one filing in place; uploaded documents are preserved. |
remove_filing | Write | Remove one filing (and its documents) from a draft. |
add_party | Write | Add a party to a draft's case. |
update_party | Write | Update one party's fields on a draft. |
remove_party | Write | Remove a party from a draft (blocked while a filing or the fee-responsible role references it). |
set_service_recipients | Write | Replace the draft's e-service recipient list. |
Documents
PDFs attach to draft filings. The recommended path is an out-of-band upload — a browser upload page or a presigned URL — so file bytes never pass through the AI model. Only the small inline path sends bytes through the conversation, and it is capped at 2 MB.
| Tool | Type | What it does |
|---|---|---|
create_document_upload | Write | Start an out-of-band upload: returns a browser upload page for a human, or a presigned PUT URL for a client that has the file. Bytes go straight to encrypted storage. |
finalize_document | Write | Validate a PDF uploaded via presigned URL and attach it to the filing. |
upload_document | Write | Inline upload for small PDFs (max 2 MB, base64 through the model). For anything larger, create_document_upload. |
remove_document | Write | Remove one uploaded document from a draft filing; the file is deleted from storage. |
Prepare, submit & cancel
The only tools that touch the live court system with side effects. Submission is bound to a fee quote the user has seen — see the approval model above.
| Tool | Type | What it does |
|---|---|---|
prepare_filing | Write | Server-side validation plus the official fee quote from the court system. Returns an itemized fee breakdown, a review URL for the user, and a confirmation token valid for 15 minutes. |
submit_filing | Write | Submit a prepared envelope to the court. Requires the confirmation token, an idempotency key, and re-verifies fees at submit time. |
cancel_filing | Write | Cancel a submitted envelope before the clerk starts reviewing it. |
Status & e-service
Filings are reviewed asynchronously by court clerks. These tools track outcomes; the refresh-style ones re-read state from the court system but change nothing there.
| Tool | Type | What it does |
|---|---|---|
list_filings | Read | List the firm's envelopes — drafts or submitted history. |
get_filing_status | Read | Current status of one envelope (accepted / rejected / under review, clerk comments), refreshed live from the court system. |
sync_filings | Write | Reconcile the local filing list against the court system: imports envelopes filed elsewhere and refreshes clerk outcomes. |
get_filing_documents | Read | Download links for a submitted envelope's documents as the court has them — file-stamped copies once accepted. |
list_service_notifications | Read | Court e-service the firm has received, newest first. |
Data handling & security
- What flows where. Filing data (case details, parties, documents) is transmitted to the Tyler EFM and on to the destination court — that is the product's purpose. Payment details are entered directly on the court payment processor's own pages; Honest Elf and the MCP server handle only masked references and fee amounts.
- Documents can bypass the model. The recommended upload paths (browser upload page or presigned URL from
create_document_upload) send file bytes directly to encrypted object storage — they never enter the AI conversation. The inline path exists for small files (≤ 2 MB) and is explicitly labeled as passing through the model. - Encryption. TLS in transit on every endpoint; documents at rest in encrypted object storage; the user's court-system credentials stored encrypted and used only to authenticate against the EFM.
- Logging and retention. Tool calls are logged for security, billing, and troubleshooting. Collection and retention details — including for documents and case data — are in the privacy policy, which covers the MCP server explicitly.
- Human oversight. Everything an agent creates is visible in the Honest Elf web app under the same account, so supervising attorneys and staff can review agent activity with no extra tooling.
Error codes
Tool errors are JSON objects with a stable code and a recovery path, so agents fail predictably instead of guessing. The most important codes:
| Code | Meaning |
|---|---|
validation_failed | The draft has problems; every problem is listed so it can be fixed with the edit tools. |
fee_changed | Fees moved between quote and submission. The submission is refused; re-run prepare_filing and get the user's approval again. |
confirmation_expired | The 15-minute confirmation token lapsed or the draft changed since the quote. Re-run prepare_filing. |
relink_required | The user's court-system session expired. Includes the URL where the user re-authenticates; no agent re-authorization needed. |
submission_pending_verification | The court system timed out mid-submission; the filing may have gone through. Clients must not resubmit — sync_filings reconciles the outcome. |
Support
Questions about connecting, approving the server for an organization, or anything on this page: contact support. Privacy questions: [email protected].
See also: MCP server overview · Privacy policy · Terms of service · Machine-readable overview (llms.txt)