manus_webhook_public_key
Retrieve the RSA public key for verifying webhook signatures. Cache the key to authenticate incoming webhook deliveries.
Instructions
Get the RSA public key used to sign webhook deliveries. Cache this (1 hour recommended).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- manus_mcp/tools/webhooks.py:68-82 (handler)Handler function for the manus_webhook_public_key tool. Calls the GET /v2/webhook.publicKey endpoint to retrieve the RSA public key used to verify webhook delivery signatures.
@manus_tool( name="manus_webhook_public_key", description=( "Get the RSA public key used to sign webhook deliveries. Cache this (1 hour recommended)." ), input_schema=WebhookPublicKeyQuery, output_schema=WebhookPublicKeyResponse, ) async def webhook_public_key(q: WebhookPublicKeyQuery, ctx: ToolCtx) -> WebhookPublicKeyResponse: return await ctx.client.call( "GET", "/v2/webhook.publicKey", response_model=WebhookPublicKeyResponse, rate_limit_key="webhook.publicKey", ) - manus_mcp/schemas/webhooks.py:46-47 (schema)Input schema for the webhook public key query — no parameters needed.
class WebhookPublicKeyQuery(ManusModel): pass - manus_mcp/schemas/webhooks.py:50-52 (schema)Output schema containing the RSA public_key string and optional algorithm field.
class WebhookPublicKeyResponse(ResponseEnvelope): public_key: str algorithm: str | None = None - manus_mcp/tools/webhooks.py:68-69 (registration)Registration of the tool via the @manus_tool decorator in manus_mcp/tools/webhooks.py (same location as the handler). The decorator stores a ToolDef entry in the global registry.
@manus_tool( name="manus_webhook_public_key", - manus_mcp/tools/registry.py:42-80 (helper)The manus_tool decorator/helper function used to register the tool into the global _REGISTRY dict.
def manus_tool( *, name: str, description: str, input_schema: type[TIn], output_schema: type[TOut], rate_limit_key: str | None = None, ) -> Callable[ [Callable[[TIn, ToolCtx], Awaitable[TOut]]], Callable[[TIn, ToolCtx], Awaitable[TOut]] ]: """Decorator registering `handler` as a tool with the given metadata.""" def wrap( handler: Callable[[TIn, ToolCtx], Awaitable[TOut]], ) -> Callable[[TIn, ToolCtx], Awaitable[TOut]]: if name in _REGISTRY: raise RuntimeError(f"Duplicate tool name: {name}") _REGISTRY[name] = ToolDef( name=name, description=description, input_schema=input_schema, output_schema=output_schema, handler=handler, rate_limit_key=rate_limit_key, ) return handler return wrap def all_tools() -> list[ToolDef[Any, Any]]: """Return a stable-ordered copy of every registered tool.""" return sorted(_REGISTRY.values(), key=lambda t: t.name) def clear_registry() -> None: """Test helper.""" _REGISTRY.clear()