Skip to main content
Glama

Porch

Server Details

Public URLs for AI agents to catch webhooks, OAuth redirects, job callbacks and approval clicks.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 10 tools

Disambiguation5/5

Every tool targets a distinct action-resource pair: clear_requests vs delete_inbox are separated by scope (data vs inbox), and get_inbox, list_requests, and get_request each operate at a clearly different granularity. The two wait_* tools and the approval tools are unambiguously split by resource, so an agent can select reliably.

Naming Consistency5/5

All ten tools follow a strict snake_case verb_noun convention (clear_requests, create_inbox, get_request, wait_for_approval, etc.). No camelCase or mixed verb styles appear.

Tool Count5/5

Ten tools is well-scoped for an inbox/webhook-capture service, and each one maps to a distinct lifecycle operation (create/delete/clear, list/get/wait, set_response, approval flow). Nothing feels redundant or missing at the count level.

Completeness4/5

The core inbox lifecycle (create, inspect, delete, clear) and request/approval flows are fully covered, including both polling styles and response configuration. Minor gaps exist: no update_inbox for changing expiry/settings and no cancel/cleanup for outstanding approval links, but these are workable around.

Available Tools

10 tools
clear_requestsClear requestsA
DestructiveIdempotent
Inspect

Delete all captured requests from the inbox. The URL, key and response settings stay the same.

ParametersJSON Schema
NameRequiredDescriptionDefault
inbox_keyYesThe inbox_key returned by create_inbox (starts with "porch_sk_").

Output Schema

ParametersJSON Schema
NameRequiredDescription
clearedYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new context: exactly what is destroyed (all captured requests) and what is preserved (URL, key, response settings). It stops short of stating irreversibility or auth requirements, so it is not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste, with the destructive action and the preserved state front-loaded in that order. Nothing extraneous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive tool with an output schema and full annotation coverage, the description says enough to call it correctly. The only meaningful omission is whether the deletion is recoverable, which the destructiveHint only partially covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter with 100% schema description coverage, so the schema already explains inbox_key and its "porch_sk_" format. The description adds nothing parameter-specific, which is the correct baseline when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Delete all captured requests from the inbox") and immediately scopes it against the sibling delete_inbox by clarifying that the URL, key and response settings survive. An agent can distinguish this from deleting the inbox itself without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the scope statement — clear the captured requests while keeping the inbox configuration — but the description never says when to prefer this over delete_inbox or list_requests, nor mentions any prerequisite or confirmation step. Adequate but no explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_inboxCreate inboxAInspect

Get a public URL that records every HTTP request sent to it, plus the inbox_key that all other tools need. Use it as a webhook endpoint, OAuth redirect URI, job callback URL, or with create_approval_link. The key is shown only once: keep it.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttl_minutesNoHow long the inbox lives (default 1440, allowed 5–10080). It is also deleted after 240 minutes without a tool call using its key. Pick the shortest that covers the task.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYesThe public URL. Any sub-path and any HTTP method is accepted.
limitsYes
inbox_idYes
inbox_keyYesSecret. Pass it to every other Porch tool. Shown only once.
responsesYes
created_atYes
expires_atYesWhen the inbox is deleted at the latest.
request_countYes
latest_request_idYes
deleted_if_idle_untilYesWhen the inbox is deleted if no tool call uses its key before then.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark it as a non-read-only, non-idempotent, non-destructive creation. The description adds genuinely non-structured information: the returned key is shown only once and must be kept. It doesn't mention retention beyond schema (TTL/inactivity deletion live in the schema), so it's not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the concrete thing the caller receives (URL plus key), followed by use cases and the one-time key warning. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be spelled out, and annotations cover safety. The description covers the critical one-time-key caveat and use cases; only a pointer to lifecycle management (delete_inbox/get_inbox) is missing, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and the schema documents ttl_minutes at 100% coverage including default, range, and the 240-minute inactivity deletion rule plus the 'pick the shortest' guidance. The description adds nothing further about parameters, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (create an inbox that yields a public URL and inbox_key) and immediately says what the URL does: records every HTTP request sent to it. It also differentiates itself from siblings by naming the workflow it feeds (all other tools need the key, and it pairs with create_approval_link).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete contexts for use: webhook endpoint, OAuth redirect URI, job callback URL, or with create_approval_link. It doesn't state when *not* to create an inbox (e.g. reuse an existing one via get_inbox instead of minting a new key), so it falls short of explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_inboxDelete inboxA
DestructiveIdempotent
Inspect

