MCP tools
Neuronz.ai gives your agent a set of tools over the Model Context Protocol (MCP), the standard way agents call outside tools. Once Neuronz.ai is connected (the plugin in Claude Code and Oh-My-Pi, or the connector in the Claude desktop app), the tools below are available to your agent. It uses them on its own, and you can ask it to call one for you ("list my open conflicts", "read my rules").
Tools are grouped by what they work on. Most read and write the records described in Core concepts and detailed under Features. Each one works on the current profile unless you name another.
Memory & recall
The everyday path — durable facts and the unified lookup across them. See persistent memory and auto-recall.
| Tool | What it does |
|---|---|
recall | One search across memory, past actions, and knowledge — your default "what do I already know about X". |
fact_search | Search facts only. |
fact_add | Save one fact. If existing facts say almost the same thing, the answer lists them (up to 10, with a one-line gist each) so your agent can settle them with fact_resolve; pass subject to attribute it to a colleague instead of yourself. |
fact_resolve | Settle one similar fact that fact_add flagged: duplicate retires the new fact and keeps the old one, supersedes archives the old one and keeps the new one, conflicts disputes the pair until you settle it. Safe to repeat. |
fact_get · fact_list | Fetch or list facts. |
fact_update · fact_delete | Edit a fact (the old version is kept as history) or retire it. |
list_conflicts | List contradictions — each a set of facts that disagree, all held out of recall until settled. |
resolve_conflict | Settle a contradiction in one decision: keep one claim, retire them all, replace them with a correction, or put it off for later. |
Personas
The social map: your own profile plus every colleague's. See personas & the social map.
| Tool | What it does |
|---|---|
get_persona | Read a subject's summary + traits — omit the name for your own, pass a colleague's name for theirs. When a prompt mentions a colleague, the agent is told how many traits are stored about them and to call this before writing to or about them. The summary is for you to read; the agent writes to the traits. |
list_persona_subjects | List every subject (yourself plus every colleague) on this profile. |
add_persona_subject · update_persona_subject · delete_persona_subject | Curate the subject roster — people you work with, or groups of addressees like "clients" (name, kind, aliases, summary). |
update_persona_summary | Refresh a subject's human-readable summary — pass subject for a colleague, omit it for yourself. Adding, editing or retiring a trait reports how out of date the summary has become, so the agent can refresh it in the same turn. |
Rules
Human-owned durable rules. Proposed rules wait for a human to approve them. See rules.
| Tool | What it does |
|---|---|
read_rules | Read the rules in scope. Omit every selector for the full profile-wide read, or narrow to particular rules with slugs and/or ids (unioned; ids are dash- and case-insensitive). Also takes deliveryToken — see below. |
propose_rule | Suggest a rule (lands as proposed). Takes conditions — when the rule binds, and force — see below. |
create_rule · update_rule · delete_rule | Manage rules (creation implies human confirmation). create_rule and update_rule take conditions, the single field describing when the rule binds: a mode of all or any over a flat list of tests, each either a match on the tool name, file path, working directory, git branch, tool input, prompt, or model, or a plain-language text statement the agent judges in the moment. Omit it, or pass an empty list, and the rule is unconditional. |
resolve_rule_ask | Record your answer to a pending proposal — accepted is the only thing that makes a rule binding; declined retires the claim; deflected means "not now". |
With the plugin, rules arrive as a short notice, and read_rules fetches them. Every prompt carries a short block saying how many approved rules apply or still need their conditions checked, naming them, and quoting the exact read_rules({ profile, ids, deliveryToken }) call that returns their text — see how an applying rule reaches your assistant. Two things about that call:
deliveryTokenis copied, never made up. Neuronz.ai issues it so later prompts can tell which rules this session has already read. The agent passes back exactly the value the notice gave; when the notice gave none, it leaves it out.- Without
deliveryTokenit is an ordinary read. Reading rules to author one, review what is in scope, or check a wording is the same call withoutdeliveryToken; it returns the rules you select and records nothing.
create_rule and propose_rule refuse to write, with a CONFLICT_SUGGESTED error, when an approved rule already says nearly the same thing (the rule conflict check). The error names the existing rule, says how similar the two are (from 0 to 1), and suggests update_rule on it instead. The agent brings that back to you rather than retrying. If you confirm the new rule really is separate, it repeats the call with force: true and the rule is saved. update_rule is never refused this way.
Voice
How you write, as distinct from what your agent does. Voice has three parts:
- A voice atom is one claim about how you write ("uses short sentences").
- An atom group is a named set of atoms. A group can include other groups.
- A voice condition (the
*_registertools) says when one group applies, using six settings: direction (who is writing to whom), audience, act (a chat reply, a commit message…), language, situation, and model. A setting you leave out means any.
Atoms and groups are shared across all your profiles and are reused, not copied: to apply a voice somewhere new, add a voice condition that points at the group you already have, and set that condition's global / profiles scope to choose which profiles it covers. See voice.
| Tool | What it does |
|---|---|
add_atom_group · get_atom_group · list_atom_groups · update_atom_group · delete_atom_group | Manage the named sets of claims — the reusable half. parents is what a group inherits, in order; exemplars are verbatim sample messages. Both replace their whole set on update. What a group applies is its atoms, so change the writing with add_voice_atom / update_voice_atom, never here. Groups are shared by all your profiles: list_atom_groups shows the voice conditions applying each one in every profile, and a delete is refused while any condition still points at it, while other groups include it, or while it holds atoms that are in no other group. |
add_register · get_register · list_registers · update_register · delete_register | Manage voice conditions — the six settings and the one group each applies (group is required on create). Read list_registers first, so a new one extends what you have instead of duplicating it. Every setting is optional and a condition never inherits one from another, so name only the settings you mean to narrow by. Deleting a condition stops applying that voice there and keeps the group. The audience setting is a reference to a persona subject: pass a name, an alias or an id and the server resolves it, refusing an audience no subject matches (create it first with add_persona_subject, kind=group for a class like "clients"). |
scope on add_register · update_register | global: true applies the condition in every profile you have, including profiles created later. profiles: [...] names specific ones; pass neither on create and it stays in the current profile; pass neither on update and the scope is left alone. You can't pass both. A condition naming a specific audience must stay in exactly the profile you are writing from, because that person is stored in that profile. |
add_voice_atom · update_voice_atom · delete_voice_atom | Record, revise, or retire one claim about how you write, placed in at least one group via groups. A style correction belongs here, not in a fact or a rule. An edit takes effect on the next message. |
bind_voice_atom · unbind_voice_atom | Add an existing atom to another group, or remove it from one — refused when it would leave the atom in no group at all. Takes effect on the next message. |
get_resolved_voice | Get the voice for a situation: every voice condition that holds applies its group (with the groups it includes), and the atoms come back without duplicates, most specific first. audience takes the same person or group reference as the conditions. With the plugin, each prompt tells the agent which voice applies and how many atoms it has, and gives the exact call to make before its first written reply (model is required; the notice fills it in, or unknown when your harness does not report the model). The call carries a deliveryToken from the notice, so Neuronz.ai records what this session fetched: the next notice says whether the agent already holds the current voice, the voice changed since, or it has not fetched it yet. The result also carries a version. The same notice lists voices that apply only in a particular situation (an incident, a handoff) without their atoms; when that situation holds, the agent calls this with it to get them. |
get_voice_ask · resolve_voice_ask | Ask you about an unconfirmed atom only where it would actually apply, and record your answer — rebound moves it to the groups it really belongs to instead of dropping it. |
Knowledge
See knowledge docs.
| Tool | What it does |
|---|---|
add_knowledge · get_knowledge · list_knowledge · update_knowledge · delete_knowledge | Manage reference docs; each is split into sections so recall can find the part that matches. Adding a doc with the same source as an existing one in the current profile replaces it; to move a doc to another profile, use update_knowledge. The agent also passes the facts it drew from the doc in derivedFacts (content, optional kind and status), and passes the full list again whenever it edits the doc, so facts the doc no longer supports are retired. A fact whose text matches one the doc already owns is kept as is; every other one is saved as a new fact, and the answer lists any near-identical existing facts for each (like fact_add) so your agent can settle them with fact_resolve — the doc's link follows the fact that is kept. |
get_knowledge_outline · get_knowledge_chunk · list_knowledge_tags | Browse a doc's section headings without loading its text; read one section (neighbors=N also returns the N sections on each side); list the tags in use. |
Topics, history & runs
See topics & topic mode. A topic is one ongoing piece of work or recurring issue; topic mode is the topic a session is currently working in. A run (one use of a skill or command asset) is recorded automatically when the session ends.
| Tool | What it does |
|---|---|
create_topic · get_topic · list_topics · update_topic · touch_topic · delete_topic | Group recurring issues / units of work; touch_topic bumps a recurrence. Filing a record under a topic ages its summary, so those writes come back with a topicSummaries block — refresh the stale ones with update_topic(summary=…), which resets the count. |
enter_topic · exit_topic · current_topic | Enter or leave topic mode: enter_topic makes a topic the one this session is working in, so what the agent saves is filed under it; exit_topic leaves it and asks the agent to refresh the topic's summary. current_topic reports the topic a session in this repository is working in, if any. |
add_topic_tags · remove_topic_tags | Tag topics. |
log_action · list_actions · update_action · delete_action | Record and read past work — what was done and why. |
add_event | Attach raw evidence (a log excerpt, an alert payload) to a recorded action, and optionally to a topic. |
list_runs · get_run | Read recorded runs (list_runs filters by assetId). |
Skills & assets
Ship skills, commands, and subagents to every session. See skills & assets.
| Tool | What it does |
|---|---|
list_assets · get_asset | Browse stored assets. |
add_asset · update_asset · delete_asset | Manage an asset (kind ∈ skill · command · agent). |
Graph
Typed links between records. See the knowledge graph.
| Tool | What it does |
|---|---|
link · unlink | Create or remove a typed edge between two entries. |
expand | Walk the graph outward from an entry. |
Profiles
See profiles.
| Tool | What it does |
|---|---|
list_profiles | List profiles and their directory routes. |
create_profile | Create a new, empty profile, optionally routing one directory to it. Use it to give a directory inside another profile's recursive route its own profile. It refuses a name that already exists and a directory that already has its own route. |
set_dir_profile · unset_dir_profile | Route a directory to a profile. |
switch_profile | For chats without the plugin (chats and Cowork tasks in the Claude app, claude.ai): switch this chat to another existing profile. It stores nothing on the server and leaves your default chat profile unchanged; the chat passes the new profile on every later call. With the plugin, use /neuronzai:switch-profile instead. |
Chats with no profile
A chat or Cowork task in the Claude app, or a chat on claude.ai, reaches Neuronz.ai only through the MCP connector, so it has no working directory and no profile resolves on its own. The first profile-scoped tool call in such a chat returns a tool error instead of running:
- If you set a default chat profile (dashboard → Profiles, Set as default on a profile), the error names it and tells the agent to call again with
profile="<that profile>"and to keep passing it on every later call in the chat, including after the chat is resumed. - If you have no default, the error lists your profiles and tells the agent to ask you which one to use.
The chat's profile then lives in the conversation itself. Resuming the chat keeps it; changing your default only affects new chats; switch_profile changes it for the current chat.
Tags, KV & search
| Tool | What it does |
|---|---|
create_tag · list_tags · update_tag · delete_tag | Manage the tag registry. |
kv_get · kv_set · kv_append · kv_delete · kv_list · kv_namespaces | A key/value store for the agent's own bookkeeping (for example, which items a recurring job has already handled). Not part of recall. |
search | Keyword search over topics and knowledge docs. Use it to check whether a topic already exists; for everything else, use recall. |
TIP
recall is the one to reach for first — it spans memory, actions, and knowledge in a single ranked result, so you rarely need to search one kind of record by hand.