Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

SynaBun

NPM · SYNABUN

Persistent memory MCP server for Claude Code, Codex and OpenCode, stored locally in SQLite

Available components

72 Trust /100

Last scanned (22 hours ago)

Scores higher than 43% of npm servers

Category Memory and Knowledge

Trust breakdown (7 categories)

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.

Changelog

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.

Diagnostics

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 →

MCP tools · 136 exposed · ~27,468 tokens

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 →

Tool Tokens
bluesky_action ~169

BlueSky: act on a post or actor. Post: like/unlike, repost/unrepost, delete (your own). Actor: follow/unfollow, mute/unmute, block/unblock. Undo actions resolve the record key automatically — never pass rkeys.

NameTypeReqDescription
actionstringyesThe action to perform.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.
targetstringyesPost actions (like/unlike/repost/unrepost/delete): post AT-URI or bsky.app URL. Actor actions (follow/unfollow/mute/unmute/block/unblock): handle or DID.

No output schema declared.

No examples provided.

bluesky_author_feed ~200

BlueSky: read a user's posts (author feed) as compact JSON. Pass actor (handle or DID), optional filter, and maxItems to auto-paginate.

NameTypeReqDescription
actorstringyesHandle (e.g. alice.bsky.social) or DID of the author.
cursorstring–Pagination cursor from a prior call. Omit for the first page.
filterstring–Server-side filter. Default posts_with_replies.
limitinteger–Items per page (default 50, max 100).
maxItemsinteger–Auto-paginate (follow cursors) until this many items are gathered in ONE call. Default = one page.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.

No output schema declared.

No examples provided.

bluesky_dm ~258

BlueSky DMs (chat.bsky.*): list_convos, read messages in a convo, send a message (by convoId or members), or mark_read. Returns compact JSON.

NameTypeReqDescription
actionstringyeslist_convos = your DM conversations; messages = messages in a convo; send = send a message; mark_read = mark a convo read.
convoIdstring–Conversation ID (messages/mark_read; send if not using members).
cursorstring–Pagination cursor from a prior call. Omit for the first page.
limitinteger–Items per page (default 50, max 100).
maxItemsinteger–Auto-paginate (follow cursors) until this many items are gathered in ONE call. Default = one page.
membersarray–For send: handles/DIDs to open/find a convo with, instead of convoId.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.
textstring–Message text (required for send).

No output schema declared.

No examples provided.

bluesky_feed ~215

BlueSky: read a custom feed generator (mode=feed) or a list timeline (mode=list) by its AT-URI. Returns compact posts + next cursor. Pass maxItems to auto-paginate.

NameTypeReqDescription
cursorstring–Pagination cursor from a prior call. Omit for the first page.
limitinteger–Items per page (default 50, max 100).
maxItemsinteger–Auto-paginate (follow cursors) until this many items are gathered in ONE call. Default = one page.
modestringyesfeed = a custom feed generator; list = a user list timeline.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.
uristringyesAT-URI of the feed generator (mode=feed) or the list (mode=list).

No output schema declared.

No examples provided.

bluesky_graph ~186

BlueSky: list an actor's followers or follows as compact actor cards + next cursor. Pass maxItems to auto-paginate.

NameTypeReqDescription
actorstringyesHandle or DID whose graph to read.
cursorstring–Pagination cursor from a prior call. Omit for the first page.
limitinteger–Items per page (default 50, max 100).
maxItemsinteger–Auto-paginate (follow cursors) until this many items are gathered in ONE call. Default = one page.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.
whichstringyesfollowers = who follows them; follows = who they follow.

No output schema declared.

No examples provided.

bluesky_likes ~227

BlueSky: list likes. mode=post → the actors who liked a given post; mode=actor → the posts an actor has liked. Pass maxItems to auto-paginate.