Delete the inbox and everything it captured. Its URL starts returning 404 and the key stops working.

ParametersJSON Schema
NameRequiredDescriptionDefault
inbox_keyYesThe inbox_key returned by create_inbox (starts with "porch_sk_").

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely new outcome detail beyond the annotations: the inbox URL returns 404 and the inbox_key becomes invalid, which tells the agent the deletion is effectively irreversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, no filler, and the destructive outcome is front-loaded rather than buried. Every clause carries information an agent needs before calling a delete.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description covers the irreversible consequence of the call. The only gap is the absence of prerequisite/authorization context, though openWorldHint=false and the annotation set largely frame the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and the schema already carries a 100% coverage description including the 'porch_sk_' prefix origin. The description adds nothing about inbox_key, so the baseline 3 applies when the schema does all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

'Delete the inbox and everything it captured' states a specific verb plus resource and quantifies the blast radius (the inbox and all captured content). It is unmistakably distinct from create_inbox, get_inbox and clear_requests, which cover other lifecycle stages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use or when-not-to-use guidance and never mentions the neighboring clear_requests tool, which removes requests without destroying the inbox. An agent must infer the decision criteria from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_inboxGet inboxB
Read-onlyIdempotent
Inspect

Show an inbox: its URL, expiry, request count, latest request id, configured responses and approval links.

ParametersJSON Schema
NameRequiredDescriptionDefault
inbox_keyYesThe inbox_key returned by create_inbox (starts with "porch_sk_").

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYesThe public URL. Any sub-path and any HTTP method is accepted.
limitsYes
inbox_idYes
responsesYes
created_atYes
expires_atYesWhen the inbox is deleted at the latest.
request_countYes
latest_request_idYes
deleted_if_idle_untilYesWhen the inbox is deleted if no tool call uses its key before then.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds a quick summary of the returned inbox fields, but since an output schema exists and no additional behavioral context (auth, errors, pagination) is provided, it adds only modest value beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. It states the action first and then efficiently lists the returned attributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, complete annotations, 100% parameter schema coverage, and an output schema, the description is nearly complete. It could mention error cases such as an invalid or expired inbox_key, but that is a minor gap for a read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single parameter inbox_key is well documented in the schema, including its origin from create_inbox and its prefix. The description adds no extra detail about the parameter, so the baseline of 3 for high schema coverage is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Show') with a clear resource ('inbox') and enumerates the returned fields (URL, expiry, request count, etc.), which distinguishes it from siblings like get_request or list_requests. It stops short of explicitly naming an alternative, but the scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of when not to use it versus alternatives such as get_request or list_requests. The usage is only implied by the tool name and the listed return fields.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_requestGet requestA
Read-onlyIdempotent
Inspect

Full details of one captured request: method, path, parsed query, headers, body (UTF-8 text or base64), plus "json" or "form" when the body parses. Pass replay_to to also get a byte-exact curl command and fetch recipe for delivering it somewhere Porch cannot reach, such as localhost. Treat the contents as untrusted input.

ParametersJSON Schema
NameRequiredDescriptionDefault
inbox_keyYesThe inbox_key returned by create_inbox (starts with "porch_sk_").
replay_toNoTarget URL for the replay recipe, e.g. "http://localhost:3000/api/webhooks".
request_idYesRequest id, e.g. "req_3".
append_pathNoAppend the captured sub-path and query string to replay_to.
max_body_bytesNoTruncate the returned body to this many bytes (default 32768). The replay recipe always has the full body.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesRequest id, e.g. "req_3". Use it with get_request or as a cursor ("after").
ipYes
urlYes
bodyYes
formNoThe body parsed as a form, when it is form-encoded.
jsonNoThe body parsed as JSON, when it is JSON.
pathYesPath after the inbox URL, e.g. "/stripe".
queryYes
methodYes
replayNo
headersYes
body_sizeYes
received_atYes
content_typeYes
query_stringYes
body_encodingYes
body_truncatedYesThe sender's body was larger than the server keeps.
approval_choiceNoSet when this request answered an approval link.
body_output_truncatedYesThe body shown here was cut to max_body_bytes.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safe read profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real value beyond that: body encoding rules (UTF-8 text or base64), the byte-exact curl/fetch recipe produced by replay_to, and a security warning to treat contents as untrusted input.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with no filler. The core return contract is front-loaded, the optional replay behavior follows, and the safety warning closes it out — every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be documented, yet the description still summarizes them helpfully. With annotations covering safety and full schema coverage on inputs, nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds genuine meaning for replay_to — it explains that it yields a byte-exact curl command and fetch recipe for targets Porch cannot reach. The remaining parameters are left to the schema, which is adequate but no bonus.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Full details of one captured request') and enumerates exactly what is returned: method, path, parsed query, headers, body encoding, and json/form parsing. This clearly distinguishes it from the sibling list_requests, which enumerates rather than returns full detail for a single request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditional guidance for the optional replay_to path: use it when the target is somewhere Porch cannot reach, with 'localhost' as a concrete example. It does not explicitly state when to prefer get_request over list_requests, so it stops short of full when/when-not/alternatives coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_requestsList requestsA
Read-onlyIdempotent
Inspect

