Skip to content
Agentmart
Submit a tool

Vectr

Semantic codebase search + persistent working memory for AI code editors.

Connector by swapnanil · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)Remote (HTTP)★ 2
Write a review

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/swapnanil-vectr

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.

We use your email only for this newsletter. Privacy

About

Semantic codebase search + persistent working memory for AI code editors. Local, no API key.

No 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
7 read · 5 write · 4 delete · 7 not yet classified
Secrets
None asked for
Install scripts
Not scanned yet
Runs as
Python package

Tools by what they do 23

Read from the source code; the running server may list different tools.

Read 7 · Look things up without changing anything.

  • vectr_distill
  • vectr_fetch
  • vectr_recall
  • vectr_search
  • vectr_snapshot
  • vectr_snapshot_list
  • vectr_status

Write 5 · Create, change, send or run things.

  • vectr_anchor
  • vectr_ingest_traces
  • vectr_map_save
  • vectr_pin
  • vectr_remember

Delete 4 · Delete, drop, revoke or wipe things.

  • vectr_evict_hint
  • vectr_forget
  • vectr_revoke
  • vectr_unanchor

Not yet classified 7 · We could not tell from the name and description.

  • vectr_locate
  • vectr_map
  • vectr_promote
  • vectr_reinstate
  • vectr_resume
  • vectr_supersede
  • vectr_trace

Tools (23)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • vectr_anchor

    Attach file paths to an EXISTING note so future changes to those files can flag the note as possibly-stale (UPG-ANCHOR-ATTACH). The single-call replacement for re-storing with anchors=[...] and supersedes=<note_id> when you notice afterwards that a note is about a specific process/config file. Anchors are staleness probes, never a claim that the note is wrong: on the next staleness check, a changed anchor means the process MAY have changed. Idempotent — paths already attached are reported back, not duplicated.

  • vectr_distill

    Review pending arcs — discovered failure->success moments captured automatically from your own tool calls (e.g. a command that failed twice, then succeeded after an edit) — and turn the ones worth keeping into working-memory notes. Call with no arguments to render pending arcs for review, oldest and most-confident first, token-bounded. For each arc worth keeping, call vectr_remember(..., distilled_from=[arc_id]) to persist the lesson as a note (see vectr_remember's own parameters for kind/priority/triggers). For arcs not worth keeping, call vectr_distill(dismiss=[arc_id, ...], reason='...'). D…

  • vectr_evict_hint

    Lists the code chunks retrieved by THIS session that are safe to drop from context — each is re-fetchable verbatim in one deterministic call, and the response includes the exact vectr_fetch(ids=[...]) re-fetch keys. Use at the exploration → implementation transition, or when context pressure builds. This is the reverse signal in the vectr protocol: the AI saves findings (vectr_remember), vectr signals what it can restore instantly (vectr_evict_hint). NOT needed on short sessions — most useful after many vectr_search/vectr_locate calls.

  • vectr_fetch

    Deterministic re-fetch of a code chunk by its exact id — no embedding, no rerank, just the chunk. Every vectr_search/vectr_locate/vectr_trace result carries its chunk's id (the `file:start-end` shown in the result header). Use this to restore a chunk that was cleared from your context (by tool-result eviction, context compaction, or a context-editing tombstone) instead of re-running vectr_search or re-reading the whole file. NOT for finding NEW content — use vectr_search for that.

  • vectr_forget

    Delete working-memory notes. Pass note_id to delete ONE note — the usual case, when a note is stale or superseded (ids are the [#N] shown by vectr_recall). Pass all=true to irreversibly clear EVERY note for this workspace (e.g. after a large refactor). Calling with no arguments deletes nothing. Snapshots are preserved — only active notes are removed.

  • vectr_ingest_traces

    Import runtime trace events into the symbol graph to enrich static call analysis. Use when you have runtime profiling data (Python sys.settrace output, JSON trace logs) that reveals dynamic dispatch patterns the static analyser cannot see: decorators, __getattr__, dependency injection, monkey-patching, etc. Pass a list of trace events: [{caller, callee, caller_file?, caller_line?}, ...]. Dynamic edges are stored with edge_type='dynamic' and appear in vectr_trace results marked "(dynamic)" so you can tell them apart from statically-discovered calls. A caller/callee name that matches no indexed …

  • vectr_locate

    Use when you know the SYMBOL NAME but not which file it's in. Returns file path + line number + kind for every matching definition. NOT when you're searching by concept or behaviour — use vectr_search instead. NOT when you want call relationships — use vectr_trace instead. Example: vectr_locate(name='EvaluateSegments') → 'targeting/evaluator.go:45'

  • vectr_map

    Use at the start of a session on an UNFAMILIAR codebase to get a structural overview without reading any files. If a passport has been saved: returns a compact (~300 token) plain-English summary instantly. If not yet saved: returns raw structural metadata (dir tree, languages, frameworks) and instructs you to call vectr_map_save with your synthesised summary. NOT needed if you already know the codebase structure. NOT a substitute for vectr_recall — call vectr_status first to check for prior notes.

  • vectr_map_save

    Save your synthesised codebase summary as the permanent passport. Call this ONLY after vectr_map returned raw metadata — i.e. on your first visit to a codebase. NOT when vectr_map already returned a saved summary (passport already exists). Write a concise plain-English summary: what the codebase does, tech stack, key modules, entry points, domain terms. Aim for ~200-350 tokens. Does NOT overwrite an existing passport by default — if one is already saved, the call is a no-op and returns the existing summary; pass overwrite=true to replace it.

  • vectr_pin

    Pin a note so it is injected on EVERY future vectr_recall(query=...) call, regardless of the query — never relevance-scored, never dropped for being off-topic. Use for a note that must never be missed by an unlucky query (the same standing-rule role kind='directive' already plays, but for a note you don't want to reclassify as a directive). Pass pinned=false to unpin. Bounded: only a small configured number of directive+pinned notes ever occupy this unconditional tier, so pin sparingly. Equivalent to passing pin=true directly to vectr_remember at write time.

  • vectr_promote

    Raise an auto-captured note's trust class to 'agent' — e.g. after this session has reviewed an auto-captured note and confirmed it still holds. This tool only takes that one step (auto -> agent); it never promotes a note to 'human', because deciding that a person has endorsed something is not the agent's call to make. Human endorsement happens on a user-side surface instead (a CLI/UI a person operates), not through this tool.

  • vectr_recall

    Retrieve notes stored earlier in this session or in prior sessions. TWO-TIER RECALL (UPG-RECALL-HIERARCHY): By default returns a crisp one-line index per note (id + kind/priority + title + age) — token-bounded, safe to call broadly. To read a note body: pass note_id=N (expand one note, full body) or detail='full' (all bodies). Use when vectr_status() confirmed notes_count > 0 — notes may have been stored this session or in a previous one; either way they are immediately useful. Pass a targeted query to retrieve only the notes relevant to your current task — do NOT call with no query unless you…

  • vectr_reinstate

    Reverse a prior vectr_revoke (or a contradicts= write) — the note returns to active state and its original content, not the deterrent block, is shown again.

  • vectr_remember

    Save a working note and recall it on demand in <50ms — whether later this session, through context compaction, or in a future session. Use the moment you discover something non-obvious: a key file path, a call pattern, a gotcha, a partial stub, task progress. Store the actual code or finding — vectr returns it in <50ms; re-reading the file costs tokens and turns. Do NOT store obvious or easily re-derivable facts (e.g. 'the main file is main.py'). For a body over ~2KB, especially code-heavy with quotes/escapes, write it to a file and pass content_file instead of content — long escape-dense stri…

  • vectr_resume

    One-call 'pick up where you left off': the most recent current-task note, the latest saved snapshot, and any open gotchas with their file anchors. Call at the start of a session or after a gap to reorient without re-reading files or re-deriving state vectr_recall would otherwise need several calls to assemble.

Show 8 more tools
  • vectr_revoke

    Flag a stored note as WRONG without deleting it — use when you've confirmed a prior finding no longer holds (contradicted by newer evidence, or you got it wrong the first time). Unlike vectr_forget, the note is not erased: it stays visible on future vectr_recall/session-start as a deterrent — 'previously believed..., revoked..., do not re-derive this without verification' — instead of its original content, so nothing silently repeats the mistake. Reversible with vectr_reinstate. Prefer passing contradicts=<note_id> directly to vectr_remember when you're recording the correction anyway; use thi…

  • vectr_search

    Use when you know WHAT you're looking for but not WHERE it is or WHAT it's called. Hybrid semantic + BM25 search — finds code by concept, behaviour, or description. Returns function/class bodies with file paths and line numbers. NOT when you already know the symbol name — use vectr_locate instead. NOT when you want call relationships — use vectr_trace instead.

  • vectr_snapshot

    Seal all current vectr_remember() notes as a named checkpoint. Use when you've stored multiple notes and want to mark a milestone you can return to (e.g. 'auth-refactor-wip', 'segment-targeting-done'). The next time you work on this, vectr_recall will return these notes. NOT required if you only stored 1-2 notes — vectr_recall retrieves all notes regardless.

  • vectr_snapshot_list

    List all saved session snapshots for this workspace, newest first. Use at session start to find an existing checkpoint if vectr_recall returned nothing or if you want to resume a specific named session.

  • vectr_status

    Returns index health (files, chunks, embed model) AND notes_count (number of notes stored — earlier in this session or in prior sessions). Call once at the start of any session to decide whether vectr_recall is worth calling: if notes_count > 0, call vectr_recall(query=...) to retrieve relevant notes. If notes_count == 0, skip recall entirely. If your session already shows auto-injected Working Notes (vectr hooks), those ARE the recall output — do not re-call vectr_recall for them. Also useful when vectr_search returns nothing and you suspect indexing is still running.

  • vectr_supersede

    Retire an ALREADY-STORED note as superseded, when you discover only AFTER writing its replacement that supersedes=<old id> was not passed on that write. The retired note stops appearing in default recall/session-start and renders with a factual '[superseded ...]' badge — it is NOT marked wrong and never shows the revoked deterrent (it was accurate when written; the world moved on). Use vectr_revoke instead when the note is actually FALSE. Pass superseded_by=<note_id> to link the replacement if one exists; omit it to retire with no successor. Reversible with vectr_reinstate.

  • vectr_trace

    Use when you know the SYMBOL NAME and need to understand its callers or callees before modifying it. Traverses the call graph in both directions. NOT when you don't know the symbol name yet — use vectr_search or vectr_locate first. NOT when you just want the definition location — use vectr_locate instead. Example: vectr_trace(name='EvaluateSegments') → 'Called by: RequestBid() in bidder/auction.go'

  • vectr_unanchor

    Remove file paths from an EXISTING note's anchor set (UPG-ANCHOR-DETACH). The inverse of `vectr_anchor`: use it when you discover a note was anchored to the wrong file, or when the anchored file's relevance has gone away. A removed anchor simply stops being a candidate in the next staleness check — never a claim that the note is wrong. Idempotent — paths the note was never anchored to are reported back, not treated as failures. Path comparison is exact-string on the spelling the note was anchored with, matching `vectr_anchor`'s contract.

Signals

Stars
2
Forks
1
Open issues
0
Weekly downloads
64
Last commit
Sep 6, 2026 (1 month ago)
Last release
Sep 2, 2026 (1 month ago)
Last package publish
Sep 2, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.swapnanil/vectr
Version
1.12.0
Auth
No auth
Packages
pypi vectrpypi vectr
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

Vectr MCP server. Agent Mart. https://agentmart.dev/connectors/swapnanil-vectr (last updated 2026-10-24)