Server definition
- Hash
- sha256:91be79494d3eb46183c68dd67453d7661837489dde5d17a4d8b1c63f04201e06
- What it is
- What a remote MCP server returned when asked what it offers: 5 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"city": {
"description": "Optional city to narrow candidates.",
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"domain": {
"description": "Website domain, e.g. 'yourcrew.online'. Provide name and/or domain.",
"maxLength": 160,
"minLength": 4,
"type": "string"
},
"limit": {
"default": 5,
"description": "Max candidates (1-10, default 5).",
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"name": {
"description": "Trade or statutory name (fuzzy), e.g. 'Yourcrew'. Provide name and/or domain.",
"maxLength": 160,
"minLength": 2,
"type": "string"
}
},
"type": "object"
},
"name": "find_agency",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"description": "Agency slug as returned by search_agencies or find_agency.",
"maxLength": 120,
"minLength": 1,
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_agency_profile",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"brief": {
"description": "The buyer's own words (NL or EN, 20-2000 chars). Pass the question, not a summary.",
"maxLength": 2000,
"minLength": 20,
"type": "string"
},
"budget_band": {
"description": "Buyer's budget in EUR. Only excludes agencies whose known rates conflict; most agencies have no known rate.",
"enum": [
"<10k",
"10k-25k",
"25k-50k",
"50k-100k",
"100k+"
],
"type": "string"
},
"city": {
"description": "Exact office city of the agency. For 'near a city' use near_city + within_km instead.",
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"client_orientation": {
"description": "b2b or b2c focus of the agency.",
"enum": [
"b2b",
"b2c"
],
"type": "string"
},
"company_size_band": {
"description": "Size of the buyer's company (employees); matches agencies that target that segment.",
"enum": [
"1-10",
"11-50",
"51-200",
"201-500",
"500+"
],
"type": "string"
},
"limit": {
"default": 10,
"description": "Max results (1-20, default 10).",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"near_city": {
"description": "Center of a radius search: any Dutch city name. Requires within_km.",
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"near_lat": {
"description": "Center latitude of a radius search (alternative to near_city). Requires near_lon + within_km.",
"maximum": 90,
"minimum": -90,
"type": "number"
},
"near_lon": {
"description": "Center longitude of a radius search (alternative to near_city). Requires near_lat + within_km.",
"maximum": 180,
"minimum": -180,
"type": "number"
},
"target_industry": {
"description": "Client vertical the agency serves (e.g. the buyer's own industry). Not the agency's own sector.",
"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"
},
"within_km": {
"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,
"maximum": 250,
"type": "number"
}
},
"required": [
"brief"
],
"type": "object"
},
"name": "match_brief",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"budget_band": {
"description": "Buyer's budget in EUR. Only excludes agencies whose known rates conflict; most agencies have no known rate.",
"enum": [
"<10k",
"10k-25k",
"25k-50k",
"50k-100k",
"100k+"
],
"type": "string"
},
"city": {
"description": "Exact office city of the agency. For 'near a city' use near_city + within_km instead.",
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"client_orientation": {
"description": "b2b or b2c focus of the agency.",
"enum": [
"b2b",
"b2c"
],
"type": "string"
},
"company_size_band": {
"description": "Size of the buyer's company (employees); matches agencies that target that segment.",
"enum": [
"1-10",
"11-50",
"51-200",
"201-500",
"500+"
],
"type": "string"
},
"limit": {
"default": 10,
"description": "Max results (1-20, default 10).",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"near_city": {
"description": "Center of a radius search: any Dutch city name. Requires within_km.",
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"near_lat": {
"description": "Center latitude of a radius search (alternative to near_city). Requires near_lon + within_km.",
"maximum": 90,
"minimum": -90,
"type": "number"
},
"near_lon": {
"description": "Center longitude of a radius search (alternative to near_city). Requires near_lat + within_km.",
"maximum": 180,
"minimum": -180,
"type": "number"
},
"specialisms": {
"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.",
"items": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"maxItems": 5,
"type": "array"
},
"target_industry": {
"description": "Client vertical the agency serves (e.g. the buyer's own industry). Not the agency's own sector.",
"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"
},
"within_km": {
"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,
"maximum": 250,
"type": "number"
}
},
"type": "object"
},
"name": "search_agencies",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"agencySize": {
"description": "Preferred agency size in employees.",
"enum": [
"1-9",
"10-49",
"50-249",
"250+",
"geen-voorkeur"
],
"type": "string"
},
"budgetBand": {
"description": "Buyer's budget in EUR.",
"enum": [
"<10k",
"10k-25k",
"25k-50k",
"50k-100k",
"100k+"
],
"type": "string"
},
"clientOrientation": {
"description": "Optional: does the buyer sell b2b, b2c or both.",
"enum": [
"b2b",
"b2c",
"both",
"geen-voorkeur"
],
"type": "string"
},
"companySize": {
"description": "Buyer's company size in employees.",
"enum": [
"1-10",
"11-50",
"51-200",
"201-500",
"500+",
"geen-voorkeur"
],
"type": "string"
},
"contactCompany": {
"description": "Buyer's company name.",
"maxLength": 160,
"minLength": 1,
"type": "string"
},
"contactEmail": {
"description": "Buyer's business e-mail (no disposable domains).",
"format": "email",
"maxLength": 254,
"type": "string"
},
"contactName": {
"description": "Buyer's full name.",
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"contactPhone": {
"description": "Optional phone number (digits, spaces, +, (), -).",
"maxLength": 40,
"pattern": "^[\\d\\s()+-]*$",
"type": "string"
},
"culturalFit": {
"description": "Three 0-10 sliders: [data-driven, specialist, hands-on]. Use [5,5,5] when unknown.",
"items": [
{
"maximum": 10,
"minimum": 0,
"type": "number"
},
{
"maximum": 10,
"minimum": 0,
"type": "number"
},
{
"maximum": 10,
"minimum": 0,
"type": "number"
}
],
"maxItems": 3,
"minItems": 3,
"type": "array"
},
"industry": {
"description": "Buyer's industry (a value from categories://list doelgroep_options, or 'Anders').",
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"industryFreetext": {
"description": "Required only when industry is 'Anders': the buyer's industry in their own words.",
"maxLength": 80,
"type": "string"
},
"selectedAgencySlugs": {
"description": "1-3 agency slugs (as returned by search_agencies or find_agency) the buyer wants to receive this RFQ.",
"items": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"maxItems": 3,
"minItems": 1,
"type": "array"
},
"specialisms": {
"description": "1-5 specialism slugs the buyer needs (see the categories://list resource).",
"items": {
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"type": "array"
},
"specialistFullServiceSlider": {
"description": "0 = full-service agency, 10 = niche specialist.",
"maximum": 10,
"minimum": 0,
"type": "integer"
},
"timeline": {
"description": "When the work should start.",
"enum": [
"asap",
"1-3mnd",
"3-6mnd",
"flexibel"
],
"type": "string"
},
"toelichting": {
"description": "Optional free-text brief for the agencies (Dutch or English).",
"maxLength": 2000,
"type": "string"
},
"website": {
"description": "Leave empty. Anti-spam honeypot field.",
"maxLength": 500,
"type": "string"
}
},
"required": [
"specialisms",
"industry",
"companySize",
"agencySize",
"specialistFullServiceSlider",
"culturalFit",
"budgetBand",
"timeline",
"contactEmail",
"contactName",
"contactCompany",
"selectedAgencySlugs"
],
"type": "object"
},
"name": "submit_rfq",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:91be79494d3eb46183c68dd67453d7661837489dde5d17a4d8b1c63f04201e06 | sha256sum