Ask a company through its Concierge Agent Protocol front door.
Two packages for calling a CAP front door. @conciergeprotocol/client is the library. @conciergeprotocol/mcp is that library behind three tools, so Claude, Cursor, and other MCP hosts can ask a company.
The protocol is at conciergeprotocol.org. These packages only call a front door. A company publishes agent.txt. It does not publish an MCP server.
npm install @conciergeprotocol/client
The MCP server is a command. Install it, or run it with npx as in the block below.
npm install @conciergeprotocol/mcp
import { createClient } from '@conciergeprotocol/client'
const cap = createClient({ from: 'agent:my-assistant' })
const answer = await cap.ask('cosmicjs.com', 'Do you have a free plan?')
console.log(answer.reply)
A follow-up sends only the new question:
const thread = cap.thread('cosmicjs.com')
await thread.ask('What is Cosmic?')
const price = await thread.ask('How much is the cheapest paid plan?')
discover returns null when a site has no front door. ask throws NoDoorError for the same case, which is the signal to browse the site instead.
ask waits up to two minutes. If the company is still answering, the message comes back with status: 'working' and no reply. get reads it again.
Account questions use login. The client opens the company's page, and finishLogin stores the token for the next ask. The token stays in the token store you pass to createClient.
Cursor, Claude Desktop, and VS Code use the same block. In VS Code it goes in .vscode/mcp.json. In Cursor and Claude Desktop it goes in the MCP settings file.
{
"mcpServers": {
"cap": {
"command": "npx",
"args": ["-y", "@conciergeprotocol/mcp"],
"env": { "CAP_FROM": "agent:my-assistant" }
}
}
}
CAP_FROM defaults to agent:cap-mcp. The tools are cap_discover, cap_ask, and cap_check. The server is listed in the MCP registry as io.github.conciergeprotocol/mcp. cap_ask waits 60 seconds. If the company is still answering, it returns the message id and the model calls cap_check instead of guessing.
Same flow as the Cosmic packages. Add a changeset, then merge to main:
bun run changeset
Package Checks runs on every push. When it passes on main, the publish workflow opens a version pull request, or publishes both packages and tags the release. The two packages stay on one version. When the npm publish succeeds, the same workflow lists the server in the MCP registry. The repository needs an NPM_TOKEN secret.
Apache 2.0
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @conciergeprotocol/mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-conciergeprotocol-mcp": {
"command": "npx",
"args": [
"-y",
"@conciergeprotocol/mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceConcierge Agent Protocol works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.