manus_project_list
Retrieve a list of all projects accessible to the authenticated user for project management and oversight.
Instructions
List all projects visible to the current user.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- manus_mcp/tools/projects.py:33-45 (handler)Handler function for manus_project_list tool. It sends a GET request to /v2/project.list via the client and returns a ProjectListResponse.
@manus_tool( name="manus_project_list", description="List all projects visible to the current user.", input_schema=ProjectListQuery, output_schema=ProjectListResponse, ) async def project_list(q: ProjectListQuery, ctx: ToolCtx) -> ProjectListResponse: return await ctx.client.call( "GET", "/v2/project.list", response_model=ProjectListResponse, rate_limit_key="project.list", ) - manus_mcp/schemas/projects.py:27-32 (schema)Input schema (ProjectListQuery - empty model with no required fields) and output schema (ProjectListResponse containing a list of ProjectRecord) for the manus_project_list tool.
class ProjectListQuery(ManusModel): pass class ProjectListResponse(ResponseEnvelope): data: list[ProjectRecord] = [] - manus_mcp/tools/projects.py:33-38 (registration)Tool registration via @manus_tool decorator with name='manus_project_list', description, input_schema=ProjectListQuery, output_schema=ProjectListResponse.
@manus_tool( name="manus_project_list", description="List all projects visible to the current user.", input_schema=ProjectListQuery, output_schema=ProjectListResponse, ) - manus_mcp/tools/__init__.py:16-16 (registration)The projects module is imported in load_all_tool_modules(), causing the @manus_tool decorator to fire and register manus_project_list.
projects, - manus_mcp/tools/registry.py:42-69 (helper)The @manus_tool decorator registry that stores the tool definition (including the handler) into a 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