Homeschool Tools
Server Details
Search, compare and read reviews of 350+ homeschool curricula. Read-only, no account needed.
- Status
- Healthy
- Uptime
- 99.9% over 42 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
find_curriculum and search_offerings are clearly delineated by their descriptions (recommendations vs. name lookup). compare_offerings overlaps somewhat with get_offering_detail since it returns 'full detail for each offering' — an agent could reasonably call get_offering_detail twice instead — but the 2-3 item comparison intent is documented well enough to separate them.
All names follow a consistent snake_case verb-first pattern (compare_, find_, get_, search_). The only minor deviation is that find_curriculum uses 'curriculum' while every other tool uses the 'offering' resource noun.
Four tools is a reasonable, well-scoped surface for a curriculum discovery service, covering lookup, recommendation, detail, and comparison. It leans slightly thin — no browse/enumeration tool — but each tool earns its place with no redundancy.
The core lifecycle is covered: search by name, personalized discovery, single-item detail, and multi-item comparison. There is no browse/list-by-category operation, but find_curriculum's filtering largely substitutes for it, leaving only minor gaps.
Available Tools
4 toolscompare_offeringsBRead-onlyDestructiveInspect
Use this when a user wants to compare 2-3 specific homeschool curricula side by side (e.g., 'Sonlight vs My Father's World'). Returns full detail for each offering so you can contrast approach, price, worldview, parent time, and reviewer consensus. Pass slugs when known, names otherwise.
| Name | Required | Description | Default |
|---|---|---|---|
| slugs | Yes | 2-3 offering slugs (preferred) or names, e.g. ["sonlight","my-fathers-world"]. |
Output Schema
| Name | Required | Description |
|---|---|---|
| not_found | No | |
| offerings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description presents the operation as purely read-only ('Returns full detail for each offering'), but the annotations include destructiveHint=true. That directly contradicts the non-destructive compare/return behavior, and the description never resolves the conflict. This is an annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences are front-loaded with the use case, a useful example, and a parameter hint. Concise and readable, though the final sentence partly duplicates the schema description of the slugs parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter and an output schema, the description is nearly sufficient, but it fails to address the obvious conflict between readOnlyHint=true and destructiveHint=true. It also does not explicitly direct the agent to sibling tools for single-detail or search intents, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the parameter with 100% coverage, including '2-3 offering slugs (preferred) or names.' The description's 'Pass slugs when known, names otherwise' repeats that guidance without adding new meaning, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear trigger and resource: 'compare 2-3 specific homeschool curricula side by side,' with a concrete example ('Sonlight vs My Father's World'). It is easy to distinguish from a search or single-detail tool: this is explicitly a bounded, side-by-side comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this when a user wants to compare 2-3 specific homeschool curricula' is an explicit usage condition. It does not explicitly name alternatives such as get_offering_detail or search_offerings, nor state when not to use this tool, so it falls just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_curriculumARead-onlyDestructiveInspect
Use this when a user wants to find or get recommendations for homeschool curriculum, educational programs, or learning materials for their children. Searches a curated database of 350+ expert-reviewed homeschool offerings and returns personalized matches based on the child's grade level, learning style, family values, budget, and special needs. subjects is a hard filter results always satisfy. worldview is too, but it widens: a specific worldview request also returns worldview-neutral offerings, which suit any household. grade_level is a hard filter except that an offering with no grade range recorded appears at every grade. budget_max filters on an offering's annual cost where known, otherwise its lowest listed price, so a result may cost more at higher levels, and one whose price is unknown may appear at any budget. learning_style, special_needs, parent_time, and format_preference influence ranking. Do not use for lesson planning, scheduling, legal compliance questions, or tutoring.
| Name | Required | Description | Default |
|---|---|---|---|
| subjects | No | Always pass as an array, e.g. ["math","science"]. Use ["all"] for comprehensive curriculum. | |
| worldview | No | Family's religious/philosophical preference. 'any' means no preference. | |
| budget_max | No | Maximum annual budget in USD, compared against an offering's annual cost where known (a monthly price times twelve, for example), otherwise its lowest listed price. Results carry price (the publisher's figure and its period) and annual_cost when known. 0 selects offerings with a free tier; many of those also sell paid levels, and an offering whose price is unknown carries no price range at all — so do not tell a family something is free without checking what the result actually shows. | |
| grade_level | Yes | The child's current or target grade level. | |
| parent_time | No | Daily parent teaching time. 'minimal' = under 1hr, 'moderate' = 1-3hrs, 'intensive' = 3+hrs. | |
| special_needs | No | Always pass as an array, e.g. ["adhd","dyslexia"]. Any learning differences or special needs. Use ["none"] if none. | |
| learning_style | No | Always pass as an array, e.g. ["visual","hands_on"]. How the child learns best. | |
| format_preference | No | Always pass as an array, e.g. ["online","hybrid"]. Preferred curriculum delivery format. |
Output Schema
| Name | Required | Description |
|---|---|---|
| matches | Yes | |
| match_count | Yes | |
| no_match_note | No | |
| filters_applied | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare read-only/idempotency traits; the description goes further by disclosing which filters are hard (subjects, grade_level) versus which influence ranking (learning_style, special_needs, parent_time, format_preference), and explains the widening behavior of worldview and the price-based logic of budget_max. This is precisely the kind of filter-semantics context an agent cannot get from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and trigger, then the filter semantics, then exclusions. Nearly every sentence earns its place, though the budget_max sentence is long and the parenthetical price caveats could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter recommendation tool with an output schema (so return values need not be explained here), the description covers trigger, exclusions, hard/soft filter behavior, and special cases. Nothing an agent needs to invoke it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds meaning the schema does not carry: subjects and grade_level are described as hard filters (with the no-grade-range exception), worldview is a soft-widening filter, and four parameters are explicitly labeled as ranking-only. That hard-versus-ranking distinction materially changes how an agent should populate the call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb set ('find or get recommendations') and resource ('homeschool curriculum, educational programs, or learning materials'), and even states the database size ('350+ expert-reviewed homeschool offerings'). It does not, however, name or contrast with its siblings (search_offerings, compare_offerings, get_offering_detail), so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger ('Use this when a user wants to find or get recommendations for...') and explicit exclusions ('Do not use for lesson planning, scheduling, legal compliance questions, or tutoring'). This is strong when/when-not guidance, though it never points to an alternative tool when the tool is not the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_offering_detailBRead-onlyDestructiveInspect
Use this when a user asks for more detail about a specific homeschool curriculum or program. Returns detailed review synthesis, pros/cons, reviewer quotes, and a link to the full metareview on HomeschoolTools.net. Accepts the offering slug or its name.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The offering slug (e.g., 'saxon-math') or its name (e.g., 'Saxon Math'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| slug | No | |
| detail_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses useful output contents, but the annotations are contradictory: readOnlyHint=true and destructiveHint=true are both set. The described behavior of returning review data aligns with readOnly and conflicts with destructiveHint, so an agent cannot confidently judge the tool's side effects. This is an annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loads the usage trigger, then summarizes the output. The final sentence about accepting slug/name is slightly redundant with the schema but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with an output schema, the description is fairly complete: it explains when to use it, what to pass, and what kind of content is returned. The main gap is the conflicting annotation, which is penalized under behavioral transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description's statement that the parameter accepts a slug or name is essentially duplicated in the schema. The description adds no substantial new parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource: getting more detail about a specific homeschool curriculum/program. It distinguishes itself from siblings by focusing on 'more detail' for a specific offering, though it does not explicitly name the sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit trigger condition: 'Use this when a user asks for more detail about a specific homeschool curriculum or program.' It does not state when not to use it or explicitly contrast it with search_offerings/compare_offerings, but the intended context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_offeringsARead-onlyDestructiveInspect
Look up specific homeschool offerings by name in the Homeschool Tools database (e.g., to check whether a curriculum the user mentioned is covered, or to get its slug for other tools). Returns name, slug, and a one-line summary per match. Do not use this for general recommendations (use find_curriculum), and do not use it for lesson planning, tutoring, or non-curriculum questions.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Offering or publisher name to look up, e.g. 'Sonlight' or 'Beast Academy'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| query | Yes | |
| results | Yes | |
| result_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint=true directly contradicts the description, which says the tool only looks up offerings and returns name, slug, and summary. The readOnlyHint=true supports the description, but the destructive hint creates a serious inconsistency that an agent cannot resolve confidently. Per the rubric, a description that contradicts annotations receives a score of 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. The main purpose is front-loaded, return values are summarized, and exclusions with alternatives are stated directly. Every sentence contributes to correct tool selection and invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter lookup tool with an output schema, the description covers purpose, return contents, and exclusions thoroughly. The only notable gap is the contradictory destructiveHint annotation, which creates avoidable confusion despite the description itself being complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, query, and the schema already documents it at 100% coverage, including examples like 'Sonlight' or 'Beast Academy.' The description reinforces the intended use by framing the query as a specific offering or publisher name, but it does not add substantial semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Look up specific homeschool offerings by name in the Homeschool Tools database.' It also gives concrete examples of when to use it, such as checking coverage or getting a slug, and clearly differentiates it from find_curriculum and other general-purpose tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('to check whether a curriculum the user mentioned is covered, or to get its slug') and when not to use it ('Do not use this for general recommendations, lesson planning, tutoring, or non-curriculum questions'). It even names the alternative tool, find_curriculum, making the routing clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
find_curriculum1 field changed- changed
Input schema / properties / budget_max / descriptionPrevious value: -"Maximum annual budget in USD, compared against an offering's lowest price. 0 selects offerings with a free tier; many of those also sell paid levels, and an offering whose price is unknown carries no price range at all — so do not tell a family something is free without checking what the result actually shows."New value: +"Maximum annual budget in USD, compared against an offering's annual cost where known (a monthly price times twelve, for example), otherwise its lowest listed price. Results carry price (the publisher's figure and its period) and annual_cost when known. 0 selects offerings with a free tier; many of those also sell paid levels, and an offering whose price is unknown carries no price range at all — so do not tell a family something is free without checking what the result actually shows."
4 tool updates
- First observed
compare_offerings - First observed
find_curriculum - First observed
get_offering_detail - First observed
search_offerings
Related MCP Connectors
Read-only ranked lists, product facts, alternatives and comparisons for software, apps and books.
- ActiKidzOAuthcom.actikidz
Find kids' activities in Canada; parents check schedules, bookings and payments (read-only).
Search 1,673 source-linked exam blueprints with reviewed guidance. Read-only; no API key.
Search a directory of SOC 2 audit and compliance firms; read GRC migration guides. Read-only.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides read-only access to approved lessons, activities, and quizzes, enabling the tutor to fetch curriculum content through dedicated tools.MIT

wisdomforge-mcpofficial
AlicenseAqualityCmaintenanceProvides read-only tools to search, browse, and retrieve lessons, lesson-plan seeds, books, age-leveled booklets, chapter audio, and public media URLs, along with deterministic recommendations scored by age band and learning style. Designed for Cursor and Grok Bot, it stores no learner data and returns public links rather than proxying file bytes.11MIT- AlicenseNot gradedqualityCmaintenanceLets AI apps read a student's Google Classroom data, including active classes, to-do and missing assignments, upcoming due dates, grades on returned work, and announcements. It is read-only, so it can never turn in, edit, or delete anything.MIT
- AlicenseNot gradedqualityDmaintenanceProvides access to the Korean elementary 2022 revised curriculum learning graph, enabling users to search and retrieve curriculum standards, learning topics, prerequisites, and roadmaps from a fully local database.56 npm14MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.