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 整合