TimeTree-MCP
Click on "Install 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., "@TimeTree-MCPShow me my events for this week"
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.
timetree-mcp
A personal-use MCP server that lets Claude write events into your shared TimeTree calendar.
Typical flow: paste an event poster → Claude extracts date / location / title and writes a
short description → calls create_event → event shows up in the TimeTree app.
⚠️ Disclaimer (read before using)
TimeTree's official Connect API was shut down on 2023-12-22. This MCP talks to TimeTree's internal web API (the same one the web app uses), reverse-engineered.
This is unofficial and not affiliated with TimeTree, Inc. It may break at any time if TimeTree changes the internal API. Using it may violate TimeTree's Terms of Service.
Use a dedicated TimeTree account, not your main one. Invite that account to the shared calendar(s) you want to manage. If TimeTree flags the account, only the dedicated one is at risk.
Personal use only. Don't publish this, don't run it at scale, don't make commercial use of it.
Endpoint mapping informed by ehs208/TimeTree-MCP (MIT) and eoleedi/TimeTree-Exporter.
Related MCP server: TimeTree MCP Server
Install
Requires Node.js 18+.
cd C:\Users\user\Desktop\timetree-mcp
npm install
npm run buildConfigure
Copy .env.example to .env and fill in your dedicated account:
TIMETREE_EMAIL=dedicated-bot@example.com
TIMETREE_PASSWORD=...
LOG_LEVEL=INFOThe server reads .env from the project root at startup, so you do NOT need
to pass credentials on the claude mcp add command line (that would put them
in PowerShell history). Just register the binary:
claude mcp add timetree node "C:\Users\user\Desktop\timetree-mcp\dist\index.js"Or, if you prefer editing config directly (e.g. ~/.claude/settings.json):
{
"mcpServers": {
"timetree": {
"command": "node",
"args": ["C:\\Users\\user\\Desktop\\timetree-mcp\\dist\\index.js"]
}
}
}Restart Claude Code. /mcp should show timetree with the TimeTree tools,
including list_calendars, list_events, create_event, update_event,
poster_workspace_status, and mark_poster_processed.
Process-level env vars still override the .env file, so CI / one-off
invocations can set TIMETREE_PASSWORD=xxx node dist/index.js to bypass it.
Usage
Poster folder workflow
Use a single poster workspace folder, defaulting to:
C:\Users\daan\Desktop\timetree海報更新The MCP manages this structure:
timetree海報更新
├─ 00_待處理
├─ 10_已新增
├─ 20_已更新既有事件
├─ 90_需人工確認
└─ _logRules:
Put new poster images in
00_待處理.Start by calling
poster_workspace_status; it creates missing folders and lists only pending images.When
create_eventsucceeds with animage_pathfrom00_待處理, the poster is moved to10_已新增.When
update_eventsucceeds with animage_pathfrom00_待處理, the poster is moved to20_已更新既有事件.Use
mark_poster_processedwithstatus: "needs_review"for unclear posters; they move to90_需人工確認.Every move appends a CSV record under
_log.
If someone drops images directly into the workspace root, poster_workspace_status
moves them into 00_待處理 by default so future runs still process only new items.
The intended workflow:
Drop an event poster (image) into a Claude Code conversation.
Ask Claude something like: "請把這張海報的活動加到我的家庭共用行事曆。"
Claude reads the poster, calls
list_calendarsto find the right calendar_id, writes a short description, and callscreate_eventwith an ISO date.Open TimeTree on your phone — the event is there.
Tools
list_calendars
No arguments. Returns {calendars: [{calendar_id, name, members}], total}.
Use this first to know which calendar_id to write into.
create_event
Required: calendar_id (number), title (string), start (ISO 8601 string).
Optional:
end— ISO 8601. Defaults tostart + 1hfor timed events,start(same day) for all-day.all_day— boolean (defaultfalse).timezone— IANA timezone (defaultAsia/Taipei).location— string.description— short note, shows up as the event note in TimeTree.label_id— 1-10. 1=Emerald 2=Cyan 3=Blue 4=Brown 5=Black 6=Red 7=Rose 8=Pink 9=Orange 10=Violet.
Returns the created event with its uuid (useful if you later add update_event / delete_event).
poster_workspace_status
Creates/checks the poster workspace folders, moves loose root-level images into
00_待處理 by default, and returns pending image paths.
mark_poster_processed
Moves a poster out of 00_待處理 and writes the CSV log. This is automatic for
successful create_event and update_event calls when image_path points into
00_待處理, so this tool is mainly for manual corrections and needs_review.
Troubleshooting
Invalid email or password— TimeTree returned 401. Check the dedicated account credentials. If the account uses social login (Google / Apple), it won't have an email/password and this MCP can't authenticate it. Use a TimeTree account created with email/password signup.CSRF token missing or invalid— usually means the session expired between calls. The client auto-reauths once on 403; if you see this twice in a row, TimeTree may have changed the CSRF token location.Empty
list_calendarsresult — make sure the dedicated account is actually a member of at least one shared calendar.Build fails on Windows with esbuild ENOENT — known npm 10.8.x bug. Try
npm install --no-package-lockor upgrade npm to 10.9+.
Project structure
src/
index.ts # MCP server entry (stdio transport)
timetree.ts # auth + HTTP + API client + logger
tools.ts # MCP tools: list_calendars, create_event
types.ts # Zod schemas and TS typesFour files, ~700 LOC. MVP scope. Extend by adding more handlers to buildTools in tools.ts.
Available Tools
6 toolscreate_eventA
Create an event in a TimeTree public calendar that the authenticated account manages. Use this after reading an event poster: pass alias_code (from list_calendars), title, ISO start date, optional location, and a short description (1-2 sentences). Timezone defaults to Asia/Taipei. Returns the created event with id and public URL.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End time as ISO 8601 (same format as `start`). If omitted: timed events default to +2 hours (matching TimeTree web default), all-day events to the same day. | |
| start | Yes | Start time as ISO 8601. Examples: "2026-06-15T19:00" for a timed event, "2026-06-15" for all-day. Do NOT add a timezone suffix — pass `timezone` separately. | |
| title | Yes | Event title. | |
| all_day | No | Whether this is an all-day event (default false). | |
| label_id | No | Label index 1-10. Each public calendar defines its own 10-label palette; see list_calendars output for the actual colors. Default 1. | |
| link_url | No | Optional URL to attach to the event. | |
| location | No | Event location (e.g. "台北 信義區 ATT 4 Recharge"). | |
| timezone | No | IANA timezone (default "Asia/Taipei"). Examples: "Asia/Taipei", "Asia/Tokyo", "America/New_York". | |
| alias_code | Yes | Public calendar alias code (from list_calendars). | |
| image_path | No | Optional absolute path to a local image file (jpg/png/gif/webp). Will be uploaded as the event cover image. | |
| description | No | Short event description / notes. For poster events, write a 1-2 sentence summary here. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that timezone defaults to Asia/Taipei, that the calendar must be managed by the authenticated account, and that the return value includes the event id and public URL. This goes beyond the schema by adding operational 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?
Three sentences with a clear front-loaded purpose, a usage workflow, a default value note, and the return value. No filler; every sentence contributes valuable information.
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 the tool has 11 parameters and no output schema, the description adequately covers the main workflow, return value, and default timezone. It connects to sibling tools (list_calendars for alias_code, poster processing context) and leaves parameter details to the well-documented 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 the baseline is 3. The description repeats some parameter info (alias_code, title, start, location, description) but adds little semantic nuance beyond what the schema already provides. It does hint that description should be 1-2 sentences for poster events, which is a minor addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create an event') with a specific resource ('TimeTree public calendar'), and adds the scope 'that the authenticated account manages'. This distinguishes it from sibling tools like list_events and update_event, and includes a concrete usage directive ('after reading an event poster').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance ('after reading an event poster') and directs the user to obtain alias_code from list_calendars. It implies the creation context versus update_event, though it doesn't explicitly state when not to use or name alternatives for existing events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_calendarsA
List configured TimeTree public calendars. Without args, returns the calendars set in TIMETREE_CALENDAR_ALIASES env var. Pass alias_codes to override (each code is the short ID in the URL https://timetr.ee/p/). Returns calendar id, alias_code, name, category, subscription count, and label palette.
| Name | Required | Description | Default |
|---|---|---|---|
| alias_codes | No | Optional. List of TimeTree public calendar alias codes to fetch. If omitted, uses TIMETREE_CALENDAR_ALIASES env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the default env var behavior, override semantics, and the specific return fields (calendar id, alias_code, name, category, subscription count, label palette). It omits potential error conditions, but for a list tool this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero filler. The first sentence states the core function, and subsequent sentences add essential configuration context and return format. Efficiently front-loaded.
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 no output schema, the description lists the returned fields, covering what the agent needs to know. It explains default and override paths. It doesn't mention prerequisites or error behavior, but for a simple list tool this is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers alias_codes with a description, and the schema coverage is 100%. The description adds value by providing the URL template (https://timetr.ee/p/<code>) and clarifying that it overrides the env var, enriching the parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List configured TimeTree public calendars' with a specific verb and resource. It distinguishes from sibling tools like list_events by focusing on calendar listing, and explains the default vs override behavior.
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 explains when to use: without args it uses the TIMETREE_CALENDAR_ALIASES env var, and how to override with alias_codes, including the URL format for codes. No explicit alternatives are mentioned, but sibling tools are clearly event-related, making the context obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eventsA
List events in a TimeTree public calendar within a date range. Pass alias_code (from list_calendars) and ISO date strings for from/to. Timezone defaults to Asia/Taipei.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Exclusive end date as ISO 8601 (e.g. "2026-06-01"). | |
| from | Yes | Inclusive start date as ISO 8601 (e.g. "2026-05-01" or "2026-05-01T00:00"). | |
| timezone | No | IANA timezone (default "Asia/Taipei"). Used to interpret from/to wall-clock and to bucket all-day events. | |
| alias_code | Yes | Public calendar alias code (from list_calendars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It usefully discloses the public-calendar scope, date-range filtering, and timezone default behavior. However, it does not mention pagination, ordering, limits, return shape, or error/edge behavior, leaving moderate gaps.
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 two tight sentences, front-loaded with the action and resource. The second sentence efficiently provides the key usage prerequisites and timezone default. There is no filler or redundant elaboration.
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 list operation with a fully documented schema and no output schema, the description covers purpose, prerequisites, timezone default, and parameter provenance. It is slightly incomplete because it does not characterize the return data, but the operation is simple and the schema handles the parameter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all four parameters with 100% coverage, including the alias_code source and ISO date format. The description mostly restates these facts, adding little semantic value beyond reinforcing the parameter relationships. 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 opens with the specific verb 'List' and clearly identifies the resource: 'events in a TimeTree public calendar within a date range.' It also references alias_code from list_calendars, distinguishing this tool from sibling list_calendars and create/update event tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete guidance: use alias_code (from list_calendars) and ISO date strings for from/to, and notes the default timezone. It doesn't explicitly state when not to use it or mention alternatives, but the read-only list purpose and sibling tool names make appropriate usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_poster_processedA
Move one poster image out of 00_待處理 after processing and append the CSV log. Normally create_event/update_event do this automatically when image_path is inside 00_待處理. Use this for manual corrections or posters that need review.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Optional end time/date for the log. | |
| root | No | Optional poster workspace root. Defaults to TIMETREE_POSTER_WORKSPACE_ROOT or ~/Desktop/timetree海報更新. | |
| start | No | Optional start time/date for the log. | |
| title | No | Optional event title for the log. | |
| status | Yes | created -> 10_已新增, updated -> 20_已更新既有事件, needs_review -> 90_需人工確認. | |
| event_id | No | Optional TimeTree event id. | |
| event_url | No | Optional TimeTree public URL. | |
| event_date | No | Optional event date for the log, e.g. 2026-07-08. | |
| image_path | Yes | Absolute path to the poster image. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries some burden. It discloses that it moves an image (out of 00_待處理) and appends a CSV log, and mentions statuses map to folders. However, it doesn't disclose potential side effects like file system changes, whether it modifies existing files, or error conditions. For a file-moving tool, more could be said, but the description does provide meaningful behavioral context beyond the 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?
The description is two sentences, front-loaded with the verb and resource, then adds usage guidance. Every sentence earns its place, with no redundant fluff. It effectively conveys the core action and when to use it.
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 the tool mutates file system state and has 9 parameters, the description is reasonably complete. It explains the tool's role relative to create_event/update_event and covers the main use case. It lacks explicit mention of return values or error handling, but no output schema is expected. Slight gap: no list of parameters in the description, but the schema covers them all. A 4 is fair.
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 baseline is 3. The description adds value by connecting the 'status' parameter to folder destinations via an example ('created -> 10_已新增...') in the schema, and clarifies the tool's purpose. It doesn't add much beyond schema, but the schema itself is quite descriptive, so a 4 is justified for reinforcing the workflow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: 'Move one poster image out of 00_待處理 after processing and append the CSV log.' It names the verb (move/append), the resource (poster image, CSV log), and distinguishes from siblings by noting that create_event/update_event normally do this automatically, making this tool for manual corrections or review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool vs alternatives: 'Normally create_event/update_event do this automatically... Use this for manual corrections or posters that need review.' This gives clear context and exclusions, naming sibling tools and their relationship.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poster_workspace_statusA
Prepare and inspect the local poster workflow folder. Creates the standard folders if missing, moves loose image files from the root into 00_待處理 by default, and returns only pending poster image paths that should be read next.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | Optional poster workspace root. Defaults to TIMETREE_POSTER_WORKSPACE_ROOT or ~/Desktop/timetree海報更新. | |
| move_loose_images_to_pending | No | Whether to move loose image files in the root folder into 00_待處理 before listing. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full disclosure responsibility. It explicitly states side effects: creates folders and moves files, and notes the 'by default' behavior for the move operation. It does not mention error conditions, permissions, or whether moves are reversible, but covers the essential mutating actions clearly.
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 entire description is a single, well-structured sentence that front-loads the purpose and efficiently packs all key behaviors: side effects, default action, and return value. There is no redundant wording, and every clause earns its place.
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 appropriately explains the return value ('pending poster image paths'). It also covers side effects. However, it does not enumerate the 'standard folders' beyond 00_待處理, which could be useful for understanding the workspace structure. This minor gap prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with descriptions for both root and move_loose_images_to_pending. The description reiterates the default behavior of moving images but adds no new semantic information beyond the schema. Thus it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool's function with a specific verb ('Prepare and inspect') and resource ('local poster workflow folder'). It details three concrete actions: creating standard folders if missing, moving loose image files, and returning pending poster paths. This distinguishes it from sibling tools focused on calendar/event management or marking processed posters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: it prepares the workspace and returns items that 'should be read next,' indicating a precursor step. However, it does not explicitly mention alternatives or when not to use it. Sibling tools like mark_poster_processed are clearly different but not referenced, so the guidance is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_eventA
Update an existing event in a TimeTree public calendar (full replace — PUT). Use this to add/replace/remove a cover image on an existing event, or change title/time/etc. Pass event_id (from list_events) plus all the fields you want the event to have. For cover: pass image_path to upload+set a new one, or remove_image=true to clear it; if neither is passed, cover is CLEARED (PUT is full-replace). To preserve the current cover while editing other fields, you must re-upload via image_path.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End time ISO 8601. Defaults to +2h for timed events, same day for all-day. | |
| start | Yes | Start time ISO 8601 (e.g. "2026-06-15T19:00" or "2026-06-15"). | |
| title | Yes | Event title. | |
| all_day | No | Whether all-day (default false). | |
| event_id | Yes | Event id (from list_events). | |
| label_id | No | Label index 1-10 (see list_calendars for the palette). Default 1. | |
| link_url | No | Optional URL. | |
| location | No | Event location. | |
| timezone | No | IANA timezone (default Asia/Taipei). | |
| alias_code | Yes | Public calendar alias code (from list_calendars). | |
| image_path | No | Absolute path to a local image file. Upload + set as the new cover. | |
| description | No | Event note / description. | |
| remove_image | No | Set true to explicitly clear the cover image (ignored if image_path is also set). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses full-replace PUT semantics, the dangerous cover-clearing side effect when neither image_path nor remove_image is passed, and the need to re-upload to preserve the cover. This goes well beyond a generic 'update' statement and addresses the most surprising 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 about 90 words, front-loaded with the key purpose and method (PUT full replace). Every sentence adds operational detail, including the cover edge case and re-upload requirement. It's slightly dense but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation tool with no annotations or output schema, the description covers the core update semantics, cover handling, and required inputs. It doesn't explicitly state what happens to other omitted optional fields beyond the cover, but the 'full replace' phrase and 'all the fields you want' imply they would be reset. Overall, it's complete enough to guide correct use.
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?
With 100% schema coverage, the baseline is 3. The description adds meaningful value by explaining the interplay between image_path, remove_image, and the default clear behavior, and stresses that all desired fields must be passed and event_id comes from list_events. This supplements the already-detailed schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update an existing event in a TimeTree public calendar (full replace — PUT)' with a specific verb and resource. It also enumerates capabilities like adding/replacing/removing cover images and changing title/time, which distinguishes it from create_event.
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 explicitly says 'Use this to add/replace/remove a cover image on an existing event, or change title/time/etc.', giving clear when-to-use context. It also references passing event_id from list_events, which is a necessary prerequisite. It doesn't explicitly contrast with create_event, but the 'existing event' constraint makes the boundary obvious.
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. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
create_event - First observed
list_calendars - First observed
list_events - First observed
mark_poster_processed - First observed
poster_workspace_status - First observed
update_event
TDQS
Each tool has a clear, distinct purpose: calendar listing, event listing, event creation, event updating, poster workspace inspection, and poster processed marking. No two tools overlap in function, and the descriptions reinforce the boundaries.
Most tools follow a consistent verb_noun pattern (list_calendars, list_events, create_event, update_event, mark_poster_processed). The exception is poster_workspace_status, which uses a noun_noun structure, but it is still understandable and does not create confusion.
Six tools is well-scoped for the server's dual purpose of TimeTree calendar management and local poster workflow. Each tool earns its place without redundancy or unnecessary bloat.
The server covers the core lifecycle of events (list, create, update) and the poster workflow (status, mark processed, integrated image upload). Minor gaps include no delete_event or get_single_event, but these can be worked around with list_events and update_event, so the coverage is adequate for typical use.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Cronofy — read calendars, events and free/busy, and create, update or delete events.
MCP server providing attendance data queries via the CloudTime API.
The official Planning Center MCP server for interacting with your ministry's data.
A MCP server that works with Google Calendar to manage event listing, reading, and updates.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that integrates with the Tweek API to manage calendars, tasks, and custom colors. It enables users to perform full task CRUD operations, list accessible calendars, and fetch color preferences through secure authentication.1MIT
- AlicenseAqualityBmaintenanceUnofficial MCP server for accessing and managing TimeTree calendar data, including events, memos, and comments, with secure email/password authentication.1834114MIT
- AlicenseAqualityBmaintenanceMCP server for Apple Calendar and CalDAV providers. Enables listing, creating, updating, deleting events, and checking free/busy status with per-calendar write protection.6MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for the Teamup Calendar API, enabling event management, calendar listing, and available slot search.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Alvin0919/TimeTree-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server