NameTypeReqDescription
actorstring–Handle or DID (mode=actor).
cursorstring–Pagination cursor from a prior call. Omit for the first page.
limitinteger–Items per page (default 50, max 100).
maxItemsinteger–Auto-paginate (follow cursors) until this many items are gathered in ONE call. Default = one page.
modestringyespost = who liked a post (needs uri); actor = posts an actor has liked (needs actor).
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.
uristring–Post AT-URI or bsky.app URL (mode=post).

No output schema declared.

No examples provided.

bluesky_notifications ~196

BlueSky: list your notifications (likes, reposts, replies, mentions, follows) as compact JSON. Pass markSeen:true to clear the unread badge, maxItems to auto-paginate.

NameTypeReqDescription
cursorstring–Pagination cursor from a prior call. Omit for the first page.
limitinteger–Items per page (default 50, max 100).
markSeenboolean–Mark notifications seen (updates the seen timestamp) after fetching.
maxItemsinteger–Auto-paginate (follow cursors) until this many items are gathered in ONE call. Default = one page.
priorityboolean–Only priority notifications.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.

No output schema declared.

No examples provided.

bluesky_post ~270

BlueSky: publish a post. Supports plain text with auto-facets (@mentions, links, #hashtags), replies (replyTo), quote-posts (quote), and up to 4 images (by url or local path, each with alt text). A link card (OG preview with thumbnail) is auto-generated for the first URL when the post has no images and no quote. Returns the new post uri+cid.

NameTypeReqDescription
imagesarray–Up to 4 images; give url OR path for each. Images take precedence over a quote embed.
langsarray–BCP-47 language tags. Default ["en"].
quotestring–Quote-post this post (AT-URI or bsky.app URL).
replyTostring–Reply to this post (AT-URI or bsky.app URL). Root/parent refs are derived automatically.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.
textstringyesPost text (max 300 graphemes). @mentions, URLs and #hashtags are auto-detected into rich-text facets.

No output schema declared.

No examples provided.

bluesky_profile ~109

BlueSky: get an actor profile (did, handle, name, bio, follower/following/post counts, and your viewer relationship: following/followedBy/muted/blocking).

NameTypeReqDescription
actorstringyesHandle or DID to look up.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.

No output schema declared.

No examples provided.

bluesky_resolve ~94

BlueSky: resolve a handle to its DID (com.atproto.identity.resolveHandle).

NameTypeReqDescription
handlestringyesHandle to resolve, e.g. alice.bsky.social.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.

No output schema declared.

No examples provided.

bluesky_search_actors ~180

BlueSky: search for users (actors). Returns compact actor cards (did, handle, name, bio, viewer relationship) + next cursor. Pass maxItems to auto-paginate.

NameTypeReqDescription
cursorstring–Pagination cursor from a prior call. Omit for the first page.
limitinteger–Items per page (default 50, max 100).
maxItemsinteger–Auto-paginate (follow cursors) until this many items are gathered in ONE call. Default = one page.
qstringyesSearch query (name / handle).
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.

No output schema declared.

No examples provided.

bluesky_search_posts ~251

BlueSky: full-text search posts. Supports sort (top/latest), since/until, author, lang. Pass maxItems to auto-paginate. Returns compact posts + next cursor.

NameTypeReqDescription
authorstring–Limit to posts by this handle/DID.
cursorstring–Pagination cursor from a prior call. Omit for the first page.
langstring–BCP-47 language filter, e.g. en.
limitinteger–Items per page (default 50, max 100).
maxItemsinteger–Auto-paginate (follow cursors) until this many items are gathered in ONE call. Default = one page.
qstringyesSearch query.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
sincestring–Lower bound, ISO datetime or YYYY-MM-DD.
sortstring–Ranking. Default top.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.
untilstring–Upper bound, ISO datetime or YYYY-MM-DD.

No output schema declared.

No examples provided.

bluesky_session ~180

BlueSky: who am I? Returns the logged-in account (did, handle, pdsUrl). Use first to confirm you are signed in. A blank assigned tab is safely initialized at bsky.app; nonblank tabs are never navigated implicitly. An expired session token is renewed inside the tool (waiting for bsky.app, then reloading its tab at most once), so "not logged in" means the page really has no session. Pass validate:true to check the token against the server.

NameTypeReqDescription
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.
validateboolean–Also call com.atproto.server.getSession to verify the token server-side.

No output schema declared.

No examples provided.

bluesky_thread ~173

BlueSky: read a post and its thread (parents + replies) as compact JSON. Accepts an AT-URI or a bsky.app post URL. Each post includes uri+cid (needed to reply/like/repost).

NameTypeReqDescription
depthinteger–Reply levels to fetch (default 6).
parentHeightinteger–Parent levels to fetch (default 5).
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.
uristringyesPost AT-URI (at://...) OR a bsky.app post URL (https://bsky.app/profile/<handle>/post/<rkey>).

No output schema declared.

No examples provided.

bluesky_timeline ~170

BlueSky: read your home timeline (following feed) as compact JSON posts (uri, cid, author, text, counts, viewer). Pass maxItems to auto-paginate. Returns the next cursor.

NameTypeReqDescription
cursorstring–Pagination cursor from a prior call. Omit for the first page.
limitinteger–Items per page (default 50, max 100).
maxItemsinteger–Auto-paginate (follow cursors) until this many items are gathered in ONE call. Default = one page.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session (the bsky.app tab). Auto-resolved if omitted.

No output schema declared.

No examples provided.

browser_batch ~119

Run up to 10 known browser steps sequentially on one owned tab. Uses existing guarded tools, stops on the first failure, and returns one final snapshot by default. Never retry the whole batch after a partial failure. Steps run exactly as written: no Jev assistance inside a batch. A batch that navigated may end with one advisory "assessment" of the final page.

NameTypeReqDescription
sessionIdstring––
snapshotstring–Final observation; default full.
stepsarrayyes–
tabIdstring––

No output schema declared.

No examples provided.

browser_cheatsheet ~121

Look up stable selectors and flow notes for a social platform (twitter, facebook, tiktok, whatsapp, instagram, linkedin). Call this before automating a platform the first time in a session — then reuse the returned selectors for browser_click / browser_type / browser_fill / browser_scroll / browser_snapshot.

NameTypeReqDescription
actionstring–Optional: filter to a single action (click/type/fill/scroll/snapshot/extract/evaluate). If omitted, returns every action known for the platform.
platformstringyesTarget platform to fetch selectors for.

No output schema declared.

No examples provided.

browser_click ~356

Click an element. Pass ref (e.g. "e12") from browser_snapshot — exact, no guessing. Selector is the fallback (CSS, text="...", :has-text(...), role=...; never :contains()). By default the response includes an AI snapshot diff of what changed, so you usually do NOT need a follow-up browser_snapshot.

NameTypeReqDescription
nthMatchinteger–If the selector matches multiple elements, target the Nth (0-indexed).
refstring–Element ref from browser_snapshot, e.g. "e12". Preferred over selector — exact match, no guessing.
returnSnapshotobject–Legacy inline snapshot (tree modes). Prefer the "snapshot" param, which returns ref-based AI snapshots.
selectorstring–Playwright selector for the element to click (CSS, text="...", :has-text("..."), role=..., [data-testid="..."]). Fallback when you have no ref. NEVER use :contains().
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
snapshotstring–Inline AI snapshot after the click. Default "diff" = only the changed region vs your last snapshot. "none" = terse response.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
textHintstring–What you meant to click, in words (e.g. "Account settings"). If the selector matches nothing the server first tries an exact role+name match; failing that, the visible candidates are ranked against t…

No output schema declared.

No examples provided.

browser_console ~227

Read the current tab's console messages and uncaught page errors (the last 200, kept from when SynaBun opened the tab), localhost pages included. Use level "error" to check a page for errors, and clear or since to see only what a reload or an action produced.

NameTypeReqDescription
clearboolean–Empty the tab's buffer after reading, so the next call shows only new entries.
levelstring–Lowest level to return; each level includes the more severe ones (error < warning < info < log). Default "all". Uncaught page errors count as errors.
limitinteger–Return at most this many of the newest matching entries (default 50).
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
sincestring–Only entries after this time (ISO timestamp or epoch ms), e.g. the "latest" value of a previous call.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_content ~204

Get the content of the current page. Set format="markdown" for clean markdown with structure preserved — preferred for LLM consumption. Returns up to maxChars (default 20000); pass offset to page through long pages.

NameTypeReqDescription
formatstring–Output format. "text" = raw innerText. "markdown" = clean markdown (headings/links/lists, nav/footer/ads stripped) — better for LLM consumption.
maxCharsinteger–Max characters returned (default 20000). Response notes total size when truncated.
offsetinteger–Character offset to continue a previously truncated read.
selectorstring–Read one article or result container instead of the whole page. Must match exactly one element.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_evaluate ~131

Execute JavaScript in the browser page context and return the result. Useful for reading DOM state, extracting data, or performing actions not covered by other tools.

NameTypeReqDescription
expressionstring–Alias for "script" — accepted for compatibility with Playwright conventions.
scriptstring–JavaScript code to execute in the browser page context. The return value will be serialized to JSON.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_extract_fb_groups ~521

Extract ALL JOINED Facebook groups from the current page (navigate to facebook.com/groups/joins/?ordering=viewer_added first) as a region-sorted index. Auto-scrolls the full virtualized joins list and dedupes by url in ONE call (defaults: scrolls:10, maxItems:1000 — override for very large/small lists). Each group {name, url, subtitle, member_count, region, lang, currency, source} is reconciled against the curated seed-queue memory first; groups not in it are classified from name+slug (language tokens: pt/tr/de/fr/es/pl/it/nl, and country aliases) into region + posting-currency, source:"name-heuristic"; the still-ambiguous ones land in region "Unknown" and under "unmatched". Spanish groups split into LatAm (USD) vs Spain (EUR). Returns { counts, byRegion: { UK:[...], US:[...], EU:[...], Brazil:[...], LatAm:[...], ... }, unmatched:[...] }. Pass region to filter to one bucket. Feed the whole JSON to fb_groups import {fromExtract} to populate/refresh the structured directory.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the complete grouped JSON response, preserving whole groups. Metadata must fit; unmatched duplicates are omitted first.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
regionstring–Optional case-insensitive filter: only return groups in this region bucket (UK, US, EU, Brazil, LatAm, Turkey, Australia, Canada, Unknown).
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
seedQueueIdstring–Memory id of the curated seed-queue (url | lang | currency) used to reconcile region/currency. Default: the built-in seed-queue memory id.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_fb_posts ~254

Extract visible Facebook posts as structured JSON (author, authorUrl, text, time, postUrl, reactions). Works on group feeds and Pages. Pass scrolls/minItems to auto-scroll, extract, and dedupe in ONE call. Much faster than browser_snapshot for data harvesting from Facebook.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_ig_feed ~255

Extract visible Instagram feed posts as structured JSON (username, profileUrl, postUrl, caption, likes, comments, time, datetime, isSponsored, hasFollow). Navigate to instagram.com/ first. Pass scrolls/minItems to auto-scroll, extract, and dedupe in ONE call.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_ig_post ~123

Extract a single Instagram post with comments as structured JSON (author, caption, likes, commentCount, time, datetime, comments[{username, text, time, datetime}]). Navigate to instagram.com/p/POST_ID/ or instagram.com/reel/REEL_ID/ first. Scroll the comment area to load more comments before extracting.

NameTypeReqDescription
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_extract_ig_profile ~116

Extract Instagram profile data as structured JSON (username, displayName, bio, posts, followers, followerExact, following, isVerified, website, gridPosts, highlights). Navigate to instagram.com/username/ first. Returns bio, stats, post grid (up to 12), and story highlights.

NameTypeReqDescription
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_extract_ig_reels ~257

Extract visible Instagram Reels with engagement data as structured JSON (username, profileUrl, caption, likes, comments, audioName, audioUrl, hasFollow). Navigate to instagram.com/reels/ first. Pass scrolls/minItems to auto-scroll, extract, and dedupe in ONE call.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_ig_search ~260

Extract posts from the Instagram Explore page as structured JSON (url, alt, isReel). Navigate to instagram.com/explore/ first. Pass scrolls/minItems to auto-scroll, extract, and dedupe in ONE call. For hashtag search, navigate to instagram.com/explore/tags/HASHTAG/.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_li_feed ~282

Extract visible LinkedIn feed posts as structured JSON (author, authorUrl, headline, time, text, reactions, commentsCount, mediaType, articleTitle, articleLink, isPromoted, isRepost, postUrl). Navigate to linkedin.com/feed/ first. Pass scrolls/minItems to auto-scroll, extract, and dedupe in ONE call. Much faster than browser_snapshot for data harvesting from the LinkedIn feed.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_li_jobs ~274

Extract LinkedIn job listings as structured JSON (jobId, title, company, companyUrl, location, salary, jobUrl, logo, promoted, easyApply, postedDate). Works on linkedin.com/jobs/ (recommendations) and linkedin.com/jobs/search/?keywords=QUERY&location=LOCATION. Pass scrolls/minItems to auto-scroll, extract, and dedupe in ONE call.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_li_messages ~144

Extract LinkedIn messaging data as structured JSON with two arrays: conversations[{name, lastMessage, time, isUnread, url}] (sidebar list) and activeThread[{sender, text, time, direction}] (open conversation messages). Navigate to linkedin.com/messaging/ first. Click a conversation to load its messages. To send a message: browser_fill on .msg-form__contenteditable then browser_click on .msg-form__send-button.

NameTypeReqDescription
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_extract_li_network ~159

Extract LinkedIn My Network data as structured JSON with two arrays: invitations[{name, subtitle, profileUrl, acceptLabel, ignoreLabel}] (pending connection requests) and suggestions[{name, subtitle, followers, profileUrl, action, image}] (people/creators to follow or connect). Navigate to linkedin.com/mynetwork/ first. Scroll down to load more suggestions. To accept an invitation: browser_click on button with the acceptLabel. To connect: browser_click on the respective Conectar/Connect button.

NameTypeReqDescription
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_extract_li_notifications ~253

Extract LinkedIn notifications as structured JSON (text, time, isUnread, url, image). Navigate to linkedin.com/notifications/ first. Pass scrolls/minItems to auto-scroll, extract, and dedupe in ONE call. Useful for monitoring engagement, connection requests, and mentions.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_li_post ~138

Extract a single LinkedIn post with comments as structured JSON (author, authorUrl, headline, time, text, reactions, commentsCount, postUrn, comments[{author, authorUrl, text, time, likes}]). Navigate to linkedin.com/feed/update/urn:li:activity:ID/ first. Click "Comentar" button to expand comment section, then scroll to load more comments before extracting.

NameTypeReqDescription
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_extract_li_profile ~128

Extract LinkedIn profile data as structured JSON (name, headline, location, profilePic, connections, about, sections[{heading, items[{title, subtitle, meta}]}], recentActivity). Navigate to linkedin.com/in/USERNAME/ first. Sections include Experience, Education, Skills, etc. Use linkedin.com/in/me/ for the logged-in user's own profile.

NameTypeReqDescription
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_extract_li_search_people ~264

Extract LinkedIn people search results as structured JSON (name, profileUrl, headline, location, mutual, actionButton, image). Navigate to linkedin.com/search/results/people/?keywords=QUERY first. Pass scrolls/minItems to auto-scroll, extract, and dedupe in ONE call. Also works on linkedin.com/search/results/all/.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_tiktok_profile ~126

Extract profile info and video grid from a TikTok profile page as structured JSON (name, handle, bio, followers, following, likes, videos[{videoUrl, views}]). Navigate to tiktok.com/@username first. Scroll down to load more videos in the grid. Use this to audit a creator profile or collect video URLs for further processing.

NameTypeReqDescription
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_extract_tiktok_search ~262

Extract visible TikTok search result videos as structured JSON (videoUrl, handle, profileUrl, caption, views). Navigate to tiktok.com/search?q=<query> first. Pass scrolls/minItems to auto-scroll, extract, and dedupe in ONE call. Much faster than browser_snapshot for harvesting TikTok search results.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_tiktok_studio ~267

Extract visible posts from TikTok Studio content list as structured JSON (title, url, date, privacy, stats[]). Navigate to tiktok.com/tiktokstudio/content first. Pass scrolls/minItems to auto-scroll, extract, and dedupe in ONE call. Use this to audit, manage, or bulk-read your published TikTok content.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_tiktok_videos ~277

Extract visible TikTok videos from the For You or Following feed as structured JSON (handle, videoUrl, caption, likes, comments, saves, shares, music). Navigate to tiktok.com/ or tiktok.com/following first. Pass scrolls/minItems to auto-scroll, extract, and dedupe in ONE call. Much faster than browser_snapshot for data harvesting from TikTok feeds.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_tweets ~282

Extract visible tweets as structured JSON (author, handle, text, time, url, replies, reposts, likes, views). Pass scrolls/minItems to auto-scroll, extract, and dedupe in ONE call (e.g. scrolls:3 minItems:30). Much faster than browser_snapshot for data harvesting. Navigate to x.com/search?q=%23hashtag&f=live first for latest-first hashtag results.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_wa_chats ~271

Extract visible WhatsApp chats from the sidebar as structured JSON (name, lastMsg, time, unreadCount, muted, pinned). Must be on web.whatsapp.com with the chat list visible. Pass scrolls/minItems to auto-scroll the sidebar and dedupe in ONE call. Use browser_click on span[title="Chat Name"] to open a specific chat.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_extract_wa_messages ~269

Extract visible messages from the open WhatsApp chat as structured JSON (sender, time, date, direction, text, dataId). Open a chat first by clicking span[title="Chat Name"]. Pass scrolls/minItems to auto-scroll UP through history and dedupe in ONE call. direction is "in" for received and "out" for sent messages.

NameTypeReqDescription
fieldsarray–Return only these fields; identity deduplication still uses the full items.
maxCharsinteger–Cap the JSON items in characters, keeping complete items. Defaults to no additional character cap.
maxItemsinteger–Cap on returned items (default 50).
minItemsinteger–Stop scrolling once this many unique items are collected.
scrollsinteger–Auto-scroll up to N times, extracting + deduping after each (default 0 = current view only). Stops early at minItems or end of feed.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
timeoutMsinteger–Total extraction deadline with browser V2 enabled (default 15000ms).

No output schema declared.

No examples provided.

browser_fb_composer_state ~755

Inspect the Facebook posting surface in ONE call (read-only). Returns: modal {open,title,closeSelector,containsComposer} (modal.open is true ONLY for a visible posting dialog — FBs permanent hidden 0x0 Notifications dialog is ignored); trigger {found,text,suggestedSelector} — the Create-post button to CLICK first when no composer dialog is open yet (on a bare feed the probe can only see boxes that already exist, so use this to OPEN the composer; after opening, browser_type with NO selector into the auto-focused editor — selector-targeting the dialog editor is flaky); composers[] (search boxes filtered out) each with scope inline|dialog, inDialog, visible, rect, text, ariaLabel, placeholder, isPersonalProfile, isComment, isPostComposer (a comment box is flagged isComment and is NEVER a post composer — do not type a post into it), suggestedSelector; submitButton {label,scope,matchType,selector,enabled} scoped to the active visible dialog (matchType "label" = matched a publish/approval verb incl. German Senden/Veröffentlichen/Zur Genehmigung senden; "heuristic" = inferred as the dialog footer primary button when the label was untranslated, so verify via submission.state after clicking); submission {state: visible-post|pending-approval|posting-failed|composer-open|unknown, evidence}; and recommendedAction {submit|type|open-composer|done|retry|unknown} — the deterministic next step (submit = composer open with text AND an enabled submit button; use it to FINISH a half-typed post before starting anything new). Locale-tolerant (PT/EN/TR/FR/ES/DE incl. approval-flow groups). Flow: probe; if recommendedAction is "submit", click submitButton.selector and confirm FIRST; else if no composer dialog, click trigger.suggestedSelector; re-probe; type the full post into the auto-focused isPostComposer box with browser_type mode:"insert" (blank lines between paragraphs, link alone on the final line — insertText keeps the paragraphs and the isolated URL without firing Enter, so the ty…

NameTypeReqDescription
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_fill ~237

Clear an input/textarea and fill it with new text. Pass ref from browser_snapshot (preferred) or a selector. For contenteditable editors prefer browser_type.

NameTypeReqDescription
nthMatchinteger–If the selector matches multiple elements, fill the Nth (0-indexed).
refstring–Element ref from browser_snapshot, e.g. "e12". Preferred over selector — exact match, no guessing.
selectorstring–Playwright selector for the input/textarea to fill (CSS, text="...", :has-text("..."), role=..., [data-testid="..."]). Fallback when you have no ref. NEVER use :contains().
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
textHintstring–Auto-heal: if the selector matches 0 elements, server retries with role=*[name~="<textHint>"].
valuestringyesThe text value to fill. Clears existing content first.

No output schema declared.

No examples provided.

browser_go_back ~64

Go back to the previous page in browser history.

NameTypeReqDescription
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_go_forward ~64

Go forward to the next page in browser history.

NameTypeReqDescription
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

browser_hover ~218

Hover over an element (reveals dropdowns, tooltips, hover-triggered content). Pass ref from browser_snapshot (preferred) or a selector.

NameTypeReqDescription
nthMatchinteger–If the selector matches multiple elements, hover over the Nth (0-indexed).
refstring–Element ref from browser_snapshot, e.g. "e12". Preferred over selector — exact match, no guessing.
selectorstring–Playwright selector for the element to hover over (CSS, text="...", :has-text("..."), role=..., [data-testid="..."]). Fallback when you have no ref. NEVER use :contains().
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
textHintstring–Auto-heal: if the selector matches 0 elements, server retries with role=*[name~="<textHint>"].

No output schema declared.

No examples provided.

browser_navigate ~284

Navigate the browser to a URL (auto-creates a session if needed). By default the response includes an AI snapshot of the new page with [ref=eN] element refs — act on them directly with browser_click/fill/type, no separate snapshot call needed. A "Jev assessment:" line may follow (usable, loading, authentication_required, verification_required, consent_blocker, error, empty): it is advice about the page, never an action. On a sign-in or verification wall, stop and hand over to a human.

NameTypeReqDescription
intentstring–What you expect this page to let you do or show (e.g. "read my open invoices"). Adds a "goal satisfied" estimate to the page assessment. Advisory only.
returnSnapshotobject–Legacy inline snapshot (tree modes). Prefer the "snapshot" param, which returns ref-based AI snapshots.
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session or creates a new one.
snapshotstring–Inline AI snapshot of the new page (default "full", with [ref=eN] refs for actions). "none" = terse response.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.
urlstringyesThe URL to navigate to.

No output schema declared.

No examples provided.

browser_press ~106

Press a keyboard key or key combination. Supports modifiers like Control+A, Shift+Enter, etc.

NameTypeReqDescription
keystringyesKey or key combo to press (e.g. "Enter", "Tab", "Control+A", "Escape", "ArrowDown").
sessionIdstring–Browser session ID. If omitted, auto-selects the only open session.
tabIdstring–Target a specific tab within the session. Auto-resolved from environment if omitted.

No output schema declared.

No examples provided.

Install

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

# add to Claude Code
claude mcp add danilokhury-synabun -- npx -y synabun
Common questions

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.