Skip to main content
Glama

Noun MCP Server

Noun MCP Server

npm version License: MIT Node.js Version

⚠️ Unofficial Project · This is an independent third-party tool using The Noun Project API. Not affiliated with or endorsed by The Noun Project.

MCP (Model Context Protocol) server for searching, downloading, and using icons from The Noun Project in Cursor AI, Claude Desktop, and other MCP-supported AI tools.

TypeScript · OAuth 1.0a · tier-aware API cost optimization · production-ready MCP tooling


🚀 Quick Start

Cursor AI

Add to MCP settings:

{
  "mcpServers": {
    "noun-project": {
      "command": "npx",
      "args": ["-y", "@alisaitteke/noun-mcp"],
      "env": {
        "NOUN_CONSUMER_KEY": "your_key",
        "NOUN_CONSUMER_SECRET": "your_secret",
        "NOUN_API_TIER": "FREE"
      }
    }
  }
}

Claude Desktop

Add to config:

{
  "mcpServers": {
    "noun-project": {
      "command": "npx",
      "args": ["-y", "@alisaitteke/noun-mcp"],
      "env": {
        "NOUN_CONSUMER_KEY": "your_key",
        "NOUN_CONSUMER_SECRET": "your_secret",
        "NOUN_API_TIER": "FREE"
      }
    }
  }
}

Claude Code

Run in terminal:

claude mcp add \
  --transport stdio \
  noun-project \
  --env NOUN_CONSUMER_KEY=your_key \
  --env NOUN_CONSUMER_SECRET=your_secret \
  --env NOUN_API_TIER=FREE \
  -- npx -y @alisaitteke/noun-mcp

Get your API keys →

What is this? A bridge that lets AI assistants search and download professional icons for your projects. No manual browsing needed - just ask your AI!

Features

  • Icon Search: Find icons with filters for style, line weight, and licensing

  • Icon Download: Get SVG or PNG files with custom colors and sizes

  • Collection Browser: Explore curated icon collections

  • Smart Suggestions: Autocomplete helps find the right search terms

  • Usage Tracking: Monitor your API usage and limits

  • FREE Tier Mode: Smart optimizations for 5K monthly API calls

  • PAID Tier Mode: Unlimited access with no restrictions

Related MCP server: Noun Project MCP Server

About the Builder

Built by Ali Sait Teke — Full-Stack / AI-Era Software Architect based in London.

This project is part of an open-source MCP tooling ecosystem (Docker, Temporal, Photoshop, npm, and more) that brings real-world APIs into AI-assisted development workflows. Implemented in TypeScript/Node.js; broader portfolio spans Python, Go, React, Next.js, and Vue.

Architecture deep-dive: docs/ARCHITECTURE.md · Sharing guide: docs/SOCIAL.md

Requirements

  • Node.js 18 or higher (Download)

  • The Noun Project API Keys (free account works!)

Don't have API keys? Get them here →

Quick Start

Step 1: Get Your API Keys

  1. Go to The Noun Project Developers

  2. Sign in or create a free account

  3. Create a new app (or select an existing one)

  4. Copy your Consumer Key and Consumer Secret

Step 2: Installation

Option A: npx (Easiest - No Install Required)

# Run directly without installation
npx @alisaitteke/noun-mcp

Option B: Global Install

npm install -g @alisaitteke/noun-mcp

Option C: Local Development

git clone https://github.com/alisaitteke/noun-mcp.git
cd noun-mcp
npm install
npm run build
npm link

Step 3: Configure Environment

Create a .env file in the project directory:

cp .env.example .env

Edit .env with your credentials:

# Your API credentials from The Noun Project
NOUN_CONSUMER_KEY=your_consumer_key_here
NOUN_CONSUMER_SECRET=your_consumer_secret_here

# Choose your tier: FREE (5K calls/month) or PAID (unlimited)
NOUN_API_TIER=FREE

FREE vs PAID Tier

FREE Tier (5,000 API calls/month)

  • Perfect for personal projects and testing

  • Automatic cost optimizations

  • Smaller page sizes (max 10 results per search)

  • Optimized thumbnails (42px by default)

  • SVG URLs excluded by default (save bandwidth)

  • Smart usage alerts at 50%, 80%, 95%

