{
	"name": "Backlight.ai Assistant",
	"description": "Beantwoordt vragen over Backlight.ai: diensten, portfolio-cases, prijzen, methodologie en FAQ. Kan ook projectvoorstellen verwerken.",
	"url": "https://mcp.backlight.ai",
	"version": "1.0.0",
	"capabilities": {
		"streaming": true,
		"pushNotifications": false
	},
	"defaultInputModes": [
		"text/plain"
	],
	"defaultOutputModes": [
		"text/plain"
	],
	"skills": [
		{
			"id": "search_docs",
			"name": "search_docs",
			"description": "Returns ranked Backlight.ai site-content sections (search_result blocks with citations) from all site pages: services, pricing, methodology, and legal pages (terms & conditions, privacy policy, cookie policy, security policy, accessibility statement). Call this for free-text questions about what Backlight.ai does, costs, or its policies (e.g. query='wat kost een sprint', query='hoe lang bewaren jullie persoonsgegevens'). For portfolio cases use search_cases; for FAQ use search_faq."
		},
		{
			"id": "search_cases",
			"name": "search_cases",
			"description": "Returns ranked Backlight.ai portfolio cases as CaseSummary objects (slug, title, client, year, sector, summary) using BM25 + Dutch stemming. Call ONCE for ANY query about Backlight.ai's portfolio, projects, clients, or sectors (e.g. sector='overheid'). Do not loop. Returns at most `limit` results (default 10). For full case body use get_case(slug); for general site content use search_docs."
		},
		{
			"id": "semantic_search",
			"name": "semantic_search",
			"description": "Returns ranked Backlight.ai site-content sections (search_result blocks with citations) using embedding-based (vector) retrieval over the case + docs corpus AND the FAQ (matching FAQ entries are cited as /docs/faq#<slug> deep links, mixed into the ranking). Use for conceptual or paraphrased queries where exact-term BM25 overlap is unlikely (e.g. query='hoe werken jullie'). Complements search_docs (BM25 keyword) and search_cases (portfolio). search_faq stays the BM25 keyword tool for FAQ; this is its vector counterpart."
		},
		{
			"id": "get_case",
			"name": "get_case",
			"description": "Returns full CaseDetail for one Backlight.ai case (frontmatter metadata + complete markdown body) by slug. Call this when the user names a specific case and you already know its slug (e.g. slug='kamer-debat-assistent'). If you do not know the slug, call search_cases first. Raises when slug not found."
		},
		{
			"id": "search_faq",
			"name": "search_faq",
			"description": "Returns matching Backlight.ai FAQ entries as FaqItem objects (category, question, answer, homepage, url) ranked by BM25 + Dutch stemming. Each item's `url` is the canonical /docs/faq?fid=<id>#<slug> deep link: cite that exact link when you point to a FAQ, never construct your own. Call this for common-question phrasing about Backlight.ai as a company (e.g. query='hoe werken jullie'). For portfolio cases use search_cases; for in-depth content use search_docs."
		},
		{
			"id": "submit_feedback",
			"name": "submit_feedback",
			"description": "Store visitor feedback about the current conversation. Call this ONLY when the visitor explicitly gives feedback about the chat experience (e.g. what they liked, what was confusing, or a suggestion). Not for general questions -- use search tools for those."
		},
		{
			"id": "list_terms",
			"name": "list_terms",
			"description": "Returns up to 150 Term objects (term + frequency count) derived from the Backlight.ai site corpus. Each Term carries the normalised word and how often it appears (NOT the content that contains it. Call this ONLY when you are unsure which vocabulary the site uses before running search_docs (e.g. starts_with='avg' to confirm whether the site says 'AVG' or 'GDPR', starts_with='sprint' to check the exact pricing term). Do NOT call on every turn or as a warm-up; use search_docs, search_cases, or search_faq for any content question."
		},
		{
			"id": "request_proposal",
			"name": "request_proposal",
			"description": "Writes a proposal-intake record to the Backlight.ai CRM and returns a ProposalTicket (ticket_id). Rate-limited 5/min per IP. Call ONLY when the user explicitly asks to start a project, request a quote, or be contacted (needs domain, contact_email, brief). Do NOT call for info questions; use search_docs instead."
		},
		{
			"id": "query_case_graph",
			"name": "query_case_graph",
			"description": "Filters Backlight.ai portfolio cases by typed graph criteria (technique, sector, orgtype, tier, quality, certification, client, event, tag, partner). All filters are optional; omit to retrieve all cases. A case matches when it satisfies ALL provided filters (AND semantics). Matching is case-insensitive. Returns CaseGraphMatch objects ordered by slug. Use this for structured 'show me government LLM cases' queries; use search_cases for free-text queries."
		}
	]
}
