Kadal Store

cc.kadal由 kadal.cc 发布官方发布者v0.1.1更新于 Nov 7, 2026

Find assets for what you're making, download what you own, and get a buy link to review.

发布方自己的服务:Kadal Deck

已验证Streamable HTTP可网页运行文件与存储商业与电商媒体与设计

概览

AI 生成的概览

Kadal Store 的商品目录与素材库工具:搜索数字素材、把已购文件下载到项目,并生成由本人付款的购买链接。

可以做什么
  • 搜索货架与商品,查看价格、文件、版本与授权条款,并根据不含文件内容的项目摘要给出推荐
  • 列出已购商品及其文件与校验值,获取十分钟有效的下载链接
  • 把已购文件下载到项目目录,按 sha256 校验并跳过已存在的文件
  • 为未拥有的商品生成一个复核页面链接,由本人在商店结账页付款
  • 就已购文件报告错误、疑问或建议,并查看 Kadal 的回复
  • 查看当前登录的账号及其权限范围
适用场景
适合在制作需要现成素材(计划表、音效、音乐、着色器、3D 模型、图标、模板)的项目时使用,让助手找到合适商品、把已购素材拉进项目,或为其余商品提供结账链接。
运行要求
可使用 store.kadal.cc 的远程端点并通过 OAuth 登录,或使用 npx 运行的本地 npm 包;后者需要 Node 20 或更高版本,并通过命令行登录在浏览器中完成一次性授权。本地服务器沿用该登录状态,默认只服务启动时所在的文件夹。
安装前请注意
这些工具以已登录用户的身份操作,助手因此可访问该账号能看到和下载的内容。推荐工具会把项目文件夹的摘要(名称、依赖、README 标题、文件类型统计)发送到商店;命令行会先展示文本,MCP 工具则不会询问。购买链接指向真实结账页,由本人付款,服务器本身无法购买。下载链接有效期很短,且携带已购文件的访问权限。报告内容本人与 Kadal 可见。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Kadal Store,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/cc.kadal%2Fstore/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

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

来源:README.md,提交 c39cf20

工具

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.

无需输入参数。

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.

无需输入参数。

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.

输入参数kindsortlimitqueryshelfstyletopiccursorformatmaxCents

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.

输入参数slug必填

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.

输入参数limitcontext必填formatsshelvesmaxCentsincludeOwned

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.

无需输入参数。

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.

输入参数body必填kind必填pageslug必填fileNametimeSeconds

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.

输入参数status

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.

输入参数dir

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.

输入参数dirzipslug必填editionfileIdsfileNamesoverwrite

版本历史

1
  1. v0.1.1最新Nov 5, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Kadal 集成