MCP 服务器

Marketingburos

nl.marketingburos/marketingburos
商业与运营 营销与广告 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Searches and profiles Dutch marketing agencies, matches agencies to buyer briefs, and queues consented RFQs for selected agencies.

find_agency
Look up one specific agency by trade name, statutory name or domain (e.g. name='Yourcrew' or domain='yourcrew.online') to get its slug for get_agency_profile. Returns up to 10 candidates with public trade name (name), legal_name when the statutory name differs, city and domain. Returns isError with {error:'invalid_input'} when neither name nor domain is given. For ranked agency recommendations by criteria use search_agencies.
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'city': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Optional city to narrow candidates.'}, 'name': {'type': 'string', 'maxLength': 160, 'minLength': 2, 'description': "Trade or statutory name (fuzzy), e.g. 'Yourcrew'. Provide name and/or domain."}, 'limit': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 1, 'description': 'Max candidates (1-10, default 5).'}, 'domain': {'type': 'string', 'maxLength': 160, 'minLength': 4, 'description': "Website domain, e.g. 'yourcrew.online'. Provide name and/or domain."}}}
get_agency_profile
Fetch the full public profile of one marketing agency by slug (from search_agencies or find_agency). Includes specialisms, cultural-fit axes and up to 3 cases; cultural-fit and cases are read-only (Knowledge-OS canonical). Returns isError with {error:'not_found'} when the slug does not exist or the agency opted out of MCP.
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Agency slug as returned by search_agencies or find_agency.'}}}
match_brief
Match a buyer's own question to Dutch marketing agencies. When the buyer already knows the required specialisms, prefer search_agencies with those specialisms; use match_brief when they need to be inferred from the brief. Pass the brief in the buyer's words (NL or EN, 20-2000 chars), optionally with the same hard filters as search_agencies (city, near_city + within_km, target_industry, client_orientation, company_size_band, budget_band). The brief is redacted for personal data first and never stored; a call takes a few seconds. Returns up to 20 ranked agencies (slug, name, 1-line Dutch rationale, via: specialism | brief | both) and `interpreted`: the specialisms and working style read from the brief, plus a follow-up question when the brief is unclear. Show `interpreted` to the buyer; if it is wrong, call search_agencies with explicit specialisms. Ranking ignores what an agency pays (never pay-to-rank).
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['brief'], 'properties': {'city': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "Exact office city of the agency. For 'near a city' use near_city + within_km instead."}, 'brief': {'type': 'string', 'maxLength': 2000, 'minLength': 20, 'description': "The buyer's own words (NL or EN, 20-2000 chars). Pass the question, not a summary."}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1, 'description': 'Max results (1-20, default 10).'}, 'near_lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Center latitude of a radius search (alternative to near_city). Requires near_lon + within_km.'}, 'near_lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Center longitude of a radius search (alternative to near_city). Requires near_lat + within_km.'}, 'near_city': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Center of a radius search: any Dutch city name. Requires within_km.'}, 'within_km': {'type': 'number', 'maximum': 250, 'description': 'Radius in kilometres around near_city or near_lat/near_lon (max 250). Ignored without an origin; near_* is ignored without within_km.', 'exclusiveMinimum': 0}, 'budget_band': {'enum': ['<10k', '10k-25k', '25k-50k', '50k-100k', '100k+'], 'type': 'string', 'description': "Buyer's budget in EUR. Only excludes agencies whose known rates conflict; most agencies have no known rate."}, 'target_industry': {'enum': ['B2B SaaS', 'Bouw & vastgoed', 'E-commerce', 'Financiële dienstverlening', 'Gezondheidszorg', 'Industrie & maakindustrie', 'Logistiek & transport', 'Media & uitgeverij', 'Non-profit & overheid', 'Onderwijs', 'Professional services', 'Reizen & toerisme', 'Retail & consumer', 'Tech & IT-services', 'Telecom & utilities', 'Anders'], 'type': 'string', 'description': "Client vertical the agency serves (e.g. the buyer's own industry). Not the agency's own sector."}, 'company_size_band': {'enum': ['1-10', '11-50', '51-200', '201-500', '500+'], 'type': 'string', 'description': "Size of the buyer's company (employees); matches agencies that target that segment."}, 'client_orientation': {'enum': ['b2b', 'b2c'], 'type': 'string', 'description': 'b2b or b2c focus of the agency.'}}}
search_agencies
Search Dutch marketing agencies by specialisms, target_industry (the client vertical the agency serves), city, B2B/B2C, company size, budget band and an optional radius (near_city = any Dutch city, or near_lat/near_lon, always combined with within_km in kilometres). specialisms filters against the taxonomy; a term outside it is mapped to the nearest specialism when the match is clear (shown in filters.specialisms.interpreted_as), otherwise echoed in filters.specialisms.unmatched (all unknown → 0 results + hint). budget_band only excludes agencies with a known conflicting rate (see filters.budget_band.note). target_industry matches the sectors an agency is known to serve; when fewer than 5 agencies match it, the list is filled with agencies that meet the other filters, the response says relaxed: ['target_industry'], and the first strictMatched results match every filter. Returns up to 20 ranked agencies with slug (use in get_agency_profile), public trade name (name, plus legal_name when the statutory name differs), a 1-line rationale in Dutch, and totalMatched (hits before the limit). Ranking ignores what an agency pays (never pay-to-rank). Read the categories://list resource for valid values.
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'city': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "Exact office city of the agency. For 'near a city' use near_city + within_km instead."}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1, 'description': 'Max results (1-20, default 10).'}, 'near_lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Center latitude of a radius search (alternative to near_city). Requires near_lon + within_km.'}, 'near_lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Center longitude of a radius search (alternative to near_city). Requires near_lat + within_km.'}, 'near_city': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Center of a radius search: any Dutch city name. Requires within_km.'}, 'within_km': {'type': 'number', 'maximum': 250, 'description': 'Radius in kilometres around near_city or near_lat/near_lon (max 250). Ignored without an origin; near_* is ignored without within_km.', 'exclusiveMinimum': 0}, 'budget_band': {'enum': ['<10k', '10k-25k', '25k-50k', '50k-100k', '100k+'], 'type': 'string', 'description': "Buyer's budget in EUR. Only excludes agencies whose known rates conflict; most agencies have no known rate."}, 'specialisms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'maxItems': 5, 'description': "Up to 5 specialism slugs from categories://list (e.g. 'seo', 'branding'). A term outside the taxonomy is mapped to the nearest specialism when the match is clear (filters.specialisms.interpreted_as), otherwise echoed back in filters.specialisms.unmatched."}, 'target_industry': {'enum': ['B2B SaaS', 'Bouw & vastgoed', 'E-commerce', 'Financiële dienstverlening', 'Gezondheidszorg', 'Industrie & maakindustrie', 'Logistiek & transport', 'Media & uitgeverij', 'Non-profit & overheid', 'Onderwijs', 'Professional services', 'Reizen & toerisme', 'Retail & consumer', 'Tech & IT-services', 'Telecom & utilities', 'Anders'], 'type': 'string', 'description': "Client vertical the agency serves (e.g. the buyer's own industry). Not the agency's own sector."}, 'company_size_band': {'enum': ['1-10', '11-50', '51-200', '201-500', '500+'], 'type': 'string', 'description': "Size of the buyer's company (employees); matches agencies that target that segment."}, 'client_orientation': {'enum': ['b2b', 'b2c'], 'type': 'string', 'description': 'b2b or b2c focus of the agency.'}}}
submit_rfq
Submit a Request For Quote (RFQ) on behalf of a buyer to 1-3 selected marketing agencies via marketingburos.nl. Input is the v1 wizard profile (specialisms, industry, company size, budget, timeline, ...) plus contact details and selectedAgencySlugs (slugs from search_agencies or find_agency). Nothing is sent to agencies automatically: the RFQ is queued and a human operator releases it. Success returns {rfqId, queuedAgencySlugs, notMatchableSlugs}: a selected agency that is not in the match pool for this buyer profile is skipped (listed in notMatchableSlugs), not an error, unless none remain. Failures return isError with one of: invalid_input (with issues[]), unknown_agency (with slugs[] that do not exist or cannot be contacted), rate_limit_ip / rate_limit_email (resetAt included when raised by this server), invalid / invalid_email / disposable_email (upstream validation), no_selection (no selected agency is in the match pool), upstream_failure.
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['specialisms', 'industry', 'companySize', 'agencySize', 'specialistFullServiceSlider', 'culturalFit', 'budgetBand', 'timeline', 'contactEmail', 'contactName', 'contactCompany', 'selectedAgencySlugs'], 'properties': {'website': {'type': 'string', 'maxLength': 500, 'description': 'Leave empty. Anti-spam honeypot field.'}, 'industry': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': "Buyer's industry (a value from categories://list doelgroep_options, or 'Anders')."}, 'timeline': {'enum': ['asap', '1-3mnd', '3-6mnd', 'flexibel'], 'type': 'string', 'description': 'When the work should start.'}, 'agencySize': {'enum': ['1-9', '10-49', '50-249', '250+', 'geen-voorkeur'], 'type': 'string', 'description': 'Preferred agency size in employees.'}, 'budgetBand': {'enum': ['<10k', '10k-25k', '25k-50k', '50k-100k', '100k+'], 'type': 'string', 'description': "Buyer's budget in EUR."}, 'companySize': {'enum': ['1-10', '11-50', '51-200', '201-500', '500+', 'geen-voorkeur'], 'type': 'string', 'description': "Buyer's company size in employees."}, 'contactName': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "Buyer's full name."}, 'culturalFit': {'type': 'array', 'items': [{'type': 'number', 'maximum': 10, 'minimum': 0}, {'type': 'number', 'maximum': 10, 'minimum': 0}, {'type': 'number', 'maximum': 10, 'minimum': 0}], 'maxItems': 3, 'minItems': 3, 'description': 'Three 0-10 sliders: [data-driven, specialist, hands-on]. Use [5,5,5] when unknown.'}, 'specialisms': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 5, 'minItems': 1, 'description': '1-5 specialism slugs the buyer needs (see the categories://list resource).'}, 'toelichting': {'type': 'string', 'maxLength': 2000, 'description': 'Optional free-text brief for the agencies (Dutch or English).'}, 'contactEmail': {'type': 'string', 'format': 'email', 'maxLength': 254, 'description': "Buyer's business e-mail (no disposable domains)."}, 'contactPhone': {'type': 'string', 'pattern': '^[\\d\\s()+-]*$', 'maxLength': 40, 'description': 'Optional phone number (digits, spaces, +, (), -).'}, 'contactCompany': {'type': 'string', 'maxLength': 160, 'minLength': 1, 'description': "Buyer's company name."}, 'industryFreetext': {'type': 'string', 'maxLength': 80, 'description': "Required only when industry is 'Anders': the buyer's industry in their own words."}, 'clientOrientation': {'enum': ['b2b', 'b2c', 'both', 'geen-voorkeur'], 'type': 'string', 'description': 'Optional: does the buyer sell b2b, b2c or both.'}, 'selectedAgencySlugs': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'maxItems': 3, 'minItems': 1, 'description': '1-3 agency slugs (as returned by search_agencies or find_agency) the buyer wants to receive this RFQ.'}, 'specialistFullServiceSlider': {'type': 'integer', 'maximum': 10, 'minimum': 0, 'description': '0 = full-service agency, 10 = niche specialist.'}}}
已添加
match_brief
2026年9月29日 02:59
已更改
search_agencies
2026年9月27日 02:50
已添加
submit_rfq
2026年9月17日 12:54
已添加
get_agency_profile
2026年9月17日 12:54
已添加
find_agency
2026年9月17日 12:54
已添加
search_agencies
2026年9月17日 12:54