Search / io.github.lonniev/tollbooth-oauth2-collector
tollbooth-oauth2-collector
R0· no sign-inUnauthenticated OAuth2 callback collector for Tollbooth MCP services
v0.2.11 · active · repository · descriptor JSON · versions
Search / io.github.lonniev/tollbooth-oauth2-collector
R0· no sign-inUnauthenticated OAuth2 callback collector for Tollbooth MCP services
v0.2.11 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"tollbooth-oauth2-collector": {
"type": "http",
"url": "https://tollbooth-oauth2-collector.fastmcp.app/mcp"
}
}
}claude mcp add --transport http tollbooth-oauth2-collector https://tollbooth-oauth2-collector.fastmcp.app/mcp[mcp_servers.tollbooth-oauth2-collector]
url = "https://tollbooth-oauth2-collector.fastmcp.app/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"tollbooth-oauth2-collector": {
"type": "remote",
"url": "https://tollbooth-oauth2-collector.fastmcp.app/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"tollbooth-oauth2-collector": {
"type": "http",
"url": "https://tollbooth-oauth2-collector.fastmcp.app/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=tollbooth-oauth2-collector&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vdG9sbGJvb3RoLW9hdXRoMi1jb2xsZWN0b3IuZmFzdG1jcC5hcHAvbWNwIn0%3D"
}{
"servers": {
"tollbooth-oauth2-collector": {
"type": "http",
"url": "https://tollbooth-oauth2-collector.fastmcp.app/mcp"
}
}
}{
"mcpServers": {
"tollbooth-oauth2-collector": {
"httpUrl": "https://tollbooth-oauth2-collector.fastmcp.app/mcp"
}
}
}extensions:
"tollbooth-oauth2-collector":
enabled: true
name: "tollbooth-oauth2-collector"
type: streamable_http
uri: "https://tollbooth-oauth2-collector.fastmcp.app/mcp"
timeout: 300
protocol.modernsupports 2026-07-28 (server/discover)protocol.statelessanswers without a sessionprotocol.transportstreamable HTTPprotocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every useauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky onestools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: store_code (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); collector_status (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); retrieve_code (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …tools.token_costabout 546 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes4 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageservice_statuschangedtitlecollector_statuschangedtitleretrieve_codechangedtitlestore_codechangedtitleFull history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +reachable +uptime-100% ~updated-56d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://tollbooth-oauth2-collector.fastmcp.app/mcp streamable-http | none | yes | 100% | 415 ms | 2026-07-28 | 2026-10-19 |
collector_status | Health check — shows the number of pending authorization codes and TTL. |
retrieve_code | Retrieve a stored authorization code (one-time read, auto-deleted). Called by the originating MCP server to pick up the code after the user has authorized in the browser. Returns the encrypted code which the caller decrypts using the same state token. |
service_status | Report the running build so a redeploy can be verified. Free. Delegates to the SDK's canonical ``build_service_status`` — the single source of the service_status payload shape — so this collector reports the same envelope as every other DPYC service. The load-bearing field is ``build_info.fastmcp_cloud_git_commit_sha``: the commit Horizon actually deployed. The post-merge deploy-verify probe reads it to confirm the live service redeployed the merged sha; with no ``service_status`` tool to probe, that sha reads as ``<none>`` and an otherwise-healthy deploy is flagged as "did not land". The vault/courier/operator fields are ``False``/empty by construction — this is an unauthenticated community utility with no operator runtime. |
store_code | Store a sealed OAuth2 authorization code. Called by the serverless callback function after the browser redirect. The ``state`` carries BOTH the patron npub (the lookup/retrieve key) and the operator npub (the PUBLIC key the code is sealed to) — see the SDK's ``pack_oauth_state``. The code is sealed with NIP-44 to the operator so only that operator's nsec can open it; the Neon row is keyed by the patron npub, so retrieval (``retrieve_code(state=patron_npub)``) is unchanged. |
Schemas: list_tools.
And 9 more from this publisher.
{
"name": "io.github.lonniev/tollbooth-oauth2-collector",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://tollbooth-oauth2-collector.fastmcp.app/mcp",
"type": "streamable-http"
}
],
"version": "0.2.11",
"repository": {
"url": "https://github.com/lonniev/tollbooth-oauth2-collector",
"source": "github"
},
"description": "Unauthenticated OAuth2 callback collector for Tollbooth MCP services"
}