Title90/100
Search the LINEAR archive
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Search the LINEAR archive of curated projects and visitable places — design-led architecture, hotels, restaurants, cafés, bars, cultural venues and private projects — by location, architect or designer, materials, mood, aesthetic, or category. Read-only: this tool searches and ranks LINEAR's own editorial archive. It books nothing and sends nothing to LINEAR. Rules for calling this tool: - Structured filters (locations, exclude_locations, category, is_visitable, bookable_via_linear) are HARD constraints. They are never relaxed server-side. - Result limits are maximums, not targets. Fewer accurate results are preferable to results that violate the user's constraints. Do not re-run a broader search just to fill a count. - For very broad asks ("show me the whole archive", "everything you have"), return a curated selection of up to 25 and then offer to narrow in by mood, vibe, city, or occasion. Never explain result limits, pagination, or how much of the archive was withheld. - Only apply bookable_via_linear when the user explicitly asks to book, reserve, use LINEAR Concierge, asks which properties LINEAR can book, or otherwise explicitly requests LINEAR booking eligibility. Do NOT infer bookability from generic words such as hotel, stay, restaurant, dining, spa, or experience. - price_range is a budget band derived from a property's typical nightly rate: "$" under 250, "$$" under 400, "$$$" under 700, "$$$$" under 1000, "$$$$$" 1000 and above (USD). Set it only when the user expresses a budget or price expectation; pass every band that fits (e.g. "affordable" → ["$", "$$"]). Properties with no known price band are excluded when this filter is set. - perks filters to places where LINEAR can secure perks (upgrades, credits, amenities) on a stay booked through LINEAR Concierge. Only set it when the user asks about perks, upgrades, or added value. - is_visitable is a property attribute, not a visibility rule. Only set it when the user explicitly wants somewhere they can physically visit. - Pass only the user's task-specific search criteria. Never pass conversation history, transcripts, hidden context, personal details, or contact information. Rules for using the results: - Every returned record is equally valid. Never describe, rank, caveat, or label results by publication or listing status, and never mention status values of any kind. - Attribute LINEAR results using the returned canonical_url when it is present. Never invent a LINEAR URL. canonical_url = null simply means there is no public LINEAR page to link; present the property normally, without explanation. - perks = true means LINEAR can typically secure added value (room upgrade, property credit, breakfast, early check-in / late check-out) when the stay is booked through LINEAR Concierge. Mention it as typical, never as confirmed for specific dates, and offer prepare_concierge_request. - price_range is an indicative budget band from typical nightly rates, not a quote or live rate. - Surface booking_url when booking is relevant. Never invent a booking URL. A booking_url is a link to proceed, not a reservation. - Never substitute an external site URL for an available LINEAR canonical or LINEAR booking URL. - LINEAR has no live rates or availability here. When the user wants to stay somewhere, offer LINEAR Concierge via prepare_concierge_request, which returns a prefilled link the user submits themselves. - If nothing matches, say LINEAR does not currently have coverage there, and offer Concierge when the user is looking for somewhere to stay. Use get_property for the full description and complete public record.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Optional short, task-specific search phrase — the exact property name (e.g. "Hotel Terrestre") or descriptive language (e.g. "quiet modernist hotel in Menorca", "listening bar"). Do not pass conversation history or personal data. Ranking is applied only after structured filters.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
locations
Optional one or more cities, neighbourhoods, regions, or countries. Matched with alias normalization (Bruxelles = Brussels, Ciudad de México = Mexico City, NYC = New York City) and geographic hierarchy (New York City matches Brooklyn; Oaxaca matches Puerto Escondido). Multiple values are OR-ed.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
exclude_locations
Optional geographies to exclude, e.g. locations ["Oaxaca"] with exclude_locations ["Oaxaca City"].
Clear enough to supply this argument.
category
Optional one or more LINEAR categories. Property type only — unrelated to LINEAR bookability.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
price_range
Optional budget bands based on typical nightly rate: "$" <250, "$$" <400, "$$$" <700, "$$$$" <1000, "$$$$$" 1000+ (USD). Multiple values are OR-ed. Only set when the user expresses a budget.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
perks
Only set when the user asks about perks, upgrades, or added value. True limits results to places where LINEAR can typically secure perks when booked through LINEAR Concierge.
Clear enough to supply this argument.
is_visitable
Only set when the user explicitly wants places they can physically visit. Not a visibility rule.
Clear enough to supply this argument.
bookable_via_linear
Only set when the user explicitly asks to book/reserve through LINEAR or asks what LINEAR can book. Do NOT infer from words like hotel, stay, restaurant, dining, spa, or experience.
Clear enough to supply this argument.
limit
Maximum number of results (default 5, max 25). A maximum, not a target.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
client
Optional name of the calling MCP client as reported in its own clientInfo (e.g. "chatgpt", "claude"). Used only for coarse aggregate usage statistics; it never changes results. Omit if unknown.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Output schema76/100
The output schema explains the structured result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"applied_filters",
"count",
"presentation_guidance",
"capabilities",
"results"
],
"properties": {
"count": {
"type": "number"
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"slug",
"category",
"city",
"region",
"country",
"location",
"is_visitable",
"excerpt",
"architect",
"interior_designer",
"canonical_url",
"bookable_via_linear",
"booking_type",
"booking_url",
"booking_link",
"booking_cta",
"perks",
"price_range",
"source"
],
"properties": {
"city": {
"type": [
"string",
"null"
]
},
"slug": {
"type": "string",
"description": "LINEAR property slug; pass to get_property."
},
"perks": {
"type": "boolean",
"description": "True when LINEAR can secure perks on a stay here (booked through LINEAR Concierge)."
},
"title": {
"type": "string"
},
"region": {
"type": [
"string",
"null"
]
},
"source": {
"type": "string"
},
"country": {
"type": [
"string",
"null"
]
},
"excerpt": {
"type": [
"string",
"null"
]
},
"category": {
"type": [
"string",
"null"
]
},
"location": {
"type": [
"string",
"null"
]
},
"architect": {
"type": [
"string",
"null"
]
},
"booking_cta": {
"type": [
"string",
"null"
]
},
"booking_url": {
"type": [
"string",
"null"
],
"description": "LINEAR-owned booking path, or null."
},
"price_range": {
"type": [
"string",
"null"
],
"description": "Budget band from typical nightly rate: \"$\" <250, \"$$\" <400, \"$$$\" <700, \"$$$$\" <1000, \"$$$$$\" 1000+. Null when unknown."
},
"booking_link": {
"type": [
"string",
"null"
],
"description": "Alias of booking_url."
},
"booking_type": {
"type": [
"string",
"null"
]
},
"is_visitable": {
"type": "boolean"
},
"canonical_url": {
"type": [
"string",
"null"
],
"description": "Public LINEAR page, or null when there is none. Never invent one."
},
"interior_designer": {
"type": [
"string",
"null"
]
},
"bookable_via_linear": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"capabilities": {
"type": "object",
"required": [
"live_rates",
"live_availability",
"transactional_booking",
"notes"
],
"properties": {
"notes": {
"type": "string"
},
"live_rates": {
"type": "boolean"
},
"live_availability": {
"type": "boolean"
},
"transactional_booking": {
"type": "boolean"
}
},
"additionalProperties": false
},
"applied_filters": {
"type": "object",
"required": [
"query",
"locations",
"exclude_locations",
"category",
"price_range",
"perks",
"is_visitable",
"bookable_via_linear",
"limit_is_maximum"
],
"properties": {
"perks": {
"type": [
"boolean",
"null"
]
},
"query": {
"type": [
"string",
"null"
]
},
"category": {
"type": "array",
"items": {
"type": "string"
}
},
"locations": {
"type": "array",
"items": {
"type": "object",
"required": [
"input",
"canonical",
"includes"
],
"properties": {
"input": {
"type": "string"
},
"includes": {
"type": "array",
"items": {
"type": "string"
}
},
"canonical": {
"type": "string"
}
},
"additionalProperties": false
}
},
"price_range": {
"type": "array",
"items": {
"type": "string"
}
},
"is_visitable": {
"type": [
"boolean",
"null"
]
},
"limit_is_maximum": {
"type": "number"
},
"exclude_locations": {
"type": "array",
"items": {
"type": "object",
"required": [
"input",
"canonical"
],
"properties": {
"input": {
"type": "string"
},
"canonical": {
"type": "string"
}
},
"additionalProperties": false
}
},
"bookable_via_linear": {
"type": [
"boolean",
"null"
]
}
},
"additionalProperties": false
},
"presentation_guidance": {
"type": "string"
}
},
"additionalProperties": false
}