Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoThe port the HTTP server listens on.
AIMYEAR_TZNoThe timezone used by the server.
AIMYEAR_UIDNoThe Firebase UID of the one person the server acts as, used when running over stdio.
AIMYEAR_TOKENSNoStatic `token=uid` pairs, used when running the HTTP server (for Claude Code scripts, the menu bar app and the scheduler).
AIMYEAR_PROJECTNoThe Google Cloud / Firebase project ID the server runs against.
AIMYEAR_BASE_URLNoThe public URL of the server; used as the OAuth issuer (for example `https://mcp.aimyear.com`).
AIMYEAR_WORKPLACENoWorkplace setting for the server.
AIMYEAR_ALLOWED_ORIGINSNoExtra browser origins allowed by CORS.
AIMYEAR_SERVICE_ACCOUNTNoPath to the Firebase admin service account JSON. Defaults to `~/.aimyear/service-account.json`, falling back to Application Default Credentials.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_goalA

The one yearly goal: metric, starting value, current value, target, deadline, levers (hard/comfortable) and other projects. Call first in most flows.

check_goal_draftA

Check a goal that is not saved yet against the rubric (countable metric, value today, target, deadline within 12 months, pace per week). Changes nothing. Returns problems[] and next_question: loop until problems is empty, then call set_goal.

set_goalB

Save the yearly goal, or replace it with the next one. Rejects with problems[] if the rubric fails. Keeps levers and projects. area is which of the five life areas the goal belongs to.

record_progressA

Record the current value of the goal metric, e.g. "I now have 4 customers". One value per date: calling again for the same date corrects it. Says when the target is reached.

set_leversA

Replace the list of levers: the recurring kinds of goal work. At least one must be kind=hard (the work the user avoids). keywords/repos are hints for classifying sessions from their task text. Pass existing ids to keep them.

set_projectsA

Replace the list of other projects (paid work, other products, life routines), so their sessions count as other work or life, not goal work. Pass the whole list: leave one out to remove it, change its name or hints to edit it. Pass existing ids to keep them.

get_pathA

Milestones with pace (ahead/on_pace/behind) and their steps. current_milestone_id is the one to work on.

set_milestonesA

Replace the list of 2–6 ordered milestones under the goal, each with a metric, target and due date before the goal deadline. Pass each existing id, or that milestone's steps are deleted. To change one milestone, use edit_milestone.

edit_milestoneA

Change one milestone: title, metric, target, due date or status. status=retired drops it without finishing; done or retired moves the path to the next milestone. Its steps are kept.

add_stepsA

Add concrete steps to a milestone. A step is an action that fits a few work blocks ("email 10 people from the waitlist"), not "do marketing". Abstract steps are rejected. Put a hard-lever step first; preparation only where it blocks it (warns otherwise).

edit_stepB

Change one step: title, status (todo/doing/done), order, lever, estimate.

delete_stepC

Delete one step from the path.

next_stepsB

Open steps of the current milestone, hard-lever steps first: the candidates for today's main step.

get_commitmentsB

Recurring weekly time: commitments (school runs, training, classes), overhead (sleep, meals) and focus windows.

set_commitmentsA

Replace the list of recurring weekly commitments. days are ISO weekdays 1=Mon..7=Sun; use timesPerWeek instead when there are no fixed days. Pass existing ids to keep them.

get_capacityB

Weekly time budget out of 168 hours: overhead, hours committed per area, focus windows, and what is still unaccounted for. Nothing is assumed.

get_planning_contextA

Everything needed to plan a day: goal and pace, next_steps, yesterday's summary and undone items, week balance, days since a hard lever. Defaults to tomorrow. The agent plans; then call set_plan.

get_planC

The plan for a day (default today).

set_planA

Replace the plan for a day. Exactly one item must have isMainStep=true (the step toward the goal), ideally linked by stepId from next_steps and on a hard lever. Warns when no item is on a hard lever. Other items: paid work, family, workout, etc. with their area. Items that stay keep their done state.

edit_plan_itemA

Change one plan item: mark it done or not done, rename it, change its estimate, area or links, or make it the main step. done=true also completes its linked path step.

get_routinesB

Routines: small steps that repeat on fixed weekdays, e.g. "talk with one person on Reddit". The server adds them to each matching day's plan, so every device and agent sees the same checks.

set_routinesA

