Intentions MCP Server
by intentions-me · remote · no sign-in to list tools · v0.1.2 · published by GitHub user intentions-me
Personalized timing intelligence for AI agents — ask 'should I do X on this date?'
7 tools: 6 change things and 1 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things6Claude Code: ask: see these tools
- Only reads1Claude Code: allow: see these tools
5 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http intentions https://mcp.intentions.me/mcp --header 'Authorization: <your-authorization>'Findings
Matches of fixed checks, with the text they matched.
The server marks "intentions_ask_day" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
The server marks "intentions_ask_hour" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
The server marks "intentions_ask_year" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
The server marks "intentions_ask_month" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
The server marks "intentions_energy_chart" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
7 tools
Changes things 6Claude Code: ask
intentions_ask_dayCall when the user asks about timing a decision for a specific date, or wants to pick the best day from a multi-day window.1 finding
Why it is in this group
- The description's first verb is "call": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "intentions_ask_day" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
Description, as the server wrote it Call when the user asks about timing a decision for a specific date, or wants to pick the best day from a multi-day window. Covers trip dates, launch days, interview/meeting days, publish/send dates, travel, negotiation windows, relationship moments — any "when to X" question where the answer is a date ("should I X on April 23", "best day this month to Y", "下周四怎么样"). Modes: single date, compare up to 5 dates, or scan a range up to 31 days. On the free tier a range must sit inside the past week and the week ahead; single and compared dates are free anywhere in the window. Returns score (0-100), verdict, per-layer year/month/day breakdown (alerts + dimension signals), element breakdown, adverse alerts. For multi-month windows use `intentions_ask_month`; for hour precision use `intentions_ask_hour`.
Annotations the server declares
- title: Best day to act
- readOnlyHint: true
- openWorldHint: false
intentions_ask_hourCall when the user asks about timing within a specific day — best hour to act, morning vs afternoon, when during the day ("best time today to X", "morning or afternoon for Y", "几点去…1 finding
Why it is in this group
- The description's first verb is "call": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "intentions_ask_hour" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
Description, as the server wrote it Call when the user asks about timing within a specific day — best hour to act, morning vs afternoon, when during the day ("best time today to X", "morning or afternoon for Y", "几点去见面好"). Use for interview slots, meeting times, send/publish times, departure times, workout windows. Pro subscription required; on the free tier this returns a `subscription_required` error whose payload suggests `intentions_ask_day` for day-level analysis or `intentions_energy_chart` with period `weekly` / `yearly` for a visual overview (the caller LLM decides whether to retry). Modes: single (date+hour), compare up to 5 hour-pairs, or scan all 12 two-hour blocks of one day. Accepts any clock hour 0..23; internally mapped to the containing 2-hour block midpoint (0/2/4/…/22). 23:00–23:59 automatically rolls the effective day forward by one. Every output entry includes a `window { start, end }` local wall-clock span (`YYYY-MM-DDTHH:MM`, no timezone offset — interpret in the same frame as the input hour). Always cite this when presenting the time. Returns score, verdict, adverse alerts.
Annotations the server declares
- title: Best hour to act
- readOnlyHint: true
- openWorldHint: false
intentions_ask_monthCall when the user asks at month granularity or wants the best month from a multi-month window ("how is next month", "best month in 2026 to X", "下个月适合吗").1 finding
Why it is in this group
- The description's first verb is "call": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "intentions_ask_month" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
Description, as the server wrote it Call when the user asks at month granularity or wants the best month from a multi-month window ("how is next month", "best month in 2026 to X", "下个月适合吗"). Use for trip-month selection, launch months, content-calendar planning, quarterly/annual decisions. Modes: single month, compare up to 5 months, or scan up to 12 months (returns top 5). Single and compared months are free; scanning a range is free inside last year and this year, and Pro further out. Returns month score, element breakdown, adverse alerts. For day precision near the 4th–6th of a month use `intentions_ask_day`; for hour precision use `intentions_ask_hour`.
Annotations the server declares
- title: Best month to act
- readOnlyHint: true
- openWorldHint: false
intentions_ask_yearCall when the user asks about a full calendar year as a whole ("how is 2026", "今年怎么样", "what's next year like overall").1 finding
Why it is in this group
- The description's first verb is "call": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "intentions_ask_year" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
Description, as the server wrote it Call when the user asks about a full calendar year as a whole ("how is 2026", "今年怎么样", "what's next year like overall"). Returns year-level score, verdict, adverse alerts, and element dimensions. For month precision use `intentions_ask_month`; for day use `intentions_ask_day`. Window: currentYear-3 to currentYear+3 only.
Annotations the server declares
- title: Year outlook
- readOnlyHint: true
- openWorldHint: false
intentions_energy_chartCall when the user wants a visual overview rather than a narrative answer ("show me this week", "chart for today", "next 12 months", "看一下图").1 finding
Why it is in this group
- The description's first verb is "call": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "intentions_energy_chart" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
Description, as the server wrote it Call when the user wants a visual overview rather than a narrative answer ("show me this week", "chart for today", "next 12 months", "看一下图"). Returns an ASCII chart: `hourly` = 12 two-hour blocks of one day, `weekly` = 7 days, `yearly` = 12 months. The `hourly` mode emits the same hour-resolution scores as `intentions_ask_hour` and is Pro: on the free tier it returns a `subscription_required` error whose payload suggests alternatives. `weekly` is free for the past week and the week ahead (omit `date` for this week), and `yearly` for the months of last year and this year (omit `date` for this year); further out both are Pro too.
Annotations the server declares
- title: Energy chart
- readOnlyHint: true
- openWorldHint: false
intentions_set_birth_infoCall once to register the user's birth date/time/gender.No findings
Why it is in this group
- The name "intentions_set_birth_info" says "set": a word for a change.
Description, as the server wrote it Call once to register the user's birth date/time/gender. Each call is a complete replacement — all 6 fields must be supplied. For fields the user does not know or prefers not to share, pass `null` explicitly (e.g. `hour: null` for unknown birth time, `gender: null` for unspecified). To update just one field, first call `intentions_get_profile` to fetch the current values, merge the user's new input, then call this tool with the full merged payload. Changes to the date, gender or a known hour (including setting a known hour back to null) are limited to 3 per calendar month (UTC); filling in a previously-null hour, or the minute, is always free. `intentions_get_profile` returns how many are left. Returns the element profile.
Annotations the server declares
- title: Set birth profile
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 1Claude Code: allow
intentions_get_profileFetch the user's currently stored birth info.No findings
Why it is in this group
- The name "intentions_get_profile" says "get": a word for reading.
Description, as the server wrote it Fetch the user's currently stored birth info. Use this before `intentions_set_birth_info` when updating an existing profile so you can send back a complete merged payload. Returns { hasProfile, birthInfo: { year, month, day, hour, minute, gender } | null, profileChanges: { remaining, resetsAt } | null } where any unknown birth field (e.g. unknown hour) is returned as `null`. `profileChanges` is how many changes to the date, gender or a known hour are left this calendar month (UTC) and the ISO instant they come back; if `remaining` is 0, tell the user before attempting such a change. No quota cost.
Annotations the server declares
- title: Get birth profile
- readOnlyHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.2. Values in angle brackets are yours to fill in.
claude mcp add --transport http intentions https://mcp.intentions.me/mcp --header 'Authorization: <your-authorization>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__intentions__intentions_get_profile"
],
"ask": [
"mcp__intentions__intentions_ask_day",
"mcp__intentions__intentions_ask_hour",
"mcp__intentions__intentions_ask_year",
"mcp__intentions__intentions_ask_month",
"mcp__intentions__intentions_energy_chart",
"mcp__intentions__intentions_set_birth_info"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as intentions. Review it before you use it.
