Get started in 2 minutes
The free plan includes 1,000 links/month with full CLI, API, and MCP access. Pick the path that fits how you work.
Your API key
This is shown once. Save it now.
Choose your path
- I'm a Marketer
- Use the terminal to build tracked links and validate landing pages before launching campaigns.
- I use AI Agents
- Hand it to Claude, ChatGPT, Cursor, or any MCP-compatible agent and let them run it.
- I'm a Developer
- Use the CLI in scripts, the REST API in code, or the npm package in your build pipeline.
For Marketers
You don't need to write code. Open your terminal (Mac: Terminal app, Windows: PowerShell) and follow these three steps.
Install
This installs the mlz command on your machine. You need Node.js 18+ installed first.
npm install -g missinglinkz
Log in with your API key
Paste your API key. Don't have one yet? Generate a free key first — it takes a few seconds. This saves it locally so you don't need to enter it again.
mlz auth login --key mlz_live_your_key_here
Run your first preflight check
Replace the URL and campaign details with your own. This builds your tracked link, checks the destination is live, and inspects the landing page for social sharing readiness.
mlz preflight --url "https://yoursite.com/landing" --campaign "summer-sale" --source "linkedin" --medium "social" --format human
PASS ssl URL uses HTTPS.
PASS resolution Destination responded with 200.
PASS redirects No redirects detected.
PASS og_tags All essential Open Graph tags present.
PASS twitter_card Twitter Card tags configured.
PASS viewport Page is configured for mobile devices.
PASS canonical Canonical URL matches destination.
PASS favicon Favicon detected.
PASS response_time Response time: 142ms.
ready: true — 9 passed, 0 warnings, 0 failed
→ https://yoursite.com/landing?utm_source=linkedin&utm_medium=social&utm_campaign=summer-sale
That final URL is your tracked campaign link. Copy it and use it in your LinkedIn post, email, or ad.
What else can I do?
- Check a landing page before sending traffic
mlz inspect https://yoursite.com/landing— shows OG tags, Twitter Card, favicon, load time.- Validate a URL is working
mlz check https://yoursite.com/landing— checks SSL, redirects, response time.- Check your post copy fits the platform
mlz validate --copy "Your post text here" --platform linkedin— character limits, hashtag count, CTA detection.- See your past campaigns
mlz campaigns list— shows all campaigns tied to your account.
For AI Agent Users
MissingLinkz runs as an MCP server, which means Claude, ChatGPT, Cursor, Windsurf, and any MCP-compatible agent can use it as a tool. You install it once, add the config, and your agent handles the rest.
Set up with Claude Code
If you use Claude Code in the terminal, add MissingLinkz as an MCP server:
Install the package
Same install as above — skip if you already did this.
npm install -g missinglinkz
Add MCP config
Add this to your Claude Code settings (.claude/settings.json) or Claude Desktop config. Replace the API key with your real key.
{
"mcpServers": {
"missinglinkz": {
"command": "mlz",
"args": ["mcp"],
"env": {
"MLZ_API_KEY": "mlz_live_your_key_here"
}
}
}
}
Ask your agent to use it
Claude will automatically discover the MissingLinkz tools. Just ask in natural language:
> "Run a preflight check on https://mysite.com/promo
for a LinkedIn social campaign called summer-sale"
Claude uses mlz_preflight:
url: https://mysite.com/promo
source: linkedin, medium: social, campaign: summer-sale
PASS ssl, resolution, og_tags, twitter_card, viewport...
tracked_url: https://mysite.com/promo?utm_source=linkedin&utm_medium=social&utm_campaign=summer-sale
9/9 checks passed. Link is ready to publish.
Your agent can call mlz_preflight, mlz_build_link, mlz_inspect_destination, mlz_validate_url, mlz_validate_content, and 6 more tools.
Optional: sync the skill file
Beyond the MCP server, MissingLinkz ships a SKILL.md — a structured reference that teaches an agent every command, flag, and JSON shape so it can drive the CLI directly. Run one command to copy it into the location Claude Code and other agents scan automatically:
mlz skills sync
This installs to ~/.claude/skills/missinglinkz/SKILL.md and stamps it with the package version. After npm update -g missinglinkz, re-run mlz skills sync to refresh it — or wire mlz skills sync --check || mlz skills sync into your setup script. Use --project to install per-repo, or --path for a different agent directory.
Set up with Claude Desktop
Open Claude Desktop → Settings → Developer → Edit Config. Add the same JSON block above to claude_desktop_config.json. Restart Claude. The MissingLinkz tools will appear in the tool picker.
Set up with ChatGPT (via MCP bridge)
ChatGPT doesn't natively support MCP yet, but you can use it via an MCP bridge or by running MissingLinkz in HTTP mode and connecting it as a custom action:
Start the MCP server in HTTP mode
This exposes the tools as an HTTP endpoint that any client can call.
MLZ_API_KEY=mlz_live_your_key_here mlz mcp --http --port 3000
Connect from ChatGPT or any MCP client
Point your MCP bridge or custom GPT action to the local server:
Endpoint: http://localhost:3000/mcp
Transport: SSE (Server-Sent Events)
Set up with Cursor / Windsurf / other IDEs
Most MCP-compatible editors use the same config format. Add this to your editor's MCP settings:
{
"command": "mlz",
"args": ["mcp"],
"env": { "MLZ_API_KEY": "mlz_live_your_key_here" }
}
The MCP server exposes 13 tools. Your agent discovers them automatically and uses them when relevant.
What to ask your agent
Here are prompts that work out of the box once MissingLinkz is connected:
- "Run a preflight check on this URL before I post it on LinkedIn"
- Builds a tracked link, validates the destination, checks OG tags, Twitter Card, viewport, SSL, and more.
- "Build UTM links for my Q3 campaign across LinkedIn, Google, and email"
- Generates 3 consistently-named tracked links with proper source/medium/campaign values.
- "Check if this landing page has working social previews"
- Inspects OG tags, Twitter Card, favicon, and load time. Reports what's missing.
- "Validate my LinkedIn post copy before I publish"
- Checks character count, hashtag limits, CTA detection, and image dimensions.
- "Check my usage this month"
- Shows links used, links remaining, and billing period.
For Developers
Use the CLI in scripts, call the REST API from your code, or import the npm package directly. All output is JSON by default.
CLI in scripts and CI/CD
Set the API key as an environment variable and call mlz from any shell script, Makefile, or CI pipeline:
Set your API key
Add to your shell profile or CI secrets:
export MLZ_API_KEY=mlz_live_your_key_here
Build links in a loop
Generate 3 tracked links for different channels in one script:
#!/bin/bash
URL="https://yoursite.com/promo"
CAMPAIGN="q3-launch"
for source in linkedin google newsletter; do
mlz build \
--url "$URL" \
--campaign "$CAMPAIGN" \
--source "$source" \
--medium "social"
done
Add preflight checks to CI
Run mlz check in your GitHub Actions or pipeline to catch broken links before deploy:
- name: Validate campaign links
run: |
npm install -g missinglinkz
mlz check https://yoursite.com/promo
mlz check https://yoursite.com/webinar
env:
MLZ_API_KEY: ${{ secrets.MLZ_API_KEY }}
REST API
Call the API directly from any language. Base URL: https://api.missinglinkz.io
Build a tracked link via API
POST to /v1/links with your campaign parameters:
$ curl -X POST https://api.missinglinkz.io/v1/links \
-H "Authorization: Bearer mlz_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"url": "https://yoursite.com/promo",
"campaign": "q3-launch",
"source": "linkedin",
"medium": "social"
}'
Response
Returns the tracked URL, parameters, and storage confirmation:
{
"tracked_url": "https://yoursite.com/promo?utm_source=linkedin&utm_medium=social&utm_campaign=q3-launch",
"params": {
"utm_source": "linkedin",
"utm_medium": "social",
"utm_campaign": "q3-launch"
},
"link_id": "lnk_9wlvd9qi",
"stored": true
}
Key API endpoints
- POST /v1/links
- Build and store a tracked campaign link.
- GET /v1/links
- List links for your account. Filter by campaign.
- GET /v1/campaigns
- List all campaigns.
- GET /v1/auth/status
- Check usage, plan, and quota.
All endpoints require Authorization: Bearer mlz_live_... header. Full docs: GitHub README
You're set up. Now ship something.
Your first 1,000 links are free every month. Run a preflight check on your next campaign link and see what it catches.
mlz preflight --url "https://yoursite.com" --campaign "first-test" --source "linkedin" --medium "social"
Need help? Email [email protected] — or read the blog for walkthroughs and examples.