{"name":"io.github.ysalitrynskyi/opn-mcp","slug":"ysalitrynskyi-opn-mcp","title":null,"description":"MCP server for opn.onl: shorten links, analytics, branded QR codes, and link management.","url":"https://mcp.market/server/ysalitrynskyi-opn-mcp","rating":null,"grade":"B","score":78,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":22,"stars":2,"forks":0,"downloads_week":31,"last_push_at":"2026-07-17T14:13:30.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/ysalitrynskyi/opn-mcp","website":null,"version":"1.2.0","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"opn-mcp","version":"1.2.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Your opn.onl API key (create one under Settings → API Keys).","isRequired":true,"isSecret":true,"name":"OPN_API_KEY"},{"description":"API base URL. Set this to your own instance's API for a self-hosted opn.onl.","default":"https://l.opn.onl","name":"OPN_BASE_URL"}]}],"tools":[{"name":"add_tags_to_link","description":"Attach one or more existing tags to a link.","write_action":false,"price_micros":0,"input_schema":null},{"name":"build_utm_url","description":"Append UTM campaign parameters to a URL. Returns the tagged URL (does not create a link).","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_alias_available","description":"Check whether a custom alias/slug is available before shortening with it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_url_health","description":"Check whether a destination URL is reachable (status + timing) before shortening it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clone_link","description":"Duplicate an existing link (same destination and settings) under a fresh short code.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_folder","description":"Create a folder for grouping links.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_tag","description":"Create a tag for organizing links.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_link","description":"Delete a short link.","write_action":true,"price_micros":0,"input_schema":null},{"name":"export_links_csv","description":"Export all your links as CSV (returns the raw CSV text).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_dashboard_stats","description":"Get account-wide analytics across all your links: totals, top links, and aggregate click breakdowns.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_link_routing_rules","description":"Get the smart-routing rules for a link (device/OS/country/language targeting and A/B weighting).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_link_stats","description":"Get click analytics for a link (clicks, unique visitors, geography, cities, devices, browsers, OS, referrers).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_qr_code","description":"Get the QR code for a link, optionally branded with a colour, centre logo, and PNG/SVG format.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_folders","description":"List your folders (each with its link count).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_links","description":"List your short links (most recent first). Filter by folder, tag or free-text search.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_tags","description":"List your tags (each with its link count).","write_action":false,"price_micros":0,"input_schema":null},{"name":"move_links_to_folder","description":"Move one or more links into a folder.","write_action":false,"price_micros":0,"input_schema":null},{"name":"preview_url_metadata","description":"Fetch Open Graph metadata (title, description, image, site name) for a URL — handy for auto-titling a link before shortening it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"remove_tags_from_link","description":"Detach one or more tags from a link.","write_action":true,"price_micros":0,"input_schema":null},{"name":"set_link_routing_rules","description":"Replace ALL smart-routing rules for a link. Each rule sends visitors matching the given device/OS/country/language to its destination; empty match fields mean 'any'. Send an empty array to clear all rules.","write_action":false,"price_micros":0,"input_schema":null},{"name":"shorten_url","description":"Create a short link on opn.onl. Supports scheduling, click limits, folders, tags and one-time (burn-after-reading) links. Returns the short URL and its code.","write_action":true,"price_micros":0,"input_schema":null},{"name":"shorten_urls_bulk","description":"Shorten many URLs in one call. Returns the created links plus any per-URL errors.","write_action":false,"price_micros":0,"input_schema":null},{"name":"toggle_link_pin","description":"Pin or unpin a link (pinned links surface first in the dashboard). Toggles the current state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_link","description":"Update a link's destination, title, notes, scheduling, click limit, folder or protections. Use the remove_* flags to clear a field.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":78,"grade":"B","scanned_at":"2026-09-26T05:11:45.920Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T05:11:45.965Z","components":{"code":{"score":25,"max":25,"notes":["4 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":12,"max":15,"notes":["last push 71 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"opn-mcp","version":"1.2.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-07-12T18:21:13.051Z","repositoryUrl":"git+https://github.com/ysalitrynskyi/opn-mcp.git","weeklyDownloads":31}],"repo":{"found":true,"owner":"ysalitrynskyi","repo":"opn-mcp","archived":false,"pushedAt":"2026-07-17T14:13:30Z","stars":2,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/25203302?v=4","ownerCreatedAt":"2017-01-18T15:19:10Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/25203302?v=4&s=128","source":"github"},"presence":{"stars":2,"forks":0,"downloadsWeek":31,"license":"MIT","lastPushAt":"2026-07-17T14:13:30.000Z","score":22}}}},"grade_history":[],"reviews":[]}