Snip
Free QR codes that never expire and free short links with click stats.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"snip": {
"url": "https://snip.link/mcp"
}
}
}원격 엔드포인트
https://snip.link/mcpstreamable-http할 수 있는 일
도구 목록
도구 (10)
🟢make_qr_code(data, style, fg, bg, ecc)
Make a static QR code for a link, text, Wi-Fi network, contact card, email, phone number or SMS, free and with no account. Returns a PNG and an SVG download link that the user can open, save or print; show the PNG link to the user. Static codes hold the content in the pattern, so they never expire and keep working without Snip. Use this whenever the user asks for a QR code.
입력 스키마
{
"type": "object",
"properties": {
"data": {
"type": "string",
"minLength": 1,
"maxLength": 1500,
"description": "What the QR code holds: a web address, plain text, a WIFI:T:WPA;S:<name>;P:<password>;; string, a vCard, mailto:, tel: or sms:. For a link the user may want to change or track later, call shorten_link instead and use its QR code."
},
"style": {
"type": "string",
"enum": [
"rounded",
"square"
],
"description": "Dot shape. Default rounded."
},
"fg": {
"type": "string",
"maxLength": 7,
"description": "Dark colour, #rrggbb, for example #111111. Default #111111."
},
"bg": {
"type": "string",
"maxLength": 7,
"description": "Background colour, #rrggbb. Default #ffffff."
},
"ecc": {
"type": "string",
"enum": [
"L",
"M",
"Q",
"H"
],
"description": "Error correction: L 7%, M 15% (default), Q 25%, H 30% of the code can be damaged and still scan."
}
},
"required": [
"data"
],
"additionalProperties": false
}🟡shorten_link(url, ending, title, domain, routes)
Turn a long web address into a short snip.link link, free, and get a QR code for it. Use this when the user wants a short link, a link they can change after printing, or click and scan counts. When the user is not signed in to Snip the link works at once and the answer includes a claim link the user can open to keep it in a free Snip account and see its clicks. When they are signed in (the account endpoint or an API key) the link is saved to their account, and a custom ending (snip.link/your-ending) is allowed.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "The http or https address to shorten."
},
"ending": {
"type": "string",
"minLength": 0,
"maxLength": 40,
"description": "Custom ending for snip.link/<ending>: 3 to 40 ASCII letters, digits, dashes or underscores, with no spaces. Free with a Snip account. Omit or send an empty string for a random code."
},
"title": {
"type": "string",
"maxLength": 200,
"description": "A name for the link in the user's dashboard. Needs the user signed in to Snip."
},
"domain": {
"type": "string",
"maxLength": 253,
"description": "One of the user's own live domains (go.yourbrand.com, see list_domains) to put the link on instead of snip.link. Needs the user signed in on a plan with own domains."
},
"routes": {
"type": "array",
"maxItems": 20,
"description": "Rules that send some visits elsewhere, tried in order; the first match wins and everyone else goes to url. Free with a Snip account. Each rule: conditions joined by when (all or any) and its own url. Condition kinds: device (values mobile, tablet, desktop), os (ios, android, windows, macos, linux, chromeos), browser (chrome, safari, firefox, edge, samsung, opera, instagram, facebook, tiktok), country (ISO codes like US), region (US-CA), language (en, es), time (from and to as HH:MM, tz an IANA zone or \"visitor\"), weekday (values 0 Sunday to 6, tz), dates (from and/or to as 2026-11-01 or 2026-11-01T09:00, tz), via (value qr or link), referrer (sites like instagram.com), query (param, optional value), split (percent 1 to 99; neighbouring splits share visitors, so 50 then 50 is an A/B test). Any condition but split takes negate true. An empty list removes every rule.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 60,
"description": "A label for the dashboard."
},
"when": {
"type": "string",
"enum": [
"all",
"any"
],
"description": "all (default): every condition. any: one is enough."
},
"conditions": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"device",
"os",
"browser",
"country",
"region",
"language",
"time",
"weekday",
"dates",
"via",
"referrer",
"query",
"split"
]
},
"values": {
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
},
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"tz": {
"type": "string"
},
"value": {
"type": [
"string",
"null"
]
},
"param": {
"type": "string"
},
"percent": {
"type": "integer",
"description": "split: a whole percent from 1 to 99."
},
"negate": {
"type": "boolean"
}
},
"required": [
"kind"
],
"additionalProperties": false
}
},
"url": {
"type": "string",
"description": "Where a matching visit goes."
}
},
"required": [
"conditions",
"url"
],
"additionalProperties": false
}
}
},
"required": [
"url"
],
"additionalProperties": false
}🟡save_page(url, formats, fresh)
Read any web page as clean Markdown and keep a copy that stays the same even if the page changes or disappears. Returns the page's text in the answer, plus a short snip.link link and QR code for it, and the saved copy as Markdown, plain text, a full-page screenshot, a PDF and a web archive (each at the short link with an ending: .md, .txt, .jpg, .pdf, .mhtml). Free, no account needed. Use this when the user wants to read, quote, cite, summarize, archive or share a web page, or asks for a page as Markdown, text, a screenshot or a PDF. A page anyone saved in the last hour comes back at once.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "The http or https page to save."
},
"formats": {
"type": "array",
"items": {
"type": "string",
"enum": [
"markdown",
"text",
"screenshot",
"pdf",
"archive"
]
},
"description": "Only these formats (faster for just the text). Default: all of them."
},
"fresh": {
"type": "boolean",
"description": "Load the page again even if it was saved in the last hour. Default false."
}
},
"required": [
"url"
],
"additionalProperties": false
}🔴drop_file(name, content, content_base64, title)
Put a file on the web and get a short snip.link link to it, free. Send text (a note, Markdown, CSV, JSON, code) as `content`, or any other file (a PDF, a picture, a document) as `content_base64`, with its file name. The link opens a page that shows the file with a download button and a QR code; the link with the file's extension is the file itself, and other endings convert it (.pdf, .png, .md, .txt, .html, .csv, .json). Use this when the user wants to share, send, publish, host or link to a file, or wants something you wrote available as a link or a QR code. Files shared without an account stay up for 30 days unless the user keeps them with a free account.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "The file name with its extension, which decides how it is shown: notes.md, prices.csv, photo.png."
},
"content": {
"type": "string",
"description": "The file's text, for text files."
},
"content_base64": {
"type": "string",
"description": "The file's bytes in base64, for anything else."
},
"title": {
"type": "string",
"maxLength": 200,
"description": "A title for the user's dashboard (signed in only)."
}
},
"required": [
"name"
],
"additionalProperties": false
}🟢get_link_stats(link, days)
Clicks and QR scans for one of the user's own Snip links: totals, by day, by hour of the day on plans with time-of-day analytics, and the top countries, referring sites and devices. Needs the user signed in to Snip (the account endpoint or an API key). Pass the short link, its ending or its id. For every link at once, use get_account_stats.
입력 스키마
{
"type": "object",
"properties": {
"link": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "The short link (https://snip.link/abc123), its ending (abc123) or its id."
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 366,
"description": "How many days back, up to the plan's limit (30 on Free, a year on Pro). Default 30."
}
},
"required": [
"link"
],
"additionalProperties": false
}🟢get_account_stats(days, links)
Clicks and QR scans across every link in the user's Snip account: totals, by day, the busiest links, and the top countries, referring sites and devices. Needs the user signed in to Snip. Use this for questions like "how are my links doing" or "which link got the most scans this week".
입력 스키마
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"minimum": 1,
"maximum": 366,
"description": "How many days back, up to the plan's limit (30 on Free, a year on Pro). Default 30."
},
"links": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "How many of the busiest links to list. Default 10."
}
},
"additionalProperties": false
}🟢list_links(search, limit)
The user's Snip links, newest first, with their destinations and click counts. Needs the user signed in to Snip. Pass a search to match an ending, a destination or a title.
입력 스키마
{
"type": "object",
"properties": {
"search": {
"type": "string",
"maxLength": 200,
"description": "Text to match against the ending, destination and title."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "How many to return. Default 20."
}
},
"additionalProperties": false
}🟡update_link(link, ending, url, title, disabled, ...)
Changes the ending, destination, title or rules of one of the user's Snip links, switches it off and on, or watches its page for changes. Custom endings and renaming are free with an account. Previous short URLs and printed QR codes keep working, follow the latest destination and share the same analytics until the link is disabled or deleted. A link keeps up to 20 previous endings. Needs the user signed in to Snip. Pass only the fields to change.
입력 스키마
{
"type": "object",
"properties": {
"link": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "The short link (https://snip.link/abc123), its ending (abc123) or its id."
},
"ending": {
"type": "string",
"minLength": 3,
"maxLength": 40,
"description": "The new ending: 3 to 40 ASCII letters, digits, dashes or underscores, with no spaces. Reusing this link's previous ending or changing only its case does not use another previous-ending slot."
},
"url": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "The new http or https destination."
},
"title": {
"type": "string",
"maxLength": 200,
"description": "A new name for the dashboard."
},
"disabled": {
"type": "boolean",
"description": "True switches the link off (it answers 404); false switches it back on."
},
"routes": {
"type": "array",
"maxItems": 20,
"description": "Rules that send some visits elsewhere, tried in order; the first match wins and everyone else goes to url. Free with a Snip account. Each rule: conditions joined by when (all or any) and its own url. Condition kinds: device (values mobile, tablet, desktop), os (ios, android, windows, macos, linux, chromeos), browser (chrome, safari, firefox, edge, samsung, opera, instagram, facebook, tiktok), country (ISO codes like US), region (US-CA), language (en, es), time (from and to as HH:MM, tz an IANA zone or \"visitor\"), weekday (values 0 Sunday to 6, tz), dates (from and/or to as 2026-11-01 or 2026-11-01T09:00, tz), via (value qr or link), referrer (sites like instagram.com), query (param, optional value), split (percent 1 to 99; neighbouring splits share visitors, so 50 then 50 is an A/B test). Any condition but split takes negate true. An empty list removes every rule.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 60,
"description": "A label for the dashboard."
},
"when": {
"type": "string",
"enum": [
"all",
"any"
],
"description": "all (default): every condition. any: one is enough."
},
"conditions": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"device",
"os",
"browser",
"country",
"region",
"language",
"time",
"weekday",
"dates",
"via",
"referrer",
"query",
"split"
]
},
"values": {
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
},
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"tz": {
"type": "string"
},
"value": {
"type": [
"string",
"null"
]
},
"param": {
"type": "string"
},
"percent": {
"type": "integer",
"description": "split: a whole percent from 1 to 99."
},
"negate": {
"type": "boolean"
}
},
"required": [
"kind"
],
"additionalProperties": false
}
},
"url": {
"type": "string",
"description": "Where a matching visit goes."
}
},
"required": [
"conditions",
"url"
],
"additionalProperties": false
}
},
"watch": {
"type": "string",
"enum": [
"daily",
"weekly",
"off"
],
"description": "Watch the destination page: Snip saves a fresh copy daily or weekly and emails the user what was added and what went when its words change. off stops. A paid plan feature; the error says which plan has it."
}
},
"required": [
"link"
],
"additionalProperties": false
}🔴delete_link(link)
Permanently deletes one of the user's Snip links and its click history; its current and previous short URLs stop working within a minute and all of its endings are free again. Needs the user signed in to Snip. Confirm with the user first; to pause every ending instead, use update_link with disabled true.
입력 스키마
{
"type": "object",
"properties": {
"link": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "The short link (https://snip.link/abc123), its ending (abc123) or its id."
}
},
"required": [
"link"
],
"additionalProperties": false
}🟢list_domains
The user's own domains (go.yourbrand.com) that their Snip links can use, with whether each is live. Pass a live one as domain to shorten_link. Needs the user signed in to Snip; adding a domain happens in the dashboard (it needs a DNS record).
입력 스키마
{
"type": "object",
"properties": {},
"additionalProperties": false
}커뮤니티
증거