{"schemaVersion":"1.0","name":"French4PR","slug":"french4pr","website":"https://french4pr.com","category":"education","description":"French4PR lists French test centres, schools and online tutors for Canadian permanent residence. Browse by city and category, and access listings through a free API and MCP server.","capabilities":["llmsTxt documentation","llmsFullTxt documentation"],"aiResources":{"llmsTxt":{"type":"llmsTxt","url":"https://french4pr.com/llms.txt","status":"verified","available":true,"httpStatus":200,"checkedAt":"2026-11-10T22:20:46.049Z","lastSuccessfulAt":"2026-11-10T22:20:46.049Z","contentType":"text/plain; charset=utf-8","contentSize":12254,"estimatedTokens":3062,"tokenMethod":"UTF-16 characters / 4 (approximation)","contentHash":"d23f465681b816405bff7235e26747633077063dc99dea61d6d780fc472d7d90","internalLinks":99,"externalLinks":2,"document":{"h1Count":1,"firstBlockIsH1":true,"title":"French4PR","usefulTitle":true,"headingCount":13,"uniqueHeadingCount":13,"hasSections":true,"orderedHeadings":true,"sectionWithContent":true,"fileListLinks":100,"summaryPresent":true,"contextPresent":true,"validLinks":103,"invalidLinks":0,"duplicateLinks":2,"descriptiveLinks":101,"annotatedLinks":97},"linkHealth":{"eligibleCount":101,"selectedCount":5,"sampledCount":5,"working":4,"broken":0,"unknown":1,"checkedAt":"2026-11-10T22:20:50.377Z","sourceHash":"d23f465681b816405bff7235e26747633077063dc99dea61d6d780fc472d7d90","method":"deterministic sample, at most 5 URLs, at most 2 concurrent hosts, 15s budget","results":[{"url":"https://french4pr.com/newsletter","status":"unknown","httpStatus":null,"reason":"oversized","attempted":true,"checkedAt":"2026-11-10T22:20:50.377Z"},{"url":"https://french4pr.com/guides/how-to-choose-french-provider.md","httpStatus":200,"checkedAt":"2026-11-10T22:20:50.377Z","attempted":true,"status":"working","reason":"http_success"},{"url":"https://french4pr.com/in/gujarat.md","httpStatus":200,"checkedAt":"2026-11-10T22:20:50.377Z","attempted":true,"status":"working","reason":"http_success"},{"url":"https://french4pr.com/category/online-prep.md","httpStatus":200,"checkedAt":"2026-11-10T22:20:50.377Z","attempted":true,"status":"working","reason":"http_success"},{"url":"https://french4pr.com/gb/england/london.md","httpStatus":200,"checkedAt":"2026-11-10T22:20:50.377Z","attempted":true,"status":"working","reason":"http_success"}]},"headings":["French4PR","Countries","Regions","French providers by city","Categories","Free tools","Products","Academy","French for PR guides","About this site","Data sources","API"],"warnings":["2 duplicate documentation links"],"summary":"Documentation sections: French4PR; Countries; Regions; French providers by city; Categories; Free tools.","summarySourceHash":"d23f465681b816405bff7235e26747633077063dc99dea61d6d780fc472d7d90","processingVersion":"2.0","method":"markdown-ast-analysis"},"llmsFullTxt":{"type":"llmsFullTxt","url":"https://french4pr.com/llms-full.txt","status":"verified","available":true,"httpStatus":200,"checkedAt":"2026-11-10T22:20:47.553Z","lastSuccessfulAt":"2026-11-10T22:20:47.553Z","contentType":"text/plain; charset=utf-8","contentSize":17580,"estimatedTokens":4377,"tokenMethod":"UTF-16 characters / 4 (approximation)","contentHash":"1127f09888ba9d4501a4ee2514f0a8eed1b7f411f436798692ba692d0cbed355","internalLinks":38,"externalLinks":31,"document":{"h1Count":1,"firstBlockIsH1":true,"title":"French4PR","usefulTitle":true,"headingCount":62,"uniqueHeadingCount":62,"hasSections":true,"orderedHeadings":true,"sectionWithContent":true,"fileListLinks":42,"summaryPresent":true,"contextPresent":true,"validLinks":71,"invalidLinks":0,"duplicateLinks":2,"descriptiveLinks":40,"annotatedLinks":11},"headings":["French4PR","São Paulo, São Paulo, Brazil","Aliança Francesa de São Paulo","Calgary, Alberta, Canada","Alliance Française Calgary","Edmonton, Alberta, Canada","Alliance Française d'Edmonton","Vancouver, British Columbia, Canada","Alliance Française Vancouver","Winnipeg, Manitoba, Canada","Alliance Française du Manitoba","Halifax, Nova Scotia, Canada"],"warnings":["2 duplicate documentation links"],"summary":"Documentation sections: French4PR; São Paulo, São Paulo, Brazil; Aliança Francesa de São Paulo; Calgary, Alberta, Canada; Alliance Française Calgary; Edmonton, Alberta, Canada.","summarySourceHash":"1127f09888ba9d4501a4ee2514f0a8eed1b7f411f436798692ba692d0cbed355","processingVersion":"2.0","method":"markdown-ast-analysis"},"webmcp":null},"readiness":{"score":100,"version":"2.0","confidence":"medium","components":[{"name":"availability","weight":25,"assessedWeight":25,"points":25,"rules":[{"id":"current_access","label":"Current usable primary file","weight":25,"observation":"Current llms.txt retrieval succeeded (HTTP 200); usable text verified.","points":25}],"explanation":"Current usable primary file: 25/25."},{"name":"structure","weight":25,"assessedWeight":25,"points":25,"rules":[{"id":"title","label":"One project H1 at the beginning","weight":10,"observation":"1 H1 heading(s); starts with H1: yes.","points":10},{"id":"sections","label":"Coherent content sections","weight":5,"observation":"H2 with content: yes; no heading-level jumps: yes.","points":5},{"id":"file_lists","label":"Documentation links organized in lists","weight":5,"observation":"100 valid link occurrence(s) inside Markdown lists.","points":5},{"id":"heading_uniqueness","label":"Non-repeated headings","weight":5,"observation":"13 unique heading(s) out of 13; code examples are excluded.","points":5}],"explanation":"One project H1 at the beginning: 10/10. Coherent content sections: 5/5. Documentation links organized in lists: 5/5. Non-repeated headings: 5/5."},{"name":"links","weight":25,"assessedWeight":25,"points":24.8,"rules":[{"id":"link_syntax","label":"Resolvable HTTP(S) link syntax","weight":5,"observation":"103 valid URL occurrence(s), 0 malformed, unsupported or unresolved.","points":5},{"id":"link_uniqueness","label":"Unique documentation destinations","weight":5,"observation":"101 unique destination(s) from 103 valid occurrence(s).","points":4.9},{"id":"link_labels","label":"Descriptive link labels","weight":2.5,"observation":"101 of 101 unique links have non-placeholder labels. This is a text heuristic, not a semantic guarantee.","points":2.5},{"id":"link_notes","label":"Context beside file links","weight":2.5,"observation":"97 of 101 unique links have notes beside a Markdown list link.","points":2.4},{"id":"link_health","label":"Sampled destination accessibility","weight":10,"observation":"5 of 101 destinations sampled: 4 working, 0 confirmed 404/410, 1 unknown. Only working and confirmed-broken results enter this fraction.","points":10}],"explanation":"Resolvable HTTP(S) link syntax: 5/5. Unique documentation destinations: 4.9/5. Descriptive link labels: 2.5/2.5. Context beside file links: 2.4/2.5. Sampled destination accessibility: 10/10."},{"name":"confidence","weight":15,"assessedWeight":15,"points":15,"rules":[{"id":"verification_age","label":"Age of last successful verification","weight":10,"observation":"Last success: 2026-11-10T22:20:46.049Z. Full points through day 8 (7-day schedule plus 1-day grace), 60% through day 30, 20% thereafter or for an unknown date.","points":10},{"id":"latest_success","label":"Latest primary check succeeded","weight":5,"observation":"Latest primary verification succeeded.","points":5}],"explanation":"Age of last successful verification: 10/10. Latest primary check succeeded: 5/5."},{"name":"metadata","weight":10,"assessedWeight":10,"points":10,"rules":[{"id":"summary","label":"Useful summary blockquote","weight":5,"observation":"A blockquote before the first H2 with at least 20 non-whitespace characters and no placeholder-only text.","points":5},{"id":"context","label":"Useful introductory context","weight":5,"observation":"An introductory paragraph before the first H2 with at least 20 non-whitespace characters and no placeholder-only text. Listing form fields do not earn these points.","points":5}],"explanation":"Useful summary blockquote: 5/5. Useful introductory context: 5/5."}],"earnedPoints":99.8,"assessedWeight":100,"availableWeight":100,"provisional":false,"calculatedAt":"2026-11-10T22:20:56.805Z","lastVerifiedAt":"2026-11-10T22:20:46.049Z","evidence":{"sourceUrl":"https://french4pr.com/llms.txt","contentHash":"d23f465681b816405bff7235e26747633077063dc99dea61d6d780fc472d7d90","processingVersion":"2.0","retrievedAt":"2026-11-10T22:20:46.049Z"},"linkSampling":{"eligibleCount":101,"selectedCount":5,"sampledCount":5,"working":4,"broken":0,"unknown":1,"checkedAt":"2026-11-10T22:20:50.377Z","sourceHash":"d23f465681b816405bff7235e26747633077063dc99dea61d6d780fc472d7d90","method":"deterministic sample, at most 5 URLs, at most 2 concurrent hosts, 15s budget","results":[{"url":"https://french4pr.com/newsletter","status":"unknown","httpStatus":null,"reason":"oversized","attempted":true,"checkedAt":"2026-11-10T22:20:50.377Z"},{"url":"https://french4pr.com/guides/how-to-choose-french-provider.md","httpStatus":200,"checkedAt":"2026-11-10T22:20:50.377Z","attempted":true,"status":"working","reason":"http_success"},{"url":"https://french4pr.com/in/gujarat.md","httpStatus":200,"checkedAt":"2026-11-10T22:20:50.377Z","attempted":true,"status":"working","reason":"http_success"},{"url":"https://french4pr.com/category/online-prep.md","httpStatus":200,"checkedAt":"2026-11-10T22:20:50.377Z","attempted":true,"status":"working","reason":"http_success"},{"url":"https://french4pr.com/gb/england/london.md","httpStatus":200,"checkedAt":"2026-11-10T22:20:50.377Z","attempted":true,"status":"working","reason":"http_success"}]},"warnings":["This measures observable documentation, not model rankings or citation probability.","H1 is the only required section in the llms.txt proposal. Other checks are LLMSList quality preferences; missing optional sections do not make usable text invalid.","Destination accessibility covers a sample of 5 out of 101 unique links, not the entire website."]},"updatedAt":"2026-11-10T22:20:56.806Z"}