{"servers":[{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.06ketan/substack-ops","description":"Substack CLI + 26-tool MCP server. Your IDE drafts replies via propose_reply. No API keys.","title":"substack-ops","repository":{"url":"https://github.com/06ketan/substack-ops","source":"github"},"version":"0.3.1","websiteUrl":"https://substack-ops.chavan.in","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"substack-ops","version":"0.3.1","runtimeHint":"uvx","transport":{"type":"stdio"},"packageArguments":[{"value":"mcp","type":"positional"},{"value":"serve","type":"positional"}],"environmentVariables":[{"description":"Your Substack publication URL (e.g. https://you.substack.com/). Optional if set in ~/.cursor/mcp.json's mcpServers.substack-api.env.","name":"SUBSTACK_PUBLICATION_URL"},{"description":"Your Substack numeric user id. Optional if set in ~/.cursor/mcp.json.","name":"SUBSTACK_USER_ID"},{"description":"Your Substack session cookie value (the s%3A... string). Required for authenticated calls. Easier path: run `substack-ops auth login --browser chrome` and the cookie is auto-grabbed.","isSecret":true,"name":"SUBSTACK_SESSION_TOKEN"},{"description":"Override path to the mcp.json file the auth layer reads. Defaults to ~/.cursor/mcp.json.","name":"SUBSTACK_OPS_MCP_PATH"},{"description":"Optional: override the host CLI used by the unattended daemon path (default: auto-detect claude / cursor-agent / codex on PATH). Use {prompt} placeholder if your CLI takes the prompt as an arg.","name":"SUBSTACK_OPS_LLM_CMD"}]}],"_meta":{"io.modelcontextprotocol.registry/publisher-provided":{"tool":"manual","version":"0.3.1"}}},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-04-21T12:33:40.632015Z","publishedAt":"2026-04-21T12:33:40.632015Z","updatedAt":"2026-04-21T12:33:40.632015Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.06ketan/substack-ops","description":"Substack CLI + 26-tool MCP server. Your IDE drafts replies via propose_reply. No API keys.","title":"substack-ops","repository":{"url":"https://github.com/06ketan/substack-ops","source":"github"},"version":"0.3.4","websiteUrl":"https://substack-ops.chavan.in","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"substack-ops","version":"0.3.4","runtimeHint":"uvx","transport":{"type":"stdio"},"packageArguments":[{"value":"mcp","type":"positional"},{"value":"serve","type":"positional"}],"environmentVariables":[{"description":"Your Substack publication URL (e.g. https://you.substack.com/). Optional if set in ~/.cursor/mcp.json's mcpServers.substack-api.env.","name":"SUBSTACK_PUBLICATION_URL"},{"description":"Your Substack numeric user id. Optional if set in ~/.cursor/mcp.json.","name":"SUBSTACK_USER_ID"},{"description":"Your Substack session cookie value (the s%3A... string). Required for authenticated calls. Easier path: run `substack-ops auth login --browser chrome` and the cookie is auto-grabbed.","isSecret":true,"name":"SUBSTACK_SESSION_TOKEN"},{"description":"Override path to the mcp.json file the auth layer reads. Defaults to ~/.cursor/mcp.json.","name":"SUBSTACK_OPS_MCP_PATH"},{"description":"Optional: override the host CLI used by the unattended daemon path (default: auto-detect claude / cursor-agent / codex on PATH). Use {prompt} placeholder if your CLI takes the prompt as an arg.","name":"SUBSTACK_OPS_LLM_CMD"}]}],"_meta":{"io.modelcontextprotocol.registry/publisher-provided":{"tool":"manual","version":"0.3.4"}}},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-05-02T12:54:15.231429Z","publishedAt":"2026-05-02T12:54:15.231429Z","updatedAt":"2026-05-02T12:54:15.231429Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.06ketan/substack-ops","description":"Substack CLI + 26-tool MCP server. Your IDE drafts replies via propose_reply. No API keys.","title":"substack-ops","repository":{"url":"https://github.com/06ketan/substack-ops","source":"github"},"version":"0.3.5","websiteUrl":"https://substack-ops.chavan.in","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"substack-ops","version":"0.3.5","runtimeHint":"uvx","transport":{"type":"stdio"},"packageArguments":[{"value":"mcp","type":"positional"},{"value":"serve","type":"positional"}],"environmentVariables":[{"description":"Your Substack publication URL (e.g. https://you.substack.com/). Optional if set in ~/.cursor/mcp.json's mcpServers.substack-api.env.","name":"SUBSTACK_PUBLICATION_URL"},{"description":"Your Substack numeric user id. Optional if set in ~/.cursor/mcp.json.","name":"SUBSTACK_USER_ID"},{"description":"Your Substack session cookie value (the s%3A... string). Required for authenticated calls. Easier path: run `substack-ops auth login --browser chrome` and the cookie is auto-grabbed.","isSecret":true,"name":"SUBSTACK_SESSION_TOKEN"},{"description":"Override path to the mcp.json file the auth layer reads. Defaults to ~/.cursor/mcp.json.","name":"SUBSTACK_OPS_MCP_PATH"},{"description":"Optional: override the host CLI used by the unattended daemon path (default: auto-detect claude / cursor-agent / codex on PATH). Use {prompt} placeholder if your CLI takes the prompt as an arg.","name":"SUBSTACK_OPS_LLM_CMD"}]}],"_meta":{"io.modelcontextprotocol.registry/publisher-provided":{"tool":"manual","version":"0.3.5"}}},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-05-03T06:30:21.883331Z","publishedAt":"2026-05-03T06:30:21.883331Z","updatedAt":"2026-05-03T06:30:21.883331Z","isLatest":true}}}],"metadata":{"count":3}}
