whoami
Who is signed in
The person this store sign-in belongs to (id, name, email), its scopes, and whether they run the store. Call it when unsure whether the person is signed in.
Takes no parameters.
cc.kadalPublished by kadal.ccOfficial publisherv0.1.1Updated Nov 7, 2026
Find assets for what you're making, download what you own, and get a buy link to review.
The publisher's own server: Kadal Deck
Kadal Store's catalogue and library tools: search digital assets, download what you own into a project, and get a buy link to pay yourself.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/cc.kadal%2Fstore/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.
{
"mcpServers": {
"kadal-store": {
"type": "http",
"url": "https://store.kadal.cc/mcp"
}
}
}[npm version] [CI] [Licence: AGPL-3.0-or-later] [Sponsor]
The Kadal Store sells digital downloads: planners and printables, sound
effects and music, shaders, 3D models, textures, icons and templates. @kadal/store brings it to
where you work. Search the store, get suggestions for the project you are in, download and sync
what you own, and get a link to buy the rest. It works the same for you in a terminal and for the
AI agent you already use (Claude, Cursor, Codex, any MCP client), on your own account and your own
model subscription.
An agent can find things, download what you own and hand you a link. It can never buy: payment always happens on the store's checkout page, in front of you.
Or install it: npm i -g @kadal/store, then kadal-store <command>. Node 20 or newer.
You sign in on the store's own page, so your password never passes through the CLI. The token is
saved in ~/.config/kadal/store.json ($XDG_CONFIG_HOME is respected; %APPDATA%\kadal\ on
Windows), readable only by you, and renews itself. On a machine without a browser, use
--no-open, open the address anywhere, and paste the address the browser lands on back into the
terminal. If the store's page says it does not know this app, run kadal-store login --register.
kadal-store logout signs this machine out and revokes its access; so does removing
"Kadal Store CLI" under Account → Settings → Connected apps.
search <words…> with --shelf <slug>, --style, --topic, --format, --kind asset|pack,
--max <dollars>, --sort relevance|newest|price, --limit <1-50>, --cursor <next page>.shelves lists the store's shelves (use a slug with --shelf).show <slug>: prices per licence tier, the licence (what each tier allows and doesn't), the
files with their sizes and editions, what a pack holds, and its updates.--from <dir> reads only the README's headings, package.json's (or pyproject.toml's, Cargo.toml's)
name, description and dependency names, a count of file types, and the top-level names. It never
reads or sends what is inside your files, and you see the exact text before it goes. --yes
skips the question. Also --shelf, --format (both repeatable), --max <dollars>,
--include-owned, --limit <1-20>.
download <slug> puts one product's files in ./<slug> (or -o <dir>). --file <name>
(repeatable) picks files; --year 2027 --week sun|mon --lang en|ja|en-ja --size a4|a5|letter…
picks one edition of a product sold in editions; --zip gets the whole product as one zip.sync [dir] mirrors everything you own into dir (default ./kadal-store), one folder per
product. Files already there with the same sha256 are skipped; nothing is ever deleted.
--product <slug> (repeatable), the edition flags, and --dry-run..kadal-part file, and the next run picks up where it stopped. Downloads run
four at a time (--concurrency <n>).buy <slug[:tier]>… (tiers: standard, the default, personal, commercial) builds a page where
you see each item, its licence and price, and anything you already own. --open opens it.
--kind mistake|question|idea; --page <n> for a PDF, --at <seconds> for audio or video. Use
- in place of the words to read them from stdin. When a fix ships, the product's update shows in
your library and the next download or sync gets it.
whoami, logout, --help (and <command> --help), --version.
--json on any command prints one JSON document on stdout; everything meant for people goes to
stderr. For the store's commands it is the store tool's answer exactly as the store sent it
(shapes in the contract). download prints
{slug, dir, files: [{fileId, name, path, bytes, sha256, status, resumed?, error?}], zip, counts},
sync prints {dir, dryRun, files, counts}, login prints {ok, host, user, scopes, operator, config}, logout prints {ok, host, signedOut, revoked}, and a recommend --from you
declined prints {sent: false}. Errors are
{ok: false, error: {code, message, exitCode}}.0 ok, 1 failed (the message says why), 2 usage, 3 not signed in (or the
sign-in expired: run kadal-store login), 4 a download failed its checksum (nothing was kept).--host <url> or KADAL_STORE_HOST points at another store, such as a local worker
(--host http://localhost:8861). Each host keeps its own sign-in.Claude Code, with the skill and the MCP server together:
The local MCP server alone (it uses the sign-in from kadal-store login):
For Claude Desktop, Cursor, VS Code and others, point the client at npx -y @kadal/store mcp:
The hosted MCP server, for clients that sign in themselves (OAuth) and need nothing installed:
In Claude (web and desktop), ChatGPT, Cursor and VS Code, add https://store.kadal.cc/mcp as a
custom connector; the store's own page opens to sign in. Step-by-step for each app:
store.kadal.cc/agents.
Both servers are one entry in the official MCP Registry, cc.kadal/store (the hosted one, and this
package as its local version).
[Kadal Store MCP connector – tool definition quality and endpoint health on Glama] [kadalcc/store-cli MCP server]
The skill alone, for any agent that reads Agent Skills: npx skills add kadalcc/store-cli
(skills/kadal-store). It teaches the agent to find assets for the
project in front of it, download into it, never buy on its own, and report problems it finds in
files you bought.
kadal-store mcp --dir <path> serves another folder as the project.
Every command is one call to a tool of the store's hosted MCP server (POST https://store.kadal.cc/mcp, Streamable HTTP, OAuth 2.1 with PKCE). The tools, their inputs and
their outputs are specified in the store's apps/store-worker/docs/agents.md; the types are in
src/types.ts. Money is always integer US cents; URLs are absolute.
See CONTRIBUTING.md and AGENTS.md.
AGPL-3.0-or-later, like the Kadal Deck engine. Security reports: SECURITY.md.
Source: README.md at commit c39cf20
Who is signed in
The person this store sign-in belongs to (id, name, email), its scopes, and whether they run the store. Call it when unsure whether the person is signed in.
Takes no parameters.
Store shelves
The store's shelves (its categories), each with a slug, name, blurb, how many products it holds, and its licence model. Use a shelf slug to narrow search_products or recommend.
Takes no parameters.
Search the store
Search the catalogue. Returns product cards: slug, name, kind (asset or pack), shelf, blurb, url, prices per licence tier in US cents, tags (style, topic, format), and `owned` (the person's tier if they already own it). Page with nextCursor.
kindsortlimitqueryshelfstyletopiccursorformatmaxCentsProduct details
Everything about one product: description, prices per tier, its files (name, bytes, minimum tier, edition), editions, what a pack contains and which packs include it, the licence (what each tier allows and does not), and its update history. Check the licence before suggesting a product for commercial work.
slugrequiredRecommend for this work
Products that fit what the person is working on. `context` is a few plain lines about the project and what it needs (project_summary's `text` is a good start; add what the person asked for). Never put file contents, secrets or personal data in it. Each item has a one-line `why` and a score; `packs` are bundles the person already owns part of (`ownedOf`). This only shortlists: read get_product for the best few, then recommend with your own reasons.
limitcontextrequiredformatsshelvesmaxCentsincludeOwnedWhat the person owns
Every product the person owns: the product card, their tier, its files (id, name, bytes, sha256, edition), whether a zip is available, and the latest update. File ids go to download_to_folder or get_download_links.
Takes no parameters.
Download links
Download URLs for files the person owns, each with its name, size and sha256, valid for 10 minutes; no cookie needed (curl -L works). Narrow with fileIds or an edition; zip: true adds one link for the whole product. To put files into the project, download_to_folder does the download and the checksum for you.
zipslugrequirededitionfileIdsA link to buy
A link to a review page on the store where the person sees each item (picture, licence, price), anything they already own, and the total, and pays in the checkout themselves. Only when the person asked to buy or agreed to it; building the link charges nothing and buys nothing. Give them the URL, and never say something was bought.
refitemsrequiredReport a problem
Tell Kadal about a product the person has: a mistake (a typo, a wrong date, a missing page, a broken file), a question, or an idea. Say where with fileName and page (PDFs, from 1) or timeSeconds (audio and video). The note is private to the person and Kadal, and its replies show in list_my_notes. Report only what you checked, in plain words, once per problem, and tell the person you filed it.
bodyrequiredkindrequiredpageslugrequiredfileNametimeSecondsThe person's notes
The person's notes (reports) on products, with each one's status (open, accepted, declined, duplicate, fixed), a plain status line, and the thread with Kadal's replies.
statusSummarise this project
A short summary of a project folder, without its contents: name and description from package.json / pyproject.toml / Cargo.toml, dependency names, tools it uses (Godot, Blender, Next.js, Obsidian…), the README's headings, file-type counts and the top-level names. It is what `kadal-store recommend --from` sends. Pass its `text` to recommend as context. Reads nothing else and sends nothing anywhere.
dirDownload into the project
Download files the person owns into the project, each checked against its sha256; files already there with the same checksum are skipped. dir is relative to the project (default kadal-store/<slug>). Narrow with fileNames or fileIds (from list_library) or an edition, or zip: true for the whole product as one zip. Returns where every file went.
dirzipslugrequirededitionfileIdsfileNamesoverwrite100% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
npx -y @kadal/store login # once: approve in your browsernpx -y @kadal/store recommend --from . # what fits the project you are innpx -y @kadal/store download retro-ui-sfx -o assets/sfx$ kadal-store loginOpening your browser to sign in to store.kadal.cc. If it does not open, visit: https://store.kadal.cc/authorize?response_type=code&client_id=…Signed in as Ana <[email protected]> on store.kadal.cc. Saved to ~/.config/kadal/store.json$ kadal-store search planner --max 10Techo weekly planner 2027 Planners owned (personal) techo-weekly-2027A5 monthly undated Planners from $4.00 monthly-undated-a5
2 of 2. Details: kadal-store show <slug>$ kadal-store recommend "ui sounds" --from .This summary of /home/ana/cosy-farm will be sent to store.kadal.cc:
Project: cosy-farm — A cosy farming game Built with: Phaser Dependencies: phaser README sections: Cosy Farm · Art style File types: .png 412, .ts 88, .wav 31 Top level: assets/, src/, package.json, README.md
Send it? [y/N] yRetro UI sound effects Sound effects from $9.00 retro-ui-sfx Matches "ui" and "sounds", and your .wav files.$ kadal-store libraryTecho weekly planner 2027 (personal) 3 files, 39 KB techo-weekly-2027Retro UI sound effects (standard) 2 files, 12 KB retro-ui-sfx
$ kadal-store download techo-weekly-2027 --year 2027 --size a5 -o plannerDownloading techo-weekly-2027 into planner ✓ planner/techo-weekly_2027_mon_en_a5.pdf ✓ planner/READ ME.txtDone: 2 downloaded, 0 already here.
$ kadal-store sync ~/Kadal2 products · 5 files already in /home/ana/Kadal · 0 to downloadDone: 0 downloaded, 5 already here.$ kadal-store buy fern-pack techo-weekly-2027:personalReview and pay here: https://store.kadal.cc/buy?items=fern-pack:standard,techo-weekly-2027:personal&ref=cli
Fern textures pack standard $12.00 Techo weekly planner 2027 personal $9.00 (you already own this) Total $12.00
Nothing is charged until you pay in the checkout on that page.$ kadal-store report techo-weekly-2027 --kind mistake --file techo-weekly_2027_mon_en_a5.pdf --page 12 "March 31 is missing"Thanks. Your note is open: https://store.kadal.cc/account/notes/note_…Only you and Kadal can see it. Replies show up in `kadal-store notes`.
$ kadal-store notes Techo weekly planner 2027 · mistake · techo-weekly_2027_mon_en_a5.pdf [Accepted for the 7 Nov update] note_… March 31 is missing Kadal: Thanks, fixed in the next update./plugin marketplace add kadalcc/store-cli/plugin install kadal-store@kadal-storeclaude mcp add kadal-store -- npx -y @kadal/store mcp{ "mcpServers": { "kadal-store": { "command": "npx", "args": ["-y", "@kadal/store", "mcp"] } } }claude mcp add --transport http kadal-store https://store.kadal.cc/mcpbun install && bun run build && bun run testbun test/fake-store.ts 8899 & # a fake store, no account needednode dist/bin.js login --host http://127.0.0.1:8899