Hespia MCP

34 tools for Claude and other MCP clients. Connect with this URL and sign in with Google; everything runs as you, under the app's own permissions.

https://mcp.hespia.com/mcp

Read 12

whoami Who am I

The person this connection is acting as (uid, email, name) and the orgs they belong to. Call this first — other tools use the same identity to resolve "me"/"my".

list_orgs List organizations

List the organizations you can access, with name and allowed sign-in domain.

list_pods List pods (teams)

List the pods/teams for an org, with mission, pod lead, members, and active/archived status.

orgId
Org id (see list_orgs).
includeArchived
Include archived pods (default false).
list_areas List areas of responsibility

List standing Areas of Responsibility for an org (each owned by one person, not quarter-scoped).

orgId
Org id (see list_orgs).
list_members List org members

List people in an org (auth members + directory-only entries used as KR/initiative owners).

orgId
Org id (see list_orgs).
get_okrs Get OKRs for a quarter

Fetch the full OKR tree (objectives → key results → initiatives → tracker) for a quarter. Omit `team` for an org-wide snapshot across all pods, or pass a pod/team id (or "__company__" for company-wide objectives) to scope to one pod.

orgId
Org id (see list_orgs).
year
Calendar year, e.g. 2026. Defaults to the current quarter.
quarter
Quarter 1–4. Defaults to the current quarter.
team
Pod/team id (see list_pods), or "__company__". Omit for all pods.
includeTracker
Include weekly tracker rows per KR (default true).
list_personal_tasks List tasks (todos)

List standalone personal tasks (todos) for a quarter. Defaults to your own tasks in the current quarter, so "what's on my list?" needs no arguments.

orgId
Org id (see list_orgs).
ownerId
Member id (see list_members). Omit for your own tasks.
year
Calendar year, e.g. 2026. Defaults to the current quarter.
quarter
Quarter 1–4. Defaults to the current quarter.
onlyOpen
Drop completed tasks (default false).
onlyToday
Only what's due today, overdue, or flagged for today (default false).
tag
Only tasks carrying this tag.
list_chases List owner chases

List open/answered/resolved owner 'chases' (diagnostic follow-ups the weekly review raised) for a pod and quarter.

orgId
Org id (see list_orgs).
teamId required
Pod/team id (see list_pods).
year
Calendar year, e.g. 2026. Defaults to the current quarter.
quarter
Quarter 1–4. Defaults to the current quarter.
list_checkins List weekly KR check-ins

The per-KR confidence reads (green/amber/red plus a 'why' note) recorded for one pod in one week. Defaults to the current week of the current quarter.

orgId
Org id (see list_orgs).
teamId required
Pod/team id (see list_pods).
year
Calendar year, e.g. 2026. Defaults to the current quarter.
quarter
Quarter 1–4. Defaults to the current quarter.
weekId
Tracker week id, e.g. "W3". Defaults to the current week.
list_messages List messages sent to a person

