Connect Mcphost and your agent gets 47 tools, among them billing.checkout, billing.plans, billing.status. It answers at https://mcphost.dev/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 10 September 2026; the last check, on 19 October 2026, succeeded.
Hosted MCP runtime where your agent publishes its own tools by tool call and keeps working.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
billing.checkout | Create (or reuse an open one for the same plan) a Stripe Checkout URL to upgrade this tenant, defaulting to the pro plan. Returns billing_unavailable if this host has no Stripe key configured -- call billing.plans first to check. Inputs: plan, tenant_key |
billing.plans | The plan catalog (price and quotas per plan) and whether Stripe billing is configured on this host. Anonymous callers get the same answer as tenants. Inputs: tenant_key |
billing.status | This tenant's plan, usage against each quota, and when the daily call quota resets. Inputs: tenant_key |
host.bridge_test | Dry-run an unpublished http spec against its real upstream; for the other cases see host.quickstart. Inputs: args, spec, tenant_key |
host.catalog.get | Return one public tool's descriptor and args_schema by its full name (<namespace>.<name>). Inputs: full_name, tenant_key |
host.catalog.search | Search public tools across every tenant by name/description substring. Inputs: limit, q, tenant_key |
host.group.add | Add a tenant (by namespace) to a group this tenant owns. Inputs: name, namespace, tenant_key |
host.group.create | Create a named group this tenant owns, for host.tool_share(visibility: "group"). Inputs: name, tenant_key |
host.group.list | List the groups this tenant owns and their members. Inputs: tenant_key |
host.group.remove | Remove a tenant (by namespace) from a group this tenant owns. Inputs: name, namespace, tenant_key |
host.quickstart | Return the shortest ordered sequence of calls to a working tool of `kind`, with your namespace and a filled-in example already substituted in, plus the current limits and a try_before_call table naming the one dry-run tool for each case. Re Inputs: kind, tenant_key |
host.registry_publish | Publish this tenant's server.json to the configured MCP registry (requires --registry-url and admin.tenant_verify_namespace first). Inputs: tenant_key |
host.runs.cancel | Stop a queued or running job: its sandbox process is killed within ~2s and the run reads cancelled. A run that already finished fails with run_not_cancellable. Inputs: run_id, tenant_key |
host.runs.get | Read one run's status, progress and (once done) result by id -- the same run a host.tool_call(..., async=true) or a scheduled/triggered execution created. Inputs: run_id, tenant_key |
host.runs.list | List this tenant's recent runs, newest first, optionally filtered by tool, status (queued|running|done|error|timeout|cancelled) or trigger (call|job|schedule|event|chain). Inputs: limit, status, tenant_key, tool, trigger |
host.runs.purge | Delete the stored results of every done run finished at or before before_unix; each then reads done with result: null, purged: true. Frees state_bytes_max quota the results were counted against. Inputs: before_unix, tenant_key |
host.runs.wait | Long-poll one run until it finalizes or timeout_s elapses (max 25s), returning its current status either way -- for a client with no polling loop of its own. Inputs: run_id, tenant_key, timeout_s |
host.secret_list | List this tenant's secret names (never their values). Inputs: tenant_key |
host.secret_set | Store an encrypted secret value under this tenant's namespace. Inputs: name, tenant_key, value |
host.state.delete | Delete one key from this tenant's key-value state namespace. Inputs: key, tenant_key |
host.state.delete_rows | Delete rows from a declared table matching an optional where filter (same grammar as host.state.query); omitting where deletes every row in the table. Inputs: table, tenant_key, where |
host.state.get | Read one key from this tenant's key-value state namespace. Returns found: false (not an error) if the key was never set. Inputs: key, tenant_key |
host.state.insert | Insert one row (an object) or several (an array of objects) into a declared table. Each row is validated against the table's schema first -- a type mismatch fails the whole call with state_schema_violation and writes nothing. Inputs: rows, table, tenant_key |
host.state.list | List keys (with their current values) in this tenant's key-value state namespace, optionally filtered by prefix. Inputs: limit, prefix, tenant_key |
host.state.query | Read rows from a declared table, optionally filtered (where: "field op value", ops = != < <= > >=, clauses joined by ' and '), ordered (order_by: "field" or "field desc") and capped (limit). Inputs: limit, order_by, table, tenant_key, where |
host.state.set | Write one key in this tenant's key-value state namespace; value may be any JSON value. Overrun of the plan's state_bytes_max quota fails with state_quota_exceeded and writes nothing. Inputs: key, tenant_key, value |
host.state.table_create | Declare (or replace the schema of) a table in this tenant's state store. schema is {"column": "text"|"integer"|"real"|"boolean"|"json"}; primary_key, if given, must name one of schema's columns -- an insert whose row matches an existing row Inputs: name, primary_key, schema, tenant_key |
host.state.table_drop | Drop a declared table and every row it holds. Inputs: name, tenant_key |
host.tool_call | Invoke a tool this tenant has already published, by its local name -- the same real, metered call as calling it directly by its namespaced name (<namespace>.<name>), for a session that has no way to see its own namespaced tool name yet. Unl Inputs: args, async, name, tenant_key |
host.tool_list | List this tenant's published tools. Inputs: tenant_key |
host.tool_logs | Return the most recent log lines for one of this tenant's tools. Inputs: limit, name, tenant_key |
host.tool_publish | Publish a tool of a registered kind (chain, echo, http, python) under this tenant's namespace. Call host.quickstart(kind) first for a filled-in example spec and the full publish-to-call sequence. Name must match ^[a-z][a-z0-9_]{1,40}$; a re Inputs: kind, name, spec, tenant_key |
host.tool_remove | Remove a published tool by its local name. Inputs: name, tenant_key |
host.tool_run | Debug-run a published python tool for stdout, stderr and exit code; for the other cases see host.quickstart. Inputs: args, name, tenant_key |
host.tool_share | Share one of this tenant's published tools with everyone (visibility: "public") or with a named group this tenant owns (visibility: "group", group: <name>). The tool keeps running in this tenant's own sandbox with this tenant's own secrets; Inputs: description, group, name, tenant_key, visibility |
host.tool_test | Dry-run an already-published tool by name, no calls row written; for the other cases see host.quickstart. Inputs: args, name, tenant_key |
host.tool_unshare | Take a shared tool back to private. Inputs: name, tenant_key |
host.trigger.fire | Run a schedule once right now, for testing -- recorded as trigger: "schedule" with manual: true, independent of next_unix or pause state. Inputs: id, tenant_key |
host.trigger.get | Read one trigger's current schedule, next_unix, last_run_id and last_status. Inputs: id, tenant_key |
host.trigger.list | List this tenant's triggers (optionally filtered by tool), each with next_unix, last_run_id and last_status. Inputs: tenant_key, tool |
host.trigger.pause, host.trigger.remove, host.trigger.resume, host.trigger.set, host.usage, host.whoami, signup
Every block below points at https://mcphost.dev/mcp. Pick your client and copy.
claude mcp add --transport http mcphost https://mcphost.dev/mcp
{
"mcpServers": {
"mcphost": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcphost.dev/mcp"]
}
}
}{
"mcpServers": {
"mcphost": {
"url": "https://mcphost.dev/mcp"
}
}
}{
"servers": {
"mcphost": {
"type": "http",
"url": "https://mcphost.dev/mcp"
}
}
}{
"context_servers": {
"mcphost": {
"url": "https://mcphost.dev/mcp"
}
}
}{
"mcpServers": {
"mcphost": {
"serverUrl": "https://mcphost.dev/mcp"
}
}
}{
"mcpServers": {
"mcphost": {
"url": "https://mcphost.dev/mcp"
}
}
}name: Mcphost
version: 0.0.1
schema: v1
mcpServers:
- name: Mcphost
type: streamable-http
url: https://mcphost.dev/mcp{
"mcpServers": {
"mcphost": {
"httpUrl": "https://mcphost.dev/mcp"
}
}
}{
"mcpServers": {
"mcphost": {
"type": "http",
"url": "https://mcphost.dev/mcp"
}
}
}{
"mcpServers": {
"mcphost": {
"url": "https://mcphost.dev/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fmcphost.dev%2Fmcp&type=streamable_http&id=mcphost&name=Mcphost
It answered our last check on 19 October 2026 in 96 ms. Over 6 checks since 10 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by mcphost.dev and served from mcphost.dev, the vendor's own domain: https://mcphost.dev/mcp.
47, as returned by the server's own tools/list on 11 September 2026: billing.checkout, billing.plans, billing.status, host.bridge_test, host.catalog.get, host.catalog.search, host.group.add, host.group.create, and 39 more.
It answered our last check on 19 October 2026 in 96 ms. Over 6 checks since 10 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://mcphost.dev/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: dev.mcphost. Endpoint host: mcphost.dev. ARD identifier: urn:air:dev.mcphost:mcp:mcphost.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.