NumPy allowed · plain Python earns 10 bonus points
Implement cursor-based pagination for an MCP `tools/list` response -- real MCP servers with many tools paginate list results using an opaque cursor rather than returning everything (or a numeric offset) at once, and a client has to follow that cursor correctly to enumerate every tool.
Implement paginate_tools(tools, page_size, cursor). Treat cursor as None for the first page, or the string form of a starting index for a later page. Return (tools[start:start+page_size], next_cursor), where next_cursor is the string form of the next start index, or None if the page reaches the end of tools.
paginate_tools(tools: list[str], page_size: int, cursor: str | None) -> tuple[list[str], str | None]