PAID Tier (Unlimited)

  • No monthly limits

  • Larger page sizes (up to 100 results)

  • High-quality thumbnails (84px by default)

  • SVG URLs included automatically

  • No restrictions

Switch anytime: Just update NOUN_API_TIER in your .env file!

Step 4: Configure Cursor AI

Open Cursor settings: Settings → Features → MCP

Add this configuration:

Option A: Using npx (Recommended)

{
  "mcpServers": {
    "noun-project": {
      "command": "npx",
      "args": ["@alisaitteke/noun-mcp"],
      "env": {
        "NOUN_CONSUMER_KEY": "your_key_here",
        "NOUN_CONSUMER_SECRET": "your_secret_here",
        "NOUN_API_TIER": "FREE"
      }
    }
  }
}

Option B: Using global install

{
  "mcpServers": {
    "noun-project": {
      "command": "noun-mcp",
      "env": {
        "NOUN_CONSUMER_KEY": "your_key_here",
        "NOUN_CONSUMER_SECRET": "your_secret_here",
        "NOUN_API_TIER": "FREE"
      }
    }
  }
}

Option C: Using local build

{
  "mcpServers": {
    "noun-project": {
      "command": "node",
      "args": ["/path/to/noun-mcp/dist/index.js"],
      "env": {
        "NOUN_CONSUMER_KEY": "your_key_here",
        "NOUN_CONSUMER_SECRET": "your_secret_here",
        "NOUN_API_TIER": "FREE"
      }
    }
  }
}

Step 5: Configure Claude Desktop

Edit: ~/Library/Application Support/Claude/claude_desktop_config.json

Using npx (Recommended)

{
  "mcpServers": {
    "noun-project": {
      "command": "npx",
      "args": ["@alisaitteke/noun-mcp"],
      "env": {
        "NOUN_CONSUMER_KEY": "your_key_here",
        "NOUN_CONSUMER_SECRET": "your_secret_here",
        "NOUN_API_TIER": "FREE"
      }
    }
  }
}

Usage Examples

Once configured, just talk to your AI naturally:

Search for Icons

"Find me some coffee cup icons"
"Search for solid style house icons"
"Show me line icons with weight 18-20 for 'bicycle'"

Download Icons

"Download icon 12345 in red color"
"Get icon 67890 as PNG, 200x200 pixels, save to ./icons/house.png"
"Download this icon as SVG with hex color FF5733"

Browse Collections

"Search for weather icon collections"
"Show me collection 123 details"

Get Suggestions

"Give me autocomplete suggestions for 'spo'"

Check Usage

"How many API calls have I used this month?"
"Check my API usage limits"

Available Tools

The AI can use these tools to help you:

search_icons

Search The Noun Project icon database.

What you can filter:

  • Style: solid, line, or both

  • Line weight: 1-60 or range like "18-20"

  • Public domain: Show only free-to-use icons

  • Thumbnail size: 42, 84, or 200 pixels

  • Include SVG: Get SVG URLs in results

  • Limit: Max results per page

Example:

"Search for 'coffee' icons in solid style, public domain only"

get_icon

Get detailed information about a specific icon.

Returns:

  • Icon name and ID

  • Creator information

  • Tags and collections

  • License details

  • Download URLs

Example:

"Show me details for icon 12345"

download_icon

Download an icon with custom options.

Options:

  • Format: SVG or PNG

  • Color: Any hex color (e.g., "FF0000" for red)

  • Size: 20-1200 pixels (PNG only)

  • Save to file: Optional file path

Note: FREE tier can only download public domain icons.

Example:

"Download icon 12345 as PNG, 200x200, red color, save to ./icons/coffee.png"

search_collections

Find icon collections by keyword.

Example:

"Search for 'travel' collections"

get_collection

View a specific collection with all its icons.

Example:

"Show me collection 456"

icon_autocomplete

Get search term suggestions (max 10).

Example:

"What terms start with 'comp'?"

check_usage

Check your API usage and limits.

Shows:

  • Monthly limit and usage

  • Remaining calls

  • Percentage used

  • Days until reset

  • Optimization tips (FREE tier)