Messages on someone's Tasks page (see send_message), newest first. Defaults to your own open messages. Each carries its status (open/done/dismissed/superseded), any reply the person wrote back, for a meeting the notes they wrote afterwards (notes.text), and for each proposed task whether it was added (addedTaskId) or skipped (dismissedAt, with dismissNote saying why). Proposed actions come back with their status (proposed/approved/declined); an approved one you haven't done yet has doneAt null — do it, sending `approvedText` (the person's edit wins over your draft), then call complete_action. Check `ref` before re-sending something you already sent. `supersedes` / `supersededBy` link a card to the one it replaced and the one that replaced it.

orgId
Org id (see list_orgs).
toUserId
Whose inbox (see list_members). Defaults to you.
status
Filter by status. Omit for every message, whatever its status.
awaitingAgent
Only messages with an approved action you haven't completed yet. Ignores `status` — a closed card can still carry work for you.
list_notes List plan notes

List the notes on the Plan view, most recently edited first. Filter by pod, quarter or text. Rows carry a short snippet, not the body; call get_note for the full markdown.

orgId
Org id (see list_orgs).
team
Pod/team id (see list_pods), or "__company__". Omit for every pod.
year
Only notes filed under this year.
quarter
Only notes filed under this quarter (1–4).
search
Only notes whose title, snippet or tags contain this text.
limit
Max rows (default 50).
get_note Read a plan note

Read one note: title, body as markdown, tags, pod and quarter. Takes the note id, or a Plan link (…/plan/<noteId>) as-is. The markdown is the saved copy; while someone is typing in the note it can trail their screen by a second or two.

noteId required
Note id, or a Plan link ending in /plan/<noteId>.

Write 22

create_objective Create an objective

Create an objective in a pod for a quarter. Use "__company__" as `team` for a company-wide objective.

orgId
Org id (see list_orgs).
team required
Pod/team id (see list_pods), or "__company__".
year
Calendar year, e.g. 2026. Defaults to the current quarter.
quarter
Quarter 1–4. Defaults to the current quarter.
title required
Objective title.
icon
Optional icon/emoji.
color
Optional color token.
areaId
Optional Area of Responsibility id (see list_areas).
alignedTo
Optional company objective id this aligns to.
update_objective Update an objective

Patch fields on an existing objective. Only provided fields change.

objId required
Objective id.
title
 
icon
 
color
 
areaId
Area of Responsibility id, or empty string to clear.
alignedTo
Company objective id, or empty string to clear.
team
Move to a different pod/team id.
create_key_result Create a key result

Add a key result under an objective.

objId required
Parent objective id.
title required
Key result title.
displayId
Short label, e.g. "KR1".
isHeadline
Mark as the objective's headline KR.
unit
Measurement unit, e.g. "%", "$".
target
Target value, e.g. "20%" or 20.
update_key_result Update a key result

Patch fields on a key result. Only provided fields change.

objId required
Parent objective id.
krId required
Key result id.
title
 
displayId
 
isHeadline
 
unit
 
target
 
create_initiative Create an initiative

Add an initiative under a key result.

objId required
Parent objective id.
krId required
Parent key result id.
text required
Initiative description.
status
Initiative status (e.g. "todo", "in_progress", "done").
ownerId
Owner member id (see list_members).
dueDate
Due date, ISO string.
update_initiative Update an initiative

Patch fields on an initiative. Only provided fields change.

objId required
Parent objective id.
krId required
Parent key result id.
initId required
Initiative id.
text
 
status
 
ownerId
 
dueDate
 
delete_objective Delete an objective

Permanently delete an objective with all its key results, initiatives and tracker weeks. No undo. Only when the person asked for this one to go. Org admins only.

objId required
Objective id (see get_okrs).
delete_key_result Delete a key result

Permanently delete a key result with its initiatives and tracker weeks. No undo. Only when the person asked for this one to go.

objId required
Parent objective id.
krId required
Key result id.
delete_initiative Delete an initiative

Permanently delete one initiative from a key result. No undo. Only when the person asked for it.

objId required
Parent objective id.
krId required
Parent key result id.
initId required
Initiative id.
update_kr_progress Record a KR's weekly numbers

Write one week's tracker values for a key result. Pass `cells` (a column-name → value map, matched against the KR's trackerCols) or `values` (raw array, positional). Defaults to this week. Merges, so columns you omit keep their current value.

objId required
Parent objective id (see get_okrs).
krId required
Key result id (see get_okrs).
weekId
Tracker week id, e.g. "W3". Defaults to the current week.
cells
Column name → value, e.g. {"Signups": 120}. Names come from the KR's trackerCols.
values
Positional values aligned to trackerCols. Use instead of `cells` when you know the order.
record_checkin Record a weekly KR check-in

Set this week's confidence read on a key result (green / amber / red) plus an optional 'why' note. One check-in per KR per week — recording again overwrites it.

orgId
Org id (see list_orgs).
teamId required
Pod/team id (see list_pods).
objId required
Parent objective id (see get_okrs).
krId required
Key result id (see get_okrs).
confidence required
How confident the owner is of hitting this KR.
note
Why — the one line that makes the colour mean something.
year
Calendar year, e.g. 2026. Defaults to the current quarter.
quarter
Quarter 1–4. Defaults to the current quarter.
weekId
Tracker week id, e.g. "W3". Defaults to the current week.
create_task Add a task (todo)

