french4pr.com
French4PR
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.
french4pr.com
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.
Submitted URLs are declarations until checked. Verification inspects published content and does not execute third-party tools.
1 duplicate documentation links
The score measures observable documentation quality. Each component below lists its earned points, exact checks, and source observations. It is not a prediction of AI rankings or citations.
Overall readiness
Confidence: medium· V2
How this score is calculated
round(99.85 ÷ 100 × 100) = 100/100
99.85 points earned out of 100 assessed. All 100 available points were assessed. The checks below show each result. Optional integrations and file size earn no extra points.
Full scoring rules and worked exampleCurrent usable primary file: 25/25.
Current llms.txt retrieval succeeded (HTTP 200); usable text verified.
llms.txt: Documentation sections: French4PR; Countries; Regions; French providers by city; Categories; Free tools. Derived from headings; source checked 2026-11-03.
llms-full.txt: 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. Derived from headings; source checked 2026-11-03.
Listing updated: . Machine-readable profile (JSON)
{
"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-03T22:17:31.740Z",
"lastSuccessfulAt": "2026-11-03T22:17:31.740Z",
"contentType": "text/plain; charset=utf-8",
"contentSize": 11187,
"estimatedTokens": 2795,
"tokenMethod": "UTF-16 characters / 4 (approximation)",
"contentHash": "e312fbab6c27b709cffb3b71c1304a80937a476ff2cc28a6992c522e7d885181",
"internalLinks": 96,
"externalLinks": 2,
"document": {
"h1Count": 1,
"firstBlockIsH1": true,
"title": "French4PR",
"usefulTitle": true,
"headingCount": 12,
"uniqueHeadingCount": 12,
"hasSections": true,
"orderedHeadings": true,
"sectionWithContent": true,
"fileListLinks": 96,
"summaryPresent": true,
"contextPresent": true,
"validLinks": 99,
"invalidLinks": 0,
"duplicateLinks": 1,
"descriptiveLinks": 98,
"annotatedLinks": 94
},
"linkHealth": {
"eligibleCount": 98,
"selectedCount": 5,
"sampledCount": 5,
"working": 3,
"broken": 0,
"unknown": 2,
"checkedAt": "2026-11-03T22:17:37.253Z",
"sourceHash": "e312fbab6c27b709cffb3b71c1304a80937a476ff2cc28a6992c522e7d885181",
"method": "deterministic sample, at most 5 URLs, at most 2 concurrent hosts, 15s budget",
"results": [
{
"url": "https://french4pr.com/ng/lagos/lagos.md",
"httpStatus": 200,
"checkedAt": "2026-11-03T22:17:37.253Z",
"attempted": true,
"status": "working",
"reason": "http_success"
},
{
"url": "https://french4pr.com/ma/casablanca-settat.md",
"httpStatus": 200,
"checkedAt": "2026-11-03T22:17:37.253Z",
"attempted": true,
"status": "working",
"reason": "http_success"
},
{
"url": "https://french4pr.com/ca/alberta/edmonton.md",
"status": "unknown",
"httpStatus": null,
"reason": "timeout",
"attempted": true,
"checkedAt": "2026-11-03T22:17:37.253Z"
},
{
"url": "https://french4pr.com/ph/metro-manila.md",
"httpStatus": 200,
"checkedAt": "2026-11-03T22:17:37.253Z",
"attempted": true,
"status": "working",
"reason": "http_success"
},
{
"url": "https://french4pr.com/products",
"status": "unknown",
"httpStatus": null,
"reason": "oversized",
"attempted": true,
"checkedAt": "2026-11-03T22:17:37.253Z"
}
]
},
"headings": [
"French4PR",
"Countries",
"Regions",
"French providers by city",
"Categories",
"Free tools",
"Products",
"French for PR guides",
"About this site",
"Data sources",
"API",
"Optional"
],
"warnings": [
"1 duplicate documentation links"
],
"summary": "Documentation sections: French4PR; Countries; Regions; French providers by city; Categories; Free tools.",
"summarySourceHash": "e312fbab6c27b709cffb3b71c1304a80937a476ff2cc28a6992c522e7d885181",
"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-03T22:17:35.020Z",
"lastSuccessfulAt": "2026-11-03T22:17:35.020Z",
"contentType": "text/plain; charset=utf-8",
"contentSize": 16513,
"estimatedTokens": 4111,
"tokenMethod": "UTF-16 characters / 4 (approximation)",
"contentHash": "ea3ccf0727b46dae4ff3bb4a8ca66e12762d836ca03d8e056689cd34fba158bd",
"internalLinks": 35,
"externalLinks": 31,
"document": {
"h1Count": 1,
"firstBlockIsH1": true,
"title": "French4PR",
"usefulTitle": true,
"headingCount": 61,
"uniqueHeadingCount": 61,
"hasSections": true,
"orderedHeadings": true,
"sectionWithContent": true,
"fileListLinks": 38,
"summaryPresent": true,
"contextPresent": true,
"validLinks": 67,
"invalidLinks": 0,
"duplicateLinks": 1,
"descriptiveLinks": 37,
"annotatedLinks": 8
},
"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": [
"1 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": "ea3ccf0727b46dae4ff3bb4a8ca66e12762d836ca03d8e056689cd34fba158bd",
"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": "96 valid link occurrence(s) inside Markdown lists.",
"points": 5
},
{
"id": "heading_uniqueness",
"label": "Non-repeated headings",
"weight": 5,
"observation": "12 unique heading(s) out of 12; 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.85,
"rules": [
{
"id": "link_syntax",
"label": "Resolvable HTTP(S) link syntax",
"weight": 5,
"observation": "99 valid URL occurrence(s), 0 malformed, unsupported or unresolved.",
"points": 5
},
{
"id": "link_uniqueness",
"label": "Unique documentation destinations",
"weight": 5,
"observation": "98 unique destination(s) from 99 valid occurrence(s).",
"points": 4.95
},
{
"id": "link_labels",
"label": "Descriptive link labels",
"weight": 2.5,
"observation": "98 of 98 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": "94 of 98 unique links have notes beside a Markdown list link.",
"points": 2.4
},
{
"id": "link_health",
"label": "Sampled destination accessibility",
"weight": 10,
"observation": "5 of 98 destinations sampled: 3 working, 0 confirmed 404/410, 2 unknown. Only working and confirmed-broken results enter this fraction.",
"points": 10
}
],
"explanation": "Resolvable HTTP(S) link syntax: 5/5. Unique documentation destinations: 4.95/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-03T22:17:31.740Z. 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.85,
"assessedWeight": 100,
"availableWeight": 100,
"provisional": false,
"calculatedAt": "2026-11-03T22:17:50.762Z",
"lastVerifiedAt": "2026-11-03T22:17:31.740Z",
"evidence": {
"sourceUrl": "https://french4pr.com/llms.txt",
"contentHash": "e312fbab6c27b709cffb3b71c1304a80937a476ff2cc28a6992c522e7d885181",
"processingVersion": "2.0",
"retrievedAt": "2026-11-03T22:17:31.740Z"
},
"linkSampling": {
"eligibleCount": 98,
"selectedCount": 5,
"sampledCount": 5,
"working": 3,
"broken": 0,
"unknown": 2,
"checkedAt": "2026-11-03T22:17:37.253Z",
"sourceHash": "e312fbab6c27b709cffb3b71c1304a80937a476ff2cc28a6992c522e7d885181",
"method": "deterministic sample, at most 5 URLs, at most 2 concurrent hosts, 15s budget",
"results": [
{
"url": "https://french4pr.com/ng/lagos/lagos.md",
"httpStatus": 200,
"checkedAt": "2026-11-03T22:17:37.253Z",
"attempted": true,
"status": "working",
"reason": "http_success"
},
{
"url": "https://french4pr.com/ma/casablanca-settat.md",
"httpStatus": 200,
"checkedAt": "2026-11-03T22:17:37.253Z",
"attempted": true,
"status": "working",
"reason": "http_success"
},
{
"url": "https://french4pr.com/ca/alberta/edmonton.md",
"status": "unknown",
"httpStatus": null,
"reason": "timeout",
"attempted": true,
"checkedAt": "2026-11-03T22:17:37.253Z"
},
{
"url": "https://french4pr.com/ph/metro-manila.md",
"httpStatus": 200,
"checkedAt": "2026-11-03T22:17:37.253Z",
"attempted": true,
"status": "working",
"reason": "http_success"
},
{
"url": "https://french4pr.com/products",
"status": "unknown",
"httpStatus": null,
"reason": "oversized",
"attempted": true,
"checkedAt": "2026-11-03T22:17:37.253Z"
}
]
},
"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 98 unique links, not the entire website."
]
},
"updatedAt": "2026-11-03T22:17:50.763Z"
}Related listings based on category, resource types, and description keywords
drivingschools.fyi
Driving Schools lists driving schools by city with addresses, phone numbers and published lesson prices. Search by place and vehicle type, and query the same data through a free API and MCP endpoint.
1 duplicate documentation links
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.
1 H1 heading(s); starts with H1: yes.
H2 with content: yes; no heading-level jumps: yes.
96 valid link occurrence(s) inside Markdown lists.
12 unique heading(s) out of 12; code examples are excluded.
Resolvable HTTP(S) link syntax: 5/5. Unique documentation destinations: 4.95/5. Descriptive link labels: 2.5/2.5. Context beside file links: 2.4/2.5. Sampled destination accessibility: 10/10.
99 valid URL occurrence(s), 0 malformed, unsupported or unresolved.
98 unique destination(s) from 99 valid occurrence(s).
98 of 98 unique links have non-placeholder labels. This is a text heuristic, not a semantic guarantee.
94 of 98 unique links have notes beside a Markdown list link.
5 of 98 destinations sampled: 3 working, 0 confirmed 404/410, 2 unknown. Only working and confirmed-broken results enter this fraction.
Age of last successful verification: 10/10. Latest primary check succeeded: 5/5.
Last success: 2026-11-03T22:17:31.740Z. Full points through day 8 (7-day schedule plus 1-day grace), 60% through day 30, 20% thereafter or for an unknown date.
Latest primary verification succeeded.
Useful summary blockquote: 5/5. Useful introductory context: 5/5.
A blockquote before the first H2 with at least 20 non-whitespace characters and no placeholder-only text.
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.
80–100%50–79%0–49%Gray: not assessed
Component colors use earned points ÷ assessed points. Unmeasured checks are excluded from the assessed maximum. Model v2.0. Calculated 2026-11-03 22:17:50 UTC.
5 of 98 unique destinations checked: 3 working, 0 confirmed broken, 2 unknown. We check up to five destinations, not every page. A successful HTTP response does not prove that a page is relevant or factually correct.
Sample checked: 2026-11-03 22:17:37 UTC · Source snapshot: e312fbab6c27
Destination responded successfully
Destination responded successfully
Check timed out; not classified as broken
Last verified: 2026-11-03.
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 98 unique links, not the entire website.
AI Resource Readiness
Confidence: medium· V2
fluentoo.fr
TOEIC Listening & Reading preparation in French: free corrected exercises for all 7 parts, a free practice test with an estimated score, guides and a paid plan with full practice exams.
AI Resource Readiness
Confidence: medium· V2 · provisional
esavendors.fyi
ESA Vendors helps you find learning vendors your education fund reimburses. You can browse private schools, microschools, tutors, curriculum sellers and learning therapy services by country and region. Vendors are grouped by what each fund reimburses. Every page also has a markdown copy. Confirm vendor approval with your fund before you spend.
AI Resource Readiness
Confidence: high· V2
immigrationhelp.fyi
ImmigrationHelp lists DOJ-authorized immigration legal providers by US city. Search by place and provider type, open any listing for contact facts
AI Resource Readiness
Confidence: medium· V2
lingachat.com
Linga Chat is a language exchange platform designed for speaking practice with native speakers, combining language-partner matching, instant translation in 27 languages, live audio & video rooms, and a 24/7 AI language partner in one app. Free to start. iPhone, iPad, Mac, Android and Windows. Both llms.txt and llms-full.txt are generated server-side on every request, so they always reflect the live content.
AI Resource Readiness
Confidence: medium· V2
dhammatools.com
The Dhammapada's 423 verses in Pali and English, with a verse of the day, a random verse, a feeling-based verse finder and free verse cards. Free, no account.
AI Resource Readiness
Confidence: medium· V2 · provisional
Destination responded successfully
Response exceeded the sample size limit
Only HTTP 404/410 is classified as confirmed broken. HTTP 403/429, timeouts and incomplete checks remain unknown. If all sample outcomes are unknown, the link-health check is excluded from the assessed maximum and the score is marked provisional.