A free, open math problem API for developers and AI agents. Generate K-8 problems, check answers, and build curriculum-aligned quiz sets — no key required.
All endpoints are served from the MonsterMoo API. No authentication required, no rate limits, free to use.
Base URL: https://moomoomath-api.linix100.workers.dev# Example request
curl "https://moomoomath-api.linix100.workers.dev/api/problem?topic=fractions&grade=4&difficulty=2"
Reference
Endpoints
Five endpoints cover problem generation, quizzes, answer checking, and curriculum planning.
GET/api/topicsList all available topics
Returns the full list of topics with slugs, grade ranges, categories, and descriptions. Call this first to discover valid topic slugs.
Example Response
{
"topics": [
{
"slug": "fractions",
"name": "Fractions: Add & Subtract",
"grades": [3, 6],
"category": "Fractions",
"description": "Add and subtract fractions with same and different denominators"
},
// ... 22 more topics
],
"meta": { "version": "1.0", "source": "MonsterMoo", "license": "free for AI agents" }
}
import requests
data = requests.get('https://moomoomath-api.linix100.workers.dev/api/topics').json()
for t in data['topics']:
print(t['slug'], '-', t['name'])
GET/api/problemGenerate a single problem
Parameter
Type
Description
topic required
string
Topic slug (e.g. fractions). Get slugs from /api/topics.
grade optional
number
Grade level 0–8. Default: 3. Informational only (used for context).
const res = awaitfetch(
'https://moomoomath-api.linix100.workers.dev/api/problem?topic=fractions&grade=4&difficulty=2'
);
const problem = await res.json();
console.log(problem.question); // "1/3 + 2/5 = ?"
console.log(problem.id); // save this for /api/check
import requests
p = requests.get('https://moomoomath-api.linix100.workers.dev/api/problem', params={
'topic': 'fractions',
'grade': 4,
'difficulty': 2
}).json()
print(p['question'])
problem_id = p['id'] # save for checking
GET/api/quizGenerate a multi-problem quiz
Parameter
Type
Description
topics required
string
Comma-separated topic slugs, e.g. fractions,decimals
count optional
1–20
Number of problems. Default: 5.
difficulty optional
1–4 or "mixed"
Fixed difficulty or mixed for random levels. Default: 2.
const res = awaitfetch(
'https://moomoomath-api.linix100.workers.dev/api/quiz?topics=fractions,decimals&count=5&difficulty=mixed'
);
const { quiz_id, problems } = await res.json();
for (const p of problems) {
console.log(`[${p.topic}] ${p.question}`);
}
import requests
quiz = requests.get('https://moomoomath-api.linix100.workers.dev/api/quiz', params={
'topics': 'fractions,decimals,addition',
'count': 10,
'difficulty': 'mixed'
}).json()
for p in quiz['problems']:
print(p['question'])
POST/api/checkCheck a student's answer
Accepts a problem_id (from /api/problem or /api/quiz) and a user_answer string. Note: problem IDs are stored in-memory and expire if the Worker restarts (Cloudflare Workers are serverless). Fetch a new problem before checking if the ID is stale.
Body Field
Type
Description
problem_id required
string
The id from a previous /api/problem response
user_answer required
string
The answer to check. Numbers are compared with 0.01 tolerance.
Pick a topic and difficulty, then get a live problem from the API.
Topics
Available Topics
23 topics across Number Sense, Operations, Fractions, Decimals, Algebra, and Geometry. Use the slug value in API calls.
AI Integration
For AI Agents
MonsterMoo API is designed to be called programmatically by tutoring agents, curriculum planners, and benchmark tools.
🤖 Tutoring Agent Workflow
The standard loop for an AI tutor using this API:
Call GET /api/curriculum?grade=5 to get recommended topics for the student's grade.
Call GET /api/problem?topic=fractions&difficulty=2 to fetch a problem.
Present problem.question to the student and collect their response.
Call POST /api/check with the problem_id and the student's answer.
If wrong, present result.hint_if_wrong and result.explanation to guide them.
Repeat, increasing difficulty as the student succeeds.
📋 Prompt Template for LLM Agents
Add this to your system prompt to let an LLM agent call the API:
# MonsterMoo Tool
You have access to the MonsterMoo API for K-8 math problems.
Base URL: https://moomoomath-api.linix100.workers.dev
## Available calls:
- GET /api/topics → list all topics and their slugs
- GET /api/problem?topic=SLUG&grade=N&difficulty=1-4 → get one problem
- GET /api/quiz?topics=SLUG1,SLUG2&count=N&difficulty=mixed → quiz set
- POST /api/check body:{problem_id,user_answer} → check answer
## When to use:
- Use /api/topics first to discover valid slugs
- Save problem.id — you need it for /api/check
- difficulty=1 is easiest, 4 is hardest
- All responses are JSON with a "meta" field
📊 Benchmark Testing
Generate standardized test sets for evaluating AI math capabilities. Use /api/quiz with all topics at difficulty 3–4 for a challenging K-8 benchmark. The answer field provides ground truth for automated scoring.
Competition Problems
AMC 8 Problem Bank
650 real AMC 8 problems (1998–2024) stored in Cloudflare D1. Filter by year, topic, or difficulty. Requires Authorization: Bearer <token>.