Zotero MCP Connector

import mcp.types as types def get_tools_list() -> list[types.Tool]: """Return the list of available tools.""" return [ # Basic operations types.Tool( name="get-todos", description="Get todos from Things, optionally filtered by project", inputSchema={ "type": "object", "properties": { "project_uuid": { "type": "string", "description": "Optional UUID of a specific project to get todos from", }, "include_items": { "type": "boolean", "description": "Include checklist items", "default": True } }, "required": [], }, ), types.Tool( name="get-projects", description="Get all projects from Things", inputSchema={ "type": "object", "properties": { "include_items": { "type": "boolean", "description": "Include tasks within projects", "default": False } }, "required": [], }, ), types.Tool( name="get-areas", description="Get all areas from Things", inputSchema={ "type": "object", "properties": { "include_items": { "type": "boolean", "description": "Include projects and tasks within areas", "default": False } }, "required": [], }, ), # List views types.Tool( name="get-inbox", description="Get todos from Inbox", inputSchema={ "type": "object", "properties": {}, "required": [], }, ), types.Tool( name="get-today", description="Get todos due today", inputSchema={ "type": "object", "properties": {}, "required": [], }, ), types.Tool( name="get-upcoming", description="Get upcoming todos", inputSchema={ "type": "object", "properties": {}, "required": [], }, ), types.Tool( name="get-anytime", description="Get todos from Anytime list", inputSchema={ "type": "object", "properties": {}, "required": [], }, ), types.Tool( name="get-someday", description="Get todos from Someday list", inputSchema={ "type": "object", "properties": {}, "required": [], }, ), types.Tool( name="get-logbook", description="Get completed todos from Logbook, defaults to last 7 days", inputSchema={ "type": "object", "properties": { "period": { "type": "string", "description": "Time period to look back (e.g., '3d', '1w', '2m', '1y'). Defaults to '7d'", "pattern": "^\\d+[dwmy]$" }, "limit": { "type": "integer", "description": "Maximum number of entries to return. Defaults to 50", "minimum": 1, "maximum": 100 } }, "required": [], }, ), types.Tool( name="get-trash", description="Get trashed todos", inputSchema={ "type": "object", "properties": {}, "required": [], }, ), # Tag operations types.Tool( name="get-tags", description="Get all tags", inputSchema={ "type": "object", "properties": { "include_items": { "type": "boolean", "description": "Include items tagged with each tag", "default": False } }, "required": [], }, ), types.Tool( name="get-tagged-items", description="Get items with a specific tag", inputSchema={ "type": "object", "properties": { "tag": { "type": "string", "description": "Tag title to filter by" } }, "required": ["tag"], }, ), # Search operations types.Tool( name="search-todos", description="Search todos by title or notes", inputSchema={ "type": "object", "properties": { "query": { "type": "string", "description": "Search term to look for in todo titles and notes", }, }, "required": ["query"], }, ), types.Tool( name="search-advanced", description="Advanced todo search with multiple filters", inputSchema={ "type": "object", "properties": { "status": { "type": "string", "enum": ["incomplete", "completed", "canceled"], "description": "Filter by todo status" }, "start_date": { "type": "string", "description": "Filter by start date (YYYY-MM-DD)" }, "deadline": { "type": "string", "description": "Filter by deadline (YYYY-MM-DD)" }, "tag": { "type": "string", "description": "Filter by tag" }, "area": { "type": "string", "description": "Filter by area UUID" }, "type": { "type": "string", "enum": ["to-do", "project", "heading"], "description": "Filter by item type" } }, "required": [], }, ), # Recent items types.Tool( name="get-recent", description="Get recently created items", inputSchema={ "type": "object", "properties": { "period": { "type": "string", "description": "Time period (e.g., '3d', '1w', '2m', '1y')", "pattern": "^\\d+[dwmy]$" } }, "required": ["period"], }, ), # Things URL Scheme tools types.Tool( name="add-todo", description="Create a new todo in Things", inputSchema={ "type": "object", "properties": { "title": { "type": "string", "description": "Title of the todo" }, "notes": { "type": "string", "description": "Notes for the todo" }, "when": { "type": "string", "description": "When to schedule the todo (today, tomorrow, evening, anytime, someday, or YYYY-MM-DD)" }, "deadline": { "type": "string", "description": "Deadline for the todo (YYYY-MM-DD)" }, "tags": { "type": "array", "items": {"type": "string"}, "description": "Tags to apply to the todo" }, "checklist_items": { "type": "array", "items": {"type": "string"}, "description": "Checklist items to add" }, "list_id": { "type": "string", "description": "ID of project/area to add to" }, "list_title": { "type": "string", "description": "Title of project/area to add to" }, "heading": { "type": "string", "description": "Heading to add under" } }, "required": ["title"] } ), types.Tool( name="add-project", description="Create a new project in Things", inputSchema={ "type": "object", "properties": { "title": { "type": "string", "description": "Title of the project" }, "notes": { "type": "string", "description": "Notes for the project" }, "when": { "type": "string", "description": "When to schedule the project" }, "deadline": { "type": "string", "description": "Deadline for the project" }, "tags": { "type": "array", "items": {"type": "string"}, "description": "Tags to apply to the project" }, "area_id": { "type": "string", "description": "ID of area to add to" }, "area_title": { "type": "string", "description": "Title of area to add to" }, "todos": { "type": "array", "items": {"type": "string"}, "description": "Initial todos to create in the project" } }, "required": ["title"] } ), types.Tool( name="update-todo", description="Update an existing todo in Things", inputSchema={ "type": "object", "properties": { "id": { "type": "string", "description": "ID of the todo to update" }, "title": { "type": "string", "description": "New title" }, "notes": { "type": "string", "description": "New notes" }, "when": { "type": "string", "description": "New schedule" }, "deadline": { "type": "string", "description": "New deadline" }, "tags": { "type": "array", "items": {"type": "string"}, "description": "New tags" }, "completed": { "type": "boolean", "description": "Mark as completed" }, "canceled": { "type": "boolean", "description": "Mark as canceled" } }, "required": ["id"] } ), types.Tool( name="update-project", description="Update an existing project in Things", inputSchema={ "type": "object", "properties": { "id": { "type": "string", "description": "ID of the project to update" }, "title": { "type": "string", "description": "New title" }, "notes": { "type": "string", "description": "New notes" }, "when": { "type": "string", "description": "New schedule" }, "deadline": { "type": "string", "description": "New deadline" }, "tags": { "type": "array", "items": {"type": "string"}, "description": "New tags" }, "completed": { "type": "boolean", "description": "Mark as completed" }, "canceled": { "type": "boolean", "description": "Mark as canceled" } }, "required": ["id"] } ), types.Tool( name="show-item", description="Show a specific item or list in Things", inputSchema={ "type": "object", "properties": { "id": { "type": "string", "description": "ID of item to show, or one of: inbox, today, upcoming, anytime, someday, logbook" }, "query": { "type": "string", "description": "Optional query to filter by" }, "filter_tags": { "type": "array", "items": {"type": "string"}, "description": "Optional tags to filter by" } }, "required": ["id"] } ), types.Tool( name="search-items", description="Search for items in Things", inputSchema={ "type": "object", "properties": { "query": { "type": "string", "description": "Search query" } }, "required": ["query"] } ) ]