Youfiliate

by andrewmpierce

202 downloads
Not rated
GitHub Website

About

MCP server for Youfiliate Smart Links — manage geo-targeted affiliate links from Claude Desktop and other MCP-compatible AI assistants.

Details

Author
andrewmpierce
Downloads
202
Categories
Developer Tools

- Full CRUD for geo-targeted Smart Links
- Click analytics per link and aggregated across all links
- YouTube account connection and description migration
- Dry-run preview before starting migrations
- Dashboard summary resource (youfiliate://summary)
- Supports stdio and streamable HTTP transports
- Destructive operations require explicit confirmation

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Youfiliate
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install via pip install youfiliate-mcp (requires Python 3.11+ and a Youfiliate account). Generate an API key at youfiliate.com (Settings → API Keys), then configure Claude Desktop with the key as the YOUFILIATE_API_KEY environment variable using either stdio or remote streamable HTTP transport. After editing claude_desktop_config.json, restart Claude Desktop to use the 18 tools and 4 resources.

youfiliate_create_smart_link

Create a new geo-targeted smart link with an optional custom slug. Creates a smart link that redirects visitors to the destination URL. Optionally configure country-specific geo rules and deep linking for iOS/Android apps. Does NOT modify any existing links. Returns the created smart link details including its short URL (youfil.to/<slug>). Common errors: - Slug already taken: choose a different slug or omit for auto-generation. - Plan limit reached: upgrade your plan to create more links. - Invalid URL: ensure the destination URL is a valid HTTP/HTTPS URL.

youfiliate_list_smart_links

List your smart links with optional filtering, search, and pagination. Returns a paginated list of smart links. Use filters to narrow results. Does NOT create or modify any links. Args: params: Filters include health_status, search (title/URL), ordering, limit (1-100, default 20), and offset. Common errors: - No links found: you may not have created any links yet.

youfiliate_get_smart_link

Get full details of a single smart link by ID. Returns all configuration including geo rules, deep link config, and click stats. Does NOT modify the link. Common errors: - Smart link not found: check the ID or use `youfiliate_list_smart_links`.

youfiliate_update_smart_link

Update an existing smart link (partial update — only provided fields change). You can update the destination URL, slug, title, redirect type, geo rules, or deep link config. Geo rules are replaced entirely (not merged). Does NOT delete the link. Common errors: - Smart link not found: check the ID. - Slug already taken: choose a different slug.

youfiliate_delete_smart_link

Delete a smart link permanently. The short URL will stop working. IMPORTANT: Always confirm with the user before executing this action. The `confirm` parameter must be set to true. This is a destructive action that cannot be undone — the slug becomes available for reuse after a cooldown period. Does NOT affect other links or YouTube descriptions. Common errors: - Smart link not found: check the ID. - confirm=False: you must set confirm=True after getting user confirmation.

youfiliate_get_smart_link_stats

Get click analytics for a specific smart link. Returns click counts broken down by country, device, referrer, and day for the specified period. Does NOT modify any data. Common errors: - Smart link not found: check the ID.

youfiliate_get_aggregate_stats

Get aggregate click analytics across all your smart links. Returns total clicks, top countries, devices, and referrers across your entire account for the specified period. Does NOT modify any data.

youfiliate_check_link_health

Trigger a health check for a specific smart link. Checks the default URL and all geo-rule URLs for availability. Returns the health status (healthy/broken/unknown). Rate limited to once per 5 minutes per link. Does NOT modify the link configuration. Common errors: - Rate limit: wait 5 minutes between health checks for the same link. - Smart link not found: check the ID.

youfiliate_get_preferences

Get your current smart link preferences/defaults. Returns default settings applied to newly created smart links. Does NOT create or modify any data.

youfiliate_update_preferences

Update your smart link preferences/defaults. Changes apply to newly created links only — existing links are not affected. Does NOT delete any data. Common errors: - Invalid redirect_type: must be '301' or '302'.

youfiliate_get_youtube_status

Check if your YouTube account is connected. Returns connection status, channel name, and scope information. Does NOT modify any data or initiate any connections. Common errors: - Not connected: use `youfiliate_connect_youtube` to connect.

youfiliate_connect_youtube

Initiate YouTube OAuth connection. Returns a URL the user must open in their browser. The user must open the returned URL in their web browser to authorize Youfiliate to access their YouTube channel. The OAuth callback is handled in the browser — this tool only returns the authorization URL. Does NOT read or modify any YouTube data. The OAuth flow is completed in the user's browser. Common errors: - Already connected: disconnect first with `youfiliate_disconnect_youtube`.

youfiliate_disconnect_youtube

Disconnect your YouTube account from Youfiliate. IMPORTANT: Always confirm with the user before executing this action. The `confirm` parameter must be set to true. This removes stored OAuth tokens. You will need to reconnect to use the auto-migration feature. Does NOT modify any YouTube data or video descriptions. Common errors: - Not connected: no YouTube account to disconnect. - confirm=False: you must set confirm=True after getting user confirmation.

youfiliate_preview_migration

Preview a YouTube description migration without making changes. Performs a dry-run analysis showing how many videos and links would be affected. Does NOT modify any data or YouTube descriptions. Requires a connected YouTube account. Common errors: - YouTube not connected: connect first with `youfiliate_connect_youtube`.

youfiliate_start_migration

Start a YouTube description migration to convert links to smart links. IMPORTANT: This modifies YouTube video descriptions. Always confirm with the user before executing. Describe the scope (number of videos/links affected from the preview) and ask for explicit confirmation. The migration runs asynchronously. Use `youfiliate_get_migration_status` to track progress. Requires a connected YouTube account. Common errors: - YouTube not connected: connect first. - Migration already in progress: wait for it to complete. - confirm=False: must set confirm=True after user confirmation.

youfiliate_get_migration_status

Get the status and progress of a specific migration. Returns detailed status including videos processed, links created, and any errors. Does NOT modify any data. Common errors: - Migration not found: check the ID or use `youfiliate_list_migrations`.

youfiliate_list_migrations

List your YouTube description migrations with pagination. Returns a paginated list of all migrations. Does NOT modify any data.

youfiliate_rollback_migration

Roll back a completed migration, restoring original YouTube descriptions. IMPORTANT: This modifies YouTube video descriptions. Always confirm with the user before executing. This reverts all video descriptions to their pre-migration state. The rollback runs asynchronously. Requires a connected YouTube account. Common errors: - Migration not found or not in a rollback-eligible state. - YouTube not connected: reconnect first. - confirm=False: must set confirm=True after user confirmation.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "youfiliate": {
            "youfiliate": {
                "url": "https://youfiliate-mcp.onrender.com/mcp",
                "headers": {
                    "Authorization": "Bearer youfiliate_sk_your_key_here"
                }
            }
        }
    }
}

