Pick an Agency
This server lets you search, get matched with, and retrieve detailed profiles of marketing agencies from a directory of 47,000+ agencies. It is publicly accessible, read-only, and requires no API key.
Search & filter agencies (
search_agencies): Browse the directory using free-text queries, filtering by service type (e.g., SEO, Social Media Marketing), country, city, industry, and minimum rating (0–5). Returns a list of agencies with location, rating, reviews, and profile links.Get personalized agency matches (
match_agencies): Submit a project brief including required services (e.g.,['SEO', 'Content Marketing']), location, budget (e.g.,'$5k-10k'), industry, and ad platforms (e.g.,['Meta Ads', 'Google Ads']) to receive a ranked shortlist of best-fit agencies.Fetch a full agency profile (
get_agency): Retrieve comprehensive details for a specific agency by its unique slug, including description, location, rating, services, website, and recent client reviews.
Pick an Agency — MCP Server
Pick an Agency is a free directory of 47,000+ marketing agencies with real client reviews and a free AI matching tool. This Model Context Protocol (MCP) server lets any AI agent — Claude, ChatGPT, Cursor, Gumloop, and more — search the directory and get matched with fitted agencies, directly in conversation.
Find the right marketing agency, backed by real reviews → pickanagency.com
Endpoint
Hosted, public, read-only. No API key required. Streamable HTTP:
https://www.pickanagency.com/api/mcp/mcpRelated MCP server: Online PR - Press Release Distribution
Tools
Tool | What it does |
| Search/filter the directory by free-text query, service (SEO, paid ads, social…), country, city, industry, and minimum rating. |
| The "Get Matched" engine: give a brief (services, location, budget, industry) and get a ranked shortlist of fitted agencies. |
| A single agency's full profile (description, rating, services, website, recent reviews) by slug. |
Every result links back to the agency's profile on pickanagency.com.
Connect it
Claude Code
claude mcp add --transport http pick-an-agency https://www.pickanagency.com/api/mcp/mcpCursor — ~/.cursor/mcp.json
{
"mcpServers": {
"pick-an-agency": {
"url": "https://www.pickanagency.com/api/mcp/mcp"
}
}
}Claude Desktop / Claude.ai
Settings → Connectors → Add custom connector → paste the endpoint URL above.
Run locally (stdio)
Prefer a local server? This package is a thin stdio proxy to the hosted endpoint:
npx -y github:Natden444/pickanagency-mcpOr in any MCP client config:
{ "mcpServers": { "pick-an-agency": { "command": "npx", "args": ["-y", "github:Natden444/pickanagency-mcp"] } } }Example prompts
"Find the top SEO agencies in the US."
"Match me with a social media marketing agency in Paris, budget around $5k/month."
"Tell me about the agency at slug
agence-pickers-paris-paris."
The agent calls the tools and answers with real agencies and their pickanagency.com profile links.
About
Pick an Agency helps companies find the right marketing agency, backed by real client reviews and free AI matching ("Get Matched" returns 5 fitted agencies in about 60 seconds). Built by Nathan Denier.
Website: https://www.pickanagency.com
Browse agencies: https://www.pickanagency.com/agencies
Get Matched: https://www.pickanagency.com/get-matched
License
MIT © Pick an Agency
Troubleshooting
Tools don't appear after adding the connector — MCP servers connect at session start: open a new conversation (Claude.ai) or restart the session (claude again in Claude Code), then check the connectors/tools menu. In Claude Code, /mcp lists connected servers and their status.
"Connection failed" or timeouts — verify the endpoint URL is exactly https://www.pickanagency.com/api/mcp/mcp (the /mcp suffix matters). The server is public; no API key, OAuth, or headers are needed. Check status by visiting pickanagency.com — if the site is up, the MCP endpoint is up.
Empty results — broaden the filters: try a country instead of a small city, or drop min_rating. match_agencies requires at least one service in services.
get_agency says "no agency found" — slugs must be exact. Find the right slug with search_agencies first (it's the last path segment of the profile URL).
Still stuck? Email hello@pickanagency.com or open an issue.
Available Tools
3 toolsget_agencyGet an agency profileARead-onlyInspect
Fetch a single agency's full profile from Pick an Agency by its slug (the last path segment of its profile URL), including description, location, rating, services, website and a few recent client reviews. WHEN TO USE: after search_agencies or match_agencies returned a result the user wants to know more about, or when the user names a specific agency whose slug you already know. Don't guess slugs — find them via search_agencies first.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Agency slug, e.g. 'clients-now-seo-agency-chennai'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint. Description adds specific fields returned (description, location, rating, services, website, recent client reviews), covering output behavioral expectations beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise paragraph, no redundant sentences. Front-loaded purpose and content, then usage guidance. Efficient 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?
With no output schema, the description adequately lists returned fields. Single parameter is fully explained. Tool is simple and description covers all necessary 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?
Schema description covers slug with example. Description adds 'last path segment of its profile URL' and reiterates to obtain from search, complementing the schema effectively.
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?
Clearly states it fetches a single agency's full profile by slug. Distinguishes from siblings (search_agencies, match_agencies) by specifying it operates on a known slug.
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?
Explicitly advises when to use: after search/match returned results, or when user names a specific agency. Warns not to guess slugs, directing to search_agencies first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_agenciesGet matched with fitted agenciesARead-onlyInspect
Pick an Agency's matching engine. Given a buyer brief (services needed, location, budget, industry), returns a short ranked shortlist of agencies that best fit — the same logic behind the free 'Get Matched' tool. WHEN TO USE: when the user describes their needs/project and wants a RECOMMENDATION ('I need a social media agency in Paris, ~$5k/month'). Requires at least one service. Use search_agencies instead for open browsing/filtering without a brief; use get_agency to drill into one result afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| services | Yes | Services the buyer needs, e.g. ['SEO', 'Content Marketing']. | |
| country | No | Target country. | |
| city | No | Target city. | |
| budget | No | Monthly budget, e.g. '$5k-10k' or '5000'. | |
| industry | No | Buyer's industry, e.g. 'E-commerce'. | |
| platforms | No | Ad platforms, e.g. ['Meta Ads', 'Google Ads']. | |
| limit | No | Shortlist size (default 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint) already declare safety and variability. The description adds that it is the same logic as the free tool and requires at least one service, but does not disclose result format or pagination. No contradiction.
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?
Two clear sentences plus a concise usage section. Every sentence adds value, no wasted words.
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 7 parameters (100% schema coverage) and no output schema, the description explains purpose and usage well. It covers when to use and the required parameter, but could mention result structure or pagination for completeness.
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 covers 100% of parameters with descriptions, so the baseline is 3. The description mentions the required services and adds context for 'limit' (default 5), but does not significantly enhance parameter meaning beyond the schema.
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 it returns a shortlist of agencies based on a buyer brief, using the same logic as the free 'Get Matched' tool. It distinguishes itself from sibling tools 'search_agencies' and 'get_agency'.
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?
Explicitly provides a 'WHEN TO USE' section with a concrete example and specifies alternatives: use 'search_agencies' for open browsing and 'get_agency' for drilling into results. It also notes the requirement for at least one service.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_agenciesSearch marketing agenciesARead-onlyInspect
Search Pick an Agency's directory of 47,000+ marketing agencies. Filter by free-text query, service (e.g. SEO, paid ads, social media), country, city, industry, and minimum rating. Returns the top matches with location, rating, reviews and profile link. WHEN TO USE: for browsing or filtering ('show me SEO agencies in Berlin', 'agencies named X') when the user wants a LIST to explore. Use match_agencies instead when the user describes their project/brief and wants a RECOMMENDATION; use get_agency for full detail on one specific agency.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Free-text search (agency name, keyword). | |
| service | No | Service, e.g. 'SEO', 'Social Media Marketing', 'Paid Advertising'. | |
| country | No | Country, e.g. 'United States', 'France'. | |
| city | No | City, e.g. 'Berlin', 'New York'. | |
| industry | No | Industry focus, e.g. 'SaaS', 'Healthcare'. | |
| min_rating | No | Minimum overall rating (0-5). | |
| limit | No | Max results (default 10). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. Description adds context about the tool being a search with filtering and returning a list, which aligns with and slightly enriches the annotation hints. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, front-loading the purpose and immediately stating filters and returns. The 'WHEN TO USE' section is clear and separate. No unnecessary words.
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?
With 7 optional parameters and no output schema, the description adequately covers the tool's functionality: it returns top matches with specific attributes. It mentions default limit implicitly. Could specify ordering or pagination, but not essential for basic use.
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 description does not need to add much. The description mentions filterable parameters (query, service, country, etc.) but does not deep dive into format or behavior beyond what the schema provides, meeting the baseline.
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?
Description explicitly states it searches a directory of 47,000+ marketing agencies with specific filters (query, service, country, etc.) and returns top matches with location, rating, reviews, profile link. It distinguishes from siblings by specifying the use case: listing vs recommendation vs detail.
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?
Provides explicit 'WHEN TO USE' section that contrasts with match_agencies (for recommendations) and get_agency (for full detail). Tells the agent to use this tool for browsing or filtering when the user wants a list to explore.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: search allows open browsing/filtering, match provides ranked recommendations based on a brief, and get retrieves full details of a specific agency. The descriptions explicitly state when to use each, preventing confusion.
All tool names follow a consistent verb_noun pattern (get_agency, match_agencies, search_agencies), with clear, predictable verbs and plural/singular nouns matching the tool's output.
Three tools is an ideal scope for a directory/matching service: search for browsing, match for recommendations, get for detailed profiles. No tool is redundant or missing for core workflows.
The tool set covers the primary user workflows (browse, match, detail). A minor gap is the lack of an explicit 'list all agencies' or compare tool, but search with no filters can approximate listing, and the set is otherwise complete for the domain.
Maintenance
Related MCP Connectors
Search and compare 2,000+ Dutch marketing agencies by specialism, city and cases. Never pay-to-rank.
AI marketing agent for Google Ads, Meta, GA4, TikTok, LinkedIn, Shopify, HubSpot and more.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA search engine for AI agents that enables searching, comparing, and discovering over 500 businesses across 112 categories with structured pricing data. It allows users to filter listings by price, category, and country to find and analyze specific business services.13MIT
- AlicenseNot gradedqualityDmaintenanceSearch PR agencies, browse publications, buy press release distribution & media placements. Zero-config, no API key needed.19MIT
- AlicenseAqualityFmaintenanceUniversal search engine for AI agents. Discover products, services, and businesses across every category. 10 MCP tools, zero LLM calls, millisecond responses.114AGPL 3.0
- FlicenseNot gradedqualityDmaintenanceSearches and analyzes competitor ads and content across Meta, Google, Instagram, TikTok, and YouTube with AI-powered creative analysis and cross-platform brand discovery.1
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Natden444/pickanagency-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server