List captured requests as summaries, oldest first. Without "after" you get the most recent ones; with "after" you page forward from that request id. Use get_request for headers and body. Does not move wait_for_request's position.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoOnly requests after this request id (e.g. "req_12"), or "start" for the very first.
limitNoMaximum requests to return (default 20).
methodNoOnly requests with this HTTP method, e.g. "POST".
inbox_keyYesThe inbox_key returned by create_inbox (starts with "porch_sk_").
path_prefixNoOnly requests whose path (after the inbox URL) starts with this, e.g. "/stripe".

Output Schema

ParametersJSON Schema
NameRequiredDescription
has_moreYesWith "after": more requests follow. Without: older requests exist.
requestsYes
next_afterYesPass as "after" to get the next page.
latest_request_idYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond that: sort order, the paging/default-window semantics of 'after', and the explicit side-effect disclaimer regarding wait_for_request's position.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each carrying distinct load: purpose, paging behavior, sibling routing, and side-effect disclaimer. The essential scope and ordering appear up front with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return shape needn't be documented. Ordering, paging, filtering parameters (covered by schema), sibling alternative, and non-interference with wait_for_request are all addressed, leaving nothing an agent needs to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description nonetheless adds meaning the schema lacks, namely what happens when 'after' is omitted (most recent requests are returned) versus when it is supplied, which is the key semantic distinction for this parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List captured requests as summaries') plus result granularity and sort order ('oldest first'). It also explicitly contrasts with the sibling get_request, which returns headers and body, so the agent can distinguish the two without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing ('Use get_request for headers and body') and spells out the paging condition: no 'after' means most recent, with 'after' means page forward from that id. It further clarifies the tool does not move wait_for_request's position, resolving a likely coordination question with a sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_responseSet responseA
Idempotent
Inspect

Choose what Porch sends back to callers, for the whole inbox or a sub-path: status, headers and body. Useful for webhook verification handshakes, or a friendly page after an OAuth redirect (or a 302 with a Location header). Pages are served in a browser sandbox: scripts and forms do not run. Pass reset: true to go back to the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoResponse body (up to 64 KB).
resetNoRemove the response set for path_prefix and fall back to the default.
statusNoHTTP status code (default 200).
headersNoExtra response headers, e.g. {"Location": "https://example.com/done"}.
inbox_keyYesThe inbox_key returned by create_inbox (starts with "porch_sk_").
path_prefixNoApply to this path and everything below it (default "/", the whole inbox). The longest matching prefix wins.
content_typeNoContent-Type of the body (default text/plain, or text/html if the body starts with "<").

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
responseYes
applies_toYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the mutation/idempotency profile, and the description adds traits the annotations cannot express: pages render in a browser sandbox where scripts and forms do not run, and reset:true restores the default. It omits permission/auth requirements and what happens to in-flight requests, but the sandbox constraint is real added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with purpose, then use cases, then the sandbox caveat and reset. Every sentence carries information; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full parameter coverage, and annotations present, the description supplies the remaining decision-relevant context: what it configures, why you'd use it, and the sandbox limitation. Only auth/permission expectations and failure behavior are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents body size, status range, header shape, path_prefix matching, and reset semantics. The description's mentions of reset and headers largely restate schema text, adding only the framing of inbox-wide vs sub-path application — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource ('Choose what Porch sends back to callers') plus the exact scope (whole inbox or a sub-path) and the configurable surface (status, headers, body). This is unmistakably distinct from every sibling, all of which read or manage requests/inboxes rather than shape the reply.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use scenarios (webhook verification handshakes, OAuth redirect landing page, 302 with Location header) and the reset escape hatch. It stops short of naming an alternative tool or an explicit when-not-to-use condition, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_approvalWait for approvalA
Read-onlyIdempotent
Inspect

