Skip to main content
Glama
Partner and Member Directory Extractor MCP Server

Partner and Member Directory Extractor MCP Server

Extract companies from a partner or member directory

extract_directory_companies
Read-onlyIdempotent

Extracts one company row per listing from vendor partner directories and trade body member lists, returning domain, website, tier, tags, location, and published contact details.

Instructions

Turn a vendor partner directory or a trade body member list into one company row per listing. Give directory_url or directory_urls (up to 20). Reads directories built on PartnerPage (for example https://www.clay.com/en/experts or the Zapier partner directory) through PartnerPage's public listing API, the Shopify Partner Directory (any https://www.shopify.com/partners/directory/... page), and member lists that link to one profile page per member. Each row: listing_name, company_domain, website, listing_url, tier, tags, location, rating, review_count, partner_since, and the email and phone the directory itself publishes. robots.txt is checked before every request. A directory that cannot be read (it builds its list in the browser) returns one free row with row_status unsupported. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN; Apify charges per company row.

Input Schema

NameRequiredDescriptionDefault
max_pagesNoShopify and member list directories: listing pages to read, 1 to 100. Default 10.
max_listingsNoListings per directory, 1 to 5000. Each company row is billed. Default 100.
directory_urlNoOne directory page URL.
dedupe_domainsNoReturn a company listed more than once only once; skipped repeats are free. Default true.
directory_urlsNoUp to 20 directory page URLs.
max_charge_usdNoOptional. The run stops before any row that would take its charges over this amount.
include_detailsNoPartnerPage directories: true adds tags, location, and the listed email with one more request per listing. Default true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: robots.txt is checked before every request, unreadable directories yield one free row flagged unsupported, failed runs return an error with a run ID, an APIFY_TOKEN is required, and Apify bills per company row (with dedupe skips free and max_charge_usd as a stop). This is unusually rich operational context.

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

Conciseness4/5

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

Front-loaded with the core transformation, then source support, then row shape, then operational constraints — a sensible priority order with little filler. It is dense and somewhat run-on in the middle, which keeps it just shy of a 5.

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

Completeness5/5

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

With no output schema and seven optional parameters, the description fills the gap by enumerating the exact row fields returned (listing_name, company_domain, tier, tags, location, rating, partner_since, published email/phone) and describing both the unsupported and error outcomes. Nothing an agent needs in order to call it correctly is missing.

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?

Schema coverage is 100%, so the baseline is 3, and the description adds real value on top: it frames directory_url vs directory_urls as alternates with a 20-URL cap, ties include_details to extra per-listing requests, and connects dedupe to billing. It doesn't restate ranges already in the schema, which keeps the additions meaningful.

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?

States a specific verb and resource — turning a partner directory or member list into one company row per listing — and enumerates the exact source families supported (PartnerPage, Shopify Partner Directory, member lists). An agent knows precisely what this does without opening the schema.

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

Usage Guidelines4/5

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

It explains which input to supply (directory_url or directory_urls, up to 20) and the eligibility conditions for each source type, including the failure mode where a JS-rendered directory returns row_status unsupported. It stops short of an explicit 'do not use this for X' exclusion, but with no siblings there is little else to route against.

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

Deploy Server

Other Tools