Skip to main content
Glama
hydrojwh
by hydrojwh

PromptReady MCP

Official Model Context Protocol client for PromptReady — convert PDF/CSV to Markdown from AI agents (Grok, Claude Code, Cursor, and other MCP hosts).

Same PromptReady account and credits as the web app.

Features

  • Browser Google login (tokens stay on your machine)

  • get_credits, convert_pdf, get_status, wait_and_download

  • Saved convert defaults (engine, tables, images) — not on every call

  • Factory default: PaddleOCR-VL, tables on, images off

Related MCP server: Markitdown MCP Server

Install

git clone https://github.com/hydrojwh/promptready-mcp.git
cd promptready-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .

Login (once per machine)

promptready-mcp-login

Opens Google OAuth and saves credentials to ~/.config/promptready/credentials.json (file mode 0600).

Supabase Auth must allow redirect:

http://127.0.0.1:18765/callback

MCP host config

Grok

[mcp_servers.promptready]
command = "/ABS/PATH/promptready-mcp/.venv/bin/python"
args = ["-m", "promptready_mcp.server"]
cwd = "/ABS/PATH/promptready-mcp"
enabled = true
tool_timeout_sec = 3600

Claude Desktop / generic JSON

{
  "mcpServers": {
    "promptready": {
      "command": "/ABS/PATH/promptready-mcp/.venv/bin/python",
      "args": ["-m", "promptready_mcp.server"]
    }
  }
}

No access token in config files required after login.

Tools

Tool

Purpose

login / logout

Browser auth / clear local credentials

get_credits

Credit balance

get_convert_settings / set_convert_settings

Saved convert defaults

convert_pdf

Upload path → queue (optional wait)

get_status

Job status

wait_and_download

Poll + save .md

Downloaded names follow the web app: {name}_PaddleOCR-VL.md (engine label).

