Skip to main content
Glama

sleep

Pause task execution for a specified duration to control workflow timing. Introduces timed delays for managing sequences in automation, ensuring tasks proceed as planned after waiting periods.

Instructions

If you need to wait for a few seconds to continue with the task you are performing .

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
secondsYesseconds it will take me to tell you to continue.

Implementation Reference

  • The main handler function for MCP tool calls, specifically executes the 'sleep' tool by validating input, respecting config timeout, calling SleepFetcher.wait(), and returning success message.
    @app.call_tool()
    async def call_tool(name: str, arguments: Any) -> Sequence[TextContent]:
        """Handle tool calls for Sleep."""
        ctx = app.request_context.lifespan_context
        try:
            if name == "sleep":
                if not ctx:
                    raise ValueError("Sleep is not configured.")
                seconds = arguments.get("seconds")
                if not seconds:
                    raise ValueError("Seconds is required.")
    
                if seconds > int(ctx.sleep.config.timeout):
                    return [
                        TextContent(
                            type="text",
                            text=f"My configuration does not allow me to make you wait more than {ctx.sleep.config.timeout} seconds",  # noqa: E501
                        )
                    ]
                # Sleep seconds value
                await ctx.sleep.wait(seconds)
    
                return [
                    TextContent(
                        type="text",
                        text=f"You can continue to do your task after you've been waiting {seconds} seconds",  # noqa: E501
                    )
                ]
    
            raise ValueError(f"Unknown tool: {name}")
    
        except Exception as e:
            logger.error(f"Tool execution error: {str(e)}")
            return [TextContent(type="text", text=f"Error: {str(e)}")]
  • Registers the 'sleep' tool by providing its schema and description in the list_tools handler.
    @app.list_tools()
    async def list_tools() -> list[Tool]:
        """List available Sleep tools."""
        tools = []
        ctx = app.request_context.lifespan_context
    
        # Add Sleep tools if Sleep is configured
        if ctx:
            tools.extend(
                [
                    Tool(
                        name="sleep",
                        description="If you need to wait for a few seconds to continue with the task you are performing .",  # noqa: E501
                        inputSchema={
                            "type": "object",
                            "properties": {
                                "seconds": {
                                    "type": "number",
                                    "minimum": 0,
                                    "maximum": ctx.sleep.config.timeout,
                                    "description": "seconds it will take me to tell you to continue."  # noqa: E501
                                }
                            },
                            "required": ["seconds"],
                        },
                    ),
                ]
            )
        return tools
  • Defines the input schema for the 'sleep' tool, including seconds parameter with min/max bounds from config.
        Tool(
            name="sleep",
            description="If you need to wait for a few seconds to continue with the task you are performing .",  # noqa: E501
            inputSchema={
                "type": "object",
                "properties": {
                    "seconds": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": ctx.sleep.config.timeout,
                        "description": "seconds it will take me to tell you to continue."  # noqa: E501
                    }
                },
                "required": ["seconds"],
            },
        ),
    ]
  • Helper class providing the wait method that executes asyncio.sleep(seconds), the core sleep logic.
    class WaitMixin(SleepClient):
        """Mixin for Sleep waits operations."""
    
        async def wait(self, seconds: int) -> None:
            """
            Get an aggregated overview of findings and resources grouped by providers.
    
            Returns:
                Dictionary containing provider information with results and
                metadata
            """  # noqa: E501
            await asyncio.sleep(seconds)
            return
  • The SleepFetcher class that inherits WaitMixin, used by the server to perform the sleep operation.
    class SleepFetcher(WaitMixin):
        """Main entry point for Sleep operations, providing backward
        compatibility.
    
        This class combines functionality from various mixins to maintain the same
        API as the original SleepFetcher class.
        """
    
        pass
    
    __all__ = ["SleepFetcher","SleepConfig", "SleepClient"]
Install Server

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AgentsWorkingTogether/mcp-sleep'

If you have feedback or need assistance with the MCP directory API, please join our Discord server