SynaBun
NPM · SYNABUN
Persistent memory MCP server for Claude Code, Codex and OpenCode, stored locally in SQLite
Available components
Last scanned (6 hours ago)
Scores higher than 42% of npm servers
Category Memory and Knowledge
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security83
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects sharp 0.34.5, reached via @huggingface/transformers > sharp. A fixed version is available. View diagnostics → Fail
- Declares code that runs automatically (postinstall) and that we could not recognise. It may be perfectly ordinary, but we have not established what it does. View diagnostics → Partial
- 103 of 344 dependencies flagged as unhealthy (2 deprecated). View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to danilokhury/Synabun). View diagnostics → Pass
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 1 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability59
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 28604 tokens (~210/item across 136 items; 136 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage96
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 87% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "browser_evaluate" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 137 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 31 Oct 26 0
- CVE-2026-118764 affects this package: high ▼ security
- CVE-2026-118773 affects this package: high ▼ security
- 30 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 29 Oct 26 57
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/synabun@2.1.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | danilokhury/Synabun |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/danilokhury/Synabun/.github/workflows/publish.yml@refs/heads/main |
| Rekor log index | 3573834448 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:1c4b761b56b7857d10478ba776d5a406b3c9876cb8d256436a5842be90541bb7b15a0d51f74fa8fdb08a0b6041144ab70a838ecb49884a27058d6cea6 |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| postinstall | unreviewed | node postinstall.js |
Background: Why install scripts are a supply-chain risk →
Vulnerabilities 5 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-3g3m-2fjr-6pw4 | CVE-2026-118773 | medium | yes | |
| GHSA-g3hv-75wg-m249 | CVE-2026-118764 | medium | yes | |
| GHSA-f88m-g3jw-g9cj | CVE-2026-114113 | high | yes | |
| GHSA-rgj7-g3m4-5g8c | CVE-2026-114112 | high | yes | |
| GHSA-wq5f-xc86-pv6w | CVE-2026-114111 | high | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 344 packages
| Packages resolved | 344 |
|---|---|
| Deprecated | 2 |
| Stale | 94 |
| No linked repository | 8 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
gsc_removals_cancel ~74
[mutating] Cancel a pending temporary removal request. URL must match the listed entry exactly.
| Name | Type | Req | Description |
|---|---|---|---|
| property | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
| url | string | yes | URL of the removal request to cancel (must match exactly as listed). |
No output schema declared.
No examples provided.
gsc_screenshot ~47
Capture a full-page screenshot of the active GSC tab. Saved via SynaBun image staging.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_security_issues ~83
Read Security Issues. action=list returns active + history. action=request_review clicks "Request review" (mutating, requires fixed issues).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | list (default) returns active issues; request_review submits a reconsideration request. |
| property | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_settings ~97
Read or modify property settings — ownership/verification, users, address. action=get returns the settings page summary; action=set_address/change_address mutate.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | Default get. set_address sets the Change-of-address target. change_address opens flow. |
| newProperty | string | – | Target property for change_address. |
| property | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_shopping ~48
Read Shopping/Merchant Listings report — counts and per-issue example URLs.
| Name | Type | Req | Description |
|---|---|---|---|
| property | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_sitemap ~105
Manage sitemaps. action=list returns all submitted sitemaps; action=submit adds a sitemap (mutating); action=delete removes one (mutating); action=view_errors opens the per-sitemap detail and returns issues.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| property | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
| url | string | – | Sitemap URL (relative or absolute) for submit/delete/view_errors. |
No output schema declared.
No examples provided.
gsc_users ~86
Manage property users. list returns email + role. add invites a user (mutating). remove revokes (mutating). change_role updates permissions (mutating).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| string | – | – | |
| property | string | – | – |
| role | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_videos_report ~52
Read the Video indexing report — same shape as gsc_pages_report but for video pages.
| Name | Type | Req | Description |
|---|---|---|---|
| property | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
image_staged ~177
List, clear, or remove images from SynaBun's image store (data/images/). Images arrive when users paste them in the Neural Interface chat. Use "list" to see available images with their full absolute paths — these paths can be passed to browser_upload, Read, or any tool that accepts file paths. Use "clear" to delete all attachment-type images (auto-clear after use). Use "remove" to delete a specific file.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action: "list" = show all images with paths. "clear" = delete all attachment images. "remove" = delete a specific image. |
| filename | string | – | Filename to remove (for "remove" action). |
| type | string | – | Filter by image type. Default: "all". "attachment" = images pasted in chat. |
No output schema declared.
No examples provided.
loop ~241
Autonomous loop control. Start a repeating task loop, check status, update progress journal, or stop it. The Stop hook drives iteration. Call "update" after each iteration with a brief summary to maintain context across compactions.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | start: begin autonomous loop. stop: end loop. status: check current loop state. update: write iteration journal/progress. |
| context | string | – | Extra context injected each iteration. |
| iterations | number | – | Max iterations (1-50, default 10). |
| max_minutes | number | – | Time cap in minutes (1-480, default 60). |
| progress | string | – | Rolling progress summary replacing the previous one. Used with action "update". |
| session_id | string | – | Claude Code session ID. Auto-detected if omitted. |
| summary | string | – | Brief summary of what this iteration accomplished (1-2 sentences, for journal). Used with action "update". |
| task | string | – | What to do each iteration (required for start). |
| template | string | – | Load a saved template by name or id. Template values are used as defaults; explicit params override. |
No output schema declared.
No examples provided.
memories ~326
Browse recent memories, get statistics, or fetch one memory in FULL by id. Use action "get" with an id to pull a large/consolidated memory untruncated (list actions truncate content to 150 chars). Use to see what you remember about a project, review recent learnings, or check memory health.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | recent=latest memories, stats=counts and health, by-category=filter by type, by-project=filter by project, get=FULL untruncated content of one memory by id (no vector search), triage=forget candidate… |
| category | string | – | Category to filter by (for by-category action). |
| expected_revision | integer | – | Required current revision for undo. |
| feedback | string | – | Feedback signal; never treated as proof of correctness. |
| id | string | – | Memory id (required for action "get"). Returns that memory's full content untruncated — use to fetch a consolidated/large memory directly. |
| ids | array | – | UUIDs for get-batch; maximum 50. |
| limit | number | – | Number of results (default 10). |
| operation | string | – | Maintenance operation; default status. |
| project | string | – | Filter by project (for by-project action). |
| relation_id | string | – | Relationship to undo. |
| revision | integer | – | Revision to restore for undo. |
| token_budget | integer | – | Estimated token budget for context; default 1500. |
No output schema declared.
No examples provided.
morelogin ~239
Manage MoreLogin (anti-detect, multi-account browser) profiles. Actions: "status" (is MoreLogin installed/running, which profile is the default AI browser), "list" (profiles), "create" (new profile), "start"/"stop" (launch/close a profile), "use_default" (set a profile as the default AI browser — afterwards all browser_* tools automatically drive that MoreLogin profile). Requires the MoreLogin desktop app to be running with its local API enabled.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | MoreLogin action. "status" = installed/running + current default. "list" = browser profiles (environments). "create" = new profile. "start"/"stop" = launch/close a profile. "use_default" = make a pro… |
| envId | string | – | MoreLogin environment (profile) id — required for start, stop, and use_default. Get ids from the "list" action. |
| name | string | – | Name for a new profile ("create" action). Defaults to "SynaBun". |
No output schema declared.
No examples provided.
recall ~452
Search your persistent memory for relevant information. Use this at the start of any task to check what you already know, or when you need context about past decisions, known issues, or architectural patterns. Prefer format="compact" for discovery; use memories action="get" for full originals.
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | – | Include records created at or after this ISO timestamp. |
| before | string | – | Include records created at or before this ISO timestamp. |
| category | string | – | Optional: filter by category name. |
| explain | boolean | – | Include retrieval reasons in compact output. |
| format | string | – | Optional compact, budgeted excerpts. Default preserves full legacy output. |
| include_sessions | boolean | – | Override session chunk search. Auto-triggers on temporal queries or sparse results. Set true to force, false to disable. |
| limit | number | – | Number of results. User configured: 5. OMIT this parameter to respect the user's setting. Only override if the user explicitly asks for a different count. |
| min_importance | number | – | Minimum importance threshold. |
| min_score | number | – | Minimum similarity score 0-1. User configured: 0.3. OMIT to use configured setting. |
| project | string | – | Optional: filter by project. If omitted, searches all projects but boosts current project. |
| query | string | yes | What to search for, in natural language. |
| recency_boost | boolean | – | Prioritize recent memories. User configured: OFF. OMIT to use configured setting. Shifts scoring to favor recency over semantic similarity (14-day half-life, 55% recency weight). Ideal for session-st… |
| rerank | boolean | – | Judge the shortlist for relevance after retrieval and reorder it. Slower — worth it when the query is subtle and the top hits look interchangeable. |
| scope | string | – | Project requires an explicit project or caller context; never widens the search. |
| tag_match | string | – | Match any tag (default) or require every tag. |
| tags | array | – | Optional: filter by tags (any match). |
| token_budget | integer | – | Total estimated output tokens for compact format; default 1500. |
No output schema declared.
No examples provided.
reflect ~267
Update or annotate an existing memory. Use this when you discover additional context, when a decision changes, or when you want to adjust importance based on new information.
| Name | Type | Req | Description |
|---|---|---|---|
| add_tags | array | – | Add tags without replacing existing ones. |
| category | string | – | Change the category name. |
| content | string | – | Updated content. If provided, the embedding vector is regenerated. |
| expected_revision | integer | – | Reject if the memory changed since this revision. |
| importance | number | – | Updated importance score. |
| memory_id | string | yes | The ID of the memory to update. MUST be the full UUID format (e.g., 8f7cab3b-644e-4cea-8662-de0ca695bdf2), not a shortened version. Use recall to get the full UUID. |
| project | string | – | Change the project this memory belongs to (e.g. "my-web-app", "synabun"). |
| related_files | array | – | Updated related file paths. |
| related_memory_ids | array | – | Link to related memories. |
| subcategory | string | – | Updated subcategory. |
| supersedes | string | – | Explicitly mark another memory in this project as superseded by this one. |
| tags | array | – | Replace all tags with these. |
No output schema declared.
No examples provided.
remember ~417
Store a piece of information in persistent memory. Use this when you learn something important, make a decision, discover a pattern, fix a hard bug, or want to preserve context for future sessions.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | REQUIRED. Category name (top-level bucket) to file this memory under. Call the category tool with action "list" for valid names, or action "create" if nothing fits. Distinct from subcategory. An unre… |
| content | string | yes | The information to remember. Be specific and include context. |
| idempotency_key | string | – | Retry key scoped to project and category. Same key/content returns the existing UUID. |
| importance | number | – | Set this deliberately on every call: 1=trivial, 5=routine, 7=significant, 8+=critical. Use 8+ for hard-won bug fixes and architecture decisions. Omit only when the work is genuinely routine (defaults… |
| kind | string | – | Memory kind; defaults to note. |
| project | string | yes | REQUIRED. Project this belongs to, lowercase kebab-case (e.g. "my-web-app", "synabun"). Use the project named in your session context — this is NOT reliably auto-detected over the HTTP transport, whe… |
| related_files | array | – | File paths this memory relates to. |
| source | string | – | How this was learned. user-told=user explicitly shared, self-discovered=found during work, auto-saved=session context. |
| source_ref | string | – | Local session/event identifier or source reference. |
| subcategory | string | – | Optional refinement: architecture, bug-fix, api-quirk, performance, config, deployment, etc. |
| tags | array | – | Tags for categorization (e.g. ["redis", "cache", "pricing"]) |
No output schema declared.
No examples provided.
restore ~43
Restore a trashed memory by ID. Use this to undo a forget operation.
| Name | Type | Req | Description |
|---|---|---|---|
| memory_id | string | yes | The memory ID to restore from trash. Use the full UUID. |
No output schema declared.
No examples provided.
style_guide ~651
A project's SynaBun Style Guide: brand, colors (light/dark), type, spacing, motion, components and rules, as a summary, the full DESIGN.md or tokens (CSS variables, Tailwind theme, W3C design tokens). Call it BEFORE UI, design, copy, marketing, image or video work and use its tokens instead of inventing values. Pass projectPath (your working directory). To change the guide, use action "propose": the user reviews proposals; never edit DESIGN.md or the token files by hand.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | "summary": the compact brand block (start here). "get": summary + the full DESIGN.md (or one `section`). "tokens": the tokens in a `format`. "contrast": WCAG ratio + APCA for `fg` on `bg`. "propose":… |
| bg | string | – | contrast: the background color, same forms as fg. |
| changes | object | – | propose: a JSON merge patch (RFC 7396) against the guide, e.g. {"colors":{"status":{"danger":"#dc2626"}}}. null deletes a key. agents and exports settings cannot be proposed. |
| fg | string | – | contrast: the text color — a hex, rgb(), hsl(), oklch(), or an alias like "{semantic.text}" or "{primary.500}". |
| format | string | – | tokens: "json" (resolved values, default), "dtcg" (W3C design tokens), "css" (custom properties), "tailwind-v4" (@theme) or "tailwind-v3" (theme.extend). |
| formats | array | – | export: which files to write (default: the ones the guide has enabled). |
| model | string | – | propose: the authoring model, if known. |
| projectPath | string | – | The project root or any path inside it (your working directory). The default is the server's cwd, which is usually NOT your project — pass it. |
| provider | string | – | propose: the authoring provider, if known. |
| reason | string | – | propose: why the guide should change (required). |
| runId | string | – | propose: the dispatched run id, if known. |
| section | string | – | get: only this DESIGN.md section, e.g. "Colors", "Typography", "Components", "Do's and Don'ts". |
| size | string | – | contrast: "large" for text ≥ 24px (or ≥ 18.66px bold) and UI components. |
| status | string | – | proposals: only this status. |
| taskClass | string | – | summary: the kind of work (e.g. "image_gen" or "video_gen" puts imagery and the generation prefix first). |
| theme | string | – | tokens / contrast: one theme (default: the guide's default theme). |
No output schema declared.
No examples provided.
sync ~152
Check for stale memories whose related files have changed. Compares stored file checksums against current hashes. Returns compact output (ID + changed files only, no content). IMPORTANT: Always pass "categories" to scope the scan — calling without categories scans ALL memories and may produce output too large to return inline. For large memory sets, call iteratively per category rather than globally. Default limit is 50; increase only when using a narrow category filter.
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | – | Optional: filter results to memories in these categories only. |
| limit | number | – | Max stale memories to return (default 50). Keep low to avoid output overflow. |
| project | string | – | Optional: only check memories for this project. |
No output schema declared.
No examples provided.
tictactoe ~228
Play Tic Tac Toe on the whiteboard. Actions: "start" sets up the board (piece defaults to X), "move" places the current turn's piece in cell 1-9, "state" shows the current board, "end" closes the game. The board renders visually on the whiteboard. X always goes first. Returns ASCII board + game status after each action.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Game action. "start" = set up board (optional piece: X or O). "move" = place piece (requires cell 1-9). "state" = get current board. "end" = tear down game. |
| cell | number | – | Cell number 1-9 (required for "move" action). Layout: 1 | 2 | 3 --------- 4 | 5 | 6 --------- 7 | 8 | 9 |
| piece | string | – | Which piece you play as (for "start" action). Default: X. X always goes first. |
No output schema declared.
No examples provided.
tool_groups ~231
Always-available router for SynaBun's tool groups. When a task needs a SynaBun tool this runtime does not list, call action="get", then action="add" with the group that has it, and continue once the host refreshes its tools. On Codex and Claude Code every SynaBun tool is already reachable on demand, so there it only moves the focus and needs no reload. Do not report a SynaBun capability unavailable before trying this. A change affects only this runtime, never other sessions or the default for new ones.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | get = this runtime's groups, what they do on this host, and the catalog. add = load more groups for this runtime. set = replace this runtime's groups. |
| groups | array | – | Group ids for add and set, from the catalog that get returns, e.g. ["gsc"] or ["browser_whatsapp"]; "all" is every group. The memory tools, loop, tool_groups and choice are always there; agents, skil… |
No output schema declared.
No examples provided.
whiteboard_add ~338
Add elements. Coordinates: px (default) are absolute canvas pixels and are NOT offset — start at the origin reported by whiteboard_read (values are clamped into the usable area). pct = 0-100 of the usable area (offsets applied; also converts arrow/pen points). parent:<sectionId> makes x/y relative to that section and clamps inside it. layout row/column/grid/center overrides x/y using real sizes. Sizes: text/list auto-size (do not pass width/height); shapes default 160x100 (rect, pill, circle, triangle, drawn-circle); sections default per sectionType; images need width/height. Arrows: 2+ points plus optional startAnchor/endAnchor (unknown IDs dropped with a warning; anchored ends snap to the target edge). Returns the FINAL geometry per element after defaults/pct/layout/clamping with the adjustments made, then overflow/overlap warnings for the new elements. Guidance: keep content within ~70-80% of the usable width, centered, fit vertically, ~20px margins.
| Name | Type | Req | Description |
|---|---|---|---|
| coordMode | string | – | "px" (default): absolute canvas pixels — NOT offset; the usable area starts at the origin whiteboard_read reports and values are clamped into it. "pct": 0-100 of the usable area (or of the parent sec… |
| elements | array | yes | Elements to add (1-100). |
| layout | string | – | Auto-layout using real element sizes; overrides x/y. Runs inside the parent section when parent is set. |
No output schema declared.
No examples provided.
whiteboard_read ~200
Read the whiteboard. Returns viewport truth (usable canvas size, origin offset, whether a browser is connected and in Focus mode), every element with its final box x,y,w,h (text/list sizes are browser-measured; ~ marks server estimates not yet measured), z-order, rotation, resolved arrow endpoints and anchors, then a layout analysis: content bounds, elements overflowing the usable area, overlapping pairs, section containment (with spill-outs), z-order and dangling-anchor notes. Call it before placing or moving elements and after edits to verify. format:'json' returns the same as structured JSON; verbose:true prints full text.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | "text" (default): annotated element list + layout analysis. "json": {viewport, connection, elements, analysis} as JSON. |
| verbose | boolean | – | Text mode only: print full text content (default truncates at 300 chars) and every list item (default 20). |
No output schema declared.
No examples provided.
whiteboard_remove ~94
Remove one element ({id}) or several atomically ({ids}). Arrows anchored to a removed element are detached and their endpoint moved to its centre (reported as cascade updates). Omit both to clear the whole board (undoable in the browser with Ctrl+Z).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | Element ID to remove. |
| ids | array | – | Several element IDs removed atomically (one save, one undo step). |
No output schema declared.
No examples provided.
whiteboard_screenshot ~136
Capture the live whiteboard from the primary connected browser window as a JPEG, preceded by a text block with the coordinate mapping (canvas size, image scale: image px ÷ scale = canvas px, usable viewport origin, element count). Fails with a clear message when no browser is connected. Use whiteboard_read for exact numbers; use this to judge visual overlap, legibility and how the board actually looks.
| Name | Type | Req | Description |
|---|---|---|---|
| crop | string | – | "full" (default): the whole canvas, so image px ÷ scale = canvas px. "usable": cropped to the usable viewport (origin offset reported in the text block). |
No output schema declared.
No examples provided.
whiteboard_update ~292
Update one element ({id, updates}) or many atomically ({items:[{id, updates}]}: one save, one render, one undo step in the browser). Only listed fields change; changing content/items/fontSize re-estimates a text/list size until the browser re-measures it. coordMode pct and parent:<sectionId> work as in whiteboard_add. Positions are clamped into the usable area; unknown anchor IDs are dropped with a warning. Per-item results include the final geometry; a missing ID fails only that item.
| Name | Type | Req | Description |
|---|---|---|---|
| coordMode | string | – | "px" (default): absolute canvas pixels — NOT offset; the usable area starts at the origin whiteboard_read reports and values are clamped into it. "pct": 0-100 of the usable area (or of the parent sec… |
| id | string | – | Single form: element ID (use together with updates). |
| items | array | – | Batch form: many updates in one save / one render / one undo step. Per-item results; a missing ID fails only that item. (List bullet text goes in updates.items, not here.) |
| parent | string | – | Single form: interpret x/y (px or pct) relative to this section and clamp inside it. |
| updates | object | – | Single form: fields to change. |
No output schema declared.
No examples provided.
youtube_analytics ~156
Read-only YouTube Analytics (views, watch-time, likes, subscribers, etc.) via the API — needs the YouTube API configured/authorized in Settings → YouTube. Channel-wide or per-video.
| Name | Type | Req | Description |
|---|---|---|---|
| channelId | string | – | Channel id (UC…). Defaults to the configured/owning channel. |
| endDate | string | – | YYYY-MM-DD. Default: today. |
| metrics | array | – | Metrics, e.g. ["views","estimatedMinutesWatched","likes","subscribersGained"]. Sensible defaults if omitted. |
| startDate | string | – | YYYY-MM-DD. Default: 28 days ago. |
| videoId | string | – | Limit the report to one video. Omit for channel-wide. |
No output schema declared.
No examples provided.
youtube_channel ~105
Read channel info or list recent uploads from Studio (browser). Use action=list to dedupe the autopilot against videos already on the channel.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | info = channel id/name; list = recent uploads (id, title, visibility) for dedup. |
| limit | number | – | Max videos for action=list (default 30). |
| sessionId | string | – | – |
| tabId | string | – | Target a specific tab. Auto-resolved if omitted. |
No output schema declared.
No examples provided.
youtube_download ~269
Download a trailer file. Prefers steamMp4Url (direct publisher asset, lowest copyright risk); otherwise yt-dlp on ytId/url. Returns { filePath, bytes, source }. Pass filePath to youtube_upload. [requires yt-dlp + ffmpeg on the host for the YouTube fallback path].
| Name | Type | Req | Description |
|---|---|---|---|
| appid | number | – | Steam appid — used only to name the output file. |
| filename | string | – | Base output filename (without extension). Defaults derived from ytId/appid. |
| quality | string | – | yt-dlp -f format string. Default: best video+audio ≤1080p, merged to mp4. |
| steamMp4Url | string | – | Direct Steam mp4 URL (from youtube_source steamMovies[].mp4). Preferred — no yt-dlp/ffmpeg required. |
| url | string | – | Explicit video URL to download via yt-dlp. |
| useCookies | boolean | – | Cookie fallback for the yt-dlp path. The server downloads cookieless first and only retries with browser cookies if YouTube demands auth (age/region/members-gated). Defaults on; pass false to hard-di… |
| ytId | string | – | YouTube video id to download via yt-dlp (fallback for YouTube-only trailers). |
No output schema declared.
No examples provided.
youtube_endscreen ~142
Apply an end-screen template to a video (links to a related video/playlist + a subscribe element) via the Studio end-screen editor, then save. [mutating]. End-screen editing is canvas-based and may need a manual touch-up.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | – | – |
| tabId | string | – | Target a specific tab. Auto-resolved if omitted. |
| template | string | – | Which end-screen layout to apply. 'default' = first built-in template; 'last_video_subscribe' = best-for-retention; 'import' = copy from your most recent video. |
| videoId | string | yes | YouTube video id. |
No output schema declared.
No examples provided.
youtube_metadata ~171
Edit an existing video's metadata on its Studio edit page: title, description, tags, category, made-for-kids. Saves on completion. [mutating]. Use youtube_schedule for visibility/publish-time.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Category name, e.g. "Gaming". Set via the Show-more category dropdown. |
| description | string | – | New description (replaces existing). |
| madeForKids | boolean | – | COPPA audience flag. |
| sessionId | string | – | – |
| tabId | string | – | Target a specific tab. Auto-resolved if omitted. |
| tags | array | – | Tags/keywords (replaces existing; revealed under "Show more"). |
| title | string | – | New title (≤100 chars). |
| videoId | string | yes | YouTube video id to edit. |
No output schema declared.
No examples provided.
youtube_navigate ~106
Open a YouTube Studio section (dashboard, content, analytics, playlists, comments, subtitles, copyright, earn, customization). Auto-creates a browser session on studio.youtube.com using the signed-in Google account. Call before other youtube_* browser tools.
| Name | Type | Req | Description |
|---|---|---|---|
| section | string | yes | Studio section to open. |
| sessionId | string | – | Browser session ID. Auto-resolved or auto-created. |
| tabId | string | – | Target a specific tab. Auto-resolved if omitted. |
No output schema declared.
No examples provided.
youtube_playlist ~145
Manage playlists. action=list enumerates them; action=create makes a new playlist; action=add adds a video to an existing playlist (by name). [mutating for create/add].
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | list = enumerate playlists; create = make a new playlist; add = add a video to a playlist. |
| name | string | – | Playlist name (required for create/add). |
| sessionId | string | – | – |
| tabId | string | – | Target a specific tab. Auto-resolved if omitted. |
| videoId | string | – | Video id to add (required for action=add). |
| visibility | string | – | New playlist visibility (create). Default public. |
No output schema declared.
No examples provided.
youtube_schedule ~169
Schedule a video to go public at a future time (or set immediate visibility) via the Studio visibility dialog. Pass publishAt for scheduling. [mutating]. Locale-aware date entry (US + pt-BR); the response echoes the picker read-back as scheduledDisplay — verify it matches your intended slot.
| Name | Type | Req | Description |
|---|---|---|---|
| publishAt | string | – | Scheduled publish time, ISO ("2026-06-20T18:00") or "YYYY-MM-DD HH:MM". Required unless setting an immediate visibility. |
| sessionId | string | – | – |
| tabId | string | – | Target a specific tab. Auto-resolved if omitted. |
| videoId | string | yes | YouTube video id. |
| visibility | string | – | Set immediate visibility, or "schedule" (default when publishAt is given). |
No output schema declared.
No examples provided.
youtube_source ~368
Discover FRESH candidate game trailers (already-posted ones are removed automatically via the youtube-videos memory ledger — no manual dedup/recall needed). Searches YouTube for recently published trailers, queries IGDB for games (+ Steam appid and official YouTube trailer ids), and resolves Steam direct mp4 URLs. Returns trimmed candidates: { game, source, igdbId, appid, releaseDate, trailerPublishedAt, trailerTitle, genres, ytTrailerIds, steamMp4Url, summary }. Feed one to youtube_download (prefer steamMp4Url; fall back to a ytTrailerIds value), then pass its game/igdbId/appid/sourceTrailerId back into youtube_upload so it records the ledger.
| Name | Type | Req | Description |
|---|---|---|---|
| appids | array | – | Steam appids to resolve (required for source=steam). |
| excludePosted | boolean | – | Drop trailers already on the youtube-videos memory ledger (exact igdb/appid/ytid/name match). Default true — leave it on so the autopilot never re-posts. Set false only to inspect the raw pool. |
| limit | number | – | Max candidates (1-50, default 10). |
| lookbackDays | number | – | For source=youtube: published-after window. For IGDB/auto: release-date lookback window (default from config / 60). |
| query | string | – | Game title or trailer search query. For source=youtube, omit to search official game trailers by publish date. |
| source | string | – | Discovery backend. 'youtube' = YouTube Data API date-ordered recent trailer search; 'auto' (default) = IGDB games enriched with Steam mp4 URLs; 'igdb' = metadata + trailer pointers only; 'steam' = re… |
No output schema declared.
No examples provided.
youtube_thumbnail ~104
Upload a custom thumbnail to a video via its Studio edit page (uses the hidden thumbnail file input). Saves on completion. [mutating].
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path to the thumbnail image (JPG/PNG, ≤2MB, 1280×720 recommended). |
| sessionId | string | – | – |
| tabId | string | – | Target a specific tab. Auto-resolved if omitted. |
| videoId | string | yes | YouTube video id. |
No output schema declared.
No examples provided.
youtube_upload ~379
Upload a local video file to YouTube Studio, publish it, and record it to the youtube-videos dedup ledger. Opens Create → Upload, sets the file, fills title/description/tags, advances the wizard, sets visibility, clicks Done, then verifies the wizard closed and resolves the new video id. [mutating — publishes to the channel]. Pass game/igdbId/appid/sourceTrailerId so the upload is remembered and never re-posted. Default visibility=private so you can schedule afterwards with youtube_schedule.
| Name | Type | Req | Description |
|---|---|---|---|
| appid | number | – | Steam appid (from youtube_source). Dedup ledger key — pass it whenever known. |
| description | string | – | Video description (credits, store link, etc.). |
| filePath | string | yes | Absolute path to the local video file (from youtube_download). |
| game | string | – | Game name (from the youtube_source candidate). Recorded to the youtube-videos dedup ledger. |
| igdbId | number | – | IGDB id (from youtube_source). Dedup ledger key — pass it whenever known. |
| madeForKids | boolean | – | COPPA audience flag. Default false (Not made for kids). |
| sessionId | string | – | – |
| source | string | – | Where the downloaded file came from (recorded for the ledger). |
| sourceTrailerId | string | – | The SOURCE trailer YouTube id you downloaded (a youtube_source ytTrailerIds value). Dedup ledger key. |
| tabId | string | – | Target a specific tab. Auto-resolved if omitted. |
| tags | array | – | Tags/keywords (added under "Show more"). |
| title | string | yes | Video title (≤100 chars). Studio truncates beyond 100. |
| visibility | string | – | Publish visibility. Default: private (schedule/publish later with youtube_schedule). |
No output schema declared.
No examples provided.
How do I install the SynaBun MCP server?
SynaBun runs locally as an npm package, launched with npx -y synabun. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · synabun
claude mcp add danilokhury-synabun -- npx -y synabun
What is the SynaBun MCP server?
SynaBun is an MCP server listed in the public MCP registry as io.github.danilokhury/synabun. Persistent memory MCP server for Claude Code, Codex and OpenCode, stored locally in SQLite. This page covers its npm package (synabun).
Is the SynaBun MCP server safe to use?
SynaBun scores 72 out of 100 on VerifyMCP. We recorded 5 known advisories against it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the SynaBun MCP server expose?
SynaBun exposes 136 tools: remember, recall, forget, restore, reflect, and 131 more. Their descriptions and schemas cost roughly 27,468 tokens of context every time the server is loaded.
Is the SynaBun MCP server still maintained?
SynaBun is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the SynaBun MCP server under?
SynaBun declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.