FREE Tier Best Practices

Maximize your 5,000 monthly calls:

1. Be Specific

Bad:  "icon"       → Too broad, many pages needed
Good: "coffee cup" → Specific, better results

2. Use Autocomplete First

Step 1: "Suggestions for 'cof'"  → ["coffee", "coffee cup"]
Step 2: "Search for 'coffee cup'" → Exact results

3. Avoid Pagination

Bad:  Browsing 5 pages = 5 API calls
Good: Refine search to get results on first page

4. Download Once, Reuse

Download icon → Save to project → Use everywhere
(Don't re-download the same icon)

5. Filter for Public Domain

FREE tier can only download public domain icons
Filter searches with limit_to_public_domain=1

6. Cache Results

The server automatically caches usage data for 5 minutes. You should also save:

  • Downloaded icons

  • Icon IDs you've explored

  • Collection information

Cost Optimization

The server automatically optimizes API usage in FREE tier mode:

Feature

FREE Tier

PAID Tier

Results per page

10 max

100 max

Default thumbnail

42px

84px

SVG URLs

Excluded

Included

Pagination warnings

Yes

No

Usage alerts

50%, 80%, 95%

None

Want full details? See COST_OPTIMIZATION.md

Development

Run in Development Mode

npm install
npm run dev

Build for Production

npm run build

Run Built Version

npm start

Project Structure

noun-mcp/
├── src/
│   ├── index.ts              # MCP server entry point
│   ├── api/
│   │   ├── auth.ts          # OAuth 1.0a authentication
│   │   └── client.ts        # API client with rate limiting
│   ├── tools/
│   │   ├── search.ts        # Icon search functionality
│   │   ├── download.ts      # Icon download & details
│   │   ├── collections.ts   # Collections & autocomplete
│   │   └── usage.ts         # Usage monitoring
│   ├── types/
│   │   └── schemas.ts       # Zod schemas & TypeScript types
│   └── utils/
│       └── costOptimizer.ts # Cost optimization logic
├── docs/
│   ├── ARCHITECTURE.md      # System design & technical overview
│   └── SOCIAL.md            # LinkedIn / GitHub sharing guide
├── package.json
├── tsconfig.json
└── README.md

For system design, data flow, and design decisions, see docs/ARCHITECTURE.md.

Troubleshooting

"Missing required environment variables"

Problem: API keys not found.

Solution:

  1. Check .env file exists

  2. Verify NOUN_CONSUMER_KEY and NOUN_CONSUMER_SECRET are set

  3. Check for typos in variable names

"Authentication failed"

Problem: Invalid API credentials.

Solution:

  1. Verify credentials at developers page

  2. Make sure you copied the entire key/secret

  3. Check for extra spaces or quotes

"Rate limit exceeded"

Problem: Too many requests too fast.

Solution:

  • Wait a moment (limit is 100 requests/minute)

  • The server automatically handles rate limiting

  • If persistent, check your usage with check_usage tool

SVG URLs Not Working

Problem: SVG URLs expire after 1 hour.

Solution:

  • Download fresh URLs when needed

  • Use download_icon to get base64-encoded icons

  • Save icons locally instead of relying on URLs

"Free API access is limited to public domain icons"

Problem: Trying to download non-public-domain icon with FREE account.

Solution:

  • Filter searches: limit_to_public_domain=1

  • Or upgrade to PAID tier at pricing page

Server Not Appearing in Cursor/Claude

Problem: MCP server not detected.

Solution:

  1. Restart Cursor AI or Claude Desktop

  2. Check JSON config syntax (no trailing commas!)

  3. Verify file paths are absolute

  4. Check server logs for errors

API Limits

Tier

Monthly Limit

Rate Limit

Download Access

FREE

5,000 calls

100/min

Public domain only

PAID

Unlimited

100/min

All icons

Want more? Check The Noun Project Pricing

Contributing

Contributions are welcome!

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/amazing-feature

  3. Commit changes: git commit -m 'Add amazing feature'

  4. Push to branch: git push origin feature/amazing-feature

  5. Open a Pull Request

License

MIT License - see LICENSE file for details.

Acknowledgments

Author

Ali Sait Teke — Full-Stack / AI-Era Software Architect

Support


Note: This is a community-built MCP server and is not an official product of The Noun Project.

Made with for the AI and developer community.

Available Tools

7 tools
check_usageB

Check API usage limits and current usage.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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 states what the tool does but doesn't describe how it behaves: no information about response format, whether it shows real-time vs cached data, rate limits of this tool itself, authentication requirements, or error conditions. 'Check' implies a read operation, but this isn't explicitly confirmed.

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 perfectly concise at 7 words in a single sentence that directly states the tool's purpose. Every word earns its place with no redundancy or unnecessary elaboration. It's front-loaded with the core functionality.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and zero parameters, the description is incomplete. While concise, it lacks crucial context about what information is returned (limits vs current usage, time periods, quota details), how frequently it should be called, or what the response structure looks like. The agent would need to invoke the tool blindly to understand its behavior.

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?

The tool has zero parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters since none exist. It earns a baseline 4 for not creating confusion about parameters that don't exist.

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's purpose with specific verbs ('check') and resources ('API usage limits and current usage'). It distinguishes from siblings like 'download_icon' or 'search_collections' by focusing on system monitoring rather than icon/collection operations. However, it doesn't explicitly differentiate from potential non-existent siblings in the usage monitoring domain.

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?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, timing considerations, or comparison with other tools for monitoring API usage. The agent must infer usage context solely from the purpose statement.

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

download_iconA

Download an icon with custom color and size options. Supports SVG or PNG formats. Note: Free API access is limited to public domain icons only.

ParametersJSON Schema
NameRequiredDescriptionDefault
icon_idYesID of the icon to download
colorNoHexadecimal color value (e.g., "FF0000" for red)
filetypeNoFile format (svg or png)
sizeNoSize in pixels for PNG (min: 20, max: 1200). Not applicable for SVG.
save_to_fileNoOptional: File path to save the icon

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses format support (SVG/PNG) and API limitations (public domain only for free access), which are useful behavioral traits. However, it lacks details on permissions, rate limits, or error handling, leaving gaps for a mutation-like download operation.

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 front-loaded with the core purpose, followed by key features and a critical note, all in three concise sentences with zero wasted words. Each sentence adds distinct value, making it highly efficient.

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?

For a tool with 5 parameters, no annotations, and no output schema, the description is moderately complete. It covers purpose, formats, and API limitations, but lacks details on return values, error cases, or authentication needs, which are important given the download operation's complexity.

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 description coverage is 100%, so the schema fully documents all 5 parameters. The description adds minimal value beyond the schema by mentioning 'custom color and size options' and format support, but doesn't provide additional syntax or constraints. Baseline 3 is appropriate as the schema does the heavy lifting.

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 verb 'download' and resource 'icon' with custom options, making the purpose evident. It distinguishes from siblings like 'get_icon' by specifying download functionality. However, it doesn't explicitly contrast with all siblings, keeping it at 4 rather than 5.

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 through the mention of 'custom color and size options' and format support, but provides no explicit guidance on when to use this tool versus alternatives like 'get_icon' or 'search_icons'. The note about free API limitations offers some context but not sibling differentiation.

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

get_collectionC

Get details and icons of a specific collection.

ParametersJSON Schema
NameRequiredDescriptionDefault
collection_idYesUnique collection ID
thumbnail_sizeNoThumbnail size in pixels
include_svgNoInclude SVG URLs
limitNoIcon limit in collection
next_pageNoToken for next page
prev_pageNoToken for previous page

TDQS

C2.9/5.0
Behavior2/5

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. It mentions retrieving 'details and icons' but lacks critical information such as whether this is a read-only operation, potential rate limits, authentication requirements, or how pagination works with 'next_page' and 'prev_page' parameters.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized for the complexity, with every part contributing to clarity.

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

Completeness2/5

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

Given the tool has 6 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain the return format, pagination behavior, or error handling, leaving significant gaps in understanding how to effectively use the tool beyond basic parameter input.

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 description coverage is 100%, so the schema fully documents all parameters. The description adds no additional meaning beyond implying retrieval of 'details and icons', which loosely relates to parameters like 'thumbnail_size' and 'include_svg', but doesn't enhance understanding of their semantics beyond what the schema provides.

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 verb 'Get' and the resource 'details and icons of a specific collection', making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'search_collections' or 'get_icon', which might retrieve similar data but with different scopes or filters.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or compare to siblings like 'search_collections' for broader queries or 'get_icon' for individual icons, leaving usage context ambiguous.

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

get_iconB

Get detailed information about a specific icon (metadata, creator, tags, download URLs).

ParametersJSON Schema
NameRequiredDescriptionDefault
icon_idYesUnique icon ID
thumbnail_sizeNoThumbnail size in pixels

TDQS

B3.3/5.0
Behavior2/5

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 information, implying a read-only operation, but doesn't address potential rate limits, authentication needs, error handling, or response format. This leaves significant gaps in understanding how the tool behaves beyond its basic purpose.

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, efficient sentence that front-loads the core purpose ('Get detailed information about a specific icon') and lists key details (metadata, creator, tags, download URLs) without unnecessary words. Every element earns its place, 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.

Completeness3/5

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

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the purpose and key output aspects, but lacks behavioral details like rate limits or error handling, and doesn't explain return values since no output schema exists. This meets minimum viability but has clear gaps.

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% description coverage, with clear documentation for 'icon_id' and 'thumbnail_size' (including enum values). The description adds minimal value beyond the schema, mentioning 'detailed information' but not elaborating on how parameters affect the output. Baseline score of 3 is appropriate as the schema does the heavy lifting.

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 verb 'Get' and the resource 'detailed information about a specific icon', specifying metadata, creator, tags, and download URLs. It distinguishes from siblings like 'download_icon' (which likely downloads files) and 'search_icons' (which searches multiple icons), but doesn't explicitly name alternatives or differentiate beyond the scope of a single icon.

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 retrieving metadata of a specific icon, suggesting it's for detailed lookup rather than searching or downloading. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'search_icons' for broader queries or 'download_icon' for file retrieval, leaving usage context somewhat inferred.

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

icon_autocompleteC

Get autocomplete suggestions for icon search.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch term for autocomplete
limitNoNumber of suggestions (maximum 10)

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. It states what the tool does but lacks details on traits like rate limits, authentication needs, response format, or error handling. For a tool with zero annotation coverage, this is a significant gap, as the agent has no insight into operational constraints or expected behavior beyond the basic function.

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, efficient sentence that front-loads the core purpose ('Get autocomplete suggestions') without any wasted words. It's appropriately sized for a simple tool, making it easy for an agent to parse quickly. Every part of the sentence contributes directly to understanding the tool's function.

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

Completeness2/5

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 effective tool use. It covers the basic purpose but omits critical context like response format, error cases, or performance hints. For a tool with 2 parameters and no structured behavioral data, the description should provide more guidance to compensate, but it falls short.

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 schema description coverage is 100%, with clear descriptions for both parameters ('query' and 'limit'), so the schema does the heavy lifting. The description adds no additional meaning beyond implying a search context, which is already covered by the schema. This meets the baseline score of 3 for high schema coverage without extra param info in the description.

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's purpose with a specific verb ('Get') and resource ('autocomplete suggestions for icon search'), making it immediately understandable. It distinguishes from siblings like 'search_icons' by focusing on autocomplete suggestions rather than full search results. However, it doesn't explicitly contrast with 'search_collections' or other siblings, keeping it from 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.

Usage Guidelines2/5

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 'search_icons' or 'get_icon'. It mentions 'autocomplete suggestions' but doesn't specify use cases (e.g., for real-time search assistance) or exclusions. Without any contextual cues, the agent must infer usage from the name and description alone.

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

search_collectionsC

Search for collections on The Noun Project.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesCollection search term
limitNoMaximum number of results
next_pageNoToken for next page
prev_pageNoToken for previous page

TDQS

C2.9/5.0
Behavior2/5

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's purpose but doesn't describe key behaviors like pagination (implied by 'next_page' and 'prev_page' parameters but not explained), rate limits, authentication needs, or what the search returns (e.g., list of collections with metadata). This is inadequate for a search tool with multiple parameters.

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, clear sentence that efficiently conveys the core purpose without unnecessary words. It's front-loaded and wastes no space, 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.

Completeness2/5

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

Given the complexity of a search tool with pagination parameters and no output schema, the description is insufficient. It doesn't explain the return format (e.g., what data fields are included), how results are ordered, or error handling. With no annotations and missing output details, it leaves significant gaps for the agent to infer behavior.

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 description coverage is 100%, so the schema already documents all parameters ('query', 'limit', 'next_page', 'prev_page') with descriptions. The description adds no additional meaning beyond what's in the schema, such as explaining how pagination tokens work or default limits. 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.

Purpose4/5

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

The description clearly states the action ('Search for collections') and the target resource ('collections on The Noun Project'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'search_icons' or 'get_collection', which would require mentioning what makes this tool distinct (e.g., searching vs. retrieving a specific collection).

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'search_collections' over 'get_collection' (for specific collections) or 'search_icons' (for icons), nor does it specify prerequisites or exclusions. This leaves the agent without context for tool selection.

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

search_iconsC

Search for icons on The Noun Project. You can filter by style, line weight, public domain, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch term (e.g., "dog", "house", "bicycle")
stylesNoIcon style: solid, line, or both
line_weightNoLine weight for line icons (1-60) or range (e.g., "18-20")
limit_to_public_domainNoShow only public domain icons (1=yes, 0=no)
thumbnail_sizeNoThumbnail size in pixels
include_svgNoInclude SVG URLs in response (1=yes, 0=no)
limitNoMaximum number of results
next_pageNoToken for next page
prev_pageNoToken for previous page

TDQS

C2.9/5.0
Behavior2/5

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 filtering options but doesn't describe critical behaviors like pagination (implied by 'next_page'/'prev_page' parameters), rate limits, authentication needs, or what the response format looks like. This is inadequate for a search tool with 9 parameters.

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, efficient sentence that front-loads the core purpose and briefly mentions key capabilities. Every word earns its place with zero redundancy or wasted space.

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

Completeness2/5

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

Given the complexity (9 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain the search results format, pagination behavior, error conditions, or usage constraints. For a search tool with rich filtering options, this leaves significant gaps for the agent.

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 description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds marginal value by listing some filterable attributes ('style, line weight, public domain, and more') but doesn't provide additional semantics beyond what's in 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.

Purpose4/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: 'Search for icons on The Noun Project.' It specifies the verb ('search') and resource ('icons'), and mentions the platform ('The Noun Project'). However, it doesn't explicitly differentiate from sibling tools like 'search_collections' or 'icon_autocomplete', which prevents 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.

Usage Guidelines2/5

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 'search_collections' or 'icon_autocomplete'. It mentions filtering capabilities but doesn't specify scenarios or prerequisites for usage, leaving the agent without context for tool selection.

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. 7 tool updatesv1.0.0
    • First observedcheck_usage
    • First observeddownload_icon
    • First observedget_collection
    • First observedget_icon
    • First observedicon_autocomplete
    • First observedsearch_collections
    • First observedsearch_icons

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. For example, 'get_icon' retrieves metadata for a specific icon, while 'download_icon' handles downloading it, and 'search_icons' searches across icons. The descriptions clearly differentiate between operations on icons versus collections, and between retrieval, search, and utility functions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as 'check_usage', 'download_icon', and 'search_collections'. The naming is predictable and readable throughout, with no deviations in style or convention, making it easy for agents to understand and use the tools.

Tool Count5/5

With 7 tools, the count is well-scoped for a Noun Project API server. Each tool earns its place by covering distinct aspects like usage checking, icon retrieval, downloading, searching, and collection management. This is neither too sparse nor bloated, fitting typical MCP server ranges for focused domains.

Completeness4/5

The tool surface is nearly complete for the Noun Project domain, covering key operations like searching, retrieving, and downloading icons, as well as managing collections. A minor gap exists in update or delete operations (e.g., no tools for modifying collections or icons), but agents can work around this as the core workflows are well-supported.

Maintenance

ActivityStale
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers