Skip to content
Agentmart
Submit a tool

factstore

A fact store for AI agents, on Postgres: registered attributes, every write citing its evidence.

Connector by Victor-EU · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)
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/victor-eu-factstore

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

A fact store for AI agents, on Postgres: registered attributes, every write citing its evidence.

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
3 read · 2 write · 0 delete · 1 not yet classified
Secrets
2 (API keys, tokens or passwords)
Install scripts
Not scanned yet
Runs as
Python package

Tools by what they do 6

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

Read 3 · Look things up without changing anything.

  • query
  • search_attributes
  • stats

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

  • register_attribute
  • transact

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

  • excise

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • FACTSTORE_DSN
  • FACTSTORE_EXCISE_DSN

Tools (6)

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

  • excise

    Permanently delete the facts about one entity, for a person's request to erase their data. Unlike retraction, the values are gone from the log and from history. Optionally limit it to some attributes. The deletion is itself recorded: who, when, which entity and attributes, never the values. Facts about other entities that refer to this one are untouched. Only an excision credential can do this. If the person's data also lives in a source system such as Shopify, delete it there too, or the next catalogue run will bring it back.

  • query

    Read the store with one SQL statement (PostgreSQL), read-only. Returns columns and rows. The store holds facts: an entity has a value for an attribute. Every attribute is a view named after it, e.g. "po/status"; always double-quote the name. Columns: - e: the entity (bigint) - v: the value, typed: text, numeric, boolean, date, timestamptz, or bigint (another entity's e) for refs - tx: the transaction that asserted the value One row per entity and value: at most one per entity for a cardinality-one attribute, several for a many. An entity without a value has no row, so left join optional attri…

  • register_attribute

    Register new attributes. Attributes are the store's vocabulary and deliberately expensive to add: search first (search_attributes) and reuse an existing attribute if it fits. A new or revised value of something an attribute already holds is not a new attribute: assert it with transact, and the store keeps the old one in history. Each attribute has: - ident: "namespace/name" in lowercase letters, digits and underscores, e.g. "supplier/payment_terms". The namespace is usually the kind of thing described, or the source system for its identifiers ("shopify/order_id"). fs/ is reserved. - type: str…

  • search_attributes

    Find registered attributes by name or meaning, best match first, with their type, cardinality, uniqueness and doc. A deprecated attribute shows what replaced it. Use it before registering an attribute, and before writing when unsure which attribute fits.

  • stats

    Describe what the store holds, counted over current state. Read it to work out the kinds of things the store tracks and how they connect; the store itself has no notion of types. Returns: - attributes: each attribute in use, with how many entities hold it and how many values in all. - signatures: each distinct set of attributes that entities carry, with how many carry exactly that set, largest first, as s1, s2, ... A kind of thing is usually one signature, or a few that differ by optional attributes (SKUs with and without Amazon IDs, say). - refs: for each ref attribute, how many refs go from…

  • transact

    Record facts as one transaction. A fact says an entity has a value for an attribute. Nothing is ever overwritten: to correct a value, assert the new one; to withdraw one, retract it. Each fact is {"e", "a", "v"} with an optional "op": "assert" (the default) or "retract". - e: the entity. An entity ID; a temporary ID like "tmp:order" for a new entity, reused to refer to it elsewhere in the same call; or a lookup like ["shopify/order_id", "1234"], which addresses the entity holding that value of an identity attribute and creates it if there is none. "tmp:tx" is this transaction itself: use it t…

Signals

Stars
0
Forks
0
Open issues
0
Weekly downloads
26
Last commit (this folder)
Oct 4, 2026 (24 days ago)
Last release
Oct 4, 2026 (24 days ago)
Last package publish
Oct 4, 2026 (24 days ago)

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

Details

Registry name
io.github.Victor-EU/factstore
Version
0.1.0
Auth
API key
Packages
pypi factstore
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

factstore MCP server. Agent Mart. https://agentmart.dev/connectors/victor-eu-factstore (last updated 2026-10-24)