YOURLS-MCP
YOURLS-MCP
Сервер протокола управления моделью (MCP) для интеграции сокращения URL-адресов YOURLS с Claude Desktop.
Автор: Мартин Кесслер
Обзор
YOURLS-MCP создает мост между Claude Desktop и вашим экземпляром YOURLS URL shortener, размещенным на вашем собственном сервере. После настройки он позволяет Claude автоматически сокращать URL-адреса, используя вашу персональную установку YOURLS.
Related MCP server: NotePlan MCP Server
Функции
Сократите URL-адреса, используя ваш экземпляр YOURLS
Создавайте собственные короткие URL-адреса с определенными ключевыми словами
Обработка дубликатов URL-адресов: создание нескольких коротких URL-адресов для одного и того же целевого URL-адреса (уникально для YOURLS-MCP)
Расширенная информация и статистика URL
Статистика базы данных
Интеллектуальные резервные варианты для плагинов
Комплексная документация и инструменты тестирования
Быстрый старт
Установка
# Clone the repository
git clone https://github.com/kesslerio/yourls-mcp.git
cd yourls-mcp
# Install dependencies
npm installКонфигурация
Создайте файл конфигурации Claude Desktop, который указывает на вашу установку YOURLS-MCP:
{
"mcpServers": {
"yourls": {
"command": "node",
"args": [
"/full/path/to/yourls-mcp/yourls-mcp.js"
],
"env": {
"YOURLS_API_URL": "https://your-yourls-domain.com/yourls-api.php",
"YOURLS_AUTH_METHOD": "signature",
"YOURLS_SIGNATURE_TOKEN": "your-secret-signature-token"
}
}
}
}Сохраните этот файл в каталоге конфигурации Claude Desktop, который обычно находится по адресу:
macOS:
~/Library/Application Support/Claude/config.jsonWindows:
%APPDATA%\Claude\config.jsonLinux:
~/.config/Claude/config.json
Функции
Полная интеграция с Claude Desktop через MCP
Сокращайте URL-адреса напрямую через Клода
Разверните сокращенные URL-адреса, чтобы увидеть их назначение
Получите статистику кликов по вашим ссылкам
Поддержка пользовательских ключевых слов
Безопасная аутентификация на основе подписи
Конфигурация переменных среды
Параметры конфигурации
В конфигурации Claude Desktop можно задать следующие переменные среды:
Переменная | Описание | По умолчанию | Необходимый |
| URL-адрес конечной точки API YOURLS | - | Да |
| Метод аутентификации ( |
| Нет |
| Секретный токен для аутентификации на основе подписи | - | Да (при использовании аутентификации по подписи) |
| Имя пользователя для аутентификации на основе пароля | - | Да (при использовании аутентификации по паролю) |
| Пароль для аутентификации на основе пароля | - | Да (при использовании аутентификации по паролю) |
| Время жизни подписей в секундах | 43200 (12 часов) | Нет |
Доступные инструменты MCP
YOURLS-MCP предоставляет Клоду следующие инструменты:
Основные инструменты
1. shorten_url
Сокращает длинный URL-адрес, используя ваш экземпляр YOURLS.
Параметры:
url(обязательно): Длинный URL-адрес для сокращения.keyword(необязательно): пользовательское ключевое слово для короткого URL-адресаtitle(необязательно): заголовок URL-адреса.
2. expand_url
Расширяет короткий URL-адрес, чтобы получить исходный длинный URL-адрес.
Параметры:
shorturl(обязательно): короткий URL или ключевое слово для раскрытия
3. url_stats
Получает статистику для сокращенного URL.
Параметры:
shorturl(обязательно): короткий URL или ключевое слово для получения статистики
4. db_stats
Получает глобальную статистику для вашего экземпляра YOURLS.
Параметры: Нет
5. создать_пользовательский_url
Создает пользовательский короткий URL-адрес с определенным ключевым словом, даже для URL-адресов, которые уже существуют в базе данных.
Параметры:
url(обязательно): Целевой URL для сокращения.keyword(обязательно): пользовательское ключевое слово для короткого URL-адреса (например, «web» для bysha.pe/web)title(необязательно): заголовок URL-адреса.bypass_shortshort(необязательно): следует ли обходить плагин ShortShort, который предотвращает сокращение уже сокращенных URL-адресов (по умолчанию: false)force_url_modification(необязательно): принудительно использовать подход модификации URL для создания нескольких коротких URL-адресов для одного и того же пункта назначения (по умолчанию: false)
6. сократить_с_аналитикой
Сокращает длинный URL-адрес с помощью параметров UTM Google Analytics.
Параметры:
url(обязательно): URL-адрес для сокращения.source(обязательно): параметр источника UTM — определяет источник трафика (например, «google», «newsletter», «twitter»).medium(обязательно): параметр UTM medium — определяет маркетинговый канал (например, «cpc», «social», «email»).campaign(обязательно): параметр кампании UTM — идентифицирует конкретную кампанию (например, «summer_sale», «product_launch»).term(необязательно): параметр термина UTM — определяет платные поисковые терминыcontent(необязательно): параметр контента UTM — различает объявления или ссылки, указывающие на один и тот же URL-адресkeyword(необязательно): пользовательское ключевое слово для короткого URL-адресаtitle(необязательно): заголовок URL-адреса.
Инструменты на основе плагинов
7. url_analytics
Получает подробную аналитику кликов для короткого URL в диапазоне дат. Требует установки плагина API ShortURL Analytics.
Параметры:
shorturl(обязательно): короткий URL или ключевое слово для получения аналитикиdate(обязательно): Дата начала аналитики в формате ГГГГ-ММ-ДДdate_end(необязательно): дата окончания аналитики в формате ГГГГ-ММ-ДД (по умолчанию используется дата начала, если не указано иное)
8. URL-адрес_контракта
Проверьте, был ли URL уже сокращен, не создавая новый короткий URL. Требуется установить плагин API Contract.
Параметры:
url(обязательно): URL-адрес для проверки на предмет сокращения.
9. обновить_url
Обновите существующий короткий URL, чтобы он указывал на другой целевой URL. Требуется установить плагин API Edit URL.
Параметры:
shorturl(обязательно): короткий URL или ключевое слово для обновленияurl(обязательно): новый целевой URLtitle(необязательно): Необязательный новый заголовок («keep» для сохранения существующего, «auto» для извлечения из URL)
10. изменить_ключевое_слово
Изменить ключевое слово существующего короткого URL. Требуется установить плагин API Edit URL.
Параметры:
oldshorturl(обязательно): существующий короткий URL или ключевое словоnewshorturl(обязательно): новое ключевое слово для использованияurl(необязательно): Необязательный URL (если не указан, будет использован URL из oldshorturl)title(необязательно): Необязательный новый заголовок («keep» для сохранения существующего, «auto» для извлечения из URL)
11. получить_url_ключевое_слово
Получить ключевые слова для длинного URL. Требуется установить плагин API Edit URL.
Параметры:
url(обязательно): Длинный URL для поискаexactly_one(необязательно): если false, возвращает все ключевые слова для этого URL (по умолчанию: true)
12. удалить_url
Удалить короткий URL. Требуется установить плагин API Delete.
Параметры:
shorturl(обязательно): короткий URL-адрес или ключевое слово для удаления.
13. список_urls
Получить список URL-адресов с сортировкой, разбиением на страницы и параметрами фильтрации. Требуется установить плагин API List Extended.
Параметры:
sortby(необязательно): поле для сортировки (ключевое слово, URL, заголовок, IP, временная метка, клики) (по умолчанию: временная метка)sortorder(необязательно): порядок сортировки (по возрастанию или убыванию) (по умолчанию: по убыванию)offset(необязательно): смещение пагинации (по умолчанию: 0)perpage(необязательно): Количество результатов на страницу (по умолчанию: 50)query(необязательно): Необязательный поисковый запрос для фильтрации по ключевому словуfields(необязательно): возвращаемые поля (ключевое слово, URL, заголовок, временная метка, IP, клики) (по умолчанию: все поля)
14. сгенерировать_qr_код
Сгенерировать QR-код для сокращенного URL. Требуется установить плагин YOURLS-IQRCodes.
Параметры:
shorturl(обязательно): короткий URL или ключевое слово для генерации QR-кодаsize(необязательно): размер QR-кода в пикселяхborder(необязательно): Ширина границы вокруг QR-кода.ecc(необязательно): Уровень исправления ошибок: L (низкий), M (средний), Q (квартиль) или H (высокий)format(необязательно): Формат изображения (png, jpg, svg и т. д.)
Примеры использования
После настройки Клод сможет использовать инструменты YOURLS с такими подсказками:
Примеры основных функций
"Сократите этот URL для меня: https://example.com/very-long-url-that-needs-shortening "
"Создайте короткий URL с ключевым словом 'docs' для https://example.com/documentation "
«Создайте пользовательский URL bysha.pe/web, указывающий на shapescale.com»
«Создайте собственный короткий URL-адрес для нашей документации, используя ключевое слово „docs“»
«Создайте несколько ключевых слов (docs, docs2, docs3) для одного и того же URL-адреса документации»
«Создайте короткий URL-адрес для нашей кампании с параметрами отслеживания UTM»
«Сократите этот маркетинговый URL с помощью отслеживания Google Analytics: источник=newsletter, канал=email, кампания=summer_launch»
"Расширьте этот короткий URL: https://yourdomain.com/abc "
«Сколько кликов у моего короткого URL https://yourdomain.com/abc ?»
«Покажи мне статистику для моего экземпляра YOURLS»
Примеры функций на основе плагинов
«Дайте мне подробную аналитику для shorturl 'abc' за январь 2025 года»
«Покажите мне статистику кликов для bysha.pe/abc с 01.01.2025 по 31.01.2025»
«Каков был ежедневный трафик моего shortURL 'web' в прошлом месяце?»
«Проверьте, был ли этот URL-адрес уже сокращен: https://example.com/page »
«Кто-нибудь уже создал короткий URL для https://example.com/page ?»
"Обновите назначение короткого URL-адреса 'docs', чтобы он указывал на https://example.com/new-documentation "
«Измените, куда указывает ключевое слово 'docs'»
«Переименуйте короткий URL-адрес «docs» в «documentation»»
«Измените ключевое слово моего короткого URL с «docs» на «documentation»»
«Какое ключевое слово для этого длинного URL: https://example.com/page ?»
"Перечислите все короткие URL-адреса для https://example.com/page "
«Удалить короткий URL 'docs'»
«Удалить ключевое слово 'docs' из моего экземпляра YOURLS»
«Покажите мне последние 10 коротких URL-адресов в моей базе данных YOURLS»
«Список всех коротких URL-адресов, отсортированных по количеству кликов»
«Поиск коротких URL-адресов, содержащих «продукт»»
«Сгенерировать QR-код для моего короткого URL-адреса 'docs'»
«Создать QR-код для bysha.pe/web»
«Дайте мне QR-код для страницы моего продукта с высоким уровнем коррекции ошибок»
«Мне нужен QR-код большего размера для короткой ссылки «landing», сделайте его размером 300 пикселей»
«Сгенерируйте SVG QR-код для ссылки на нашу документацию»
Разработка
# Clone the repository
git clone https://github.com/kesslerio/yourls-mcp.git
cd yourls-mcp
# Install dependencies
npm install
# For local testing, create a claude-local-config.json file:
{
"mcpServers": {
"yourls": {
"command": "node",
"args": [
"/full/path/to/yourls-mcp/yourls-mcp.js"
],
"env": {
"YOURLS_API_URL": "https://your-yourls-domain.com/yourls-api.php",
"YOURLS_AUTH_METHOD": "signature",
"YOURLS_SIGNATURE_TOKEN": "your-secret-signature-token"
}
}
}
}
# Start the server directly (for testing)
node yourls-mcp.jsКак это работает
YOURLS-MCP действует как мост между Claude Desktop и вашим экземпляром YOURLS:
Claude Desktop запускает сервер YOURLS-MCP при необходимости
Сервер считывает конфигурацию из переменных среды
Когда Клод вызывает инструмент, сервер выполняет соответствующие вызовы API к вашему экземпляру YOURLS.
Результаты возвращаются Клоду в структурированном формате.
Для связи с Claude Desktop сервер использует стандарт Model Context Protocol (MCP), что обеспечивает бесперебойную интеграцию и взаимодействие на естественном языке с вашим сокращателем URL-адресов.
Обработка дубликатов URL-адресов
YOURLS-MCP предлагает уникальную возможность создания нескольких коротких URL для одного и того же целевого URL, которая изначально не поддерживается в YOURLS. Подробную информацию об этой функции см. в разделе Duplicate URL Handling Documentation .
Поддерживаются два подхода:
Подход с использованием плагина (рекомендуется): использует включенный плагин Force Allow Duplicates для создания настоящих дубликатов URL-адресов.
Метод изменения URL-адресов (резервный вариант): добавляет параметры временной метки, чтобы сделать каждый URL-адрес технически уникальным, сохраняя при этом функциональность.
Система автоматически выбирает подходящий подход на основе ваших настроек YOURLS.
Совместимость с плагинами YOURLS
YOURLS-MCP предназначен для работы как со стандартными установками YOURLS, так и с различными плагинами, со встроенными резервными вариантами на случай, если плагины недоступны:
Поддерживаемые плагины с резервными версиями
YOURLS-MCP включает интеллектуальные резервные варианты для расширенной функциональности, когда плагины не установлены:
API ShortURL Analytics : для подробной статистики кликов с диапазонами дат
Резервное поведение : предоставляет базовую статистику кликов через основной API YOURLS, когда плагин недоступен.
API-контракт : проверка существования URL-адресов без их создания
Резервное поведение : использует основной API статистики YOURLS для поиска существующих URL-адресов с фильтрацией.
API Edit URL : для обновления коротких URL-адресов и изменения ключевых слов.
Резервное поведение :
Для обновления URL-адресов: попытки заново создать URL-адрес с тем же ключевым словом.
Для изменения ключевых слов: создает новый короткий URL с новым ключевым словом (старый остается, так как для удаления требуется плагин API Delete)
Для получения ключевых слов URL: использует основной API статистики YOURLS с фильтрацией
API Delete : для удаления коротких URL-адресов.
Резервное поведение : Ограничено — предоставляет информацию о том, что для удаления требуется плагин, так как основной API YOURLS не поддерживает удаление.
Расширенный список API : для расширенного списка URL с сортировкой и фильтрацией
Резервное поведение : использует основной API статистики YOURLS с сортировкой и разбиением на страницы на стороне клиента.
YOURLS-IQRCodes : для генерации QR-кодов из коротких URL-адресов
Резервное поведение : Нет — требуется установка плагина
ShortShort : правильно обрабатывает ошибку при попытке сократить уже сокращенный URL-адрес.
Совместимость : Обработка ошибок работает независимо от того, установлен ли плагин.
Разрешить существующие URL-адреса : изменяет способ обработки YOURLS дублирующихся URL-адресов.
URL плагина : https://github.com/elder-oss/yourls-allow-existing-urls
Примечание : этот плагин изменяет ответы об ошибках на ответы об успешном выполнении, но на самом деле не создает новые короткие URL-адреса для существующих целевых URL-адресов.
Наше решение : YOURLS-MCP реализует подход к изменению URL-адресов, который добавляет параметр временной метки, чтобы сделать URL-адреса уникальными в базе данных, сохраняя при этом удобство использования.
Установка : Необязательно — наш подход к изменению URL-адресов работает как с установленным плагином, так и без него.
Принудительно разрешать дубликаты : действительно позволяет создавать несколько коротких URL-адресов для одного и того же целевого URL-адреса.
Репозиторий плагинов : https://github.com/kesslerio/yourls-force-allow-duplicates (скоро)
Описание : Пользовательский плагин, который обходит ограничение уникальности URL YOURLS
Использование : добавьте
force=1к вашим запросам API или используйтеforce_url_modification=falseс инструментомcreate_custom_urlУстановка :
Загрузить из репозитория плагинов
Скопируйте папку
force-allow-duplicatesв ваш каталогYOURLS/user/plugins/Активируйте плагин в интерфейсе администратора YOURLS.
Механизм отката
Когда используется функция, зависящая от плагина, но плагин не установлен, YOURLS-MCP:
Автоматически обнаруживает отсутствующие плагины
Предоставляет соответствующую резервную функциональность, где это возможно
Включает атрибут
fallback_used: trueв ответах при активации резервных вариантовДобавляет информацию
fallback_limitations, когда у резервного варианта ограниченная функциональность.Для полностью неподдерживаемых операций возвращает информативные сообщения об ошибках.
Такой подход гарантирует, что YOURLS-MCP будет работать с максимально возможным количеством установок YOURLS, при этом предоставляя четкую информацию о расширенных функциональных возможностях, доступных с помощью плагинов.
Разработка и тестирование
Тестовые скрипты
Проект включает в себя различные тестовые скрипты в каталоге tests/integration/ :
Тесты сокращения URL-адресов :
test-custom-url.js: Тесты создания пользовательских URL-адресов с определенными ключевыми словамиtest-url-modification.js: Тестирует подход к модификации URL для обработки дубликатов URLtest-plugin-behavior.js: Тестирует поведение плагина Allow Existing URLs
Тесты плагинов :
test-duplicate-urls.js: Тесты создания дубликатов URL-адресов с разными ключевыми словамиtest-plugin-approach.js: Тестирует прямой подход плагина для обработки дубликатов
Проведение тестов :
# Run a specific test node tests/integration/test-custom-url.js
Скрипты утилит
Каталог scripts/ содержит служебные скрипты для общих операций:
create-random.js: создает случайный короткий URL для указанного места назначенияДругие скрипты для конкретных задач создания URL
Лицензия
Массачусетский технологический институт
О
YOURLS-MCP был создан Мартином Кесслером для интеграции YOURLS с Claude Desktop и другими предложениями Claude через протокол контекста модели (MCP).
Плагин Force Allow Duplicates был разработан для решения проблемы создания нескольких коротких URL-адресов для одного и того же места назначения, которая изначально не поддерживается в YOURLS.
Для поддержки, решения проблем или запросов функций:
YOURLS-MCP: https://github.com/kesslerio/yourls-mcp/issues
Плагин Force Allow Duplicates: https://github.com/kesslerio/yourls-force-allow-duplicates/issues (после создания репозитория)
Available Tools
14 toolschange_keywordC
Change the keyword of an existing short URL
| Name | Required | Description | Default |
|---|---|---|---|
| newshorturl | Yes | The new keyword to use | |
| oldshorturl | Yes | The existing short URL or keyword | |
| title | No | Optional new title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It implies a mutation ('change') but doesn't specify permissions needed, whether changes are reversible, rate limits, or error handling. This is inadequate for a tool that modifies existing data without structured safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action without unnecessary words. Every part earns its place by directly stating the tool's function, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool performs a mutation with no annotations and no output schema, the description is insufficient. It doesn't explain what happens on success (e.g., returns updated URL), error cases, or how it fits among siblings like 'update_url'. For a 3-parameter tool that alters data, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no additional meaning beyond implying 'oldshorturl' and 'newshorturl' relate to keywords, but doesn't clarify format or constraints. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('change') and resource ('keyword of an existing short URL'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'update_url' or 'get_url_keyword', which could handle similar operations, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'update_url' or 'create_custom_url'. It lacks context about prerequisites (e.g., needing an existing short URL) or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contract_urlA
Check if a URL has already been shortened without creating a new short URL
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to check if it exists in the database |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the tool's read-only behavior by stating it checks without creating, but lacks details on error handling, response format, or database interaction specifics, leaving gaps in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the purpose and usage, with zero wasted words, making it highly concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is adequate for a simple lookup tool but incomplete in explaining return values or potential errors, which could hinder agent usage in more complex scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the 'url' parameter. The description adds minimal semantic context by implying the URL is checked against a database, but does not provide additional syntax or format details beyond what the schema covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Check if a URL has already been shortened') and the resource ('URL'), distinguishing it from sibling tools like 'shorten_url' or 'expand_url' by emphasizing it does not create new short URLs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool ('Check if a URL has already been shortened') and when not to ('without creating a new short URL'), providing clear alternatives by contrasting with sibling tools like 'shorten_url' for creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_custom_urlA
Create a custom short URL with a specific keyword, even for URLs that already exist in the database
| Name | Required | Description | Default |
|---|---|---|---|
| force_url_modification | No | Whether to force URL modification to allow duplicates | |
| keyword | Yes | The custom keyword for the short URL | |
| title | No | Optional title for the URL | |
| url | Yes | The URL to shorten |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the key behavioral trait about handling existing URLs, which is valuable. However, it doesn't mention permission requirements, rate limits, whether the operation is idempotent, or what happens on failure - significant gaps for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose and key differentiator without any wasted words. It's appropriately sized and front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, the description provides the essential purpose but lacks important context about permissions, error conditions, return values, and system constraints. The 100% schema coverage helps, but behavioral aspects remain underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema descriptions. This meets the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a custom short URL'), identifies the resource ('with a specific keyword'), and distinguishes it from siblings by mentioning 'even for URLs that already exist in the database' - which differentiates it from tools like 'shorten_url' that might not handle duplicates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool ('for URLs that already exist in the database'), but doesn't explicitly mention when NOT to use it or name specific alternatives among the many sibling tools. It implies this is for custom keyword creation with duplicate handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_statsB
Get global statistics for the YOURLS instance
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Get' implies a read operation, it doesn't specify whether this requires authentication, what format the statistics are returned in, whether there are rate limits, or if the data is cached. For a statistics tool with zero annotation coverage, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point without any unnecessary words. It's perfectly front-loaded with the core functionality, making it easy for an AI agent to quickly understand what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a statistics tool with no annotations and no output schema, the description is insufficient. It doesn't explain what kind of statistics are returned (e.g., total URLs, clicks, users), the format of the response, or any behavioral characteristics. For a tool that presumably returns structured data, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100%, so there are no parameters to document. The description appropriately doesn't waste space discussing nonexistent parameters, earning a baseline score of 4 for this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and target resource ('global statistics for the YOURLS instance'), making the tool's purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'url_stats' or 'url_analytics', which also provide statistical data but for different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'url_stats' and 'url_analytics' that also provide statistics, there's no indication whether this tool should be used for system-wide metrics versus URL-specific data, or any prerequisites for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_urlC
Delete a short URL
| Name | Required | Description | Default |
|---|---|---|---|
| shorturl | Yes | The short URL or keyword to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Delete' implies a destructive mutation, but the description doesn't specify whether this action is reversible, what permissions are required, or what the response looks like. It lacks details on side effects or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'delete' entails (e.g., permanent removal, effects on analytics), return values, or error handling, leaving significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'shorturl' documented as 'The short URL or keyword to delete'. The description adds no additional meaning beyond this, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a short URL' clearly states the action (delete) and resource (short URL). It distinguishes from siblings like 'update_url' or 'change_keyword' by specifying deletion rather than modification, though it doesn't explicitly contrast with all alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'update_url' or 'change_keyword'. The description states what it does but offers no context about prerequisites, when deletion is appropriate, or what happens after deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
expand_urlA
Expand a short URL to its original long URL
| Name | Required | Description | Default |
|---|---|---|---|
| shorturl | Yes | The short URL or keyword to expand |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the basic function but lacks details on behavioral traits such as error handling (e.g., invalid URLs), rate limits, authentication needs, or whether it follows redirects. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is front-loaded with the core purpose and efficiently communicates the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate. However, it lacks completeness in behavioral aspects like error cases or output format, which would be helpful for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning by clarifying that the 'shorturl' parameter can be a 'short URL or keyword', which provides context beyond the schema's generic description. With 100% schema description coverage, the baseline is 3, but this extra semantic detail justifies a higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'expand' and the resource 'short URL', specifying the action of converting a short URL to its original long URL. It distinguishes itself from sibling tools like 'shorten_url' and 'contract_url' by focusing on the reverse operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to resolve a short URL, but does not explicitly state when to use this tool versus alternatives like 'get_url_keyword' or 'url_analytics'. No guidance on exclusions or prerequisites is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_qr_codeC
Generate a QR code for a shortened URL
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Image format (png, svg, etc.) | |
| margin | No | Margin size | |
| shorturl | Yes | The short URL to generate a QR code for | |
| size | No | Size of the QR code in pixels |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't cover key aspects like whether it's a read-only or mutation operation, authentication requirements, rate limits, or error handling. This is inadequate for a tool that likely involves external resources.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and appropriately sized, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (generating QR codes with multiple parameters) and lack of annotations and output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., image data or URL), potential side effects, or how it integrates with sibling tools, leaving significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description implies the 'shorturl' parameter is required, but doesn't add meaning beyond the input schema, which has 100% coverage and already describes all parameters clearly. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't compensate with extra details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'generate' and the resource 'QR code', specifying it's for a 'shortened URL'. This distinguishes it from general QR code generators, though it doesn't explicitly differentiate from sibling tools like 'shorten_url' or 'url_analytics' that might also involve URLs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as whether it's for generating QR codes specifically for URLs shortened by this service or any shortened URL. It lacks context on prerequisites or exclusions, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_url_keywordC
Get the keyword(s) for a long URL
| Name | Required | Description | Default |
|---|---|---|---|
| exactly_one | No | Whether to return only one result (default: false) | |
| url | Yes | The URL to find keywords for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but lacks details on how it works (e.g., how keywords are extracted, any rate limits, error handling, or response format). This is a significant gap for a tool with no structured safety or behavioral hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It does not explain what the return value looks like (e.g., format of keywords, potential errors), and with siblings like 'url_analytics', more context on use cases would be helpful. The tool's complexity is low, but the description lacks necessary behavioral details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents both parameters ('url' and 'exactly_one') with clear descriptions. The description does not add any meaning beyond this, such as examples or edge cases, but the schema provides adequate baseline information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'keyword(s) for a long URL', making the purpose understandable. However, it does not explicitly differentiate this tool from siblings like 'url_analytics' or 'url_stats', which might also involve URL analysis, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'url_analytics' or 'list_urls', there is no indication of context, prerequisites, or exclusions, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_urlsC
Get a list of URLs with sorting, pagination, and filtering options
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| perpage | No | Number of results per page | |
| search | No | Search term to filter results | |
| sortby | No | Field to sort by (e.g., "clicks", "timestamp") | |
| sortorder | No | Sort order ("asc" or "desc") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool's capabilities (sorting, pagination, filtering) but doesn't describe what the tool returns (e.g., format, fields), error conditions, rate limits, or authentication requirements. For a list operation with no annotation coverage, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Get a list of URLs') followed by key capabilities. Every word earns its place with zero waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the returned list contains, how results are structured, or any behavioral aspects beyond basic capabilities. Given the complexity and lack of structured data, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds minimal value by mentioning 'sorting, pagination, and filtering' which aligns with parameters like sortby/sortorder, page/perpage, and search, but doesn't provide additional semantic context beyond what's in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'list of URLs', making the purpose understandable. However, it doesn't distinguish this tool from potential siblings like 'url_stats' or 'url_analytics' that might also provide URL-related information, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'sorting, pagination, and filtering options' which implies when to use this tool, but provides no explicit guidance on when to choose this over alternatives like 'url_stats' or 'url_analytics'. There's no mention of prerequisites, exclusions, or specific contexts for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shorten_urlC
Shorten a long URL using YOURLS
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | Optional custom keyword for the short URL | |
| title | No | Optional title for the URL | |
| url | Yes | The URL to shorten |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the service ('YOURLS') but doesn't describe whether this is a read-only or mutating operation, what permissions are required, rate limits, error handling, or what the output looks like. For a tool that likely creates a new short URL, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a URL shortening tool with no annotations and no output schema, the description is incomplete. It doesn't explain the return value (e.g., the shortened URL), error conditions, or behavioral traits like whether it's idempotent or requires authentication. This leaves gaps for an agent to understand how to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting all three parameters (url, keyword, title) with their types and optionality. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 for adequate but not enhanced coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('shorten') and resource ('a long URL'), and specifies the service used ('using YOURLS'). It distinguishes from siblings like 'expand_url' or 'generate_qr_code' by focusing on shortening. However, it doesn't explicitly differentiate from 'shorten_with_analytics' or 'contract_url', which might offer similar functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'shorten_with_analytics', 'contract_url', or 'create_custom_url'. It lacks context about use cases, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shorten_with_analyticsC
Shorten a long URL with Google Analytics UTM parameters
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | Optional custom keyword for the short URL | |
| title | No | Optional title for the URL | |
| url | Yes | The URL to shorten | |
| utm_campaign | No | UTM campaign parameter | |
| utm_content | No | UTM content parameter | |
| utm_medium | Yes | UTM medium parameter | |
| utm_source | Yes | UTM source parameter | |
| utm_term | No | UTM term parameter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what the tool does, not how it behaves. It doesn't disclose whether this creates a permanent short URL, requires authentication, has rate limits, returns a specific format, or what happens on failure. For a write operation with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, zero waste. Every word earns its place by conveying the core functionality efficiently. No fluff or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write operation (URL shortening with analytics) with no annotations and no output schema, the description is incomplete. It doesn't explain what gets returned (e.g., short URL format), error conditions, or behavioral aspects. Given the complexity and lack of structured data, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly. The description adds no additional parameter information beyond implying UTM parameters are included. Baseline 3 is appropriate when schema does the heavy lifting, though the description doesn't compensate with any extra context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('shorten') and resource ('a long URL') with the specific feature of adding Google Analytics UTM parameters. It distinguishes from sibling 'shorten_url' by mentioning analytics parameters, but doesn't explicitly contrast them. The purpose is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'shorten_url' (which presumably doesn't include UTM parameters) or 'create_custom_url'. The description implies usage for tracking purposes but doesn't provide explicit when/when-not scenarios or mention sibling tools as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_urlB
Update an existing short URL to point to a different destination URL
| Name | Required | Description | Default |
|---|---|---|---|
| shorturl | Yes | The short URL or keyword to update | |
| title | No | Optional new title for the URL | |
| url | Yes | The new destination URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool updates a short URL but does not mention permissions required, whether changes are reversible, rate limits, or error handling. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('update an existing short URL') and specifies the purpose ('to point to a different destination URL'). There is no wasted text, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a mutation with no annotations and no output schema, the description is incomplete. It does not cover behavioral aspects like side effects, return values, or error conditions, which are critical for safe and effective use in this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond implying the 'url' parameter is the new destination, which is already clear from the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'update' and the resource 'existing short URL', specifying the action of changing its destination. It distinguishes from siblings like 'create_custom_url' (creation) and 'delete_url' (deletion), making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'change_keyword' (which might update keywords) or 'contract_url' (which could modify URLs differently). It lacks context on prerequisites or exclusions, offering only a basic functional statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
url_analyticsC
Get detailed click analytics for a shortened URL within a date range
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | The time period for analytics (e.g., "day", "week", "month") | |
| shorturl | Yes | The short URL to get analytics for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves analytics (implying read-only) but doesn't mention authentication needs, rate limits, error conditions, or what 'detailed click analytics' includes (e.g., metrics like clicks, locations, devices). This leaves significant gaps for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part earns its place by specifying the action, resource, and scope concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of analytics tools, no annotations, and no output schema, the description is incomplete. It doesn't explain what data is returned, how to interpret results, or handle edge cases (e.g., invalid URLs, no data in range). For a tool with potential rich outputs, this leaves the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('shorturl' and 'period') adequately. The description adds minimal value beyond implying date-range filtering, but doesn't provide additional syntax, format examples, or constraints beyond what's in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get detailed click analytics') and resource ('for a shortened URL within a date range'), making the purpose immediately understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'url_stats' or 'shorten_with_analytics', which likely have overlapping analytics functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'url_stats' or 'shorten_with_analytics'. It mentions a date range but doesn't specify prerequisites, exclusions, or comparative contexts with sibling tools, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
url_statsC
Get statistics for a shortened URL
| Name | Required | Description | Default |
|---|---|---|---|
| shorturl | Yes | The short URL or keyword to get stats for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Get statistics') but fails to describe key traits like what statistics are returned, whether authentication is required, rate limits, or error handling. This leaves significant gaps for a tool that likely involves data retrieval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized, making it easy for an agent to parse quickly and understand the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool that retrieves statistics. It doesn't specify what statistics are included, the format of the response, or any behavioral nuances, leaving the agent with insufficient context to use the tool effectively beyond basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting the 'shorturl' parameter. The description adds no additional meaning beyond this, as it doesn't elaborate on parameter syntax, examples, or constraints. With high schema coverage, the baseline score of 3 is appropriate, as the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('statistics for a shortened URL'), making it immediately understandable. However, it doesn't differentiate from sibling tools like 'url_analytics' or 'shorten_with_analytics', which might offer similar statistical functionality, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'url_analytics', 'db_stats', and 'shorten_with_analytics' potentially overlapping in functionality, the agent lacks explicit direction on selection criteria, such as specific use cases or data scope differences.
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.
14 tool updates
v1.0.0- First observed
change_keyword - First observed
contract_url - First observed
create_custom_url - First observed
db_stats - First observed
delete_url - First observed
expand_url - First observed
generate_qr_code - First observed
get_url_keyword - First observed
list_urls - First observed
shorten_url - First observed
shorten_with_analytics - First observed
update_url - First observed
url_analytics - First observed
url_stats
TDQS
Scored across 14 tools
Each tool has a clearly distinct purpose with no ambiguity. For example, 'shorten_url' creates a basic short URL, 'shorten_with_analytics' adds analytics parameters, 'contract_url' checks for existing URLs, and 'update_url' modifies destinations. The tools cover different aspects of URL management without overlap.
Tool names follow a consistent verb_noun pattern throughout, such as 'change_keyword', 'create_custom_url', 'delete_url', and 'expand_url'. All tools use snake_case with clear action-object naming, making them predictable and easy to understand.
With 14 tools, the server is well-scoped for URL shortening and management. Each tool serves a specific function in the YOURLS domain, from creation and deletion to analytics and utilities like QR code generation, without being excessive or insufficient.
The tool set provides complete CRUD and lifecycle coverage for URL management, including create, read, update, delete, analytics, and utilities. There are no obvious gaps; tools like 'update_url' and 'change_keyword' cover modifications, while 'url_analytics' and 'db_stats' handle monitoring, ensuring agents can perform all necessary operations.
Maintenance
Related MCP Connectors
Zotero MCP server for Claude and ChatGPT: search, citations, safe writes, PDF passages and pages.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
- sentinelOAuthio.rootstuff
Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.
Related MCP Servers
- AlicenseAqualityCmaintenanceModel Context Protocol server that enables Claude Desktop (or any MCP client) to fetch web content and process images appropriately.118 npmMIT
- AlicenseCqualityDmaintenanceA Message Control Protocol server that enables Claude Desktop to interact with NotePlan.co, allowing users to query, search, create, and update notes directly from Claude conversations.712MIT
- FlicenseAqualityDmaintenanceA Model Context Protocol server that enables Claude to interact with YouTube data and functionality through the Claude Desktop application.111-
- AlicenseNot gradedqualityDmaintenanceA Model Control Protocol (MCP) server that allows Claude to communicate with locally running LLM models via LM Studio.MIT