Server definition
- Hash
- sha256:18bf479ed049a6228dcfd0635498d89e7311b8c2a13a26133eb8c6e86cb719a6
- What it is
- What a remote MCP server returned when asked what it offers: 5 tools
The blob, as servednamed by its sha256
{
"instructions": "Hosco's official MCP server — read-only access to Hosco's catalogue of published, non-expired hospitality jobs (hotels, restaurants, F&B, kitchen, housekeeping, reception, sommelier, and similar roles). Hosco's market is Spain, France, Italy, the UK, Switzerland and the UAE — expect jobs from those countries.\n\n`search_jobs_tool` runs a semantic search over OpenAI embeddings stored in Qdrant and accepts free-form natural language queries (e.g. \"experienced sommelier in Paris fine-dining\"). It also supports structured filters: country (ISO-2), city, department (Hosco category code), contract_type (internship | professional | open), experience_years_max, languages (array of ISO codes), posted_after. Use it whenever the user describes what they want in words.\n\n`list_jobs_tool` returns the latest published jobs — use only when the user asks for \"most recent\" with no filtering.\n\n`job_details_tool` takes the slug returned by either tool and returns the full description, requirements, benefits, accommodation, working hours and duration.\n\nEvery result includes a canonical `url` (e.g. https://www.hosco.com/en/job/{slug}) — always link to that exact value. Never construct a job link yourself from the slug, id or title; only the returned `url` is guaranteed to resolve.\n\nSalary in Hosco V2 is a free-text `payrange` field — surface it as-is and do not try to parse a numeric range.\n\nHosco also offers hospitality courses and training programmes. `search_courses_tool` searches that catalogue by free-text query and by category (e.g. bartending, culinary, hospitality-management, languages), language, delivery type (campus, online, both) and price. `course_details_tool` takes a course slug and returns the full description and programme details.\n\nCourse `duration_minutes` is in minutes — convert before quoting it. A `price` of 0 means the course is free, and prices are in the course's own `currency`. `price` is the listed headline price, which providers often set as a member or discounted rate and quote before VAT — the description frequently lists the full tiers. Read it before presenting `price` as what someone will actually pay. As with jobs, always link to the returned course `url` and never build a course link yourself.",
"tools": [
{
"description": "Fetch the full details of a single Hosco course by its slug. Use this after a search result to retrieve the full description, programme details, provider, price, duration, delivery type and languages.",
"inputSchema": {
"properties": {
"locale": {
"description": "Language for the returned course link: en (default), es, fr or it.",
"type": "string"
},
"slug": {
"description": "The course slug, exactly as returned by the search tool.",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "course-details-tool",
"outputSchema": null
},
{
"description": "Fetch the full details of a single Hosco job by its slug or numeric id. Use this after a search/list result to retrieve the full description, requirements, benefits, and all other available fields.",
"inputSchema": {
"properties": {
"id": {
"description": "The numeric job id. Provide either slug or id.",
"type": "integer"
},
"slug": {
"description": "The job slug (preferred lookup key — present in search/list results).",
"type": "string"
}
},
"type": "object"
},
"name": "job-details-tool",
"outputSchema": null
},
{
"description": "List the most recently published Hosco jobs, paginated. Use this when no semantic search is needed — for natural-language search, use the search jobs tool instead.",
"inputSchema": {
"properties": {
"limit": {
"description": "Page size (1–50, default 10).",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"offset": {
"description": "Pagination offset (default 0).",
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"name": "list-jobs-tool",
"outputSchema": null
},
{
"description": "Search Hosco's catalogue of hospitality courses and training programmes (bartending, culinary, hospitality management, languages, revenue management and more). Supports a free-text query plus filters for category, language, learning type and price. Hidden and deleted courses are never returned. Every result carries a canonical `url`.",
"inputSchema": {
"properties": {
"categories": {
"description": "Course category codes, e.g. [\"bartending\"], [\"culinary\",\"pastry\"]. Known codes: culinary, pastry, cruises, oenology, hospitality-management, sales-and-marketing, event-management, languages, revenue-management, reception, bartending, food-and-beverages, spa, tourism, business-skills.",
"items": {
"type": "string"
},
"type": "array"
},
"languages": {
"description": "Language codes the course is taught in, e.g. [\"en\"], [\"es\",\"fr\"].",
"items": {
"type": "string"
},
"type": "array"
},
"learning_types": {
"description": "Delivery: \"campus\" (in person), \"online\", or \"both\".",
"items": {
"type": "string"
},
"type": "array"
},
"limit": {
"description": "Page size (1–50, default 10).",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"locale": {
"description": "Language for the returned course links: en (default), es, fr or it. Match the language the member is writing in.",
"type": "string"
},
"max_price": {
"description": "Maximum price in the course's own currency.",
"minimum": 0,
"type": "integer"
},
"min_price": {
"description": "Minimum price in the course's own currency. Use 0 with max_price 0 for free courses.",
"minimum": 0,
"type": "integer"
},
"offset": {
"description": "Pagination offset (default 0).",
"minimum": 0,
"type": "integer"
},
"order": {
"description": "\"asc\" or \"desc\" (default), used with sort.",
"type": "string"
},
"query": {
"description": "Free-text search over course titles and descriptions, e.g. \"cocktail\", \"revenue management\", \"sommelier\".",
"type": "string"
},
"sort": {
"description": "Order by \"price\" or \"duration\". Omit for the catalogue's default relevance order.",
"type": "string"
}
},
"type": "object"
},
"name": "search-courses-tool",
"outputSchema": null
},
{
"description": "Semantic + structured search over Hosco hospitality jobs. Mirrors the smart filtering and ranking from hosco-v2: hard-excludes private/expired/inactive postings, supports visibility/promotion/external filters, configurable language matching (subset/any/all), and the v2 \"suggested\" ordering (relevance → Hosco-native → VIP → freshness). Returns ranked matches with relevance scores.",
"inputSchema": {
"properties": {
"city": {
"description": "City name (exact match against hosco_location.locality).",
"type": "string"
},
"content_language": {
"description": "Language code the job ad itself is written in (auto-detected), e.g. \"en\", \"fr\". Use this to only show postings the candidate can actually read — unrelated to the languages filter below.",
"type": "string"
},
"contract_type": {
"description": "One of: internship (students only), professional (professionals only), open (both).",
"type": "string"
},
"country": {
"description": "ISO-3166 alpha-2 country code, e.g. FR, GB, ES.",
"type": "string"
},
"department": {
"description": "Hosco category code, e.g. f-b-kitchen, housekeeping, sommelier, reception.",
"type": "string"
},
"experience_years_max": {
"description": "Maximum years of experience the candidate has — only show jobs requiring less than or equal to this.",
"type": "integer"
},
"hide_external": {
"description": "Hide jobs sourced from external aggregators (Hosco-native only).",
"type": "boolean"
},
"languages": {
"description": "Candidate language codes, e.g. [\"en\",\"fr\"]. Matched against the job's mandatory fluency requirement (\"Require fluency in\" in hosco-v2), not the language the ad is written in. Combined with languages_mode.",
"items": {
"type": "string"
},
"type": "array"
},
"languages_mode": {
"description": "How to interpret `languages`: \"all\" (job must require every code; default), \"any\" (job requires at least one of them), \"subset\" (job's required languages must all be in the provided list — i.e. the candidate speaks them all).",
"type": "string"
},
"limit": {
"description": "Page size (1–50, default 10).",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"offset": {
"description": "Pagination offset (default 0).",
"minimum": 0,
"type": "integer"
},
"only_external": {
"description": "Only return jobs sourced from external aggregators.",
"type": "boolean"
},
"posted_after": {
"description": "ISO date; only return jobs published on or after this date.",
"type": "string"
},
"promotion_types": {
"description": "Filter to specific promotion statuses: 0=disabled, 1=prime, 2=lite-basic, 4=lite-full. Status 3 (private) is always excluded.",
"items": {
"type": "integer"
},
"type": "array"
},
"query": {
"description": "Natural-language search (e.g. \"sommelier in Paris fine dining\"). When provided, ranks by semantic similarity. When omitted, returns latest jobs filtered + sorted by the structured options.",
"type": "string"
},
"sort": {
"description": "Ordering: \"suggested\" (default — relevance, then Hosco-native, then VIP, then freshness), \"posted\" (newest activation date), \"update_date\" (most recently updated), \"title\" (alphabetical).",
"type": "string"
},
"visibilities": {
"description": "Visibility tiers to include: public, targeted, lite, prime (private is never returned on this public surface).",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"name": "search-jobs-tool",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:18bf479ed049a6228dcfd0635498d89e7311b8c2a13a26133eb8c6e86cb719a6 | sha256sum