@cerefox/memory 1.6.1 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/AGENT_GUIDE.md +80 -6
  2. package/AGENT_QUICK_REFERENCE.md +9 -7
  3. package/README.md +5 -3
  4. package/dist/bin/cerefox.js +790 -319
  5. package/dist/frontend/assets/index-D8E0mTnp.js +121 -0
  6. package/dist/frontend/assets/index-D8E0mTnp.js.map +1 -0
  7. package/dist/frontend/index.html +1 -1
  8. package/dist/server-assets/_shared/ef-meta/index.ts +3 -3
  9. package/dist/server-assets/_shared/mcp-tools/_utils.ts +41 -0
  10. package/dist/server-assets/_shared/mcp-tools/delete-document.ts +181 -0
  11. package/dist/server-assets/_shared/mcp-tools/get-help-content.ts +4 -4
  12. package/dist/server-assets/_shared/mcp-tools/index.ts +8 -1
  13. package/dist/server-assets/_shared/mcp-tools/ingest.ts +75 -8
  14. package/dist/server-assets/_shared/mcp-tools/partial-edits.ts +43 -4
  15. package/dist/server-assets/_shared/mcp-tools/restore-document.ts +130 -0
  16. package/dist/server-assets/db/migrations/0024_mcp_delete_document.sql +26 -0
  17. package/dist/server-assets/db/migrations/0025_drop_orphaned_overloads.sql +15 -0
  18. package/dist/server-assets/db/migrations/0026_metadata_guard_and_dead_links.sql +46 -0
  19. package/dist/server-assets/db/rpcs.sql +355 -27
  20. package/dist/server-assets/db/schema.sql +10 -2
  21. package/dist/server-assets/supabase/functions/cerefox-ingest/index.ts +26 -0
  22. package/docs/guides/access-paths.md +24 -15
  23. package/docs/guides/cli.md +34 -7
  24. package/docs/guides/connect-agents.md +41 -17
  25. package/docs/guides/operational-cost.md +1 -1
  26. package/package.json +1 -1
  27. package/dist/frontend/assets/index-OqloGFwv.js +0 -121
  28. package/dist/frontend/assets/index-OqloGFwv.js.map +0 -1
@@ -226,6 +226,12 @@ cerefox document list [OPTIONS]
226
226
 
227
227
  **Purpose**: update a document's title and/or metadata in place, without re-ingesting content.
228
228
 
