{"apiVersion":"v1","directorySlug":"zine-mcp-41c534ff6f","title":"ZINE!","description":"Turn the thing your assistant just built into a real app: its own memory, its own address, on your phone. Free, and nothing to sign up for. Agents: full instructions at /llms.txt","pageUrl":"https://www.mcpbundles.com/skills/zine-mcp-41c534ff6f","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://www.zine.online/mcp","hostedMcpUrl":null,"toolCount":13,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"online.zine/zine-mcp-41c534ff6f","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"deploy_zine","description":"Ship a zine: a real web app with its own database, live at its own URL in about a second. Pass `html` for a single file, or `files` for a directory. Omit `zine` to create, pass a slug to ship a new version — URL, database and members are preserved. No build step: what you send is what runs.\nIn the page you are given `zine.me` ({id, name, role}), `zine.sql(sql, args)` and `zine.setName(name)`. Do not write a login form or a signup flow; identity is already resolved. Names default to \"You\", so if","inputSchema":{"type":"object","required":[],"properties":{"html":{"type":"string"},"icon":{"type":"string"},"name":{"type":"string"},"note":{"type":"string"},"zine":{"type":"string"},"files":{"type":"array","items":{"type":"object","required":["path","content"],"properties":{"path":{"type":"string"},"content":{"type":"string"},"encoding":{"enum":["utf8","base64"],"type":"string"}}}},"merge":{"type":"boolean"},"theme":{"type":"string"},"account":{"type":"string"}}},"logicalName":"deploy_zine","displayName":"deploy_zine","title":"deploy_zine","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"copy_files","description":"Copy files from one zine to another that already exists, keeping the destination’s URL, database, members and history. Use this to push an update from one zine to another, or to pull a starter’s code into a zine you already have — fork_zine only ever makes a NEW zine with an empty database, so it cannot do this. Copies every file by default; pass `paths` for a subset. Returns each file with its byte count so you can verify it landed.","inputSchema":{"type":"object","required":["from","to"],"properties":{"to":{"type":"string"},"from":{"type":"string"},"paths":{"type":"array","items":{"type":"string"}},"account":{"type":"string"},"replace":{"type":"boolean"}}},"logicalName":"copy_files","displayName":"copy_files","title":"copy_files","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"fork_zine","description":"Copy an existing zine as a starting point. Any zine the user can open can be forked, including public ones in the directory — this is how starters work, and a starter is just a public zine. The fork gets its own empty database with the same table structure copied over; no data comes with it. Only useful when you already know a slug worth copying — there is no starter directory to browse yet, so do not go looking for one.","inputSchema":{"type":"object","required":["zine"],"properties":{"name":{"type":"string"},"zine":{"type":"string"},"account":{"type":"string"}}},"logicalName":"fork_zine","displayName":"fork_zine","title":"fork_zine","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"request_server_tier","description":"Register that this user needs server-side compute — a secret or API key, an inbound webhook, scheduled work, or viewers who must not see each other’s data. The server tier is NOT built yet, so this does not enable anything: it records what was wanted so it gets built for the right reasons, and returns what to tell the user. Call it instead of building a client-side substitute, which for anything involving a secret is a leak rather than a workaround.","inputSchema":{"type":"object","required":["zine","reason"],"properties":{"zine":{"type":"string"},"reason":{"type":"string"},"account":{"type":"string"}}},"logicalName":"request_server_tier","displayName":"request_server_tier","title":"request_server_tier","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"view_zine","description":"Read the HTML currently running, or a specific earlier version. Do this before editing so you change the live code rather than rewriting from scratch.","inputSchema":{"type":"object","required":["zine"],"properties":{"path":{"type":"string"},"zine":{"type":"string"},"account":{"type":"string"},"version":{"type":"number"}}},"logicalName":"view_zine","displayName":"view_zine","title":"view_zine","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"zine_sql","description":"Run a SQL query against a zine’s own database and get the rows back. This is how you answer questions about someone’s zine without opening it — \"what did I lift on Tuesday?\", \"how many people signed up?\" — including in a conversation that did not create it. One statement per call; use ? placeholders and pass args. For bulk work or a schema dump, use zine_db instead.","inputSchema":{"type":"object","required":["zine","sql"],"properties":{"sql":{"type":"string"},"args":{"type":"array","items":{}},"zine":{"type":"string"},"account":{"type":"string"}}},"logicalName":"zine_sql","displayName":"zine_sql","title":"zine_sql","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"zine_db","description":"Get credentials for a zine’s own SQLite (libSQL) database. Connect with any libSQL client and do whatever you need: create tables, migrate, query, fix rows. Every zine has its own isolated database, so nothing you do here can affect anyone else. The token is short-lived — mint a fresh one rather than reusing an old one.","inputSchema":{"type":"object","required":["zine"],"properties":{"zine":{"type":"string"},"account":{"type":"string"}}},"logicalName":"zine_db","displayName":"zine_db","title":"zine_db","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"zine_login_link","description":"Get a fresh link that signs the user’s browser in to this account. Use it whenever they cannot open their own zine — a private zine showing \"you need an invite link\" means their browser simply is not signed in yet, not that anything is broken. Also use it when they want their zines on a second device. The link is good for 30 minutes and a handful of opens, so checking that it works does not spend it. Requires the account token, so it grants nothing you do not already have.","inputSchema":{"type":"object","properties":{"zine":{"type":"string"},"account":{"type":"string"}}},"logicalName":"zine_login_link","displayName":"zine_login_link","title":"zine_login_link","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_zines","description":"List the zines this user owns or belongs to.","inputSchema":{"type":"object","properties":{"account":{"type":"string"}}},"logicalName":"list_zines","displayName":"list_zines","title":"list_zines","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"zine_status","description":"Everything about one zine: its URL, who can see it, its version history, its database, and any errors real visitors have hit. Check this after deploying, and whenever the user says something is broken — the errors here are from their actual browser.","inputSchema":{"type":"object","required":["zine"],"properties":{"zine":{"type":"string"},"account":{"type":"string"}}},"logicalName":"zine_status","displayName":"zine_status","title":"zine_status","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"share_zine","description":"Create an invite link for someone specific, so they can open a private zine. Anyone who follows the link becomes a member at the role you choose. Requires a claimed account, since the person you invite will be depending on the zine still being there. Zine does not deliver the link yet — hand it back to the user to send however they like.","inputSchema":{"type":"object","required":["zine"],"properties":{"to":{"type":"string"},"role":{"enum":["viewer","editor"],"type":"string"},"zine":{"type":"string"},"account":{"type":"string"},"max_uses":{"type":"number"}}},"logicalName":"share_zine","displayName":"share_zine","title":"share_zine","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"set_visibility","description":"Change who can open a zine. \"private\" is members only, \"unlisted\" is anyone with the link, \"public\" also lists it in the directory. Confirm with the user before making anything public.","inputSchema":{"type":"object","required":["zine","visibility"],"properties":{"zine":{"type":"string"},"account":{"type":"string"},"tagline":{"type":"string"},"visibility":{"enum":["private","unlisted","public"],"type":"string"}}},"logicalName":"set_visibility","displayName":"set_visibility","title":"set_visibility","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_zine","description":"Permanently delete a zine and drop its database. This cannot be undone and the data is not recoverable. Always confirm with the user first, then pass the zine’s exact name as `confirm_name`.","inputSchema":{"type":"object","required":["zine","confirm_name"],"properties":{"zine":{"type":"string"},"account":{"type":"string"},"confirm_name":{"type":"string"}}},"logicalName":"delete_zine","displayName":"delete_zine","title":"delete_zine","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=ZINE-&config=eyJ1cmwiOiAiaHR0cHM6Ly93d3cuemluZS5vbmxpbmUvbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22ZINE-%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fwww.zine.online%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22ZINE-%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fwww.zine.online%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=ZINE%21&connectorUrl=https%3A%2F%2Fwww.zine.online%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"ZINE-\" --url \"https://www.zine.online/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/zine-mcp-41c534ff6f","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/zine-mcp-41c534ff6f/tools/{tool}","mcpServerUrl":"https://www.zine.online/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/zine-mcp-41c534ff6f?live=1"}