Replace the list of routines: small steps that repeat on fixed weekdays. From today on, each one appears as a plan item on its days; tick it with edit_plan_item, skip it for one day with delete_plan_item. set_plan keeps them. days are ISO weekdays 1=Mon..7=Sun, default every day. Pass existing ids to keep them.

delete_plan_itemB

Remove one item from a day's plan. A routine item is skipped for that day only.

set_day_modeA

Tracking for a day: full (everything recorded, the default) or off (timer and reminders only, nothing stored, no plan required).

get_nowA

What is happening now: running sessions with attention shares, the timer, today's main step, today's minutes, the streak and a one-line nudge.

start_sessionA

Start a session of work and, if none is running, the timer. Returns a verdict: ok | stop | plan_first. On "stop" NO session is created: relay the message, ask the user; if they insist, call again with override=true. Several sessions may run at once (two terminals) and share attention by weight.

add_noteB

Add a one-line note to a running session (this connection's, or session_id). May classify a session that was unclassified.

split_attentionA

Set attention weights of the running sessions at once, e.g. {"abc": 0.7, "def": 0.3}. Applies to the whole session. For a finished session use edit_session.

stop_sessionA

Stop a running session (this connection's, or session_id) with a summary and outcome. The timer keeps running for other sessions. outcome=done completes the linked plan item or path step. Refuses a session that already ended: use edit_session for that.

stop_timerA

Stop the timer ("pause", "stop", "stand up") and every running session with it. There is no paused state: resuming starts a new session. Pass summary and outcome to save them on the sessions it closes, or call stop_session first. Returns the break length.

add_sessionB

Add past time that was not timed: minutes (ending now, or at end), or start+end as HH:MM on date. For calls, children, workout, paid work, or work done away from the agent.

edit_sessionA

Fix a session, running or finished: start and end (HH:MM on date; an end before the start means it ran past midnight), task, area, project, lever, step, plan item, summary, outcome, attention share, weight. It is classified again after a change. Use it when a timer was forgotten or a session was labelled wrong.

delete_sessionA

Delete a session, running or finished, so it no longer counts. Without session_id it deletes this connection's running session.

list_sessionsA

Sessions in a date range (default the last 7 days), with ids, optionally filtered by area or project.

find_gapsA

Untimed stretches of 20+ minutes between the first and last session of a day. Ask the user what happened there.

summarize_dayA

Full summary of a day: wall and attention minutes per area, classification and lever, sessions, gaps, overlaps, overrides.

summarize_weekB

A week, Monday to Sunday (to today for the current week): main-step days, goal share, hard share, area balance, overrides, streak, milestone pace.

find_leaksB

Where time leaks: comfortable goal work while the main step waited, overrides, unplanned work, gaps, switching, missed main steps, days without a plan. Default the last 7 days.

get_settingsC

Timezone, where reminders go (desktop or mobile), and timer settings.

set_settingsB

Change any of: timezone (IANA name, e.g. Europe/Madrid; it sets where each day starts and ends), workplace for reminders, stand-up interval workMin, breakMin, longBreakEvery, longBreakMin, standup on/off.

add_deviceA

Register a device token so server reminders (stand up, break over) can reach it. The phone app registers itself; use this for testing or a manual token.

list_devicesB

Which devices can receive reminders, and when each was last seen.

delete_deviceB

Remove a device so it stops receiving reminders.

Prompts

Interactive templates invoked by user choice

NameDescription
plan-tomorrowPlan tomorrow: one main step toward the goal, then the rest of life.
evening-reviewReview today and close the day.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 43 tools

Disambiguation4/5

Most tools target clearly distinct resources and actions, and the descriptions provide useful boundaries. A few pairs, especially stop_timer vs stop_session and start_session vs add_session, could still be confused by an agent in a hurry, but the overlap is manageable.

Naming Consistency4/5

The set overwhelmingly follows a snake_case verb_noun convention, such as get_goal, set_plan, add_session, and delete_device. Minor deviations like next_steps and get_now are readable but slightly less predictable.

Tool Count2/5

With 43 tools, the server is well beyond the typical MCP sweet spot and feels heavy. Many set_* and edit_* tools could likely be consolidated into fewer, more general operations without losing clarity.

Completeness5/5

The surface covers goal definition, milestones, steps, levers, projects, commitments, routines, capacity, daily planning, session tracking, summaries, devices, and settings. No major lifecycle gap is apparent for the stated personal goal and time-tracking domain.

Maintenance

ActivityMaintained
ResponsivenessResponsive