Add a standalone task. Defaults to you as the owner and the current quarter, so adding a todo needs nothing but its text. Assign it to someone else with ownerId, and set priority/impact/effort when you know them. Nothing here guesses which key result the task serves — pass `link` if you know it (see get_okrs), otherwise the owner is asked in the app.

orgId
Org id (see list_orgs).
text required
What the task is.
ownerId
Who it's for (see list_members). Defaults to you.
dueDate
Due date as "YYYY-MM-DD".
today
Flag it for Today (the flag expires overnight).
description
Longer notes.
tags
Tags, e.g. ["eng", "deep-work"]. Normalized to lowercase-dashed.
subtasks
Steps within the task.
repeat
Recurrence. Completing a repeating task mints the next occurrence.
priority
How much it matters: high (today, or the day is a loss), medium (this week), low (whenever it fits). Left unset when omitted — "nobody has judged this" is a different fact from "low".
impact
How much it moves a key result: high (moves a key result on its own), medium (a real step toward a key result), low (keeps things running; no key result moves). Not the same as priority — urgent and important are different claims. Left unset when omitted.
effort
Rough size: quick (under 15 minutes), short (up to an hour), half (a few hours of real focus), deep (needs a cleared calendar). Left unsized when omitted.
link
Optional link to the OKR this task serves (see get_okrs).
year
Calendar year, e.g. 2026. Defaults to the current quarter.
quarter
Quarter 1–4. Defaults to the current quarter.
update_task Update a task (todo)

Patch a task: reword it, move its due date, retag it, reassign it, set its priority/impact/effort, tick it off. Only provided fields change.

orgId
Org id (see list_orgs).
taskId required
Task id (see list_personal_tasks).
text
 
done
Tick or untick it.
dueDate
"YYYY-MM-DD", or empty string to clear.
today
Flag or unflag it for Today.
description
 
tags
Replaces the whole tag list.
subtasks
Replaces the whole step list.
ownerId
Reassign to a different member.
repeat
 
priority
 
impact
 
effort
 
link
Optional link to the OKR this task serves (see get_okrs).
complete_task Complete a task (todo)

Tick a task off. If it repeats, its next occurrence is created automatically. Use update_task with done:false to un-tick one.

orgId
Org id (see list_orgs).
taskId required
Task id (see list_personal_tasks).
delete_task Delete a task (todo)

Permanently delete a task. Prefer complete_task for work that's finished — deleting loses the completion record that throughput and streaks are counted from.

orgId
Org id (see list_orgs).
taskId required
Task id (see list_personal_tasks).
attach_signal Attach an execution signal to a KR

Link a real external artifact (merged PR, closed issue, deploy, message) to a key result so Hespia can ground coaching in actual execution. Idempotent on (source, externalId).

orgId
Org id (see list_orgs).
teamId required
Pod/team id (see list_pods).
year
Calendar year, e.g. 2026. Defaults to the current quarter.
quarter
Quarter 1–4. Defaults to the current quarter.
source required
Where the signal came from.
externalId required
Stable id of the artifact in its source system (e.g. PR number, issue key). Used for idempotency.
kind
What kind of artifact this is.
title
Human-readable title, e.g. the PR/issue title.
url
Link back to the artifact.
krId
Key result id this signal is evidence for (see get_okrs).
objId
Objective id, if the signal isn't tied to a specific KR.
occurredAt
When the artifact happened (ISO string, e.g. PR merge time). Defaults to now.
send_message Send a message to someone's Tasks page

Post an update, a question, an alert or a meeting prep to a person's Tasks page, optionally with tasks you think they should add. They see it at the top of their list and can add or skip each task with one click, reply, mark it done or dismiss it. A meeting (kind: meeting, with meetingAt and people) sorts by when it is and asks for notes once it has passed. Read the outcome back with list_messages. Defaults to you as the recipient. Keep the body short — it's read on a task list, not in an inbox. Anything longer (a digest, a report, a table) goes in `details` as markdown; the card folds it under the body. Before sending, list_messages and check `ref` so a re-run doesn't send the same prep twice. Tasks are things THEY do; actions are things YOU offer to do (a drafted reply, a Slack post) that wait for their Approve — never do one before it's approved. Sending the same kind of card every day? Pass `supersedes` with yesterday's id so the old one closes instead of stacking up.

