Dudley Development

Dudley Catalog Prep: MCP server

Catalog Prep turns messy corrugated carton supplier files into clean, reviewed import files for your store's template. It also lists every field it could not fill in with confidence. Your assistant connects to it over MCP.

Nothing publishes without human review. Catalog Prep only prepares files. It never sends anything to a store, and it never makes up a value it cannot find in your files, such as a price, a SKU, a hazmat flag, or a certification. Those fields stay in the unresolved list for a person to fill in. Deleting a job needs the account owner's approval in their own browser.

Status: prototype, synthetic evidence only (prototype_synthetic).

Connect

ItemValue
Endpointhttps://mcp.dudleyapps.com/mcp
TransportStreamable HTTP, stateless. POST returns plain JSON (application/json); clients that also accept text/event-stream still get JSON.
Protocol versions2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25 (negotiated at initialize)
SessionsStateless: the server does not issue an Mcp-Session-Id, and it accepts and ignores one a client sends.
Resource metadata/.well-known/oauth-protected-resource/mcp

Sign-in options

  1. OAuth with PKCE and automatic registration (recommended). The client finds the authorization server from the resource metadata, registers itself (Dynamic Client Registration), and signs the person in with authorization code + PKCE. Anyone can sign up. A new account gets its own private sandbox on first use: sample data only, 10 jobs over 30 days (2 at a time).
  2. Pre-registered OAuth client. For hosts that cannot register themselves, the operator issues a client ID; the sign-in flow is the same.
  3. Reviewer key (directory review only). A bearer key the operator issues for one test account. It can only read (catalog:read), it can be revoked at any time, and it cannot upload, prepare, cancel, or delete.

Scopes are narrow and separate: catalog:read (read status and results), catalog:write (upload files, prepare, cancel), and catalog:delete (request a deletion, which the person still has to approve).

A person can disconnect every assistant at once from /v1/deletion-approvals/disconnect. Existing tokens stop working, and an assistant can reconnect only after the person signs in again.

Tools

Every tool answers with a plain-text sentence first. The typed result follows as structuredContent (and repeated as JSON text at the end of content).

ToolAccessreadOnlyHintdestructiveHintidempotentHintScope
get_catalog_profilereadtruefalsetruecatalog:read
upload_catalog_filewritefalsefalsetruecatalog:write
prepare_catalogwritefalsefalsetruecatalog:write
get_catalog_jobreadtruefalsetruecatalog:read
list_catalog_artifactsreadtruefalsetruecatalog:read
read_catalog_artifactreadtruefalsetruecatalog:read
cancel_catalog_jobwritefalsetruetruecatalog:write
delete_catalog_jobwritefalsetruetruecatalog:delete

openWorldHint is false for every tool: none of them reach outside Catalog Prep.

get_catalog_profile

upload_catalog_file

prepare_catalog

get_catalog_job

list_catalog_artifacts

read_catalog_artifact

cancel_catalog_job

delete_catalog_job

Limits

LimitValue
Inline file size4,000,000 decoded bytes per upload or artifact read
Rows per file5,000
Request rate100 requests per minute per person, per action
RetentionA finished job's files are kept for 7 days unless deleted sooner
ErrorsJSON with a stable code, a message, and retryable; rate_limited adds retry_after_seconds

Example prompts

Each needs the supplier file and the store's import template (a CSV with the store's column headers).

  1. "Turn this supplier price list into a CSV I can import into my store."
  2. "Clean up this carton spreadsheet: sizes, board grade, and case pack in separate columns."
  3. "Which rows in my supplier file are missing dimensions or pricing?"
  4. "Convert this corrugated box catalog into my ecommerce import format and show me what you couldn't match."

Data handling