Study Planner MCP
Study Planner MCP is an offline, account-free study-planning server that turns exam dates and available study hours into tested schedules and calendar-ready outputs.
Build day-by-day study plans for one or more exams, sharing hours by urgency, with optional different hours per weekday, days off, exam topics, and warnings when time is short.
Reschedule plans after missed study days by subtracting hours already done and spreading remaining hours from a new start date.
Generate spaced repetition review schedules and find just the next review date, skipping reviews on or after the exam.
Plan pomodoro work/break sessions, optionally with clock times.
Break assignments into dated milestones such as research, outline, draft, revise, and proofread.
Export the study plan as an .ics calendar file with study sessions and exam events.
Answer what to study on a given day, including study sessions and due or late reviews.
Check exam countdowns and whether you are on track or behind.
Accept plain-language dates like Dec 12, next Friday, or in 3 weeks.
Exports a generated study plan as an .ics calendar file (via export_study_plan_ics) with one all-day event per study session — including session topics in the description — and one all-day event per exam, ready to be opened or imported into Google Calendar.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Study Planner MCPI have a chem exam Dec 12 and 2 hours a day to study. Build me a plan."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Study Planner MCP
Offline exam planning for your AI: no account, no login, no internet needed, nothing stored. Free forever, open source.
Give it your exam dates and how many hours you can study, the same on every day or different for each weekday, and get back a day by day plan with spaced repetition review dates, pomodoro blocks with breaks, and dated milestones for a big assignment. Ask for a revision timetable, an exam schedule or the spaced repetition dates for a topic, and it works them out from your dates and your hours. The date math is done by tested code, not guessed by the model.
Why not just use Brightspace tools
Brightspace and Canvas tools read your school site. They tell you what is due, what your grades are and what your teachers announced, and they need an account and a sign in. This server reads no site at all. You give it the exam dates and the hours you can study, and it works out the timetable, the review dates and the breaks. Run it next to an LMS server if you like: one tells you what is assigned, the other tells you how to study it.
Related MCP server: Meeting Scheduler
Prompt gallery
Copy and paste any of these into your AI app once the server is installed.
"Plan 3 weeks of study for my 4 exams"
"What should I study today?"
"When should I review what I learned today for my exam on Nov 30?"
"Plan 3 hours of studying as pomodoro blocks with breaks."
"Break my 6 hour essay due Friday into milestones."
Ask it things like:
"I have a networking exam on Dec 12 and scripting on Dec 15. I can study 3 hours a day except Sundays. Make me a plan."
"I have a networking exam on Dec 12. I study 2 hours on weekdays and 6 hours on weekends. Make me a plan."
"My networking exam covers routing, switching and security. Split the study hours over those topics and tell me what to study today."
"When should I review what I learned today so I remember it for my exam on Nov 30?"
"What should I study today? My networking exam is on Dec 12 and I studied routing last Friday."
"Am I on track for my exam on Dec 12 if I can study 2 hours a day?"
"Plan 3 hours of studying as pomodoro blocks with breaks."
"Break my 6 hour essay due Friday into milestones."
"Give me this plan as an .ics file so I can import it into Google Calendar."
This is a free, open source MCP server. It works with Claude, ChatGPT, Cursor, VS Code Copilot and any other app that supports MCP. It runs on your computer, so your study data never leaves it. The install steps below have the exact config for each app.
Install
The server runs on your computer through npx, so you need Node.js 20 or newer. There is no account, no key and nothing to sign in to.
Every app reads its MCP config from its own file, so pick yours:
All of them start the same server the same way. The only difference is where the JSON goes.
Claude Desktop
Add this to claude_desktop_config.json:
{
"mcpServers": {
"study-planner": {
"command": "npx",
"args": ["-y", "study-planner-mcp"]
}
}
}Restart Claude Desktop after you save the file.
Claude Code
Run this in a terminal:
claude mcp add study-planner -- npx -y study-planner-mcpChatGPT
The ChatGPT desktop app can start a server that runs on your machine. Open Settings, turn on developer mode, add a connector and paste this JSON:
{
"mcpServers": {
"study-planner": {
"command": "npx",
"args": ["-y", "study-planner-mcp"]
}
}
}The ChatGPT website talks to servers over the web, so use the desktop app for a server that runs on your computer.
Cursor
Cursor reads mcp.json from the project folder at .cursor/mcp.json, or from your home folder at ~/.cursor/mcp.json if you want the server in every project. On Windows the home folder file is %USERPROFILE%\.cursor\mcp.json.
{
"mcpServers": {
"study-planner": {
"type": "stdio",
"command": "npx",
"args": ["-y", "study-planner-mcp"]
}
}
}Restart Cursor after you save the file. The Customize page in the sidebar lists the server once it starts, and you can turn it on or off there.
VS Code Copilot
Put this in .vscode/mcp.json in your project folder, or in the mcp.json file in your user profile:
{
"servers": {
"study-planner": {
"type": "stdio",
"command": "npx",
"args": ["-y", "study-planner-mcp"]
}
}
}VS Code also reads a portable .mcp.json file in the project root. That file uses the name mcpServers instead of servers:
{
"mcpServers": {
"study-planner": {
"command": "npx",
"args": ["-y", "study-planner-mcp"]
}
}
}Restart VS Code after you save the file.
After any of these, try one of the questions at the top of this page.
Tools
Tool | What it does |
| A day by day study plan for one or more exams, sharing the hours of each weekday by urgency, with a warning if there is not enough time, and the topic of each day when an exam has topics |
| Spaced repetition review dates for a topic at expanding intervals, with dates on or after the exam marked to skip |
| A work and break schedule for a total amount of study time |
| Dated milestones that split a big assignment into research, outline, draft, revise and proofread |
| The date of the next review for one topic, so you get a single date instead of the whole schedule |
| The same plan as an |
| What to study on one day: the study sessions from your plan for that day, the topic of each session when the exams have topics, plus the spaced repetition reviews that are due that day or are late |
| The days left, the study days left, the hours each exam still needs, the hours to put in on each study day and a plain On track or Behind verdict |
| The plan rebuilt after days you missed: give the hours already done for each exam and it takes them off the exam, then spreads the hours left over the days from your new start date |
The original names make_study_plan, spaced_repetition_dates, pomodoro_plan and assignment_milestones do the same four jobs with the same parameters, so existing configs and saved prompts keep working.
Every date these tools take can be written in plain words, like Dec 12 or in 3 weeks. See Dates in plain words.
Study Planner MCP compared with Brightspace and Canvas
Brightspace MCP and Canvas MCP read your school site. They tell you what is due, what your grades are and what your teachers announced. They need an account and a sign in.
This server reads no site at all. You give it the exam dates and the hours you can study, and it works out the timetable, the review dates and the breaks. Run it next to an LMS server if you like: one tells you what is assigned, the other tells you how to study it.
Study Planner MCP | |||
What it reads | Nothing. You give it the exam dates and the hours | Your Brightspace courses, due dates, grades, files and announcements | Your Canvas courses, due dates, grades and announcements |
Needs a school account | No | Yes | Yes |
How you sign in | You never sign in | Browser sign in with your school login | An API token you create in Canvas |
A day by day study timetable | Yes, | No, it shows the dated events your school posted | No, it shows the dated events your school posted |
Different hours for each weekday | Yes, | No | No |
Which topic to study on each day | Yes, give the exam topics | No | No |
Spaced repetition review dates | Yes, | No | No |
Pomodoro blocks with breaks | Yes, | No | No |
Assignment milestones with dates | Yes, | No | No |
What to do today | Yes, | Yes, a to do list of the work your school set | Yes, a to do list of the work your school set |
A calendar file | Yes, | Yes, of your due dates | No |
Works without a network | Yes | No | No |
Brightspace also writes your due dates into a calendar file, and both of them show the dated events your school posted. What they do not do is turn your exam dates and your study hours into a day by day timetable with spaced repetition dates and pomodoro breaks.
Keywords
People search for a study planner with words like these, so here they are in one place. Revision timetable, exam schedule and spaced repetition dates are on the list, along with the other names for the same jobs.
study planner mcp
study planner
study planner offline
study-planner-mcp
study plan mcp
revision timetable
revision schedule
revision plan
revision planner
reschedule study plan
exam schedule
exam timetable
exam planner
exam prep
exam countdown
exam study plan
study schedule
study timetable
study calendar
spaced repetition
spaced repetition dates
spaced repetition schedule
pomodoro
pomodoro planner
assignment milestones
assignment plan
student planner
student
mcp
mcp server
model context protocol
offline
The npm listing uses the same words. If you searched for one of them, install the server and ask for a plan.
How the study plan works
Each day has the hours of that weekday, which is hours_per_day unless you set hours_per_weekday. Those hours are shared across the exams that still need work, weighted by how many hours are left divided by how many days remain, so closer and bigger exams get more time. Study stops the day before each exam. If the hours do not fit, the plan says how many are short instead of pretending. The dates the server works out are plain calendar dates, so time zones never shift a day.
When an exam has topics, the hours the exam gets on a day are split over its topics in proportion to the hours each topic still needs. That way the plan answers which topic to study, not only which exam.
Dates in plain words
Every date the tools take can be written the way you say it. The server reads the date itself, so the day math stays in tested code.
2026-12-12for a date you know exactly.Dec 12,December 12or12 Decfor a month and a day. Without a year it means the next one that has not passed yet, so asked for in October,Dec 12means 12 December of that year, and asked for in December it means 12 December of the next year.Dec 12 2026when you want a year of your own.today,tomorrowandyesterday.in 3 days,in 2 weeks,in 3 monthsandin 1 year, counted from today. Number words work too, likein two weeks.3 days agoand2 weeks agofor the days behind you.Fridayfor the coming Friday,next Fridayfor the Friday of the week after that, andlast Fridayfor the one before.
This works in every date the tools take: the exam dates, start_date, due_date, first_study_date, exam_date, from_date and the date of what_to_study_today.
Dates with a number for the month, like 12/12/2026, are not read, because the order of the numbers is not clear. Write the month as a name, like Dec 12 2026.
Tool call:
{
"exams": [{ "name": "Networking", "date": "Dec 12 2026", "hours_needed": 6 }],
"start_date": "2026-12-07",
"hours_per_day": 2
}The answer:
Everything fits: 1 exam, 3 study days, 6h
Exams
- Networking on 2026-12-12 sat, 6h planned
Plan from 2026-12-07
- 2026-12-07 mon Networking 2h (2h total)
- 2026-12-08 tue Networking 2h (2h total)
- 2026-12-09 wed Networking 2h (2h total)
Everything fits.The date 2026-12-12 gives the same plan.
Different hours each day of the week
Study days are not all the same length. hours_per_weekday sets the hours for each weekday, so the plan can give you 2 hours from Monday to Friday and 6 hours on Saturday and Sunday. Weekdays you leave out of the list fall back to hours_per_day, and a weekday with 0 hours is a day off, the same as a day in days_off. Days listed in days_off are always left out. The same list works in export_study_plan_ics and what_to_study_today, so all three tools build the same plan.
Tool call:
{
"exams": [{ "name": "Networking", "date": "2026-12-12", "hours_needed": 20 }],
"hours_per_day": 3,
"hours_per_weekday": [
{ "day": "mon", "hours": 2 },
{ "day": "tue", "hours": 2 },
{ "day": "wed", "hours": 2 },
{ "day": "thu", "hours": 2 },
{ "day": "fri", "hours": 2 },
{ "day": "sat", "hours": 6 },
{ "day": "sun", "hours": 6 }
],
"start_date": "2026-11-30"
}The answer:
Everything fits: 1 exam, 7 study days, 20h
Exams
- Networking on 2026-12-12 sat, 20h planned
Plan from 2026-11-30
- 2026-11-30 mon Networking 2h (2h total)
- 2026-12-01 tue Networking 2h (2h total)
- 2026-12-02 wed Networking 2h (2h total)
- 2026-12-03 thu Networking 2h (2h total)
- 2026-12-04 fri Networking 2h (2h total)
- 2026-12-05 sat Networking 6h (6h total)
- 2026-12-06 sun Networking 4h (4h total)
Everything fits.Saturday carries the 6 hours, and Sunday gets the 4 hours that are left over.
Hours per topic
Give an exam topics and the plan says which topic to study on each day, not just which exam. The hours of a day are split over the topics of the exam in proportion to the hours each topic still needs, so the topic that needs the most work gets the most time. Leave hours_needed off a topic and the hours of the exam are split evenly over the topics that have no hours of their own.
Tool call:
{
"exams": [
{
"name": "Networking",
"date": "2026-12-10",
"topics": [
{ "name": "Routing", "hours_needed": 6 },
{ "name": "Switching", "hours_needed": 4 },
{ "name": "Security", "hours_needed": 2 }
]
}
],
"hours_per_day": 4,
"start_date": "2026-12-07"
}The answer:
Everything fits: 1 exam, 3 study days, 12h
Exams
- Networking on 2026-12-10 thu, 12h planned
- Routing 6h planned
- Switching 4h planned
- Security 2h planned
Plan from 2026-12-07
- 2026-12-07 mon Networking 4h (4h total)
- Networking: Routing 2h, Switching 1.5h, Security 0.5h
- 2026-12-08 tue Networking 4h (4h total)
- Networking: Routing 2h, Switching 1.5h, Security 0.5h
- 2026-12-09 wed Networking 4h (4h total)
- Networking: Routing 2h, Switching 1h, Security 1h
Everything fits.what_to_study_today gives the same topics for one day, so one call tells you what to study today and which part of the exam it belongs to.
Tool call:
{
"date": "2026-12-08",
"exams": [
{
"name": "Networking",
"date": "2026-12-10",
"topics": [
{ "name": "Routing", "hours_needed": 6 },
{ "name": "Switching", "hours_needed": 4 },
{ "name": "Security", "hours_needed": 2 }
]
}
],
"hours_per_day": 4,
"start_date": "2026-12-07"
}The answer:
Today 2026-12-08 tue
Study sessions, 4h total
- Networking 4h
- Routing 2h, Switching 1.5h, Security 0.5h
Next exam: Networking on 2026-12-10 thu, 2 days left.Example plan
This is a real answer from build_study_plan, copied from a run of the code in this folder. Networking needs 20 hours by Dec 12 and Scripting needs 16 hours by Dec 15, with 3 hours a day and no study on Sundays. Passing start_date is what makes the dates repeatable.
Tool call:
{
"exams": [
{ "name": "Networking", "date": "2026-12-12", "hours_needed": 20 },
{ "name": "Scripting", "date": "2026-12-15", "hours_needed": 16 }
],
"hours_per_day": 3,
"days_off": ["sun"],
"start_date": "2026-11-30"
}The answer:
Everything fits: 2 exams, 12 study days, 36h
Exams
- Networking on 2026-12-12 sat, 20h planned
- Scripting on 2026-12-15 tue, 16h planned
Plan from 2026-11-30
- 2026-11-30 mon Networking 2h, Scripting 1h (3h total)
- 2026-12-01 tue Networking 2h, Scripting 1h (3h total)
- 2026-12-02 wed Networking 2h, Scripting 1h (3h total)
- 2026-12-03 thu Networking 2h, Scripting 1h (3h total)
- 2026-12-04 fri Networking 1.5h, Scripting 1.5h (3h total)
- 2026-12-05 sat Networking 2h, Scripting 1h (3h total)
- 2026-12-07 mon Networking 2h, Scripting 1h (3h total)
- 2026-12-08 tue Networking 1.5h, Scripting 1.5h (3h total)
- 2026-12-09 wed Networking 2h, Scripting 1h (3h total)
- 2026-12-10 thu Networking 1.5h, Scripting 1.5h (3h total)
- 2026-12-11 fri Networking 1.5h, Scripting 1.5h (3h total)
- 2026-12-12 sat Scripting 3h (3h total)
Everything fits.Sundays are skipped, and Networking stops on Dec 11 because studying stops the day before each exam, so Dec 12 is Scripting only.
Calendar file
export_study_plan_ics takes the same arguments as build_study_plan and answers with a complete .ics file instead of plain text. Save the answer as plan.ics and open it, or import it in Google Calendar or Apple Calendar. Every study session becomes an all day event marked free, every exam becomes an all day event marked busy, and include_exams: false gives you the study sessions only. Each event carries a UID built from its date and exam name, and the dates are written as plain calendar dates, so no time zone moves an event to another day.
Tool call:
{
"exams": [{ "name": "Networking", "date": "2026-12-12", "hours_needed": 6 }],
"start_date": "2026-12-07",
"hours_per_day": 2,
"days_off": ["sun"]
}These are the first lines of the file, copied from a run. Two more study events and one exam event follow in the same shape, and DTSTAMP is the moment of the export, so yours will differ.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//AnonymousOnyx22//Study Planner MCP//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Study plan
BEGIN:VEVENT
UID:2026-12-07-networking-study@study-planner-mcp
DTSTAMP:20261021T022919Z
DTSTART;VALUE=DATE:20261207
DTEND;VALUE=DATE:20261208
SUMMARY:Study: Networking 2h
DESCRIPTION:Networking\, 2h of study. Day total 2h. Exam on 2026-12-12 sat.
TRANSP:TRANSPARENT
END:VEVENTWhat to study today
what_to_study_today answers one day in one call. It merges the study sessions your plan gives for that day with the spaced repetition reviews that are due that day or are late. Pass the same exams and hours you use in build_study_plan, and the topics you are reviewing with the day you first studied each one. Leave date out and it uses today's date. Pass start_date if your plan already has a first day, so the sessions match the plan you made earlier.
Tool call:
{
"date": "2026-11-30",
"exams": [{ "name": "Networking", "date": "2026-12-12", "hours_needed": 12 }],
"hours_per_day": 2,
"reviews": [{ "topic": "Routing", "first_study_date": "2026-11-27" }]
}The answer:
Today 2026-11-30 mon
Study sessions, 2h total
- Networking 2h
Reviews due today
- Routing, 2nd review
Reviews to catch up
- Routing, 1st review, 2 days late (due 2026-11-28)
Next reviews
- Routing on 2026-12-04 fri, 3rd review
Next exam: Networking on 2026-12-12 sat, 12 days left.Exam countdown
exam_countdown answers whether you are on track for an exam. It gives the days left, the number of study days left after days off and weekdays with 0 hours, the hours the exam still needs, the hours to put in on each study day and a plain verdict. It uses the same hours_per_day, hours_per_weekday and days_off as the plan tools, so the verdict matches the plan they build. Pass from_date to count from a fixed day.
Tool call:
{
"exams": [{ "name": "Networking", "date": "2026-12-12", "hours_needed": 20 }],
"from_date": "2026-11-30",
"hours_per_day": 2,
"days_off": ["sun"]
}The answer:
Exam countdown from 2026-11-30 mon
Networking, exam 2026-12-12 sat
- 12 days left, 11 study days left
- 20h still needed, 1.8h per study day
- On track: 20h fits in 11 study days at your hours.If the hours do not fit, the last line says Behind by the hours short, so you know how much time to add or how many hours to lower.
Reschedule missed days
reschedule_missed_days is for the week that did not go to plan. Give each exam the hours you have already done with hours_done, say which day you are starting again with start_date, and it takes the done hours off each exam before it spreads the hours left over the days that remain. It uses the same hours_per_day, hours_per_weekday and days_off as build_study_plan, and an exam with topics takes the done hours off its topics in proportion to their hours. Use it when you need to reschedule study plan hours after a break, without counting the same work twice.
Tool call:
{
"exams": [{ "name": "Networking", "date": "2026-12-12", "hours_needed": 10, "hours_done": 4 }],
"hours_per_day": 2,
"start_date": "2026-12-09"
}The answer:
Exams
- Networking on 2026-12-12 sat, 4h done, 6h left
Rescheduled from 2026-12-09
- 2026-12-09 wed Networking 2h (2h total)
- 2026-12-10 thu Networking 2h (2h total)
- 2026-12-11 fri Networking 2h (2h total)
Everything fits.The four hours already done come off the ten the exam needs, so the repaired plan starts on Dec 9 with six hours left to study.
Next review date
next_review_dates gives one date, the next review for one topic, instead of the whole schedule. It counts from the day you first studied the topic, and it skips any review that falls on or after the exam. The answer counts the reviews that have already passed. Pass from_date to say which day to count from, so the answer is repeatable. Use make_spaced_repetition_schedule when you want every review date.
Tool call:
{
"topic": "Routing",
"first_study_date": "2026-11-27",
"exam_date": "2026-12-12",
"from_date": "2026-11-29"
}The answer:
Next review for "Routing": 2026-11-30 mon, the 2nd review, in 1 day.
1 review has passed.The routing was first studied on Nov 27, so the first review fell on Nov 28 and has passed. The next one is Nov 30, and the review on Dec 27 is left out because it falls after the exam on Dec 12.
Development
npm install
npm run build
npm test
npm run demonpm run demo runs after the build and prints a sample plan for two exams, the what_to_study_today answer for one day and the first lines of the .ics file. It uses fixed dates, so the output is the same each time.
Pass start_date in tools to get repeatable results. The tests call every tool through a real MCP client, so they need no account or network.
More free student MCP servers
All free, open source and read only where they touch your accounts. Browse the full list at brightspacemcp.com/more-mcps.
Server | What it does |
D2L Brightspace for AI. Due dates with real submission status, grades, a target grade calculator and course files. | |
Canvas LMS for AI, read only. Due dates, missing work, grades and announcements. | |
Moodle for AI, read only. Due dates, overdue work, grades and announcements. | |
Google Classroom for AI, read only. Todos, due dates, missing work and grades. | |
GPA, grade conversion and the grade you need on the final, for AI. Works offline, no account. | |
APA, MLA and Chicago citations from a DOI, an ISBN or typed details. No account. | |
Search scholarly papers, find open access copies and related work through OpenAlex. No key needed. | |
Clean, convert, dedupe and lint BibTeX, RIS and CSL JSON reference lists, and make cite keys. Works offline. | |
Find free legal copies of textbooks on OpenStax, DOAB and Open Library, look up editions by ISBN and suggest cheaper older ones. | |
Chemistry and physics homework math: molar mass, balancing equations, grams to moles, unit conversion and significant figures. Works offline. | |
Offline writing metrics for essays. Word and page counts, readability scores, passive voice, repeated openers, filler words, long sentences and word limit checks, so students can check their work against assignment requirements. No account, no network. | |
Syllabus to calendar MCP server. Extract dates from syllabus text, build an ics calendar, expand recurring classes and merge calendars. Works offline, no account. | |
Job application tracker MCP server. Track internships, jobs, interviews and deadlines offline, see what is coming up, and export your list as CSV or Markdown. No account and no API keys. |
License
MIT
FAQ
How many hours a day before my exam?
You give the hours you can study on each day. The plan spreads work by urgency, so if time is tight it concentrates more near the exam. If there is not enough time, the plan gives a warning.
How do I space out revision?
Use make_spaced_repetition_schedule for a topic to get review dates at expanding intervals. You can also use next_review_dates for just the next one. Dates on or after the exam are marked to skip.
Is there a study planner offline?
Yes. This server runs on your computer with no account, no login and no internet needed. All date math runs locally.
What should I study today?
Use what_to_study_today with your exam dates and hours or with a plan. It lists sessions for today and any spaced repetition reviews due or late.
Can I add the plan to my calendar?
Yes. Use export_study_plan_ics to get an .ics file you can import into Google Calendar or Apple Calendar.
Available Tools
13 toolsassignment_milestonesAssignment milestonesBRead-only
List dated milestones that split a big assignment into steps between a start date and the due date. Dates can be plain text, like Dec 12 or in 3 weeks. Example prompt: "Break my 6 hour essay due 2026-11-20 into milestones."
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No | Custom steps with relative sizes. Defaults to research, outline, draft, revise, proofread. | |
| title | Yes | Assignment name. | |
| due_date | Yes | Due date. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| start_date | No | Defaults to today. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| estimated_hours | Yes | Estimated total hours. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context — that free-form dates are parsed ("Dec 12", "in 3 weeks") and that milestones are spread between a start date and due date — but with no output schema it never describes what a returned milestone looks like (names, dates, sequencing), leaving the result shape opaque.
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 short sentences, front-loaded with the core definition, followed by the date-format caveat and a single illustrative prompt. Nothing is redundant, though the leading "List" wastes the most prominent slot on a misleading verb.
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 5 parameters (3 required), full schema coverage and no output schema, most structured information is present elsewhere. The remaining gaps are material: no clarification of how this differs from `list_assignment_milestones`, and no hint of the return format for a generative planning tool whose output shape is otherwise undocumented.
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%, so `title`, `due_date`, `start_date`, `estimated_hours` and `steps` are all documented structurally — baseline 3 applies. The description reinforces the natural-language date handling already stated in the schema, and the example illustrates the interplay of hours and due date, but adds no new meaning about `steps`, `share`, or `start_date`'s default behavior.
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 concrete resource (dated milestones splitting an assignment between start and due date) and the example prompt reveals that it *generates* a breakdown rather than retrieving stored data. However, it opens with the verb "List", which makes it easily confused with the sibling `list_assignment_milestones`; no sibling is named or differentiated, so an agent cannot reliably choose between the two from the description alone.
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 example prompt ("Break my 6 hour essay due 2026-11-20 into milestones") implies the intended usage context — planning a large assignment with a due date. There is no explicit statement of when to prefer this over `list_assignment_milestones`, `make_study_plan`, or `spaced_repetition_dates`, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_study_planBuild a study planARead-only
Build a day by day study plan for one or more exams. Give each exam date and the hours you have per day, or set different hours for each weekday with hours_per_weekday, and get dated study sessions split by urgency, with a warning when the hours do not fit. Give an exam topics with their own hours and the plan names the topic of each day. Add reviews with the day you first studied each one to show Review: entries in the plan and in the calendar. Dates can be plain text, like Dec 12 or in 3 weeks. Example prompt: "Plan 3 weeks of study for my 4 exams, 90 minutes a day."
| Name | Required | Description | Default |
|---|---|---|---|
| exams | Yes | Exams with name, date, optional hours needed and optional topics with their own hours. | |
| reviews | No | Topics you are reviewing, with the day you first studied each one. | |
| days_off | No | Weekdays with no studying, like ["sun"]. | |
| start_date | No | First day to study. Defaults to today. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| hours_per_day | No | Study hours available on a study day. | |
| intervals_days | No | Days after the first study to review. | |
| hours_per_weekday | No | Study hours for each weekday, like [{day: "mon", hours: 2}, {day: "sat", hours: 6}]. Weekdays you leave out use hours_per_day, a weekday with 0 hours is a day off, and days in days_off are always left out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds real behavior beyond them — sessions are split by urgency, a warning is emitted when hours don't fit, and review entries surface as 'Review:' in the plan and calendar. It also discloses the flexible natural-language date parsing ('Dec 12', 'in 3 weeks'), which is non-obvious and not stated in 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?
Purpose is front-loaded in the first sentence and every subsequent sentence maps to a distinct capability (per-weekday hours, topics, reviews, date parsing). It is somewhat dense and contains awkward phrasing ('Give an exam topics with their own hours'), but no sentence is redundant.
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 7-parameter tool with no output schema, the description covers the important input interplay and sketches the output (dated sessions, urgency ordering, fit warnings, review entries). The remaining gap is sibling disambiguation — with make_study_plan present, the agent still cannot tell from this text which builder to call.
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 100%, so the baseline is 3, but the description adds genuine semantics: how hours_per_weekday interacts with hours_per_day, that topics-with-hours cause each day to be labeled with a topic, and that reviews require the first-study date. The worked example prompt ties the parameters together in a way the schema cannot.
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?
States a specific verb and resource: 'Build a day by day study plan for one or more exams,' which tells an agent exactly what is produced (dated sessions split by urgency). It never distinguishes itself from the close sibling 'make_study_plan' or 'plan_pomodoro_sessions', so in a 12-tool set the agent has no textual basis for choosing between them.
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?
Gives clear invocation context: supply each exam's date plus hours_per_day, or hours_per_weekday for per-weekday scheduling, and optionally topics or reviews. There are no exclusions or named alternatives, so the agent knows when it applies but not when a sibling is the better choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exam_countdownExam countdownARead-only
Check whether you are on track for each exam. For every exam it gives the days left, the study days left, the hours still to study, the hours to put in on each study day and a plain On track or Behind verdict, using the same hours per day, hours per weekday and days off as the plan tools. Give from_date to count from a fixed day. Dates can be plain text, like Dec 12 or in 3 weeks. Example prompt: "Am I on track for my exam on 2026-12-12 if I can study 2 hours a day?"
| Name | Required | Description | Default |
|---|---|---|---|
| exams | Yes | Exams with name, date, optional hours needed and optional topics with their own hours. | |
| days_off | No | Weekdays with no studying, like ["sun"]. | |
| from_date | No | The day to count from. Defaults to today. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| hours_per_day | No | Study hours available on a study day. | |
| hours_per_weekday | No | Study hours for each weekday, like [{day: "mon", hours: 2}, {day: "sat", hours: 6}]. Weekdays you leave out use hours_per_day, a weekday with 0 hours is a day off, and days in days_off are always left out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint) and world-openness, so the description's job is to say what the evaluation actually produces — and it does, listing every reported metric plus the On track/Behind verdict and the assumption set it reuses. It does not mention error handling for malformed dates or what happens to past-due exams, which keeps it out of the top band.
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 purpose and output list are front-loaded in a single dense sentence, followed by the two pieces of caller guidance that actually matter (from_date, flexible date formats). The example prompt earns its place by demonstrating the natural-language date input, though it slightly elongates an otherwise tight description.
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 no output schema and five parameters, the description correctly spends its words describing the returned metrics and the assumptions behind the verdict. An agent could call this correctly from the description plus schema; only edge behavior (past exam dates, malformed date strings) is left implicit.
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 100% and every parameter, including the nested topic hours and weekday-hour objects, is already documented in the input schema. The description adds only the consistency constraint that hours_per_day, hours_per_weekday and days_off should match the plan tools, and repeats the plain-text date parsing already stated in the schema — so baseline 3 is right.
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?
States a specific verb and resource — checking whether you are on track for each exam — and enumerates the exact outputs (days left, study days left, hours still to study, hours per study day, On track/Behind verdict). That framing cleanly separates it from the plan-creating siblings like make_study_plan and build_study_plan.
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?
Implies its role as the read-only check that runs against a plan, and tells the agent to pass from_date to count from a fixed day. It stops short of an explicit 'use this after make_study_plan, use X instead if you have no plan yet' routing statement, so the agent must infer the ordering from 'the same hours per day ... as the plan tools'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_study_plan_icsExport study plan as ICSARead-only
Turn a study plan into an .ics calendar file to import into Google Calendar or Apple Calendar. It builds the same plan as build_study_plan, with the same hours_per_weekday if you set one, and answers with the whole file, so save the answer as plan.ics and open it. Every study session becomes an all day event that shows as free, with the topics of the session in its description when the exam has topics, and every exam becomes an all day event that shows as busy unless include_exams is false. Add reviews with the day you first studied each one to add Review: all day events to the calendar. Dates can be plain text, like Dec 12 or in 3 weeks. Example prompt: "Export my plan for a networking exam on 2026-12-12, 6 hours, starting 2026-12-07, as an ICS file."
| Name | Required | Description | Default |
|---|---|---|---|
| exams | Yes | Exams with name, date, optional hours needed and optional topics with their own hours. | |
| reviews | No | Topics you are reviewing, with the day you first studied each one. | |
| days_off | No | Weekdays with no studying, like ["sun"]. | |
| start_date | No | First day to study. Defaults to today. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| hours_per_day | No | Study hours available on a study day. | |
| include_exams | No | Also add an all day event on each exam day. Set false for study sessions only. | |
| intervals_days | No | Days after the first study to review. | |
| hours_per_weekday | No | Study hours for each weekday, like [{day: "mon", hours: 2}, {day: "sat", hours: 6}]. Weekdays you leave out use hours_per_day, a weekday with 0 hours is a day off, and days in days_off are always left out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the readOnlyHint and openWorldHint annotations: it returns the whole file, study sessions become free all-day events, exams become busy all-day events unless include_exams is false, and reviews produce extra events. It also explains topic descriptions and date parsing behavior.
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 front-loaded with the core purpose and is appropriately sized for a complex export tool. It is somewhat long and includes details that could be tightened, but each part contributes to understanding the output.
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?
Given eight parameters, no output schema, and the need to understand a generated file, the description is complete enough. It explains the return value as a whole .ics file and describes the resulting calendar events, which are the key missing structured information.
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 100%, so the baseline is 3. The description still adds useful semantic context for parameters such as include_exams, hours_per_weekday, and reviews by explaining their observable effects on the generated calendar file.
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 gives a specific verb and resource: turning a study plan into an .ics calendar file for import into Google Calendar or Apple Calendar. It also distinguishes itself from build_study_plan by explaining that it builds the same plan but exports it as a calendar file.
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?
Usage is clear: use it when you need a calendar-importable file, and the example prompt reinforces the scenario. The relation to build_study_plan is mentioned, but it does not explicitly state when to choose this tool versus build_study_plan or other planning siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assignment_milestonesList assignment milestonesARead-only
List dated milestones that split a big assignment from a start date to the due date, with default steps for research, outline, draft, revise and proofread. Dates can be plain text, like Dec 12 or in 3 weeks. Example prompt: "Break my 6 hour essay due 2026-11-20 into milestones."
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No | Custom steps with relative sizes. Defaults to research, outline, draft, revise, proofread. | |
| title | Yes | Assignment name. | |
| due_date | Yes | Due date. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| start_date | No | Defaults to today. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| estimated_hours | Yes | Estimated total hours. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context beyond that: default steps, flexible plain-text date parsing, and that a start date defaults to today, though it says nothing about the shape of the returned milestones.
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 core capability is front-loaded in the first clause, and the default steps and date-format note follow logically. The example prompt is a useful illustration rather than filler, keeping the description tight overall.
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 no output schema, the description should clarify what the milestones look like (names plus computed dates, one per step). It implies this but never states the return shape, leaving a meaningful gap for a tool whose whole purpose is producing a dated list.
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%, so every parameter (title, due_date, start_date, estimated_hours, steps) is already documented with formats and defaults. The description only restates the default steps and plain-text date flexibility, adding no syntax the schema doesn't already carry.
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 states a specific resource (dated milestones splitting an assignment from start date to due date) and explains the default step breakdown, so the operation is concrete. It does not, however, distinguish this tool from the sibling 'assignment_milestones', and the verb 'List' understates that it generates/computes milestones rather than retrieving stored ones.
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?
An example prompt ('Break my 6 hour essay due 2026-11-20 into milestones') gives a clear usage context and the description notes that steps default to research/outline/draft/revise/proofread. It lacks explicit when-not conditions or a named alternative among the many sibling planning tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_spaced_repetition_scheduleMake a spaced repetition scheduleARead-only
Make a spaced repetition schedule for a topic: every review date at expanding intervals from the day you first studied it, with any date on or after the exam marked to skip. Use next_review_dates when you want the next review date only. Dates can be plain text, like Dec 12 or in 3 weeks. Example prompt: "When should I review what I learned today for my exam on 2026-11-30?"
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Topic you studied. | |
| exam_date | No | Exam date, if any. Reviews on or after it are skipped. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| intervals_days | No | Days after the first study to review. | |
| first_study_date | No | The day you first studied it. Defaults to today. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only and open-world behavior, and the description adds useful context: reviews expand from the first study date and dates on or after the exam are skipped. It also clarifies that dates may be plain text, which is relevant to the openWorldHint annotation.
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 short and front-loaded, immediately stating what the tool produces before giving the alternative and date-format guidance. The example prompt is compact and helps clarify intended usage without wasting space.
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 no output schema, the description usefully explains the returned schedule as every review date at expanding intervals with post-exam dates skipped. Combined with thorough parameter descriptions and read-only annotations, it is nearly complete, though the exact return shape is not specified.
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 100%, so the schema already documents topic, exam_date, intervals_days, and first_study_date. The description reinforces exam skipping and date formats but adds little parameter meaning beyond what the schema provides, making 3 the appropriate baseline.
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 states a specific verb and resource: making a spaced repetition schedule for a topic, with expanding review intervals and exam-date skipping. It also explicitly distinguishes the tool from next_review_dates, which covers only the next review date.
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 a clear usage condition by saying to use next_review_dates when only the next review date is wanted, implying this tool is for the full schedule. It does not address all sibling tools such as spaced_repetition_dates or make_study_plan, but the main alternative is covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_study_planMake a study planARead-only
Build a day by day study plan for one or more exams. Daily hours are shared across exams by urgency, study stops the day before each exam, and the answer warns when there is not enough time. Set hours_per_weekday when your weekdays and your weekend differ, and give an exam topics with their own hours to get the topic of each day as well. Add reviews with the day you first studied each one to show Review: entries in the plan and in the calendar. Dates can be plain text, like Dec 12 or in 3 weeks. Example prompt: "Plan 3 weeks of study for my 4 exams, 90 minutes a day."
| Name | Required | Description | Default |
|---|---|---|---|
| exams | Yes | Exams with name, date, optional hours needed and optional topics with their own hours. | |
| reviews | No | Topics you are reviewing, with the day you first studied each one. | |
| days_off | No | Weekdays with no studying, like ["sun"]. | |
| start_date | No | First day to study. Defaults to today. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| hours_per_day | No | Study hours available on a study day. | |
| intervals_days | No | Days after the first study to review. | |
| hours_per_weekday | No | Study hours for each weekday, like [{day: "mon", hours: 2}, {day: "sat", hours: 6}]. Weekdays you leave out use hours_per_day, a weekday with 0 hours is a day off, and days in days_off are always left out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses non-obvious behavior: hours are shared across exams by urgency, study stops the day before each exam, insufficient time produces a warning, and reviews generate Review entries in the plan and calendar. It does not describe the returned plan structure in detail, but it adds substantial behavioral context.
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 front-loaded with the core behavior and then moves through advanced options before ending with a concrete example prompt. It is dense but mostly purposeful; a few clauses are run-on, but there is little wasted text.
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 seven-parameter planning tool with no output schema, the description covers the main scheduling logic, warning behavior, and review entries. It leaves some gaps around the exact returned plan format and the roles of days_off and intervals_days, but the core behavior an agent needs to invoke it is present.
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 100%, so the baseline is 3. The description nevertheless adds useful semantics beyond the schema: why hours_per_weekday matters, how topics with own hours affect the daily topic assignment, and how reviews use the first study date. It does not cover days_off or intervals_days explicitly, keeping it from a 5.
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 states a specific verb and resource ('Build a day by day study plan for one or more exams') and explains the core output concept. It does not distinguish itself from the close sibling 'build_study_plan', leaving ambiguity about which plan-generation tool to choose.
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?
Usage is implied by the example prompt and by mentions of topics, reviews, and weekday hours, but there is no explicit 'use this when' guidance or comparison with alternatives such as build_study_plan, export_study_plan_ics, or make_spaced_repetition_schedule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
next_review_datesNext review dateARead-only
Give the date of the next review for one topic, so you get a single date instead of the whole schedule. It is the first review that is not on or after the exam and has not passed yet, counting from the day you first studied it. The answer counts the reviews that already passed. Use make_spaced_repetition_schedule when you want every review date. Dates can be plain text, like Dec 12 or in 3 weeks. Example prompt: "When should I review the routing I studied on 2026-11-01 for my exam on 2026-11-30?"
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Topic you studied. | |
| exam_date | No | Exam date, if any. Reviews on or after it are skipped. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| from_date | No | The day to count from. Defaults to today. Reviews before it have passed. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| intervals_days | No | Days after the first study to review. | |
| first_study_date | No | The day you first studied it. Defaults to today. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description explains the selection logic: the first review that is not on or after the exam and has not passed, counting from the first study date. It also discloses that dates can be accepted as plain text, which is useful behavioral context for invocation.
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 front-loaded with the core purpose and selection rule, followed by the key alternative and a concrete example. Each sentence contributes useful information without unnecessary repetition.
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 read-only, open-world scheduling query with a fully documented schema, the description is largely complete. It does not specify what happens when no future review exists, but that is a minor gap for this tool.
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%, so the input schema already documents all five parameters thoroughly. The description reinforces the relationship between exam_date, from_date, and first_study_date, but it does not add meaningfully new details about intervals_days beyond what the schema provides.
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 states a specific verb and resource: it gives the next review date for one topic, not the whole schedule. It also explicitly contrasts itself with make_spaced_repetition_schedule, making the tool easy to distinguish from a sibling.
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 clearly says to use make_spaced_repetition_schedule when every review date is wanted, which implies this tool is for a single next date. The guidance is strong but does not address the other similarly named sibling spaced_repetition_dates, leaving a small ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_pomodoro_sessionsPlan pomodoro sessionsARead-only
Plan pomodoro sessions for a total amount of study time: work blocks separated by short breaks, with a long break after a set number of sessions. Give start_time, like 09:00, to get clock times for each block. Example prompt: "Plan 3 hours of studying as pomodoro blocks with breaks."
| Name | Required | Description | Default |
|---|---|---|---|
| start_time | No | Clock time the first block starts, like 09:00. Leave it out to list the blocks as minutes from the start. | |
| work_minutes | No | Work block length in minutes. | |
| total_minutes | Yes | Total study time in minutes. | |
| long_break_minutes | No | Long break length in minutes. | |
| short_break_minutes | No | Short break length in minutes. | |
| sessions_before_long_break | No | Work sessions before a long break. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral detail beyond the annotations: work blocks are separated by short breaks, a long break follows a set number of sessions, and start_time changes output from minute offsets to clock times. It does not describe every return detail, but with readOnlyHint=true and openWorldHint=true already indicating a safe read-only planning operation, the added context is meaningful.
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 front-loaded with the core purpose and progresses logically to start_time behavior and an example. It is efficient overall, though the example prompt is somewhat redundant given the preceding explanation. No sentence is seriously wasteful, but the example could be omitted without losing much.
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 6-parameter tool with only one required parameter, full schema coverage, and no output schema, the description covers the main behavior and the key optional start_time formatting choice. It does not explain edge cases like total_minutes limits, but the schema handles those. An agent has enough context to invoke the tool correctly.
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%, so the input schema already documents all six parameters, including defaults and the start_time behavior. The description reinforces start_time with an example and explains the pomodoro structure, but it adds little parameter-specific meaning beyond what the schema already provides. Baseline 3 is appropriate.
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: plan pomodoro sessions for a total amount of study time. It clearly explains the structure of work blocks, short breaks, and long breaks. It does not, however, differentiate this tool from the very similar sibling pomodoro_plan, which leaves ambiguity for an agent choosing between them.
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 clear usage context: provide total study time, optionally give start_time like 09:00, and receive clock times per block. The example prompt reinforces the intended invocation. It does not say when to prefer this over pomodoro_plan or make_study_plan, so it lacks explicit alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pomodoro_planPomodoro planBRead-only
Plan pomodoro sessions: a work and break schedule for a total amount of study time, with a long break after a set number of sessions. Give start_time, like 09:00, to get clock times for each block. Example prompt: "Plan 3 hours of studying as pomodoro blocks with breaks."
| Name | Required | Description | Default |
|---|---|---|---|
| start_time | No | Clock time the first block starts, like 09:00. Leave it out to list the blocks as minutes from the start. | |
| work_minutes | No | Work block length in minutes. | |
| total_minutes | Yes | Total study time in minutes. | |
| long_break_minutes | No | Long break length in minutes. | |
| short_break_minutes | No | Short break length in minutes. | |
| sessions_before_long_break | No | Work sessions before a long break. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description usefully indicates the return shape (clock times per block when start_time is given, otherwise minutes from the start), which matters because there is no output schema, but it says nothing about edge cases such as totals that don't divide evenly into work blocks.
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?
Two tight sentences front-load the purpose and the start_time behavior, followed by a short example prompt. The example is slightly redundant with the preceding sentence but is 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?
With six fully documented parameters and no output schema, the description does give the return concept needed to interpret results. However, it leaves the biggest ambiguity for an agent – how this differs from the sibling plan_pomodoro_sessions – entirely unaddressed.
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 mostly restates what the schema already documents, including the 09:00 example for start_time. Baseline 3 is appropriate since the schema carries the parameter burden.
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?
States a specific verb (plan) and resource (pomodoro sessions) and summarizes the output shape: a work and break schedule with a long break after a set number of sessions. It is clear on its own, but it does nothing to distinguish itself from the near-identical sibling 'plan_pomodoro_sessions'.
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?
Usage is only implied through an example prompt ('Plan 3 hours of studying as pomodoro blocks with breaks'). There is no guidance on when to prefer this over plan_pomodoro_sessions or when a pomodoro plan is the wrong choice versus a full study plan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reschedule_missed_daysReschedule missed daysARead-only
Rebuild a study plan after missed study days. Give each exam the hours you have already done and it takes those off the exam, then spreads the hours that are left over the days from start_date, using the same hours_per_day, hours_per_weekday and days_off as the plan tools. When an exam has topics, the hours done come off the topics in proportion to their hours. The answer shows the hours done and the hours left for each exam, and the repaired plan from start_date. Dates can be plain text, like Dec 12 or in 3 weeks. Example prompt: "I missed three days and did 4 hours of networking. Reschedule the rest of my study."
| Name | Required | Description | Default |
|---|---|---|---|
| exams | Yes | Exams with name, date, optional hours needed, optional topics, and hours_done for the hours you already studied. | |
| days_off | No | Weekdays with no studying, like ["sun"]. | |
| start_date | No | First day of the repaired plan. Defaults to today. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| hours_per_day | No | Study hours available on a study day. | |
| hours_per_weekday | No | Study hours for each weekday, like [{day: "mon", hours: 2}, {day: "sat", hours: 6}]. Weekdays you leave out use hours_per_day, a weekday with 0 hours is a day off, and days in days_off are always left out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, it discloses the actual computation: hours_done are subtracted from the exam, topics absorb the deduction proportionally, and remaining hours are re-spread from start_date using the same capacity rules as the plan tools. It also states the return shape (hours done, hours left, repaired plan), consistent with a read-only tool that returns rather than persists a plan.
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 the purpose, then mechanics, then a worked example — a sensible ordering with little waste. The natural-language date explanation partly duplicates the schema's own date description, costing a bit of tightness.
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 5-parameter tool with no output schema, the description covers purpose, computation, capacity rules, and return contents. There is no output schema to defer to, and the description fills that gap by describing what the response contains.
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 100%, so the baseline is 3, but the description adds real semantics: it explains how hours_done interacts with hours_needed and topics, and that hours_per_day/hours_per_weekday/days_off behave identically to the plan tools. It doesn't address edge cases like hours_done exceeding hours_needed.
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 opening sentence names a specific verb and resource — 'Rebuild a study plan after missed study days' — and the scope (recover from missed days) clearly separates it from siblings like make_study_plan or build_study_plan. An agent can choose it without opening the schema.
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 establishes the trigger condition (missed study days, with hours already completed) and reinforces it with a concrete example prompt. It never names an alternative tool for the fresh-plan case, so routing to make_study_plan versus this tool is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spaced_repetition_datesSpaced repetition datesARead-only
List spaced repetition review dates for a topic at expanding intervals, so you revisit it just before you would forget it. Dates on or after the exam are marked to skip. Dates can be plain text, like Dec 12 or in 3 weeks. Example prompt: "When should I review what I learned today for my exam on 2026-11-30?"
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Topic you studied. | |
| exam_date | No | Exam date, if any. Reviews on or after it are skipped. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| intervals_days | No | Days after the first study to review. | |
| first_study_date | No | The day you first studied it. Defaults to today. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real behavioral detail beyond that: dates on or after the exam are 'marked to skip' rather than silently dropped, and dates accept natural-language input. It does not describe the shape of the returned list, which is a minor gap given no output schema.
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 the core action and scope in the first clause, followed by the exam-cutoff behavior and the input flexibility, then a concrete example prompt. The mid-sentence 'so you revisit it just before you would forget it' is explanatory filler that could be cut without loss.
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 read-only computation with full schema coverage and annotations, the description covers purpose, cutoff behavior, and accepted input formats adequately. The main omission is any hint of the return value (a list of dated entries with skip markers), which matters somewhat since there is no output schema.
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%, so all four parameters are already documented, including the flexible date formats and the exam cutoff rule. The description largely restates that ('Dates can be plain text, like Dec 12 or in 3 weeks'; 'Dates on or after the exam are marked to skip') without adding format or default semantics the schema lacks, so baseline 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?
States a specific verb and resource — 'List spaced repetition review dates for a topic at expanding intervals' — so an agent immediately knows it returns a computed date list rather than mutating anything. It does not, however, distinguish itself from close siblings like next_review_dates or make_spaced_repetition_schedule, which remain plausible alternatives on name alone.
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 example prompt ('When should I review what I learned today for my exam on 2026-11-30?') gives concrete context for when to reach for this tool. But there is no explicit when-not guidance and no routing against the several overlapping siblings, so the agent must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
what_to_study_todayWhat to study todayARead-only
Answer what to study on one day in a single call: the study sessions your plan gives for that day, with the topic of each session when the exams have topics, plus the spaced repetition reviews that are due that day or are late. Give the same exams and hours you use in build_study_plan, including hours_per_weekday, and the topics you are reviewing with the day you first studied each one. Leave date out and it uses today's date. Dates can be plain text, like Dec 12 or in 3 weeks. Example prompt: "What should I study today? I have a networking exam on 2026-12-12 and I studied routing on 2026-11-27."
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | The day to show. Defaults to today. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| exams | No | Exams with name, date and optional hours needed. Leave it out to show reviews only. | |
| reviews | No | Topics you are reviewing, with the day you first studied each one. | |
| days_off | No | Weekdays with no studying, like ["sun"]. | |
| start_date | No | First day of the plan. Defaults to the day you are asking about. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks. | |
| hours_per_day | No | Study hours available on a study day. | |
| intervals_days | No | Days after the first study to review. | |
| hours_per_weekday | No | Study hours for each weekday, like [{day: "mon", hours: 2}, {day: "sat", hours: 6}]. Weekdays you leave out use hours_per_day, a weekday with 0 hours is a day off, and days in days_off are always left out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds what is actually returned (per-day sessions, topics when exams have topics, due and late reviews) and that dates may be plain text. It doesn't discuss failure modes for ambiguous date phrases, but for a read-only query tool the added behavioral context is solid.
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?
Purpose and scope are front-loaded in the first clause, and the worked example prompt is genuinely useful for a natural-language-heavy input. There is minor redundancy — plain-text date formats appear in the description and again in every date property — but nothing is wasted at the sentence level.
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 8 all-optional parameters and no output schema, the description carries the return-value burden and does so (sessions, topics, due/late reviews) while noting the date default. It leaves days_off, intervals_days, and start_date entirely to the schema, which is acceptable given 100% schema coverage but leaves the plan-horizon behavior unstated.
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 100%, so the baseline is 3, but the description adds non-obvious semantics: exams/hours should mirror build_study_plan inputs (including hours_per_weekday), and reviews pair a topic with the day it was first studied. That cross-tool consistency guidance is value the schema cannot convey.
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?
States a specific verb and resource with explicit scope: the study sessions the plan gives for one day, each session's topic, plus spaced repetition reviews that are due or late. It names the sibling build_study_plan as the source of the same exams/hours, so an agent can tell how this differs from the full-plan tool.
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?
Gives concrete invocation guidance: pass the same exams and hours as build_study_plan, including hours_per_weekday, plus reviewed topics with their first-study day; omitting date means today. It stops short of explicit exclusions (e.g., 'for the whole schedule use make_study_plan instead'), so the when-not is only implied by the one-day framing.
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.
7 tool updates
v0.1.7- Changed
build_study_plan2 fields changed- added
Input schema / properties / intervals_daysAdded value: +{ + "default": [ + 1, + 3, + 7, + 14, + 30 + ], + "description": "Days after the first study to review.", + "items": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / reviewsAdded value: +{ + "description": "Topics you are reviewing, with the day you first studied each one.", + "items": { + "properties": { + "exam_date": { + "description": "Exam date, if any. Reviews on or after it are skipped. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks.", + "type": "string" + }, + "first_study_date": { + "description": "The day you first studied it. Defaults to the plan start date. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks.", + "type": "string" + }, + "topic": { + "type": "string" + } + }, + "required": [ + "topic" + ], + "type": "object" + }, + "type": "array" +}
- Added
exam_countdown - Changed
export_study_plan_ics2 fields changed- added
Input schema / properties / intervals_daysAdded value: +{ + "default": [ + 1, + 3, + 7, + 14, + 30 + ], + "description": "Days after the first study to review.", + "items": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / reviewsAdded value: +{ + "description": "Topics you are reviewing, with the day you first studied each one.", + "items": { + "properties": { + "exam_date": { + "description": "Exam date, if any. Reviews on or after it are skipped. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks.", + "type": "string" + }, + "first_study_date": { + "description": "The day you first studied it. Defaults to the plan start date. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks.", + "type": "string" + }, + "topic": { + "type": "string" + } + }, + "required": [ + "topic" + ], + "type": "object" + }, + "type": "array" +}
- Changed
make_study_plan2 fields changed- added
Input schema / properties / intervals_daysAdded value: +{ + "default": [ + 1, + 3, + 7, + 14, + 30 + ], + "description": "Days after the first study to review.", + "items": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / reviewsAdded value: +{ + "description": "Topics you are reviewing, with the day you first studied each one.", + "items": { + "properties": { + "exam_date": { + "description": "Exam date, if any. Reviews on or after it are skipped. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks.", + "type": "string" + }, + "first_study_date": { + "description": "The day you first studied it. Defaults to the plan start date. Use 2026-12-12, or plain text like Dec 12, next Friday or in 3 weeks.", + "type": "string" + }, + "topic": { + "type": "string" + } + }, + "required": [ + "topic" + ], + "type": "object" + }, + "type": "array" +}
- Changed
plan_pomodoro_sessions1 field changed- added
Input schema / properties / start_timeAdded value: +{ + "description": "Clock time the first block starts, like 09:00. Leave it out to list the blocks as minutes from the start.", + "type": "string" +}
- Changed
pomodoro_plan1 field changed- added
Input schema / properties / start_timeAdded value: +{ + "description": "Clock time the first block starts, like 09:00. Leave it out to list the blocks as minutes from the start.", + "type": "string" +}
- Added
reschedule_missed_days
11 tool updates
v0.1.3- First observed
assignment_milestones - First observed
build_study_plan - First observed
export_study_plan_ics - First observed
list_assignment_milestones - First observed
make_spaced_repetition_schedule - First observed
make_study_plan - First observed
next_review_dates - First observed
plan_pomodoro_sessions - First observed
pomodoro_plan - First observed
spaced_repetition_dates - First observed
what_to_study_today
TDQS
Scored across 13 tools
The set contains four near-identical tool pairs: make_study_plan/build_study_plan, pomodoro_plan/plan_pomodoro_sessions, assignment_milestones/list_assignment_milestones, and make_spaced_repetition_schedule/spaced_repetition_dates. Their descriptions restate the same behavior, so an agent cannot reliably pick one over the other. Only next_review_dates is clearly differentiated from its sibling (single date vs full schedule).
All names are snake_case, but the verb convention is erratic: verb_noun (make_study_plan, export_study_plan_ics, list_assignment_milestones) is mixed with noun-first/verb-less names (pomodoro_plan, exam_countdown, assignment_milestones, spaced_repetition_dates) and question-style names (what_to_study_today). Worse, identical operations are given different verbs (make_ vs build_, pomodoro_plan vs plan_pomodoro_sessions), so the pattern is not predictable.
13 tools sits in a reasonable numeric band for a study-planning server, but roughly a third are redundant duplicates of other entries. The effective unique surface is closer to nine, so the count is inflated rather than well-scoped.
The surface covers the study-planning lifecycle well: plan building, ICS export, rescheduling missed days, on-track checking, pomodoro blocks, assignment milestones, spaced repetition, and a daily 'what to study' aggregation. Gaps are minor, such as no persistence/management of saved plans or exams across calls.
Maintenance
Related MCP Connectors
Time and date math for AI agents: Unix timestamp conversion, DST-correct time zone conversion, durations, epoch arithmetic, cron schedules, and holiday countdowns. Eight tools, no key.
Deterministic time tools for AI agents: timezone conversion, business-day math, cron interpretation.
60+ units, live FX, timezones, and date arithmetic for AI agents.
Current time, timezone conversion & date math for AI agents. On Cloudflare Workers.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides comprehensive date, time, timezone, and calendar operations powered by Luxon, enabling AI agents to perform time calculations, timezone conversions, and temporal data handling across 400+ IANA timezones.28 npmMIT
- AlicenseNot gradedqualityDmaintenanceAutomates meeting logistics with tools for scheduling, availability checking, slot finding, timezone conversion, and recurring date generation. Eliminates the need for custom calendar logic by providing validated time operations and formatted invitations for applications and AI assistants.MIT
- AlicenseNot gradedqualityBmaintenanceEnables users to perform date arithmetic, compute differences, add durations, and retrieve calendar facts via natural language or direct tool calls.9 npmMIT
- FlicenseAqualityAmaintenanceEnables AI agents to perform deterministic date, time, timezone, holiday, and business-day arithmetic through MCP, including elapsed-time and calendar-aware operations that skip weekends and supported official holidays.1-