orgId
Org id (see list_orgs).
title required
One line. What this is about.
body
The message itself. Plain text; a few short lines at most.
details
The long form, as markdown: headings, bullet lists, tables, links. Shown folded under the body until they open it. Use it for a digest or report instead of cramming the body. Capped at 20000 characters.
toUserId
Who it's for (see list_members). Defaults to you.
from
Which agent is speaking, e.g. "brain" or "release-bot". Defaults to "brain".
kind
update (FYI), question (needs an answer), alert (needs action now), meeting (prep for a meeting; give meetingAt and people). Defaults to update.
meetingAt
Meetings only. When it starts, ISO 8601 with offset ("2026-09-15T14:30:00+05:30") or a bare "YYYY-MM-DD" for all day.
people
Meetings only. Who's in the room, as names. Not user ids — most attendees are outside the org.
ref
Your own handle for this message (a calendar event id, "2026-09-15-ica-1430"). Returned by list_messages so a re-run can find what it already sent.
tasks
Tasks to propose. Each becomes a one-click "Add task" button in the app.
actions
Actions you offer to take. Each shows Approve / Edit / Decline in the app. Poll list_messages(awaitingAgent) and complete_action when done.
link
Optional link back to the source (a PR, a doc, a dashboard).
taskId
The existing task this message is about, if any (see list_personal_tasks).
supersedes
Pass the id of the card this one replaces, for example yesterday's Top 3 (find it with list_messages and your `ref`). The old card closes as superseded and moves to history. It stays open if it went to someone else, came from a different agent, or still has a task, an action or approved work waiting; the result says why. This message is sent either way.
complete_action Mark an approved action as done

After you've carried out an action the person approved (see list_messages with awaitingAgent), stamp it done with a word on the result. Only approved, not-yet-done actions on a message you sent can be completed.

orgId
Org id (see list_orgs).
messageId required
The message id from list_messages.
actionId required
The action's id within the message (a1, a2, …).
result
What happened, briefly: "sent", a message link, a thread id.
create_note Create a plan note

Start a new note on the Plan view, with a title and a markdown body. File it under a pod with `team` so it shows on that pod's Plan tab. Defaults to the current quarter and to you as owner.

orgId
Org id (see list_orgs).
title required
Note title.
markdown
The body, as markdown. Headings, lists, [ ] task lists, tables, links.
team
Pod/team id (see list_pods), or "__company__". Omit for a note on no pod.
year
Calendar year, e.g. 2026. Defaults to the current quarter.
quarter
Quarter 1–4. Defaults to the current quarter.
tags
Tags, e.g. ["planning"].
update_note Update a plan note

Change a note's title, tags, or whole body. `markdown` REPLACES the body: read it first with get_note and send back the full edited text. To add to the end, use append_to_note instead. Safe while someone has the note open: the edit merges into their screen live, and text they type at the same moment is kept.

noteId required
Note id, or a Plan link ending in /plan/<noteId>.
title
 
markdown
The new full body, as markdown.
tags
Replaces the whole tag list.
force
Rewrite even if the note holds content markdown can't express. Only after the person agrees.
append_to_note Add to the end of a plan note

Add markdown to the end of a note without touching what's there. The safest way to write into a note someone is working in: it shows up on their screen live.

noteId required
Note id, or a Plan link ending in /plan/<noteId>.
markdown required
What to add, as markdown.
delete_note Delete a plan note

Permanently delete a note. No undo. Only when the person asked for this one to go. Objectives already made from the note are not touched.

noteId required
Note id, or a Plan link ending in /plan/<noteId>.

This list is generated from the server's own tool registry, so it is exactly what tools/list returns. Machine-readable copy at /tools.json.