Pack local or remote codebases into AI-friendly files that LLMs and coding agents can read or search
Pepitahq is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
pepita local MCP server (stdio) — drive your pepita sites from Claude.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user pepitahq-mcp '--' npx -y @pepitahq/mcp
# 2 — ask your agent for something these tools do
# list_sites, create_site, get_site_status and 41 more
Pepitahq costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Pepitahq as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user pepitahq-mcp '--' npx -y @pepitahq/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
44 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
List the user's pepita websites with their live URLs. The entry point — call this first to get the slug the other tools need. Docs: https://pepita.dev/developers/#list_sites
No parameter schema on file.
Create a NEW pepita website in pepita's cloud. It goes live immediately at its pepita.page URL with starter content; use write_site_file to shape it, then publish_site — or create_preview for a shareable draft. The name becomes the site slug plus a short random suffix. Embedding by other sites…
No parameter schema on file.
What a pepita site IS: how much of it there is, what platform features it already uses, and what is pending. Counts and names — the file list is list_site_files, the items are list_content_records. CALL IT FIRST when you start on a site: a collection, a form or an email template you did not ask…
No parameter schema on file.
List the file paths that make up a pepita website (in the cloud, NOT on the local disk). Reads the working copy by default; state "live" lists the published site, or pass a "preview" name (from list_previews) to list a specific preview link. Docs: https://pepita.dev/developers/#list_site_files
No parameter schema on file.
Read a text file from a pepita website (fetched from the cloud, NOT the local filesystem — use this, not the Read tool, to see a pepita site's source). Reads the working copy by default; state "live" reads the published file, or pass a "preview" name (from list_previews) to read from a specific…
No parameter schema on file.
Create or overwrite a TEXT file in a pepita website's cloud working copy — use this (NOT the local Write tool) to edit the user's site / landing-page copy. It becomes public when you publish_site (→ live) or push it to a preview link (create_preview / update_preview). Docs:…
No parameter schema on file.
Change PART of a text file on a pepita website — replace one exact, unique snippet, without resending the whole file. PREFER THIS over write_site_file when editing an existing file, especially a large one: a full rewrite costs the entire file and can be cut off mid-way. Call read_site_file first…
No parameter schema on file.
What a VISITOR gets for one address on the site — the response, not the file. Use it to CHECK YOUR OWN WORK: read_site_file shows what you wrote, and for a pepita site the two differ enormously — a <pepita-content> tag is one line in the file and every item in the response, a {{placeholder}} is a…
No parameter schema on file.
Remove one file from a pepita website. The route, the client method and the editor have always had this; the connector did not, so a file written by mistake — a typo in the path — could only be overwritten, never removed, and stayed in the site forever. Deleting is not publishing: the file leaves…
No parameter schema on file.
Publish a pepita website — deploy / ship / put it live / go live — promoting the current working copy to the public live URL. Docs: https://pepita.dev/developers/#publish_site
No parameter schema on file.
Freeze the current pepita site as a NEW shareable preview / share link — a stable URL you can send to anyone (for review/staging) and update or delete later. Docs: https://pepita.dev/developers/#create_preview
No parameter schema on file.
List a pepita site's active preview / share links (name + URL). Docs: https://pepita.dev/developers/#list_previews
No parameter schema on file.
Push the current pepita site onto an EXISTING preview / share link — same URL, new content. Use the preview name from list_previews. Docs: https://pepita.dev/developers/#update_preview
No parameter schema on file.
Stop serving a pepita site preview / share link. The version stays restorable from History. Docs: https://pepita.dev/developers/#delete_preview
No parameter schema on file.
List the videos uploaded to a pepita site (they live in pepita's video pipeline, NOT in the site files). Each ready asset carries the videoUrl (streaming) and thumbnailUrl (poster) you reference in the markup, plus its duration, size and pixel dimensions once pepita has measured them. Videos are…
No parameter schema on file.
Get a time-limited download URL for the ORIGINAL uploaded file of a pepita video asset (the source, not the streaming ladder). Use the id from list_videos. The link expires in an hour and is a bearer secret — do not publish it in the site. Docs: https://pepita.dev/developers/#get_video_original_url
No parameter schema on file.
Rename an asset in a pepita site's asset library (currently the videos from list_videos — more asset kinds are coming). Changes the display name ONLY: the id and every URL stay the same, so pages already referencing the asset keep working — a rename can never break the site. Docs:…
No parameter schema on file.
Permanently delete a pepita video asset — the original, the streaming ladder and the poster. Assets are NOT versioned: restoring an old site version will not bring it back, and any page referencing it stops playing. Docs: https://pepita.dev/developers/#delete_video
No parameter schema on file.
REQUIRED READING before writing forms, confirmation emails, video markup, repeating content collections or _headers on a pepita site: returns the exact platform contract for the topic, so the site works with pepita's built-in form capture, emails, video streaming, content rendering and header…
No parameter schema on file.
List a pepita site's confirmation-email templates — one per form, matched by the form's _form name. Docs: https://pepita.dev/developers/#list_email_templates
No parameter schema on file.
Read one confirmation-email template (envelope + HTML body + the sha needed to update it), addressed by its form name. {{field}} placeholders in the returned content fill from a submission in BOTH the subject and the body — HTML-escaped in the body, as-is in the plain-text subject. Docs:…
No parameter schema on file.
Create or update the confirmation email pepita sends when a form is submitted — UPSERT by form name (the form's _form value). Creating: html optional (pepita seeds a starter), and a brand-new template is saved as it is created. UPDATING an existing template changes the WORKING COPY only — it does…
No parameter schema on file.
Promote a template's working copy to the version people receive. Editing a template — with write_email_template, in the editor, or with the CLI — changes the working copy only; this is what makes those edits the email a visitor actually gets. Safe to call when nothing is pending: it reports that…
No parameter schema on file.
Delete a form's confirmation-email template — confirmation emails for that form STOP going out immediately. Docs: https://pepita.dev/developers/#delete_email_template
No parameter schema on file.
List the images stored beside one confirmation-email template's body. In the body you write with write_email_template, reference one by its BARE FILENAME — <img src="hero.jpg">, never the URL below — because pepita rewrites that filename to an absolute URL at SEND time, picking whichever site…
No parameter schema on file.
Permanently delete one image beside a confirmation-email template's body, by its name from list_email_template_images. If the body still references it, that <img> breaks — check first with read_email_template. Docs: https://pepita.dev/developers/#delete_email_template_image
No parameter schema on file.
List a site's content collections. A collection is repeating structured content — blog posts, team members, products, testimonials — a TEMPLATE describing ONE item plus the items filling it. The template name is how a page asks for the collection, so it is the collection's name too. Docs:…
No parameter schema on file.
Read one content template — the COMPLETE HTML document for a single item, with {{placeholder}} fields. Read it BEFORE changing it or adding items, so you keep what should not change and know which fields the template actually names. For the authoring rules call get_building_guide with topic…
No parameter schema on file.
Create or replace a content collection's template — the HTML for ONE item, with {{field}} placeholders and data-each="group" repetition. The name is the collection name and what a page asks for: letters, digits, - and _. A brand-new template is saved as it is created; changing one that already…
No parameter schema on file.
A content collection's own style.css or script.js — one of each per collection, applying to every layout it has. Read before you write if you mean to keep what is there: writing REPLACES the file outright. A collection that has no such file says so, which is an ordinary answer and not an error.…
No parameter schema on file.
Replace a content collection's style.css or script.js. This is where a collection's LOOK and BEHAVIOUR live — a <style> or <script> written inside a content template is DROPPED silently, because a template is stamped once per item and would repeat the rules and re-run the script for every one.…
No parameter schema on file.
Make a content collection's current edits the version the site's pages render. WITHOUT a layout it promotes the WHOLE collection — every layout AND its style.css and script.js — which is what a collection needs, because its parts are edited together and promoting them one at a time leaves the live…
No parameter schema on file.
Delete a content collection's TEMPLATE. The collection's items are KEPT — writing a template with the same name again brings them back — so this removes the SHAPE, not the content. Every <pepita-content> tag naming it falls back to whatever static markup sits inside the tag. With a LAYOUT it…
No parameter schema on file.
Fetch a picture from a public web address into a content collection's images and get back the pepita address for it. An {{image:}} field in a content template accepts ONLY that address, so this is how a picture gets into a record: call this first, then write the returned url as the field's value,…
No parameter schema on file.
Get a short-lived address that accepts ONE picture file uploaded straight from this machine, for a content collection's images. Use it when the picture is a FILE you can reach — on disk, or one you can run a command to send — rather than a public web address; for a link, use add_content_image…
No parameter schema on file.
One collection's items, newest first — the same order a page renders them in. Read this before editing or deleting an item: an item is addressed by its id, and the ids only come from here. Pass oldest true to list from the other end, which is the only way to reach the old items in a collection…
No parameter schema on file.
Add items to a collection — an ARRAY, so many in one call. Each item is a JSON object whose keys are the field names the TEMPLATE names: call read_content_template first, because a field the template does not name is refused rather than stored. ONE field is always required: "title", whether or not…
No parameter schema on file.
Replace one existing item's data. data is the WHOLE item, not a patch — anything you leave out is gone from it. Get the id from list_content_records. Editing never publishes or unpublishes an item: a draft stays a draft, and a published item stays published with its new text live at once. Docs:…
No parameter schema on file.
Put one item on the live site. New items are DRAFTS — they show in the owner's editor and on preview links, and are not on the published site until this is called. Takes effect immediately. Get the id from list_content_records, which reports each item's state. Docs:…
No parameter schema on file.
Take one item off the live site, keeping it as a draft the owner can still see and edit. Takes effect immediately. Nothing is deleted — delete_content_record is the one that cannot be undone. Docs: https://pepita.dev/developers/#unpublish_content_record
No parameter schema on file.
Remove one item from a collection. It disappears from the site immediately and cannot be recovered. Get the id from list_content_records, and ask the owner first unless they asked for it in as many words. Docs: https://pepita.dev/developers/#delete_content_record
No parameter schema on file.
Every form on a pepita site that has received a submission, with how many it holds. Call this before list_form_records to see what exists and how big it is. Each count covers every source combined — the published site, the editor preview and every preview link — while list_form_records reads one…
No parameter schema on file.
Read what visitors submitted through one of a site's forms, newest first. Addressed by the form name (its _form value). By default this reads the submissions made from the editor preview — the founder's own tests. Pass live for the real ones from the published site, or preview with a preview name…
No parameter schema on file.
A time-limited link to download one form's submissions as xlsx, csv or json. Returns a URL, not the file: the file is binary and would be unreadable here. Give the user the link — it expires in 15 minutes. By default this covers the submissions made from the editor preview — the founder's own…
No parameter schema on file.
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Pepitahq or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| verification-discount | repo | publisher verification (public source) — no provenance, but the source is public and inspectable | −1 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (44 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| list_sites | no tags | |
| create_site | state-write | state-write: declares readOnlyHint: false |
| get_site_status | no tags | |
| list_site_files | no tags | |
| read_site_file | no tags | |
| write_site_file | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| edit_site_file | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| read_served_page | no tags | |
| delete_site_file | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| publish_site | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| create_preview | state-write | state-write: declares readOnlyHint: false |
| list_previews | no tags | |
| update_preview | state-write | state-write: declares readOnlyHint: false |
| delete_preview | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| list_videos | no tags | |
| get_video_original_url | untrusted-input | untrusted-input: keyword "download" |
| rename_video | state-write | state-write: declares readOnlyHint: false |
| delete_video | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| get_building_guide | no tags | |
| list_email_templates | no tags | |
| read_email_template | untrusted-input | untrusted-input: keyword "read_email" |
| write_email_template | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| save_email_template | state-write | state-write: declares readOnlyHint: false |
| delete_email_template | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| list_email_template_images | no tags | |
| delete_email_template_image | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| list_content_templates | no tags | |
| read_content_template | no tags | |
| write_content_template | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| read_content_file | no tags | |
| write_content_file | state-write | state-write: declares readOnlyHint: false |
| save_content_template | state-write | state-write: declares readOnlyHint: false |
| delete_content_template | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| add_content_image | untrusted-inputexternal-sink | untrusted-input: keyword "fetch", parameter "url" with "fetch" in the description; external-sink: declares readOnlyHint: false, openWorldHint: true |
| get_content_image_upload_url | state-write | state-write: declares readOnlyHint: false |
| list_content_records | no tags | |
| add_content_records | state-write | state-write: declares readOnlyHint: false |
| update_content_record | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| publish_content_record | state-write | state-write: declares readOnlyHint: false |
| unpublish_content_record | state-write | state-write: declares readOnlyHint: false |
| delete_content_record | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| get_form_records_count | no tags | |
| list_form_records | no tags | |
| get_form_export_url | untrusted-input | untrusted-input: keyword "download" |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.22.0. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Pepitahq can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.