- Minipages Mcp
Minipages Mcp
{"name":"minipages-mcp","version":"1.2.0","protocolVersion":"2024-11-05","capabilities":{"tools":{}},"tools":[{"name":"create_minipage","title":"Create Mini Page","description":"Creates a live link-in-bio page for the authenticated user. Returns a live URL.","annotations":{"title":"Create Mini Page","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"username":{"type":"string","description":"URL slug (2-50 chars, letters/numbers/_/-)"},"creator_name":{"type":"string","description":"Display name shown on the page"},"bio_text":{"type":"string","description":"Optional short bio"},"links":{"type":"array","minItems":1,"items":{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","description":"Full URL including http(s)://"}},"required":["label","url"]}},"theme_style":{"type":"string","description":"Visual theme for the page. Valid values (use exact string):\n- minimal clean\n- bold vibrant\n- pastel soft\n- dark elegant\n- retro warm\n- dreamy gradient\n- cute soft pink theme with hearts\n- electric neon gradient\n- electric gradient neon gaming\nAnything not in this list falls back to minimal clean."},"emoji_style":{"type":"string","description":"Visual emoji style. Accepted values: 'minimal' | 'playful' | 'professional' | 'trendy' | 'none'.","enum":["minimal","playful","professional","trendy","none"]}},"required":["username","creator_name","links"]}},{"name":"edit_minipage","title":"Edit Mini Page","description":"Edits an existing mini page owned by the authenticated user. Before calling, use get_minipage to read current values. If background_image_url is set on the page, do NOT change colors or theme_style without first telling the user the background image will override them and asking them to remove it at https://minipages.cloud.","annotations":{"title":"Edit Mini Page","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"username":{"type":"string","description":"URL slug of the page to edit"},"creator_name":{"type":"string"},"bio_text":{"type":"string"},"links":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string"}},"required":["label","url"]}},"theme_style":{"type":"string","description":"Visual theme for the page. Valid values (use exact string):\n- minimal clean\n- bold vibrant\n- pastel soft\n- dark elegant\n- retro warm\n- dreamy gradient\n- cute soft pink theme with hearts\n- electric neon gradient\n- electric gradient neon gaming\nAnything not in this list falls back to minimal clean."},"emoji_style":{"type":"string","description":"Visual emoji style. Accepted values: 'minimal' | 'playful' | 'professional' | 'trendy' | 'none'.","enum":["minimal","playful","professional","trendy","none"]},"colors":{"type":"array","description":"Optional hex colors like ['#FFC0CB','#DA70D6']. Overrides theme palette.","items":{"type":"string","pattern":"^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"},"minItems":1,"maxItems":10},"avatar_url":{"type":"string","description":"Optional public https:// image URL for the profile picture/avatar.","pattern":"^https://"}},"required":["username"]}},{"name":"get_minipage","title":"Get Mini Page","description":"Returns the full current data for a single mini page owned by the authenticated user (creator_name, bio_text, links, theme_style, emoji_style, colors, avatar_url, background_image_url, updated_at, url). USAGE RULE: Always call this FIRST with a guessed slug (e.g. the name/handle the user mentioned) before list_my_minipages — only fall back to list_my_minipages if this returns not found. Use this before edit_minipage to read existing values so you can merge changes safely. IMPORTANT: If background_image_url is set, any color or theme_style change via edit_minipage will be visually overridden by the background image — warn the user and ask them to remove the background first at https://minipages.cloud before applying color changes.","annotations":{"title":"Get Mini Page","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"username":{"type":"string","description":"URL slug of the page to fetch"}},"required":["username"]}},{"name":"delete_minipage","title":"Delete Mini Page","description":"Deletes a mini page owned by the authenticated user. The page is removed immediately and recoverable for a short retention window before permanent purge.","annotations":{"title":"Delete Mini Page","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"username":{"type":"string"}},"required":["username"]}},{"name":"list_my_minipages","title":"List My Mini Pages","description":"Lists all mini pages owned by the authenticated user. Prefer get_minipage with a guessed slug first — only call this as a fallback when the slug is unknown or get_minipage returned not found.","annotations":{"title":"List My Mini Pages","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{}}},{"name":"get_analytics","title":"Get Mini Page Analytics","description":"Returns visitor analytics for a mini page owned by the authenticated user: total views, unique visitors, top links by clicks, top countries, top referrers, and daily views over time.","annotations":{"title":"Get Mini Page Analytics","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"username":{"type":"string","description":"URL slug of the page"},"date_range":{"type":"string","description":"'today' | 'week' | 'month' | 'all' (default: 'week')","enum":["today","week","month","all"]}},"required":["username"]}},{"name":"get_next_inquiry","title":"Get Next Business Inquiry","description":"Returns the single best undelivered business inquiry for a mini page owned by the authenticated user. Messages are AI-filtered for quality (spam/low-effort notes are auto-discarded) and returned best first. This is a pure read — it does NOT mark the inquiry as delivered. After you successfully reply via reply_to_inquiry, call mark_inquiry_delivered to remove it from the queue. If AI scoring is unavailable, returns { inquiry: null, scoring_unavailable: true }.","annotations":{"title":"Get Next Business Inquiry","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"username":{"type":"string","description":"URL slug of the page"}},"required":["username"]}},{"name":"mark_inquiry_delivered","title":"Mark Inquiry Delivered","description":"Call this after successfully replying to an inquiry to mark it as delivered. Do not call before the reply is confirmed.","annotations":{"title":"Mark Inquiry Delivered","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"username":{"type":"string","description":"URL slug of the page that owns the inquiry"},"inquiry_id":{"type":"string","description":"UUID of the inquiry to mark delivered"}},"required":["username","inquiry_id"]}},{"name":"reply_to_inquiry","title":"Reply to Business Inquiry","description":"Stores the creator's reply to a specific business inquiry. If the original sender left an email, returns sender_email and suggested_subject so Claude can hand off to the Gmail MCP (or another email tool) to actually send the message. If no email is on file, the reply is stored as pending for manual delivery. After a successful send, call mark_inquiry_delivered.","annotations":{"title":"Reply to Business Inquiry","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"username":{"type":"string","description":"URL slug of the page that received the inquiry"},"inquiry_id":{"type":"string","description":"UUID of the inquiry to reply to"},"message":{"type":"string","description":"The reply text to send back to the sender"}},"required":["username","inquiry_id","message"]}},{"name":"import_links_from_url","title":"Import Links From URL","description":"Fetches a public link-in-bio page (e.g. Linktree, Beacons, Bio.site, another MiniPage) and extracts ONLY the user's outbound links as a list of {label, url} objects, ready to be passed into create_minipage. Does NOT copy any design, colors, fonts, layout, avatar, or background. Strips platform branding/footer/admin links.\n\nMANDATORY CONFIRMATION FLOW: Before calling this tool, you MUST present the following checkbox to the user in chat and wait for an explicit confirmation reply:\n\n ☐ I confirm this link in bio belongs to me\n\nOnly after the user explicitly confirms ownership may you call this tool with confirmed=true. The tool will refuse (400) if confirmed is false or missing. The authenticated user_id and confirmed_at timestamp are logged server-side as an ownership attestation.","annotations":{"title":"Import Links From URL","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Full public URL (https://) of the link-in-bio page to import links from.","pattern":"^https?://"},"confirmed":{"type":"boolean","description":"Must be true. Confirms the user explicitly checked the ownership checkbox in chat."}},"required":["url","confirmed"]}}],"authorization_servers":["https://minipages.cloud"]}
Server Config
{
"mcpServers": {
"minipages": {
"type": "http",
"url": "https://tfrfkhroqrltcjjyxkmg.supabase.co/functions/v1/mcp"
}
}
}