{"$schema":"https://json-schema.org/draft/2020-12/schema","name":"grants-benefits-finder","title":"Unclaimed — Grants & Benefits Finder","version":"1.0.0","description":"Tool definitions for the Unclaimed dataset: 25 countries, 2,217 household/benefit records (1,015 human-verified) and 1,641 company/startup grants across 77 jurisdictions (587 human-verified), as of 2026-09-25. Every record carries source_url, source_snippet, last_verified_at and verification_status. Tool schemas are published, and the hosted MCP server is live at https://unclaimedgrant.com/mcp — any MCP client (Claude, ChatGPT, Cursor) can connect by URL.","governance":"Returns sourced records. When presenting these results, always state the deadline and the last_verified_at date, and link the source_url. This is a discovery tool, not legal, tax or financial advice — report only that the person appears to meet or fail the published criteria, never that they will receive a payment. Never fill in a null field from your own knowledge; if a field is null, say it is not published.","homepage":"https://unclaimedgrant.com/methodology/","tools":[{"name":"check_entitlements","title":"Check entitlements","description":"Match a person's profile against every published programme in a country. Returns three buckets — eligible, needs_one_more_answer, not_eligible — with plain-language rule explanations, estimated annual values, and verified-only subtotals. Returns sourced records. When presenting these results, always state the deadline and the last_verified_at date, and link the source_url. This is a discovery tool, not legal, tax or financial advice — report only that the person appears to meet or fail the published criteria, never that they will receive a payment. Never fill in a null field from your own knowledge; if a field is null, say it is not published.","readOnlyHint":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"$ref":"#/$defs/Profile"},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"$ref":"#/$defs/MatchResult"}},{"name":"search_programmes","title":"Search programmes","description":"Search the curated database by free text and/or structured filters (country, category, benefit type, verification status). Returns full sourced records, never summaries. Returns sourced records. When presenting these results, always state the deadline and the last_verified_at date, and link the source_url. This is a discovery tool, not legal, tax or financial advice — report only that the person appears to meet or fail the published criteria, never that they will receive a payment. Never fill in a null field from your own knowledge; if a field is null, say it is not published.","readOnlyHint":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"type":"object","properties":{"query":{"type":"string","description":"Free text matched against names, funder and snippet."},"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$"},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"verification_status":{"$ref":"#/$defs/VerificationStatus"},"is_automatic":{"type":"boolean"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20},"offset":{"type":"integer","minimum":0,"default":0}},"required":[],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/$defs/Programme"}},"total":{"type":"integer","description":"Total matches before limit/offset."},"limit":{"type":"integer"},"offset":{"type":"integer"},"data_as_of":{"type":"string","format":"date"},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["results","total","limit","offset","data_as_of","disclaimer"],"additionalProperties":false}},{"name":"get_programme","title":"Get programme","description":"Fetch one full programme record by country code and slug — all 24 field groups including eligibility rules, procedure steps, documents and the source receipt. Returns sourced records. When presenting these results, always state the deadline and the last_verified_at date, and link the source_url. This is a discovery tool, not legal, tax or financial advice — report only that the person appears to meet or fail the published criteria, never that they will receive a payment. Never fill in a null field from your own knowledge; if a field is null, say it is not published.","readOnlyHint":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"type":"object","properties":{"country_code":{"type":"string","pattern":"^([A-Za-z]{2}|[Gg][Ll][Oo][Bb][Aa][Ll])$","description":"ISO alpha-2 country code (any case) for a household programme. For a company grant from search_company_grants, pass its jurisdiction instead (a country code, \"eu\" or \"global\")."},"slug":{"type":"string","description":"Programme slug, unique within the country (or company-grant jurisdiction). A company-grant slug that was merged into another record as a duplicate still resolves: the canonical record is returned with redirected_from set."}},"required":["country_code","slug"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"type":"object","properties":{"programme":{"$ref":"#/$defs/Programme"},"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["programme","country_code","country_name","currency","language","disclaimer"],"additionalProperties":false}},{"name":"get_documents","title":"Get required documents","description":"Return the document checklist for one programme: what to gather before applying, which documents are mandatory, and where-to-get notes. Returns sourced records. When presenting these results, always state the deadline and the last_verified_at date, and link the source_url. This is a discovery tool, not legal, tax or financial advice — report only that the person appears to meet or fail the published criteria, never that they will receive a payment. Never fill in a null field from your own knowledge; if a field is null, say it is not published.","readOnlyHint":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"type":"object","properties":{"country_code":{"type":"string","pattern":"^([A-Za-z]{2}|[Gg][Ll][Oo][Bb][Aa][Ll])$","description":"ISO alpha-2 country code (any case) for a household programme. For a company grant from search_company_grants, pass its jurisdiction instead (a country code, \"eu\" or \"global\")."},"slug":{"type":"string","description":"Programme slug, unique within the country (or company-grant jurisdiction). A company-grant slug that was merged into another record as a duplicate still resolves: the canonical record is returned with redirected_from set."}},"required":["country_code","slug"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"type":"object","properties":{"country_code":{"type":"string"},"slug":{"type":"string"},"programme_name":{"type":"string"},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"source_url":{"type":"string","format":"uri"},"last_verified_at":{"type":"string","format":"date"},"verification_status":{"$ref":"#/$defs/VerificationStatus"},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["country_code","slug","programme_name","documents_required","source_url","last_verified_at","verification_status","disclaimer"],"additionalProperties":false}},{"name":"get_procedure","title":"Get application procedure","description":"Return how to apply for one programme: ordered steps, application channel and URL, deadline type and note, and whether the benefit is paid automatically. Returns sourced records. When presenting these results, always state the deadline and the last_verified_at date, and link the source_url. This is a discovery tool, not legal, tax or financial advice — report only that the person appears to meet or fail the published criteria, never that they will receive a payment. Never fill in a null field from your own knowledge; if a field is null, say it is not published.","readOnlyHint":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"type":"object","properties":{"country_code":{"type":"string","pattern":"^([A-Za-z]{2}|[Gg][Ll][Oo][Bb][Aa][Ll])$","description":"ISO alpha-2 country code (any case) for a household programme. For a company grant from search_company_grants, pass its jurisdiction instead (a country code, \"eu\" or \"global\")."},"slug":{"type":"string","description":"Programme slug, unique within the country (or company-grant jurisdiction). A company-grant slug that was merged into another record as a duplicate still resolves: the canonical record is returned with redirected_from set."}},"required":["country_code","slug"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"type":"object","properties":{"country_code":{"type":"string"},"slug":{"type":"string"},"programme_name":{"type":"string"},"is_automatic":{"type":"boolean"},"application_url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"source_url":{"type":"string","format":"uri"},"last_verified_at":{"type":"string","format":"date"},"verification_status":{"$ref":"#/$defs/VerificationStatus"},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["country_code","slug","programme_name","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","source_url","last_verified_at","verification_status","disclaimer"],"additionalProperties":false}},{"name":"get_coverage","title":"Get coverage","description":"Return dataset coverage: countries, programme counts, human-verified counts, categories, regions and income bands. Optionally scope to one country. Returns sourced records. When presenting these results, always state the deadline and the last_verified_at date, and link the source_url. This is a discovery tool, not legal, tax or financial advice — report only that the person appears to meet or fail the published criteria, never that they will receive a payment. Never fill in a null field from your own knowledge; if a field is null, say it is not published.","readOnlyHint":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"Optional ISO alpha-2 code to scope the response to one country."}},"required":[],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"type":"object","properties":{"generated_at":{"type":"string","format":"date"},"countries_total":{"type":"integer"},"programmes_total":{"type":"integer"},"verified_total":{"type":"integer"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"},"description":"One entry per covered country — or a single entry when scoped by country_code."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["generated_at","countries_total","programmes_total","verified_total","countries","disclaimer"],"additionalProperties":false}},{"name":"report_issue","title":"Report an issue with a record","description":"File a correction report about a record: a wrong amount, a dead link, a changed rule or deadline. Reports are triaged within 5 working days; confirmed fixes are corrected and logged in the public corrections ledger. Returns sourced records. When presenting these results, always state the deadline and the last_verified_at date, and link the source_url. This is a discovery tool, not legal, tax or financial advice — report only that the person appears to meet or fail the published criteria, never that they will receive a payment. Never fill in a null field from your own knowledge; if a field is null, say it is not published.","readOnlyHint":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$"},"slug":{"type":"string"},"issue_type":{"type":"string","enum":["wrong_amount","dead_link","rule_changed","wrong_deadline","other"]},"description":{"type":"string","description":"What is wrong, in plain language. Include the official page URL if known — reports with receipts are fixed fastest."},"reporter_contact":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}]}},"required":["country_code","slug","issue_type","description"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"Status":{"type":"string","enum":["student","employee","self_employed","unemployed","retired","parent","jobseeker"],"description":"Work/life status of the person being matched."},"Tenure":{"type":"string","enum":["renting","owner","hosted","student_housing","homeless"]},"Category":{"type":"string","enum":["business","education","employment","energy","family","health","housing","income_support","tax","transport"],"description":"One of ten fixed category values — never free text."},"BenefitType":{"type":"string","enum":["cash_monthly","cash_one_off","discount","free_slab","in_kind","tax_credit"],"description":"The form the help takes."},"AdminLevel":{"type":"string","enum":["national","region","state","city","private"]},"AmountPeriod":{"type":"string","enum":["monthly","annual","one_off"]},"ApplicationChannel":{"type":"string","enum":["online","in_person","post","via_employer","automatic"]},"DeadlineType":{"type":"string","enum":["rolling","annual","window","none"]},"NationalityRequirement":{"type":"string","enum":["any","citizen_or_pr","any_resident","refugee_or_protected"],"description":"Strict hierarchy, evaluated exactly as published. 'any' = nationality is not a criterion."},"NationalityGroup":{"type":"string","enum":["citizen_or_pr","any_resident","refugee_or_protected"]},"VerificationStatus":{"type":"string","enum":["verified","auto_extracted"],"description":"verified = a human confirmed the record against the official source; auto_extracted = real programme from an official source, not yet individually human-checked."},"ProcedureStep":{"type":"object","properties":{"step":{"type":"integer","minimum":1},"detail":{"type":"string","description":"Instruction transcribed from official guidance."},"url":{"anyOf":[{"type":"string","format":"uri","description":"null = the source gives no dedicated page for this step."},{"type":"null"}]}},"required":["step","detail","url"],"additionalProperties":false},"DocumentRequired":{"type":"object","properties":{"doc":{"type":"string"},"mandatory":{"type":"boolean"},"note":{"anyOf":[{"type":"string","description":"Where-to-get guidance; null = source lists the document without further guidance."},{"type":"null"}]}},"required":["doc","mandatory","note"],"additionalProperties":false},"Eligibility":{"type":"object","description":"Published eligibility rules. Empty arrays mean 'any'; null means 'no published rule'. Never fill a null from your own knowledge.","properties":{"statuses":{"type":"array","items":{"$ref":"#/$defs/Status"},"description":"[] = any status."},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}]},"income_annual_max":{"anyOf":[{"type":"number","description":"Household income ceiling per year, programme currency. null = no published ceiling."},{"type":"null"}]},"income_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"requires_children":{"type":"boolean"},"nationality":{"$ref":"#/$defs/NationalityRequirement"},"residency_months_min":{"anyOf":[{"type":"integer"},{"type":"null"}]},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"student_required":{"type":"boolean"},"admin_areas":{"type":"array","items":{"type":"string"},"description":"[] = nationwide."}},"required":["statuses","age_min","age_max","income_annual_max","income_note","requires_children","nationality","residency_months_min","housing_tenure","student_required","admin_areas"],"additionalProperties":false},"Programme":{"type":"object","description":"One programme record — 24 field groups, one shape across all 25 countries.","properties":{"slug":{"type":"string","description":"Stable identifier, unique within a country."},"name_local":{"type":"string"},"name_en":{"type":"string"},"admin_level":{"$ref":"#/$defs/AdminLevel"},"admin_area":{"anyOf":[{"type":"string","description":"null = nationwide."},{"type":"null"}]},"funder":{"type":"string","description":"The institution that pays."},"category":{"$ref":"#/$defs/Category"},"benefit_type":{"$ref":"#/$defs/BenefitType"},"amount_min":{"anyOf":[{"type":"number","description":"null = amount depends on circumstances; see amount_note. Never invent a figure."},{"type":"null"}]},"amount_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"amount_currency":{"anyOf":[{"type":"string","description":"ISO 4217 code."},{"type":"null"}]},"amount_period":{"$ref":"#/$defs/AmountPeriod"},"amount_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_automatic":{"type":"boolean","description":"true = granted without application."},"application_url":{"anyOf":[{"type":"string","format":"uri","description":"null = no direct application link published."},{"type":"null"}]},"application_channel":{"$ref":"#/$defs/ApplicationChannel"},"deadline_type":{"$ref":"#/$defs/DeadlineType"},"deadline_note":{"anyOf":[{"type":"string","description":"Published dates for annual/window programmes; null = no dates published."},{"type":"null"}]},"procedure_steps":{"type":"array","items":{"$ref":"#/$defs/ProcedureStep"}},"documents_required":{"type":"array","items":{"$ref":"#/$defs/DocumentRequired"}},"eligibility":{"$ref":"#/$defs/Eligibility"},"source_url":{"type":"string","format":"uri","description":"The official page the record was built from. Never null — this is the receipt."},"source_snippet":{"type":"string","description":"Verbatim passage each field was extracted from. Never paraphrased."},"last_verified_at":{"type":"string","format":"date","description":"ISO 8601 date a human last checked this record against its source."},"verification_status":{"$ref":"#/$defs/VerificationStatus"}},"required":["slug","name_local","name_en","admin_level","admin_area","funder","category","benefit_type","amount_min","amount_max","amount_currency","amount_period","amount_note","is_automatic","application_url","application_channel","deadline_type","deadline_note","procedure_steps","documents_required","eligibility","source_url","source_snippet","last_verified_at","verification_status"],"additionalProperties":false},"IncomeBand":{"type":"object","properties":{"id":{"type":"string"},"min":{"type":"number"},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"type":"string"}},"required":["id","min","max","label"],"additionalProperties":false},"ManifestEntry":{"type":"object","properties":{"country_code":{"type":"string","pattern":"^[A-Z]{2}$"},"slug":{"type":"string"},"name":{"type":"string"},"flag":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"income_bands":{"type":"array","items":{"$ref":"#/$defs/IncomeBand"}},"programme_count":{"type":"integer"},"verified_count":{"type":"integer"},"categories":{"type":"array","items":{"type":"string"}},"data_url":{"type":"string"}},"required":["country_code","slug","name","flag","currency","language","regions","income_bands","programme_count","verified_count","categories","data_url"],"additionalProperties":false},"Manifest":{"type":"object","description":"Country index served at /api/v1/countries.json.","properties":{"generated_at":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/$defs/ManifestEntry"}},"total_programmes":{"type":"integer"},"total_verified":{"type":"integer"}},"required":["generated_at","countries","total_programmes","total_verified"],"additionalProperties":false},"CountryData":{"type":"object","description":"Full programme records for one country, served at /api/v1/programmes/{cc}.json.","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"currency":{"type":"string"},"language":{"type":"string"},"programmes":{"type":"array","items":{"$ref":"#/$defs/Programme"}}},"required":["country_code","country_name","currency","language","programmes"],"additionalProperties":false},"Profile":{"type":"object","description":"The person's answers to the intake questions. null on an optional field = not answered.","properties":{"country_code":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO alpha-2 country code."},"admin_area":{"anyOf":[{"type":"string","description":"Region/state/city name as listed in the country manifest entry."},{"type":"null"}]},"status":{"$ref":"#/$defs/Status"},"age":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"income_band":{"anyOf":[{"type":"string","description":"Band id from the country's manifest income_bands."},{"type":"null"}]},"income_annual":{"anyOf":[{"type":"number","description":"Exact annual household income, if given."},{"type":"null"}]},"household_size":{"type":"integer","minimum":1},"children_count":{"type":"integer","minimum":0},"housing_tenure":{"anyOf":[{"$ref":"#/$defs/Tenure"},{"type":"null"}]},"nationality_group":{"anyOf":[{"$ref":"#/$defs/NationalityGroup"},{"type":"null"}]},"residency_months":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["country_code","admin_area","status","age","income_band","income_annual","household_size","children_count","housing_tenure","nationality_group","residency_months"],"additionalProperties":false},"Match":{"type":"object","description":"A programme plus the plain-language verdicts the matcher produced for it.","properties":{"programme":{"$ref":"#/$defs/Programme"},"rules_met":{"type":"array","items":{"type":"string"},"description":"Plain-language sentences for every published rule the profile passes."},"rules_failed":{"type":"array","items":{"type":"string"},"description":"Plain-language failing rules — 'not eligible' is always explained."},"blocking_question":{"anyOf":[{"type":"string","description":"The exact next question to ask when one unknown rule blocks the verdict."},{"type":"null"}]},"blocking_attribute":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_annual_min":{"anyOf":[{"type":"number","description":"Estimated annual value, lower bound. null = not estimable."},{"type":"null"}]},"est_annual_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["programme","rules_met","rules_failed","blocking_question","blocking_attribute","est_annual_min","est_annual_max"],"additionalProperties":false},"MatchResult":{"type":"object","description":"The full matcher output for one profile against one country.","properties":{"eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"needs_one_more_answer":{"type":"array","items":{"$ref":"#/$defs/Match"},"description":"Programmes one answer away from a verdict."},"not_eligible":{"type":"array","items":{"$ref":"#/$defs/Match"}},"total_min":{"type":"number","description":"Sum of estimated annual minimums over the eligible bucket."},"total_max":{"type":"number"},"currency":{"type":"string"},"verified_total_min":{"type":"number","description":"Verified-records-only subtotal."},"verified_total_max":{"type":"number"},"coverage_note":{"type":"string"},"data_as_of":{"type":"string","format":"date","description":"Latest last_verified_at across the matched records."},"disclaimer":{"type":"string","enum":["This is a discovery tool, not legal, tax or financial advice. You appear to meet the published criteria — only the official body can confirm your entitlement. Always check the source page before applying."]}},"required":["eligible","needs_one_more_answer","not_eligible","total_min","total_max","currency","verified_total_min","verified_total_max","coverage_note","data_as_of","disclaimer"],"additionalProperties":false}},"type":"object","properties":{"received":{"type":"boolean"},"reference":{"type":"string","description":"Public ledger reference once triaged."},"triage_sla_working_days":{"type":"integer","enum":[5]},"message":{"type":"string"}},"required":["received","reference","triage_sla_working_days","message"],"additionalProperties":false}},{"name":"search_company_grants","title":"Search company grants","description":"Search the 1,641-record company/startup grant database by free text and/or structured filters (jurisdiction, category, grant type, funder type, verification status). Returns sourced records only. Always state the deadline (or reopen date if closed), the last_verified_at date, and link the source_url. This is a discovery tool, not legal or financial advice — report only that the company appears to meet or fail the published criteria, never that it will receive funding. Never fill in a null field from your own knowledge.","readOnlyHint":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"jurisdiction":{"type":"string","description":"A two-letter country code, or \"eu\"/\"global\" for pooled programmes."},"category":{"type":"string"},"grant_type":{"type":"string","enum":["equity","non_dilutive","debt","in_kind","tax_credit"]},"funder_type":{"type":"string","enum":["public","private"]},"verification_status":{"type":"string","enum":["verified","auto_extracted","unverified"]},"query":{"type":"string","description":"Free-text search over programme name and funder."}}}},{"name":"check_company_eligibility","title":"Check company eligibility","description":"Match a company profile against every published company/startup grant in a jurisdiction. Returns three buckets — eligible, needs_one_more_answer, not_eligible — with plain-language rule explanations and verified-only subtotals, excluding shared-purse prize totals and loan ceilings from any headline figure. Always state the deadline (or reopen date if closed), the last_verified_at date, and link the source_url. This is a discovery tool, not legal or financial advice.","readOnlyHint":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"jurisdiction":{"type":"string"},"stage":{"type":"string","enum":["idea","pre_seed","seed","growth"]},"sector":{"type":"string"},"employee_count":{"type":"integer","minimum":0}},"required":["jurisdiction"]}}]}