Skip to main content
Glama
andrewmpierce

youfiliate-mcp

Youfiliate MCP Server

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

Related MCP server: Refgrow MCP Server

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)

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

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

Available Tools

18 tools
youfiliate_connect_youtubeAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), the description adds that the tool does NOT read or modify YouTube data, that the OAuth flow is completed by the user in the browser, and that it only returns a URL. This provides critical behavioral context for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise yet thorough, starting with the core action, then explaining the workflow, followed by clarifying non-modification, and concluding with common errors. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of annotations and an output schema, the description covers all key aspects: purpose, usage steps, behavioral side effects, and error handling. It references the sibling disconnect tool, making it contextually complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one required parameter 'params' with an optional nested property 'response_format'. Schema description coverage is 0% for the top-level parameter, but the description does not mention this parameter at all, failing to add value beyond the schema for guiding agent parameter selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool initiates a YouTube OAuth connection and returns an authorization URL. It distinguishes itself from sibling tools like youfiliate_disconnect_youtube and youfiliate_get_youtube_status by specifying the action and output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs the user to open the returned URL in a browser, explains that the OAuth callback is handled in the browser, and provides a common error case (already connected) with a suggested action (disconnect first). This provides clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youfiliate_disconnect_youtubeA
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it removes OAuth tokens and does not modify YouTube data, adding context beyond annotations. Annotations include destructiveHint=true, and the description confirms this without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (action, important note, common errors). Every sentence adds value, and the content is appropriately concise for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one parameter and simple functionality, the description covers behavior, safety, errors, and output, making it complete. An output schema exists but isn't shown here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter (confirm) is thoroughly explained, including its necessity and the requirement for user confirmation. The description adds meaningful context beyond the schema's parameter description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Disconnect your YouTube account from Youfiliate' with a specific verb and resource. It distinguishes from sibling tools like connect_youtube and check_link_health.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the need for user confirmation and provides common errors. While it doesn't mention alternative tools, the purpose is clear enough for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youfiliate_get_aggregate_statsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description reinforces non-modification and adds return field details. However, it does not disclose additional behaviors like rate limits or data freshness beyond what annotations already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no superfluous words: first sentence states purpose, second sentence lists return fields and safety guarantee. Efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (implied by 'Has output schema: true') and clear parameter schema, the description adequately covers purpose, return fields, and safety. It lacks explicit contrast with per-link stats but is otherwise complete for a simple aggregate query tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full descriptions for both parameters ('period' and 'response_format'), so schema coverage is high. The description adds 'for the specified period' but does not detail enum values or format options. Baseline 3 is appropriate as the schema carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves aggregate click analytics across all smart links, specifying return fields (total clicks, top countries, devices, referrers) and scope (entire account). It is distinguishable from the sibling tool `youfiliate_get_smart_link_stats` by the word 'aggregate', but does not explicitly name the alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes the tool is read-only ('Does NOT modify any data'), but does not provide explicit guidance on when to use this tool versus per-link stats or other alternatives. The usage context is implied by the word 'aggregate', but no when-not or alternative names are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youfiliate_get_migration_statusA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds 'Does NOT modify any data' and outlines return content (videos processed, links, errors), but does not significantly extend beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at 5 lines, immediately states purpose, includes key behavioral notes, and a helpful error section. Every sentence is informative and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only status tool with an output schema, the description covers usage, safety, and common errors. It lacks some detail on return format but the output schema fills that gap. Adequate for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides no information about parameters (id, response_format). Schema descriptions handle this, but the description adds no value beyond the structured input schema, resulting in low parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the status and progress of a specific migration' with a specific verb and resource. It differentiates from sibling tools by focusing on a single migration ID and references youfiliate_list_migrations for finding IDs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Does NOT modify any data' and provides common errors including a suggestion to use youfiliate_list_migrations if the ID is not found. Clear context for when to use, though no explicit 'when not to use' exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youfiliate_get_preferencesA
Read-onlyIdempotent
Inspect

Get your current smart link preferences/defaults.