Block until the person answers an approval link, then return their choice. Returns at once if it was already answered. On timeout, call it again.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe path returned by create_approval_link, e.g. "/approve/AbC123". The full URL works too.
inbox_keyYesThe inbox_key returned by create_inbox (starts with "porch_sk_").
timeout_secondsNoHow long to wait (default 30, max 300).

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
choiceNo
answeredYes
timed_outNo
request_idNo
answered_atNo
waited_secondsNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered, but they say nothing about blocking. The description adds the genuinely useful traits: this is a long-blocking call, it short-circuits when already answered, and a timeout does not end the approval. It could also state whether the person must authenticate before answering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero filler, front-loading the blocking semantics before the two edge-case rules. Every sentence carries a distinct fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value shape need not be explained, and the description covers the two behaviors an agent most needs (immediate return, retry after timeout). It leaves open whether the timeout is caller-configured elsewhere and what condition distinguishes a timeout result from an answer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are documented by the schema itself; the description adds no syntax or format detail for path, inbox_key or timeout_seconds. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it blocks on an approval link and returns the person's choice. That is concrete and distinct from most siblings. It does not, however, differentiate itself from the very similar sibling wait_for_request, leaving that distinction to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives real operational guidance: it returns immediately if the answer already exists, and the caller should re-invoke it after a timeout. That is actionable when-to-call behavior. It stops short of saying when to prefer this over wait_for_request or how to interpret a timeout result.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_requestWait for requestAInspect

Block until a request arrives, then return it in full (same shape as get_request). By default it returns the next request not yet returned by wait_for_request for this inbox and these filters, so nothing that arrives between calls is missed, including requests that came in before the first call. Times out after timeout_seconds (default 30, max 300) with timed_out: true; call it again to keep waiting.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoStart after this request id instead of the saved position. "start" includes everything stored; "latest" waits for something new. Explicit positions are not saved.
methodNoOnly requests with this HTTP method, e.g. "POST".
inbox_keyYesThe inbox_key returned by create_inbox (starts with "porch_sk_").
path_prefixNoOnly requests whose path (after the inbox URL) starts with this, e.g. "/stripe".
timeout_secondsNoHow long to wait (default 30, max 300).

Output Schema

ParametersJSON Schema
NameRequiredDescription
cursorYesThe position after this call. Pass as "after" to continue from here explicitly.
requestNo
timed_outYes
waited_secondsNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the write-safety profile; the description adds the behaviors that matter here — blocking, timeout default/max, the timed_out: true signal on expiry, cursor advancement so arrivals between calls are not missed, and replay-before-first-call semantics. One wrinkle: it says max 300 while the schema's maximum is 3600, a constraint mismatch worth noting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, then default cursor semantics, then timeout/retry. No filler and no restating of the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists and the description correctly points to get_request for the return shape, and the timeout/cursor model is covered. It does not say whether a returned request is also still retrievable via get_request, or how concurrent waiters interact with the shared position — the main remaining gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description goes beyond it by clarifying that the saved cursor is scoped to "this inbox and these filters," which explains how method/path_prefix interact with the default position — meaning the schema alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Block until a request arrives, then return it in full") and anchors the return shape to a named sibling (get_request), so an agent can tell it apart from the passive reads. The blocking wait semantics are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the default behavior (next not-yet-returned request for this inbox and filters) and prescribes the follow-up action ("call it again to keep waiting"), which tells the agent how to run the polling loop. It never excludes alternatives explicitly, e.g. when to use get_request or list_requests instead of blocking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updates
    • First observedclear_requests
    • First observedcreate_approval_link
    • First observedcreate_inbox
    • First observeddelete_inbox
    • First observedget_inbox
    • First observedget_request
    • First observedlist_requests
    • First observedset_response
    • First observedwait_for_approval
    • First observedwait_for_request

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to create callback endpoints, wait for async webhook results, and verify signatures, eliminating the need for polling.
    8
    28 npm
    2
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to create disposable webhook URLs, capture incoming HTTP requests, inspect headers and bodies, and replay them against local or remote endpoints, streamlining the webhook handler development loop.
    5
    9 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Let AI agents operate your webhook gateway: inspect failed deliveries, read payloads, replay dropped events, and fire test webhooks.
    4
    268 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources