SynaBun
NPM · SYNABUN
Persistent memory MCP server for Claude Code, Codex and OpenCode, stored locally in SQLite
Available components
Last scanned (23 hours ago)
Scores higher than 43% 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 0 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 4 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 →
browser_reload ~68
Reload the current page. Useful after making changes or when content is stale.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | – | Browser session ID. If omitted, auto-selects the only open session. |
| tabId | string | – | Target a specific tab within the session. Auto-resolved from environment if omitted. |
No output schema declared.
No examples provided.
browser_screenshot ~403
Take a screenshot of the current page (localhost pages included): the viewport as JPEG, downscaled to 1024 px wide, by default. For visual QA pass width/height (breakpoints 375 / 768 / 1440 — emulated for this capture only), fullPage for the whole page, and save or path to write a PNG and get its path. Prefer browser_snapshot to read structure; it is far more token-efficient.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Image format. Default: JPEG for the returned image, PNG for a saved file. |
| fullPage | boolean | – | Capture the whole scrollable page instead of the viewport. |
| height | integer | – | Viewport height in CSS px for this capture only (default: the current height). |
| maxWidth | integer | – | Downscale the returned image to this width in px (default 1024). 0 = native resolution. A saved file is always full resolution. |
| path | string | – | Absolute .png / .jpg / .jpeg file to save to, inside a registered project or the screenshots folder (implies save). Parent folders are created; only an existing image is ever replaced. |
| quality | integer | – | JPEG quality 10-100 (default 60 for the returned image, 90 for a saved JPEG). |
| save | boolean | – | Also save the full-resolution image as a file (default folder ~/.synabun/data/media/screenshots/<date>/) and return its path. |
| sessionId | string | – | Browser session ID. If omitted, auto-selects the only open session. |
| tabId | string | – | Target a specific tab within the session. Auto-resolved from environment if omitted. |
| width | integer | – | Viewport width in CSS px for this capture only, e.g. 375, 768 and 1440 for breakpoints. Emulated on the tab (mobile below 768) and reset right after. |
No output schema declared.
No examples provided.
browser_scroll ~212
Scroll the page or a scrollable container (by ref or selector). Essential for infinite-scroll feeds — but for harvesting feed data, prefer the browser_extract_* tools with their scrolls param, which scroll+extract+dedupe in one call.
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | yes | Direction to scroll. |
| distance | number | – | Pixels to scroll (default: 500). |
| ref | string | – | Scroll within the container with this ref from browser_snapshot. |
| returnSnapshot | object | – | Legacy inline snapshot (tree modes). Prefer the "snapshot" param, which returns ref-based AI snapshots. |
| selector | string | – | Scroll within a specific scrollable element instead of the window. |
| sessionId | string | – | Browser session ID. If omitted, auto-selects the only open session. |
| snapshot | string | – | Optionally include an AI snapshot after scrolling ("diff" = only what changed). |
| tabId | string | – | Target a specific tab within the session. Auto-resolved from environment if omitted. |
No output schema declared.
No examples provided.
browser_select ~235
Select an option from a <select> dropdown by ref or selector, and option value.
| Name | Type | Req | Description |
|---|---|---|---|
| nthMatch | integer | – | If the selector matches multiple elements, select from the Nth one (0-indexed). |
| ref | string | – | Element ref from browser_snapshot, e.g. "e12". Preferred over selector — exact match, no guessing. |
| selector | string | – | Playwright selector for the <select> element (CSS, text="...", :has-text("..."), role=..., [data-testid="..."]). Fallback when you have no ref. NEVER use :contains(). |
| sessionId | string | – | Browser session ID. If omitted, auto-selects the only open session. |
| tabId | string | – | Target a specific tab within the session. Auto-resolved from environment if omitted. |
| textHint | string | – | What the dropdown is for, in words (e.g. "Country"). If the selector matches nothing, the server tries an exact role+name match and the visible candidates are ranked against this phrase. Advisory. |
| value | string | yes | The option value to select. |
No output schema declared.
No examples provided.
browser_session ~101
Manage browser sessions — list open sessions, create a new browser, or close an existing one.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | "list" = list open sessions, "create" = open a new browser, "close" = close a session. |
| sessionId | string | – | Session ID for "close" action. Required for close when multiple sessions exist. |
| url | string | – | Starting URL for "create" action (default: about:blank). |
No output schema declared.
No examples provided.
browser_snapshot ~439
Observe page structure and element refs for click/fill/type. Scope with selector on complex pages. AI mode deduplicates delivered observations and supports snapshot IDs and diffs. Refs target elements in the latest captured scope; refresh after navigation or a stale-ref error.
| Name | Type | Req | Description |
|---|---|---|---|
| baselineId | string | – | Diff against this delivered snapshot ID. A missing or incompatible baseline returns a full view. |
| depth | integer | – | Limit tree depth (mode="ai" only). Use 10-14 on deep feed pages to shrink output. |
| diff | boolean | – | Return only the changed region vs your previous snapshot of this tab (mode="ai" only). |
| force | boolean | – | Return the full snapshot even if the page is unchanged since your last snapshot. |
| format | string | – | Only meaningful with mode="interactive": "json" = compact array. |
| intent | string | – | What you want to do on this page, in words (e.g. "open account settings"). mode="ai" only: the refs of THIS snapshot are ranked against it and the best one is named in a "Jev target:" line. Advisory… |
| maxChars | integer | – | Cap snapshot text in characters, excluding brief metadata (default 30000). Truncates at complete lines. |
| mode | string | – | "ai" (default) = compact YAML with [ref=eN] element refs — pass ref to browser_click/fill/type to act on elements. "interactive" = flat list of clickable elements with selector hints. "full" = legacy… |
| selector | string | – | Scope snapshot to a specific element's subtree. Dramatically reduces output on complex pages. |
| sessionId | string | – | Browser session ID. If omitted, auto-selects the only open session. |
| tabId | string | – | Target a specific tab within the session. Auto-resolved from environment if omitted. |
| viewport | boolean | – | Drop off-screen nodes (legacy modes only; ignored for mode="ai" — use depth/selector instead). |
No output schema declared.
No examples provided.
browser_type ~293
Type text (simulates keystrokes; appends). Target by ref from browser_snapshot (preferred), selector, or omit both to type into the focused element. Prefer over browser_fill for contenteditable/rich-text editors.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | "sequential" = per-key events. "insert" = bulk insertText, fast, safe for modal composers. "paragraphs" = Escape+Enter between paragraphs (never on modals — Escape closes them). See browser_cheatshee… |
| nthMatch | integer | – | If the selector matches multiple elements, type into the Nth (0-indexed). |
| ref | string | – | Element ref from browser_snapshot, e.g. "e12". Preferred over selector — exact match, no guessing. |
| selector | string | – | Playwright selector for the element to type into. If both ref and selector are omitted, types into the focused element. |
| sessionId | string | – | Browser session ID. If omitted, auto-selects the only open session. |
| tabId | string | – | Target a specific tab within the session. Auto-resolved from environment if omitted. |
| text | string | yes | The text to type character by character (appends to existing content). |
| textHint | string | – | Auto-heal: if the selector matches 0 elements, server retries with role=*[name~="<textHint>"]. |
No output schema declared.
No examples provided.
browser_upload ~260
Upload files via a file input element (by ref or selector). For hidden/gated inputs, click the visible upload button first to reveal the input. See browser_cheatsheet for per-platform upload flows.
| Name | Type | Req | Description |
|---|---|---|---|
| filePaths | array | yes | Absolute file paths to upload. |
| nthMatch | integer | – | If the selector matches multiple file inputs, upload to the Nth (0-indexed). |
| ref | string | – | Element ref from browser_snapshot, e.g. "e12". Preferred over selector — exact match, no guessing. |
| selector | string | – | Playwright selector for the file input element (CSS, text="...", :has-text("..."), role=..., [data-testid="..."]). Fallback when you have no ref. NEVER use :contains(). |
| sessionId | string | – | Browser session ID. If omitted, auto-selects the only open session. |
| tabId | string | – | Target a specific tab within the session. Auto-resolved from environment if omitted. |
| textHint | string | – | What the upload control is, in words (e.g. "Add photo"). If the file input is not found, the visible controls are ranked against this phrase — usually the button that reveals the hidden input. Adviso… |
No output schema declared.
No examples provided.
browser_wait ~216
Wait for an element to reach a certain state, a page load state, or a fixed timeout. Useful after navigation or clicks that trigger async content loading. Use loadState="networkidle" after posting on Twitter/X or after navigation to ensure all async requests have settled.
| Name | Type | Req | Description |
|---|---|---|---|
| loadState | string | – | Page load state to wait for. Use "networkidle" after posting a tweet to confirm XHR requests settled. Takes priority over selector when provided. |
| selector | string | – | CSS selector to wait for. If omitted and loadState also omitted, waits for timeout. |
| sessionId | string | – | Browser session ID. If omitted, auto-selects the only open session. |
| state | string | – | Element state to wait for (default: "visible"). Only used with selector. |
| tabId | string | – | Target a specific tab within the session. Auto-resolved from environment if omitted. |
| timeout | number | – | Timeout in ms (default: 10000 for element waits, 15000 for loadState). |
No output schema declared.
No examples provided.
browser_x_compose_state ~537
Inspect the X/Twitter compose surface in ONE call (read-only). Returns: composerOpen, composerText (read back from [data-testid="tweetTextarea_0"]), charCount, overLimit; quoteCard {present, type:"quote"|"link"|"none", author, handle, text, url} — type "quote" means a real embedded quoted-tweet card rendered (safe to post a quote), "link" means only a plain link-preview card (posting would publish a bare reply — do NOT post; fix the status URL or skip the target), "none" means nothing embedded; submitButton {testid:"tweetButtonInline"|"tweetButton", present, enabled, selector} (tweetButtonInline for inline replies, tweetButton for the compose dialog); isModal (the glitchy centered reply dialog is open — close it and retry inline), composerCount (>1 ⇒ pass nthMatch to disambiguate the two reply textareas), hasStaleDraft (duplicated/garbled leftover text — discard and reopen), warnings[]; and recommendedAction {submit|type|open-composer|fix-quote-url|trim-text|unknown} — the deterministic next step. QUOTE flow: navigate x.com/compose/tweet, browser_type the full status URL, call this probe, post via submitButton.selector ONLY if quoteCard.type==="quote". REPLY flow: click the reply icon, call this probe, if isModal close it and retry inline, type, post via submitButton.selector. After submitting, re-call this probe (composer should have cleared) and confirm with browser_extract_tweets on the author profile /with_replies (a NEW, higher status id = published). On loop tabs a server-side gate ALSO blocks a tweetButton click when a status URL is in the body but quoteCard.type!=="quote" (response carries quoteGuard) — so a quote can never silently misfire into a bare reply. Read-only — never types or clicks. When recommendedAction is "unknown" or warnings[] is non-empty, an additive `judgment` {advisory:true, state, confidence, suggestedControl?, note} may appear: a Jev reading of the ambiguous probe built from booleans and counts only (never the composer text or the quot…
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | – | Browser session ID. If omitted, auto-selects the only open session. |
| tabId | string | – | Target a specific tab within the session. Auto-resolved from environment if omitted. |
No output schema declared.
No examples provided.
card_close ~61
Close a memory card by its UUID, or close all open cards if no memoryId is provided. Use card_list first to see which cards are open.
| Name | Type | Req | Description |
|---|---|---|---|
| memoryId | string | – | UUID of the card to close. Omit to close ALL open cards. |
No output schema declared.
No examples provided.
card_list ~60
List all currently open memory cards in the Neural Interface. Returns each card's memory UUID, position, size, compact/pin state, content preview, and the current viewport dimensions (width x height). Use this before placing cards to know the available screen size.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
card_open ~216
Open a memory as a floating card in the Neural Interface. Use card_list first to see viewport size. Coordinate modes (coordMode): "px" (default) = absolute pixels. "pct" = percentage of viewport (0-100), e.g. left:50 top:50 = center of screen. If the card is already open, it is brought to the front. Omit left/top for auto-cascade positioning.
| Name | Type | Req | Description |
|---|---|---|---|
| compact | boolean | – | Open in compact mode (220x120px mini-card). Default: false. |
| coordMode | string | – | Coordinate mode. "px" (default) = absolute pixels. "pct" = percentage of viewport (0-100). left:50 top:50 = center of screen. |
| left | number | – | X position from left edge. Omit for auto-cascade. |
| memoryId | string | yes | UUID of the memory to open as a floating card |
| top | number | – | Y position from top edge. Omit for auto-cascade. |
No output schema declared.
No examples provided.
card_screenshot ~43
Take a visual screenshot of the Neural Interface showing all open memory cards in their current positions. Returns a JPEG image. Requires the Neural Interface to be open in a browser.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
card_update ~198
Update an open memory card's position, size, compact/expand state, or pin state. Set coordMode to "pct" to use percentage-based positioning. Only specified fields are changed; others remain untouched. Changes appear in real-time.
| Name | Type | Req | Description |
|---|---|---|---|
| compact | boolean | – | true = switch to compact mode (220x120px), false = expand to full size |
| coordMode | string | – | Coordinate mode for position/size values. "pct" = percentage of viewport. |
| height | number | – | New height (ignored in compact mode) |
| left | number | – | New X position |
| memoryId | string | yes | UUID of the card to update (must be currently open) |
| pinned | boolean | – | true = pin card (locked position, dimmed, z-index 180), false = unpin |
| top | number | – | New Y position |
| width | number | – | New width (ignored in compact mode) |
No output schema declared.
No examples provided.
category ~227
Manage memory categories. Actions: create, update, delete, list. Categories persist across sessions.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action to perform: create, update, delete, or list categories. |
| color | string | – | Color hex code, e.g. "#3b82f6". Empty string "" to remove. |
| description | string | – | Category description (required for create, optional for update). |
| format | string | – | Output format for list action: flat, tree (default), or parents-only. |
| is_parent | boolean | – | Make this a parent/cluster category (create only). |
| name | string | – | Category name (required for create/update/delete). |
| new_name | string | – | Rename category to this (update only). |
| parent | string | – | Parent category name. Empty string "" to remove parent. |
| reassign_children_to | string | – | Reassign child categories to this parent when deleting a parent. Empty string "" for top-level (delete only). |
| reassign_to | string | – | Reassign memories to this category before deleting (delete only). |
No output schema declared.
No examples provided.
choice ~85
Ask the user blocking multiple-choice questions through MCP form elicitation. Use this for SynaBun choices in Codex Default mode. If the result reports supported=false, ask the same numbered choices once in plain text and wait; do not call another question tool.
| Name | Type | Req | Description |
|---|---|---|---|
| questions | array | yes | One to three blocking multiple-choice questions. Each question must have two to four mutually exclusive options. |
No output schema declared.
No examples provided.
discord_channel ~347
Discord channel management. Actions: create, edit, delete, list, permissions. Handles text, voice, categories, forums, stages.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action: create, edit, delete, list, or permissions. |
| allow | string | – | Permission flags to allow, comma-separated (permissions). E.g. "SEND_MESSAGES,VIEW_CHANNEL". |
| bitrate | number | – | Voice bitrate in bps (voice channels, create/edit). |
| channel | string | – | Channel name or ID (required for edit/delete/permissions). |
| deny | string | – | Permission flags to deny, comma-separated (permissions). E.g. "SEND_MESSAGES". |
| guild_id | string | – | Guild ID. Defaults to DISCORD_GUILD_ID env var. |
| name | string | – | Channel name (create required, edit optional). |
| nsfw | boolean | – | NSFW flag (create/edit). |
| parent | string | – | Parent category name or ID (create/edit). Empty string to remove. |
| position | number | – | Sort position (create/edit). |
| reason | string | – | Audit log reason. |
| slowmode | number | – | Slowmode in seconds, 0-21600 (create/edit). |
| target | string | – | Role or user name/ID (permissions action). Use "type:role" or "type:user" prefix, or bare name/ID. |
| topic | string | – | Channel topic/description (create/edit). |
| type | string | – | Channel type (create only, default: text). Use "category" for channel categories. |
| user_limit | number | – | Voice user limit, 0=unlimited (voice channels, create/edit). |
No output schema declared.
No examples provided.
discord_guild ~116
Discord server overview and listing. Actions: info, channels, members, roles, audit_log.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action: info (server details), channels (list all), members (list), roles (list all), audit_log (recent actions). |
| action_type | number | – | Audit log action type filter (audit_log only). |
| guild_id | string | – | Guild ID. Defaults to DISCORD_GUILD_ID env var. |
| limit | number | – | Max results for members/audit_log (default 50). |
No output schema declared.
No examples provided.
discord_member ~168
Discord member moderation. Actions: info, kick, ban, unban, timeout, nickname.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action: info, kick, ban, unban, timeout, nickname. |
| delete_days | number | – | Days of messages to delete, 0-7 (ban action, default 0). |
| duration | number | – | Timeout duration in minutes (timeout action). 0 to remove timeout. |
| guild_id | string | – | Guild ID. Defaults to DISCORD_GUILD_ID env var. |
| member | string | yes | User name, tag, or ID (required for all actions). |
| nickname | string | – | New nickname (nickname action). Empty string to reset. |
| reason | string | – | Moderation reason for audit log (kick/ban/timeout). |
No output schema declared.
No examples provided.
discord_message ~298
Discord message operations. Actions: send, edit, delete, pin, unpin, react, bulk_delete, list.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action: send, edit, delete, pin, unpin, react, bulk_delete, list. |
| after | string | – | Fetch messages after this message ID (list action). |
| before | string | – | Fetch messages before this message ID (list action). |
| channel | string | yes | Channel name or ID (required for all actions). |
| content | string | – | Message text (send required, edit optional). |
| embed | object | – | Embed object: {title?, description?, color? (int), fields?: [{name, value, inline?}], footer?: {text}, image?: {url}, thumbnail?: {url}}. (send/edit) |
| emoji | string | – | Emoji for react action. Unicode emoji or custom format "name:id". |
| guild_id | string | – | Guild ID for channel name resolution. Defaults to DISCORD_GUILD_ID env var. |
| limit | number | – | Max messages to fetch (list action, default 50, max 100). |
| message_id | string | – | Message ID (required for edit/delete/pin/unpin/react). |
| message_ids | array | – | Array of message IDs for bulk_delete (2-100 messages, max 14 days old). |
| reply_to | string | – | Message ID to reply to (send only). |
No output schema declared.
No examples provided.
discord_onboarding ~288
Discord server onboarding and setup. Actions: get, set_welcome, set_rules, set_verification, set_onboarding.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action: get (current config), set_welcome (welcome screen), set_rules (rules channel), set_verification (level), set_onboarding (prompts & defaults). |
| default_channels | array | – | Default channel IDs for new members (set_onboarding). |
| description | string | – | Welcome screen description text (set_welcome). |
| enabled | boolean | – | Enable/disable onboarding (set_onboarding). |
| guild_id | string | – | Guild ID. Defaults to DISCORD_GUILD_ID env var. |
| prompts | array | – | Onboarding prompts array (set_onboarding). Each: {title, options: [{title, description?, emoji_name?, channel_ids?, role_ids?}], single_select?, required?, in_onboarding?} |
| rules_channel | string | – | Channel name or ID for rules (set_rules). |
| system_channel | string | – | Channel name or ID for system messages (set_rules). |
| verification_level | string | – | Verification level (set_verification). none=unrestricted, low=email, medium=5min, high=10min, very_high=phone. |
| welcome_channels | array | – | Welcome screen channels: [{channel_id, description, emoji_name?}] (set_welcome). |
No output schema declared.
No examples provided.
discord_role ~229
Discord role management. Actions: create, edit, delete, list, assign (role to member), remove (role from member).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action: create, edit, delete, list, assign (to member), remove (from member). |
| color | string | – | Hex color e.g. "#ff0000" (create/edit). |
| guild_id | string | – | Guild ID. Defaults to DISCORD_GUILD_ID env var. |
| hoist | boolean | – | Display separately in sidebar (create/edit). |
| member | string | – | User name or ID (assign/remove actions). |
| mentionable | boolean | – | Allow @mention by anyone (create/edit). |
| name | string | – | Role name (create required, edit optional). |
| permissions | string | – | Permission flags, comma-separated (create/edit). E.g. "SEND_MESSAGES,MANAGE_CHANNELS". |
| position | number | – | Sort position (edit only). |
| reason | string | – | Audit log reason. |
| role | string | – | Role name or ID (required for edit/delete/assign/remove). |
No output schema declared.
No examples provided.
discord_thread ~189
Discord thread management. Actions: create (from message or standalone), archive, unarchive, lock, delete.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action: create, archive, unarchive, lock, delete. |
| auto_archive | number | – | Auto-archive duration in minutes: 60, 1440, 4320, or 10080 (create only). |
| channel | string | – | Parent channel name or ID (create only). |
| guild_id | string | – | Guild ID for channel name resolution. Defaults to DISCORD_GUILD_ID env var. |
| message_id | string | – | Create thread from this message (create only). Omit for standalone thread. |
| name | string | – | Thread name (create required). |
| private | boolean | – | Create private thread (create only, default false). |
| thread | string | – | Thread ID (required for archive/unarchive/lock/delete). |
No output schema declared.
No examples provided.
discord_webhook ~203
Discord webhook management. Actions: create, edit, delete, list, execute (send message as webhook).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action: create, edit, delete, list, execute. |
| avatar_url | string | – | Avatar URL (create/edit). |
| channel | string | – | Channel name or ID (required for create/list). |
| content | string | – | Message content (execute). |
| embeds | array | – | Embeds array (execute). Each: {title?, description?, color?, fields?: [{name, value}]}. |
| guild_id | string | – | Guild ID for channel name resolution. Defaults to DISCORD_GUILD_ID env var. |
| name | string | – | Webhook name (create required, edit optional). |
| username | string | – | Override display name (execute). |
| webhook_id | string | – | Webhook ID (required for edit/delete/execute). |
| webhook_token | string | – | Webhook token (required for execute). |
No output schema declared.
No examples provided.
fb_groups ~1,090
Structured Facebook group directory + per-group posting checklist (SQLite-backed; the single source of truth that replaces the free-text seed-queue). Actions: worklist {currency|region, offerSlug, limit?, freshDays?=14, includePending?=false, reset?} — returns the groups STILL to post to for this offer: joined, promo not forbidden, region/currency match, not pending/cooldown, not already posted for this offer within freshDays; never-posted first, then least-recently-posted, then largest. Re-call it to RESUME (it returns only what is left); a new offerSlug (or reset:true) starts FRESH. mark {url, offerSlug, currency, status, postUrl?, note?} — record ONE group right after posting (durable checklist; call after EACH group, never batch). status posted=visible-post, pending=pending-approval (success; engages a 48h cooldown so the worklist skips it), failed=posting-failed, skipped. import {fromMemoryIds?, fromExtract?} — (re)build the directory from the surviving memories and/or a live browser_extract_fb_groups payload (idempotent). set {url | groups:[…]} with region/lang/currency/country/name/member_count/allows_promo — curation: authoritatively classify one or many groups (currency must be a SUPPORTED deal currency: USD/GBP/EUR/BRL/TRY/CAD/AUD). exclude {url, reason} — mark a group promo-forbidden (permanently dropped from worklists). list/stats {region?} — coverage counts by region, pending/cooldown, last-posted per offer. recategorize {} — one-shot cleanup: re-derive region/lang/currency/country for every group from name + post history and backfill allows_promo from confirmed visible posts (idempotent). Region buckets: UK, US, EU, Brazil, LatAm, Turkey, Australia, Canada, Unknown.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | worklist: ordered groups still to post to (region/currency + offerSlug). mark: tick one group after posting. set: curate classification (region/lang/currency) for one or many groups. import: (re)buil… |
| allows_promo | string | – | set: promo permission. |
| cooldownHours | number | – | mark: hours a pending-approval group is held out of the worklist (default 48). |
| country | string | – | descriptive country label. set: classify a group. worklist: narrow to one country. |
| currency | string | – | GBP | USD | EUR | BRL | TRY | AUD | CAD. Preferred worklist filter (authoritative seed-queue currency). USD covers both US and LatAm — add lang:"es" to target LatAm groups specifically. |
| freshDays | number | – | worklist: skip groups already posted this offer within N days (default 14). |
| fromExtract | – | – | import: a browser_extract_fb_groups JSON payload (object or JSON string) — the authority for currently-joined groups + region buckets. |
| fromMemoryIds | array | – | import: specific memory ids to parse. Omit to use the default seed/ledger ids + facebook-groups-* subcategory scan. |
| groups | array | – | set (bulk): array of group classifications to write in one call. |
| includePending | boolean | – | worklist: include pending-approval / cooldown groups (default false). |
| lang | string | – | language code (pt/en/de/fr/es/tr/pl/it/nl). set: classify a group. worklist: narrow a currency bucket to one language (e.g. EUR + de for German-copy groups). |
| limit | number | – | worklist max groups (default 20). |
| member_count | number | – | set: approximate member count. |
| name | string | – | set: group display name. |
| note | string | – | mark: short note (e.g. skip reason or failure detail). |
| offerSlug | string | – | Offer/campaign slug, e.g. "spring-sale". Required for worklist and mark. |
| postUrl | string | – | mark: the resulting post URL, if known. |
| reason | string | – | exclude: why promo is forbidden (group rules). |
| region | string | – | UK | US | EU | Brazil | LatAm | Turkey | Australia | Canada | Unknown (case-insensitive). Alternative to currency for worklist/list/stats. LatAm = Spanish-speaking Latin America (posts the USD link). |
| reset | boolean | – | worklist: ignore prior posts for this offer (re-seed the whole region from scratch). |
| sessionId | string | – | mark: loop/session id for provenance. |
| status | string | – | mark status: posted/visible-post, pending/pending-approval (cooldown 48h, counts as success), failed/posting-failed, or skipped. Synonyms accepted. |
| url | string | – | Group URL (normalized internally). Required for mark and exclude. |
No output schema declared.
No examples provided.
forget ~70
Move a specific memory to trash by ID. The memory can be restored from the Neural Interface trash panel or via the restore tool. Use this to clean up outdated, incorrect, or superseded information.
| Name | Type | Req | Description |
|---|---|---|---|
| memory_id | string | yes | The memory ID to move to trash. Use the full UUID from recall results. |
No output schema declared.
No examples provided.
git ~227
Git repository operations. Actions: "status" shows branch and changed files, "diff" returns raw diff content for analysis, "commit" stages and commits with a message, "log" shows recent commit history, "branches" lists all branches. Use "diff" to analyze changes before generating commit messages.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Git action. "status" = branch + changes list. "diff" = raw diff content for analysis. "commit" = stage and commit. "log" = recent commit history. "branches" = list all branches. |
| count | number | – | Number of commits to return (default 10). Only used for "log" action. |
| files | array | – | Specific files to stage for "commit". If omitted, stages all changes (git add -A). |
| max_lines | number | – | Max lines of diff output (default 500). Only used for "diff" action. |
| message | string | – | Commit message (required for "commit" action). |
| path | string | yes | Absolute path to the git repository working directory. |
No output schema declared.
No examples provided.
gsc_associations ~99
Manage Associations (Analytics / Merchant / Ads / Play / YouTube / Actions / Chrome Web Store). list returns existing associations; add/remove mutate.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| identifier | string | – | Service-specific ID (e.g. GA4 measurement ID, Merchant Center account ID). |
| property | string | – | – |
| service | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_crawl_stats ~65
Read Crawl Stats — totals (requests, download size, response time) and breakdowns by host status, response code, file type, Googlebot type.
| Name | Type | Req | Description |
|---|---|---|---|
| property | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_cwv_report ~71
Read Core Web Vitals report for mobile or desktop. Returns counts of poor / needs-improvement / good URLs and per-issue URL group examples.
| Name | Type | Req | Description |
|---|---|---|---|
| device | string | yes | – |
| property | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_disavow ~97
[mutating for upload/delete — affects how Google trusts links to your site] Manage the Disavow Links file. download exports current; upload replaces (use sparingly).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| filePath | string | – | Absolute path of disavow .txt file (action=upload). |
| property | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_enhancements ~104
Read a structured-data Enhancements report. Returns valid / warnings / errors counts and per-issue URL examples. Reports: breadcrumbs, faq, sitelinks, videos, products, recipes, review, events, jobposting, speakable, qa, logos, sitenames, dataset, practice, math, merchant.
| Name | Type | Req | Description |
|---|---|---|---|
| property | string | – | – |
| report | string | yes | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_extract_table ~66
Generic GSC grid → JSON extractor. Useful when no specific gsc_*_report tool covers a panel.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | – | CSS scope selector (default: [role="grid"]). |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_https_report ~56
Read the HTTPS report — counts of HTTPS vs non-HTTPS URLs and reasons for non-HTTPS URLs with examples.
| Name | Type | Req | Description |
|---|---|---|---|
| property | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_inspect_request_indexing ~128
[mutating — affects Google's crawl queue] Submit a URL to Google's indexing queue. Clicks "Request indexing" on the inspection result page (running a live test first if needed). Polls for the success/error modal and returns `{ requested, queued, error }`. Quota: ~10/day per property.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | – | – |
| tabId | string | – | – |
| timeoutMs | integer | – | Polling timeout (default 60000). |
| url | string | – | URL to inspect first. Skip if already on the inspect result page. |
No output schema declared.
No examples provided.
gsc_inspect_test_live ~123
Click the "Test live URL" button on the URL Inspection page and poll up to 90s for results. Useful to verify a live page after a fix without waiting for re-indexing. Returns same shape as gsc_inspect_url with `liveTest:true`.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | – | – |
| tabId | string | – | – |
| timeoutMs | integer | – | Polling timeout (default 90000 — live test is slow). |
| url | string | – | URL to inspect first (skip if already on the inspect result page). |
No output schema declared.
No examples provided.
gsc_inspect_url ~163
Run URL Inspection on a URL — opens the inspect tool, fills the URL, polls up to 30s for the result panel, returns structured JSON (pageIndexed, verdict, indexingState, coverage, canonicalUser, canonicalGoogle, lastCrawl, crawlStatus, crawlAllowed, fetchStatus, robotsAllowed, sitemap, referringPage, httpStatus, enhancements, summary, fullText).
| Name | Type | Req | Description |
|---|---|---|---|
| property | string | – | Override active property (e.g. "sc-domain:example.com"). |
| sessionId | string | – | – |
| tabId | string | – | – |
| timeoutMs | integer | – | Polling timeout in ms (default 30000). |
| url | string | yes | Absolute URL to inspect (must belong to the active GSC property). |
No output schema declared.
No examples provided.
gsc_inspect_view_crawled ~87
Open the "View crawled page" panel from the URL Inspection result and switch to the requested view (html / screenshot / http_response / more_info). Use browser_screenshot or browser_snapshot afterwards to capture content.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | – | – |
| tabId | string | – | – |
| view | string | yes | Which crawled-page view to open. |
No output schema declared.
No examples provided.
gsc_links_export ~59
Trigger Links report Export menu. Browser handles file download.
| Name | Type | Req | Description |
|---|---|---|---|
| property | string | – | – |
| scope | string | yes | Export scope from the Links report Export menu. |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_links_report ~86
Read a Links report section. top_linked_external / top_linking_sites / top_linking_text / top_linked_internal. Returns full table.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max rows to scroll-load (default 100). |
| property | string | – | – |
| section | string | yes | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_manual_actions ~92
Read Manual Actions. action=list returns penalties (or "No issues detected"). action=reconsideration submits a reconsideration request with `body` (mutating).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| body | string | – | Reconsideration request body text. Required for action=reconsideration. |
| property | string | – | – |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_navigate ~287
Open a Google Search Console page (overview, performance, inspect, pages, sitemaps, removals, links, security, settings, etc.). Always call before any gsc_* tool to land on the right report. Pages: overview, insights, performance_search, performance_discover, performance_news, inspect, pages, videos, sitemaps, removals, cwv_mobile, cwv_desktop, https, security, manual_actions, enhancements_breadcrumbs, enhancements_faq, enhancements_sitelinks, enhancements_videos, enhancements_products, enhancements_recipes, enhancements_review, enhancements_events, enhancements_jobposting, enhancements_speakable, enhancements_qa, enhancements_logos, enhancements_sitenames, enhancements_dataset, enhancements_practice, enhancements_math, enhancements_video_indexing, links, achievements, settings, crawl_stats, users, change_address, associations, disavow, shopping, merchant.
| Name | Type | Req | Description |
|---|---|---|---|
| page | string | yes | GSC section to open. Property is preserved from current resource_id unless `property` is set. |
| property | string | – | Property to load (e.g. "sc-domain:example.com" or "https://example.com/"). Defaults to active property. |
| 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.
gsc_pages_report ~109
Read the Pages (Coverage/Indexação) report — totals indexed/notIndexed and per-reason buckets with counts and trends. Pass `reason` to drill into a bucket and list URL examples.
| Name | Type | Req | Description |
|---|---|---|---|
| property | string | – | – |
| reason | string | – | Drill into a specific reason (e.g. "Not found (404)", "Excluded by ‘noindex’ tag"). Returns URL examples for that bucket. |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_pages_validate_fix ~98
[mutating — starts a Google validation cycle] Open a Pages-report reason bucket and click "Validate fix" so Google re-checks the URLs. Returns confirmation status.
| Name | Type | Req | Description |
|---|---|---|---|
| property | string | – | – |
| reason | string | yes | Reason name for which to start a "Validate fix" run (e.g. "Server error (5xx)"). |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_performance_chart_screenshot ~45
Capture a screenshot scoped to the Performance chart panel only — useful for visual reports.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_performance_export ~78
Trigger Performance report export menu in the active tab. Format: csv → ZIP download; excel → XLSX; google_sheets → opens a new Sheet. Browser handles the actual download to its default download dir.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | yes | Export format. |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_performance_query ~228
Run a Performance report query — sets searchType, dateRange (preset or custom), primary dimension, chip filters, and optional comparison; returns total clicks/impressions/CTR/position plus full table rows as JSON. Auto-scrolls the grid to load up to `limit` rows.
| Name | Type | Req | Description |
|---|---|---|---|
| compare | boolean | – | Enable date-range comparison. |
| customEnd | string | – | YYYY-MM-DD end (with dateRange="custom"). |
| customStart | string | – | YYYY-MM-DD start (with dateRange="custom"). |
| dateRange | string | – | Preset range or "custom" with customStart/customEnd. |
| dimension | string | – | Primary dimension to group by. Default: query. |
| filters | array | – | Chip filters to apply. Op default: contains. |
| limit | integer | – | Max rows (default 200, GSC table caps at 1000 visible). |
| property | string | – | – |
| searchType | string | – | Search type filter. Default: web. |
| sessionId | string | – | – |
| tabId | string | – | – |
No output schema declared.
No examples provided.
gsc_property ~177
Manage GSC property selection — list registered properties, switch the active one (re-navigates current page), read the active property from the URL, or open the Add Property dialog. [mutating for action=add — adds a new property to the Google account]
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | list = enumerate properties from picker; select = switch active property; current = read URL property; add = open Add Property dialog. |
| property | string | – | Property string (e.g. "sc-domain:example.com" or "https://example.com/") for select. For add: domain or URL prefix value. |
| sessionId | string | – | – |
| tabId | string | – | Target a specific tab. Auto-resolved if omitted. |
| type | string | – | For add action: property type. Default: domain. |
No output schema declared.
No examples provided.
gsc_removals ~135
Manage URL removals. list_* returns existing requests; action=new submits a new removal (mutating). removalType: temporary (6-month hide), outdated_content (refresh Google's cached version), safe_search (report adult content).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| property | string | – | – |
| removalType | string | – | Required for action=new. |
| scope | string | – | For action=new + temporary: remove only this URL or all URLs starting with this prefix. |
| sessionId | string | – | – |
| tabId | string | – | – |
| target | string | – | URL or prefix for action=new. |
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 4 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 4 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.