Returns default settings applied to newly created smart links. Does NOT create or modify any data.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, covering safety. The description adds context that it returns default settings and does not create/modify data, reinforcing the read-only nature without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two short sentences that front-load the purpose and add necessary behavioral context. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no nested objects) and the presence of an output schema, the description adequately covers the tool's behavior and purpose. No additional information is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema includes one parameter (response_format) with a description in the schema itself. The tool description does not mention parameters, but the schema provides sufficient meaning. With high schema description coverage, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves current smart link preferences/defaults, using specific verb 'Get' and resource 'preferences/defaults'. It distinguishes from sibling tools like update_preferences and create_smart_link by specifying it returns default settings for new links without modification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states it does not create or modify data, implying it's a read-only operation. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., checking preferences before creating links), but the context is clear enough for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youfiliate_get_youtube_statusA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint true and destructiveHint false, but description adds value by explicitly stating it does not modify data or initiate connections, confirming no side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise with two sentences and a bullet point. Front-loaded with the main purpose, no redundant words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool, the description covers purpose, behavior, error handling, and alternative tool. Output schema existence handles return value details, so no need to elaborate further.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not mention the single parameter (response_format). Although the schema provides a description, the tool description fails to add any context about this parameter, which is a gap given the 0% schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks YouTube account connection status and returns specific information. It distinguishes itself from sibling tools like youfiliate_connect_youtube.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (check status) and when not (if not connected, use youfiliate_connect_youtube). Provides a clear alternative action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youfiliate_list_migrationsB
Read-onlyIdempotent
Inspect

List your YouTube description migrations with pagination.

Returns a paginated list of all migrations. Does NOT modify any data.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true. The description reinforces that it does not modify data and returns a paginated list. It adds context about pagination but does not disclose additional behavioral traits like rate limits or the structure of the returned data. With strong annotations, this is adequate but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, front-loading the purpose. Every sentence adds value: it states what the tool does, that it returns a paginated list, and that it does not modify data. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides the core purpose and safety assurance, but lacks details about the return format (though there is an output schema), pagination behavior details, filtering options, and differentiation from sibling tools. For a simple listing tool, it is minimally complete but could be improved with more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is reported as 0%, meaning the schema does not describe its parameters (though the provided schema has descriptions for limit and offset, but the signal indicates 0% coverage). The description only mentions 'with pagination', which vaguely hints at pagination but does not explain the limit, offset, or response_format parameters. The description fails to compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists migrations with pagination and returns a paginated list. It uses a specific verb 'List' and resource 'migrations'. However, it does not explicitly differentiate from the sibling tool 'youfiliate_get_migration_status', which might get a single migration's status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'Does NOT modify any data', indicating safe usage. However, it does not provide when-to-use guidance versus alternatives like 'youfiliate_get_migration_status' or any prerequisites (e.g., needing a YouTube connection). The usage context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youfiliate_preview_migrationA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description reinforces this by stating 'Does NOT modify any data or YouTube descriptions' and explains the dry-run behavior. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with 5 sentences, front-loaded with the core purpose, and includes usage guidance and errors without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (previewing a migration), the description covers purpose, safety, prerequisites, error handling, and references a sibling tool. An output schema exists, reducing need to describe return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter details, but the input schema provides comprehensive descriptions for all three parameters (conversion_mode, auto_geo_rules, response_format). Schema coverage is effectively high via schema, so the description's lack of parameter info is acceptable but not additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Preview a YouTube description migration without making changes.' It specifies the verb 'preview' and resource 'migration', and distinguishes itself from sibling tools like youfiliate_start_migration by emphasizing it is a dry-run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes when to use: 'before making changes' (implied by 'dry-run'), and prerequisites: 'Requires a connected YouTube account.' It also provides common errors and a link to a sibling tool for resolution. Lacks explicit comparison to alternatives but context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youfiliate_rollback_migrationA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Disclosures beyond annotations: modifies YouTube descriptions, asynchronous operation, requires confirmation. Annotations provide destructiveHint=true, but description adds critical context about user confirmation and asynchronicity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise and well-structured: main action first, then important warnings, then common errors. No unnecessary sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with 2 parameters and an output schema, the description covers purpose, usage, prerequisites, and error conditions comprehensively. The output schema likely covers return values, so no need to duplicate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite schema description coverage of 0% (though schema actually includes descriptions), the tool description thoroughly explains the confirm parameter and its importance. It reiterates the id parameter's purpose (Migration UUID) and provides usage guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Roll back a completed migration, restoring original YouTube descriptions.' This provides a specific verb and resource, and distinguishes from sibling tools like youfiliate_start_migration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description explicitly instructs to confirm with the user before executing and lists common errors including the need for confirm=True. It also mentions the prerequisite of a connected YouTube account. However, it does not explicitly state when not to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youfiliate_start_migrationA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveness (destructiveHint: true). The description adds key details: the tool modifies YouTube descriptions, runs asynchronously, and requires explicit confirmation. It also mentions common errors. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured. It front-loads the core purpose, then provides critical usage notes, async behavior, prerequisites, and common errors in a scannable format. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, key behavioral aspects, prerequisites, and common errors. It explains async tracking but does not explicitly state the return value (migration ID). Given that an output schema exists, this gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all parameters in detail, including the critical 'confirm' field's purpose. The tool description reinforces these points and adds usage context but does not introduce new parameter semantics beyond what the schema specifies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: starting a migration to convert YouTube description links to smart links. It distinguishes from sibling tools like preview_migration and rollback_migration by noting that the migration runs asynchronously and requires confirmation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage guidelines: requires user confirmation after previewing scope, mentions tracking with get_migration_status, and lists common errors including prerequisites like YouTube connection. It strongly implies that preview_migration should be used first to determine scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youfiliate_update_preferencesA
Idempotent
Inspect

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide idempotentHint=true and destructiveHint=false. The description adds that no data is deleted and changes only affect new links, which supplements the annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences plus a bullet list, efficiently covering purpose, scope, and common errors. Front-loaded with the main action, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists (return values not needed), the description fully covers what the tool does, its behavioral constraints, and error handling. It is complete for an agent to understand invocation requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions one parameter (redirect_type) and its valid values. Schema coverage is 0% (parameters not described in tool description), but the schema itself has descriptions for each parameter. The description adds minimal extra meaning beyond the schema, but not for all parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update your smart link preferences/defaults,' specifying the verb and resource. It distinguishes from siblings like 'youfiliate_get_preferences' (read) and 'youfiliate_create_smart_link' (create) by focusing on preferences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that changes apply only to newly created links, guiding when to use. However, it lacks explicit exclusions or alternatives (e.g., for existing links, use youfiliate_update_smart_link). Common errors are listed, aiding correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 18 tool updatesv0.1.1
    • First observedyoufiliate_check_link_health
    • First observedyoufiliate_connect_youtube
    • First observedyoufiliate_create_smart_link
    • First observedyoufiliate_delete_smart_link
    • First observedyoufiliate_disconnect_youtube
    • First observedyoufiliate_get_aggregate_stats
    • First observedyoufiliate_get_migration_status
    • First observedyoufiliate_get_preferences
    • First observedyoufiliate_get_smart_link
    • First observedyoufiliate_get_smart_link_stats
    • First observedyoufiliate_get_youtube_status
    • First observedyoufiliate_list_migrations
    • First observedyoufiliate_list_smart_links
    • First observedyoufiliate_preview_migration
    • First observedyoufiliate_rollback_migration
    • First observedyoufiliate_start_migration
    • First observedyoufiliate_update_preferences
    • First observedyoufiliate_update_smart_link

