> ## 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>
