tollbooth-oauth2-collector
Server Details
Unauthenticated OAuth2 callback collector for Tollbooth MCP services
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- lonniev/tollbooth-oauth2-collector
- GitHub Stars
- 0
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.3/5 across 4 of 4 tools scored. Lowest: 3.5/5.
store_code and retrieve_code are an obvious complementary pair, and the two status tools target different concerns: pending authorization codes versus deployed build information. The shared _status suffix could cause a quick misread, but the descriptions make the boundaries clear.
store_code and retrieve_code follow a clear verb_noun pattern, while collector_status and service_status are noun phrases. Each subgroup is internally consistent, but the server as a whole mixes two naming conventions, so the next tool name is not fully predictable.
Four tools is well-scoped for this utility: the store/retrieve pair handles the OAuth2 flow, collector_status covers operational health, and service_status supports deployment verification. Each tool has a distinct job without bloat.
The core OAuth2 code lifecycle is covered end-to-end: codes can be stored, consumed once, and monitored via collector_status. Auto-deletion on retrieval and TTL-based expiry make an explicit delete tool unnecessary, and service_status fills the deploy-verification concern.
Available Tools
4 toolscollector_statusAInspect
Health check — shows the number of pending authorization codes and TTL.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It states what the tool shows but does not explicitly disclose read-only behavior, potential side effects, cost, or what TTL specifically refers to. The term 'health check' weakly implies safety, but the disclosure is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately identifies the tool as a health check and names the two key outputs. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, an output schema, and a simple health-check purpose, the description names the essential pieces (pending authorization codes and TTL). It is mostly complete, though it could benefit from clarifying TTL and differentiating from 'service_status'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly avoids parameter-related details since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('shows') and a specific resource ('pending authorization codes and TTL'), making the tool's purpose clear. It does not explicitly distinguish itself from the sibling 'service_status', but the named metrics set it apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Health check' implies a usage context, but there is no explicit guidance on when to prefer this over 'service_status' or other alternatives. The description provides a general idea but lacks when-to-use/when-not-to-use direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_codeAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | The state token (patron npub) used during authorization. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the critical side effect ('one-time read, auto-deleted'), the return shape ('encrypted code'), and the decryption mechanism using the state token. This is strong behavioral disclosure for a simple retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no filler. The key behavioral qualifier is front-loaded in parentheses, and the context sentence adds necessary protocol detail without repeating the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with an output schema present, the description covers purpose, invocation timing, return value, and destructive one-time behavior. It is nearly complete; it omits only minor details such as error cases or what happens when the state token is invalid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the 'state' parameter. The description adds marginal value by noting the caller uses 'the same state token' for decryption, but it does not need to compensate for any schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource — 'Retrieve a stored authorization code' — and adds a defining behavioral qualifier ('one-time read, auto-deleted'). It clearly differentiates this tool from the sibling status tools and from store_code, making its role unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: 'Called by the originating MCP server to pick up the code after the user has authorized in the browser.' This tells an agent when the tool is appropriate. It does not explicitly name alternatives or exclusion conditions, but the context is sufficient for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_statusAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it delegates to the SDK's canonical implementation, reports the same envelope as other DPYC services, and explicitly states that vault/courier/operator fields are False/empty because this is an unauthenticated community utility with no operator runtime. It also explains the semantic importance of the build_info field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured, with the first sentence front-loading the purpose. The subsequent paragraphs add necessary context about deployment verification, the canonical envelope, and unauthenticated field behavior. It is slightly verbose for a zero-param tool, but each sentence earns its place by conveying meaningful details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description is comprehensive: it explains the tool's raison d'être (deploy verification), the canonical payload shape, the critical field's meaning, and the security context. It does not need to describe return values since an output schema exists, but it adds crucial context that schema alone cannot.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description need not explain parameter semantics. The baseline for 0 params is 4, and the description appropriately focuses on output/payload meaning rather than input. It adds value by clarifying the load-bearing field, but this is output context, not parameter concerns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Report the running build so a redeploy can be verified.' It clearly states the core function and distinguishes the tool from siblings by describing it as the canonical, single-source service_status payload, which is useful for deploy verification rather than just generic status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: to probe the live service after a merge and confirm the deployed Git SHA. It warns that without this tool, deploy verification fails because the SHA reads as '<none>'. It does not explicitly mention alternatives (e.g., collector_status) or exclusions, but the context strongly implies when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
store_codeAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The authorization code from the OAuth provider. | |
| state | Yes | The packed state (``patron_npub.operator_npub``). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does substantial work: it reveals the NIP-44 sealing to the operator, that only the operator's nsec can open it, and that the Neon row is keyed by the patron npub. It does not address overwrite/idempotency or error behavior, but the cryptographic and keying behavior is clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action, then adds context in a short, information-dense paragraph. Every sentence contributes: invocation context, state semantics, sealing behavior, and retrieval compatibility. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter store operation, the description covers everything an agent needs: when it runs, how state is structured, what sealing means, and how the row is keyed. The output schema exists to cover return shape, so the absence of return details is not a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so baseline is 3. The description adds real meaning beyond the schema: it explains that state encodes both patron and operator npub, that the patron is the lookup key, and that the code is sealed to the operator. This helps the agent construct state correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and object: 'Store a sealed OAuth2 authorization code.' It goes beyond the name, and the clarification that retrieval is handled by retrieve_code(state=patron_npub) differentiates it from the sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the exact call-site context: 'Called by the serverless callback function after the browser redirect.' It also contrasts with the counterpart retrieve_code, making when-to-store vs when-to-retrieve unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAuthenticating reverse proxy for MCP servers providing credential isolation, OAuth2 token management, and composite tool aggregation.BSD Zero Clause
- AlicenseNot gradedqualityCmaintenanceOAuth MCP server providing thin edge adapter access to the tickward public API via REST endpoints.AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceSecure MCP protocol proxy with OAuth2 + Dynamic Client Registration (DCR), JWT auth, RBAC, rate limiting, multi-server aggregation, and a monitoring/admin dashboard.11MIT
- FlicenseNot gradedqualityDmaintenanceA simple MCP server with OAuth 2.0 authentication for testing OAuth support in mcp-cli.