TDQS

A4.2/5.0

Scored across 18 tools

Disambiguation5/5

Each tool has a clearly distinct purpose, covering separate actions like CRUD on smart links, YouTube connection management, migration operations, and preferences. There is no overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent pattern: 'youfiliate_' + verb_noun in snake_case (e.g., youfiliate_create_smart_link, youfiliate_get_youtube_status). No deviations or mixed conventions.

Tool Count5/5

With 18 tools, the set is comprehensive yet focused—covering smart link management, migrations, YouTube integration, and preferences. The count is appropriate for the server's scope.

Completeness5/5

The tool surface covers the full lifecycle of smart links (create, read, update, delete, list, stats, health), migrations (preview, start, status, list, rollback), YouTube connection, and preferences. No obvious gaps.

Maintenance

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    An MCP server that provides AI assistants with access to the FirstPromoter affiliate management platform for managing referrals, promoters, campaigns, and commissions. It is designed for remote multi-user deployment and supports operations via HTTP/SSE transport.
    -
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for managing affiliate and referral programs. Track referrals, manage affiliates, process conversions, and handle payouts through AI assistants like Claude, Cursor, and ChatGPT.
    18
    23 npm
    2
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    MCP server for ManyChat API integration that enables Claude and other AI assistants to manage subscribers, tags, custom fields, flows, and send messages through natural language.
    17
    -