Source code for tooluniverse.usage_tips_tool

from tooluniverse.base_tool import BaseTool
from tooluniverse.tool_registry import register_tool

_TIPS = {
    "loading": [
        "Load all tools: tu.load_tools()",
        "Load specific categories: tu.load_tools(tool_type=['uniprot', 'chembl'])",
        "Load specific tools: tu.load_tools(include_tools=['UniProt_get_entry_by_accession'])",
        "Exclude categories: tu.load_tools(exclude_categories=['mcp_auto_loader'])",
        "Exclude tools: tu.load_tools(exclude_tools=['slow_tool'])",
    ],
    "searching": [
        "Keyword search: tu.run({'name': 'Tool_Finder_Keyword', 'arguments': {'description': 'protein search', 'limit': 5}})",
        "List all names: tu.list_built_in_tools(mode='list_name')",
        "List by category: tu.list_built_in_tools(mode='config')",
        "Get tool spec: tu.tool_specification('UniProt_get_entry_by_accession')",
        "CLI grep: tu grep protein",
    ],
    "running": [
        "Run a tool: tu.run({'name': 'ToolName', 'arguments': {'param': 'value'}})",
        "run() always returns a dict and never raises exceptions",
        "Check for errors: if 'error' in result: handle_error(result['error'])",
        "Use caching: tu.run({...}, use_cache=True)",
        "CLI run: tu run UniProt_get_entry_by_accession '{\"accession\": \"P05067\"}'",
    ],
    "workspace": [
        "Workspace dir: .tooluniverse/ in the current directory",
        "Profile config: .tooluniverse/profile.yaml — loaded automatically at startup",
        "API keys: .tooluniverse/.env (never commit this file)",
        "Override workspace: ToolUniverse(workspace='/path/to/workspace')",
        "Global workspace: tu serve --global",
    ],
}

_ALL_TOPICS = sorted(_TIPS.keys())


[docs] @register_tool( "UsageTipsTool", config={ "name": "ToolUniverse_get_usage_tips", "type": "UsageTipsTool", "category": "special_tools", "description": ( "Return concise usage tips for the ToolUniverse SDK. " "Use topic='all' (default) to get all tips, or specify a topic: " + ", ".join(f"'{t}'" for t in _ALL_TOPICS) + ". No API keys or network access required — always available offline." ), "parameter": { "type": "object", "properties": { "topic": { "type": "string", "description": ( "Topic to filter tips. One of: " + ", ".join(f"'{t}'" for t in _ALL_TOPICS) + ", or 'all' (default) to return every topic." ), "enum": _ALL_TOPICS + ["all"], "default": "all", "required": False, } }, "required": [], }, }, ) class UsageTipsTool(BaseTool):
[docs] def run(self, arguments): topic = (arguments or {}).get("topic", "all") if topic == "all" or topic is None: return {"topic": "all", "tips": _TIPS, "available_topics": _ALL_TOPICS} if topic not in _TIPS: return { "error": f"Unknown topic '{topic}'. Choose one of: {_ALL_TOPICS + ['all']}" } return {"topic": topic, "tips": _TIPS[topic], "available_topics": _ALL_TOPICS}