> ## Documentation Index
> Fetch the complete documentation index at: https://docs.maximem.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Tools & prompts

> Every tool, prompt and resource the Vity MCP server exposes, with arguments, costs and guidance on which to reach for.

Your agent discovers these automatically once the [server is connected](/vity/mcp/overview) and decides when to call them from their descriptions. This page is for when you want to know exactly what it has to work with — or want to ask for a specific tool by name.

Every tool acts only on the memory belonging to the API key on the request. None of them takes a user or account argument.

## Tools at a glance

| Tool                                            | What it gives you                                  | Rate limit       | Credits |
| ----------------------------------------------- | -------------------------------------------------- | ---------------- | ------- |
| [`recall_context`](#recall_context)             | A ready-to-use block of your relevant memories     | 60/min           | —       |
| [`search_memories`](#search_memories)           | Ranked individual memories with their text and IDs | 60/min           | 1       |
| [`get_user_context`](#get_user_context)         | A structured, grounded profile of you on a topic   | 20/min           | —       |
| [`query_knowledge`](#query_knowledge)           | What you know about a subject, and how deeply      | 60/min           | 1       |
| [`get_voice_card`](#get_voice_card)             | How you write, as a spec the agent can follow      | 30/min           | —       |
| [`summarize`](#summarize)                       | A summary of a page or text, personalised to you   | 20/min           | 20      |
| [`remember`](#remember)                         | Saves one durable fact about you                   | 30/min           | —       |
| [`rewrite_as_me`](#rewrite_as_me)               | Your draft, restyled in your own voice             | 30/min, 1000/day | Metered |
| [`capture_conversation`](#capture_conversation) | Saves a whole conversation for later recall        | 120/min          | —       |

## Choosing between similar tools

Four pairs look alike from the outside. The difference matters for both speed and quality of the answer:

| If you want...                   | Use               | Not                                                            |
| -------------------------------- | ----------------- | -------------------------------------------------------------- |
| Background to answer with, fast  | `recall_context`  | `get_user_context` — richer, but several seconds slower        |
| A specific remembered fact       | `search_memories` | `recall_context` — returns prose, not individual entries       |
| Your depth on a subject          | `query_knowledge` | `search_memories` — returns what you said, not what you know   |
| The agent to write in your voice | `get_voice_card`  | `rewrite_as_me` — unless you want the engine to do the styling |
| To keep one fact                 | `remember`        | `capture_conversation` — that is for a whole exchange          |

***

## Recall

### `recall_context`

Returns your relevant memories as prose the agent can read straight into its answer. This is the default tool for personalising a response — it is the fastest of the recall tools and needs no parsing.

<ParamField path="current_prompt" type="string" required>
  What you just asked or said. Retrieval matches against this, so the agent should pass your actual words rather than an extracted keyword.
</ParamField>

<ParamField path="max_tokens" type="integer" default="1200">
  Budget for the returned context, between 100 and 10000. Raise it for broad questions.
</ParamField>

<ParamField path="strategy" type="string" default="hybrid">
  `hybrid` (recommended), `semantic` (meaning only), or `recency` (newest first — best for "what was I working on recently").
</ParamField>

<ParamField path="channel" type="string" default="web">
  Where the conversation is happening: `web`, `slack`, `telegram`, `whatsapp`, or `unknown`.
</ParamField>

### `search_memories`

Returns matching memories individually, with their text and IDs. Use it for specific recall — "what did I decide about the vendor", "what's my sister's name" — rather than general background.

Costs 1 credit per call.

<ParamField path="query" type="string" required>
  A natural-language description of what you are looking for.
</ParamField>

<ParamField path="limit" type="integer" default="5">
  How many results to return, between 1 and 20.
</ParamField>

<ParamField path="category" type="string">
  Narrow to one of `preference`, `fact`, `task`, `relationship`, or `context`.
</ParamField>

<ParamField path="min_score" type="number" default="0.3">
  Relevance floor between 0.0 and 1.0. Raise it to cut noise; lower it to around `0.15` if a query you expect to match returns nothing.
</ParamField>

### `get_user_context`

A structured profile of you in relation to some text or topic: what you know, where you stand, what you have already been through, and explicit guidance on what to emphasise and avoid.

Richer and slower than `recall_context` — it takes several seconds. Worth it when the stakes justify the wait: drafting something under your name, advising on a decision, or prepping for a conversation.

<Note>
  Every claim in the profile is checked against a real memory before you see it. Anything unsupported is dropped rather than guessed at.
</Note>

<ParamField path="text" type="string" required>
  The material to profile you against — the message you received, the document you are reacting to, or the topic at hand.
</ParamField>

<ParamField path="task_hint" type="string">
  What the agent is about to produce, e.g. `"reply to this email"` or `"prep for a negotiation"`. Steers what the profile emphasises.
</ParamField>

<ParamField path="max_tokens" type="integer" default="1200">
  Budget for the memory context behind the profile, between 100 and 4000.
</ParamField>

***

## Knowledge

### `query_knowledge`

Returns what you actually know about a subject, graded by expertise level and confidence, drawn from everything you have read and discussed.

Distinct from `search_memories`: that returns text you said, this returns knowledge extracted from it. Use it to calibrate an explanation — an agent that knows you are already expert on a topic can skip the basics.

Costs 1 credit per call.

<ParamField path="query" type="string">
  Semantic query. Omit it to browse by filters alone (relevance scores are then absent).
</ParamField>

<ParamField path="topic_category" type="string[]">
  Restrict to categories, e.g. `["technology", "finance"]`. Up to 20.
</ParamField>

<ParamField path="expertise_level" type="string[]">
  Restrict to any of `high`, `medium`, `low`.
</ParamField>

<ParamField path="knowledge_type" type="string">
  `user_possesses_knowledge` (you know it) or `user_accessed_knowledge` (you merely encountered it — weaker evidence, and not to be treated as expertise).
</ParamField>

<ParamField path="confidence_min" type="number">
  Only return items at or above this extraction confidence, 0.0 to 1.0.
</ParamField>

<ParamField path="include_facets" type="boolean" default="false">
  Also return how your knowledge is distributed across categories — useful for "what do I know about in general".
</ParamField>

<ParamField path="include_profile" type="boolean" default="false">
  Also return your aggregate knowledge profile.
</ParamField>

<ParamField path="limit" type="integer" default="10">
  Results per page, between 1 and 50. Page with `offset` rather than maxing this out.
</ParamField>

<ParamField path="offset" type="integer" default="0">
  Page offset.
</ParamField>

<ParamField path="min_score" type="number" default="0.3">
  Relevance floor.
</ParamField>

***

## Voice

### `get_voice_card`

Returns your writing-voice profile — register, sentence rhythm, punctuation and casing habits, emoji use — so the agent can write to that spec itself. Takes no arguments.

Best called before composing anything that goes out under your name.

<Note>
  Needs a voice card built from your writing. If you do not have one yet, build it in the dashboard at [app.maximem.ai](https://app.maximem.ai).
</Note>

### `rewrite_as_me`

Hands your draft to Vity's voice engine and returns the same message as you would have written it.

Use this when you want the engine to do the styling; use `get_voice_card` when you would rather have the spec and let the agent write. Takes a few seconds, and is limited to 1,000 rewrites per day per key.

<ParamField path="draft" type="string" required>
  The message to rewrite. Write the full content first — the engine restyles what it is given, it does not invent what you leave out.
</ParamField>

<ParamField path="host" type="string" default="generic">
  Where it will be sent — e.g. `slack`, `email`, `linkedin`, `x`. Changes the register.
</ParamField>

<ParamField path="recipient_hint" type="string">
  Who it is going to, e.g. `"my manager"`, `"a close friend"`. Changes formality.
</ParamField>

### `summarize`

Summarises a page or a block of text, personalised against what you already know — so it skips the familiar and flags what is new to you.

Costs 20 credits and takes several seconds. For a plain summary of text the agent already has in front of it, this is the wrong tool; use it when the personalisation or the URL fetch is the point.

<ParamField path="url" type="string">
  The page to fetch and summarize. Either this or `text` is required.
</ParamField>

<ParamField path="text" type="string">
  Raw text to summarize instead of fetching a URL.
</ParamField>

<ParamField path="title" type="string">
  Title of the source, if known.
</ParamField>

<ParamField path="mode" type="string" default="tldr">
  Output shape.
</ParamField>

<ParamField path="segment" type="integer" default="0">
  For sources too large for one pass, request the next chunk by resending the same call with `segment` incremented. The result says when there is more.
</ParamField>

***

## Capture

### `remember`

Saves one durable fact about you to long-term memory — a preference, a decision, a relationship, an ongoing project.

Stored statements are written to stand alone, because they will be read months later with none of the surrounding conversation. "Prefers async standups over daily calls", not "yes I do".

<ParamField path="text" type="string" required>
  The statement to remember, up to 10,000 characters.
</ParamField>

<ParamField path="category" type="string">
  One of `preference`, `fact`, `task`, `relationship`, `context`. Improves later recall.
</ParamField>

<ParamField path="importance" type="string" default="medium">
  `low`, `medium`, or `high`.
</ParamField>

### `capture_conversation`

Saves a whole conversation so the important parts survive into later sessions. Vity decides what is worth keeping, so nothing needs filtering first.

Processing is asynchronous — the tool returns immediately and the memories become searchable a few seconds later. A search run instantly after a capture may not see them yet.

<ParamField path="messages" type="object[]" required>
  Up to 50 messages, each `{"role": "user" | "assistant", "content": "...", "timestamp": <unix ms>}`. `timestamp` is optional.
</ParamField>

<ParamField path="channel" type="string" default="web">
  Where the conversation happened: `web`, `slack`, `telegram`, `whatsapp`, `unknown`.
</ParamField>

<ParamField path="agent_id" type="string">
  Optional identifier for which agent held the conversation.
</ParamField>

## Deleting memories

There is no delete tool over MCP, by design — an agent cannot remove your memory on its own initiative, or as cleanup it decided was helpful.

Delete memories in the dashboard at [app.maximem.ai](https://app.maximem.ai), where you can see exactly what is going before it goes.

## Prompts

Prompts are reusable instructions your client can offer as a slash command or template. All three chain the tools above in the right order, so you get a better result than asking for the same thing freehand.

| Prompt        | Argument | What it does                                                                                                  |
| ------------- | -------- | ------------------------------------------------------------------------------------------------------------- |
| `write_as_me` | `what`   | Drafts something in your voice, grounded in what you actually think and have done.                            |
| `brief_me_on` | `topic`  | Briefs you on a topic, calibrated to what you already know — skipping the familiar, leading with what is new. |
| `catch_me_up` | `topic`  | Summarises where you left off: what you had decided, and what is still open.                                  |

<Tip>
  In Claude Code, prompts appear as `/vity:write_as_me`, `/vity:brief_me_on` and `/vity:catch_me_up`. Other clients surface them under their own prompt or template menu.
</Tip>

## Resources

Two resources can be attached as context rather than called as tools:

| Resource                  | Contents                                      |
| ------------------------- | --------------------------------------------- |
| `vity://voice-card`       | Your writing voice, same as `get_voice_card`. |
| `vity://knowledge/topics` | A map of what you know about, by category.    |

<Note>
  Not every MCP client sends your API key when reading a resource. Where that happens, the resource returns a pointer to the equivalent tool instead of failing silently. **Tools are the reliable path** — prefer `get_voice_card` and `query_knowledge` if you have the choice.
</Note>
