Omnispindle provides a comprehensive set of MCP tools for todo management, knowledge capture, and project coordination. All tools support different operation modes and tool loadouts for optimal performance.
Configure via OMNISPINDLE_TOOL_LOADOUT environment variable:
full- All 22 tools (default)basic- Essential todo management (7 tools)minimal- Core functionality (4 tools)lessons- Knowledge management (7 tools)admin- Administrative tools (6 tools)hybrid_test- Hybrid mode testing (6 tools)
All tools automatically inherit user context from:
- JWT Tokens - Primary authentication via Auth0 device flow
- API Keys - Alternative authentication method
- User Email - Specified via
MCP_USER_EMAILenvironment variable
Description: Create a new todo item with metadata and project assignment.
Parameters:
description(string, required) - Task descriptionproject(string, required) - Project name (must be in VALID_PROJECTS)priority(string, optional) - "Low", "Medium", "High" (default: "Medium")target_agent(string, optional) - Assigned agent (default: "user")metadata(object, optional) - Custom metadata fields
Returns: Todo creation confirmation with assigned ID
Example:
{
"description": "Implement user authentication",
"project": "omnispindle",
"priority": "High",
"target_agent": "claude",
"metadata": {"epic": "security", "estimate": "3h"}
}Description: Search and filter todos with MongoDB-style queries.
Parameters:
filter(object, optional) - MongoDB query filterlimit(number, optional) - Maximum results (default: 100)projection(object, optional) - Field projectionctx(string, optional) - Additional context
Returns: Array of matching todo items
Example Filters:
{"status": "pending", "priority": "High"}
{"project": "omnispindle", "created": {"$gte": "2025-01-01"}}
{"metadata.epic": "security"}Description: Modify existing todo item fields.
Parameters:
todo_id(string, required) - Todo identifierupdates(object, required) - Fields to update
Returns: Update confirmation
Example:
{
"todo_id": "12345",
"updates": {
"priority": "Low",
"metadata": {"epic": "documentation"}
}
}Description: Retrieve a specific todo by ID.
Parameters:
todo_id(string, required) - Todo identifier
Returns: Complete todo object
Description: Mark todo as completed with optional completion comment.
Parameters:
todo_id(string, required) - Todo identifiercomment(string, optional) - Completion notes
Returns: Completion confirmation with timestamp
Description: Get todos filtered by status.
Parameters:
status(string, required) - "pending", "completed", "initial"limit(number, optional) - Maximum results (default: 100)
Returns: Array of todos with specified status
Description: Get recent todos for a specific project.
Parameters:
project(string, required) - Project namelimit(number, optional) - Maximum results (default: 5)
Returns: Recent todos for the project
Description: Capture lessons learned with categorization.
Parameters:
title(string, required) - Lesson titlecontent(string, required) - Lesson contentlanguage(string, optional) - Programming languagetopic(string, optional) - Subject areaproject(string, optional) - Related projectmetadata(object, optional) - Additional metadata
Returns: Lesson creation confirmation
Description: CRUD operations for lessons.
Parameters: Lesson ID and appropriate data fields
Description: Full-text search across lesson content.
Parameters:
query(string, required) - Search termslimit(number, optional) - Maximum results
Returns: Matching lessons with relevance scoring
Description: Browse all lessons with optional filtering.
Parameters:
limit(number, optional) - Maximum resultsfilter(object, optional) - Optional filters
Returns: Array of lessons
Description: Access audit trail for todo modifications.
Parameters:
filter(object, optional) - Log entry filterslimit(number, optional) - Maximum results
Returns: Audit log entries
Description: Get available project names from filesystem.
Returns: Array of valid project names
Description: Manage topic explanations and documentation.
Parameters: Topic name and explanation content
Description: Check current operation mode and connectivity status.
Returns: Mode status, API connectivity, fallback availability
Description: Test connection to madnessinteractive.cc/api.
Returns: Connectivity test results
All tools return standardized error responses:
{
"success": false,
"error": "Error description",
"error_code": "SPECIFIC_ERROR_CODE"
}Common error codes:
AUTH_ERROR- Authentication failureVALIDATION_ERROR- Invalid parametersNOT_FOUND- Resource not foundAPI_ERROR- API connectivity issuesDATABASE_ERROR- Database operation failure
Tools validate project names against a predefined list including:
omnispindle- Main MCP serverinventorium- Web dashboardmadness_interactive- Ecosystem rootswarmdesk- AI environments- And others defined in
VALID_PROJECTS
All operations are automatically scoped to the authenticated user context. Users cannot access other users' data.
- Use tool loadouts to reduce token consumption
- API mode provides better performance than local database
- Hybrid mode offers reliability with automatic fallback
- Batch operations when possible using query filters
{
"mcpServers": {
"omnispindle": {
"command": "omnispindle-stdio",
"env": {
"OMNISPINDLE_MODE": "api",
"OMNISPINDLE_TOOL_LOADOUT": "basic",
"MCP_USER_EMAIL": "user@example.com"
}
}
}
}from omnispindle import OmnispindleClient
client = OmnispindleClient(mode="api")
result = await client.add_todo(
description="API integration task",
project="omnispindle",
priority="High"
)