Persome
Local-first personal memory and model server for trusted MCP agents on macOS.
Connector by Intuition-Lab · GitHub account verified by the MCP Registry
Chalk Labs
Need help deploying Persome?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/intuition-lab-personal-model
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: agent-memory
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 10 read · 6 write · 0 delete · 6 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 22
Read from the source code; the running server may list different tools.
Read 10 · Look things up without changing anything.
get_model_snapshotget_pending_model_workget_schemalist_memoriesquery_health_metricsread_memoryread_receiptread_recent_capturesearchsearch_captures
Write 6 · Create, change, send or run things.
behavior_patternscorrect_memoryentity_graphrelated_eventsrememberresolve_evidence
Not yet classified 6 · We could not tell from the name and description.
attention_trajectorycurrent_contextpersome_setup_checkprocess_pending_model_workrecent_activityverify_fact
Files it touches
- Any path the agent passes to its tools
Tools (22)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
attention_trajectoryWhere the user's attention went, with DWELL (time actually spent). Answers "what did I spend my attention / focus / time on today / this morning / the last N hours". Prefer this over guessing from raw activity whenever the question is about focus or time spent. Built from the timeline's per-block attention locus (the code-resolved focused region of each window): contiguous runs of the same surface — a window, a terminal pane, a web page — coalesced with their dwell. Returns: - ``by_dwell``: surfaces ranked by TOTAL time spent, longest first (what actually mattered), each with ``dwell_…
behavior_patterns**CALL FIRST for "who is this user / how do they work" context** — the learned behavior model, not raw memories. Returns the RESIDENT layer of the user's memory: a `root` apex (one synthesized "who is this person, what matters to them now" narrative) plus promoted behavior regularities (`faces` — patterns that survived two independent extraction signals AND resampling stability; each with evidence count + confidence), and evidence-backed observed workflows (`skills`) with their latest playbook. `rendered` is a ready-to-use text block for matching the user's working style without granting actu…
correct_memoryUpdate the user's memory when they tell you something in it is WRONG. Call this the moment the user corrects a belief about themselves — "Peach isn't my name, it's a colleague", "Research Team is an org, not a person", "Alex J. and Alex Jones are the same person", "I don't live in Beijing anymore". Pass their correction verbatim. This is a directed memory UPDATE (manage memory like model weights): it traces the wrong belief back to its source facts, supersedes them through the memory choke-point (receipts kept — reversible), or retypes/merges the entity, and logs the update. Downstream summar…
current_context**ALWAYS CALL** for present-tense or ambiguous-pronoun questions about the user's state. Two high-value trigger patterns: 1. Present-tense: *"right now / currently / just now / what am I / what's open"* — this is the tool. 2. Pronoun with no in-conversation antecedent: *"that / this / it / the bug / the error / the file"* — the user is pointing at their screen, not at chat history. Never reply with "I don't have code/context to look at" or ask the user to paste something — call this tool first. If it comes back empty, then ask. Asking for a paste when this tool would have …
entity_graph**CALL for "who is X / how does X relate to people & projects"** — the relation graph around one identity, optionally AS OF a past date. Returns the resolved canonical identity, its edges (predicate / label / evidence count / validity window), identities reachable within `depth` hops, and `chain_to_user` — how X connects back to the user. Pass `as_of="2026-03-01"` to ask about a PAST state ("who was his boss in March") — edges closed before or opened after that date are excluded. `include_shadow=true` additionally lists UNPROVEN extracted edges, clearly separated — treat them as hints, never …
get_model_snapshotReturn a bounded projection of the versioned Personal Model. The default ``section=overview`` returns model/build stats plus compact Root, Face, and Volume objects. Use ``points``, ``lines``, ``faces``, ``volumes``, ``root``, or ``receipts`` for bounded pages; pass the returned opaque ``cursor`` for the next page, or up to 20 exact ``ids`` for a focused selection. Aggregate evidence-reference arrays stay summarized unless ``include_evidence_refs=true`` on their paged section, and still cannot exceed the result byte budget. ``section=full`` returns a small CLI-export instruction because an unb…
get_pending_model_workReturn pending semantic session counts without invoking any model.
get_schemaReturn the memory organization spec (file naming, what each prefix means). Rarely needed at query time. Useful only if you need to reason about WHERE a new fact would be stored, or explain to the user how their memory is organized. For normal "look up a fact" flows, use `search` / `list_memories` directly.
list_memories**ALWAYS CALL FIRST** on the first personal-context turn of a conversation. List all memory files with descriptions + entry counts. Cheap (one SQLite query, no file reads), so the cost of calling is essentially zero. Call whenever the user asks about themselves, their schedule, preferences, or ongoing work — the response tells you which files exist and what they're about (e.g. `event-YYYY-MM-DD.md` for a given day's session-level activity log; `user-profile.md` for identity; `user-preferences.md` for habits; `project-*.md` / `person-*.md` / `org-*.md` for specific entities). If you're about…
persome_setup_checkConfirm that this model can call Persome memory tools.
process_pending_model_workProcess pending Personal Model sessions using this MCP client's model. This is the user-funded modeling path: Persome requests MCP Sampling from the originating client, so Codex, Claude, or another compatible agent uses its own authenticated model entitlement. Persome never receives the client's login token. The call is explicit and bounded because it may consume the user's agent allowance. Requires the client to advertise MCP Sampling with tools. Clients that only support ordinary MCP tool calls cannot use this path; configure an API/local provider or use a compatible agent instead.
query_health_metricsQuery owner-authorized wearable and health observations. Use for questions about imported steps, heart rate, resting heart rate, active energy, sleep stages, or workouts. Results are raw device observations, not medical conclusions. Filters are exact for `metric` and `provider`; time bounds are ISO 8601 and form [since, until).
read_memoryRead the full contents of ONE memory file the user has on disk. Use after `list_memories` / `search` points you at a promising file. Entries come back chronological. Supports `since` / `until` (ISO timestamps), `tags` (filter by any matching tag), and `tail_n` (most recent N entries only).
read_receiptDereference ONE memory receipt — the `⟨entry_id:path⟩` handles that `search`'s `chains` narrative and other tools hand out. Returns the full entry (content, tags, timestamps, validity window, confidence, `superseded` flag) plus `nearby_captures` — breadcrumbs to the NEXT evidence layer (follow with `read_recent_capture(at=…)` for the raw on-screen text or explicitly request its screenshot). Use when you need to verify what a chain hop or a fact is actually based on; this is the audit trail from any memory down to the moment on screen. A `superseded: true` entry is history, not the current bel…
read_recent_captureHydrate ONE raw screen capture — the actual visible_text, focused input value, URL, and (optionally) screenshot from the buffer. Use this whenever a compressed memory entry isn't specific enough (e.g. an event-daily entry says "edited main.py at 14:30" but you need the actual code, or "read article" but you need the text). Most event-daily sub_tasks include an inline `raw: read_recent_capture(at=..., app_name=...)` breadcrumb — call it verbatim. For keyword-driven searches across the whole buffer, prefer `search_captures` first; this tool fetches one specific moment. Arguments: at …
Show 7 more tools
recent_activity**ALWAYS CALL** when the user references yesterday, last week, earlier, or recently. Newest-first cross-file feed of recent memory entries. Best tool for open-ended "what's new / what has the user been up to" questions: "what happened today?" "what was I doing yesterday afternoon?" "anything recent about <topic>?" "catch me up on this week" Use `since` (ISO timestamp) to limit to entries newer than a point in time, and `prefix_filter` (e.g. `['event-', 'project-']`) to scope. Without filters, returns the most recent N entries across ALL files. If the user's question has any tempora…
related_events**CALL for "what was happening around this memory"** — retrieve the time-adjacent context around ONE specific memory entry, directly. Given an `entry_id` (from any `search` hit, chain receipt, or `verify_fact` evidence), returns `events` — the timeline activity blocks overlapping the memory's moment (apps used, focus excerpt, attention surface) — plus `captures`, the nearest raw-screen breadcrumbs (follow with `read_recent_capture(at=…)`). The anchor is a parseable `occurred_at` when known (when the event actually happened), else its write time. `window_minutes` is the radius on each side of …
rememberWrite a durable finding back into Persome memory so later agents can reuse it. Call this when you learn something durable about the user, their project, a tool, or a decision while running. Your entry is force-tagged `source:agent-run` (so it stays distinguishable from the user's own notes). Pass `run_id` = the value of your `$PERSOME_TASK_ID` env var so the finding is attributed to this run. Arguments: content — the finding to remember (a self-contained sentence or two). tags — optional comma-separated extra tags (e.g. "project-x,decision"). run_id — optional; your `$PERSOME_TASK_…
resolve_evidenceResolve one receipt or model object id through Persome's evidence graph. Use this for a Point, Line, Face, Volume, Root, memory receipt, activity, or capture when the user asks "why?" or "what is this based on?". The response keeps ``sources`` (explicit stored lineage) separate from ``context`` (nearby captures that may help investigation but are NOT claimed as direct inputs). Display ``label`` to people, keep ``reference`` as the technical handle, and read Point predecessor/successor links from ``history``. Follow returned references to drill down one layer at a time. A retained receipt whos…
search**ALWAYS CALL** before saying "I don't know" — search the user's memory first. Hybrid SEMANTIC + keyword search across COMPRESSED memory: the distilled Markdown layer the user has decided is durable knowledge (preferences, decisions, schedules, project state, people, summaries). It matches by MEANING, not just exact words — you do NOT need the user's original phrasing. Describe what you're looking for in plain natural language and related memory surfaces even when the wording differs (semantic ranking is active when the memory has embeddings; otherwise it degrades to keyword search, same call…
search_captures**ALWAYS CALL** (usually in parallel with `search`) when the user mentions a keyword they'd have typed or read on screen. Keyword search over RAW screen captures (the uncompressed S1 layer). PREFER this over `search` when the user mentions a keyword they would have *typed* or *read on screen* but that may not have made it into a compressed memory entry yet — e.g. "find when I saw the term 'rate limiter'", "what was that error about pyobjc", "the URL I had open about Postgres replication". `search` only sees compressed memory; this sees every captured screen. When you're not sure which layer h…
verify_fact**CALL BEFORE STATING time-sensitive facts as current** — freshness check for a single claim against the user's memory. Time-sensitive facts = anything that changes as work progresses: version numbers ("we ship 0.3.9"), task/issue status ("X is still open"), who is working on what, schedules, deadlines. Memory recall is ranked by relevance and can surface a WEEKS-OLD entry that reads like the present. Pass the claim you are about to state (natural language, e.g. `verify_fact(claim="the current version is 0.3.9")`). Returns the freshest live evidence with per-entry `age_days`, plus `stale` (n…
Signals
- Stars
- 1,328
- Forks
- 90
- Open issues
- 7
- Contributors
- 9
- Weekly downloads
- 34
- Last commit
- Aug 11, 2026 (2 months ago)
- Last release
- Jul 12, 2026 (3 months ago)
- Last package publish
- Jul 12, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.Intuition-Lab/personal-model- Version
- 0.3.2
- Auth
- No auth
- Packages
- pypi personal-model
- License
- Apache-2.0
- Repository
- github.com/Intuition-Lab/personal-model
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from Intuition-Lab
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get Persome running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
Persome MCP server. Agent Mart. https://agentmart.dev/connectors/intuition-lab-personal-model (last updated 2026-10-24)