229
+ > **v1.7.1 (#212)**: a title-only edit no longer writes `metadata` at all, and
230
+ > the command refuses to patch a document whose stored metadata is not a JSON
231
+ > object (a legacy state older writes could create) instead of destroying it —
232
+ > repair such a row with `cerefox document set-metadata <id> --replace --json
233
+ > '<object>'`. `cerefox doctor` lists any rows in that state.
234
+
229
235
  **Synopsis**:
230
236
  ```
231
237
  cerefox document edit [OPTIONS] DOCUMENT_ID
@@ -341,6 +347,20 @@ cerefox document set-projects <doc-id> --clear
341
347
 
342
348
  ---
343
349
 
350
+ ### `cerefox document dead-links`
351
+
352
+ **Purpose**: whole-KB sweep for `[Text](uuid)` links whose target document no longer exists (phase 2 of link integrity, #214; v1.7.1, needs schema 0.12.2).
353
+
354
+ **Synopsis**: `cerefox document dead-links [--json]`
355
+
356
+ The write-time guard (v1.7.0) validates only links a write *introduces* — deliberately, so a target purged after linking cannot make its linkers unwritable. This command finds those legacy dead links on demand. A trashed target still exists and is **not** reported; trashed **linker** documents are also excluded (inert until restored — a restore re-enters them into the next sweep). Full chunk scan server-side (one RPC call); run on demand, not part of `doctor`.
357
+
358
+ **Fix each hit** by editing the linking document: correct the id, remove the link, or backtick it as an example. Full linking overview: [`linking.md`](linking.md).
359
+
360
+ **MCP equivalent**: none (maintenance verb).
361
+
362
+ ---
363
+
344
364
  ### `cerefox document restore`
345
365
 
346
366
  **Purpose**: restore a soft-deleted (trashed) document back to active.
@@ -351,10 +371,13 @@ cerefox document set-projects <doc-id> --clear
351
371
 
352
372
  | Flag | Type | Default | Description |
353
373
  |---|---|---|---|
374
+ | `--reason <text>` | str | _none_ | Optional reason recorded on the restore audit entry (v1.7.0; needs schema 0.12.0). |
354
375
  | `--author TEXT` | str | `CEREFOX_AUTHOR_NAME` or `unknown` | Identity recorded in the audit log. |
355
376
  | `--author-type [user\|agent]` | choice | `CEREFOX_AUTHOR_TYPE` or `user` | Caller type. |
356
377
 
357
- Clears `deleted_at`, returning the document to search and `cerefox document list`, and writes a `restore` audit entry.
378
+ Clears `deleted_at`, returning the document to search and `cerefox document list`, and writes a `restore` audit entry. Restoring a document that is not deleted (or was already restored by a concurrent writer) is a reported no-op.
379
+
380
+ **MCP equivalent**: `cerefox_restore_document` (v1.7.0).
358
381
 
359
382
  ---
360
383
 
@@ -521,7 +544,7 @@ cerefox audit list --json --limit 1000 | jq 'select(.author_type == "agent")'
521
544
 
522
545
  ### `cerefox document delete`
523
546
 
524
- **Purpose**: **soft-delete** a document — moves it to trash, recoverable. The CLI cannot permanently delete or restore; see [Destructive operations and the trust model](access-paths.md#destructive-operations-and-the-trust-model) for the rationale.
547
+ **Purpose**: **soft-delete** a document — moves it to trash, recoverable with `cerefox document restore`. The CLI cannot permanently purge; see [Destructive operations and the trust model](access-paths.md#destructive-operations-and-the-trust-model) for the rationale.
525
548
 
526
549
  **Synopsis**: `cerefox document delete [OPTIONS] DOCUMENT_ID`
527
550
 
@@ -530,7 +553,7 @@ cerefox audit list --json --limit 1000 | jq 'select(.author_type == "agent")'
530
553
  | Flag | Type | Default | Description |
531
554
  |---|---|---|---|
532
555
  | `--yes` | flag | off | Skip confirmation prompt. Required for non-interactive use (agents, scripts). |
533
- | `--reason <text>` | str | _none_ | Optional reason recorded on the delete audit entry. |
556
+ | `--reason <text>` | str | _none_ | Optional reason recorded on the delete audit entry (v1.7.0; needs schema 0.12.0). |
534
557
  | `--author <name>` (`-a`) | str | `CEREFOX_AUTHOR_NAME` or `unknown` | Identity recorded in the audit log. |
535
558
  | `--author-type <type>` | `user`\|`agent` | `CEREFOX_AUTHOR_TYPE` or `user` | Caller type, recorded in the audit log. |
536
559
 
@@ -544,7 +567,7 @@ cerefox audit list --json --limit 1000 | jq 'select(.author_type == "agent")'
544
567
  - Does NOT free database storage.
545
568
  - Versions, chunks, and audit entries remain intact under the trash.
546
569
 
547
- **Recovery**: a soft-deleted document can be restored OR permanently purged **only from the Cerefox web UI** (Trash view). These destructive / restorative actions are intentionally web-UI-only to require human-in-the-loop confirmation. See [`access-paths.md` → Destructive operations and the trust model](access-paths.md#destructive-operations-and-the-trust-model).
570
+ **Recovery**: restore with `cerefox document restore`, the web UI Trash view, or `cerefox_restore_document` over MCP (v1.7.0). Permanent purge is **web-UI-only** — the one action requiring human-in-the-loop confirmation. A trashed document also refuses content updates (restore first). See [`access-paths.md` → Destructive operations and the trust model](access-paths.md#destructive-operations-and-the-trust-model).
548
571
 
549
572
  **Agent usage**:
550
573
  ```bash
@@ -664,7 +687,7 @@ cerefox config set relations_enabled true # tools appear in every agent's lis
664
687
  cerefox config set relations_enabled false # hidden again; no data removed
665
688
  ```
666
689
 
667
- Agents see 13 tools with the flag off and 16 with it on. See
690
+ Agents see 15 tools with the flag off and 19 with it on. See
668
691
  [`configuration.md`](configuration.md) for the full runtime-config surface.
669
692
 
670
693
  ### `cerefox config list` / `cerefox config get` / `cerefox config set`
@@ -782,6 +805,9 @@ Every MCP parameter has an exact-name CLI flag (kebab-cased). Short forms exist
782
805
  | `cerefox_list_metadata_keys()` | `cerefox metadata keys` |
783
806
  | `cerefox_metadata_search(metadata_filter, project_name, updated_since, created_since, limit, include_content, requestor)` | `cerefox metadata search --metadata-filter '<json>' --project-name <n> --updated-since <iso> --created-since <iso> --limit N --include-content --requestor <name>` |
784
807
  | `cerefox_get_audit_log(document_id, author, operation, since, until, limit, requestor)` | `cerefox audit list --document-id <id> --author <a> --operation <op> --since <iso> --until <iso> --limit N --requestor <name>` |
808
+ | `cerefox_set_document_metadata(document_id, metadata, replace, author)` | `cerefox document set-metadata <id> --set key=value` (also `--remove key`, `--json '<json>'`, `--replace`) |
809
+ | `cerefox_delete_document(document_id, expected_content_hash, reason, author, requestor)` | `cerefox document delete <id> --reason <text> --author <a> --author-type <t> --yes` (confirms interactively instead of requiring the hash) |
810
+ | `cerefox_restore_document(document_id, reason, author, requestor)` | `cerefox document restore <id> --reason <text> --author <a> --author-type <t>` |
785
811
 
786
812
  ## CLI ↔ MCP parity matrix
787
813
 
@@ -800,8 +826,9 @@ surface).
800
826
  | `document get` | `cerefox_get_document` | ✅ |
801
827
  | `document list` | `cerefox_metadata_search` (scope by `project_name` / metadata / time) | ✅ as of this change. Unscoped whole-KB listing has no MCP path by design (scope it) |
802
828
  | `document edit` (title / metadata in place) | — | 🔒 intentional: a human/web-parity convenience. Agents update title+metadata deterministically via `cerefox_ingest` (with `document_id`); a metadata-only edit isn't a needed agent primitive |
803
- | `document delete` (soft-delete) | — | 🔒 destructive; trust model keeps delete/restore on CLI + web only |
804
- | `document restore` | — | 🔒 trust model (CLI + web only) |
829
+ | `document dead-links` | — | 🔒 intentional: a maintenance sweep for the operator (v1.7.1, #214 phase 2); agents encounter dead links through the write-time guard instead |
830
+ | `document delete` (soft-delete) | `cerefox_delete_document` | ✅ v1.7.0 (#208). MCP requires the caller's read-hash; the CLI confirms interactively instead |
831
+ | `document restore` | `cerefox_restore_document` | ✅ v1.7.0 (#210). Permanent purge remains web-UI-only |
805
832
  | `document version list` | `cerefox_list_versions` | ✅ |
806
833
  | `document version archive` / `unarchive` | — | 🔒 intentional: version-retention protection is exposed only to CLI + web (a maintenance concern, not an agent primitive) |
807
834
  | `document set-projects` | `cerefox_set_document_projects` | ✅ full-set replace of a document's project memberships (shared core; `--clear` to remove all) |
@@ -72,7 +72,7 @@ in the container.
72
72
  - **Easiest:** `cerefox-local configure-agent` wires it up (registers an MCP server named
73
73
  `cerefox-local` with Claude Code if the `claude` CLI is present, else prints the snippet).
74
74
  - **Manual:** point the client at `command: cerefox-local, args: ["mcp"]` (stdio). That proxies
75
- to `cerefox mcp` in the container; the same 13 core tools, identical behavior to every other path.
75
+ to `cerefox mcp` in the container; the same 15 core tools, identical behavior to every other path.
76
76
  - The cloud paths above (remote Edge Function, GPT Actions) **do not apply** to a local-only
77
77
  install — there are no Edge Functions.
78
78
 
@@ -131,7 +131,7 @@ in the container.
131
131
 
132
132
  ### What it is
133
133
 
134
- The local Cerefox MCP server runs on your machine and exposes the same 13 core tools as the remote
134
+ The local Cerefox MCP server runs on your machine and exposes the same 15 core tools as the remote
135
135
  Edge Function, communicating with clients over stdio.
136
136
 
137
137
  The local server ships as an npm package — **[`@cerefox/memory`](https://www.npmjs.com/package/@cerefox/memory)** — built with the official `@modelcontextprotocol/sdk`.
@@ -190,6 +190,10 @@ Once configured, every Path A client has these tools:
190
190
  |------|-------------|
191
191
  | `cerefox_search` | Hybrid (FTS + semantic) document-level search. Filter by `project_name` or `metadata_filter`. |
192
192
  | `cerefox_ingest` | Save a note or document to the knowledge base. Pass `document_id` to update by ID (deterministic); or `update_if_exists: true` to update by title match. Accepts optional `author` and `project_name`. |
193
+ | `cerefox_insert` | Add text to a document without resending it (additive only — structurally cannot remove content) |
194
+ | `cerefox_edit` | Change parts of a document: 1..n operations (`insert`/`replace_section`/`delete_section`/`rename_section`) applied atomically |
195
+ | `cerefox_delete_document` | Soft-delete a document to the trash (requires the caller's read-hash; permanent purge is web-UI-only) |
196
+ | `cerefox_restore_document` | Restore a soft-deleted document from the trash (audited inverse of delete) |
193
197
  | `cerefox_list_metadata_keys` | List all metadata keys in use across documents |
194
198
  | `cerefox_get_document` | Retrieve the full content of a document (current or archived version) |
195
199
  | `cerefox_list_versions` | List all archived versions of a document |
@@ -200,9 +204,13 @@ Once configured, every Path A client has these tools:
200
204
  | `cerefox_set_document_projects` | Set a document's project memberships to exactly the given list (destructive replace; metadata-only, no content change). Use `cerefox_ingest` with singular `project_name` for non-destructive "add". |
201
205
  | `cerefox_get_help` | Retrieve Cerefox conventions (the same content as `AGENT_QUICK_REFERENCE.md`) over MCP. Optional `topic` parameter does a case-insensitive H2 substring match. Call this whenever you are uncertain. |
202
206
 
203
- > All 13 core tools are available on both Path A (local and remote MCP) and Path B (GPT Actions
204
- > via dedicated Edge Functions, except `cerefox_get_help` which is MCP-only). MCP tools use
205
- > `project_name` (human-readable); primitive Edge Functions (Path B) use `project_id` (UUID).
207
+ > All 15 core tools are available on Path A (local and remote MCP). Path B (GPT Actions via
208
+ > dedicated Edge Functions) exposes the 8 primitive operations: search, ingest, metadata keys,
209
+ > get-document, list-versions, audit log, metadata-search, and list-projects. The rest are
210
+ > MCP-only: the partial-edit tools (`cerefox_insert`/`cerefox_edit`),
211
+ > `cerefox_delete_document`/`cerefox_restore_document`, the metadata/project setters, and
212
+ > `cerefox_get_help`. MCP tools use `project_name` (human-readable); primitive Edge
213
+ > Functions (Path B) use `project_id` (UUID).
206
214
 
207
215
  ### Path A system prompt
208
216
 
@@ -226,7 +234,8 @@ For the full tool reference, search Cerefox for "How AI Agents Use Cerefox".
226
234
  After setup, ask your client:
227
235
 
228
236
  > "What tools do you have available?"
229
- > Expected: 13 tools listed (`cerefox_search`, `cerefox_ingest`, `cerefox_insert`, `cerefox_edit`, `cerefox_get_document`,
237
+ > Expected: 15 tools listed (`cerefox_search`, `cerefox_ingest`, `cerefox_insert`, `cerefox_edit`,
238
+ > `cerefox_delete_document`, `cerefox_restore_document`, `cerefox_get_document`,
230
239
  > `cerefox_list_versions`, `cerefox_list_projects`, `cerefox_list_metadata_keys`,
231
240
  > `cerefox_metadata_search`, `cerefox_set_document_projects`,
232
241
  > `cerefox_set_document_metadata`, `cerefox_get_audit_log`,
@@ -321,7 +330,7 @@ pick it up automatically.
321
330
  to primitive Edge Functions. This means each MCP tool call costs a single Edge Function
322
331
  invocation.
323
332
 
324
- A single HTTPS URL gives any remote-capable MCP client all 13 core tools with full hybrid
333
+ A single HTTPS URL gives any remote-capable MCP client all 15 core tools with full hybrid
325
334
  search -- no Python, no `uv`, no local repository clone needed.
326
335
 
327
336
  **URL format:**
@@ -502,7 +511,7 @@ Replace `<your-project-ref>` with your Supabase project ref.
502
511
  **Step 3 — Verify:**
503
512
 
504
513
  Launch Codex and use the `/mcp` slash command to confirm the `cerefox` server is connected
505
- and all 13 tools are listed.
514
+ and all 15 tools are listed.
506
515
 
507
516
  **Notes:**
508
517
  - `bearer_token_env_var` is the **name** of the env var (e.g. `"CEREFOX_ACCESS_TOKEN"`), not the
@@ -588,7 +597,11 @@ When UPDATING an existing document, first call getDocument and note its
588
597
  content_hash, then pass it as expected_content_hash on ingestNote. If you get a
589
598
  409 conflict, the document changed underneath you: call getDocument again, merge
590
599
  your changes into the latest content, and retry with the new hash — never
591
- overwrite blindly.
600
+ overwrite blindly. A 409 with error "document_deleted" means the target is in
601
+ the trash: it must be restored by the user before updating. A 422 with error
602
+ "unresolved_links" means the content links document id(s) that do not exist —
603
+ you mangled a UUID; re-check each [Text](uuid) link against its source and
604
+ resend, or wrap example ids in backticks. Do not retry either unchanged.
592
605
  ```
593
606
 
594
607
  ### Path B verification
@@ -625,7 +638,7 @@ In the action editor, paste this schema (replace `<your-project-ref>`):
625
638
  openapi: 3.1.0
626
639
  info:
627
640
  title: Cerefox Knowledge Base
628
- version: 3.1.0
641
+ version: 3.2.0
629
642
  servers:
630
643
  - url: https://<your-project-ref>.supabase.co/functions/v1
631
644
  paths:
@@ -807,9 +820,20 @@ paths:
807
820
  with its content_hash.
808
821
  '409':
809
822
  description: >
810
- Conflict — the document changed since it was read. Call getDocument
811
- for the latest content + content_hash, merge your changes, and
812
- retry with the new hash. Do not overwrite blindly.
823
+ Conflict. Either the document changed since it was read (call
824
+ getDocument for the latest content + content_hash, merge your
825
+ changes, and retry with the new hash — do not overwrite blindly),
826
+ or the target document is soft-deleted (error
827
+ "document_deleted") — restore it first, then retry, or create a
828
+ new document.
829
+ '422':
830
+ description: >
831
+ Unresolved document links (error "unresolved_links") — the content
832
+ contains [Text](uuid) links to document ids that do not exist,
833
+ almost always mangled UUIDs. Re-read the source each link was
834
+ copied from, correct the id(s), and resend; do not retry
835
+ unchanged. Deliberate example ids belong in code formatting
836
+ (backticks), which is not validated.
813
837
  /cerefox-metadata:
814
838
  post:
815
839
  operationId: listMetadataKeys
@@ -1151,7 +1175,7 @@ user + `CEREFOX_OAUTH_OWNER_ID` pin, and register the Claude OAuth App
1151
1175
  Client Secret from the pre-registered OAuth App (setup-supabase Step 7d).
1152
1176
  5. Save. Claude runs the OAuth flow → redirects you to the **Cerefox consent page** (sign
1153
1177
  in with the owner email/password from Step 7c, then **Allow**) → returns to Claude. The
1154
- connector shows as connected with **13 tools** (16 if you have enabled document relations). (If you've approved before, Supabase
1178
+ connector shows as connected with **15 tools** (19 if you have enabled document relations). (If you've approved before, Supabase
1155
1179
  auto-consents and the page just flashes through — that's expected.)
1156
1180
  6. **Mobile**: connectors are account-level, so `CerefoxMCP` appears in the Claude mobile
1157
1181
  app automatically — run one search from your phone to confirm.
@@ -1253,7 +1277,7 @@ The agent docs are written around MCP tool names. **CLI flag names match MCP par
1253
1277
  | `cerefox_metadata_search` | `cerefox metadata search --metadata-filter '<json>' --project-name <n> --requestor <name>` |
1254
1278
  | `cerefox_get_audit_log` | `cerefox audit list --document-id <id> --author <a> --operation <op> --since <iso> --until <iso> --limit N --json --requestor <name>` |
1255
1279
 
1256
- > CLI verbs with no MCP equivalent: `cerefox document edit`, `cerefox document restore`, `cerefox project create` / `cerefox project edit`, `cerefox config list`.
1280
+ > CLI verbs with no MCP equivalent: `cerefox document edit`, `cerefox project create` / `cerefox project edit`, `cerefox config list`.
1257
1281
 
1258
1282
  ### Path C verification prompts
1259
1283
 
@@ -1272,8 +1296,8 @@ After pointing your agent at the repo, ask it:
1272
1296
 
1273
1297
  - **Privilege level**: the CLI uses the **service-role key** (`CEREFOX_SUPABASE_KEY`), which bypasses Row Level Security. An agent with Bash access has the same full read/write power you do. Only enable Path C for agents you trust to act on your behalf — the same trust level you'd grant Cursor/Claude Code for editing your source code.
1274
1298
  - **Audit attribution**: Path C records `access_path = "cli"` in usage logs, distinct from `"local-mcp"` / `"remote-mcp"`. **Agents must set `--author <name> --author-type agent` on writes and `--requestor <name>` on reads** (or rely on `CEREFOX_AUTHOR_NAME` / `CEREFOX_AUTHOR_TYPE` / `CEREFOX_REQUESTOR_NAME` env vars). Without these flags, writes attribute to `"unknown"` / `"user"`, which under-reports agent activity. See the 2026-05-18 Decision Log Q2 entry for the design rationale (`author_type` is caller-declared on ambiguous channels — CLI and Edge Functions — but `access_path` is always derived from the code layer).
1275
- - **Soft-delete is reachable; purge and restore are not** — by design. `cerefox document delete` is exposed on the CLI and sends documents to trash with an audit entry. **Permanent purge** (irreversible) and **restore from trash** (un-doing a destructive action) are intentionally web-UI-only and require human-in-the-loop confirmation. If an agent on Path C decides to delete content, it should surface that to the user explicitly so they can review and either restore or commit. See [`access-paths.md` → Destructive operations and the trust model](access-paths.md#destructive-operations-and-the-trust-model) for the full rationale and contributor guidance.
1276
- - **Cross-doc links in content you ingest** become clickable when the user views them in the Cerefox web UI. Author them as `[Text](uuid)` (most stable), `[Text](docs/path.md)` (repo files), or `[Text](<Title With Spaces>)` (angle-bracket form — bare spaces break markdown). See [`AGENT_GUIDE.md` → "Writing linkable content"](../../AGENT_GUIDE.md#writing-linkable-content) for the full set of rules.
1299
+ - **Soft-delete and restore are reachable; permanent purge is not** — by design. `cerefox document delete` / `cerefox document restore` on the CLI, `cerefox_delete_document` / `cerefox_restore_document` over MCP (v1.7.0, #208/#210): both audited with author attribution. **Permanent purge** (irreversible) stays web-UI-only with human-in-the-loop confirmation. If an agent deletes or restores content, it should surface that to the user explicitly so they can follow it in the audit trail. See [`access-paths.md` → Destructive operations and the trust model](access-paths.md#destructive-operations-and-the-trust-model) for the full rationale and contributor guidance.
1300
+ - **Cross-doc links in content you ingest** become clickable when the user views them in the Cerefox web UI. **Always author them as `[Text](uuid)`** — the server validates these on every write (v1.7.0) and rejects links to nonexistent ids, which catches mangled UUIDs at write time. `[Text](docs/path.md)` exists for repo-ingested files; do not write title-based links (fragile, and `AGENT_GUIDE.md` says never in agent-authored content). See [`AGENT_GUIDE.md` → "Writing linkable content"](../../AGENT_GUIDE.md#writing-linkable-content) for the full set of rules.
1277
1301
  - **CLI install per machine**: the agent needs the `cerefox` binary installed (`npm install -g @cerefox/memory`) with a resolvable `.env`. If you skip the local install entirely, Path A-Remote or Path B is the only option.
1278
1302
  - **No sandboxing beyond the agent's existing Bash sandbox**: the CLI is just shell. If your agent's tool framework restricts which commands run, allowlist `cerefox …` explicitly.
1279
1303
 
@@ -74,7 +74,7 @@ paths go through **Edge Functions**, which the free tier caps at 500,000/month:
74
74
  500K/month is generous for a single human-driven agent. But **automated or
75
75
  high-frequency agents on the remote path** can approach it. The lever: point those
76
76
  agents at the **local stdio MCP server** (`cerefox mcp`) instead of the remote Edge
77
- Function — it exposes the identical 13 core tools (plus the 4 relation tools when enabled), talks to the Data API directly, and
77
+ Function — it exposes the identical 15 core tools (plus the 4 relation tools when enabled), talks to the Data API directly, and
78
78
  costs **zero** Edge Function invocations (bonus: lower latency, and it works offline
79
79
  against a reachable database). If you do exceed the free EF quota, Supabase's Pro
80
80
  plan ($25/mo, 2M invocations included) is the next step.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cerefox/memory",
3
- "version": "1.6.1",
3
+ "version": "1.7.1",
4
4
  "description": "Cerefox — user-owned shared memory for AI agents. CLI + stdio MCP server + web UI + ingestion for a knowledge base on your own Supabase project (or fully self-hosted with Cerefox Local).",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/fstamatelopoulos/cerefox",