Security

  • Tokens are never hardcoded in this repository.

  • Do not commit ~/.config/promptready/* or .env.

  • Only use the official package linked from https://promptready.space

  • Vulnerability reports: see SECURITY.md

Service terms

Using the cloud API is subject to PromptReady Terms and Privacy Policy. This MIT-licensed client does not grant free unlimited conversion.

Smoke test (no account)

./scripts/smoke_stdio.sh

License

MIT — see LICENSE.

Available Tools

8 tools
convert_pdfA

Upload a local PDF/CSV and queue conversion (same credits as the web app).

Uses saved user settings (get_convert_settings / set_convert_settings), not per-call engine flags. Factory default: paddle, tables on, images off.

Args: path: Absolute or home-relative path to a .pdf or .csv file. wait: If true, poll until done and download markdown (can take many minutes). timeout_sec: Max wait when wait=true (default 3600). output_dir: Directory for downloaded .md when wait=true.

Returns JSON with job info; if wait=true and completed, includes local md path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
waitNo
output_dirNopromptready-out
timeout_secNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses queuing behavior, use of saved settings, defaults (paddle, tables on, images off), wait polling, and return format. It lacks statement on destructive potential or authentication requirements, but overall it is transparent.

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 a brief summary followed by parameter details. It is slightly verbose but every sentence adds value. Could be tightened but remains clear.

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 complexity (async conversion, wait/async) and presence of output schema, the description covers main behavior, parameters, and return. Missing explicit mention of authentication prerequisites, but siblings imply it. Mostly complete.

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

Parameters5/5

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

Schema coverage is 0%, so description must add meaning. It explains path (absolute or home-relative, file types), wait (polling, time-consuming), timeout_sec (max wait when wait=true, default), and output_dir (for downloaded markdown). This fully compensates for the schema's lack of 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 the tool uploads a local PDF/CSV and queues conversion. It specifies using saved settings and mentions waiting behavior, distinguishing it from siblings like wait_and_download.

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 explains that the tool uses saved user settings (not per-call flags) and provides factory defaults. It discusses wait behavior and timeout but does not explicitly contrast with the wait_and_download sibling or state when not to use this tool.

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

get_convert_settingsA

Show saved convert defaults for this machine (not per-file options).

Defaults live in ~/.config/promptready/settings.json. convert_pdf always uses these until you change them with set_convert_settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, but the description discloses that the tool reads from a specific config file (~/.config/promptready/settings.json) and is machine-specific. It implies read-only behavior, which is appropriate for a 'get' operation. The information is accurate and helpful.

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 (two sentences) with no wasted words. It is front-loaded with the main purpose in the first sentence and provides additional details in the second. Excellent structure.

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 tool's simplicity (no parameters, output schema exists), the description is complete. It explains what the tool does, where the data comes from, how it relates to convert_pdf and set_convert_settings, and that it is machine-specific. No gaps remain.

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?

With zero parameters, the schema is empty and description coverage is 100%. The description explains that no parameters are needed, which is sufficient. Baseline for zero-param tools is 4, and the description adds context by stating it shows defaults for the machine.

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 'Show saved convert defaults', distinguishing from per-file options. It specifies the file location and that convert_pdf uses these defaults, making the tool's purpose unambiguous.

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 indicates when to use the tool (to see defaults) and notes that it is not for per-file options. It mentions set_convert_settings as the companion for changing defaults, providing context for alternatives. Sibling tools like login/get_credits are clearly unrelated, so no further differentiation needed.

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

get_creditsA

Get the calling user's PromptReady credit balance.

Returns JSON: ok + credit_balance + email, or ok:false + error. Requires prior login (promptready-mcp-login / login tool) or env token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the return format (JSON with ok, credit_balance, email, or error) and authentication requirement. This is adequate for a simple read operation, though it could mention idempotency.

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: the first states the purpose concisely, and the second provides essential details about return format and prerequisites. No wasteful text.

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 tool's simplicity (no parameters, read-only, output schema exists), the description covers the purpose, return values, and usage prerequisites completely.

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

Parameters5/5

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

The tool has zero parameters, and the description adds meaning about the return structure and prerequisites, fully compensating for the lack of parameter documentation.

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 'Get the calling user's PromptReady credit balance' with a specific verb and resource, distinguishing it from sibling tools like login, logout, and PDF conversion tools.

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 mentions the prerequisite of prior login or env token, providing clear context for when to use the tool. However, it does not explicitly exclude alternatives or provide 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_statusA

Get conversion status for the authenticated user's current session job.

Uses GET /api/v1/convert/status (session = user_id when logged in).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so the description carries full burden. It discloses the HTTP method (GET) and authentication scope (authenticated user's session), but does not mention idempotency, rate limits, or behavior when no job exists. The output schema is present but not referenced.

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 concise sentences. The first states the core purpose, the second adds technical detail (HTTP method and session context). No extraneous information.

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 parameters and an output schema (unknown content), the description covers the resource and authentication. It lacks explicit sequencing (e.g., 'call after starting a job') but is otherwise sufficient for a simple status check.

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?

There are zero parameters, and schema coverage is 100%. The description does not need to explain parameters, and the absence is self-evident. Baseline for no parameters is 4.

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 'Get' and the resource 'conversion status for the authenticated user's current session job'. It distinguishes from sibling tools like convert_pdf (performs conversion) and get_convert_settings (retrieves settings) by specifying it's for status of a specific session job.

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 after starting a conversion job but does not explicitly state when to use this tool versus alternatives like wait_and_download. No exclusions or contextual triggers are provided, leaving the agent to infer proper usage.

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

loginB

Open the browser Google login page and save tokens for this machine.

Starts a local callback on http://127.0.0.1:18765/callback, opens PromptReady Google OAuth, stores credentials under ~/.config/promptready/credentials.json (mode 600), and applies them to this process.

Users should run this once (or use CLI: promptready-mcp-login) instead of pasting tokens manually. Requires Supabase redirect allowlist for that URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeout_secNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/5

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

Discloses local callback URL, credential storage path and permissions (mode 600), and process application. Without annotations, it covers key behavioral aspects well, though doesn't mention idempotency or re-login behavior.

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

Conciseness3/5

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

Three paragraphs with relevant details, but includes slightly verbose phrasing like 'Starts a local callback...' could be streamlined. Generally acceptable length.

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

Completeness2/5

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

Does not describe return value or output schema, despite the tool having one. No error handling or prerequisite details (e.g., Supabase config). For a simple auth tool with one param, it lacks completeness.

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

Parameters2/5

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

Only parameter `timeout_sec` is not explained in the description; schema shows only a title and default. With 0% schema description coverage, the description fails to add meaning beyond the default value.

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

Purpose4/5

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

Clearly states it opens a Google login page and saves tokens, with specific verb ('open', 'save') and resource ('browser Google login page', 'tokens for this machine'). Distinguishes from unrelated sibling tools like convert_pdf.

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?

Advises running once instead of manual token pasting, mentions a CLI alternative, and notes Supabase redirect requirement. No explicit when-not-to-use or alternative authentication methods, but sufficient for basic use.

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

logoutA

Remove saved MCP credentials from this machine and clear env tokens.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations exist, but the description discloses the destructive nature (removes credentials) and specifies local machine scope and token clearing, adding behavioral 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 a single, concise sentence with no unnecessary words, efficiently conveying the tool's 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?

For a parameter-less tool with an output schema, the description sufficiently explains the tool's action without needing further detail.

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?

No parameters are present, and the baseline for 0 parameters is 4; no parameter information is needed.

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 removes saved credentials and clears tokens, distinguishing it from sibling tools like login which likely save credentials.

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?

Usage is implied as logging out, but no explicit guidance on when to use vs alternatives or any exclusions is provided.

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

set_convert_settingsA

Update saved convert defaults (persists for future convert_pdf calls).

Only pass fields you want to change. Example: set engine to paddle_vl15 once, then every convert uses that until changed again.

Args: engine: paddle | paddle_vl15 | glm_ocr include_tables: keep markdown tables include_images: include image/visual extraction (heavier) remove_references: strip references section when supported

ParametersJSON Schema
NameRequiredDescriptionDefault
engineNo
include_imagesNo
include_tablesNo
remove_referencesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that changes persist for future 'convert_pdf' calls and that only desired fields need be passed. It does not mention reversibility or error conditions, but the behavior is well-explained for a settings mutation.

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 concise and front-loaded with the main purpose. It includes an example and bullet-pointed arguments. Minor redundancy (e.g., 'persists for future' repeated) but overall well-structured.

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

Completeness3/5

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

The description adequately covers the tool's core function but does not mention the output schema (likely a status or updated settings), error scenarios, or prerequisites. For a settings tool with a simple interface, this is adequate but leaves some gaps.

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?

Despite 0% schema description coverage, the description adds meaningful semantics for each parameter: enumerates engine options, explains 'include_tables', 'include_images' as heavier, and 'remove_references' as stripping when supported. This compensates for the lack of 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 the verb 'update' and the resource 'saved convert defaults', and distinguishes from sibling tools like 'convert_pdf' and 'get_convert_settings' by emphasizing it updates persisted settings.

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 usage guidance: 'Only pass fields you want to change' and an example of setting the engine once for future conversions. However, it does not explicitly state when not to use or mention alternatives like 'get_convert_settings' for reading.

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

wait_and_downloadA

Poll get_status until completed/failed/cancelled, then download markdown if available.

Args: timeout_sec: Max seconds to wait (OCR can take many minutes). poll_interval_sec: Sleep between polls (default 3). output_dir: Where to write the .md file. source_path: Optional original file path (used only for output filename).

ParametersJSON Schema
NameRequiredDescriptionDefault
output_dirNopromptready-out
source_pathNo
timeout_secNo
poll_interval_secNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description bears full weight. It discloses polling behavior, timeout, defaults, and output format. It could be more explicit about the outcome on 'failed' or 'cancelled' states, but 'if available' covers it.

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 with a clear action statement followed by a structured Args list. Every sentence adds value, and the key action is front-loaded.

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 presence of an output schema, the description adequately covers polling, timeout, download. It could mention error handling or edge cases, but is sufficient for typical use.

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 0%, but the description includes an Args section that explains each parameter's purpose and default. This adds significant meaning beyond the schema names.

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 polls get_status until a terminal state and then downloads markdown. The verb 'poll' and 'download' with resource 'status' and 'markdown' make the purpose explicit, differentiating it from siblings like get_status or convert_pdf.

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 use after a conversion by mentioning OCR and polling. It provides timeout guidance. However, it does not explicitly state when not to use this tool (e.g., for simple status checks use get_status).

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

TDQS

A3.9/5.0
Disambiguation4/5

Tools have distinct purposes: auth, settings, conversion, status, download. However, convert_pdf with wait=true and wait_and_download both handle waiting and downloading, which could cause slight confusion, but descriptions clarify their different roles.

Naming Consistency4/5

All names use snake_case, but inconsistent patterns: some are verb_noun (convert_pdf, get_credits), others are bare verbs (login, logout), and wait_and_download uses 'and'. Minor deviations from a strict verb_noun pattern.

Tool Count4/5

8 tools feel appropriate for a PDF conversion service, covering auth, settings, conversion, and status. Not excessive nor too sparse, though a few additional tools (e.g., list conversions) could be added.

Completeness4/5

The tool set covers the essential lifecycle: auth, configuration, conversion, status polling, and download. Minor gaps like listing past conversions or deleting jobs exist, but core workflow is complete.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hydrojwh/promptready-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server