{"_id":"@wpconvert/mcp","_rev":"4-ad887308f0dd92b942f3a4390be2c36c","name":"@wpconvert/mcp","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"@wpconvert/mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","wordpress","wpconvert","ai"],"author":{"name":"WPConvert.ai"},"license":"MIT","_id":"@wpconvert/mcp@0.1.0","maintainers":[{"name":"wpconvert","email":"support@wpconvert.ai"}],"bin":{"wpconvert-mcp":"src/server.mjs"},"dist":{"shasum":"a09029c0260c40acfe7d6871b654d364b9b860fe","tarball":"https://registry.npmjs.org/@wpconvert/mcp/-/mcp-0.1.0.tgz","fileCount":3,"integrity":"sha512-pRcQjVh4HjrY+iioE/yH9BX7yuL8npaKC3TBW7sjpoyJTrPRGUm0zrcOsgYthHLDiMoQ9WQyGjjILTAC4nA20w==","signatures":[{"sig":"MEUCIFkXqSj5USGkYMjcewxoAvLjNQl1mghzS2es0QgsmwRtAiEAgg8NdO6z2Ks1a74MOSL+IYQeTBZvaLiKU9FEaIQfF04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12681},"type":"module","engines":{"node":">=18"},"gitHead":"1d56920030cd48b3e8e5d33a9b5bfe6223da0176","_npmUser":{"name":"wpconvert","email":"support@wpconvert.ai"},"_npmVersion":"10.9.0","description":"Model Context Protocol server for WPConvert.ai — lets an AI agent convert the current workspace folder into a WordPress theme.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"wpconvert":"^0.1.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1782860364752_0.056748876981214336","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@wpconvert/mcp","version":"0.2.0","keywords":["mcp","model-context-protocol","wordpress","wpconvert","ai"],"author":{"name":"WPConvert.ai"},"license":"MIT","_id":"@wpconvert/mcp@0.2.0","maintainers":[{"name":"wpconvert","email":"support@wpconvert.ai"}],"bin":{"wpconvert-mcp":"src/server.mjs"},"dist":{"shasum":"22e03c6617c2af0c87fcbc76353a48057ec01cec","tarball":"https://registry.npmjs.org/@wpconvert/mcp/-/mcp-0.2.0.tgz","fileCount":3,"integrity":"sha512-QQkSB98rc+nPw9+VPe/oZOWB5BxDAomTnuolUpddOY2Hqt8vE2d6ZxwixMRO2O4+62MSmnhwQHzpDrvs8vw6Gg==","signatures":[{"sig":"MEUCIQCptmEISCCLn1ODc7MaXCYzgYEpJ72DU0jNUsvV3i6SRwIgNZfvNcttftH6lhwomk8W3FlLwndZatHGymOaGCnsdbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26215},"type":"module","engines":{"node":">=18"},"scripts":{"test":"node --test tests/**/*.test.js","start":"node src/server.mjs"},"_npmUser":{"name":"wpconvert","email":"support@wpconvert.ai"},"_npmVersion":"10.9.0","description":"Model Context Protocol server for WPConvert.ai — lets an AI agent convert the current workspace folder into a WordPress theme.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"wpconvert":"0.2.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.0_1785537950072_0.8293854997570052","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@wpconvert/mcp","version":"0.3.0","keywords":["mcp","model-context-protocol","wordpress","wpconvert","ai"],"author":{"name":"WPConvert.ai"},"license":"MIT","_id":"@wpconvert/mcp@0.3.0","maintainers":[{"name":"wpconvert","email":"support@wpconvert.ai"}],"bin":{"wpconvert-mcp":"src/server.mjs"},"dist":{"shasum":"9050cda6d4964c06b4269e1356bc517d48952413","tarball":"https://registry.npmjs.org/@wpconvert/mcp/-/mcp-0.3.0.tgz","fileCount":4,"integrity":"sha512-ZL9IOVsbC451DqjEuJYRKXbccfNekh4LB4ZzdkVEm6xnIr+r0amKNRL23TjRNTTqyFRvVSTZ1k5ylvdIsLlZ6w==","signatures":[{"sig":"MEQCIGd/uzB9GSts1gewDycv5BAPQdBDtzq9pSULqEhnTanhAiBqJJk0f6uxnxVN4kBoP1lpnIEiBWqAh7qvj3R4IYmLQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39175},"type":"module","engines":{"node":">=18"},"gitHead":"2085567a3f11508b15ae748ded47d47dc0bd428f","scripts":{"test":"node --test tests/**/*.test.js","start":"node src/server.mjs"},"_npmUser":{"name":"wpconvert","email":"support@wpconvert.ai"},"_npmVersion":"10.9.0","description":"Model Context Protocol server for WPConvert.ai — lets an AI agent convert the current workspace folder into a WordPress theme.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"wpconvert":"0.3.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.0_1786417196743_0.01718125010334992","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@wpconvert/mcp","version":"0.3.1","description":"Model Context Protocol server for WPConvert.ai — lets an AI agent convert the current workspace folder into a WordPress theme.","license":"MIT","author":{"name":"WPConvert.ai"},"homepage":"https://wpconvert.ai/developers","bugs":{"url":"https://github.com/FTWAgency/wpconvert-devtools/issues"},"repository":{"type":"git","url":"git+https://github.com/FTWAgency/wpconvert-devtools.git","directory":"packages/mcp"},"mcpName":"ai.wpconvert/mcp","type":"module","bin":{"wpconvert-mcp":"src/server.mjs"},"engines":{"node":">=18"},"scripts":{"start":"node src/server.mjs","test":"node scripts/run-tests.cjs"},"publishConfig":{"access":"public"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","wpconvert":"0.3.1"},"keywords":["mcp","model-context-protocol","wordpress","wpconvert","ai","lovable","cursor","v0","vite","react","frontend","static-site","ai-agent","agent","llm"],"_id":"@wpconvert/mcp@0.3.1","gitHead":"f0fbbc33b56d997a20d03d50c834fd4fdf1b7365","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-fjUaiTACDoIvfb+2Q/9EHy//M/YuPoZrYtcfJOCuL47YhgRNJbi0h6kXkVPFeySoKEo5FC3S8qger9sOAaUc4A==","shasum":"d067c393775431e2393fa2a9c11f133679a26019","tarball":"https://registry.npmjs.org/@wpconvert/mcp/-/mcp-0.3.1.tgz","fileCount":5,"unpackedSize":40766,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDlF5ZKkS/AlY5xBZQs/pWk8kHnLX7jyXdrsOqmEDd+JAIhAMVDJjbIw+vzKXZ0SgnNoFlP1ZkbeFNn5vyV1Mp0E/Tc"}]},"_npmUser":{"name":"wpconvert","email":"support@wpconvert.ai"},"directories":{},"maintainers":[{"name":"wpconvert","email":"support@wpconvert.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.3.1_1787112328640_0.2517284561056321"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-30T22:59:24.648Z","modified":"2026-08-19T04:05:28.950Z","0.1.0":"2026-06-30T22:59:24.882Z","0.2.0":"2026-07-31T22:45:50.212Z","0.3.0":"2026-08-11T02:59:56.907Z","0.3.1":"2026-08-19T04:05:28.775Z"},"author":{"name":"WPConvert.ai"},"license":"MIT","keywords":["mcp","model-context-protocol","wordpress","wpconvert","ai","lovable","cursor","v0","vite","react","frontend","static-site","ai-agent","agent","llm"],"description":"Model Context Protocol server for WPConvert.ai — lets an AI agent convert the current workspace folder into a WordPress theme.","maintainers":[{"name":"wpconvert","email":"support@wpconvert.ai"}],"readme":"# @wpconvert/mcp\n\nA [Model Context Protocol](https://modelcontextprotocol.io) server for [WPConvert.ai](https://wpconvert.ai). It lets an AI agent (Cursor, Claude Desktop, etc.) convert the current workspace folder into a WordPress theme — no manual zipping required.\n\nIt's a thin wrapper over the same HTTP API and smart-zip logic as the `wpconvert` CLI.\n\n> Requires Node.js >= 18 and a WPConvert API key. Full downloadable conversions require Pro/Agency or PAYG credits. Free verified accounts may also use preview-only keys (up to 3 lifetime Playground previews) when enabled on the server.\n\n## Tools\n\n| Tool | Purpose |\n| --- | --- |\n| `wpconvert_convert_folder` | Zip a folder (excluding `node_modules`, build output, secrets) and start a conversion. Returns a `jobId`. |\n| `wpconvert_check_status` | Poll a job's status. Persisted values follow the OpenAPI `ConversionStatus` enum (`queued`, pipeline stages, `done`, `failed`). The tool-layer bucket `processing` means still in progress — not a persisted API value. |\n| `wpconvert_download_result` | Download a completed conversion to disk. |\n| `wpconvert_create_preview` | Get a WordPress Playground URL to view the theme in a live in-browser WordPress. The link expires after about ten minutes and is sensitive — open it in a browser. |\n| `wpconvert_explain_failure` | Return the failure reason for a failed job. |\n| `wpconvert_quota` | Show quota, capabilities, and `recommended_next`. Call before converting. |\n\n## Configure (Cursor / Claude Desktop)\n\n```json\n{\n  \"mcpServers\": {\n    \"wpconvert\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@wpconvert/mcp\"],\n      \"env\": {\n        \"WPCONVERT_API_KEY\": \"wpc_live_xxx\"\n      }\n    }\n  }\n}\n```\n\nOptional: set `WPCONVERT_API_BASE` to point at a non-default API host (testing).\n\n## Typical agent flow\n\n**Quota-first (recommended):**\n\n1. `wpconvert_quota` → review `capabilities` (conversion mode, `can_start`, download availability) and `recommended_next`\n2. `wpconvert_convert_folder { \"path\": \"./my-site\", \"type\": \"theme\" }` → `jobId` + `idempotency_key` + `recommended_next`\n3. `wpconvert_check_status { \"jobId\": \"...\" }` (repeat until `done`; follow `recommended_next` — usually poll every ~15s)\n4. When `recommended_next.tool` is `wpconvert_download_result` → download the theme `.zip`\n5. When preview-only or download locked → `wpconvert_create_preview` for a WordPress Playground URL (no ZIP)\n\nIf conversion is blocked (`can_start: false`), `wpconvert_convert_folder` returns a structured denial **before** zipping or submitting. Call `wpconvert_quota` to review `recommended_action`.\n\n## Capabilities and structured responses\n\nTools return human-readable prose plus a trailing JSON block (same `ok()` / `fail()` pattern as before). Key fields:\n\n| Field | Where | Meaning |\n| --- | --- | --- |\n| `quota` | `wpconvert_quota` | Full backend quota body (unknown future fields preserved) |\n| `summary` | quota, denials | Projected `can_start`, `mode`, `consumes`, `download_available` |\n| `capabilities_available` | quota | `false` on legacy backends without `capabilities.conversion` |\n| `recommended_next` | all tools | `{ tool, reason, retry_after_seconds? }` — which MCP tool to call next |\n| `next_action` | convert success | **String** (unchanged) — human guidance for agents |\n| `idempotency_key` | convert | Omitted on preflight denial (no key generated) |\n\n**Status `recommended_next` rules:**\n\n- `queued`, pipeline stages, or tool-layer `processing` → `wpconvert_check_status` (poll)\n- `done` + downloadable → `wpconvert_download_result`\n- `done` + preview-only / download locked → `wpconvert_create_preview` (never download)\n- `failed` → `wpconvert_explain_failure`\n\n## Idempotency recovery\n\n- Leave `idempotency_key` blank for a **new intentional** conversion.\n- If a prior `wpconvert_convert_folder` call timed out or returned an ambiguous network error, retry with the **exact** `idempotency_key` from that call — do not omit it and do not invent a new one.\n- Do **not** reuse a key for changed files, options, or a deliberate new conversion.\n- Preflight runs **after** path/plan validation but **before** key generation (when omitted), ZIP build, and submit — so blocked accounts never upload.\n\n## Preview-only / download locked\n\nFree developer previews are preview-only (Playground, no ZIP download). When `download_available` is `false` or `preview_only` is `true`, status and download tools recommend `wpconvert_create_preview` or `wpconvert_quota` — not download retry.\n\n## Dependency pin\n\nThis package pins `wpconvert@0.3.0` exactly for shared capability helpers (`resolveConvertPreflight`, quota formatters).\n","readmeFilename":"README.md","homepage":"https://wpconvert.ai/developers","repository":{"type":"git","url":"git+https://github.com/FTWAgency/wpconvert-devtools.git","directory":"packages/mcp"},"bugs":{"url":"https://github.com/FTWAgency/wpconvert-devtools/issues"}}