MCP server
Native Cook speaks MCP (Model Context Protocol), so the coding tool you already work in can look through the catalog and write a block’s source files into your React Native, SwiftUI or Jetpack Compose project. The setup is the four steps below, in the order you will do them. Account limits and the tool reference come after.
Connect your tool
Pick the tool you code with. You give it the server’s address one time, and it keeps it in its own settings.
Run this in a terminal:
claude mcp add --transport http nativecook https://api.nativecook.dev/mcpSaved for the project you run it in; add --scope user to have it in every project. Then start Claude Code, type /mcp, pick nativecook and authenticate.
- Address
https://api.nativecook.dev/mcp- Name
nativecookin the examples here. It is only the label your tool shows, so call it what you like.- Transport
- Streamable HTTP. Every call is one POST.
- Signing in
- OAuth in your browser.
- Access
- Read only. It reads the catalog and your name, email and plan, and changes nothing.
Check the account
The first time your tool connects, it opens Native Cook in your browser. Sign in the way you do on this site, read what the tool asks for, and allow it. Then ask the tool who it is:
Which Native Cook account is this tool signed in to?
whoami
- the address of the account
- name
- its display name
- usage
- limit, used, remaining and resets_at; limit and remaining are null with no daily limit
- plan
- "free"
When the answer names your account, the connection works. Only code fetches count toward that account’s daily allowance. To cut a tool off, disconnect it in the Connected tools tab of your account.
Find a block
Say what you are building. Your tool turns the sentence into a search of the catalog: by words, by category (Navigation, Lists, Onboarding and the rest) and by stack. Search and browsing are free and uncounted.
Find the Piñata Smash Reward block on Native Cook and add it to this React Native app.
search_blocks { "query": "piñata smash reward" }
- total
- how many blocks matched
- blocks
- for each one: slug (here “pinata-smash-reward”), name, category_name (“Gestures”), description, platforms it has code for, url of its page, video_url of its screen recording
Every result carries the block’s page and its recording, so you can open it and look before any code moves: this one is Piñata Smash Reward. With no words in mind, ask what is new: list_new gives the latest blocks, newest first.
Pull its files
Your tool then asks for that block on your stack. What comes back is the block’s own source, file by file, and how many code fetches the account has left for the day.
get_block { "slug": "pinata-smash-reward", "platform": "rn" }
- status
- "ok"
- files
- for each one: path, kind, size, and its text or a url to download it
- how_to_use
- where the files go in a project
- prompt
- the block’s written brief: how it should look and move
- usage (also quota)
- limit 20, used 1, remaining 19, resets_at the next 00:00 UTC
Where the files land
Each path is the file’s place in Native Cook’s own app for that stack. Your tool keeps the files in the same places relative to each other, or moves them and fixes the imports.
| Stack | Tools call it | Paths start with |
|---|---|---|
| React Native | rn | src/ |
| SwiftUI | swift | NativeCook/ |
| Jetpack Compose | kotlin | app/src/main/ |
- Three kinds of file.
blockis the block itself.sharedis a helper several blocks use, so one you already have from another block is the same file.demois a screen that shows the block off, and can be left out. - Large blocks. One answer carries up to 48 KiB of text. Files past that come as download links that work for 15 minutes, or your tool asks again for those files by path.
- Packages. No list of packages is kept with a block. Your tool reads the imports to see what to install.
- No code for your stack. The answer says which stacks the block does have code for.
Account and limits
Free accounts get 20 code fetches a day and the full code of Free blocks. Pro has no daily limit and includes every block’s code.
Both plans can use all four tools. Each listed block includes a link to its video preview. Searching and browsing blocks are free and uncounted. Free gets the code of 20 blocks a day: one fetch is one block + stack. Taking the same pair again that day is free, even after the limit. It resets at 00:00 UTC. Pro has no daily limit and includes Pro blocks. This site and your connected tools share the account’s count. Code answers and whoami report usage.
What counts toward the day
| What your tool does | Counted |
|---|---|
whoami | Never |
search_blocks or list_new | Never |
get_block for a block + stack not fetched yet today | 1, only when files are given. The same pair again today is free |
get_block for a slug that does not exist, or a stack the block has no code for | Never |
Tool reference
The server calls itself native-cook. Its tools only read, and each answer is one JSON object.
| Tool | Takes | Answers with | Counted |
|---|---|---|---|
whoami | Nothing | email, name, plan, usage | No |
search_blocks | query, category, platform, limit (20 unless said, 50 at most). All optional | total and blocks: for each, slug, name, category, category_name, description, platforms, video_url, url, added_on | No |
list_new | platform, limit. All optional | The same list, newest first | No |
get_block | slug and platform. On a further call, paths of the files to send as text | status, block, platform, platforms, files, how_to_use, prompt, usage, quota | 1 per new block + stack with files; repeats today are free |
What a search can name
- Words
- Looked for in a block’s name, description and category. Every word has to match, so fewer words find more.
- Category
- By its name, as on the Blocks page. A category the catalog does not have is answered with the list of the ones it does.NavigationListsOnboardingSheetsModalsGesturesFormsChartsAnimationsMediaButtonsProgressCardsInputsPickersTextOverlaysPlaygroundSplash
- Stack
rn,swiftorkotlin: only blocks with code for it are listed.- Slug
- A block’s short name, the last part of its page’s address:
/blocks/pinata-smash-reward/. Give your tool a block’s link and it reads the slug from it.
If it doesn’t connect
- The tool says it is not authorized: sign in again with OAuth from the tool. Use a client that supports OAuth, such as Claude Code, Cursor or Codex.
- Today’s limit is used up: new code fetches resume at 00:00 UTC, at the reset time in the answer. A block + stack already fetched today can still be fetched again, and search still works. The Pro plan has no daily limit; see pricing.
- Something else: write to support with the tool’s name and the message it showed.