Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Valet

REMOTE · API.VALET.DEV · SCANNED AUG 20

Get share links, publish and manage websites, artifacts and agents. No account needed.

Available components

+1 this week 63 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security57
Transport & Reachability100
Schema Quality & AI Usability66
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4374 tokens (~273/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management13
  • Stability check failed: schema churn in the 7 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 10 additions. See how to fix → Fail
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · api.valet.dev

# add to Claude Code
claude mcp add --transport http valetdotdev-valet https://api.valet.dev/mcp
# ~/.codex/config.toml
[mcp_servers.valetdotdev-valet]
url = "https://api.valet.dev/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "valetdotdev-valet": {
      "type": "remote",
      "url": "https://api.valet.dev/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add valetdotdev-valet --url https://api.valet.dev/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  valetdotdev-valet:
    url: "https://api.valet.dev/mcp"
// mcp.json
{
  "mcpServers": {
    "valetdotdev-valet": {
      "type": "http",
      "url": "https://api.valet.dev/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Aug 26 +1
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “publish_site” rewrote its description, which is the text the model reads security
    • “attach_site_connector” reworded the description of “connector” cosmetic
    • “attach_site_connector” reworded the description of “site” cosmetic
    • “call_site_connector” reworded the description of “connector” cosmetic
    • “call_site_connector” reworded the description of “site” cosmetic
    • “call_site_connector” reworded the description of “tool” cosmetic
    • “create_connector” reworded the description of “entry” cosmetic
    • “delete_site” reworded the description of “name” cosmetic
    • “delete_site” reworded the description of “site_token” cosmetic
    • “detach_site_connector” reworded the description of “connector” cosmetic
    • “detach_site_connector” reworded the description of “site” cosmetic
    • “get_site” reworded the description of “name” cosmetic
    • “get_site” reworded the description of “site_token” cosmetic
    • “list_site_connectors” reworded the description of “site” cosmetic
    • “publish_site” reworded the description of “description” cosmetic
    • “publish_site” reworded the description of “files” cosmetic
    • “publish_site” reworded the description of “title” cosmetic
    • “rename_site” reworded the description of “name” cosmetic
    • “rename_site” reworded the description of “new_name” cosmetic
    • “set_site_access” reworded the description of “mode” cosmetic
    • “set_site_access” reworded the description of “name” cosmetic
    • “share_site” reworded the description of “emails” cosmetic
    • “share_site” reworded the description of “name” cosmetic
  • 18 Aug 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • New tool “call_site_connector”, which the server declares destructive security
    • Tool “get_site” rewrote its description, which is the text the model reads security
    • Schema quality: 2901 → 4255 functional
    • New tool “create_connector” functional
    • New tool “get_connector_client” functional
    • New tool “list_catalog_connectors” functional
  • 17 Aug 26 +1
    • New tool “attach_site_connector”, which the server declares destructive security
    • Schema quality: 1942 → 2901 functional
    • New tool “detach_site_connector” functional
    • New tool “list_attachable_connectors” functional
    • New tool “list_site_connectors” functional
  • 15 Aug 26 −2
    • Stability: 0.03 → fail security
    • A breaking change shipped without a version bump: still 1.0.0 security
    • The server rewrote its instructions, which are the text every model session reads security
    • New tool “share_site”, which the server declares destructive security
    • Tool “get_design_system” rewrote its description, which is the text the model reads security
    • Tool “publish_site” rewrote its description, which is the text the model reads security
    • Schema quality: 192 → 242 functional
    • “publish_site” added a required parameter “description”, so existing callers break functional
    • “publish_site” added a required parameter “title”, so existing callers break functional
    • “get_design_system” added an optional parameter “anonymous” cosmetic
    • “publish_site” added an optional parameter “anonymous” cosmetic
    • “get_design_system” reworded the description of “org_name” cosmetic
  • 14 Aug 26 +1
    • New tool “rename_site”, which the server declares destructive security
    • Tool “get_design_system” rewrote its description, which is the text the model reads security
    • Stability: unverified → 0.03 functional
  • 13 Aug 26 62

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Aug 2026 · Probed https://api.valet.dev/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=api.valet.dev CN=YE2,O=Let's Encrypt,C=US 18 Aug 2026 16 Nov 2026 ECDSA 256 ECDSA-SHA384 597d3cbe8de81bc95955470c861a475384b
SANs: api.valet.dev
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd
DNSSEC insecure

Validation of api.valet.dev. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
dev. present 60074 8 Verified
valet.dev. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://api.valet.dev/mcp Verified 200
http (plaintext) http://api.valet.dev/mcp HTTPS enforced 301 https://api.valet.dev/mcp
MCP tools · 16 exposed · ~4,043 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
attach_site_connector ~294

Attach an organization connector to a website so pages served from that site can call the connector's tools. Attaching is a grant, and it is wider than it looks: every person who can open the page can call every tool the connector exposes, using the credential Valet holds for it. On a private site that is every member of the organization; on a password-protected or shared one it is everyone holding the password or the link. Valet does not narrow the connector's reach for a page, so attach only what the page needs and check the site's access mode before you do. Only an organization connector that is an HTTP MCP server — transport sse or streamable-http — can be attached; list_attachable_connectors reports exactly that set. A connector that belongs to a single agent cannot back a page. A page calls the connector by its own name, which is what list_site_connectors reports and what the page's request path carries. Attaching a connector that is already attached changes nothing and is safe to repeat. Requires connecting a Valet account.

NameTypeReqDescription
connectorstringyesRequired. The organization connector's name. It is also the name a page served from the site calls it by.
org_namestringThe Valet organization the site and the connector belong to. Omit to use the organization the account joined first.
sitestringyesRequired. The site's name.

No output schema declared.

No examples provided.

call_site_connector ~431

Run one tool on a connector attached to a website and return what the connector answered. It is the sampling step of building a page that calls live data: discover, attach, read the schemas, then call one tool for real before you write any page code. Call it because a schema is not a shape. list_site_connectors gives you each tool's name and argument schema, which is what your call has to satisfy; this tells you what comes back, which is what the page has to parse. Results are text to read, not JSON to assume: many servers answer in markdown tables or prose, some expose a single meta-tool taking a whole command as one string, and a server that completes the handshake can still refuse half its tools when the stored credential's scope does not cover them. One real call settles all three. This runs the tool for real, with the organization's own credential and whatever side effects the tool has. It is not a dry run and there is no preview: a tool that sends, writes, or deletes will do so. Prefer a read-only tool when you are only learning the shape, and ask the user before running anything that changes their systems. The connector must already be attached to the site — attach_site_connector does that — and must be an HTTP MCP server. A tool that answers with an error is reported as an error carrying the connector's own text, which is usually the sentence that says what to fix. Requires connecting a Valet account.

NameTypeReqDescription
argsobjectArguments for the tool, as an object matching the tool's own input schema from list_site_connectors. Omit it for a tool that takes none.
connectorstringyesRequired. The name the connector is attached under, which is the name a page calls it by.
org_namestringThe Valet organization the site belongs to. Omit to use the organization the account joined first.
sitestringyesRequired. The site's name.
toolstringyesRequired. The tool to run, spelled exactly as list_site_connectors reports it.

No output schema declared.

No examples provided.

create_connector ~374

Create an organization connector from a Valet catalog entry. It is the step after list_catalog_connectors found the entry for the product the user named; attach_site_connector then lets a website's pages call it. It creates an entry whose credential is a secret. Pass each slot the entry asks for in secrets, as slot name to value. A slot the organization already holds as a secret needs no value here. If a required slot has neither, nothing is created and the answer names the slots still needed. A key given here passes through this conversation. That is a real cost and it is the user's call to make: if they hand you the key, use it, and say that they could instead enter it on the dashboard's Integrations page, where it goes straight to Valet. The answer names the slots that were filled and never the values in them. An entry that authorizes in a browser — OAuth, or a Composio toolkit — is not created here. The answer gives the entry's name and the Integrations page, which creates the connector and runs the authorization in one place. An entry the organization already has is reported as already there; no second connector is made. Requires connecting a Valet account.

NameTypeReqDescription
entrystringyesRequired. The catalog entry's name, spelled exactly as list_catalog_connectors reports it.
org_namestringThe Valet organization to create the connector in. Omit to use the organization the account joined first.
secretsobjectThe entry's secret slots, as slot name to value. Valet stores each as an organization secret. A value passed here travels through this conversation; leave it out and point the user at the dashboard's…

No output schema declared.

No examples provided.

delete_site ~137

Permanently delete a website and stop serving it. Identify it by name, which requires connecting a Valet account, or by the site_token returned when it was published anonymously — whoever published a site can always take it down. This cannot be undone.

NameTypeReqDescription
namestringGive this or site_token. The site's name, which requires a connected Valet account.
org_namestringThe Valet organization the site belongs to. Omit to use the organization the account joined first.
site_tokenstringGive this or name. The token returned when the site was published anonymously; it identifies that one site.

No output schema declared.

No examples provided.

detach_site_connector ~188

Detach a connector from a website, so pages served from that site can no longer call it. The connector itself is left in place for the rest of the organization, and nothing else about the site changes. This is how the grant attaching made is taken back. While a connector is attached, everyone who can open the page can call every tool it exposes with the credential Valet holds, so detaching is the way to end that reach. A page that still calls the connector starts getting an error, which is the intended outcome. Requires connecting a Valet account.

NameTypeReqDescription
connectorstringyesRequired. The name the connector is attached under, which is the name a page calls it by.
org_namestringThe Valet organization the site belongs to. Omit to use the organization the account joined first.
sitestringyesRequired. The site's name.

No output schema declared.

No examples provided.

get_connector_client ~161

Get how a page served from a Valet site talks to the connectors attached to it. It is the pair to get_design_system: consult that tool for how the page looks, this one for how it talks to its connectors. Call it before writing any page code that fetches from a connector. Returns the same-origin request contract and a paste-whole session helper that handles both sessionless and stateful connectors, plus the rules a page has to follow: handling a 403, recovering a lapsed session, and never caching a response on the caller's behalf. This needs no Valet account. It answers with static guidance about how pages work — nothing here reads an organization or a site — so an agent can call it before running any OAuth flow.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_design_system ~186

Get the design system to follow before you build or substantially rewrite a page. Returns the caller's organization design system when it has one, otherwise the Valet default. Call it first, then follow what it returns — apply its palette, type scale, spacing, and layout — overriding only for what the user asked for on this page. Files a user supplies finished are published unchanged, not restyled. By default this requires a connected account. Pass anonymous: true only when building an explicitly anonymous site; no organization is then consulted and the Valet default is returned.

NameTypeReqDescription
anonymousbooleanSet true only when building an explicitly anonymous site. No organization is consulted and the Valet default is returned. Omit for the account-first path.
org_namestringThe Valet organization whose design system to read. Omit to use the organization the account joined first.

No output schema declared.

No examples provided.

get_site ~152

Get one website's URL, access mode, version, and expiry. Identify it by name, which requires connecting a Valet account, or by the site_token returned when it was published anonymously. A password-protected site reports that it is gated and never its visitor password. Read the password from the Valet dashboard instead.

NameTypeReqDescription
namestringGive this or site_token. The site's name, which requires a connected Valet account.
org_namestringThe Valet organization the site belongs to. Omit to use the organization the account joined first.
site_tokenstringGive this or name. The token returned when the site was published anonymously; it identifies that one site.

No output schema declared.

No examples provided.

list_attachable_connectors ~208

List the organization connectors a website can hold — the discovery step before attach_site_connector. Only connectors a page can actually call appear: HTTP MCP servers reached over the sse or streamable-http transport. Command connectors and stdio MCP servers are excluded by definition — they run inside an agent's container and no page can reach them — so a connector the organization has that is not listed here cannot back a site. Pass site to mark which connectors that site already holds; attached connectors stay listed because attaching is idempotent. Tool schemas are not included — attach the connector, then list_site_connectors reports its live tools and their schemas, which is the moment to write the page's calls. Requires connecting a Valet account.

NameTypeReqDescription
org_namestringThe Valet organization whose connectors to list. Omit to use the organization the account joined first.
sitestringA site to mark already-attached connectors against. Omit for the plain organization-wide list.

No output schema declared.

No examples provided.

list_catalog_connectors ~261

List the connectors Valet curates — the catalog an organization creates a connector from. Reach for it when list_attachable_connectors returned nothing that serves the data a page needs: the organization has no connector for it yet, and this says whether Valet has an entry for the product and what setting it up would take. Each entry says how its credential arrives. An entry that takes a secret names each slot it asks for and what the slot is. An entry that authorizes in a browser, or connects through Composio, says so — a person completes those on the dashboard's Integrations page, and no answer here can stand in for that. Each entry also says whether a website's pages could call it. That is a marker, not a filter: an entry only an agent's container can run is still listed, because "Valet has your product, but no page can call it" is a real answer and reporting it as missing is not. Requires connecting a Valet account.

NameTypeReqDescription
org_namestringThe Valet organization a connector would be created in. The catalog is the same for every organization; this names the one the answer points the next step at. Omit to use the organization the account…

No output schema declared.

No examples provided.

list_site_connectors ~279

List the connectors attached to a website, each with the tools a page served from that site can call. Read it before writing a page that calls one: the tool names and argument schemas it returns are what the page's own calls have to match, and guessing them produces a page that fails on its first click. It lists what is attached to this one site, not what the organization has available. A connector nobody attached to this site does not appear here, and attaching one is a separate, deliberate act — it hands the connector's reach to everyone who can open the page. Each connector says whether a page can call it, and whether the server keeps an MCP session the page must hold — the page runs the initialize handshake, replays the Mcp-Session-Id header, and re-initializes when the session lapses. The broker forwards the handshake and the tool calls, and always hands the page one JSON document per request, whatever framing the server chose. A connector that could not be reached reports its own error and leaves every other row intact, so one expired credential does not hide the rest. Requires connecting a Valet account.

NameTypeReqDescription
org_namestringThe Valet organization the site belongs to. Omit to use the organization the account joined first.
sitestringyesRequired. The site's name.

No output schema declared.

No examples provided.

list_sites ~84

List the websites in a Valet organization: name, URL, access mode, and when each was last published. It is the way to recover a site's name when an earlier publish has scrolled out of the conversation. Requires connecting a Valet account.

NameTypeReqDescription
org_namestringThe Valet organization to list. Omit to use the organization the account joined first.

No output schema declared.

No examples provided.

publish_site ~608

Publish files as a live website on the public internet, served over HTTPS. Use it when a report, dashboard, document, or any answer with real layout reads better as a page than as text in the conversation. Before building or substantially rewriting a page, call get_design_system and follow what it returns. title and description are required on every publish, and a call missing either is refused: title names the site for a person, and description says in one sentence what it holds. A site's name is a hostname, so those two are what a reader has to go on wherever the site is listed. Write them for the person who will come back to this page in a month. Content is text written here: HTML, CSS, JavaScript, Markdown, JSON, SVG. Images, PDFs, video, and other binary assets are not supported on this surface — publish those with the Valet CLI. Publishing uses a connected Valet account by default and creates a permanent, private site. Pass anonymous: true only when the user explicitly wants a temporary public site. It is public to anyone who has the link, and it may be removed 36 hours after it is created, unless it is claimed. The result carries a claim URL that moves the site into a Valet account and makes it permanent, and a site_token that updates the same site on a later call. Give that token back to revise the site instead of publishing a second copy of it; with an account, give the site's name instead.

NameTypeReqDescription
anonymousbooleanSet true only when the user explicitly wants a temporary public site without account ownership. Omit for the account-first path, which connects a Valet account when needed.
descriptionstringyesRequired. One sentence saying what the site holds, for a person deciding whether to open it. It is shown beside the title wherever the site is listed.
filesarrayyesRequired. The site's files. One file named index.html is the minimum; add more for stylesheets, scripts, or further pages.
idempotency_keystringAn opaque key of your choosing. Repeating a call with the same key returns the first call's result instead of publishing a second site, which makes a retry safe.
namestringThe site's name, which becomes part of its URL. Omit to have one generated. Naming a site that already exists republishes it. Requires a connected Valet account.
org_namestringThe Valet organization to publish into. Omit to use the organization the account joined first.
site_tokenstringThe token an earlier anonymous publish returned. Give it back to update that same site instead of creating another.
titlestringyesRequired. What the site is called, written for a person: 'Q3 Migration Audit', not a hostname. It labels the site wherever it is listed, so write the same thing the page's own <title> says.

No output schema declared.

No examples provided.

rename_site ~117

Rename a website and move it to the URL derived from its new name. The old URL stops serving the site and its name becomes available to another site or app in the same organization. Requires connecting a Valet account.

NameTypeReqDescription
namestringyesRequired. The site's current name.
new_namestringyesRequired. The site's new name. It also becomes the first label of the new URL.
org_namestringThe Valet organization the site belongs to. Omit to use the organization the account joined first.

No output schema declared.

No examples provided.

set_site_access ~236

Set who can reach a website: public serves it to anyone who has the link, private serves it only to members of the organization that owns it, and password serves it to anyone who enters a shared visitor password. Requires connecting a Valet account. Password mode takes the password as the password argument. It is a shared visitor password the owner hands to whoever should see the site, not a Valet credential, and it is at most 72 bytes.

NameTypeReqDescription
modestringyesRequired. The access mode. public serves the site to anyone who has the link. private serves it only to members of the organization that owns it. password serves it to anyone who enters the shared vi…
namestringyesRequired. The site's name.
org_namestringThe Valet organization the site belongs to. Omit to use the organization the account joined first.
passwordstringThe shared visitor password. Required for password mode and rejected for the others. Anyone who enters it can open the site, so a site's owner passes it to whoever should see the page. At most 72 byt…

No output schema declared.

No examples provided.

share_site ~327

Share a website with specific people by email, whether it is private or password-protected — sharing does not change who else can reach it. Each address is mailed a link from Valet that opens the site; the recipient needs no Valet account of their own, only the link, so anyone holding the email can open the site and forwarding it forwards access. Sharing again with an address that already has access re-sends the same link rather than creating a second one. Requires connecting a Valet account.

NameTypeReqDescription
access_ttl_secondsintegerHow many seconds of access the first open starts, after which the link stops working. Omit, or pass 0, for access that never expires this way. Composes with expires_in_seconds: the unopened deadline…
emailsarrayyesRequired. The email addresses to share the site with, at most 10 at a time. Sharing again with an address that already has access re-sends the same link rather than creating a second one.
expires_in_secondsintegerHow many seconds from now the link stops working if nobody has opened it yet. Omit, or pass 0, for a link that never expires this way.
messagestringAn optional note included in the email, shown to the recipient as a quote beside the link. At most 500 characters.
namestringyesRequired. The site's name.
org_namestringThe Valet organization the site belongs to. Omit to use the organization the account joined first.

No output schema declared.

No examples provided.