McpServers

{
    "youfiliate": {
        "url": "https://youfiliate-mcp.onrender.com/mcp",
        "headers": {
            "Authorization": "Bearer youfiliate_sk_your_key_here"
        }
    }
}

Youfiliate MCP Server

<!-- mcp-name: io.github.andrewmpierce/youfiliate-mcp -->

PyPI
Python
License: MIT

MCP (Model Context Protocol) server for managing Youfiliate Smart Links from AI assistants like Claude Desktop. Create geo-targeted affiliate links, view analytics, and run YouTube description migrations — all from a chat conversation.

18 tools, 4 resources, supports stdio + streamable HTTP transports.

Installation

pip install youfiliate-mcp

Requires Python 3.11+ and a Youfiliate account.

Generate an API key

1. Log in at youfiliate.com
2. Go to Settings → API Keys
3. Click Create API Key (e.g. "Claude Desktop")
4. Copy the key (starts with youfiliate_sk_) — shown only once

Claude Desktop Configuration

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

Local (stdio)

{
  "mcpServers": {
    "youfiliate": {
      "command": "youfiliate-mcp",
      "env": {
        "YOUFILIATE_API_KEY": "youfiliate_sk_your_key_here"
      }
    }
  }
}

Remote (Streamable HTTP)

{
  "mcpServers": {
    "youfiliate": {
      "url": "https://mcp.youfiliate.com",
      "headers": {
        "Authorization": "Bearer youfiliate_sk_your_key_here"
      }
    }
  }
}

Restart Claude Desktop after editing the config.

Available Tools (18)

Smart Links CRUD (5)

| Tool | Description |
|------|-------------|
| youfiliate_create_smart_link | Create a new geo-targeted smart link |
| youfiliate_list_smart_links | List smart links with filtering and pagination |
| youfiliate_get_smart_link | Get full details of a smart link by ID |
| youfiliate_update_smart_link | Update a smart link (partial update) |
| youfiliate_delete_smart_link | Delete a smart link (requires confirm=True) |

Analytics (3)

| Tool | Description |
|------|-------------|
| youfiliate_get_smart_link_stats | Get click analytics for a specific link |
| youfiliate_get_aggregate_stats | Get analytics across all links |
| youfiliate_check_link_health | Trigger a health check on a link |

