PPL Free Ground School
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Free FAA private-pilot ground school: source-cited answers, lessons and practice questions.
| Author | com.pplfree |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2563 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"PPL Free Ground School": {
"url": "https://pplfree.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (5)
search_faa_knowledgeread-onlyAnswer a US private-pilot (FAA) ground-school question from a source-cited curriculum. Use this whenever the user asks about FAA regulations, airspace, VFR weather minimums, weight and balance, aerodynamics, aircraft systems, navigation, weather theory, human factors, or private-pilot certification requirements. Returns short passages, each with the FAA citation it came from (e.g. "14 CFR 91.155", "PHAK Ch. 15") and a link to the lesson. Cite those labels in your answer.
Parameters:
query(required) — string — The user's question, in their own words.limit— integer — How many passages to return (1-8, default 4).
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_practice_questionread-onlyReturn private-pilot practice questions written for this course in the style of the FAA knowledge test (not actual FAA test questions), each with its answer choices, its topic, a question_id and a link to try it on pplfree.com. The correct answer is withheld by default so the user can attempt the question first. Once the user has answered, call check_answer with that question_id and their choice to grade it (or call this tool again with the question_id and reveal_answer: true to show the answer without grading). Use this when the user wants to be quizzed, asks for practice or test questions, wants to check their understanding of a topic, or is preparing for the FAA private-pilot knowledge test. Optionally scope it to a topic.
Parameters:
count— integer — How many questions to return (1-5, default 1).topic— string — Optional topic to draw from, e.g. "airspace", "weather", "aerodynamics", "regulations", "navigation", "weight-balance", "systems". Omit for any topic.question_id— string — A question_id from an earlier call, to return that exact question (typically with reveal_answer: true). Overrides topic and count.reveal_answer— boolean — Include the correct choice and the explanation. Default false: leave it off until the user has attempted the question.
Hints: read-only yes · destructive no · idempotent yes · open-world no
check_answerread-onlyGrade the user's answer to a practice question from get_practice_question. Use this when the user replies with their choice (for example "B" or "I think it is C"): pass the question_id and their choice. Returns whether the answer is correct, the correct choice, why each choice is right or wrong, and the FAA citations. It also returns save_progress_url, a pplfree.com link where the user can save the answers from this chat to their study progress on that site, and save_token: pass it back as previous_token on the next check_answer call so one link collects every answer in the chat (up to 20, valid for 7 days). Nothing is stored unless the user opens the link.
Parameters:
question_id(required) — string — The questionId returned by get_practice_question.choice(required) — string — The choice the user picked: its label (e.g. "b" or "B").previous_token— string — The save_token from the previous check_answer call in this chat, if any, so the save link keeps every answer. Omit on the first answer.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_lessonread-onlyFetch one full ground-school lesson: its summary, why it matters in flight, the learning objectives it covers, and a link to read it. Use this after search_faa_knowledge when the user wants the whole topic rather than a single answer, or when they ask to study or learn a subject properly. Call list_curriculum first if you do not already have a lesson key.
Parameters:
lessonKey(required) — string — Lesson key, e.g. "as.lesson.vfr-minimums". From list_curriculum.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_curriculumread-onlyList the ground-school curriculum: modules and the published lessons in each, with their keys. Use this to orient yourself before get_lesson, to answer "what does the course cover", or to help a user plan what to study next.
Parameters:
module— string — Optional module key to expand, e.g. "MOD-08". Omit for all modules.
Hints: read-only yes · destructive no · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.