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.

The Tab (scvd-tab)

NPM · SCVD-TAB

Every tool a builder signs up for, on one tab: trials, burn, price drift. Local JSONL, zero deps.

Available components

0 this week 97 Trust /100

Last scanned (13 hours ago)

Scores higher than 99% of npm servers

Category Finance and Payments

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 Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to seancrecord/scvd-general-store-repo). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 6 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability85
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2816 tokens (~156/item across 18 items; 18 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Tools include usage examples.Pass
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 18 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
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.

  • 21 Oct 26 0
    • Stability: 0.97 → pass security
  • 20 Oct 26 0
    • Stability: pass → 0.97 functional
  • 16 Oct 26 +2
    • Stability: 0.80 → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Stability: 0.80 → pass security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • First check of Schema quality: unverified functional
    • Package version: 0.11.2 → 0.11.4 functional
  • 15 Oct 26 −2
    • Stability: pass → 0.80 functional
  • 14 Oct 26 0
    • Stability: 0.97 → pass security
  • 13 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Oct 26 −1
    • Stability: pass → 0.93 functional
  • 4 Oct 26 0
    • Stability: 0.97 → pass security
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 23 Oct 2026 · Analysed npm/scvd-tab@0.11.4

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 seancrecord/scvd-general-store-repo
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/seancrecord/scvd-general-store-repo/.github/workflows/publish-npm.yml@refs/heads/main
Rekor log index 3283700279
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:31e93db10131422688bcf42db8cb8c889ff540e7e24db2123c493448020e6c5c6067734b3705e0700aaadc11e7d8a97f15a1e90549585a956cd5da365

Background: How many MCP packages publish verified provenance →

Dependencies 0 packages
Packages resolved 0
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 18 exposed · ~2,503 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
acknowledge_pages ~77

You put these pages to the builder in their own words. Marks them spent so they stop coming back. Only acknowledge what you actually said — the tab counts pages that aged out unspoken, and a false acknowledgment is the one lie that makes the count useless.

NameTypeReqDescription
page_idsarrayyesthe ids whats_due returned and you actually said

No output schema declared.

{"page_ids":["page_example"]}
burn_rollup ~114

The monthly number and what it is made of: category subtotals, annualized, the idle share, the trajectory since a past date with the signups that account for the change, an anonymized shareable badge, and the coverage block saying what the figure cannot see. Facts and arithmetic; no advice.

NameTypeReqDescription
since_daysinteger–how far back the trajectory reads, in days; default 90
unused_daysinteger–days of silence before a tool counts as idle; default 45

No output schema declared.

{}
{"since_days":30}
capture_tool_event ~302

QUICK CAPTURE (/log): dump a fragment about a tool the builder just signed up for and it lands, always. Never refuses — missing fields come back named so the rounds can ask later. Use this at the moment of signup; use log_tool_event when you have the full picture.

NameTypeReqDescription
captured_textstring–the raw fragment, kept verbatim
categorystring–the closed category list, if known
confidencestring–stated when the source said it; inferred when you worked it out
dedupe_keystring–message id when captured from mail — stops a re-found receipt double-counting
eventstring–which lifecycle moment, if known
notesstring–anything else, kept verbatim
occurred_atstring–ISO date it really happened; defaults to now
priceobject–{amount, currency, period}, as much of it as the fragment states
problem_solvedstring–the job the tool was taken on for, if said
retroactiveboolean–true when backfilling; pair with occurred_at
signup_frictionstring–what the signup path demanded
sourcestring–where the fragment came from
tool_namestringyescanonical lowercase name — the only required field
trial_endsstring–ISO date the trial converts, if stated

No output schema declared.

{"captured_text":"Welcome to Linear — your 14-day trial has started","source":"capture","tool_name":"linear"}
check_before_signup ~67

Call BEFORE the builder signs up for something: their history with the tool, what currently covers the category, facts only.

NameTypeReqDescription
categorystring–what it would cover, so the overlap can be read
tool_namestringyescanonical lowercase name of the tool being considered

No output schema declared.

{"category":"analytics","tool_name":"posthog"}
confirm_entry ~91

A human looked at a swept entry and says it is real (or marks it private). Confirmation is the load-bearing layer: machine-found claims never reach the pooled corpus without it.

NameTypeReqDescription
privateboolean–keep it on the tab, never let it leave the box — not in a delta, not in a shared count
tool_namestringyesthe swept entry to confirm, by canonical name

No output schema declared.

{"tool_name":"vercel"}
contribute_anonymized_delta ~167

Deliberately send one anonymized delta (opened or outcome) to the scvd aggregation endpoint. Requires consent on record; refuses fields the privacy sentence forbids.

NameTypeReqDescription
categorystringyesthe closed category list
kindstringyesopened when a trial began; outcome when it resolved
outcomestring–outcome only: how the trial resolved
replaced_withstring–replaced only: the tool that took over
signup_frictionstring–what the signup path demanded
tool_namestringyescanonical lowercase name
weekstring–ISO week the delta belongs to, e.g. 2026-W35
weeks_heldinteger–outcome only: whole weeks between opening and resolving

No output schema declared.

{"category":"hosting","kind":"opened","tool_name":"vercel","week":"2026-W35"}
export_tab ~54

Full export of the builder's tab, jsonl or csv. Any time, no charge, no lock-in.

NameTypeReqDescription
formatstring–jsonl is the tab as stored; csv flattens it for a spreadsheet

No output schema declared.

{"format":"csv"}
log_tool_event ~456

Record a tool lifecycle event on the builder's tab: trial_started, paid_started, adopted, canceled, replaced, renewed, or price_changed. Validated; rejected writes explain themselves. Use retroactive:true with occurred_at for backfill.

NameTypeReqDescription
categorystringyesthe closed category list; other when nothing fits
eventstringyeswhich lifecycle moment this is
notesstring–anything else, kept verbatim
occurred_atstring–ISO date the event really happened, for backfill; defaults to now
payment_methodstring–how it is paid — card, invoice, crypto, free. The builder's own label; refused on a swept entry, which cannot know it
previous_priceobject–price_changed only: the price before, same shape as price
priceobject–{amount, currency, period: month|quarter|year|week|once, basis?: fixed|metered|free_with_paid_path}. basis marks what kind of number amount is: absent/fixed = the bill; metered = your ESTIMATE of a u…
problem_solvedstringyesthe job the tool was taken on for, in the builder's words
replaced_withstring–replaced only: canonical name of the tool that took over
retroactiveboolean–true when backfilling; pair with occurred_at
signup_frictionstring–what the signup path demanded: agent_native (API key, no human), email_only, phone_required, kyc_required, human_only. Log it when you hit the wall — the tab remembers so the next attempt doesn't dea…
source_urlstring–the page or receipt this came from. Refused on a swept entry: a letter's link is its own words in a different coat
tool_namestringyescanonical lowercase name
trial_endsstring–ISO date the trial converts — the number the pager runs on

No output schema declared.

{"category":"hosting","event":"trial_started","price":{"amount":20,"currency":"USD","period":"month"},"problem_solved":"preview deploys for the app","tool_name":"vercel","trial_ends":"2026-09-16"}
needs_attention ~66

What the rounds should ask about, dearest first and capped: unconfirmed sweep findings, entries captured with gaps, tools gone quiet, trials past their end. Ask two, not two hundred.

NameTypeReqDescription
limitinteger–how many to return, dearest first; default 3

No output schema declared.

{}
reconcile_card_statement ~165

GROUND TRUTH, monthly, by hand: the builder exports the bank's CSV, you parse every debit row, and this compares statement against tab in BOTH directions — charges the tab cannot place, tools the statement never charged, actuals against metered estimates, and charges on tools the tab holds as canceled. Writes nothing to the tab; every finding is a question for the builder, not an entry. Pass the rows unfiltered — a pre-filtered statement is the mail sweep's counting mistake with money on it.

NameTypeReqDescription
chargesarrayyesevery debit row on the statement, unfiltered
statement_fromstringyesISO date the statement window opens — off the export, not remembered
statement_tostringyesISO date the statement window closes

No output schema declared.

{"charges":[{"amount":20,"date":"2026-08-03","descriptor":"VERCEL INC"}],"statement_from":"2026-08-01","statement_to":"2026-08-31"}
record_coverage ~269

The sweep reports what it saw: addresses read, the window, and money-shaped mail it could NOT attribute to any tool. THE COUNTING OBLIGATION: every message you read belongs in exactly one bucket — matched, unmatched_transactional, or not_transactional — and `scanned` must be the total you actually looked at, BEFORE any filtering. Mail you dropped as unparseable still counts. A sweep that filters before it counts reports a flattering gap, and the tab publishes the leftover as `unclassified` rather than absorbing it.

NameTypeReqDescription
addresses_sweptarray–the mailboxes the sweep read
attributed_amountnumber–money in this window the sweep DID place on a tool, in the same units as the unmatched amounts
matchedinteger–messages placed on a tool
not_transactionalinteger–messages read and classified as carrying no money
scannedinteger–every message read in the window, counted BEFORE filtering — the denominator. Omitting it marks the whole report unaudited.
unmatched_transactionalarray–money-shaped mail no tool claimed, one row each
window_fromstring–ISO date the sweep started from
window_tostring–ISO date the sweep read through

No output schema declared.

{"addresses_swept":["me@example.com"],"attributed_amount":184,"matched":9,"not_transactional":401,"scanned":412,"unmatched_transactional":[{"amount":12,"currency":"USD","sender":"billing.example.net"}],"window_from":"2026-08-01","window_to":"2026-08-31"}
set_consent ~60

Turn contribution on or off. Recorded as a consent_changed event in the tab itself — auditable like everything else. Off also disables pooled reads.

NameTypeReqDescription
contributebooleanyestrue to allow anonymized deltas to leave the box; false to stop

No output schema declared.

{"contribute":true}
stack_audit ~62

The burn report: monthly total, active paid tools, trials converting soon, the unused list (commitment silence, honestly labeled), category overlaps, price drift.

NameTypeReqDescription
unused_daysinteger–days of silence before a tool counts as unused; default 45

No output schema declared.

{}
sweep_finish ~98

Close a sweep and file its coverage record, DERIVED from the tally: scanned, matched, the unmatched list, attributed amount, window and addresses all come off the ledger of what you actually reported, so the books balance by construction and nobody restates a number from memory. A finished sweep refuses further batches — a new window is a new sweep_id.

NameTypeReqDescription
sweep_idstringyesthe sweep to close — the same id every batch carried

No output schema declared.

{"sweep_id":"sweep_2026-08"}
sweep_tally ~245

THE SWEEP'S RUNNING COUNT — use this while executing SWEEP.md instead of counting in your head. Report every message you read, in batches, each with its message_id and exactly one bucket: matched (include the entry; it is written to the tab for you, deduped on the message id), unmatched_transactional (include amount, currency and sender — a bare amount is refused, never stamped USD), or not_transactional. Refused verdicts are returned with reasons and NOT counted — fix and resubmit them, never drop them. Duplicates are counted once. There is no fourth bucket on purpose.

NameTypeReqDescription
addresses_sweptarray–the mailboxes this sweep reads
messagesarrayyesone verdict per message read, up to 200 per call
sourcestring–historical_pass on the six-month backward run; mail_sweep forward
sweep_idstringyesyour name for this sweep, same on every batch (e.g. sweep_2026-08)
window_fromstringyesISO date the window opens
window_tostringyesISO date the window closes

No output schema declared.

{"messages":[{"bucket":"matched","entry":{"confidence":"stated","event":"renewed","occurred_at":"2026-08-03","price":{"amount":20,"currency":"USD","period":"month"},"tool_name":"vercel.com"},"message_id":"\u003ca1@mail.example.com\u003e"},{"bucket":"not_transactional","message_id":"\u003cb2@mail.example.com\u003e"}],"source":"mail_sweep","sweep_id":"sweep_2026-08","window_from":"2026-08-01","window_to":"2026-08-31"}
trials_converting_soon ~57

The headline tool: trials whose conversion lands inside the horizon (default 7 days). Cheap; safe to call daily; surface the answer unprompted.

NameTypeReqDescription
daysinteger–the horizon in days; default 7

No output schema declared.

{}
{"days":14}
whats_current ~48

The builder's own history in a category. Pooled retention is layer 3 and reports itself unavailable until it exists.

NameTypeReqDescription
categorystringyesthe category to read the builder's history in

No output schema declared.

{"category":"hosting"}
whats_due ~105

THE PAGER. Runs the clock and returns what should be said to the builder RIGHT NOW, worth most first: trials converting, trials past their end, unconfirmed sweep findings, quiet tools, gaps. Cheap. Call it on every round and at the start of a session. Say the lines, then acknowledge_pages.

NameTypeReqDescription
daysinteger–conversion horizon, default 7
limitinteger–how many pages to raise, worth most first; default 3

No output schema declared.

{}
Install

How do I install the The Tab (scvd-tab) MCP server?

The Tab (scvd-tab) runs locally as an npm package, launched with npx -y scvd-tab. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · scvd-tab

# add to Claude Code
claude mcp add store-scvd-tab -- npx -y scvd-tab
Common questions

What is the The Tab (scvd-tab) MCP server?

The Tab (scvd-tab) is an MCP server listed in the public MCP registry as store.scvd/tab. Every tool a builder signs up for, on one tab: trials, burn, price drift. Local JSONL, zero deps. This page covers its npm package (scvd-tab).

Is the The Tab (scvd-tab) MCP server safe to use?

The Tab (scvd-tab) scores 97 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 October 2026. It declares no install or post-install scripts. 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 The Tab (scvd-tab) MCP server expose?

The Tab (scvd-tab) exposes 18 tools: log_tool_event, capture_tool_event, burn_rollup, record_coverage, sweep_tally, and 13 more. Their descriptions and schemas cost roughly 2,503 tokens of context every time the server is loaded.

Is the The Tab (scvd-tab) MCP server still maintained?

The Tab (scvd-tab) is still listed as active in the MCP registry. We last reached this channel on 23 October 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 The Tab (scvd-tab) MCP server under?

The Tab (scvd-tab) declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.