Preferences (2)

| Tool | Description |
|------|-------------|
| youfiliate_get_preferences | Get default smart link preferences |
| youfiliate_update_preferences | Update preferences for new links |

YouTube (3)

| Tool | Description |
|------|-------------|
| youfiliate_get_youtube_status | Check YouTube connection status |
| youfiliate_connect_youtube | Start YouTube OAuth flow (returns auth URL) |
| youfiliate_disconnect_youtube | Disconnect YouTube (requires confirm=True) |

Migrations (5)

| Tool | Description |
|------|-------------|
| youfiliate_preview_migration | Preview migration scope (dry run) |
| youfiliate_start_migration | Start YouTube description migration (requires confirm=True) |
| youfiliate_get_migration_status | Check migration progress |
| youfiliate_list_migrations | List all migrations |
| youfiliate_rollback_migration | Rollback a migration (requires confirm=True) |

Available Resources (4)

| URI | Description |
|-----|-------------|
| youfiliate://summary | Dashboard summary (link counts, clicks, health) |
| youfiliate://preferences | Current preferences (read-only) |
| youfiliate://smart-link/{id} | Single smart link details |
| youfiliate://plan-limits | Current plan usage and limits |

Example Conversations

Creating a Smart Link

> You: Create a smart link for https://amazon.com/dp/B09V3KXJPB with geo-targeting for UK and Germany.
>
> Claude: (calls youfiliate_create_smart_link with geo rules for GB and DE)
>
> Done. Short URL: youfil.to/b09v3kxjpb
> - US (default): amazon.com/dp/B09V3KXJPB
> - UK: amazon.co.uk/dp/B09V3KXJPB
> - Germany: amazon.de/dp/B09V3KXJPB

Checking Analytics

> You: How are my links performing this month?
>
> Claude: (calls youfiliate_get_aggregate_stats with period="30d")
>
> 1,234 clicks. Top countries: US (500), UK (200), Germany (150). Most traffic from YouTube (900 clicks).

YouTube Migration

> You: Convert all my YouTube description links to smart links.
>
> Claude: (calls youfiliate_preview_migration) Would affect 15 videos / 42 links. Proceed?
>
> You: Yes.
>
> Claude: (calls youfiliate_start_migration with confirm=True)

Security Model

1. API key auth. Your youfiliate_sk_... key authenticates the MCP server.
2. JWT bridge. The server exchanges your API key for short-lived JWTs against the Youfiliate API.
3. Token caching. JWTs are cached in memory and auto-refreshed.
4. Scoped data access. The server only sees data belonging to the API key's owner.
5. Destructive actions guarded. Delete, disconnect, start migration, and rollback require explicit confirm=True.

Rate Limits

- MCP layer: 60 requests/minute per API key
- Health checks: 1 per link per 5 minutes
- API key exchange: rate-limited by the Youfiliate backend

Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| YOUFILIATE_API_KEY | (required) | Your API key |
| YOUFILIATE_API_BASE_URL | https://app.youfiliate.com | Backend URL |
| MCP_SERVER_SECRET | (empty) | Shared secret for verify-api-key (server operators only) |
| TRANSPORT | stdio | stdio or streamable-http |
| PORT | 8080 | Port for HTTP transport |
| HOST | 127.0.0.1 | Bind address (use 0.0.0.0 in Docker) |

Development

git clone https://github.com/andrewmpierce/youfiliate-mcp.git
cd youfiliate-mcp
pip install -e ".[dev]"
pytest -v

Test with MCP Inspector

npx @modelcontextprotocol/inspector youfiliate-mcp

Docker

docker build -t youfiliate-mcp .
docker run -p 8080:8080 \
  -e YOUFILIATE_API_KEY=youfiliate_sk_... \
  youfiliate-mcp

Troubleshooting

"Authentication failed" — verify your API key, regenerate at youfiliate.com/settings if needed.

"Could not connect to the Youfiliate API" — check YOUFILIATE_API_BASE_URL. Defaults to https://app.youfiliate.com.

"Rate limit exceeded" — wait a moment. Health checks are 1 per 5 minutes per link.

Tools not appearing in Claude Desktop — check claude_desktop_config.json syntax, restart Claude Desktop, run youfiliate-mcp --help to verify the binary is on your PATH.

License

MIT

Links

- Website: youfiliate.com
- Issues: github.com/andrewmpierce/youfiliate-mcp/issues
- Changelog: CHANGELOG.md

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.