Kadal Store

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

VerifiedStreamable HTTPWeb executableFiles & StorageBusiness & CommerceMedia & Design

Overview

AI-generated overview

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.

What you can do
  • Search shelves and products, read prices, files, editions and licence terms, and get suggestions from a contents-free project summary
  • List the products you own with their files and checksums, and get ten-minute download links
  • Download owned files into the project folder, verified against sha256 and skipping files already present
  • Build a review page link for items you do not own, so the person pays in the store's checkout
  • Report mistakes, questions or ideas about a purchased file, and read Kadal's replies
  • Show who is signed in and with which scopes
When to use it
Useful when you are building something that needs ready-made assets (planners, sound effects, music, shaders, 3D models, icons, templates) and want an assistant to find fitting products, pull the ones you already bought into the project, or hand you a checkout link for the rest.
Requirements
Either the hosted endpoint at store.kadal.cc with OAuth sign-in, or the local npm package run with npx, which needs Node 20 or newer and a one-time browser sign-in via the CLI login command. The local server uses that saved sign-in and serves the folder it was started in unless told otherwise.
Before you install
The tools act as the signed-in person, so anything they can see or download is exposed to the assistant. The recommend tool sends a summary of the project folder (names, dependencies, README headings, file-type counts) to the store; the CLI shows the text first, but the MCP tool does not ask. Buy links lead to a real checkout where the person pays; the server itself cannot buy. Download links are short-lived and carry access to owned files. Reports are visible to the person and Kadal.

Installation

In SourceWeft

  1. Open Kadal Store in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

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.

Read the install guide the agent follows

Other MCP clients

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"
    }
  }
}

README

Kadal Store CLI

Your store library, in your terminal and your AI agent.

[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.

sh
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

Or install it: npm i -g @kadal/store, then kadal-store <command>. Node 20 or newer.

Sign in

text
$ 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

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.

Commands

Find

text
$ 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>
  • 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.

Suggestions for your project

text
$ 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.

--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>.

What you own

text
$ 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.
  • 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.
  • Every file is checked against the sha256 the store gives before it is kept. A download that is cut off leaves a .kadal-part file, and the next run picks up where it stopped. Downloads run four at a time (--concurrency <n>).

Buy

text
$ 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.

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.

Tell us about a problem

text
$ 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.

--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.

Everything else

whoami, logout, --help (and <command> --help), --version.

For scripts and agents

  • --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}}.
  • Exit codes: 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.

Connect your agent

Claude Code, with the skill and the MCP server together:

text
/plugin marketplace add kadalcc/store-cli/plugin install kadal-store@kadal-store

The local MCP server alone (it uses the sign-in from kadal-store login):

sh
claude mcp add kadal-store -- npx -y @kadal/store mcp

For Claude Desktop, Cursor, VS Code and others, point the client at npx -y @kadal/store mcp:

json
{ "mcpServers": { "kadal-store": { "command": "npx", "args": ["-y", "@kadal/store", "mcp"] } } }

The hosted MCP server, for clients that sign in themselves (OAuth) and need nothing installed:

sh
claude mcp add --transport http kadal-store https://store.kadal.cc/mcp

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.

MCP tools
search_products, get_product, list_shelves, recommendthe catalogue, the licence of each product, suggestions from a description of the work
list_library, get_download_linkswhat you own, and ten-minute download links with each file's sha256
create_buy_linka review page to pay on yourself; it charges nothing
report_problem, list_my_notesa note about a file you own, and Kadal's replies
whoamiwho is signed in, with which scopes
project_summary (local)what recommend --from sends: the folder described without its contents
download_to_folder (local)files you own into the project, checked by sha256, skipping what is there; only inside the folder the server started in unless it was started with --allow-outside

kadal-store mcp --dir <path> serves another folder as the project.

The contract

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.

Development

sh
bun 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

See CONTRIBUTING.md and AGENTS.md.

Licence

AGPL-3.0-or-later, like the Kadal Deck engine. Security reports: SECURITY.md.

Source: README.md at commit c39cf20

Tools

12

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.

list_shelves

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_products

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.

ParameterskindsortlimitqueryshelfstyletopiccursorformatmaxCents

get_product

Product 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.

Parametersslugrequired

recommend

Recommend 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.

ParameterslimitcontextrequiredformatsshelvesmaxCentsincludeOwned

list_library

What 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.

report_problem

Report 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.

ParametersbodyrequiredkindrequiredpageslugrequiredfileNametimeSeconds

list_my_notes

The 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.

Parametersstatus

project_summary

Summarise 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.

Parametersdir

download_to_folder

Download 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.

ParametersdirzipslugrequirededitionfileIdsfileNamesoverwrite

Version history

1
  1. v0.1.1LatestNov 5, 2026

Score

100% 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.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Kadal integrations