Skip to main content
Glama
amaterous

picoli-mcp

by amaterous

picoli-mcp

MCP server for picoli.site — URL shortening and click analytics for AI agents.

Shorten URLs, track clicks, and analyze link performance directly from your AI assistant.

Setup

1. Get your API key

Create an account at picoli.site and get your API key from the dashboard.

2. Configure your MCP client

Claude Desktop / Claude Code

Add to your MCP configuration:

{
  "mcpServers": {
    "picoli": {
      "command": "npx",
      "args": ["-y", "picoli-mcp"],
      "env": {
        "PICOLI_API_KEY": "your-api-key-here"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "picoli": {
      "command": "npx",
      "args": ["-y", "picoli-mcp"],
      "env": {
        "PICOLI_API_KEY": "your-api-key-here"
      }
    }
  }
}

Related MCP server: DWZ Short URL MCP Server

Tools

shorten_url

Create a short URL with an optional custom slug.

Example prompts:

shorten_urls

Create multiple short URLs at once (up to 500).

Example prompts:

  • "Shorten these 3 URLs: ..."

Get click statistics for specific links (bot traffic excluded).

Example prompts:

  • "How many clicks did my 'launch' link get?"

  • "Show me stats for these slugs: launch, demo, blog-post"

List all shortened URLs with click counts and pagination.

Example prompts:

  • "Show me all my short links"

  • "List my links sorted by clicks"

get_analytics

Get analytics overview: top 10 links, daily click trends, and totals.

Example prompts:

  • "Show me my link analytics for this week"

  • "What are my top performing links?"

  • "Give me click stats from 2026-01-01 to 2026-01-31"

Environment Variables

Variable

Required

Default

Description

PICOLI_API_KEY

Yes

Your picoli.site API key

PICOLI_BASE_URL

No

https://picoli.site

API base URL (for self-hosted instances)

Development

git clone https://github.com/yun/picoli-mcp.git
cd picoli-mcp
npm install
npm run build

Test locally:

PICOLI_API_KEY=your-key npx tsx src/index.ts

License

MIT

Available Tools

5 tools
get_analyticsGet AnalyticsA

Get analytics overview: top 10 links by clicks, daily click stats, and total link count. Defaults to last 7 days.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoEnd date in YYYY-MM-DD format (default: today)
start_dateNoStart date in YYYY-MM-DD format (default: 7 days ago)

TDQS

A3.6/5.0
Behavior3/5

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 default date range (last 7 days), which is useful behavioral context, but does not clarify whether the operation is read-only, how date boundaries are handled, or any rate limits. This is a moderate disclosure level.

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 a single, front-loaded sentence that clearly states the tool's purpose and outputs. Every word earns its place; there is no fluff or repetition.

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?

Despite lacking an output schema and annotations, the description is sufficient for a simple read-only analytics tool with only two optional date parameters. It names the exact outputs, which is adequate. Minor gaps like error behavior or timezone assumptions are not critical for this complexity level.

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 has 100% parameter description coverage for the two optional date parameters, so the schema already documents them. The description adds the default behavior ('Defaults to last 7 days') which reinforces but does not extend beyond the schema, so the baseline score of 3 is appropriate.

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 has a clear verb ('Get') and resource ('analytics overview'), and specifies what it returns: top 10 links by clicks, daily click stats, and total link count. It is unambiguous, though it does not explicitly differentiate from the sibling tool 'get_link_stats' in wording, the overview nature is implied.

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 implies usage for obtaining an analytics overview with a default 7-day window, but it provides no explicit guidance on when to use this tool versus alternatives like 'get_link_stats' or 'list_links'. No exclusions or alternative scenarios are mentioned.

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

shorten_urlShorten URLB

Create a short URL using picoli.site. Optionally specify a custom slug. Returns the shortened URL and slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe destination URL to shorten
slugNoOptional custom slug (e.g. 'my-link'). If not provided, a random slug is generated.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the return value (shortened URL and slug) and the service used. However, it does not mention side effects, potential slug collisions, or any limitations, leaving some behavioral context unstated.

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 concise sentences, front-loaded with the action, and each sentence adds necessary information. No wasted words.

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 simple two-parameter tool with no output schema, the description covers the core purpose, optional parameter, and return value. It could benefit from a note about single vs. batch usage, but overall it is sufficiently complete for a straightforward 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?

Schema coverage is 100% with detailed descriptions for both 'url' and 'slug', so the baseline is 3. The description adds little beyond the schema—only reaffirming the optional slug and return value.

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 the tool creates a short URL via picoli.site and mentions the optional slug. However, it does not explicitly distinguish itself from the sibling tool 'shorten_urls', so it falls short of a 5.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus alternatives like 'shorten_urls'. The description only states what the tool does, not when it should be preferred.

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

shorten_urlsShorten Multiple URLsA

Create multiple short URLs at once (up to 500). Each URL can have an optional custom slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
linksYesArray of URLs to shorten

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the 500-item limit and optional custom slug, but does not address error handling, partial failures, idempotency, or authentication requirements. Some behavioral context is added, but not comprehensive.

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 a single, front-loaded sentence with no redundant words. It communicates the core action and key limit efficiently.

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 schema provides detailed input information, and the description conveys the batch scope. However, with no output schema, the description does not mention the return format or potential error behavior, leaving minor gaps for a batch creation 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 already provides 100% coverage of parameter descriptions (links, url, slug). The description only reiterates the optional slug, adding no significant semantic value beyond what the schema already states.

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 creates multiple short URLs at once, using the specific verb 'Create' and resource 'short URLs'. It distinguishes itself from the sibling 'shorten_url' by emphasizing 'Multiple' and 'up to 500'.

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 implies batch usage via 'at once' and 'up to 500', but does not explicitly mention the singular alternative 'shorten_url' or provide when-not-to-use guidance. The usage context is implied rather than directly stated.

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. 5 tool updatesv1.0.1
    • First observedget_analytics
    • First observedget_link_stats
    • First observedlist_links
    • First observedshorten_url
    • First observedshorten_urls

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool serves a distinct purpose: creating single vs bulk short URLs, retrieving stats for specific links, listing all links, and getting an analytics overview. No ambiguity between them.

Naming Consistency5/5

All tool names follow a verb_noun snake_case pattern (shorten_url, shorten_urls, get_link_stats, list_links, get_analytics). The verbs and nouns are consistent and predictable.

Tool Count5/5

With 5 tools, the set is well-scoped for a URL shortener API. Each tool covers a necessary function without unnecessary bloat or gaps.

Completeness4/5

Core operations are covered: creating (single and bulk), listing, and retrieving stats/analytics. Missing delete or update functionality, but this is a minor gap for a typical URL shortener use case.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to create, manage, and analyze short URLs through complete URL shortening functionality. Supports batch operations, custom domains, click statistics, and comprehensive link management.
    6
    7 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects AI assistants to the Clypt Link Intelligence platform to shorten URLs, manage tags, and generate QR codes. It enables users to view link analytics and perform bulk link operations through natural language commands.
    30 npm
    MIT