{"name":"io.github.addychang/miniurl","slug":"addychang-miniurl","title":"MiniURL","description":"OAuth 2.1 short-link tools for AI agents with scoped tokens, approvals, audit logs, and revocation.","url":"https://mcp.market/server/addychang-miniurl","rating":null,"grade":"C","score":57,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":20,"ok":20,"last_checked_at":"2026-09-24T07:51:10.965Z","last_ok_at":"2026-09-24T07:51:10.965Z","latency_ms":621},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/addychang/miniurl.com","website":"https://miniurl.com/mcp/","version":"1.2.0","remotes":[{"type":"streamable-http","url":"https://workers.miniurl.com/mcp"}],"packages":[],"tools":[{"name":"add_domain","description":"Request a custom domain to be connected to MiniURL. Agent domain changes require human approval by default.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","format":"hostname","description":"A custom hostname such as links.example.com."},"approval_id":{"type":"string"},"approval_token":{"type":"string","description":"Legacy compatibility field; normally omit it."}},"required":["domain"],"additionalProperties":false}},{"name":"bulk_create_links","description":"Create multiple short links in one request. Free accounts can create up to 10 at a time, Pro up to 50.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"links":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"alias":{"type":"string","minLength":1,"maxLength":64},"domain":{"type":"string","format":"hostname"},"password":{"type":"string"},"expiration":{"type":"string","format":"date-time"},"activated_at":{"type":"string","format":"date-time"}},"required":["url"]}},"idempotency_key":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]{8,128}$"}},"required":["links"],"additionalProperties":false}},{"name":"check_alias","description":"Check whether a custom alias is available on a given domain before creating a link.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"alias":{"type":"string","minLength":1,"maxLength":64,"description":"The alias to check."},"domain":{"type":"string","format":"hostname","description":"The domain to check on. Defaults to miniurl.com."}},"required":["alias"],"additionalProperties":false}},{"name":"clear_authentication","description":"Clear authentication retained by a legacy MCP session. Stateless clients clear authentication by omitting the Authorization header on later requests.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"create_guest_token","description":"Create a short-lived MiniURL guest bearer token. Legacy MCP sessions retain it; stateless clients must pass the returned gt_ token explicitly on later requests. shorten_url can provision one automatically.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"create_tag","description":"Create a new tag for organising links. Maximum 20 tags per account.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":30,"description":"Tag name, 1-30 characters."},"color":{"type":"string","enum":["#6b7280","#ef4444","#f97316","#eab308","#22c55e","#06b6d4","#3b82f6","#8b5cf6","#ec4899"],"description":"Tag colour hex code. Defaults to #6b7280 (grey)."}},"required":["name"],"additionalProperties":false}},{"name":"delete_domain","description":"Delete a custom domain and its linked URLs after a dry-run confirmation. Agent domain changes require human approval by default.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain_id":{"type":"integer","minimum":1},"confirm":{"type":"boolean","description":"Set true only after reviewing the dry-run impact response."},"approval_id":{"type":"string"},"approval_token":{"type":"string","description":"Legacy compatibility field; normally omit it."}},"required":["domain_id"],"additionalProperties":false}},{"name":"delete_link","description":"Delete a registered short link permanently.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"alias":{"type":"string","minLength":1,"maxLength":64,"description":"The alias to delete."},"domain":{"type":"string","format":"hostname","description":"The link domain. Defaults to miniurl.com."},"dry_run":{"type":"boolean","description":"Preview the deletion and affected link scope without writing. Human approval is still required for the real delete."},"idempotency_key":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]{8,128}$"},"approval_id":{"type":"string","description":"Approval id returned by a previous USER_APPROVAL_REQUIRED response."},"approval_token":{"type":"string","description":"Legacy compatibility field; normally omit it and retry with approval_id after approval."}},"required":["alias"],"additionalProperties":false}},{"name":"delete_tag","description":"Delete a tag and remove it from all associated links.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"tag_id":{"type":"integer","minimum":1,"description":"The tag ID to delete."},"approval_id":{"type":"string","description":"Approval id returned by a previous USER_APPROVAL_REQUIRED response."},"approval_token":{"type":"string","description":"Legacy compatibility field; normally omit it and retry with approval_id after approval."}},"required":["tag_id"],"additionalProperties":false}},{"name":"get_account_status","description":"Inspect the current guest/free/pro account status, remaining quota, and feature availability.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"get_link","description":"Get a single short link by alias for the current registered account.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"alias":{"type":"string","minLength":1,"maxLength":64,"description":"The link alias to fetch."},"domain":{"type":"string","format":"hostname","description":"The link domain. Defaults to miniurl.com."}},"required":["alias"],"additionalProperties":false}},{"name":"get_link_stats","description":"Get link analytics. Free accounts receive a basic total plus an upgrade hint; Pro accounts receive full breakdowns.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"alias":{"type":"string","minLength":1,"maxLength":64,"description":"The alias to inspect."},"domain":{"type":"string","format":"hostname","description":"Optional domain to scope the alias lookup. Defaults to miniurl.com."},"period":{"type":"string","enum":["24H","7D","30D","ALL"],"description":"Analytics time range. Defaults to 7D."}},"required":["alias"],"additionalProperties":false}},{"name":"list_domains","description":"List domains available to the current registered account, including miniurl.com and active custom domains.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"list_links","description":"List short links for the current registered account.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Optional page size. Defaults to 20."},"offset":{"type":"integer","minimum":0,"description":"Optional zero-based offset for pagination. Defaults to 0."},"cursor":{"type":"string","description":"Opaque cursor returned as next_cursor. Prefer cursor pagination for stable traversal."},"search":{"type":"string","description":"Optional search term for alias or destination URL."},"domain":{"type":"string","format":"hostname","description":"Optional domain filter."}},"additionalProperties":false}},{"name":"list_tags","description":"List all tags for the current registered account. Tags help organise links into campaigns or categories.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"send_registration_code","description":"Send a 6-digit registration code to the user email, using the current guest session.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"The user email address."}},"required":["email"],"additionalProperties":false}},{"name":"shorten_url","description":"Create a MiniURL short link for a supplied HTTP or HTTPS destination. Use when the user asks to shorten a URL or generate a MiniURL link. This is an additive external write; do not fetch or open the destination. If no authentication is supplied, MiniURL automatically starts a guest flow. Reuse idempotency_key when retrying the same logical request.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"The HTTP or HTTPS destination URL to shorten."},"alias":{"type":"string","minLength":1,"maxLength":64,"description":"Optional custom alias. Call check_alias before creating it. Requires a registered account; miniurl.com aliases must be at least 4 characters."},"domain":{"type":"string","format":"hostname","description":"Optional domain. Requires a registered account with an active custom domain."},"password":{"type":"string","description":"Optional password. Requires Pro."},"expiration":{"type":"string","format":"date-time","description":"Optional ISO 8601 expiration datetime. Requires Pro."},"activated_at":{"type":"string","format":"date-time","description":"Optional ISO 8601 activation datetime. Requires Pro."},"dry_run":{"type":"boolean","description":"Validate the destination and show the planned link without creating it. Agent tokens only."},"idempotency_key":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]{8,128}$","description":"Optional idempotency key. Reusing it with the same payload safely replays the original result."}},"required":["url"],"additionalProperties":false}},{"name":"start_pro_upgrade","description":"Create a shortened checkout link for upgrading the current registered account to Pro.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"interval":{"type":"string","enum":["monthly","yearly"],"description":"Billing interval. Defaults to monthly."},"idempotency_key":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]{8,128}$"},"approval_id":{"type":"string","description":"Approval id returned by a previous USER_APPROVAL_REQUIRED response."},"approval_token":{"type":"string","description":"Legacy compatibility field; normally omit it and retry with approval_id after approval."}},"additionalProperties":false}},{"name":"tag_link","description":"Add a tag to a short link for campaign or category organisation.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"alias":{"type":"string","minLength":1,"maxLength":64,"description":"The link alias to tag."},"domain":{"type":"string","format":"hostname","description":"The link domain. Defaults to miniurl.com."},"tag_id":{"type":"integer","minimum":1,"description":"The tag ID to assign."}},"required":["alias","tag_id"],"additionalProperties":false}},{"name":"untag_link","description":"Remove a tag from a short link.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"alias":{"type":"string","minLength":1,"maxLength":64,"description":"The link alias."},"domain":{"type":"string","format":"hostname","description":"The link domain. Defaults to miniurl.com."},"tag_id":{"type":"integer","minimum":1,"description":"The tag ID to remove."}},"required":["alias","tag_id"],"additionalProperties":false}},{"name":"update_link","description":"Update a registered short link. Some fields require Pro.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"alias":{"type":"string","minLength":1,"maxLength":64,"description":"The link alias to update."},"domain":{"type":"string","format":"hostname","description":"The link domain. Defaults to miniurl.com."},"url":{"type":"string","format":"uri","description":"New HTTP or HTTPS destination URL. Requires Pro."},"password":{"type":"string","description":"Set or replace the password. Requires Pro."},"clear_password":{"type":"boolean","description":"Remove the current password."},"expiration":{"type":"string","format":"date-time","description":"Set a new ISO 8601 expiration datetime. Requires Pro."},"clear_expiration":{"type":"boolean","description":"Clear the current expiration."},"activated_at":{"type":"string","format":"date-time","description":"Set a new ISO 8601 activation datetime. Requires Pro."},"clear_activated_at":{"type":"boolean","description":"Clear the current scheduled activation datetime."},"dry_run":{"type":"boolean","description":"Validate and preview the update without changing the link. Agent tokens only."},"idempotency_key":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]{8,128}$"}},"required":["alias"],"additionalProperties":false}},{"name":"verify_domain","description":"Refresh custom-domain DNS and SSL verification status. Agent domain changes require human approval by default.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain_id":{"type":"integer","minimum":1},"approval_id":{"type":"string"},"approval_token":{"type":"string","description":"Legacy compatibility field; normally omit it."}},"required":["domain_id"],"additionalProperties":false}},{"name":"verify_registration_code","description":"Verify the emailed code, create the account, claim guest links, and continue with OAuth 2.1 + PKCE. Long-lived API keys are never returned over MCP.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"The user email address."},"code":{"type":"string","pattern":"^\\d{6}$","description":"The 6-digit verification code."}},"required":["email","code"],"additionalProperties":false}}],"scan":{"score":57,"grade":"C","scanned_at":"2026-09-23T21:42:40.886Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-23T21:42:40.791Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1298ms"]},"poisoning":{"score":15,"max":15,"notes":["23 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 11 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://workers.miniurl.com/mcp","reachable":true,"authRequired":false,"latencyMs":1298,"serverInfo":{"name":"MiniURL MCP","version":"1.3.0"}}],"packages":[],"repo":{"found":false,"owner":"addychang","repo":"miniurl.com","error":"repo not found"},"icon":{"url":"https://miniurl.com/favicon.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}