@toolsdk.ai/registry 1.0.100 → 1.0.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1658,7 +1658,42 @@
1658
1658
  },
1659
1659
  "qanon_mcp": {
1660
1660
  "category": "other-tools-and-integrations",
1661
- "path": "other-tools-and-integrations/qanon_mcp.json"
1661
+ "path": "other-tools-and-integrations/qanon_mcp.json",
1662
+ "validated": true,
1663
+ "tools": {
1664
+ "get_post_by_id_tool": {
1665
+ "name": "get_post_by_id_tool",
1666
+ "description": "\nRetrieve a specific post by its ID.\n\nArgs:\n post_id: The ID of the post to retrieve\n"
1667
+ },
1668
+ "search_posts": {
1669
+ "name": "search_posts",
1670
+ "description": "\nSearch for posts/drops containing a specific keyword or phrase.\n\nArgs:\n query: The keyword or phrase to search for\n limit: Maximum number of results to return (default: 10)\n"
1671
+ },
1672
+ "get_posts_by_date": {
1673
+ "name": "get_posts_by_date",
1674
+ "description": "\nGet posts/drops within a specific date range.\n\nArgs:\n start_date: Start date in YYYY-MM-DD format\n end_date: End date in YYYY-MM-DD format (defaults to start_date if not provided)\n limit: Maximum number of results to return (default: 10)\n"
1675
+ },
1676
+ "get_posts_by_author_id": {
1677
+ "name": "get_posts_by_author_id",
1678
+ "description": "\nGet posts/drops by a specific author ID.\n\nArgs:\n author_id: The author ID to search for\n limit: Maximum number of results to return (default: 10)\n"
1679
+ },
1680
+ "analyze_post": {
1681
+ "name": "analyze_post",
1682
+ "description": "\nGet detailed analysis of a specific post/drop including references and context.\n\nArgs:\n post_id: The ID of the post to analyze\n"
1683
+ },
1684
+ "get_timeline_summary": {
1685
+ "name": "get_timeline_summary",
1686
+ "description": "\nGet a timeline summary of posts/drops, optionally within a date range.\n\nArgs:\n start_date: Optional start date in YYYY-MM-DD format\n end_date: Optional end date in YYYY-MM-DD format\n"
1687
+ },
1688
+ "word_cloud_by_post_ids": {
1689
+ "name": "word_cloud_by_post_ids",
1690
+ "description": "\nGenerate a word cloud analysis showing the most common words used in posts within a specified ID range.\n\nArgs:\n start_id: Starting post ID\n end_id: Ending post ID\n min_word_length: Minimum length of words to include (default: 3)\n max_words: Maximum number of words to return (default: 100)\n"
1691
+ },
1692
+ "word_cloud_by_date_range": {
1693
+ "name": "word_cloud_by_date_range",
1694
+ "description": "\nGenerate a word cloud analysis showing the most common words used in posts within a specified date range.\n\nArgs:\n start_date: Start date in YYYY-MM-DD format\n end_date: End date in YYYY-MM-DD format\n min_word_length: Minimum length of words to include (default: 3)\n max_words: Maximum number of words to return (default: 100)\n"
1695
+ }
1696
+ }
1662
1697
  },
1663
1698
  "@anaisbetts/mcp-youtube": {
1664
1699
  "category": "search-data-extraction",
@@ -4238,7 +4273,14 @@
4238
4273
  },
4239
4274
  "sketchfab-mcp": {
4240
4275
  "category": "art-and-culture",
4241
- "path": "art-and-culture/sketchfab-mcp.json"
4276
+ "path": "art-and-culture/sketchfab-mcp.json",
4277
+ "validated": true,
4278
+ "tools": {
4279
+ "sequentialthinking": {
4280
+ "name": "sequentialthinking",
4281
+ "description": "\nA detailed tool for dynamic and reflective problem-solving through thoughts.\n\nThis tool helps analyze problems through a flexible thinking process that can adapt and evolve.\nEach thought can build on, question, or revise previous insights as understanding deepens.\nIt uses an Agno multi-agent team (in coordinate mode) to process each thought, where a\nCoordinator delegates sub-tasks to specialists (Planner, Researcher, Analyzer, Critic, Synthesizer)\nand synthesizes their outputs.\n\nWhen to use this tool:\n- Breaking down complex problems into manageable steps.\n- Planning and design processes requiring iterative refinement and revision.\n- Complex analysis where the approach might need course correction based on findings.\n- Problems where the full scope or optimal path is not clear initially.\n- Situations requiring a multi-step solution with context maintained across steps.\n- Tasks where focusing on relevant information and filtering out noise is crucial.\n- Developing and verifying solution hypotheses through a chain of reasoning.\n\nKey features & usage guidelines:\n- The process is driven by the caller (e.g., an LLM) making sequential calls to this tool.\n- Start with an initial estimate for `totalThoughts`, but adjust it dynamically via subsequent calls if needed.\n- Use `isRevision=True` and `revisesThought` to explicitly revisit and correct previous steps.\n- Use `branchFromThought` and `branchId` to explore alternative paths or perspectives.\n- If the estimated `totalThoughts` is reached but more steps are needed, set `needsMoreThoughts=True` on the *last* thought within the current estimate to signal the need for extension.\n- Express uncertainty and explore alternatives within the `thought` content.\n- Generate solution hypotheses within the `thought` content when appropriate.\n- Verify hypotheses in subsequent `thought` steps based on the reasoning chain.\n- The caller should repeat the process, calling this tool for each step, until a satisfactory solution is reached.\n- Set `nextThoughtNeeded=False` only when the caller determines the process is complete and a final answer is ready.\n\nParameters:\n thought (str): The content of the current thinking step. This can be an analytical step,\n a plan, a question, a critique, a revision, a hypothesis, or verification.\n Make it specific enough to imply the desired action.\n thoughtNumber (int): The sequence number of this thought (>=1). Can exceed initial `totalThoughts`\n if the process is extended.\n totalThoughts (int): The current *estimate* of the total thoughts required for the process.\n This can be adjusted by the caller in subsequent calls. Minimum 5 suggested.\n nextThoughtNeeded (bool): Indicates if the caller intends to make another call to this tool\n after the current one. Set to False only when the entire process is deemed complete.\n isRevision (bool, optional): True if this thought revises or corrects a previous thought. Defaults to False.\n revisesThought (int, optional): The `thoughtNumber` of the thought being revised, required if `isRevision` is True.\n Must be less than the current `thoughtNumber`.\n branchFromThought (int, optional): The `thoughtNumber` from which this thought branches to explore an alternative path.\n Defaults to None.\n branchId (str, optional): A unique identifier for the branch being explored, required if `branchFromThought` is set.\n Defaults to None.\n needsMoreThoughts (bool, optional): Set to True on a thought if the caller anticipates needing more\n steps beyond the current `totalThoughts` estimate *after* this thought.\n Defaults to False.\n\nReturns:\n str: The Coordinator agent's synthesized response based on specialist contributions for the current `thought`.\n Includes guidance for the caller on potential next steps (e.g., suggestions for revision or branching\n based on the specialists' analysis). The caller uses this response to formulate the *next* thought.\n"
4282
+ }
4283
+ }
4242
4284
  },
4243
4285
  "@kailashg101/mcp-figma-to-code": {
4244
4286
  "category": "developer-tools",
@@ -5961,7 +6003,38 @@
5961
6003
  },
5962
6004
  "awslabs.cdk-mcp-server": {
5963
6005
  "category": "cloud-platforms",
5964
- "path": "cloud-platforms/awslabs-cdk-mcp-server.json"
6006
+ "path": "cloud-platforms/awslabs-cdk-mcp-server.json",
6007
+ "validated": true,
6008
+ "tools": {
6009
+ "CDKGeneralGuidance": {
6010
+ "name": "CDKGeneralGuidance",
6011
+ "description": "Use this tool to get prescriptive CDK advice for building applications on AWS.\n\nArgs:\n ctx: MCP context\n"
6012
+ },
6013
+ "ExplainCDKNagRule": {
6014
+ "name": "ExplainCDKNagRule",
6015
+ "description": "Explain a specific CDK Nag rule with AWS Well-Architected guidance.\n\nCDK Nag is a crucial tool for ensuring your CDK applications follow AWS security best practices.\n\nBasic implementation:\n```typescript\nimport { App } from 'aws-cdk-lib';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\n// Create your stack\nconst stack = new MyStack(app, 'MyStack');\n// Apply CDK Nag\nAwsSolutionsChecks.check(app);\n```\n\nOptional integration patterns:\n\n1. Using environment variables:\n```typescript\nif (process.env.ENABLE_CDK_NAG === 'true') {\n AwsSolutionsChecks.check(app);\n}\n```\n\n2. Using CDK context parameters:\n```typescript\n3. Environment-specific application:\n```typescript\nconst environment = app.node.tryGetContext('environment') || 'development';\nif (['production', 'staging'].includes(environment)) {\n AwsSolutionsChecks.check(stack);\n}\n```\n\nFor more information on specific rule packs:\n- Use resource `cdk-nag://rules/{rule_pack}` to get all rules for a specific pack\n- Use resource `cdk-nag://warnings/{rule_pack}` to get warnings for a specific pack\n- Use resource `cdk-nag://errors/{rule_pack}` to get errors for a specific pack\n\nArgs:\n ctx: MCP context\n rule_id: The CDK Nag rule ID (e.g., 'AwsSolutions-IAM4')\n\nReturns:\n Dictionary with detailed explanation and remediation steps\n"
6016
+ },
6017
+ "CheckCDKNagSuppressions": {
6018
+ "name": "CheckCDKNagSuppressions",
6019
+ "description": "Check if CDK code contains Nag suppressions that require human review.\n\nScans TypeScript/JavaScript code for NagSuppressions usage to ensure security\nsuppressions receive proper human oversight and justification.\n\nArgs:\n ctx: MCP context\n code: CDK code to analyze (TypeScript/JavaScript)\n file_path: Path to a file containing CDK code to analyze\n\nReturns:\n Analysis results with suppression details and security guidance\n"
6020
+ },
6021
+ "GenerateBedrockAgentSchema": {
6022
+ "name": "GenerateBedrockAgentSchema",
6023
+ "description": "Generate OpenAPI schema for Bedrock Agent Action Groups from a file.\n\nThis tool converts a Lambda file with BedrockAgentResolver into a Bedrock-compatible\nOpenAPI schema. It uses a progressive approach to handle common issues:\n1. Direct import of the Lambda file\n2. Simplified version with problematic imports commented out\n3. Fallback script generation if needed\n\nArgs:\n ctx: MCP context\n lambda_code_path: Path to Python file containing BedrockAgentResolver app\n output_path: Where to save the generated schema\n\nReturns:\n Dictionary with schema generation results, including status, path to generated schema,\n and diagnostic information if errors occurred\n"
6024
+ },
6025
+ "GetAwsSolutionsConstructPattern": {
6026
+ "name": "GetAwsSolutionsConstructPattern",
6027
+ "description": "Search and discover AWS Solutions Constructs patterns.\n\nAWS Solutions Constructs are vetted architecture patterns that combine multiple\nAWS services to solve common use cases following AWS Well-Architected best practices.\n\nKey benefits:\n- Accelerated Development: Implement common patterns without boilerplate code\n- Best Practices Built-in: Security, reliability, and performance best practices\n- Reduced Complexity: Simplified interfaces for multi-service architectures\n- Well-Architected: Patterns follow AWS Well-Architected Framework principles\n\nWhen to use Solutions Constructs:\n- Implementing common architecture patterns (e.g., API + Lambda + DynamoDB)\n- You want secure defaults and best practices applied automatically\n- You need to quickly prototype or build production-ready infrastructure\n\nThis tool provides metadata about patterns. For complete documentation,\nuse the resource URI returned in the 'documentation_uri' field.\n\nArgs:\n ctx: MCP context\n pattern_name: Optional name of the specific pattern (e.g., 'aws-lambda-dynamodb')\n services: Optional list of AWS services to search for patterns that use them\n (e.g., ['lambda', 'dynamodb'])\n\nReturns:\n Dictionary with pattern metadata including description, services, and documentation URI\n"
6028
+ },
6029
+ "SearchGenAICDKConstructs": {
6030
+ "name": "SearchGenAICDKConstructs",
6031
+ "description": "Search for GenAI CDK constructs by name or type.\n\nThe search is flexible and will match any of your search terms (OR logic).\nIt handles common variations like singular/plural forms and terms with/without spaces.\nContent is fetched dynamically from GitHub to ensure the most up-to-date documentation.\n\nExamples:\n- \"bedrock agent\" - Returns all agent-related constructs\n- \"knowledgebase vector\" - Returns knowledge base constructs related to vector stores\n- \"agent actiongroups\" - Returns action groups for agents\n- \"opensearch vector\" - Returns OpenSearch vector constructs\n\nThe search supports subdirectory content (like knowledge bases and their sections)\nand will find matches across all available content.\n\nArgs:\n ctx: MCP context\n query: Search term(s) to find constructs by name or description\n construct_type: Optional filter by construct type ('bedrock', 'opensearchserverless', etc.)\n\nReturns:\n Dictionary with matching constructs and resource URIs\n"
6032
+ },
6033
+ "LambdaLayerDocumentationProvider": {
6034
+ "name": "LambdaLayerDocumentationProvider",
6035
+ "description": "Provide documentation sources for Lambda layers.\n\nThis tool returns information about where to find documentation for Lambda layers\nand instructs the MCP Client to fetch and process this documentation.\n\nArgs:\n ctx: MCP context\n layer_type: Type of layer (\"generic\" or \"python\")\n\nReturns:\n Dictionary with documentation source information\n"
6036
+ }
6037
+ }
5965
6038
  },
5966
6039
  "@niyogi/render-mcp": {
5967
6040
  "category": "cloud-platforms",
@@ -6568,7 +6641,14 @@
6568
6641
  },
6569
6642
  "mcp-shell-server": {
6570
6643
  "category": "command-line",
6571
- "path": "command-line/mcp-shell-server.json"
6644
+ "path": "command-line/mcp-shell-server.json",
6645
+ "validated": true,
6646
+ "tools": {
6647
+ "shell_execute": {
6648
+ "name": "shell_execute",
6649
+ "description": "Execute a shell command\nAllowed commands: "
6650
+ }
6651
+ }
6572
6652
  },
6573
6653
  "apple-macos-native-applications": {
6574
6654
  "category": "command-line",
@@ -6584,7 +6664,34 @@
6584
6664
  },
6585
6665
  "wcgw": {
6586
6666
  "category": "command-line",
6587
- "path": "command-line/wcgw.json"
6667
+ "path": "command-line/wcgw.json",
6668
+ "validated": true,
6669
+ "tools": {
6670
+ "Initialize": {
6671
+ "name": "Initialize",
6672
+ "description": "\n- Always call this at the start of the conversation before using any of the shell tools from wcgw.\n- Use `any_workspace_path` to initialize the shell in the appropriate project directory.\n- If the user has mentioned a workspace or project root or any other file or folder use it to set `any_workspace_path`.\n- If user has mentioned any files use `initial_files_to_read` to read, use absolute paths only (~ allowed)\n- By default use mode \"wcgw\"\n- In \"code-writer\" mode, set the commands and globs which user asked to set, otherwise use 'all'.\n- Use type=\"first_call\" if it's the first call to this tool.\n- Use type=\"user_asked_mode_change\" if in a conversation user has asked to change mode.\n- Use type=\"reset_shell\" if in a conversation shell is not working after multiple tries.\n- Use type=\"user_asked_change_workspace\" if in a conversation user asked to change workspace\n"
6673
+ },
6674
+ "BashCommand": {
6675
+ "name": "BashCommand",
6676
+ "description": "\n- Execute a bash command. This is stateful (beware with subsequent calls).\n- Status of the command and the current working directory will always be returned at the end.\n- The first or the last line might be `(...truncated)` if the output is too long.\n- Always run `pwd` if you get any file or directory not found error to make sure you're not lost.\n- Run long running commands in background using screen instead of \"&\".\n- Do not use 'cat' to read files, use ReadFiles tool instead\n- In order to check status of previous command, use `status_check` with empty command argument.\n- Only command is allowed to run at a time. You need to wait for any previous command to finish before running a new one.\n- Programs don't hang easily, so most likely explanation for no output is usually that the program is still running, and you need to check status again.\n- Do not send Ctrl-c before checking for status till 10 minutes or whatever is appropriate for the program to finish.\n"
6677
+ },
6678
+ "ReadFiles": {
6679
+ "name": "ReadFiles",
6680
+ "description": "\n- Read full file content of one or more files.\n- Provide absolute paths only (~ allowed)\n- Only if the task requires line numbers understanding:\n - You may extract a range of lines. E.g., `/path/to/file:1-10` for lines 1-10. You can drop start or end like `/path/to/file:1-` or `/path/to/file:-10` \n"
6681
+ },
6682
+ "ReadImage": {
6683
+ "name": "ReadImage",
6684
+ "description": "Read an image from the shell."
6685
+ },
6686
+ "FileWriteOrEdit": {
6687
+ "name": "FileWriteOrEdit",
6688
+ "description": "\n- Writes or edits a file based on the percentage of changes.\n- Use absolute path only (~ allowed).\n- First write down percentage of lines that need to be replaced in the file (between 0-100) in percentage_to_change\n- percentage_to_change should be low if mostly new code is to be added. It should be high if a lot of things are to be replaced.\n- If percentage_to_change > 50, provide full file content in text_or_search_replace_blocks\n- If percentage_to_change <= 50, text_or_search_replace_blocks should be search/replace blocks.\n\nInstructions for editing files.\n# Example\n## Input file\n```\nimport numpy as np\nfrom impls import impl1, impl2\n\ndef hello():\n \"print a greeting\"\n\n print(\"hello\")\n\ndef call_hello():\n \"call hello\"\n\n hello()\n print(\"Called\")\n impl1()\n hello()\n impl2()\n\n```\n## Edit format on the input file\n```\n<<<<<<< SEARCH\nfrom impls import impl1, impl2\n=======\nfrom impls import impl1, impl2\nfrom hello import hello as hello_renamed\n>>>>>>> REPLACE\n<<<<<<< SEARCH\ndef hello():\n \"print a greeting\"\n\n print(\"hello\")\n=======\n>>>>>>> REPLACE\n<<<<<<< SEARCH\ndef call_hello():\n \"call hello\"\n\n hello()\n=======\ndef call_hello_renamed():\n \"call hello renamed\"\n\n hello_renamed()\n>>>>>>> REPLACE\n<<<<<<< SEARCH\n impl1()\n hello()\n impl2()\n=======\n impl1()\n hello_renamed()\n impl2()\n>>>>>>> REPLACE\n```\n\n# *SEARCH/REPLACE block* Rules:\n\n- Every \"SEARCH\" section must *EXACTLY MATCH* the existing file content, character for character, including all comments, docstrings, whitespaces, etc.\n- Use multiple search/replace blocks in a single FileWriteOrEdit tool call to edit in a single file in multiple places from top to bottom (separate calls are slower).\n- Including multiple unique *SEARCH/REPLACE* blocks if needed.\n- Include enough and only enough lines in each SEARCH section to uniquely match each set of lines that need to change.\n- Keep *SEARCH/REPLACE* blocks concise.\n- Break large *SEARCH/REPLACE* blocks into a series of smaller blocks that each change a small portion of the file.\n- Include just the changing lines, and a few surrounding lines (0-3 lines) if needed for uniqueness.\n- Other than for uniqueness, avoid including those lines which do not change in search (and replace) blocks. Target 0-3 non trivial extra lines per block.\n- Preserve leading spaces and indentations in both SEARCH and REPLACE blocks."
6689
+ },
6690
+ "ContextSave": {
6691
+ "name": "ContextSave",
6692
+ "description": "\nSaves provided description and file contents of all the relevant file paths or globs in a single text file.\n- Provide random 3 word unqiue id or whatever user provided.\n- Leave project path as empty string if no project path"
6693
+ }
6694
+ }
6588
6695
  },
6589
6696
  "terminal-controller": {
6590
6697
  "category": "command-line",
@@ -6682,7 +6789,94 @@
6682
6789
  },
6683
6790
  "phone-mcp": {
6684
6791
  "category": "command-line",
6685
- "path": "command-line/phone-mcp.json"
6792
+ "path": "command-line/phone-mcp.json",
6793
+ "validated": true,
6794
+ "tools": {
6795
+ "call_number": {
6796
+ "name": "call_number",
6797
+ "description": "Make a phone call to the specified number.\n\nInitiates a call using Android's dialer app through ADB. The number\nwill be dialed immediately without requiring user confirmation.\n\nArgs:\n phone_number (str): The phone number to call. Country code\n will be automatically added if not provided.\n\nReturns:\n str: Success message with the number being called, or an error message\n if the call could not be initiated.\n"
6798
+ },
6799
+ "end_call": {
6800
+ "name": "end_call",
6801
+ "description": "End the current phone call.\n\nTerminates any active phone call by sending the end call keycode\nthrough ADB.\n\nReturns:\n str: Success message if the call was ended, or an error message\n if the end call command failed.\n"
6802
+ },
6803
+ "check_device_connection": {
6804
+ "name": "check_device_connection",
6805
+ "description": "Check if an Android device is connected via ADB.\n\nVerifies that an Android device is properly connected and recognized\nby ADB, which is required for all other functions to work.\n\nReturns:\n str: Status message indicating whether a device is connected and\n ready, or an error message if no device is found.\n"
6806
+ },
6807
+ "send_text_message": {
6808
+ "name": "send_text_message",
6809
+ "description": "Send a text message to the specified number.\n\nUses the phone's messaging app with UI automation to send SMS.\nProcess: Opens messaging app, fills recipient and content, automatically clicks send button, then auto-exits app.\n\nArgs:\n phone_number (str): Recipient's phone number. Country code will be automatically added if not included.\n Example: \"13812345678\" or \"+8613812345678\"\n message (str): SMS content. Supports any text, including emojis.\n Example: \"Hello, this is a test message\"\n\nReturns:\n str: String description of the operation result:\n - Success: \"Text message sent to {phone_number}\"\n - Failure: Message containing error reason, like \"Failed to open messaging app: {error}\"\n or \"Failed to navigate to send button: {error}\"\n"
6810
+ },
6811
+ "receive_text_messages": {
6812
+ "name": "receive_text_messages",
6813
+ "description": "Get recent text messages from the phone.\n\nRetrieves recent SMS messages from the device's SMS database\nusing ADB and content provider queries to get structured message data.\n\nArgs:\n limit (int): Maximum number of messages to retrieve (default: 5)\n Example: 10 will return the 10 most recent messages\n\nReturns:\n str: JSON string containing messages or an error message:\n - Success: Formatted JSON string with list of messages, each with fields:\n - address: Sender's number\n - body: Message content\n - date: Timestamp\n - formatted_date: Human-readable date time (like \"2023-07-25 14:30:22\")\n - Failure: Text message describing the error, like \"No recent text messages found...\"\n"
6814
+ },
6815
+ "get_sent_messages": {
6816
+ "name": "get_sent_messages",
6817
+ "description": "Get recently sent text messages from the phone.\n\nRetrieves sent SMS messages from the device's SMS database.\nThis provides a complete list of messages that were successfully sent from this device.\n\nArgs:\n limit (int): Maximum number of sent messages to retrieve (default: 5)\n\nReturns:\n str: JSON string containing sent messages with:\n - from: Sender phone number (device owner)\n - to: Recipient phone number\n - text: Message content\n - date: Timestamp\n - formatted_date: Human-readable date time (like \"2023-07-25 14:30:22\")\n"
6818
+ },
6819
+ "start_screen_recording": {
6820
+ "name": "start_screen_recording",
6821
+ "description": "Start recording the phone's screen.\n\nRecords the screen activity for the specified duration and saves\nthe video to the phone's storage. Automatically creates directories\nif they don't exist.\n\nArgs:\n duration_seconds (int): Recording duration in seconds (default: 30,\n max: 180 seconds due to ADB limitations)\n\nReturns:\n str: Success message with the path to the recording, or an error\n message if the recording could not be started.\n"
6822
+ },
6823
+ "play_media": {
6824
+ "name": "play_media",
6825
+ "description": "Simulate media button press to play/pause media.\n\nThis function sends a keyevent that simulates pressing the media\nplay/pause button, which can control music, videos, or podcasts\nthat are currently playing.\n\nReturns:\n str: Success message, or an error message if the command failed.\n"
6826
+ },
6827
+ "set_alarm": {
6828
+ "name": "set_alarm",
6829
+ "description": "Set an alarm on the phone.\n\nCreates a new alarm with the specified time and label using the default\nclock application.\n\nArgs:\n hour (int): Hour in 24-hour format (0-23)\n minute (int): Minute (0-59)\n label (str): Optional label for the alarm (default: \"Alarm\")\n\nReturns:\n str: Success message if the alarm was set, or an error message\n if the alarm could not be created.\n"
6830
+ },
6831
+ "receive_incoming_call": {
6832
+ "name": "receive_incoming_call",
6833
+ "description": "Handle an incoming phone call.\n\nChecks for any incoming calls and provides options to answer\nor reject the call. This function first checks if there's an\nincoming call, then can either answer it or reject it based\non the action parameter.\n\nReturns:\n str: Information about any incoming call including the caller\n number, or a message indicating no incoming calls.\n"
6834
+ },
6835
+ "get_contacts": {
6836
+ "name": "get_contacts",
6837
+ "description": "Retrieve contacts from the phone.\n\nCore function for accessing the contacts database on the device.\nFetches contact information including names and phone numbers.\nReturns data in structured JSON format.\n\nArgs:\n limit (int): Number of contacts to retrieve, defaults to 20\n\nReturns:\n str: JSON string with contact data or error message\n"
6838
+ },
6839
+ "create_contact": {
6840
+ "name": "create_contact",
6841
+ "description": "Create a new contact on the phone.\n\nOpens the contact creation UI with pre-filled name and phone number,\nallowing the user to review and save the contact.\n\nArgs:\n name (str): The contact's full name\n phone_number (str): The contact's phone number (For testing, 10086 is recommended)\n email (str, optional): The contact's email address\n\nReturns:\n str: Success message if the contact UI was launched, or an error message\n if the operation failed.\n\nNote:\n When testing this feature, it's recommended to use 10086 as the test phone number.\n This is China Mobile's customer service number, which is suitable for testing\n environments and easy to recognize.\n"
6842
+ },
6843
+ "get_current_window": {
6844
+ "name": "get_current_window",
6845
+ "description": "Get information about the current active window on the device.\n\nRetrieves details about the currently focused window, active application,\nand foreground activities on the device using multiple methods for reliability.\n\nReturns:\n str: JSON string with current window details or error message\n"
6846
+ },
6847
+ "get_app_shortcuts": {
6848
+ "name": "get_app_shortcuts",
6849
+ "description": "Get application shortcuts for installed apps.\n\nRetrieves shortcuts (quick actions) available for Android apps.\nIf package_name is provided, returns shortcuts only for that app,\notherwise lists all apps with shortcuts.\n\nArgs:\n package_name (str, optional): Specific app package to get shortcuts for\n\nReturns:\n str: JSON string with app shortcuts information or error message\n"
6850
+ },
6851
+ "launch_app_activity": {
6852
+ "name": "launch_app_activity",
6853
+ "description": "Launch an app using package name and optionally an activity name\n\nThis function uses adb to start an application on the device either by package name\nor by specifying both package and activity. It provides reliable app launching across\ndifferent Android devices and versions.\n\nArgs:\n package_name (str): The package name of the app to launch (e.g., \"com.android.contacts\")\n activity_name (str): The specific activity to launch. If not provided,\n launches the app's main activity. Defaults to None.\n\nReturns:\n str: JSON string with operation result:\n For successful operations:\n {\n \"status\": \"success\",\n \"message\": \"Successfully launched <package_name>\"\n }\n \n For failed operations:\n {\n \"status\": \"error\",\n \"message\": \"Failed to launch app: <error details>\"\n }\n\nExamples:\n # Launch an app using just the package name\n result = await launch_app_activity(\"com.android.contacts\")\n \n # Launch a specific activity within an app\n result = await launch_app_activity(\"com.android.dialer\", \"com.android.dialer.DialtactsActivity\")\n \n # Launch Android settings\n result = await launch_app_activity(\"com.android.settings\")\n"
6854
+ },
6855
+ "list_installed_apps": {
6856
+ "name": "list_installed_apps",
6857
+ "description": "List installed applications on the device with pagination support.\n\nArgs:\n only_system (bool): If True, only show system apps\n only_third_party (bool): If True, only show third-party apps\n page (int): Page number (starts from 1)\n page_size (int): Number of items per page\n basic (bool): If True, only return basic info (faster loading, default behavior)\n\nReturns:\n str: JSON string containing:\n {\n \"status\": \"success\" or \"error\",\n \"message\": Error message if status is error,\n \"total_count\": Total number of apps,\n \"total_pages\": Total number of pages,\n \"current_page\": Current page number,\n \"page_size\": Number of items per page,\n \"apps\": [\n {\n \"package_name\": str,\n \"app_name\": str,\n \"system_app\": bool,\n \"version_name\": str (if not basic),\n \"version_code\": str (if not basic),\n \"install_time\": str (if not basic)\n },\n ...\n ]\n }\n"
6858
+ },
6859
+ "terminate_app": {
6860
+ "name": "terminate_app",
6861
+ "description": "Force stop an application on the device.\n\nArgs:\n package_name (str): Package name of the app to terminate\n\nReturns:\n str: Success or error message\n"
6862
+ },
6863
+ "open_url": {
6864
+ "name": "open_url",
6865
+ "description": "Open a URL in the device's default browser.\n\nArgs:\n url (str): URL to open\n\nReturns:\n str: Success or error message\n"
6866
+ },
6867
+ "analyze_screen": {
6868
+ "name": "analyze_screen",
6869
+ "description": "Analyze the current screen and provide structured information about UI elements\n\nThis function captures the current screen state and returns a detailed analysis\nof the UI elements, their attributes, and suggests possible interactions.\n\nArgs:\n include_screenshot (bool, optional): Whether to include base64-encoded screenshot in the result.\n Default is False to reduce response size.\n max_elements (int, optional): Maximum number of UI elements to process.\n Default is 50 to limit processing time and response size.\n\nReturns:\n str: JSON string with the analysis result containing:\n {\n \"status\": \"success\" or \"error\",\n \"message\": \"Success/error message\",\n \"screen_size\": {\n \"width\": Width of the screen in pixels,\n \"height\": Height of the screen in pixels\n },\n \"screen_analysis\": {\n \"text_elements\": {\n \"all\": [List of all text elements with coordinates],\n \"by_region\": {\n \"top\": [Text elements in the top of the screen],\n \"middle\": [Text elements in the middle of the screen],\n \"bottom\": [Text elements in the bottom of the screen]\n }\n },\n \"notable_clickables\": [List of important clickable elements],\n \"ui_patterns\": {\n \"has_bottom_nav\": Whether screen has bottom navigation,\n \"has_top_bar\": Whether screen has top app bar,\n \"has_dialog\": Whether screen has a dialog showing,\n \"has_list_view\": Whether screen has a scrollable list\n }\n },\n \"suggested_actions\": [\n {\n \"action\": Action type (e.g., \"tap_element\"),\n \"element_text\": Text of element to interact with,\n \"element_id\": ID of element to interact with,\n \"coordinates\": [x, y] coordinates for interaction,\n \"confidence\": Confidence score (0-100)\n }\n ]\n }\n \n If include_screenshot is True, the response will also include:\n {\n \"screenshot\": base64-encoded PNG image of the screen\n }\n \nExamples:\n # Basic screen analysis\n result = await analyze_screen()\n \n # Get screen analysis with screenshot included\n result_with_screenshot = await analyze_screen(include_screenshot=True)\n \n # Get detailed analysis including more elements\n detailed_result = await analyze_screen(max_elements=100)\n"
6870
+ },
6871
+ "interact_with_screen": {
6872
+ "name": "interact_with_screen",
6873
+ "description": "Execute screen interaction actions\n\nUnified interface for screen interactions including tapping, swiping, key pressing, text input, and element search.\n\nArgs:\n action (str): Action type, one of:\n - \"tap\": Tap screen at specified coordinates\n - \"swipe\": Swipe screen from one position to another\n - \"key\": Press a system key\n - \"text\": Input text\n - \"find\": Find UI element(s)\n - \"wait\": Wait for element to appear\n - \"scroll\": Scroll to find element\n \n params (Dict[str, Any]): Parameters dictionary with action-specific values:\n For \"tap\" action:\n - x (int): X coordinate to tap\n - y (int): Y coordinate to tap\n \n For \"swipe\" action:\n - x1 (int): Start X coordinate\n - y1 (int): Start Y coordinate\n - x2 (int): End X coordinate\n - y2 (int): End Y coordinate\n - duration (int, optional): Swipe duration in ms, defaults to 300\n \n For \"key\" action:\n - keycode (str/int): Key to press (e.g., \"back\", \"home\", \"enter\", or keycode number)\n \n For \"text\" action:\n - content (str): Text to input. For Chinese characters, use pinyin instead\n (e.g. \"yu\\ tian\" for \"雨天\") with escaped spaces.\n Direct Chinese character input may fail on some devices.\n \n For \"find\" action:\n - method (str): Search method, one of: \"text\", \"id\", \"content_desc\", \"class\", \"clickable\"\n - value (str): Text/value to search for (not required for method=\"clickable\")\n - partial (bool, optional): Use partial matching, defaults to True (for text/content_desc)\n \n For \"wait\" action:\n - method (str): Search method, same options as \"find\"\n - value (str): Text/value to search for\n - timeout (int, optional): Maximum wait time in seconds, defaults to 30\n - interval (float, optional): Check interval in seconds, defaults to 1.0\n \n For \"scroll\" action:\n - method (str): Search method, same options as \"find\"\n - value (str): Text/value to search for\n - direction (str, optional): Scroll direction, one of: \"up\", \"down\", \"left\", \"right\", defaults to \"down\"\n - max_swipes (int, optional): Maximum swipe attempts, defaults to 5\n\nReturns:\n str: JSON string with operation result containing:\n For successful operations:\n {\n \"status\": \"success\",\n \"message\": \"Operation-specific success message\",\n ... (optional action-specific data)\n }\n \n For failed operations:\n {\n \"status\": \"error\",\n \"message\": \"Error description\"\n }\n \n Special cases:\n - find: Returns elements list containing matching elements with their properties\n - wait: Returns success when element found or error if timeout\n - scroll: Returns success when element found or error if not found after max attempts\n\nExamples:\n # Tap by coordinates\n result = await interact_with_screen(\"tap\", {\"x\": 100, \"y\": 200})\n \n # Swipe down\n result = await interact_with_screen(\"swipe\", \n {\"x1\": 500, \"y1\": 300, \n \"x2\": 500, \"y2\": 1200, \n \"duration\": 300})\n \n # Input text\n result = await interact_with_screen(\"text\", {\"content\": \"Hello world\"})\n \n # Press back key\n result = await interact_with_screen(\"key\", {\"keycode\": \"back\"})\n \n # Find element by text\n result = await interact_with_screen(\"find\", \n {\"method\": \"text\", \n \"value\": \"Settings\", \n \"partial\": True})\n \n # Wait for element to appear\n result = await interact_with_screen(\"wait\", \n {\"method\": \"text\", \n \"value\": \"Success\", \n \"timeout\": 10,\n \"interval\": 0.5})\n \n # Scroll to find element\n result = await interact_with_screen(\"scroll\", \n {\"method\": \"text\", \n \"value\": \"Privacy Policy\", \n \"direction\": \"down\", \n \"max_swipes\": 8})\n"
6874
+ },
6875
+ "mcp_monitor_ui_changes": {
6876
+ "name": "mcp_monitor_ui_changes",
6877
+ "description": "Monitor the UI for changes with MCP compatible parameters.\n\nThis is a simplified version of monitor_ui_changes that doesn't use callback functions,\nmaking it compatible with MCP's JSON schema requirements.\n\nArgs:\n interval_seconds (float): Time between UI checks (seconds)\n max_duration_seconds (float): Maximum monitoring time (seconds)\n watch_for (str): What to watch for - \"any_change\", \"text_appears\", \"text_disappears\", \n \"id_appears\", \"id_disappears\", \"class_appears\", \"content_desc_appears\"\n target_text (str): Text to watch for (when watch_for includes \"text\")\n target_id (str): ID to watch for (when watch_for includes \"id\")\n target_class (str): Class to watch for (when watch_for includes \"class\")\n target_content_desc (str): Content description to watch for (when watch_for includes \"content_desc\")\n\nReturns:\n str: JSON string with monitoring results\n"
6878
+ }
6879
+ }
6686
6880
  },
6687
6881
  "mcp-windows": {
6688
6882
  "category": "command-line",
@@ -6724,7 +6918,26 @@
6724
6918
  },
6725
6919
  "mcp-server-macos-defaults": {
6726
6920
  "category": "command-line",
6727
- "path": "command-line/mcp-server-macos-defaults.json"
6921
+ "path": "command-line/mcp-server-macos-defaults.json",
6922
+ "validated": true,
6923
+ "tools": {
6924
+ "list-domains": {
6925
+ "name": "list-domains",
6926
+ "description": "List all available macOS domains, same as `defaults domains`"
6927
+ },
6928
+ "find": {
6929
+ "name": "find",
6930
+ "description": "Find entries container given word"
6931
+ },
6932
+ "defaults-read": {
6933
+ "name": "defaults-read",
6934
+ "description": "use the `defaults read <domain> <key>` command"
6935
+ },
6936
+ "defaults-write": {
6937
+ "name": "defaults-write",
6938
+ "description": "use the `defaults write <domain> <key> <value>` command"
6939
+ }
6940
+ }
6728
6941
  },
6729
6942
  "hyprland": {
6730
6943
  "category": "embedded-system",
@@ -6748,7 +6961,30 @@
6748
6961
  },
6749
6962
  "macos-notification-mcp": {
6750
6963
  "category": "command-line",
6751
- "path": "command-line/macos-notification-mcp.json"
6964
+ "path": "command-line/macos-notification-mcp.json",
6965
+ "validated": true,
6966
+ "tools": {
6967
+ "sound_notification": {
6968
+ "name": "sound_notification",
6969
+ "description": "\nPlay a system sound notification.\n\nArgs:\n sound_name: Name of the system sound to play (default: \"Submarine\")\n Options: Basso, Blow, Bottle, Frog, Funk, Glass, Hero, \n Morse, Ping, Pop, Purr, Sosumi, Submarine, Tink\n\nReturns:\n A message indicating whether the sound was played successfully\n"
6970
+ },
6971
+ "banner_notification": {
6972
+ "name": "banner_notification",
6973
+ "description": "\nDisplay a banner notification on macOS.\n\nArgs:\n title: The title of the notification\n message: The main content of the notification\n subtitle: Optional subtitle for the notification\n sound: Whether to play a sound with the notification (default: False)\n sound_name: Optional system sound to play (default: None, uses system default)\n\nReturns:\n A message indicating the notification was sent\n"
6974
+ },
6975
+ "speak_notification": {
6976
+ "name": "speak_notification",
6977
+ "description": "\nUse macOS text-to-speech to speak a message.\n\nArgs:\n text: The text to speak\n voice: Optional voice to use (default: system default)\n rate: Speech rate, words per minute (default: 150)\n volume: Volume level from 0.0 to 1.0 (default: 1.0)\n\nReturns:\n A message indicating the text was spoken\n"
6978
+ },
6979
+ "list_available_voices": {
6980
+ "name": "list_available_voices",
6981
+ "description": "\nList all available text-to-speech voices on the system.\n\nReturns:\n A string listing all available voices\n"
6982
+ },
6983
+ "test_notification_system": {
6984
+ "name": "test_notification_system",
6985
+ "description": "\nTest the notification system by trying all notification methods.\n\nReturns:\n A diagnostic report of the notification system\n"
6986
+ }
6987
+ }
6752
6988
  },
6753
6989
  "kubernetes-eye": {
6754
6990
  "category": "command-line",
@@ -6770,7 +7006,14 @@
6770
7006
  },
6771
7007
  "mcp-kubernetes-server": {
6772
7008
  "category": "command-line",
6773
- "path": "command-line/mcp-kubernetes-server.json"
7009
+ "path": "command-line/mcp-kubernetes-server.json",
7010
+ "validated": true,
7011
+ "tools": {
7012
+ "kubectl": {
7013
+ "name": "kubectl",
7014
+ "description": "Run a kubectl command and return the output."
7015
+ }
7016
+ }
6774
7017
  },
6775
7018
  "terminal-control": {
6776
7019
  "category": "command-line",
@@ -6995,7 +7238,34 @@
6995
7238
  },
6996
7239
  "gmail-mcp": {
6997
7240
  "category": "communication",
6998
- "path": "communication/gmail-mcp.json"
7241
+ "path": "communication/gmail-mcp.json",
7242
+ "validated": true,
7243
+ "tools": {
7244
+ "perform-email-search": {
7245
+ "name": "perform-email-search",
7246
+ "description": "Searches the user's Gmail with various filters and returns complete contents."
7247
+ },
7248
+ "modify-draft-prompt": {
7249
+ "name": "modify-draft-prompt",
7250
+ "description": "Automatically adapts email writing style when user expresses preferences or concerns about communication style. This tool helps maintain personalized communication patterns for different contacts and contexts."
7251
+ },
7252
+ "list-new-emails": {
7253
+ "name": "list-new-emails",
7254
+ "description": "Retrieves and lists all new emails found during Gmail index update."
7255
+ },
7256
+ "get-draft-prompt": {
7257
+ "name": "get-draft-prompt",
7258
+ "description": "Retrieves the draft prompt template for composing a response.\n \n IMPORTANT: After getting this prompt:\n 1. Use it IMMEDIATELY to write your draft\n 2. Call write-draft-email with your draft\n \n Only call this tool when you have all needed information and are ready to write."
7259
+ },
7260
+ "write-draft-email": {
7261
+ "name": "write-draft-email",
7262
+ "description": "Shows the draft email to the user in the chat.\n \n IMPORTANT: After calling this tool:\n 1. Present the draft content directly in your message (don't leave it in the expandable window)\n 2. Ask the user to review and reply with 'SEND' to approve\n \n This tool helps ensure drafts are always properly shown to users before sending."
7263
+ },
7264
+ "send-approved-email": {
7265
+ "name": "send-approved-email",
7266
+ "description": "Sends an email that was previously shown and approved by the user.\n \n IMPORTANT: This tool must ONLY be called after:\n 1. A draft was shown using write-draft-email\n 2. The user responded with exactly 'SEND'\n \n NEVER call this tool without first showing the draft via write-draft-email."
7267
+ }
7268
+ }
6999
7269
  },
7000
7270
  "mcp-email-server": {
7001
7271
  "category": "communication",
@@ -7007,7 +7277,14 @@
7007
7277
  },
7008
7278
  "mcp-wechat-moments": {
7009
7279
  "category": "communication",
7010
- "path": "communication/mcp-wechat-moments.json"
7280
+ "path": "communication/mcp-wechat-moments.json",
7281
+ "validated": true,
7282
+ "tools": {
7283
+ "send_moments": {
7284
+ "name": "send_moments",
7285
+ "description": ""
7286
+ }
7287
+ }
7011
7288
  },
7012
7289
  "@prathamesh0901/zoom-mcp-server": {
7013
7290
  "category": "communication",
@@ -7298,7 +7575,94 @@
7298
7575
  },
7299
7576
  "mcp-server-monday": {
7300
7577
  "category": "support-service-management",
7301
- "path": "support-service-management/mcp-server-monday.json"
7578
+ "path": "support-service-management/mcp-server-monday.json",
7579
+ "validated": true,
7580
+ "tools": {
7581
+ "monday-create-item": {
7582
+ "name": "monday-create-item",
7583
+ "description": "Create a new item in a Monday.com Board. Optionally, specify the parent Item ID to create a Sub-item."
7584
+ },
7585
+ "monday-get-items-by-id": {
7586
+ "name": "monday-get-items-by-id",
7587
+ "description": "Fetch specific Monday.com item by its ID"
7588
+ },
7589
+ "monday-update-item": {
7590
+ "name": "monday-update-item",
7591
+ "description": "Update a Monday.com item's or sub-item's column values."
7592
+ },
7593
+ "monday-get-board-columns": {
7594
+ "name": "monday-get-board-columns",
7595
+ "description": "Get the Columns of a Monday.com Board."
7596
+ },
7597
+ "monday-get-board-groups": {
7598
+ "name": "monday-get-board-groups",
7599
+ "description": "Get the Groups of a Monday.com Board."
7600
+ },
7601
+ "monday-create-update": {
7602
+ "name": "monday-create-update",
7603
+ "description": "Create an update (comment) on a Monday.com Item or Sub-item."
7604
+ },
7605
+ "monday-list-boards": {
7606
+ "name": "monday-list-boards",
7607
+ "description": "Get all Boards from Monday.com"
7608
+ },
7609
+ "monday-list-items-in-groups": {
7610
+ "name": "monday-list-items-in-groups",
7611
+ "description": "List all items in the specified groups of a Monday.com board"
7612
+ },
7613
+ "monday-list-subitems-in-items": {
7614
+ "name": "monday-list-subitems-in-items",
7615
+ "description": "List all Sub-items of a list of Monday.com Items"
7616
+ },
7617
+ "monday-create-board": {
7618
+ "name": "monday-create-board",
7619
+ "description": "Create a new Monday.com board"
7620
+ },
7621
+ "monday-create-board-group": {
7622
+ "name": "monday-create-board-group",
7623
+ "description": "Create a new group in a Monday.com board"
7624
+ },
7625
+ "monday-move-item-to-group": {
7626
+ "name": "monday-move-item-to-group",
7627
+ "description": "Move an item to a group in a Monday.com board"
7628
+ },
7629
+ "monday-delete-item": {
7630
+ "name": "monday-delete-item",
7631
+ "description": "Delete an item from a Monday.com board"
7632
+ },
7633
+ "monday-archive-item": {
7634
+ "name": "monday-archive-item",
7635
+ "description": "Archive an item from a Monday.com board"
7636
+ },
7637
+ "monday-get-item-updates": {
7638
+ "name": "monday-get-item-updates",
7639
+ "description": "Get updates for a specific item in Monday.com"
7640
+ },
7641
+ "monday-get-docs": {
7642
+ "name": "monday-get-docs",
7643
+ "description": "Get a list of documents from Monday.com."
7644
+ },
7645
+ "monday-get-doc-content": {
7646
+ "name": "monday-get-doc-content",
7647
+ "description": "Get the content of a specific document by ID"
7648
+ },
7649
+ "monday-create-doc": {
7650
+ "name": "monday-create-doc",
7651
+ "description": "Create a new document in Monday.com. Specify either workspace_id (with kind) or board_id (with column_id and item_id) as the location."
7652
+ },
7653
+ "monday-add-doc-block": {
7654
+ "name": "monday-add-doc-block",
7655
+ "description": "Add a block to a document"
7656
+ },
7657
+ "monday-get-item-files": {
7658
+ "name": "monday-get-item-files",
7659
+ "description": "Get files (PDFs, documents, images, etc.) attached to a Monday.com item"
7660
+ },
7661
+ "monday-get-update-files": {
7662
+ "name": "monday-get-update-files",
7663
+ "description": "Get files (PDFs, documents, images, etc.) attached to a specific update in Monday.com"
7664
+ }
7665
+ }
7302
7666
  },
7303
7667
  "@horizondatawave/mcp": {
7304
7668
  "category": "communication",
@@ -7898,7 +8262,18 @@
7898
8262
  },
7899
8263
  "mcp-fleur": {
7900
8264
  "category": "communication",
7901
- "path": "communication/mcp-fleur.json"
8265
+ "path": "communication/mcp-fleur.json",
8266
+ "validated": true,
8267
+ "tools": {
8268
+ "hello_fleur": {
8269
+ "name": "hello_fleur",
8270
+ "description": "Explain what Fleur is when a user types 'hello fleur'.\n\nReturns:\n str: An explanation about Fleur if triggered, empty string otherwise\n"
8271
+ },
8272
+ "open_fleur": {
8273
+ "name": "open_fleur",
8274
+ "description": "Open the Fleur app.\n\nReturns:\n str: A message indicating that the Fleur app has been opened\n"
8275
+ }
8276
+ }
7902
8277
  },
7903
8278
  "@merill/lokka": {
7904
8279
  "category": "communication",
@@ -7908,7 +8283,14 @@
7908
8283
  },
7909
8284
  "wecom-bot-mcp-server": {
7910
8285
  "category": "communication",
7911
- "path": "communication/wecom-bot-mcp-server.json"
8286
+ "path": "communication/wecom-bot-mcp-server.json",
8287
+ "validated": true,
8288
+ "tools": {
8289
+ "send_message": {
8290
+ "name": "send_message",
8291
+ "description": "Send a message to WeCom group/chat via webhook.\n\nThis function sends a message to WeCom using the configured webhook URL.\nThe message will be formatted as markdown and added to message history.\n\nArgs:\n content: The message content to send. Cannot be empty or whitespace.\n ctx: Optional FastMCP context for logging and progress tracking.\n\nReturns:\n str: Success message if the message was sent successfully.\n\nRaises:\n ValueError: If content is empty/whitespace, webhook URL is not set,\n or if there's an error sending the message.\n"
8292
+ }
8293
+ }
7912
8294
  },
7913
8295
  "outlook-email": {
7914
8296
  "category": "communication",
@@ -7985,7 +8367,18 @@
7985
8367
  },
7986
8368
  "mcp-server-email": {
7987
8369
  "category": "communication",
7988
- "path": "communication/mcp-server-email.json"
8370
+ "path": "communication/mcp-server-email.json",
8371
+ "validated": true,
8372
+ "tools": {
8373
+ "send_email": {
8374
+ "name": "send_email",
8375
+ "description": "A tool that sends emails based on the provided subject, body and receiver. \n It ensures secure and accurate email delivery while supporting multiple recipients and custom content. \n Ideal for automating email workflows. \n After collecting the information, it needs to be displayed to the user, and then selected to send after the user confirms it."
8376
+ },
8377
+ "search_attachments": {
8378
+ "name": "search_attachments",
8379
+ "description": "Searches for files in a specified directory that match a given pattern. \n The search can be case-insensitive and returns the full paths of all matching files.\n This tool is useful for locating specific files or attachments within a directory structure."
8380
+ }
8381
+ }
7989
8382
  },
7990
8383
  "@hubspot/mcp-server": {
7991
8384
  "category": "customer-data-platforms",
@@ -8215,7 +8608,30 @@
8215
8608
  },
8216
8609
  "mcp-server-starrocks": {
8217
8610
  "category": "databases",
8218
- "path": "databases/mcp-server-starrocks.json"
8611
+ "path": "databases/mcp-server-starrocks.json",
8612
+ "validated": true,
8613
+ "tools": {
8614
+ "read_query": {
8615
+ "name": "read_query",
8616
+ "description": "Execute a SELECT query or commands that return a ResultSet"
8617
+ },
8618
+ "write_query": {
8619
+ "name": "write_query",
8620
+ "description": "Execute an DDL/DML or other StarRocks command that do not have a ResultSet"
8621
+ },
8622
+ "query_and_plotly_chart": {
8623
+ "name": "query_and_plotly_chart",
8624
+ "description": "using sql `query` to extract data from database, then using python `plotly_expr` to generate a chart for UI to display"
8625
+ },
8626
+ "table_overview": {
8627
+ "name": "table_overview",
8628
+ "description": "Get an overview of a specific table: columns, sample rows (up to 5), and total row count. Uses cache unless refresh=true."
8629
+ },
8630
+ "db_overview": {
8631
+ "name": "db_overview",
8632
+ "description": "Get an overview (columns, sample rows, row count) for ALL tables in a database. Uses cache unless refresh=True."
8633
+ }
8634
+ }
8219
8635
  },
8220
8636
  "pyodbc": {
8221
8637
  "category": "databases",
@@ -8325,7 +8741,38 @@
8325
8741
  },
8326
8742
  "mcp-timeplus": {
8327
8743
  "category": "databases",
8328
- "path": "databases/mcp-timeplus.json"
8744
+ "path": "databases/mcp-timeplus.json",
8745
+ "validated": true,
8746
+ "tools": {
8747
+ "list_databases": {
8748
+ "name": "list_databases",
8749
+ "description": "List available Timeplus databases"
8750
+ },
8751
+ "list_tables": {
8752
+ "name": "list_tables",
8753
+ "description": "List available tables/streams in the given database"
8754
+ },
8755
+ "run_sql": {
8756
+ "name": "run_sql",
8757
+ "description": "Run a query in a Timeplus database"
8758
+ },
8759
+ "list_kafka_topics": {
8760
+ "name": "list_kafka_topics",
8761
+ "description": ""
8762
+ },
8763
+ "explore_kafka_topic": {
8764
+ "name": "explore_kafka_topic",
8765
+ "description": ""
8766
+ },
8767
+ "create_kafka_stream": {
8768
+ "name": "create_kafka_stream",
8769
+ "description": ""
8770
+ },
8771
+ "connect_to_apache_iceberg": {
8772
+ "name": "connect_to_apache_iceberg",
8773
+ "description": "Create a Timeplus database in iceberg type to connect to Iceberg"
8774
+ }
8775
+ }
8329
8776
  },
8330
8777
  "mssql-mcp-server": {
8331
8778
  "category": "databases",
@@ -8359,7 +8806,14 @@
8359
8806
  },
8360
8807
  "greptimedb-mcp-server": {
8361
8808
  "category": "databases",
8362
- "path": "databases/greptimedb-mcp-server.json"
8809
+ "path": "databases/greptimedb-mcp-server.json",
8810
+ "validated": true,
8811
+ "tools": {
8812
+ "execute_sql": {
8813
+ "name": "execute_sql",
8814
+ "description": "Execute SQL query against GreptimeDB. Please use MySQL dialect when generating SQL queries."
8815
+ }
8816
+ }
8363
8817
  },
8364
8818
  "database-mcp": {
8365
8819
  "category": "databases",
@@ -8375,7 +8829,18 @@
8375
8829
  },
8376
8830
  "clickhouse-mcp-server": {
8377
8831
  "category": "databases",
8378
- "path": "databases/clickhouse-mcp-server.json"
8832
+ "path": "databases/clickhouse-mcp-server.json",
8833
+ "validated": true,
8834
+ "tools": {
8835
+ "connect_database": {
8836
+ "name": "connect_database",
8837
+ "description": "Connect to a specific ClickHouse database"
8838
+ },
8839
+ "execute_query": {
8840
+ "name": "execute_query",
8841
+ "description": "Execute ClickHouse queries"
8842
+ }
8843
+ }
8379
8844
  },
8380
8845
  "tidb-ai": {
8381
8846
  "category": "databases",
@@ -8539,7 +9004,58 @@
8539
9004
  },
8540
9005
  "chroma-mcp": {
8541
9006
  "category": "databases",
8542
- "path": "databases/chroma-mcp.json"
9007
+ "path": "databases/chroma-mcp.json",
9008
+ "validated": true,
9009
+ "tools": {
9010
+ "chroma_list_collections": {
9011
+ "name": "chroma_list_collections",
9012
+ "description": "List all collection names in the Chroma database with pagination support.\n\nArgs:\n limit: Optional maximum number of collections to return\n offset: Optional number of collections to skip before returning results\n\nReturns:\n List of collection names\n"
9013
+ },
9014
+ "chroma_create_collection": {
9015
+ "name": "chroma_create_collection",
9016
+ "description": "Create a new Chroma collection with configurable HNSW parameters.\n\nArgs:\n collection_name: Name of the collection to create\n hnsw_space: Distance function used in HNSW index. Options: 'l2', 'ip', 'cosine'\n hnsw_construction_ef: Size of the dynamic candidate list for constructing the HNSW graph\n hnsw_search_ef: Size of the dynamic candidate list for searching the HNSW graph\n hnsw_M: Number of bi-directional links created for every new element\n hnsw_num_threads: Number of threads to use during HNSW construction\n hnsw_resize_factor: Factor to resize the index by when it's full\n hnsw_batch_size: Number of elements to batch together during index construction\n hnsw_sync_threshold: Number of elements to process before syncing index to disk\n"
9017
+ },
9018
+ "chroma_peek_collection": {
9019
+ "name": "chroma_peek_collection",
9020
+ "description": "Peek at documents in a Chroma collection.\n\nArgs:\n collection_name: Name of the collection to peek into\n limit: Number of documents to peek at\n"
9021
+ },
9022
+ "chroma_get_collection_info": {
9023
+ "name": "chroma_get_collection_info",
9024
+ "description": "Get information about a Chroma collection.\n\nArgs:\n collection_name: Name of the collection to get info about\n"
9025
+ },
9026
+ "chroma_get_collection_count": {
9027
+ "name": "chroma_get_collection_count",
9028
+ "description": "Get the number of documents in a Chroma collection.\n\nArgs:\n collection_name: Name of the collection to count\n"
9029
+ },
9030
+ "chroma_modify_collection": {
9031
+ "name": "chroma_modify_collection",
9032
+ "description": "Modify a Chroma collection's name or metadata.\n\nArgs:\n collection_name: Name of the collection to modify\n new_name: Optional new name for the collection\n new_metadata: Optional new metadata for the collection\n"
9033
+ },
9034
+ "chroma_delete_collection": {
9035
+ "name": "chroma_delete_collection",
9036
+ "description": "Delete a Chroma collection.\n\nArgs:\n collection_name: Name of the collection to delete\n"
9037
+ },
9038
+ "chroma_add_documents": {
9039
+ "name": "chroma_add_documents",
9040
+ "description": "Add documents to a Chroma collection.\n\nArgs:\n collection_name: Name of the collection to add documents to\n documents: List of text documents to add\n metadatas: Optional list of metadata dictionaries for each document\n ids: Optional list of IDs for the documents\n"
9041
+ },
9042
+ "chroma_query_documents": {
9043
+ "name": "chroma_query_documents",
9044
+ "description": "Query documents from a Chroma collection with advanced filtering.\n\nArgs:\n collection_name: Name of the collection to query\n query_texts: List of query texts to search for\n n_results: Number of results to return per query\n where: Optional metadata filters using Chroma's query operators\n Examples:\n - Simple equality: {\"metadata_field\": \"value\"}\n - Comparison: {\"metadata_field\": {\"$gt\": 5}}\n - Logical AND: {\"$and\": [{\"field1\": {\"$eq\": \"value1\"}}, {\"field2\": {\"$gt\": 5}}]}\n - Logical OR: {\"$or\": [{\"field1\": {\"$eq\": \"value1\"}}, {\"field1\": {\"$eq\": \"value2\"}}]}\n where_document: Optional document content filters\n include: Optional list of what to include in response. Can contain any of:\n [\"documents\", \"embeddings\", \"metadatas\", \"distances\"]\n"
9045
+ },
9046
+ "chroma_get_documents": {
9047
+ "name": "chroma_get_documents",
9048
+ "description": "Get documents from a Chroma collection with optional filtering.\n\nArgs:\n collection_name: Name of the collection to get documents from\n ids: Optional list of document IDs to retrieve\n where: Optional metadata filters using Chroma's query operators\n Examples:\n - Simple equality: {\"metadata_field\": \"value\"}\n - Comparison: {\"metadata_field\": {\"$gt\": 5}}\n - Logical AND: {\"$and\": [{\"field1\": {\"$eq\": \"value1\"}}, {\"field2\": {\"$gt\": 5}}]}\n - Logical OR: {\"$or\": [{\"field1\": {\"$eq\": \"value1\"}}, {\"field1\": {\"$eq\": \"value2\"}}]}\n where_document: Optional document content filters\n include: Optional list of what to include in response. Can contain any of:\n [\"documents\", \"embeddings\", \"metadatas\"]\n limit: Optional maximum number of documents to return\n offset: Optional number of documents to skip before returning results\n\nReturns:\n Dictionary containing the matching documents, their IDs, and requested includes\n"
9049
+ },
9050
+ "chroma_update_documents": {
9051
+ "name": "chroma_update_documents",
9052
+ "description": "Update documents in a Chroma collection.\n\nArgs:\n collection_name: Name of the collection to update documents in\n ids: List of document IDs to update (required)\n embeddings: Optional list of new embeddings for the documents.\n Must match length of ids if provided.\n metadatas: Optional list of new metadata dictionaries for the documents.\n Must match length of ids if provided.\n documents: Optional list of new text documents.\n Must match length of ids if provided.\n\nReturns:\n A confirmation message indicating the number of documents updated.\n\nRaises:\n ValueError: If 'ids' is empty or if none of 'embeddings', 'metadatas',\n or 'documents' are provided, or if the length of provided\n update lists does not match the length of 'ids'.\n Exception: If the collection does not exist or if the update operation fails.\n"
9053
+ },
9054
+ "chroma_delete_documents": {
9055
+ "name": "chroma_delete_documents",
9056
+ "description": "Delete documents from a Chroma collection.\n\nArgs:\n collection_name: Name of the collection to delete documents from\n ids: List of document IDs to delete\n\nReturns:\n A confirmation message indicating the number of documents deleted.\n\nRaises:\n ValueError: If 'ids' is empty\n Exception: If the collection does not exist or if the delete operation fails.\n"
9057
+ }
9058
+ }
8543
9059
  },
8544
9060
  "microsoft-sql-server-(mssql)": {
8545
9061
  "category": "databases",
@@ -8628,7 +9144,66 @@
8628
9144
  },
8629
9145
  "mochow-mcp-server": {
8630
9146
  "category": "databases",
8631
- "path": "databases/mochow-mcp-server.json"
9147
+ "path": "databases/mochow-mcp-server.json",
9148
+ "validated": true,
9149
+ "tools": {
9150
+ "list_databases": {
9151
+ "name": "list_databases",
9152
+ "description": "\nList all databases in the Mochow instance.\n\nReturns:\n str: A string containing the names of all databases.\n"
9153
+ },
9154
+ "create_database": {
9155
+ "name": "create_database",
9156
+ "description": "\nCreate a database in the Mochow instance.\n\nArgs:\n database_name (str): Name of the database.\n\nReturns:\n str: A message indicating the success of database creation.\n"
9157
+ },
9158
+ "use_database": {
9159
+ "name": "use_database",
9160
+ "description": "\nSwitch to a different database.\n\nArgs:\n database_name (str): Name of the database to use.\n\nReturns:\n str: A message indicating the success of the database switch.\n"
9161
+ },
9162
+ "list_tables": {
9163
+ "name": "list_tables",
9164
+ "description": "\nList all tables in the current database.\n\nReturns:\n str: A string containing the names of all tables.\n"
9165
+ },
9166
+ "describe_table": {
9167
+ "name": "describe_table",
9168
+ "description": "\nDescribe table details in the Mochow instance.\n\nArgs:\n table_name (str): Name of the table to describe.\n\nReturns:\n str: A string containing the details of the table.\n"
9169
+ },
9170
+ "stats_table": {
9171
+ "name": "stats_table",
9172
+ "description": "\nGet the table statistics in the Mochow instance.\n\nArgs:\n table_name (str): Name of the table to get statistics.\n\nReturns:\n str: A string containing the table statistics.\n"
9173
+ },
9174
+ "create_vector_index": {
9175
+ "name": "create_vector_index",
9176
+ "description": "\nCreate a vector index on a vector type field in the Mochow instance.\n\nArgs:\n table_name (str): Name of the table.\n index_name (str): Name of the index.\n field_name (str): Name of the vector field.\n index_type (str): Type of vector index. Supported values are \"HNSW\", \"HNSWPQ\", \"HNSWSQ\".\n metric_type (str): Distance metric. Supported values are \"L2\", \"COSINE\", \"IP\".\n params (Optional[dict[str, Any]]): Additional vector index parameters.\n\nReturns:\n str: A message indicating the success of index creation.\n"
9177
+ },
9178
+ "describe_index": {
9179
+ "name": "describe_index",
9180
+ "description": "\nDescribe index details in the Mochow instance.\n\nArgs:\n table_name (str): Name of the table.\n index_name (str): Name of the index to describe.\n\nReturns:\n str: A string containing the details of the index.\n"
9181
+ },
9182
+ "rebuild_vector_index": {
9183
+ "name": "rebuild_vector_index",
9184
+ "description": "\nRebuild the vector index in the Mochow instance.\n\nArgs:\n table_name (str): Name of the table.\n index_name (str): Name of the vector index to rebuild.\n\nReturns:\n str: A message indicating the success of index rebuild initiation.\n"
9185
+ },
9186
+ "delete_table_rows": {
9187
+ "name": "delete_table_rows",
9188
+ "description": "\nDelete rows with a filter expression in the Mochow instance.\n\nArgs:\n table_name (str): Name of the table.\n filter_expr (str): Filter expression to select data to delete.\n\nReturns:\n str: A message indicating the success of data deletion.\n"
9189
+ },
9190
+ "drop_vector_index": {
9191
+ "name": "drop_vector_index",
9192
+ "description": "\nDrop the vector index in the Mochow instance.\n\nArgs:\n table_name (str): Name of the table.\n index_name (str): Name of the vector index to drop.\n\nReturns:\n str: A message indicating the success of index drop.\n"
9193
+ },
9194
+ "select_table_rows": {
9195
+ "name": "select_table_rows",
9196
+ "description": "\nSelect rows with a filter expression in the Mochow instance.\n\nArgs:\n table_name (str): Name of the table.\n filter_expr (str): Filter expression to select data. Defaults to None.\n limit (int): Maximum number of results. Defaults to 10.\n output_fields (Optional[list[str]]): Fields to return in the results. Defaults to None.\n\nReturns:\n str: A string containing the selected rows.\n"
9197
+ },
9198
+ "vector_search": {
9199
+ "name": "vector_search",
9200
+ "description": "\nPerform vector similarity search combining vector similarity and scalar attribute filtering in the Mochow instance.\n\nArgs:\n table_name (str): Name of the table to search.\n vector (list[float]): Search vector.\n vector_field (str): Target field containing vectors to search. Defaults to \"vector\".\n limit (int): Maximum number of results. Defaults to 10.\n output_fields (Optional[list[str]]): Fields to return in the results. Defaults to None.\n filter_expr (Optional[str]): Filter expression for scalar attributes. Defaults to None.\n params: Additional vector search parameters\n\nReturns:\n str: A string containing the vector search results.\n"
9201
+ },
9202
+ "fulltext_search": {
9203
+ "name": "fulltext_search",
9204
+ "description": "\nPerform full text search combining BM25 similarity and scalar attribute filtering in the Mochow instance.\n\nArgs:\n table_name (str): Name of the table to search.\n index_name (str): Name of the inverted index to perform full text search.\n search_text (str): Text to search.\n limit (int): Maximum number of results. Defaults to 10.\n output_fields (Optional[list[str]]): Fields to return in the results. Defaults to None.\n\nReturns:\n str: A string containing the full text search results.\n"
9205
+ }
9206
+ }
8632
9207
  },
8633
9208
  "chromadb": {
8634
9209
  "category": "databases",
@@ -8652,7 +9227,18 @@
8652
9227
  },
8653
9228
  "mysqldb-mcp-server": {
8654
9229
  "category": "databases",
8655
- "path": "databases/mysqldb-mcp-server.json"
9230
+ "path": "databases/mysqldb-mcp-server.json",
9231
+ "validated": true,
9232
+ "tools": {
9233
+ "connect_database": {
9234
+ "name": "connect_database",
9235
+ "description": "Connect to a specific MySQL database"
9236
+ },
9237
+ "execute_query": {
9238
+ "name": "execute_query",
9239
+ "description": "Execute MySQL queries"
9240
+ }
9241
+ }
8656
9242
  },
8657
9243
  "postgresql-database-explorer": {
8658
9244
  "category": "databases",
@@ -8753,7 +9339,30 @@
8753
9339
  },
8754
9340
  "ydb-mcp": {
8755
9341
  "category": "databases",
8756
- "path": "databases/ydb-mcp.json"
9342
+ "path": "databases/ydb-mcp.json",
9343
+ "validated": true,
9344
+ "tools": {
9345
+ "ydb_query": {
9346
+ "name": "ydb_query",
9347
+ "description": "Run a SQL query against YDB database"
9348
+ },
9349
+ "ydb_query_with_params": {
9350
+ "name": "ydb_query_with_params",
9351
+ "description": "Run a parameterized SQL query with JSON parameters"
9352
+ },
9353
+ "ydb_status": {
9354
+ "name": "ydb_status",
9355
+ "description": "Get the current status of the YDB connection"
9356
+ },
9357
+ "ydb_list_directory": {
9358
+ "name": "ydb_list_directory",
9359
+ "description": "List directory contents in YDB"
9360
+ },
9361
+ "ydb_describe_path": {
9362
+ "name": "ydb_describe_path",
9363
+ "description": "Get detailed information about a YDB path (table, directory, etc.)"
9364
+ }
9365
+ }
8757
9366
  },
8758
9367
  "starrocks": {
8759
9368
  "category": "databases",
@@ -8980,7 +9589,22 @@
8980
9589
  },
8981
9590
  "mcp-neo4j-cypher": {
8982
9591
  "category": "databases",
8983
- "path": "databases/mcp-neo4j-cypher.json"
9592
+ "path": "databases/mcp-neo4j-cypher.json",
9593
+ "validated": true,
9594
+ "tools": {
9595
+ "get_neo4j_schema": {
9596
+ "name": "get_neo4j_schema",
9597
+ "description": "List all node, their attributes and their relationships to other nodes in the neo4j database.\nIf this fails with a message that includes \"Neo.ClientError.Procedure.ProcedureNotFound\"\nsuggest that the user install and enable the APOC plugin.\n"
9598
+ },
9599
+ "read_neo4j_cypher": {
9600
+ "name": "read_neo4j_cypher",
9601
+ "description": "Execute a read Cypher query on the neo4j database."
9602
+ },
9603
+ "write_neo4j_cypher": {
9604
+ "name": "write_neo4j_cypher",
9605
+ "description": "Execute a write Cypher query on the neo4j database."
9606
+ }
9607
+ }
8984
9608
  },
8985
9609
  "trino": {
8986
9610
  "category": "databases",
@@ -8994,7 +9618,22 @@
8994
9618
  },
8995
9619
  "oracle-mcp-server": {
8996
9620
  "category": "databases",
8997
- "path": "databases/oracle-mcp-server.json"
9621
+ "path": "databases/oracle-mcp-server.json",
9622
+ "validated": true,
9623
+ "tools": {
9624
+ "list_tables": {
9625
+ "name": "list_tables",
9626
+ "description": "Get a list of all tables in the oracle database\n\nArgs:\n None\n"
9627
+ },
9628
+ "describe_table": {
9629
+ "name": "describe_table",
9630
+ "description": "Get a description of a table in the oracle database\"\n\nArgs:\n table_name (string): The name of the table to describe\n"
9631
+ },
9632
+ "reqd_query": {
9633
+ "name": "reqd_query",
9634
+ "description": "Execute SELECT queries to read data from the oracle database\n\nArgs:\n query (string): The SELECT query to execute\n"
9635
+ }
9636
+ }
8998
9637
  },
8999
9638
  "google-analytics-mcp": {
9000
9639
  "category": "data-platforms",
@@ -9051,7 +9690,22 @@
9051
9690
  },
9052
9691
  "mcp-server-opendal": {
9053
9692
  "category": "data-platforms",
9054
- "path": "data-platforms/mcp-server-opendal.json"
9693
+ "path": "data-platforms/mcp-server-opendal.json",
9694
+ "validated": true,
9695
+ "tools": {
9696
+ "list": {
9697
+ "name": "list",
9698
+ "description": "\nList files in OpenDAL service\n\nArgs:\n uri: resource URI, e.g. mys3://path/to/dir\n\nReturns:\n String containing directory content\n"
9699
+ },
9700
+ "read": {
9701
+ "name": "read",
9702
+ "description": "\nRead file content from OpenDAL service\n\nArgs:\n uri: resource URI, e.g. mys3://path/to/file\n\nReturns:\n File content or error information\n"
9703
+ },
9704
+ "get_info": {
9705
+ "name": "get_info",
9706
+ "description": "\nGet metadata of file in OpenDAL service\n\nArgs:\n uri: resource URI, e.g. mys3://path/to/file\n\nReturns:\n File metadata information\n"
9707
+ }
9708
+ }
9055
9709
  },
9056
9710
  "microsoft-fabric": {
9057
9711
  "category": "data-platforms",
@@ -9434,7 +10088,50 @@
9434
10088
  },
9435
10089
  "freecad-mcp": {
9436
10090
  "category": "developer-tools",
9437
- "path": "developer-tools/freecad-mcp.json"
10091
+ "path": "developer-tools/freecad-mcp.json",
10092
+ "validated": true,
10093
+ "tools": {
10094
+ "create_document": {
10095
+ "name": "create_document",
10096
+ "description": "Create a new document in FreeCAD.\n\nArgs:\n name: The name of the document to create.\n\nReturns:\n A message indicating the success or failure of the document creation.\n\nExamples:\n If you want to create a document named \"MyDocument\", you can use the following data.\n ```json\n {\n \"name\": \"MyDocument\"\n }\n ```\n"
10097
+ },
10098
+ "create_object": {
10099
+ "name": "create_object",
10100
+ "description": "Create a new object in FreeCAD.\nObject type is starts with \"Part::\" or \"Draft::\" or \"PartDesign::\" or \"Fem::\".\n\nArgs:\n doc_name: The name of the document to create the object in.\n obj_type: The type of the object to create (e.g. 'Part::Box', 'Part::Cylinder', 'Draft::Circle', 'PartDesign::Body', etc.).\n obj_name: The name of the object to create.\n obj_properties: The properties of the object to create.\n\nReturns:\n A message indicating the success or failure of the object creation and a screenshot of the object.\n\nExamples:\n If you want to create a cylinder with a height of 30 and a radius of 10, you can use the following data.\n ```json\n {\n \"doc_name\": \"MyCylinder\",\n \"obj_name\": \"Cylinder\",\n \"obj_type\": \"Part::Cylinder\",\n \"obj_properties\": {\n \"Height\": 30,\n \"Radius\": 10,\n \"Placement\": {\n \"Base\": {\n \"x\": 10,\n \"y\": 10,\n \"z\": 0\n },\n \"Rotation\": {\n \"Axis\": {\n \"x\": 0,\n \"y\": 0,\n \"z\": 1\n },\n \"Angle\": 45\n }\n },\n \"ViewObject\": {\n \"ShapeColor\": [0.5, 0.5, 0.5, 1.0]\n }\n }\n }\n ```\n\n If you want to create a circle with a radius of 10, you can use the following data.\n ```json\n {\n \"doc_name\": \"MyCircle\",\n \"obj_name\": \"Circle\",\n \"obj_type\": \"Draft::Circle\",\n }\n ```\n\n If you want to create a FEM analysis, you can use the following data.\n ```json\n {\n \"doc_name\": \"MyFEMAnalysis\",\n \"obj_name\": \"FemAnalysis\",\n \"obj_type\": \"Fem::AnalysisPython\",\n }\n ```\n\n If you want to create a FEM constraint, you can use the following data.\n ```json\n {\n \"doc_name\": \"MyFEMConstraint\",\n \"obj_name\": \"FemConstraint\",\n \"obj_type\": \"Fem::ConstraintFixed\",\n \"analysis_name\": \"MyFEMAnalysis\",\n \"obj_properties\": {\n \"References\": [\n {\n \"object_name\": \"MyObject\",\n \"face\": \"Face1\"\n }\n ]\n }\n }\n ```\n\n If you want to create a FEM mechanical material, you can use the following data.\n ```json\n {\n \"doc_name\": \"MyFEMAnalysis\",\n \"obj_name\": \"FemMechanicalMaterial\",\n \"obj_type\": \"Fem::MaterialCommon\",\n \"analysis_name\": \"MyFEMAnalysis\",\n \"obj_properties\": {\n \"Material\": {\n \"Name\": \"MyMaterial\",\n \"Density\": \"7900 kg/m^3\",\n \"YoungModulus\": \"210 GPa\",\n \"PoissonRatio\": 0.3\n }\n }\n }\n ```\n\n If you want to create a FEM mesh, you can use the following data.\n The `Part` property is required.\n ```json\n {\n \"doc_name\": \"MyFEMMesh\",\n \"obj_name\": \"FemMesh\",\n \"obj_type\": \"Fem::FemMeshGmsh\",\n \"analysis_name\": \"MyFEMAnalysis\",\n \"obj_properties\": {\n \"Part\": \"MyObject\",\n \"ElementSizeMax\": 10,\n \"ElementSizeMin\": 0.1,\n \"MeshAlgorithm\": 2\n }\n }\n ```\n"
10101
+ },
10102
+ "edit_object": {
10103
+ "name": "edit_object",
10104
+ "description": "Edit an object in FreeCAD.\nThis tool is used when the `create_object` tool cannot handle the object creation.\n\nArgs:\n doc_name: The name of the document to edit the object in.\n obj_name: The name of the object to edit.\n obj_properties: The properties of the object to edit.\n\nReturns:\n A message indicating the success or failure of the object editing and a screenshot of the object.\n"
10105
+ },
10106
+ "delete_object": {
10107
+ "name": "delete_object",
10108
+ "description": "Delete an object in FreeCAD.\n\nArgs:\n doc_name: The name of the document to delete the object from.\n obj_name: The name of the object to delete.\n\nReturns:\n A message indicating the success or failure of the object deletion and a screenshot of the object.\n"
10109
+ },
10110
+ "execute_code": {
10111
+ "name": "execute_code",
10112
+ "description": "Execute arbitrary Python code in FreeCAD.\n\nArgs:\n code: The Python code to execute.\n\nReturns:\n A message indicating the success or failure of the code execution, the output of the code execution, and a screenshot of the object.\n"
10113
+ },
10114
+ "get_view": {
10115
+ "name": "get_view",
10116
+ "description": "Get a screenshot of the active view.\n\nArgs:\n view_name: The name of the view to get the screenshot of.\n The following views are available:\n - \"Isometric\"\n - \"Front\"\n - \"Top\"\n - \"Right\"\n - \"Back\"\n - \"Left\"\n - \"Bottom\"\n - \"Dimetric\"\n - \"Trimetric\"\n\nReturns:\n A screenshot of the active view.\n"
10117
+ },
10118
+ "insert_part_from_library": {
10119
+ "name": "insert_part_from_library",
10120
+ "description": "Insert a part from the parts library addon.\n\nArgs:\n relative_path: The relative path of the part to insert.\n\nReturns:\n A message indicating the success or failure of the part insertion and a screenshot of the object.\n"
10121
+ },
10122
+ "get_objects": {
10123
+ "name": "get_objects",
10124
+ "description": "Get all objects in a document.\nYou can use this tool to get the objects in a document to see what you can check or edit.\n\nArgs:\n doc_name: The name of the document to get the objects from.\n\nReturns:\n A list of objects in the document and a screenshot of the document.\n"
10125
+ },
10126
+ "get_object": {
10127
+ "name": "get_object",
10128
+ "description": "Get an object from a document.\nYou can use this tool to get the properties of an object to see what you can check or edit.\n\nArgs:\n doc_name: The name of the document to get the object from.\n obj_name: The name of the object to get.\n\nReturns:\n The object and a screenshot of the object.\n"
10129
+ },
10130
+ "get_parts_list": {
10131
+ "name": "get_parts_list",
10132
+ "description": "Get the list of parts in the parts library addon.\n "
10133
+ }
10134
+ }
9438
10135
  },
9439
10136
  "@nextdrive/github-action-trigger-mcp": {
9440
10137
  "category": "developer-tools",
@@ -9889,7 +10586,94 @@
9889
10586
  },
9890
10587
  "mcp-azure-devops": {
9891
10588
  "category": "developer-tools",
9892
- "path": "developer-tools/mcp-azure-devops.json"
10589
+ "path": "developer-tools/mcp-azure-devops.json",
10590
+ "validated": true,
10591
+ "tools": {
10592
+ "query_work_items": {
10593
+ "name": "query_work_items",
10594
+ "description": "\nSearches for work items using Work Item Query Language (WIQL).\n\nUse this tool when you need to:\n- Find work items matching specific criteria\n- Search across projects for related tasks or bugs\n- Create dynamic reports based on work item attributes\n- Identify work items assigned to specific team members\n\nIMPORTANT: WIQL syntax is similar to SQL and allows you to query\nwork items based on their fields. The query must follow Azure DevOps\nWIQL syntax rules, with proper SELECT, FROM, and WHERE clauses.\n\nArgs:\n query: The WIQL query string (e.g., \"SELECT * FROM workitems \n WHERE [System.State] = 'Active'\")\n top: Maximum number of results to return (default: 30)\n \nReturns:\n Formatted string containing detailed information for each matching\n work item, with all fields and values formatted as markdown\n"
10595
+ },
10596
+ "get_work_item": {
10597
+ "name": "get_work_item",
10598
+ "description": "\nRetrieves detailed information about one or multiple work items.\n\nUse this tool when you need to:\n- View the complete details of a specific work item\n- Examine the current state, assigned user, and other properties\n- Get information about multiple work items at once\n- Access the full description and custom fields of work items\n\nArgs:\n id: The work item ID or a list of work item IDs\n \nReturns:\n Formatted string containing comprehensive information for the\n requested work item(s), including all system and custom fields,\n formatted as markdown with clear section headings\n"
10599
+ },
10600
+ "get_work_item_comments": {
10601
+ "name": "get_work_item_comments",
10602
+ "description": "\nRetrieves all comments associated with a specific work item.\n\nUse this tool when you need to:\n- Review discussion history about a work item\n- See feedback or notes left by team members\n- Check if specific questions have been answered\n- Understand the context and evolution of a work item\n\nArgs:\n id: The work item ID\n project: Optional project name. If not provided, will be \n determined from the work item.\n \nReturns:\n Formatted string containing all comments on the work item, \n including author names, timestamps, and content, organized \n chronologically and formatted as markdown\n"
10603
+ },
10604
+ "add_work_item_comment": {
10605
+ "name": "add_work_item_comment",
10606
+ "description": "\nAdds a new comment to a work item.\n\nUse this tool when you need to:\n- Provide feedback or clarification on a work item\n- Document decisions made about the work\n- Add context without changing the work item's fields\n- Communicate with team members about specific tasks\n\nIMPORTANT: Comments in Azure DevOps become part of the permanent work\nitem history and cannot be edited or deleted after they are added. The\ncomment will be attributed to the user associated with the Personal\nAccess Token used for authentication.\n\nArgs:\n id: The work item ID\n text: The text of the comment (supports markdown formatting)\n project: Optional project name. If not provided, will be \n determined from the work item.\n \nReturns:\n Formatted string containing confirmation and the added comment with\n author information and timestamp\n"
10607
+ },
10608
+ "create_work_item": {
10609
+ "name": "create_work_item",
10610
+ "description": "\nCreates a new work item in Azure DevOps.\n\nUse this tool when you need to:\n- Add a new task, user story, bug, or other work item to a project\n- Create work items with specific field values and metadata\n- Establish work hierarchies by setting parent relationships\n- Track new requirements, features, or issues in your project\n\nIMPORTANT: The work item will be created immediately and visible to all\nusers with access to the specified project. It will also trigger any\nconfigured notifications or automation rules.\n\nArgs:\n title: The title of the work item\n project: The project name or ID where the work item will be created\n work_item_type: Type of work item (e.g., \"User Story\", \"Bug\", \n \"Task\")\n fields: Optional dictionary of additional field name/value pairs \n to set\n description: Optional description of the work item\n state: Optional initial state for the work item\n assigned_to: Optional user email to assign the work item to\n parent_id: Optional ID of parent work item for hierarchy\n iteration_path: Optional iteration path for the work item\n area_path: Optional area path for the work item\n story_points: Optional story points value\n priority: Optional priority value\n tags: Optional tags as comma-separated string\n \nReturns:\n Formatted string containing the created work item details including\n ID, title, type, state, and all other specified fields, formatted\n as markdown\n"
10611
+ },
10612
+ "update_work_item": {
10613
+ "name": "update_work_item",
10614
+ "description": "\nModifies an existing work item's fields and properties.\n\nUse this tool when you need to:\n- Change the status or state of a work item\n- Reassign work to a different team member\n- Update the description or details of a requirement\n- Modify effort estimates or priority levels\n- Add or change classification (area/iteration)\n- Update any field supported by the work item type\n\nIMPORTANT: This tool updates the work item directly in Azure DevOps.\nChanges will be immediately visible to all users with access to the\nwork item and will trigger any configured notifications or workflows.\nYou must specify at least one field to update.\n\nArgs:\n id: The ID of the work item to update\n fields: Optional dictionary of field name/value pairs to update\n project: Optional project name or ID\n title: Optional new title for the work item\n description: Optional new description\n state: Optional new state\n assigned_to: Optional user email to assign to\n iteration_path: Optional new iteration path\n area_path: Optional new area path\n story_points: Optional new story points value\n priority: Optional new priority value\n tags: Optional new tags as comma-separated string\n \nReturns:\n Formatted string containing the updated work item details with\n all current field values, formatted as markdown\n"
10615
+ },
10616
+ "add_parent_child_link": {
10617
+ "name": "add_parent_child_link",
10618
+ "description": "\nAdds a parent-child relationship between two work items.\n\nUse this tool when you need to:\n- Establish hierarchy between work items\n- Organize epics, features, user stories, and tasks\n- Create a structured breakdown of work\n- Enable rollup of effort and progress tracking\n\nIMPORTANT: The child work item will immediately appear under the parent\nin hierarchical views. This relationship affects how the items are\ndisplayed in backlogs and boards. In Azure DevOps, a work item can have\nonly one parent but multiple children.\n\nArgs:\n parent_id: ID of the parent work item\n child_id: ID of the child work item\n project: Optional project name or ID\n \nReturns:\n Formatted string containing the updated child work item details\n showing the new parent relationship, formatted as markdown\n"
10619
+ },
10620
+ "get_work_item_types": {
10621
+ "name": "get_work_item_types",
10622
+ "description": "\nGets a list of all work item types in a project.\n\nUse this tool when you need to:\n- See what work item types are available in a project\n- Get reference names for work item types to use in other operations\n- Plan work item creation by understanding available types\n\nArgs:\n project: Project ID or project name\n \nReturns:\n A formatted table of all work item types with names, reference\n names, and descriptions\n"
10623
+ },
10624
+ "get_work_item_type": {
10625
+ "name": "get_work_item_type",
10626
+ "description": "\nGets detailed information about a specific work item type.\n\nUse this tool when you need to:\n- Get complete details about a work item type\n- Understand the states and transitions for a work item type\n- Learn about the color and icon for a work item type\n\nArgs:\n project: Project ID or project name\n type_name: The name of the work item type\n \nReturns:\n Detailed information about the work item type including states,\n color, icon, and reference name\n"
10627
+ },
10628
+ "get_work_item_type_fields": {
10629
+ "name": "get_work_item_type_fields",
10630
+ "description": "\nGets a list of all fields for a specific work item type.\n\nUse this tool when you need to:\n- See what fields are available for a work item type\n- Find required fields for creating work items of a specific type\n- Get reference names for fields to use in queries or updates\n\nArgs:\n project: Project ID or project name\n type_name: The name of the work item type\n \nReturns:\n A formatted table of all fields with names, reference names,\n types, and required/read-only status\n"
10631
+ },
10632
+ "get_work_item_type_field": {
10633
+ "name": "get_work_item_type_field",
10634
+ "description": "\nGets detailed information about a specific field in a work item type.\n\nUse this tool when you need to:\n- Get complete details about a work item field\n- Check allowed values for a field\n- Verify if a field is required or read-only\n\nArgs:\n project: Project ID or project name\n type_name: The name of the work item type\n field_name: The reference name or display name of the field\n \nReturns:\n Detailed information about the field including type, allowed \n values, and constraints\n"
10635
+ },
10636
+ "get_work_item_templates": {
10637
+ "name": "get_work_item_templates",
10638
+ "description": "\nGets a list of all work item templates for a team.\n\nUse this tool when you need to:\n- Find available templates for creating work items\n- Get template IDs for use in other operations\n- Filter templates by work item type\n\nArgs:\n team_context: Dictionary containing team information with keys:\n project: Project name (Optional if project_id is provided)\n project_id: Project ID (Optional if project is provided)\n team: Team name (Optional if team_id is provided)\n team_id: Team ID (Optional if team is provided)\n work_item_type: Optional work item type name to filter templates\n \nReturns:\n A formatted table of all templates with names, work item types,\n and descriptions\n"
10639
+ },
10640
+ "get_work_item_template": {
10641
+ "name": "get_work_item_template",
10642
+ "description": "\nGets detailed information about a specific work item template.\n\nUse this tool when you need to:\n- View default field values in a template\n- Understand what a template pre-populates in a work item\n- Get complete details about a template\n\nArgs:\n team_context: Dictionary containing team information with keys:\n project: Project name (Optional if project_id is provided)\n project_id: Project ID (Optional if project is provided)\n team: Team name (Optional if team_id is provided)\n team_id: Team ID (Optional if team is provided)\n template_id: The ID of the template\n \nReturns:\n Detailed information about the template including default field \n values\n"
10643
+ },
10644
+ "get_project_process_id": {
10645
+ "name": "get_project_process_id",
10646
+ "description": "\nGets the process ID associated with a project.\n\nUse this tool when you need to:\n- Find out which process a project is using\n- Get the process ID for use in other process-related operations\n- Verify process information for a project\n\nArgs:\n project: Project ID or project name\n \nReturns:\n Formatted information about the process including name and ID\n"
10647
+ },
10648
+ "get_process_details": {
10649
+ "name": "get_process_details",
10650
+ "description": "\nGets detailed information about a specific process.\n\nUse this tool when you need to:\n- View process properties and configuration\n- Get a list of work item types defined in a process\n- Check if a process is the default for the organization\n\nArgs:\n process_id: The ID of the process\n \nReturns:\n Detailed information about the process including properties and\n available work item types\n"
10651
+ },
10652
+ "list_processes": {
10653
+ "name": "list_processes",
10654
+ "description": "\nLists all available processes in the organization.\n\nUse this tool when you need to:\n- See what processes are available in your Azure DevOps organization\n- Find process IDs for project creation or configuration\n- Check which process is set as the default\n\nReturns:\n A formatted table of all processes with names, IDs, and \n descriptions\n"
10655
+ },
10656
+ "get_projects": {
10657
+ "name": "get_projects",
10658
+ "description": "\nRetrieves all projects accessible to the authenticated user \nin the Azure DevOps organization.\n\nUse this tool when you need to:\n- Get an overview of all available projects\n- Find project IDs for use in other operations\n- Check project states and visibility settings\n- Locate specific projects by name\n\nArgs:\n state_filter: Filter on team projects in a specific state \n (e.g., \"WellFormed\", \"Deleting\")\n top: Maximum number of projects to return\n \nReturns:\n Formatted string containing project information including names,\n IDs, descriptions, states, and visibility settings, formatted as\n markdown with each project clearly separated\n"
10659
+ },
10660
+ "get_all_teams": {
10661
+ "name": "get_all_teams",
10662
+ "description": "\nRetrieves all teams in the Azure DevOps organization.\n\nUse this tool when you need to:\n- Get an overview of all teams across projects\n- Find team IDs for use in other operations\n- Determine which teams exist in the organization\n- Locate specific teams by name\n\nArgs:\n user_is_member_of: If true, return only teams where the current \n user is a member. Otherwise return all teams the user \n has read access to.\n top: Maximum number of teams to return\n skip: Number of teams to skip\n \nReturns:\n Formatted string containing team information including names,\n IDs, descriptions, and associated projects, formatted as\n markdown with each team clearly separated\n"
10663
+ },
10664
+ "get_team_members": {
10665
+ "name": "get_team_members",
10666
+ "description": "\nRetrieves the membership roster for a specific team.\n\nUse this tool when you need to:\n- See who belongs to a particular team\n- Find team administrators\n- Check user assignments across teams\n- Determine team size and composition\n\nArgs:\n project_id: The name or ID (GUID) of the team project the team \n belongs to\n team_id: The name or ID (GUID) of the team\n top: Maximum number of members to return\n skip: Number of members to skip\n \nReturns:\n Formatted string containing team members information including\n display names, emails, IDs, and administrator status, formatted\n as markdown with each member clearly separated\n"
10667
+ },
10668
+ "get_team_area_paths": {
10669
+ "name": "get_team_area_paths",
10670
+ "description": "\nRetrieves the area paths assigned to a specific team.\n\nUse this tool when you need to:\n- Understand a team's areas of responsibility\n- Check default area path assignments\n- Determine how work is classified and routed to teams\n- Set up board and backlog configurations\n\nIMPORTANT: Area paths in Azure DevOps determine which work items appear\non a team's backlogs and boards. The default area path is used when\ncreating new work items through a team's interface.\n\nArgs:\n project_name_or_id: The name or ID of the team project\n team_name_or_id: The name or ID of the team\n \nReturns:\n Formatted string containing team area path information including\n the default area path and all assigned paths, with indicators for\n paths that include sub-areas\n"
10671
+ },
10672
+ "get_team_iterations": {
10673
+ "name": "get_team_iterations",
10674
+ "description": "\nRetrieves the iterations (sprints) assigned to a specific team.\n\nUse this tool when you need to:\n- View a team's sprint schedule\n- Find date ranges for iterations\n- Determine which iteration is currently active\n- Plan work based on team's iteration calendar\n\nIMPORTANT: Iterations in Azure DevOps define time periods for planning\nand tracking work. They determine sprint dates and are used for\ncapacity planning, burndown charts, and velocity calculations.\n\nArgs:\n project_name_or_id: The name or ID of the team project\n team_name_or_id: The name or ID of the team\n current: If True, return only the current iteration\n \nReturns:\n Formatted string containing team iteration information including\n names, date ranges, and time frames (past/current/future),\n formatted as markdown\n"
10675
+ }
10676
+ }
9893
10677
  },
9894
10678
  "xcodemcp": {
9895
10679
  "category": "developer-tools",
@@ -10242,7 +11026,82 @@
10242
11026
  },
10243
11027
  "mcp-nixos": {
10244
11028
  "category": "developer-tools",
10245
- "path": "developer-tools/mcp-nixos.json"
11029
+ "path": "developer-tools/mcp-nixos.json",
11030
+ "validated": true,
11031
+ "tools": {
11032
+ "nixos_search": {
11033
+ "name": "nixos_search",
11034
+ "description": "Search NixOS packages, options, or programs.\n\nArgs:\n query: Search term to look for\n search_type: Type of search - \"packages\", \"options\", \"programs\", or \"flakes\"\n limit: Maximum number of results to return (1-100)\n channel: NixOS channel to search in (e.g., \"unstable\", \"stable\", \"25.05\")\n\nReturns:\n Plain text results with bullet points or error message\n"
11035
+ },
11036
+ "nixos_info": {
11037
+ "name": "nixos_info",
11038
+ "description": "Get detailed info about a NixOS package or option.\n\nArgs:\n name: Name of the package or option to look up\n type: Type of lookup - \"package\" or \"option\"\n channel: NixOS channel to search in (e.g., \"unstable\", \"stable\", \"25.05\")\n\nReturns:\n Plain text details about the package/option or error message\n"
11039
+ },
11040
+ "nixos_channels": {
11041
+ "name": "nixos_channels",
11042
+ "description": "List available NixOS channels with their status.\n\nReturns:\n Plain text list showing channel names, versions, and availability\n"
11043
+ },
11044
+ "nixos_stats": {
11045
+ "name": "nixos_stats",
11046
+ "description": "Get NixOS statistics for a channel.\n\nArgs:\n channel: NixOS channel to get stats for (e.g., \"unstable\", \"stable\", \"25.05\")\n\nReturns:\n Plain text statistics including package/option counts\n"
11047
+ },
11048
+ "home_manager_search": {
11049
+ "name": "home_manager_search",
11050
+ "description": "Search Home Manager configuration options.\n\nSearches through available Home Manager options by name and description.\n\nArgs:\n query: The search query string to match against option names and descriptions\n limit: Maximum number of results to return (default: 20, max: 100)\n\nReturns:\n Plain text list of matching options with name, type, and description\n"
11051
+ },
11052
+ "home_manager_info": {
11053
+ "name": "home_manager_info",
11054
+ "description": "Get detailed information about a specific Home Manager option.\n\nRequires an exact option name match. If not found, suggests similar options.\n\nArgs:\n name: The exact option name (e.g., 'programs.git.enable')\n\nReturns:\n Plain text with option details (name, type, description) or error with suggestions\n"
11055
+ },
11056
+ "home_manager_stats": {
11057
+ "name": "home_manager_stats",
11058
+ "description": "Get statistics about Home Manager options.\n\nRetrieves overall statistics including total options, categories, and top categories.\n\nReturns:\n Plain text summary with total options, category count, and top 5 categories\n"
11059
+ },
11060
+ "home_manager_list_options": {
11061
+ "name": "home_manager_list_options",
11062
+ "description": "List all Home Manager option categories.\n\nEnumerates all top-level categories with their option counts.\n\nReturns:\n Plain text list of categories sorted alphabetically with option counts\n"
11063
+ },
11064
+ "home_manager_options_by_prefix": {
11065
+ "name": "home_manager_options_by_prefix",
11066
+ "description": "Get Home Manager options matching a specific prefix.\n\nUseful for browsing options under a category or finding exact option names.\n\nArgs:\n option_prefix: The prefix to match (e.g., 'programs.git' or 'services')\n\nReturns:\n Plain text list of options with the given prefix, including descriptions\n"
11067
+ },
11068
+ "darwin_search": {
11069
+ "name": "darwin_search",
11070
+ "description": "Search nix-darwin (macOS) configuration options.\n\nSearches through available nix-darwin options by name and description.\n\nArgs:\n query: The search query string to match against option names and descriptions\n limit: Maximum number of results to return (default: 20, max: 100)\n\nReturns:\n Plain text list of matching options with name, type, and description\n"
11071
+ },
11072
+ "darwin_info": {
11073
+ "name": "darwin_info",
11074
+ "description": "Get detailed information about a specific nix-darwin option.\n\nRequires an exact option name match. If not found, suggests similar options.\n\nArgs:\n name: The exact option name (e.g., 'system.defaults.dock.autohide')\n\nReturns:\n Plain text with option details (name, type, description) or error with suggestions\n"
11075
+ },
11076
+ "darwin_stats": {
11077
+ "name": "darwin_stats",
11078
+ "description": "Get statistics about nix-darwin options.\n\nRetrieves overall statistics including total options, categories, and top categories.\n\nReturns:\n Plain text summary with total options, category count, and top 5 categories\n"
11079
+ },
11080
+ "darwin_list_options": {
11081
+ "name": "darwin_list_options",
11082
+ "description": "List all nix-darwin option categories.\n\nEnumerates all top-level categories with their option counts.\n\nReturns:\n Plain text list of categories sorted alphabetically with option counts\n"
11083
+ },
11084
+ "darwin_options_by_prefix": {
11085
+ "name": "darwin_options_by_prefix",
11086
+ "description": "Get nix-darwin options matching a specific prefix.\n\nUseful for browsing options under a category or finding exact option names.\n\nArgs:\n option_prefix: The prefix to match (e.g., 'system.defaults' or 'services')\n\nReturns:\n Plain text list of options with the given prefix, including descriptions\n"
11087
+ },
11088
+ "nixos_flakes_stats": {
11089
+ "name": "nixos_flakes_stats",
11090
+ "description": "Get statistics about available NixOS flakes.\n\nRetrieves statistics from the flake search index including total packages,\nunique repositories, flake types, and top contributors.\n\nReturns:\n Plain text summary with flake statistics and top contributors\n"
11091
+ },
11092
+ "nixos_flakes_search": {
11093
+ "name": "nixos_flakes_search",
11094
+ "description": "Search NixOS flakes by name, description, owner, or repository.\n\nSearches the flake index for community-contributed packages and configurations.\nFlakes are indexed separately from official packages.\n\nArgs:\n query: The search query (flake name, description, owner, or repository)\n limit: Maximum number of results to return (default: 20, max: 100)\n channel: Ignored - flakes use a separate indexing system\n\nReturns:\n Plain text list of unique flakes with their packages and metadata\n"
11095
+ },
11096
+ "nixhub_package_versions": {
11097
+ "name": "nixhub_package_versions",
11098
+ "description": "Get version history and nixpkgs commit hashes for a specific package from NixHub.io.\n\nUse this tool when users need specific package versions or commit hashes for reproducible builds.\n\nArgs:\n package_name: Name of the package to query (e.g., \"firefox\", \"python\")\n limit: Maximum number of versions to return (default: 10, max: 50)\n\nReturns:\n Plain text with package info and version history including commit hashes\n"
11099
+ },
11100
+ "nixhub_find_version": {
11101
+ "name": "nixhub_find_version",
11102
+ "description": "Find a specific version of a package in NixHub with smart search.\n\nAutomatically searches with increasing limits to find the requested version.\n\nArgs:\n package_name: Name of the package to query (e.g., \"ruby\", \"python\")\n version: Specific version to find (e.g., \"2.6.7\", \"3.5.9\")\n\nReturns:\n Plain text with version info and commit hash if found, or helpful message if not\n"
11103
+ }
11104
+ }
10246
11105
  },
10247
11106
  "@wangmhaha/apifox-mcp-server": {
10248
11107
  "category": "other-tools-and-integrations",
@@ -10300,7 +11159,18 @@
10300
11159
  },
10301
11160
  "jnews-mcp-server": {
10302
11161
  "category": "developer-tools",
10303
- "path": "developer-tools/jnews-mcp-server.json"
11162
+ "path": "developer-tools/jnews-mcp-server.json",
11163
+ "validated": true,
11164
+ "tools": {
11165
+ "get_news_list": {
11166
+ "name": "get_news_list",
11167
+ "description": "通过新闻类型获取今日热点新闻头条"
11168
+ },
11169
+ "get_news_content": {
11170
+ "name": "get_news_content",
11171
+ "description": "根据新闻ID获取新闻的详细内容"
11172
+ }
11173
+ }
10304
11174
  },
10305
11175
  "kai-(kubernetes)": {
10306
11176
  "category": "developer-tools",
@@ -10366,7 +11236,14 @@
10366
11236
  },
10367
11237
  "mcp-server-restart": {
10368
11238
  "category": "other-tools-and-integrations",
10369
- "path": "other-tools-and-integrations/mcp-server-restart.json"
11239
+ "path": "other-tools-and-integrations/mcp-server-restart.json",
11240
+ "validated": true,
11241
+ "tools": {
11242
+ "restart_claude": {
11243
+ "name": "restart_claude",
11244
+ "description": "Restart the Claude application"
11245
+ }
11246
+ }
10370
11247
  },
10371
11248
  "xcodebuildmcp": {
10372
11249
  "category": "developer-tools",
@@ -10874,7 +11751,14 @@
10874
11751
  },
10875
11752
  "kaggle-mcp": {
10876
11753
  "category": "data-science-tools",
10877
- "path": "data-science-tools/kaggle-mcp.json"
11754
+ "path": "data-science-tools/kaggle-mcp.json",
11755
+ "validated": true,
11756
+ "tools": {
11757
+ "prepare_kaggle_dataset": {
11758
+ "name": "prepare_kaggle_dataset",
11759
+ "description": "Download and extract a Kaggle dataset."
11760
+ }
11761
+ }
10878
11762
  },
10879
11763
  "chronulus-mcp": {
10880
11764
  "category": "data-science-tools",
@@ -10910,7 +11794,114 @@
10910
11794
  },
10911
11795
  "optuna-mcp": {
10912
11796
  "category": "data-science-tools",
10913
- "path": "data-science-tools/optuna-mcp.json"
11797
+ "path": "data-science-tools/optuna-mcp.json",
11798
+ "validated": true,
11799
+ "tools": {
11800
+ "create_study": {
11801
+ "name": "create_study",
11802
+ "description": "Create a new Optuna study with the given study_name and directions.\n\nIf the study already exists, it will be simply loaded.\n"
11803
+ },
11804
+ "get_all_study_names": {
11805
+ "name": "get_all_study_names",
11806
+ "description": "Get all study names from the storage."
11807
+ },
11808
+ "ask": {
11809
+ "name": "ask",
11810
+ "description": "Suggest new parameters using Optuna\n\nsearch_space must be a string that can be evaluated to a dictionary to specify Optuna's distributions.\n\nExample:\n {\"x\": {\"name\": \"FloatDistribution\", \"attributes\": {\"step\": null, \"low\": -10.0, \"high\": 10.0, \"log\": false}}}\n"
11811
+ },
11812
+ "tell": {
11813
+ "name": "tell",
11814
+ "description": "Report the result of a trial"
11815
+ },
11816
+ "set_sampler": {
11817
+ "name": "set_sampler",
11818
+ "description": "Set the sampler for the study.\nThe sampler must be one of the following:\n- TPESampler\n- NSGAIISampler\n- RandomSampler\n- GPSampler\n\nThe default sampler for single-objective optimization is TPESampler.\nThe default sampler for multi-objective optimization is NSGAIISampler.\nGPSampler is a Gaussian process-based sampler suitable for low-dimensional numerical optimization problems.\n"
11819
+ },
11820
+ "set_trial_user_attr": {
11821
+ "name": "set_trial_user_attr",
11822
+ "description": "Set user attributes for a trial"
11823
+ },
11824
+ "get_trial_user_attrs": {
11825
+ "name": "get_trial_user_attrs",
11826
+ "description": "Get user attributes in a trial"
11827
+ },
11828
+ "set_metric_names": {
11829
+ "name": "set_metric_names",
11830
+ "description": "Set metric_names. metric_names are labels used to distinguish what each objective value is.\n\nArgs:\n metric_names:\n The list of metric name for each objective value.\n The length of metric_names list must be the same with the number of objectives.\n"
11831
+ },
11832
+ "get_metric_names": {
11833
+ "name": "get_metric_names",
11834
+ "description": "Get metric_names"
11835
+ },
11836
+ "get_directions": {
11837
+ "name": "get_directions",
11838
+ "description": "Get the directions of the study."
11839
+ },
11840
+ "get_trials": {
11841
+ "name": "get_trials",
11842
+ "description": "Get all trials in a CSV format"
11843
+ },
11844
+ "best_trial": {
11845
+ "name": "best_trial",
11846
+ "description": "Get the best trial\n\nThis feature can only be used for single-objective optimization. If your study is multi-objective, use best_trials instead.\n"
11847
+ },
11848
+ "best_trials": {
11849
+ "name": "best_trials",
11850
+ "description": "Return trials located at the Pareto front in the study."
11851
+ },
11852
+ "add_trial": {
11853
+ "name": "add_trial",
11854
+ "description": "Add a trial to the study."
11855
+ },
11856
+ "add_trials": {
11857
+ "name": "add_trials",
11858
+ "description": "Add multiple trials to the study."
11859
+ },
11860
+ "plot_optimization_history": {
11861
+ "name": "plot_optimization_history",
11862
+ "description": "Return the optimization history plot as an image.\n\nArgs:\n target:\n An index to specify the value to display. To plot nth objective value, set this to n.\n Note that this is 0-indexed, i.e., to plot the first objective value, set this to 0.\n For single-objective optimization, None (auto) is recommended.\n For multi-objective optimization, this must be specified.\n target_name:\n Target's name to display on the axis label and the legend.\n"
11863
+ },
11864
+ "plot_hypervolume_history": {
11865
+ "name": "plot_hypervolume_history",
11866
+ "description": "Return the hypervolume history plot as an image.\n\nArgs:\n reference_point:\n A list of reference points to calculate the hypervolume.\n"
11867
+ },
11868
+ "plot_pareto_front": {
11869
+ "name": "plot_pareto_front",
11870
+ "description": "Return the Pareto front plot as an image for multi-objective optimization.\n\nArgs:\n target_names:\n Objective name list used as the axis titles. If :obj:`None` is specified,\n \"Objective {objective_index}\" is used instead. If ``targets`` is specified\n for a study that does not contain any completed trial,\n ``target_name`` must be specified.\n include_dominated_trials:\n A flag to include all dominated trial's objective values.\n targets:\n A list of indices to specify the objective values to display.\n Note that this is 0-indexed, i.e., to plot the first and second objective value, set this to [0, 1].\n If the number of objectives is neither 2 nor 3, ``targets`` must be specified.\n By default, all objectives are displayed.\n"
11871
+ },
11872
+ "plot_contour": {
11873
+ "name": "plot_contour",
11874
+ "description": "Return the contour plot as an image.\n\nArgs:\n params:\n Parameter list to visualize. The default is all parameters.\n target:\n An index to specify the value to display. To plot nth objective value, set this to n.\n Note that this is 0-indexed, i.e., to plot the first objective value, set this to 0.\n target_name:\n Target’s name to display on the color bar.\n"
11875
+ },
11876
+ "plot_parallel_coordinate": {
11877
+ "name": "plot_parallel_coordinate",
11878
+ "description": "Return the parallel coordinate plot as an image.\n\nArgs:\n params:\n Parameter list to visualize. The default is all parameters.\n target:\n An index to specify the value to display. To plot nth objective value, set this to n.\n Note that this is 0-indexed, i.e., to plot the first objective value, set this to 0.\n target_name:\n Target’s name to display on the axis label and the legend.\n"
11879
+ },
11880
+ "plot_slice": {
11881
+ "name": "plot_slice",
11882
+ "description": "Return the slice plot as an image.\n\nArgs:\n params:\n Parameter list to visualize. The default is all parameters.\n target:\n An index to specify the value to display. To plot nth objective value, set this to n.\n Note that this is 0-indexed, i.e., to plot the first objective value, set this to 0.\n target_name:\n Target’s name to display on the axis label.\n"
11883
+ },
11884
+ "plot_param_importances": {
11885
+ "name": "plot_param_importances",
11886
+ "description": "Return the parameter importances plot as an image.\n\nArgs:\n params:\n Parameter list to visualize. The default is all parameters.\n target:\n An index to specify the value to display. To plot nth objective value, set this to n.\n Note that this is 0-indexed, i.e., to plot the first objective value, set this to 0.\n By default, all objective will be plotted by setting target to None.\n target_name:\n Target’s name to display on the legend.\n"
11887
+ },
11888
+ "plot_edf": {
11889
+ "name": "plot_edf",
11890
+ "description": "Return the EDF plot as an image.\n\nArgs:\n target:\n An index to specify the value to display. To plot nth objective value, set this to n.\n Note that this is 0-indexed, i.e., to plot the first objective value, set this to 0.\n target_name:\n Target’s name to display on the axis label.\n"
11891
+ },
11892
+ "plot_timeline": {
11893
+ "name": "plot_timeline",
11894
+ "description": "Return the timeline plot as an image."
11895
+ },
11896
+ "plot_rank": {
11897
+ "name": "plot_rank",
11898
+ "description": "Return the rank plot as an image.\n\nArgs:\n params:\n Parameter list to visualize. The default is all parameters.\n target:\n An index to specify the value to display. To plot nth objective value, set this to n.\n Note that this is 0-indexed, i.e., to plot the first objective value, set this to 0.\n target_name:\n Target’s name to display on the color bar.\n"
11899
+ },
11900
+ "launch_optuna_dashboard": {
11901
+ "name": "launch_optuna_dashboard",
11902
+ "description": "Launch the Optuna dashboard"
11903
+ }
11904
+ }
10914
11905
  },
10915
11906
  "power-bi": {
10916
11907
  "category": "data-science-tools",
@@ -10942,7 +11933,42 @@
10942
11933
  },
10943
11934
  "mcp-excel-server": {
10944
11935
  "category": "data-science-tools",
10945
- "path": "data-science-tools/mcp-excel-server.json"
11936
+ "path": "data-science-tools/mcp-excel-server.json",
11937
+ "validated": true,
11938
+ "tools": {
11939
+ "read_excel": {
11940
+ "name": "read_excel",
11941
+ "description": "\nRead an Excel file and return its contents as a string.\n\nArgs:\n file_path: Path to the Excel file\n sheet_name: Name of the sheet to read (only for .xlsx, .xls)\n nrows: Maximum number of rows to read\n header: Row to use as header (0-indexed)\n \nReturns:\n String representation of the Excel data\n"
11942
+ },
11943
+ "write_excel": {
11944
+ "name": "write_excel",
11945
+ "description": "\nWrite data to an Excel file.\n\nArgs:\n file_path: Path to save the Excel file\n data: Data in CSV or JSON format\n sheet_name: Name of the sheet (for Excel files)\n format: Format of the input data ('csv' or 'json')\n \nReturns:\n Confirmation message\n"
11946
+ },
11947
+ "update_excel": {
11948
+ "name": "update_excel",
11949
+ "description": "\nUpdate an existing Excel file with new data.\n\nArgs:\n file_path: Path to the Excel file to update\n data: New data in CSV or JSON format\n sheet_name: Name of the sheet to update (for Excel files)\n format: Format of the input data ('csv' or 'json')\n \nReturns:\n Confirmation message\n"
11950
+ },
11951
+ "analyze_excel": {
11952
+ "name": "analyze_excel",
11953
+ "description": "\nPerform statistical analysis on Excel data.\n\nArgs:\n file_path: Path to the Excel file\n columns: Comma-separated list of columns to analyze (analyzes all numeric columns if None)\n sheet_name: Name of the sheet to analyze (for Excel files)\n \nReturns:\n JSON string with statistical analysis\n"
11954
+ },
11955
+ "filter_excel": {
11956
+ "name": "filter_excel",
11957
+ "description": "\nFilter Excel data using a pandas query string.\n\nArgs:\n file_path: Path to the Excel file\n query: Pandas query string (e.g., \"Age > 30 and Department == 'Sales'\")\n sheet_name: Name of the sheet to filter (for Excel files)\n \nReturns:\n Filtered data as string\n"
11958
+ },
11959
+ "pivot_table": {
11960
+ "name": "pivot_table",
11961
+ "description": "\nCreate a pivot table from Excel data.\n\nArgs:\n file_path: Path to the Excel file\n index: Column to use as the pivot table index\n columns: Optional column to use as the pivot table columns\n values: Column to use as the pivot table values\n aggfunc: Aggregation function ('mean', 'sum', 'count', etc.)\n sheet_name: Name of the sheet to pivot (for Excel files)\n \nReturns:\n Pivot table as string\n"
11962
+ },
11963
+ "export_chart": {
11964
+ "name": "export_chart",
11965
+ "description": "\nCreate a chart from Excel data and return as an image.\n\nArgs:\n file_path: Path to the Excel file\n x_column: Column to use for x-axis\n y_column: Column to use for y-axis\n chart_type: Type of chart ('line', 'bar', 'scatter', 'hist')\n sheet_name: Name of the sheet to chart (for Excel files)\n \nReturns:\n Chart as image\n"
11966
+ },
11967
+ "data_summary": {
11968
+ "name": "data_summary",
11969
+ "description": "\nGenerate a comprehensive summary of the data in an Excel file.\n\nArgs:\n file_path: Path to the Excel file\n sheet_name: Name of the sheet to summarize (for Excel files)\n \nReturns:\n Comprehensive data summary as string\n"
11970
+ }
11971
+ }
10946
11972
  },
10947
11973
  "tecton": {
10948
11974
  "category": "data-science-tools",
@@ -11077,7 +12103,214 @@
11077
12103
  },
11078
12104
  "scmcp": {
11079
12105
  "category": "data-science-tools",
11080
- "path": "data-science-tools/scmcp.json"
12106
+ "path": "data-science-tools/scmcp.json",
12107
+ "validated": true,
12108
+ "tools": {
12109
+ "read_h5ad": {
12110
+ "name": "read_h5ad",
12111
+ "description": "Read .h5ad-formatted hdf5 file"
12112
+ },
12113
+ "read_10x_h5": {
12114
+ "name": "read_10x_h5",
12115
+ "description": "Read 10x-Genomics-formatted hdf5 file"
12116
+ },
12117
+ "read_10x_mtx": {
12118
+ "name": "read_10x_mtx",
12119
+ "description": "Read 10x-Genomics-formatted mtx directory."
12120
+ },
12121
+ "read_text": {
12122
+ "name": "read_text",
12123
+ "description": "Read gene expression from .txt, .csv, .tsv file."
12124
+ },
12125
+ "write_h5ad": {
12126
+ "name": "write_h5ad",
12127
+ "description": "Write AnnData objects inot .h5ad-formatted hdf5 file"
12128
+ },
12129
+ "write": {
12130
+ "name": "write",
12131
+ "description": "Write AnnData objects to file."
12132
+ },
12133
+ "filter_genes": {
12134
+ "name": "filter_genes",
12135
+ "description": "Filter genes based on number of cells or counts"
12136
+ },
12137
+ "filter_cells": {
12138
+ "name": "filter_cells",
12139
+ "description": "Filter cells based on counts and numbers of genes expressed."
12140
+ },
12141
+ "calculate_qc_metrics": {
12142
+ "name": "calculate_qc_metrics",
12143
+ "description": "Calculate quality control metrics(common metrics: total counts, gene number, percentage of counts in ribosomal and mitochondrial) for AnnData."
12144
+ },
12145
+ "log1p": {
12146
+ "name": "log1p",
12147
+ "description": "Logarithmize the data matrix (X = log(X + 1))"
12148
+ },
12149
+ "normalize_total": {
12150
+ "name": "normalize_total",
12151
+ "description": "Normalize counts per cell to the same total count"
12152
+ },
12153
+ "pca": {
12154
+ "name": "pca",
12155
+ "description": "Principal component analysis"
12156
+ },
12157
+ "highly_variable_genes": {
12158
+ "name": "highly_variable_genes",
12159
+ "description": "Annotate highly variable genes"
12160
+ },
12161
+ "regress_out": {
12162
+ "name": "regress_out",
12163
+ "description": "Regress out (mostly) unwanted sources of variation."
12164
+ },
12165
+ "scale": {
12166
+ "name": "scale",
12167
+ "description": "Scale data to unit variance and zero mean"
12168
+ },
12169
+ "combat": {
12170
+ "name": "combat",
12171
+ "description": "ComBat function for batch effect correction"
12172
+ },
12173
+ "scrublet": {
12174
+ "name": "scrublet",
12175
+ "description": "Predict doublets using Scrublet"
12176
+ },
12177
+ "neighbors": {
12178
+ "name": "neighbors",
12179
+ "description": "Compute nearest neighbors distance matrix and neighborhood graph"
12180
+ },
12181
+ "tsne": {
12182
+ "name": "tsne",
12183
+ "description": "t-distributed stochastic neighborhood embedding (t-SNE), for visualizating single-cell data"
12184
+ },
12185
+ "umap": {
12186
+ "name": "umap",
12187
+ "description": "Uniform Manifold Approximation and Projection (UMAP) for visualization"
12188
+ },
12189
+ "draw_graph": {
12190
+ "name": "draw_graph",
12191
+ "description": "Force-directed graph drawing for visualization"
12192
+ },
12193
+ "diffmap": {
12194
+ "name": "diffmap",
12195
+ "description": "Diffusion Maps for dimensionality reduction"
12196
+ },
12197
+ "embedding_density": {
12198
+ "name": "embedding_density",
12199
+ "description": "Calculate the density of cells in an embedding"
12200
+ },
12201
+ "leiden": {
12202
+ "name": "leiden",
12203
+ "description": "Leiden clustering algorithm for community detection"
12204
+ },
12205
+ "louvain": {
12206
+ "name": "louvain",
12207
+ "description": "Louvain clustering algorithm for community detection"
12208
+ },
12209
+ "dendrogram": {
12210
+ "name": "dendrogram",
12211
+ "description": "Hierarchical clustering dendrogram"
12212
+ },
12213
+ "dpt": {
12214
+ "name": "dpt",
12215
+ "description": "Diffusion Pseudotime (DPT) analysis"
12216
+ },
12217
+ "paga": {
12218
+ "name": "paga",
12219
+ "description": "Partition-based graph abstraction"
12220
+ },
12221
+ "ingest": {
12222
+ "name": "ingest",
12223
+ "description": "Map labels and embeddings from reference data to new data"
12224
+ },
12225
+ "rank_genes_groups": {
12226
+ "name": "rank_genes_groups",
12227
+ "description": "Rank genes for characterizing groups, perform differentially expressison analysis"
12228
+ },
12229
+ "filter_rank_genes_groups": {
12230
+ "name": "filter_rank_genes_groups",
12231
+ "description": "Filter out genes based on fold change and fraction of genes"
12232
+ },
12233
+ "marker_gene_overlap": {
12234
+ "name": "marker_gene_overlap",
12235
+ "description": "Calculate overlap between data-derived marker genes and reference markers"
12236
+ },
12237
+ "score_genes": {
12238
+ "name": "score_genes",
12239
+ "description": "Score a set of genes based on their average expression"
12240
+ },
12241
+ "score_genes_cell_cycle": {
12242
+ "name": "score_genes_cell_cycle",
12243
+ "description": "Score cell cycle genes and assign cell cycle phases"
12244
+ },
12245
+ "pl_pca": {
12246
+ "name": "pl_pca",
12247
+ "description": "Scatter plot in PCA coordinates. default figure for PCA plot"
12248
+ },
12249
+ "pl_umap": {
12250
+ "name": "pl_umap",
12251
+ "description": "UMAP Scatter plot. default visualization plot for cell cluster if not specified by user"
12252
+ },
12253
+ "pl_tsne": {
12254
+ "name": "pl_tsne",
12255
+ "description": "Plot t-SNE embedding of cells."
12256
+ },
12257
+ "pl_violin": {
12258
+ "name": "pl_violin",
12259
+ "description": "Plot violin plot of one or more variables."
12260
+ },
12261
+ "pl_stacked_violin": {
12262
+ "name": "pl_stacked_violin",
12263
+ "description": "Plot stacked violin plots. Makes a compact image composed of individual violin plots stacked on top of each other."
12264
+ },
12265
+ "pl_heatmap": {
12266
+ "name": "pl_heatmap",
12267
+ "description": "Heatmap of the expression values of genes."
12268
+ },
12269
+ "pl_dotplot": {
12270
+ "name": "pl_dotplot",
12271
+ "description": "Plot dot plot of expression values per gene for each group."
12272
+ },
12273
+ "pl_matrixplot": {
12274
+ "name": "pl_matrixplot",
12275
+ "description": "matrixplot, Create a heatmap of the mean expression values per group of each var_names."
12276
+ },
12277
+ "pl_tracksplot": {
12278
+ "name": "pl_tracksplot",
12279
+ "description": "tracksplot,compact plot of expression of a list of genes.."
12280
+ },
12281
+ "pl_scatter": {
12282
+ "name": "pl_scatter",
12283
+ "description": "Plot a scatter plot of two variables, Scatter plot along observations or variables axes."
12284
+ },
12285
+ "pl_rank_genes_groups_dotplot": {
12286
+ "name": "pl_rank_genes_groups_dotplot",
12287
+ "description": "Plot ranking of genes(DEGs) using dotplot visualization. Defualt plot DEGs for rank_genes_groups tool"
12288
+ },
12289
+ "pl_highly_variable_genes": {
12290
+ "name": "pl_highly_variable_genes",
12291
+ "description": "plot highly variable genes; Plot dispersions or normalized variance versus means for genes."
12292
+ },
12293
+ "pl_pca_variance_ratio": {
12294
+ "name": "pl_pca_variance_ratio",
12295
+ "description": "Plot the PCA variance ratio to visualize explained variance."
12296
+ },
12297
+ "mark_var": {
12298
+ "name": "mark_var",
12299
+ "description": "Determine if each gene meets specific conditions and store results in adata.var as boolean values.for example: mitochondrion genes startswith MT-.the tool should be call first when calculate quality control metrics for mitochondrion, ribosomal, harhemoglobin genes. or other qc_vars"
12300
+ },
12301
+ "list_var": {
12302
+ "name": "list_var",
12303
+ "description": "list key columns in adata.var. it should be called for checking when other tools need var key column names input"
12304
+ },
12305
+ "list_obs": {
12306
+ "name": "list_obs",
12307
+ "description": "List key columns in adata.obs. It should be called before other tools need obs key column names input"
12308
+ },
12309
+ "check_gene": {
12310
+ "name": "check_gene",
12311
+ "description": "Check if genes exist in adata.var_names. This tool should be called before gene expression visualizations or color by genes."
12312
+ }
12313
+ }
11081
12314
  },
11082
12315
  "pbixray": {
11083
12316
  "category": "data-science-tools",
@@ -11133,7 +12366,9 @@
11133
12366
  },
11134
12367
  "mcp2serial": {
11135
12368
  "category": "embedded-system",
11136
- "path": "embedded-system/mcp2serial.json"
12369
+ "path": "embedded-system/mcp2serial.json",
12370
+ "validated": true,
12371
+ "tools": {}
11137
12372
  },
11138
12373
  "nina-advanced-api": {
11139
12374
  "category": "embedded-system",
@@ -11157,7 +12392,86 @@
11157
12392
  },
11158
12393
  "mcp-server-ida": {
11159
12394
  "category": "embedded-system",
11160
- "path": "embedded-system/mcp-server-ida.json"
12395
+ "path": "embedded-system/mcp-server-ida.json",
12396
+ "validated": true,
12397
+ "tools": {
12398
+ "ida_get_function_assembly_by_name": {
12399
+ "name": "ida_get_function_assembly_by_name",
12400
+ "description": "Get assembly code for a function by name"
12401
+ },
12402
+ "ida_get_function_assembly_by_address": {
12403
+ "name": "ida_get_function_assembly_by_address",
12404
+ "description": "Get assembly code for a function by address"
12405
+ },
12406
+ "ida_get_function_decompiled_by_name": {
12407
+ "name": "ida_get_function_decompiled_by_name",
12408
+ "description": "Get decompiled pseudocode for a function by name"
12409
+ },
12410
+ "ida_get_function_decompiled_by_address": {
12411
+ "name": "ida_get_function_decompiled_by_address",
12412
+ "description": "Get decompiled pseudocode for a function by address"
12413
+ },
12414
+ "ida_get_global_variable_by_name": {
12415
+ "name": "ida_get_global_variable_by_name",
12416
+ "description": "Get information about a global variable by name"
12417
+ },
12418
+ "ida_get_global_variable_by_address": {
12419
+ "name": "ida_get_global_variable_by_address",
12420
+ "description": "Get information about a global variable by address"
12421
+ },
12422
+ "ida_get_current_function_assembly": {
12423
+ "name": "ida_get_current_function_assembly",
12424
+ "description": "Get assembly code for the function at the current cursor position"
12425
+ },
12426
+ "ida_get_current_function_decompiled": {
12427
+ "name": "ida_get_current_function_decompiled",
12428
+ "description": "Get decompiled pseudocode for the function at the current cursor position"
12429
+ },
12430
+ "ida_rename_local_variable": {
12431
+ "name": "ida_rename_local_variable",
12432
+ "description": "Rename a local variable within a function in the IDA database"
12433
+ },
12434
+ "ida_rename_global_variable": {
12435
+ "name": "ida_rename_global_variable",
12436
+ "description": "Rename a global variable in the IDA database"
12437
+ },
12438
+ "ida_rename_function": {
12439
+ "name": "ida_rename_function",
12440
+ "description": "Rename a function in the IDA database"
12441
+ },
12442
+ "ida_rename_multi_local_variables": {
12443
+ "name": "ida_rename_multi_local_variables",
12444
+ "description": "Rename multiple local variables within a function at once in the IDA database"
12445
+ },
12446
+ "ida_rename_multi_global_variables": {
12447
+ "name": "ida_rename_multi_global_variables",
12448
+ "description": "Rename multiple global variables at once in the IDA database"
12449
+ },
12450
+ "ida_rename_multi_functions": {
12451
+ "name": "ida_rename_multi_functions",
12452
+ "description": "Rename multiple functions at once in the IDA database"
12453
+ },
12454
+ "ida_add_assembly_comment": {
12455
+ "name": "ida_add_assembly_comment",
12456
+ "description": "Add a comment at a specific address in the assembly view of the IDA database"
12457
+ },
12458
+ "ida_add_function_comment": {
12459
+ "name": "ida_add_function_comment",
12460
+ "description": "Add a comment to a function in the IDA database"
12461
+ },
12462
+ "ida_add_pseudocode_comment": {
12463
+ "name": "ida_add_pseudocode_comment",
12464
+ "description": "Add a comment to a specific address in the function's decompiled pseudocode"
12465
+ },
12466
+ "ida_execute_script": {
12467
+ "name": "ida_execute_script",
12468
+ "description": "Execute a Python script in IDA Pro and return its output. The script runs in IDA's context with access to all IDA API modules."
12469
+ },
12470
+ "ida_execute_script_from_file": {
12471
+ "name": "ida_execute_script_from_file",
12472
+ "description": "Execute a Python script from a file path in IDA Pro and return its output. The file should be accessible from IDA's process."
12473
+ }
12474
+ }
11161
12475
  },
11162
12476
  "opc-ua": {
11163
12477
  "category": "embedded-system",
@@ -11300,7 +12614,62 @@
11300
12614
  },
11301
12615
  "frida-mcp": {
11302
12616
  "category": "embedded-system",
11303
- "path": "embedded-system/frida-mcp.json"
12617
+ "path": "embedded-system/frida-mcp.json",
12618
+ "validated": true,
12619
+ "tools": {
12620
+ "list_processes": {
12621
+ "name": "list_processes",
12622
+ "description": "List all processes running on the system."
12623
+ },
12624
+ "enumerate_processes": {
12625
+ "name": "enumerate_processes",
12626
+ "description": "List all processes running on the system.\n\nReturns:\n A list of process information dictionaries containing:\n - pid: Process ID\n - name: Process name\n"
12627
+ },
12628
+ "enumerate_devices": {
12629
+ "name": "enumerate_devices",
12630
+ "description": "List all devices connected to the system.\n\nReturns:\n A list of device information dictionaries containing:\n - id: Device ID\n - name: Device name\n - type: Device type\n"
12631
+ },
12632
+ "get_device": {
12633
+ "name": "get_device",
12634
+ "description": "Get a device by its ID.\n\nArgs:\n device_id: The ID of the device to get\n \nReturns:\n Information about the device\n"
12635
+ },
12636
+ "get_usb_device": {
12637
+ "name": "get_usb_device",
12638
+ "description": "Get the USB device connected to the system.\n\nReturns:\n Information about the USB device\n"
12639
+ },
12640
+ "get_process_by_name": {
12641
+ "name": "get_process_by_name",
12642
+ "description": "Find a process by name."
12643
+ },
12644
+ "attach_to_process": {
12645
+ "name": "attach_to_process",
12646
+ "description": "Attach to a process by ID."
12647
+ },
12648
+ "create_simple_hook": {
12649
+ "name": "create_simple_hook",
12650
+ "description": "Create a simple hook for a process."
12651
+ },
12652
+ "spawn_process": {
12653
+ "name": "spawn_process",
12654
+ "description": "Spawn a program.\n\nArgs:\n program: The program to spawn\n args: Optional arguments for the program\n device_id: Optional device ID\n \nReturns:\n Information about the spawned process\n"
12655
+ },
12656
+ "resume_process": {
12657
+ "name": "resume_process",
12658
+ "description": "Resume a process by ID.\n\nArgs:\n pid: The ID of the process to resume\n device_id: Optional device ID\n \nReturns:\n Status information\n"
12659
+ },
12660
+ "kill_process": {
12661
+ "name": "kill_process",
12662
+ "description": "Kill a process by ID.\n\nArgs:\n pid: The ID of the process to kill\n device_id: Optional device ID\n \nReturns:\n Status information\n"
12663
+ },
12664
+ "create_interactive_session": {
12665
+ "name": "create_interactive_session",
12666
+ "description": "Create an interactive REPL-like session with a process.\n\nThis returns a session ID that can be used with execute_in_session to run commands.\n\nArgs:\n process_id: The ID of the process to attach to\n \nReturns:\n Information about the created session\n"
12667
+ },
12668
+ "execute_in_session": {
12669
+ "name": "execute_in_session",
12670
+ "description": "Execute JavaScript code in an interactive session.\n\nArgs:\n session_id: The ID of the session to execute in\n javascript_code: The JavaScript code to execute\n \nReturns:\n The result of the execution\n"
12671
+ }
12672
+ }
11304
12673
  },
11305
12674
  "ros-2-robot-control": {
11306
12675
  "category": "embedded-system",
@@ -11685,7 +13054,14 @@
11685
13054
  },
11686
13055
  "mcp-tree-explorer": {
11687
13056
  "category": "file-systems",
11688
- "path": "file-systems/mcp-tree-explorer.json"
13057
+ "path": "file-systems/mcp-tree-explorer.json",
13058
+ "validated": true,
13059
+ "tools": {
13060
+ "project_tree": {
13061
+ "name": "project_tree",
13062
+ "description": "\nShow the directory structure using the tree command.\n\nArgs:\n directory: The directory to examine (default: current directory)\n depth: Maximum depth of the tree (unlimited if not specified or 0)\n ignore: Additional patterns to ignore, comma-separated\n keep: Patterns to keep even if they match auto-ignore patterns, comma-separated\n"
13063
+ }
13064
+ }
11689
13065
  },
11690
13066
  "ledger": {
11691
13067
  "category": "file-systems",
@@ -11717,7 +13093,18 @@
11717
13093
  },
11718
13094
  "mcp-text-editor": {
11719
13095
  "category": "file-systems",
11720
- "path": "file-systems/mcp-text-editor.json"
13096
+ "path": "file-systems/mcp-text-editor.json",
13097
+ "validated": true,
13098
+ "tools": {
13099
+ "get_text_file_contents": {
13100
+ "name": "get_text_file_contents",
13101
+ "description": "Read text file contents from multiple files and line ranges. Returns file contents with hashes for concurrency control and line numbers for reference. The hashes are used to detect conflicts when editing the files. File paths must be absolute."
13102
+ },
13103
+ "edit_text_file_contents": {
13104
+ "name": "edit_text_file_contents",
13105
+ "description": "A line editor that supports editing text file contents by specifying line ranges and content. It handles multiple patches in a single operation with hash-based conflict detection. File paths must be absolute. IMPORTANT: (1) Before using this tool, you must first get the file's current hash and range hashes and line numbers using get_text_file_contents. (2) To avoid line number shifts affecting your patches, use get_text_file_contents to read the SAME ranges you plan to edit before making changes. different line numbers have different rangehashes.(3) Patches must be specified from bottom to top to handle line number shifts correctly, as edits to lower lines don't affect the line numbers of higher lines. (4) To append content to a file, first get the total number of lines with get_text_file_contents, then specify a patch with line_start = total_lines + 1 and line_end = total_lines. This indicates an append operation and range_hash is not required. Similarly, range_hash is not required for new file creation."
13106
+ }
13107
+ }
11721
13108
  },
11722
13109
  "@isaacphi/mcp-gdrive": {
11723
13110
  "category": "file-systems",
@@ -12055,7 +13442,38 @@
12055
13442
  },
12056
13443
  "akshare-one-mcp": {
12057
13444
  "category": "finance-fintech",
12058
- "path": "finance-fintech/akshare-one-mcp.json"
13445
+ "path": "finance-fintech/akshare-one-mcp.json",
13446
+ "validated": true,
13447
+ "tools": {
13448
+ "get_hist_data": {
13449
+ "name": "get_hist_data",
13450
+ "description": "Get historical stock market data\n\nArgs:\n symbol: Stock symbol/ticker (e.g. '000001')\n interval: Time interval ('minute','hour','day','week','month','year')\n interval_multiplier: Interval multiplier (default: 1)\n start_date: Start date in YYYY-MM-DD format (default: '1970-01-01')\n end_date: End date in YYYY-MM-DD format (default: '2030-12-31')\n adjust: Adjustment type ('none', 'qfq', 'hfq') (default: 'none')\n source: Data source ('eastmoney', 'sina') (default: 'eastmoney')\n"
13451
+ },
13452
+ "get_realtime_data": {
13453
+ "name": "get_realtime_data",
13454
+ "description": "Get real-time stock market data\n\nArgs:\n symbol: Stock symbol/ticker (optional, e.g. '000001')\n source: Data source ('xueqiu', 'eastmoney') (default: 'xueqiu')\n"
13455
+ },
13456
+ "get_news_data": {
13457
+ "name": "get_news_data",
13458
+ "description": "Get stock-related news data\n\nArgs:\n symbol: Stock symbol/ticker (e.g. '000001')\n source: Data source (default: 'eastmoney')\n"
13459
+ },
13460
+ "get_balance_sheet": {
13461
+ "name": "get_balance_sheet",
13462
+ "description": "Get company balance sheet data\n\nArgs:\n symbol: Stock symbol/ticker (e.g. '000001')\n source: Data source (default: 'sina')\n"
13463
+ },
13464
+ "get_income_statement": {
13465
+ "name": "get_income_statement",
13466
+ "description": "Get company income statement data\n\nArgs:\n symbol: Stock symbol/ticker (e.g. '000001')\n source: Data source (default: 'sina')\n"
13467
+ },
13468
+ "get_cash_flow": {
13469
+ "name": "get_cash_flow",
13470
+ "description": "Get company cash flow statement data\n\nArgs:\n symbol: Stock symbol/ticker (e.g. '000001')\n source: Data source (default: 'sina')\n"
13471
+ },
13472
+ "get_inner_trade_data": {
13473
+ "name": "get_inner_trade_data",
13474
+ "description": "Get company insider trading data\n\nArgs:\n symbol: Stock symbol/ticker (optional, e.g. '000001')\n source: Data source (default: 'xueqiu')\n"
13475
+ }
13476
+ }
12059
13477
  },
12060
13478
  "binance-smart-chain": {
12061
13479
  "category": "finance-fintech",
@@ -12063,7 +13481,34 @@
12063
13481
  },
12064
13482
  "fewsats-mcp": {
12065
13483
  "category": "finance-fintech",
12066
- "path": "finance-fintech/fewsats-mcp.json"
13484
+ "path": "finance-fintech/fewsats-mcp.json",
13485
+ "validated": true,
13486
+ "tools": {
13487
+ "fewsats_balance": {
13488
+ "name": "fewsats_balance",
13489
+ "description": "Retrieve the balance of the user's wallet.\nYou will rarely need to call this unless instructed by the user, or to troubleshoot payment issues.\nFewsats will automatically add balance when needed."
13490
+ },
13491
+ "fewsats_payment_methods": {
13492
+ "name": "fewsats_payment_methods",
13493
+ "description": "Retrieve the user's payment methods.\nYou will rarely need to call this unless instructed by the user, or to troubleshoot payment issues.\nFewsats will automatically select the best payment method."
13494
+ },
13495
+ "fewsats_pay_offer": {
13496
+ "name": "fewsats_pay_offer",
13497
+ "description": "Pays an offer_id from the l402_offers.\n\nThe l402_offer parameter must be a dict with this structure:\n{\n 'offers': [\n {\n 'id': 'test_offer_2', # String identifier for the offer\n 'amount': 1, # Numeric cost value\n 'currency': 'usd', # Currency code\n 'description': 'Test offer', # Text description\n 'title': 'Test Package' # Title of the package\n }\n ],\n 'payment_context_token': '60a8e027-8b8b-4ccf-b2b9-380ed0930283', # Payment context token\n 'payment_request_url': 'https://api.fewsats.com/v0/l402/payment-request', # Payment URL\n 'version': '0.2.2' # API version\n}\n\nReturns payment status response.\nIf payment status is `needs_review` inform the user he will have to approve it at app.fewsats.com"
13498
+ },
13499
+ "fewsats_payment_info": {
13500
+ "name": "fewsats_payment_info",
13501
+ "description": "Retrieve the details of a payment.\nIf payment status is `needs_review` inform the user he will have to approve it at app.fewsats.com"
13502
+ },
13503
+ "fewsats_billing_info": {
13504
+ "name": "fewsats_billing_info",
13505
+ "description": "Retrieve the user's address and billing information.\nReturns billing details including name, address, and other relevant information.\nThis information can also be used as shipping address for purchases."
13506
+ },
13507
+ "fewsats_create_x402_payment_header": {
13508
+ "name": "fewsats_create_x402_payment_header",
13509
+ "description": "\nCreates a payment header for the X402 protocol.\n\nThe chain is base-sepolia or base\nThe x402 payload must be a dict with this structure:\n{\n \"accepts\": [\n {\n \"asset\": \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",\n \"description\": \"Payment for GET https://proxy402.com/7Yhuf2O3zs\",\n \"extra\": {\n \"name\": \"USDC\",\n \"version\": \"2\"\n },\n \"maxAmountRequired\": \"10\",\n \"maxTimeoutSeconds\": 300,\n \"mimeType\": \"\",\n \"network\": \"base-sepolia\",\n \"payTo\": \"0xbA5Ae80f48E0C74878c1a362D69c27c2135Aa594\",\n \"resource\": \"https://proxy402.com/7Yhuf2O3zs\",\n \"scheme\": \"exact\"\n }\n ],\n \"error\": \"X-PAYMENT header is required\",\n \"x402Version\": 1\n}\n\nReturns a dict with the payment_header field that must be set in X-PAYMENT header in a x402 http request.\n"
13510
+ }
13511
+ }
12067
13512
  },
12068
13513
  "@bujaayjaay/mcp-coincap-jj": {
12069
13514
  "category": "finance-fintech",
@@ -12471,7 +13916,30 @@
12471
13916
  },
12472
13917
  "yfmcp": {
12473
13918
  "category": "finance-fintech",
12474
- "path": "finance-fintech/yfmcp.json"
13919
+ "path": "finance-fintech/yfmcp.json",
13920
+ "validated": true,
13921
+ "tools": {
13922
+ "get_ticker_info": {
13923
+ "name": "get_ticker_info",
13924
+ "description": "Retrieve stock data including company info, financials, trading metrics and governance data."
13925
+ },
13926
+ "get_ticker_news": {
13927
+ "name": "get_ticker_news",
13928
+ "description": "Fetches recent news articles related to a specific stock symbol with title, content, and source details."
13929
+ },
13930
+ "search": {
13931
+ "name": "search",
13932
+ "description": "Fetches and organizes search results from Yahoo Finance, including stock quotes and news articles."
13933
+ },
13934
+ "get_top": {
13935
+ "name": "get_top",
13936
+ "description": "Get top entities (ETFs, mutual funds, companies, growth companies, or performing companies) in a sector."
13937
+ },
13938
+ "get_price_history": {
13939
+ "name": "get_price_history",
13940
+ "description": "Fetch historical price data for a given stock symbol over a specified period and interval."
13941
+ }
13942
+ }
12475
13943
  },
12476
13944
  "mercadolibre-mcp": {
12477
13945
  "category": "other-tools-and-integrations",
@@ -12518,7 +13986,22 @@
12518
13986
  },
12519
13987
  "setu_mcp_kyc": {
12520
13988
  "category": "finance-fintech",
12521
- "path": "finance-fintech/setu_mcp_kyc.json"
13989
+ "path": "finance-fintech/setu_mcp_kyc.json",
13990
+ "validated": true,
13991
+ "tools": {
13992
+ "verify-pan": {
13993
+ "name": "verify-pan",
13994
+ "description": "Verify a PAN card number using Setu API"
13995
+ },
13996
+ "verify-gst": {
13997
+ "name": "verify-gst",
13998
+ "description": "Verify a GST number using Setu API"
13999
+ },
14000
+ "match-names": {
14001
+ "name": "match-names",
14002
+ "description": "Compare two names and get their match percentage using Setu API"
14003
+ }
14004
+ }
12522
14005
  },
12523
14006
  "etf-flow-mcp": {
12524
14007
  "category": "finance-fintech",
@@ -13044,7 +14527,30 @@
13044
14527
  },
13045
14528
  "setu_mcp_upi_deeplinks": {
13046
14529
  "category": "finance-fintech",
13047
- "path": "finance-fintech/setu_mcp_upi_deeplinks.json"
14530
+ "path": "finance-fintech/setu_mcp_upi_deeplinks.json",
14531
+ "validated": true,
14532
+ "tools": {
14533
+ "create-payment-link": {
14534
+ "name": "create-payment-link",
14535
+ "description": "Create a new UPI payment link"
14536
+ },
14537
+ "expire-payment": {
14538
+ "name": "expire-payment",
14539
+ "description": "Expire an existing payment link"
14540
+ },
14541
+ "initiate-refund": {
14542
+ "name": "initiate-refund",
14543
+ "description": "Initiate a refund for a payment"
14544
+ },
14545
+ "check-payment-status": {
14546
+ "name": "check-payment-status",
14547
+ "description": "Check the status of a payment"
14548
+ },
14549
+ "mock-payment": {
14550
+ "name": "mock-payment",
14551
+ "description": "Simulate a payment (sandbox mode only)"
14552
+ }
14553
+ }
13048
14554
  },
13049
14555
  "square-mcp-server": {
13050
14556
  "category": "finance-fintech",
@@ -13319,7 +14825,38 @@
13319
14825
  },
13320
14826
  "investor-agent": {
13321
14827
  "category": "finance-fintech",
13322
- "path": "finance-fintech/investor-agent.json"
14828
+ "path": "finance-fintech/investor-agent.json",
14829
+ "validated": true,
14830
+ "tools": {
14831
+ "get_ticker_data": {
14832
+ "name": "get_ticker_data",
14833
+ "description": "Get comprehensive report for ticker: overview, news, metrics, performance, dates, analyst recommendations, and upgrades/downgrades."
14834
+ },
14835
+ "get_available_options": {
14836
+ "name": "get_available_options",
14837
+ "description": "Get options with highest open interest. Dates: YYYY-MM-DD. Type: C=calls, P=puts."
14838
+ },
14839
+ "get_price_history": {
14840
+ "name": "get_price_history",
14841
+ "description": "Get historical price data for specified period."
14842
+ },
14843
+ "get_financial_statements": {
14844
+ "name": "get_financial_statements",
14845
+ "description": "Get financial statements. Types: income, balance, cash. Frequency: quarterly, annual."
14846
+ },
14847
+ "get_institutional_holders": {
14848
+ "name": "get_institutional_holders",
14849
+ "description": "Get major institutional and mutual fund holders."
14850
+ },
14851
+ "get_earnings_history": {
14852
+ "name": "get_earnings_history",
14853
+ "description": "Get earnings history with estimates and surprises."
14854
+ },
14855
+ "get_insider_trades": {
14856
+ "name": "get_insider_trades",
14857
+ "description": "Get recent insider trading activity."
14858
+ }
14859
+ }
13323
14860
  },
13324
14861
  "openbudget": {
13325
14862
  "category": "finance-fintech",
@@ -13514,7 +15051,34 @@
13514
15051
  },
13515
15052
  "mcp-chess": {
13516
15053
  "category": "gaming",
13517
- "path": "gaming/mcp-chess.json"
15054
+ "path": "gaming/mcp-chess.json",
15055
+ "validated": true,
15056
+ "tools": {
15057
+ "get_board_visualization": {
15058
+ "name": "get_board_visualization",
15059
+ "description": "Provides the current state of the chessboard as an image."
15060
+ },
15061
+ "get_turn": {
15062
+ "name": "get_turn",
15063
+ "description": "Indicates whose turn it is ('white' or 'black')."
15064
+ },
15065
+ "get_valid_moves": {
15066
+ "name": "get_valid_moves",
15067
+ "description": "Lists all legal moves for the current player in UCI notation."
15068
+ },
15069
+ "make_move": {
15070
+ "name": "make_move",
15071
+ "description": "\nMakes a move on the board using standard algebraic notation (SAN).\nArgs:\n move_san: The player's move in algebraic notation (e.g., 'e4', 'Nf3', 'Bxe5').\nReturns:\n A dictionary containing the move in SAN format, the move in UCI format, the new board FEN,\n whether the game is over, and the result if applicable.\n"
15072
+ },
15073
+ "new_game": {
15074
+ "name": "new_game",
15075
+ "description": "\nStarts a new game, resetting the board to the initial position.\n\nArgs:\n user_plays_white: Whether the user will play as white. Defaults to True.\n\nReturns:\n A confirmation message indicating the game has started and the user's color.\n"
15076
+ },
15077
+ "find_position_in_pgn": {
15078
+ "name": "find_position_in_pgn",
15079
+ "description": "\nFinds the first board position in a PGN string that matches a given condition\n(e.g., 'bishop on a3') and returns an image of that board.\n\nArgs:\n pgn_string: The PGN string of the game.\n condition: A string describing the condition, format: \"piece_type on square_name\"\n (e.g., \"bishop on a3\", \"knight on f6\", \"king on g1\").\n\nReturns:\n An Image dictionary containing the PNG data of the board state if found,\n or a string with an error message.\n"
15080
+ }
15081
+ }
13518
15082
  },
13519
15083
  "steam": {
13520
15084
  "category": "gaming",
@@ -13923,7 +15487,62 @@
13923
15487
  },
13924
15488
  "logseq-mcp": {
13925
15489
  "category": "knowledge-memory",
13926
- "path": "knowledge-memory/logseq-mcp.json"
15490
+ "path": "knowledge-memory/logseq-mcp.json",
15491
+ "validated": true,
15492
+ "tools": {
15493
+ "get_all_pages": {
15494
+ "name": "get_all_pages",
15495
+ "description": "\nGets all pages from the Logseq graph.\n\nJournal pages can be identified by the \"journal?\" attribute set to true and \nwill include a \"journalDay\" attribute in the format YYYYMMDD.\n\nReturns:\n list: A list of all pages in the Logseq graph.\n"
15496
+ },
15497
+ "get_page": {
15498
+ "name": "get_page",
15499
+ "description": "\nGets a specific page from the Logseq graph by name.\n\nFor journal pages, use the format \"mmm dth, yyyy\" (e.g., \"Apr 4th, 2025\").\nNote that journal pages are automatically created in Logseq with this date format.\n\nJournal pages have specific attributes:\n- \"journal?\": true - Indicates this is a journal page\n- \"journalDay\": YYYYMMDD - The date in numeric format (e.g., 20250404 for April 4, 2025)\n\nArgs:\n name (str): The name of the page to retrieve.\n \nReturns:\n dict: Information about the requested page.\n"
15500
+ },
15501
+ "create_page": {
15502
+ "name": "create_page",
15503
+ "description": "\nCreates a new page in the Logseq graph.\n\nFor journal pages, use the format \"mmm dth, yyyy\" (e.g., \"Apr 4th, 2025\").\nJournal pages are specially formatted in Logseq with automatic dating.\n\nWhen you create a journal page, Logseq automatically:\n- Sets \"journal?\": true\n- Sets \"journalDay\": YYYYMMDD (e.g., 20250404 for April 4, 2025)\n- Formats the page as a journal entry\n\nArgs:\n name (str): The name of the new page.\n properties (dict, optional): Properties to set on the new page.\n \nReturns:\n dict: Information about the created page.\n"
15504
+ },
15505
+ "delete_page": {
15506
+ "name": "delete_page",
15507
+ "description": "\nDeletes a page from the Logseq graph.\n\nThis operation removes the specified page and all its blocks. This action cannot be undone.\n\nFor journal pages, use the format \"mmm dth, yyyy\" (e.g., \"Apr 4th, 2025\").\n\nArgs:\n name (str): The name of the page to delete.\n \nReturns:\n dict: Result of the deletion operation.\n"
15508
+ },
15509
+ "get_page_linked_references": {
15510
+ "name": "get_page_linked_references",
15511
+ "description": "\nGets all linked references to a specific page in the Logseq graph.\n\nThis returns blocks that contain links to the specified page using\nthe Logseq double bracket notation: [[Page Name]].\n\nFor journal pages, use the format \"mmm dth, yyyy\" (e.g., \"Apr 4th, 2025\").\n\nArgs:\n page_name (str): The name of the page to find references to.\n \nReturns:\n list: A list of blocks that reference the specified page.\n"
15512
+ },
15513
+ "get_page_blocks": {
15514
+ "name": "get_page_blocks",
15515
+ "description": "\nGets all blocks from a specific page in the Logseq graph.\n\nFor journal pages, use the format \"mmm dth, yyyy\" (e.g., \"Apr 4th, 2025\").\nReturned blocks contain information about their hierarchical structure:\n - parent: The parent block's ID\n - level: The indentation level (1 for top-level, 2+ for indented blocks)\n - left: The block to the left (typically the parent for indented blocks)\n\nBlocks from journal pages will have:\n - \"journal?\": true\n - \"journalDay\": YYYYMMDD - The date in numeric format (e.g., 20250404)\n\nArgs:\n page_name (str): The name of the page to retrieve blocks from.\n \nReturns:\n list: A list of blocks from the specified page.\n"
15516
+ },
15517
+ "get_block": {
15518
+ "name": "get_block",
15519
+ "description": "\nGets a specific block from the Logseq graph by its ID.\n\nThe returned block contains information about its hierarchical structure:\n - parent: The parent block's ID\n - level: The indentation level (1 for top-level, 2+ for indented blocks)\n - left: The block to the left (typically the parent for indented blocks)\n\nIf the block is from a journal page, it will include:\n - \"journal?\": true\n - \"journalDay\": YYYYMMDD - Date in numeric format\n\nArgs:\n block_id (str): The ID of the block to retrieve.\n \nReturns:\n dict: Information about the requested block.\n"
15520
+ },
15521
+ "create_block": {
15522
+ "name": "create_block",
15523
+ "description": "\nCreates a new block on a page in the Logseq graph.\n\nIMPORTANT NOTES:\n1. All blocks are automatically formatted as bullet points in Logseq UI\n2. To create links to other pages, use double brackets: [[Page Name]]\n\nWhen creating blocks on journal pages:\n - The block will inherit the \"journal?\" and \"journalDay\" attributes from the page\n - \"journalDay\" will be in YYYYMMDD format (e.g., 20250404 for April 4, 2025)\n\nArgs:\n page_name (str): The name of the page to create the block on.\n content (str): The content of the new block.\n properties (dict, optional): Properties to set on the new block.\n \nReturns:\n dict: Information about the created block.\n"
15524
+ },
15525
+ "insert_block": {
15526
+ "name": "insert_block",
15527
+ "description": "\nInserts a new block as a child of the specified parent block.\n\nThis allows for creating hierarchical content by adding children to existing blocks.\n\nIMPORTANT NOTES:\n1. All blocks are automatically formatted as bullet points in Logseq UI\n2. To create links to other pages, use double brackets: [[Page Name]]\n3. The new block will be inserted at the beginning or end of the parent's children\n depending on the 'before' parameter\n\nWhen inserting blocks into journal pages:\n - The block will inherit the \"journal?\" and \"journalDay\" attributes\n - \"journalDay\" will be in YYYYMMDD format (e.g., 20250404 for April 4, 2025)\n\nArgs:\n parent_block_id (str): The ID of the parent block to insert under.\n content (str): The content of the new block.\n properties (dict, optional): Properties to set on the new block.\n before (bool, optional): Whether to insert at the beginning of children. \n Default is False (append at the end).\n \nReturns:\n dict: Information about the created block.\n"
15528
+ },
15529
+ "update_block": {
15530
+ "name": "update_block",
15531
+ "description": "\nUpdates an existing block in the Logseq graph.\n\nIMPORTANT NOTES:\n1. All blocks are automatically formatted as bullet points in Logseq UI\n2. To create links to other pages, use double brackets: [[Page Name]]\n\nWhen updating blocks on journal pages:\n - The \"journal?\" and \"journalDay\" attributes will be preserved\n - \"journalDay\" will remain in YYYYMMDD format (e.g., 20250404)\n\nArgs:\n block_id (str): The ID of the block to update.\n content (str): The new content for the block.\n properties (dict, optional): Properties to update on the block.\n \nReturns:\n dict: Information about the updated block.\n"
15532
+ },
15533
+ "move_block": {
15534
+ "name": "move_block",
15535
+ "description": "\nMoves a block to a new location in the graph.\n\nThis allows for reorganizing the structure of blocks in the graph by moving\na block (and all its children) to a different location.\n\nIMPORTANT NOTES:\n1. The block will maintain its children when moved\n2. The hierarchical position depends on the 'as_child' parameter:\n - If as_child=True: The block becomes a child of the target block\n - If as_child=False: The block becomes a sibling after the target block\n\nArgs:\n block_id (str): The ID of the block to move.\n target_block_id (str): The ID of the target block to move to.\n as_child (bool, optional): Whether to make the block a child of the target.\n Default is False (insert as sibling).\n \nReturns:\n dict: Result of the move operation.\n"
15536
+ },
15537
+ "remove_block": {
15538
+ "name": "remove_block",
15539
+ "description": "\nRemoves a block from the Logseq graph.\n\nThis operation permanently removes the specified block and all its children.\nThis action cannot be undone.\n\nTo remove a block, you need its block ID, which can be obtained from:\n- get_page_blocks() function\n- get_block() function\n- search_blocks() function\n\nArgs:\n block_id (str): The ID of the block to remove.\n \nReturns:\n dict: Result of the removal operation.\n"
15540
+ },
15541
+ "search_blocks": {
15542
+ "name": "search_blocks",
15543
+ "description": "\nSearches for blocks matching a query in the Logseq graph.\n\nExamples of useful queries:\n- page:\"Page Name\" - find all blocks on a specific page\n- \"search term\" - find blocks containing the term\n- page:\"Apr 4th, 2025\" - find all blocks in a journal\n- [[Page Name]] - find references to a specific page\n\nReturned blocks from journal pages will include:\n- \"journal?\": true\n- \"journalDay\": YYYYMMDD - The date in numeric format\n\nArgs:\n query (str): The search query.\n \nReturns:\n list: A list of blocks matching the search query.\n"
15544
+ }
15545
+ }
13927
15546
  },
13928
15547
  "memory-bank": {
13929
15548
  "category": "knowledge-memory",
@@ -13937,11 +15556,153 @@
13937
15556
  },
13938
15557
  "mcp-outline": {
13939
15558
  "category": "knowledge-memory",
13940
- "path": "knowledge-memory/mcp-outline.json"
15559
+ "path": "knowledge-memory/mcp-outline.json",
15560
+ "validated": true,
15561
+ "tools": {
15562
+ "search_documents": {
15563
+ "name": "search_documents",
15564
+ "description": "\nSearches for documents using keywords or phrases across your knowledge \nbase.\n\nIMPORTANT: The search performs full-text search across all document \ncontent and titles. Results are ranked by relevance, with exact \nmatches \nand title matches typically ranked higher. The search will return \nsnippets of content (context) where the search terms appear in the \ndocument. You can limit the search to a specific collection by \nproviding \nthe collection_id.\n\nUse this tool when you need to:\n- Find documents containing specific terms or topics\n- Locate information across multiple documents\n- Search within a specific collection using collection_id\n- Discover content based on keywords\n\nArgs:\n query: Search terms (e.g., \"vacation policy\" or \"project plan\")\n collection_id: Optional collection to limit the search to\n \nReturns:\n Formatted string containing search results with document titles \n and \n contexts\n"
15565
+ },
15566
+ "list_collections": {
15567
+ "name": "list_collections",
15568
+ "description": "\nRetrieves and displays all available collections in the workspace.\n\nUse this tool when you need to:\n- See what collections exist in the workspace\n- Get collection IDs for other operations\n- Explore the organization of the knowledge base\n- Find a specific collection by name\n\nReturns:\n Formatted string containing collection names, IDs, and descriptions\n"
15569
+ },
15570
+ "get_collection_structure": {
15571
+ "name": "get_collection_structure",
15572
+ "description": "\nRetrieves the hierarchical document structure of a collection.\n\nUse this tool when you need to:\n- Understand how documents are organized in a collection\n- Find document IDs within a specific collection\n- See the parent-child relationships between documents\n- Get an overview of a collection's content structure\n\nArgs:\n collection_id: The collection ID to examine\n \nReturns:\n Formatted string showing the hierarchical structure of documents\n"
15573
+ },
15574
+ "get_document_id_from_title": {
15575
+ "name": "get_document_id_from_title",
15576
+ "description": "\nLocates a document ID by searching for its title.\n\nIMPORTANT: This tool first checks for exact title matches \n(case-insensitive). If none are found, it returns the best partial \nmatch instead. This is useful when you're not sure of the exact title \nbut need \nto reference a document in other operations. Results are more accurate \nwhen you provide more of the actual title in your query.\n\nUse this tool when you need to:\n- Find a document's ID when you only know its title\n- Get the document ID for use in other operations\n- Verify if a document with a specific title exists\n- Find the best matching document if exact title is unknown\n\nArgs:\n query: Title to search for (can be exact or partial)\n collection_id: Optional collection to limit the search to\n \nReturns:\n Document ID if found, or best match information\n"
15577
+ },
15578
+ "read_document": {
15579
+ "name": "read_document",
15580
+ "description": "\nRetrieves and displays the full content of a document.\n\nUse this tool when you need to:\n- Access the complete content of a specific document\n- Review document information in detail\n- Quote or reference document content\n- Analyze document contents\n\nArgs:\n document_id: The document ID to retrieve\n \nReturns:\n Formatted string containing the document title and content\n"
15581
+ },
15582
+ "export_document": {
15583
+ "name": "export_document",
15584
+ "description": "\nExports a document as plain markdown text.\n\nUse this tool when you need to:\n- Get clean markdown content without formatting\n- Extract document content for external use\n- Process document content in another application\n- Share document content outside Outline\n\nArgs:\n document_id: The document ID to export\n \nReturns:\n Document content in markdown format without additional formatting\n"
15585
+ },
15586
+ "create_document": {
15587
+ "name": "create_document",
15588
+ "description": "\nCreates a new document in a specified collection.\n\nUse this tool when you need to:\n- Add new content to a knowledge base\n- Create documentation, guides, or notes\n- Add a child document to an existing parent\n- Start a new document thread or topic\n\nArgs:\n title: The document title\n collection_id: The collection ID to create the document in\n text: Optional markdown content for the document\n parent_document_id: Optional parent document ID for nesting\n publish: Whether to publish the document immediately (True) or \n save as draft (False)\n \nReturns:\n Result message with the new document ID\n"
15589
+ },
15590
+ "update_document": {
15591
+ "name": "update_document",
15592
+ "description": "\n Modifies an existing document's title or content.\n \n IMPORTANT: This tool replaces the document content rather than just \nadding to it.\n To update a document with changed data, you need to first read the \ndocument,\n add your changes to the content, and then send the complete document \nwith your changes.\n \n Use this tool when you need to:\n - Edit or update document content\n - Change a document's title\n - Append new content to an existing document\n - Fix errors or add information to documents\n \n Args:\n document_id: The document ID to update\n title: New title (if None, keeps existing title)\n text: New content (if None, keeps existing content)\n append: If True, adds text to the end of document instead of \n replacing\n \n Returns:\n Result message confirming update\n "
15593
+ },
15594
+ "add_comment": {
15595
+ "name": "add_comment",
15596
+ "description": "\nAdds a comment to a document or replies to an existing comment.\n\nUse this tool when you need to:\n- Provide feedback on document content\n- Ask questions about specific information\n- Reply to another user's comment\n- Collaborate with others on document development\n\nArgs:\n document_id: The document to comment on\n text: The comment text (supports markdown)\n parent_comment_id: Optional ID of a parent comment (for replies)\n \nReturns:\n Result message with the new comment ID\n"
15597
+ },
15598
+ "move_document": {
15599
+ "name": "move_document",
15600
+ "description": "\nRelocates a document to a different collection or parent document.\n\nIMPORTANT: When moving a document that has child documents (nested \ndocuments), all child documents will move along with it, maintaining \ntheir hierarchical structure. You must specify either collection_id or \nparent_document_id (or both).\n\nUse this tool when you need to:\n- Reorganize your document hierarchy\n- Move a document to a more relevant collection\n- Change a document's parent document\n- Restructure content organization\n\nArgs:\n document_id: The document ID to move\n collection_id: Target collection ID (if moving between collections)\n parent_document_id: Optional parent document ID (for nesting)\n \nReturns:\n Result message confirming the move operation\n"
15601
+ },
15602
+ "archive_document": {
15603
+ "name": "archive_document",
15604
+ "description": "\nArchives a document to remove it from active use while preserving it.\n\nIMPORTANT: Archived documents are removed from collections but remain\nsearchable in the system. They won't appear in normal collection views\nbut can still be found through search or the archive list.\n\nUse this tool when you need to:\n- Remove outdated or inactive documents from view\n- Clean up collections while preserving document history\n- Preserve documents that are no longer relevant\n- Temporarily hide documents without deleting them\n\nArgs:\n document_id: The document ID to archive\n \nReturns:\n Result message confirming archival\n"
15605
+ },
15606
+ "unarchive_document": {
15607
+ "name": "unarchive_document",
15608
+ "description": "\nRestores a previously archived document to active status.\n\nUse this tool when you need to:\n- Restore archived documents to active use\n- Access or reference previously archived content\n- Make archived content visible in collections again\n- Update and reuse archived documents\n\nArgs:\n document_id: The document ID to unarchive\n \nReturns:\n Result message confirming restoration\n"
15609
+ },
15610
+ "delete_document": {
15611
+ "name": "delete_document",
15612
+ "description": "\nMoves a document to trash or permanently deletes it.\n\nIMPORTANT: When permanent=False (the default), documents are moved to \ntrash and retained for 30 days before being permanently deleted. \nDuring \nthis period, they can be restored using the restore_document tool. \nSetting permanent=True bypasses the trash and immediately deletes the \ndocument without any recovery option.\n\nUse this tool when you need to:\n- Remove unwanted or unnecessary documents\n- Delete obsolete content\n- Clean up workspace by removing documents\n- Permanently remove sensitive information (with permanent=True)\n\nArgs:\n document_id: The document ID to delete\n permanent: If True, permanently deletes the document without \n recovery option\n \nReturns:\n Result message confirming deletion\n"
15613
+ },
15614
+ "restore_document": {
15615
+ "name": "restore_document",
15616
+ "description": "\nRecovers a document from the trash back to active status.\n\nUse this tool when you need to:\n- Retrieve accidentally deleted documents\n- Restore documents from trash to active use\n- Recover documents deleted within the last 30 days\n- Access content that was previously trashed\n\nArgs:\n document_id: The document ID to restore\n \nReturns:\n Result message confirming restoration\n"
15617
+ },
15618
+ "list_archived_documents": {
15619
+ "name": "list_archived_documents",
15620
+ "description": "\nDisplays all documents that have been archived.\n\nUse this tool when you need to:\n- Find specific archived documents\n- Review what documents have been archived\n- Identify documents for possible unarchiving\n- Check archive status of workspace content\n\nReturns:\n Formatted string containing list of archived documents\n"
15621
+ },
15622
+ "list_trash": {
15623
+ "name": "list_trash",
15624
+ "description": "\nDisplays all documents currently in the trash.\n\nUse this tool when you need to:\n- Find deleted documents that can be restored\n- Review what documents are pending permanent deletion\n- Identify documents to restore from trash\n- Verify if specific documents were deleted\n\nReturns:\n Formatted string containing list of documents in trash\n"
15625
+ },
15626
+ "list_document_comments": {
15627
+ "name": "list_document_comments",
15628
+ "description": "\nRetrieves comments on a specific document with pagination support.\n\nIMPORTANT: By default, this returns up to 25 comments at a time. If \nthere are more than 25 comments on the document, you'll need to make \nmultiple calls with different offset values to get all comments. The \nresponse will indicate if there \nare more comments available.\n\nUse this tool when you need to:\n- Review feedback and discussions on a document\n- See all comments from different users\n- Find specific comments or questions\n- Track collaboration and input on documents\n\nArgs:\n document_id: The document ID to get comments from\n include_anchor_text: Whether to include the document text that \n comments refer to\n limit: Maximum number of comments to return (default: 25)\n offset: Number of comments to skip for pagination (default: 0)\n \nReturns:\n Formatted string containing comments with author, date, and \n optional anchor text\n"
15629
+ },
15630
+ "get_comment": {
15631
+ "name": "get_comment",
15632
+ "description": "\nRetrieves a specific comment by its ID.\n\nUse this tool when you need to:\n- View details of a specific comment\n- Reference or quote a particular comment\n- Check comment content and metadata\n- Find a comment mentioned elsewhere\n\nArgs:\n comment_id: The comment ID to retrieve\n include_anchor_text: Whether to include the document text that \n the comment refers to\n \nReturns:\n Formatted string with the comment content and metadata\n"
15633
+ },
15634
+ "get_document_backlinks": {
15635
+ "name": "get_document_backlinks",
15636
+ "description": "\n Finds all documents that link to a specific document.\n \n Use this tool when you need to:\n - Discover references to a document across the workspace\n - Identify dependencies between documents\n - Find documents related to a specific document\n - Understand document relationships and connections\n \n Args:\n document_id: The document ID to find backlinks for\n \n Returns:\n Formatted string listing all documents that link to the specified \ndocument\n "
15637
+ },
15638
+ "create_collection": {
15639
+ "name": "create_collection",
15640
+ "description": "\n Creates a new collection for organizing documents.\n \n Use this tool when you need to:\n - Create a new section or category for documents\n - Set up a workspace for a new project or team\n - Organize content by department or topic\n - Establish a separate space for related documents\n \n Args:\n name: Name for the collection\n description: Optional description of the collection's purpose\n color: Optional hex color code for visual identification \n(e.g. #FF0000)\n \n Returns:\n Result message with the new collection ID\n "
15641
+ },
15642
+ "update_collection": {
15643
+ "name": "update_collection",
15644
+ "description": "\nModifies an existing collection's properties.\n\nUse this tool when you need to:\n- Rename a collection\n- Update a collection's description\n- Change a collection's color coding\n- Refresh collection metadata\n\nArgs:\n collection_id: The collection ID to update\n name: Optional new name for the collection\n description: Optional new description\n color: Optional new hex color code (e.g. #FF0000)\n \nReturns:\n Result message confirming update\n"
15645
+ },
15646
+ "delete_collection": {
15647
+ "name": "delete_collection",
15648
+ "description": "\n Permanently removes a collection and all its documents.\n \n Use this tool when you need to:\n - Remove an entire section of content\n - Delete obsolete project collections\n - Remove collections that are no longer needed\n - Clean up workspace organization\n \n WARNING: This action cannot be undone and will delete all documents \nwithin the collection.\n \n Args:\n collection_id: The collection ID to delete\n \n Returns:\n Result message confirming deletion\n "
15649
+ },
15650
+ "export_collection": {
15651
+ "name": "export_collection",
15652
+ "description": "\nExports all documents in a collection to a downloadable file.\n\nIMPORTANT: This tool starts an asynchronous export operation which may \ntake time to complete. The function returns information about the \noperation, including its status. When the operation is complete, the \nfile can be downloaded or accessed via Outline's UI. The export \npreserves the document hierarchy and includes all document content and \nstructure in the \nspecified format.\n\nUse this tool when you need to:\n- Create a backup of collection content\n- Share collection content outside of Outline\n- Convert collection content to other formats\n- Archive collection content for offline use\n\nArgs:\n collection_id: The collection ID to export\n format: Export format (\"outline-markdown\", \"json\", or \"html\")\n \nReturns:\n Information about the export operation and how to access the file\n"
15653
+ },
15654
+ "export_all_collections": {
15655
+ "name": "export_all_collections",
15656
+ "description": "\nExports the entire workspace content to a downloadable file.\n\nIMPORTANT: This tool starts an asynchronous export operation which may \ntake time to complete, especially for large workspaces. The function \nreturns information about the operation, including its status. When \nthe operation is complete, the file can be downloaded or accessed via \nOutline's UI. The export includes all collections, documents, and \ntheir \nhierarchies in the specified format.\n\nUse this tool when you need to:\n- Create a complete backup of all workspace content\n- Migrate content to another system\n- Archive all workspace documents\n- Get a comprehensive export of knowledge base\n\nArgs:\n format: Export format (\"outline-markdown\", \"json\", or \"html\")\n \nReturns:\n Information about the export operation and how to access the file\n"
15657
+ },
15658
+ "ask_ai_about_documents": {
15659
+ "name": "ask_ai_about_documents",
15660
+ "description": "\n Queries document content using natural language questions.\n \n Use this tool when you need to:\n - Find specific information across multiple documents\n - Get direct answers to questions about document content\n - Extract insights from your knowledge base\n - Answer questions like \"What is our vacation policy?\" or \"How do we \nonboard new clients?\"\n \n Args:\n question: The natural language question to ask\n collection_id: Optional collection to limit the search to\n document_id: Optional document to limit the search to\n \n Returns:\n AI-generated answer based on document content with sources\n "
15661
+ }
15662
+ }
13941
15663
  },
13942
15664
  "memory-mcp-server": {
13943
15665
  "category": "knowledge-memory",
13944
- "path": "knowledge-memory/memory-mcp-server.json"
15666
+ "path": "knowledge-memory/memory-mcp-server.json",
15667
+ "validated": true,
15668
+ "tools": {
15669
+ "create_entities": {
15670
+ "name": "create_entities",
15671
+ "description": "Create multiple new entities in the knowledge graph"
15672
+ },
15673
+ "create_relations": {
15674
+ "name": "create_relations",
15675
+ "description": "Create multiple new relations between entities in the knowledge graph. Relations should be in active voice"
15676
+ },
15677
+ "add_observations": {
15678
+ "name": "add_observations",
15679
+ "description": "Add new observations to existing entities in the knowledge graph"
15680
+ },
15681
+ "delete_entities": {
15682
+ "name": "delete_entities",
15683
+ "description": "Delete multiple entities and their associated relations from the knowledge graph"
15684
+ },
15685
+ "delete_observations": {
15686
+ "name": "delete_observations",
15687
+ "description": "Delete specific observations from entities in the knowledge graph"
15688
+ },
15689
+ "delete_relations": {
15690
+ "name": "delete_relations",
15691
+ "description": "Delete multiple relations from the knowledge graph"
15692
+ },
15693
+ "read_graph": {
15694
+ "name": "read_graph",
15695
+ "description": "Read the entire knowledge graph"
15696
+ },
15697
+ "search_nodes": {
15698
+ "name": "search_nodes",
15699
+ "description": "Search for nodes in the knowledge graph based on a query"
15700
+ },
15701
+ "open_nodes": {
15702
+ "name": "open_nodes",
15703
+ "description": "Open specific nodes in the knowledge graph by their names"
15704
+ }
15705
+ }
13945
15706
  },
13946
15707
  "tana-mcp": {
13947
15708
  "category": "knowledge-memory",
@@ -14051,7 +15812,18 @@
14051
15812
  },
14052
15813
  "awslabs.bedrock-kb-retrieval-mcp-server": {
14053
15814
  "category": "knowledge-memory",
14054
- "path": "knowledge-memory/awslabs-bedrock-kb-retrieval-mcp-server.json"
15815
+ "path": "knowledge-memory/awslabs-bedrock-kb-retrieval-mcp-server.json",
15816
+ "validated": true,
15817
+ "tools": {
15818
+ "ListKnowledgeBases": {
15819
+ "name": "ListKnowledgeBases",
15820
+ "description": "List all available Amazon Bedrock Knowledge Bases and their data sources.\n\nThis tool returns a mapping of knowledge base IDs to their details, including:\n- name: The human-readable name of the knowledge base\n- data_sources: A list of data sources within the knowledge base, each with:\n - id: The unique identifier of the data source\n - name: The human-readable name of the data source\n\n## Example response structure:\n```json\n{\n \"kb-12345\": {\n \"name\": \"Customer Support KB\",\n \"data_sources\": [\n {\"id\": \"ds-abc123\", \"name\": \"Technical Documentation\"},\n {\"id\": \"ds-def456\", \"name\": \"FAQs\"}\n ]\n },\n \"kb-67890\": {\n \"name\": \"Product Information KB\",\n \"data_sources\": [\n {\"id\": \"ds-ghi789\", \"name\": \"Product Specifications\"}\n ]\n }\n}\n```\n\n## How to use this information:\n1. Extract the knowledge base IDs (like \"kb-12345\") for use with the QueryKnowledgeBases tool\n2. Note the data source IDs if you want to filter queries to specific data sources\n3. Use the names to determine which knowledge base and data source(s) are most relevant to the user's query\n"
15821
+ },
15822
+ "QueryKnowledgeBases": {
15823
+ "name": "QueryKnowledgeBases",
15824
+ "description": "Query an Amazon Bedrock Knowledge Base using natural language.\n\n## Usage Requirements\n- You MUST first use the ListKnowledgeBases tool to get valid knowledge base IDs\n- You can query different knowledge bases or make multiple queries to the same knowledge base\n\n## Query Tips\n- Use clear, specific natural language queries for best results\n- You can use this tool MULTIPLE TIMES with different queries to gather comprehensive information\n- Break complex questions into multiple focused queries\n- Consider querying for factual information and explanations separately\n\n## Tool output format\nThe response contains multiple JSON objects (one per line), each representing a retrieved document with:\n- content: The text content of the document\n- location: The source location of the document\n- score: The relevance score of the document\n\n\n## Interpretation Best Practices\n1. Extract and combine key information from multiple results\n2. Consider the source and relevance score when evaluating information\n3. Use follow-up queries to clarify ambiguous or incomplete information\n4. If the response is not relevant, try a different query, knowledge base, and/or data source\n5. After a few attempts, ask the user for clarification or a different query.\n"
15825
+ }
15826
+ }
14055
15827
  },
14056
15828
  "mcp-server-logseq": {
14057
15829
  "category": "knowledge-memory",
@@ -14176,7 +15948,14 @@
14176
15948
  },
14177
15949
  "mindmap-mcp-server": {
14178
15950
  "category": "knowledge-memory",
14179
- "path": "knowledge-memory/mindmap-mcp-server.json"
15951
+ "path": "knowledge-memory/mindmap-mcp-server.json",
15952
+ "validated": true,
15953
+ "tools": {
15954
+ "convert_markdown_to_mindmap": {
15955
+ "name": "convert_markdown_to_mindmap",
15956
+ "description": "Convert Markdown content to a mindmap mind map.\n\nArgs:\n markdown_content: The Markdown content to convert\n\nReturns:\n Either the HTML content or the file path to the generated HTML, \n depending on the --return-type server argument\n"
15957
+ }
15958
+ }
14180
15959
  },
14181
15960
  "joplin": {
14182
15961
  "category": "knowledge-memory",
@@ -14236,7 +16015,54 @@
14236
16015
  },
14237
16016
  "mcpunk": {
14238
16017
  "category": "knowledge-memory",
14239
- "path": "knowledge-memory/mcpunk.json"
16018
+ "path": "knowledge-memory/mcpunk.json",
16019
+ "validated": true,
16020
+ "tools": {
16021
+ "get_a_joke": {
16022
+ "name": "get_a_joke",
16023
+ "description": "Get a really funny joke! For testing :)"
16024
+ },
16025
+ "configure_project": {
16026
+ "name": "configure_project",
16027
+ "description": "Configure a new project containing files.\n\nEach file in the project is split into 'chunks' - logical sections like functions,\nclasses, markdown sections, and import blocks.\n\nAfter configuring, a common workflow is:\n1. list_all_files_in_project to get an overview of the project (with\n an initial limit on the depth of the search)\n2. Find files by function/class definition:\n find_files_by_chunk_content(... [\"def my_funk\"])\n3. Find files by function/class usage:\n find_files_by_chunk_content(... [\"my_funk\"])\n4. Determine which chunks in the found files are relevant:\n find_matching_chunks_in_file(...)\n5. Get details about the chunks:\n chunk_details(...)\n\nUse ~ (tilde) literally if the user specifies it in paths.\n"
16028
+ },
16029
+ "list_all_files_in_project": {
16030
+ "name": "list_all_files_in_project",
16031
+ "description": "List all files in a project, returning a file tree.\n\nThis is useful for getting an overview of the project, or specific\nsubdirectories of the project.\n\nA project may have many files, so you are suggested\nto start with a depth limit to get an overview, and then continue increasing\nthe depth limit with a filter to look at specific subdirectories.\n"
16032
+ },
16033
+ "find_files_by_chunk_content": {
16034
+ "name": "find_files_by_chunk_content",
16035
+ "description": "Step 1: Find files containing chunks with matching text.\n\nReturns file tree only showing which files contain matches.\nYou must use find_matching_chunks_in_file on each relevant file\nto see the actual matches.\n\nExample workflow:\n1. Find files:\n files = find_files_by_chunk_content(project, [\"MyClass\"])\n2. For each file, find actual matches:\n matches = find_matching_chunks_in_file(file, [\"MyClass\"])\n3. Get content:\n content = chunk_details(file, match_id)\n"
16036
+ },
16037
+ "find_matching_chunks_in_file": {
16038
+ "name": "find_matching_chunks_in_file",
16039
+ "description": "Step 2: Find the actual matching chunks in a specific file.\n\nRequired after find_files_by_chunk_content or list_all_files_in_project to see\nmatches, as those tools only show files, not their contents.\n\nThis can be used for things like:\n - Finding all chunks in a file that make reference to a specific function\n (e.g. find_matching_chunks_in_file(..., [\"my_funk\"])\n - Finding a chunk where a specific function is defined\n (e.g. find_matching_chunks_in_file(..., [\"def my_funk\"])\n\nReturns array of {n: name, t: type, id: identifier, chars: length}\n"
16040
+ },
16041
+ "chunk_details": {
16042
+ "name": "chunk_details",
16043
+ "description": "Get full content of a specific chunk.\n\nReturns chunk content as string.\n\nCommon patterns:\n1. Final step after find_matching_chunks_in_file finds relevant chunks\n2. Examining implementations after finding definitions/uses\n"
16044
+ },
16045
+ "list_most_recently_checked_out_branches": {
16046
+ "name": "list_most_recently_checked_out_branches",
16047
+ "description": "List the n most recently checked out branches in the project"
16048
+ },
16049
+ "diff_with_ref": {
16050
+ "name": "diff_with_ref",
16051
+ "description": "Return a summary of the diff between HEAD and the given ref.\n\nYou probably want the ref to be the 'base' branch like develop or main, off which\nPRs are made - and you can likely determine this by viewing the most recently\nchecked out branches.\n"
16052
+ },
16053
+ "add_tasks": {
16054
+ "name": "add_tasks",
16055
+ "description": "Add tasks to be completed by an LLM in the future.\n\nDo not add a task unless explicitly instructed to do so.\n\nWhen adding tasks, provide all required context.\nFor example: step 1 set up the ~/git/p1 and ~/git/p2 repos projects step 2 load the diff with\n ref develop step 3 confirm that the function added in /examples/script.py is\n consistent with the existing /examples/other_script.py file.\nThe common_prefix is prefixed to each task's action (if not None), it's provided\nto avoid having to repeat the common context for each task.\n\nCall this tool multiple times to add many tasks.\n"
16056
+ },
16057
+ "get_task": {
16058
+ "name": "get_task",
16059
+ "description": "Get a single task.\n\nDo not use this tool unless explicitly told to do so.\nAfter you complete the task, mark it as done by calling the `set_task_done` tool.\n"
16060
+ },
16061
+ "mark_task_done": {
16062
+ "name": "mark_task_done",
16063
+ "description": "Set a task as done wth a specific outcome.\n\nYou can call this multiple times to update the outcome.\n"
16064
+ }
16065
+ }
14240
16066
  },
14241
16067
  "graphiti": {
14242
16068
  "category": "knowledge-memory",
@@ -14993,7 +16819,82 @@
14993
16819
  },
14994
16820
  "mcp-server-aliyun-observability": {
14995
16821
  "category": "monitoring",
14996
- "path": "monitoring/mcp-server-aliyun-observability.json"
16822
+ "path": "monitoring/mcp-server-aliyun-observability.json",
16823
+ "validated": true,
16824
+ "tools": {
16825
+ "sls_list_projects": {
16826
+ "name": "sls_list_projects",
16827
+ "description": "列出阿里云日志服务中的所有项目。\n\n## 功能概述\n\n该工具可以列出指定区域中的所有SLS项目,支持通过项目名进行模糊搜索。如果不提供项目名称,则返回该区域的所有项目。\n\n## 使用场景\n\n- 当需要查找特定项目是否存在时\n- 当需要获取某个区域下所有可用的SLS项目列表时\n- 当需要根据项目名称的部分内容查找相关项目时\n\n## 返回数据结构\n\n返回的项目信息包含:\n- project_name: 项目名称\n- description: 项目描述\n- region_id: 项目所在区域\n\n## 查询示例\n\n- \"有没有叫 XXX 的 project\"\n- \"列出所有SLS项目\"\n\nArgs:\n ctx: MCP上下文,用于访问SLS客户端\n projectName: 项目名称查询字符串,支持模糊搜索\n limit: 返回结果的最大数量,范围1-100,默认10\n regionId: 阿里云区域ID,region id format like \"xx-xxx\",like \"cn-hangzhou\"\n\nReturns:\n 包含项目信息的字典列表,每个字典包含project_name、description和region_id\n"
16828
+ },
16829
+ "sls_list_logstores": {
16830
+ "name": "sls_list_logstores",
16831
+ "description": "列出SLS项目中的日志库。\n\n## 功能概述\n\n该工具可以列出指定SLS项目中的所有日志库,如果不选,则默认为日志库类型\n支持通过日志库名称进行模糊搜索。如果不提供日志库名称,则返回项目中的所有日志库。\n\n## 使用场景\n\n- 当需要查找特定项目下是否存在某个日志库时\n- 当需要获取项目中所有可用的日志库列表时\n- 当需要根据日志库名称的部分内容查找相关日志库时\n- 如果从上下文未指定 project参数,除非用户说了遍历,则可使用 sls_list_projects 工具获取项目列表\n\n## 是否指标库\n\n如果需要查找指标或者时序相关的库,请将is_metric_store参数设置为True\n\n## 查询示例\n\n- \"我想查询有没有 XXX 的日志库\"\n- \"某个 project 有哪些 log store\"\n\nArgs:\n ctx: MCP上下文,用于访问SLS客户端\n project: SLS项目名称,必须精确匹配\n log_store: 日志库名称,支持模糊搜索\n limit: 返回结果的最大数量,范围1-100,默认10\n is_metric_store: 是否指标库,可选值为True或False,默认为False\n region_id: 阿里云区域ID\n\nReturns:\n 日志库名称的字符串列表\n"
16832
+ },
16833
+ "sls_describe_logstore": {
16834
+ "name": "sls_describe_logstore",
16835
+ "description": "获取SLS日志库的结构信息。\n\n## 功能概述\n\n该工具用于获取指定SLS项目中日志库的索引信息和结构定义,包括字段类型、别名、是否大小写敏感等信息。\n\n## 使用场景\n\n- 当需要了解日志库的字段结构时\n- 当需要获取日志库的索引配置信息时\n- 当构建查询语句前需要了解可用字段时\n- 当需要分析日志数据结构时\n\n## 返回数据结构\n\n返回一个字典,键为字段名,值包含以下信息:\n- alias: 字段别名\n- sensitive: 是否大小写敏感\n- type: 字段类型\n- json_keys: JSON字段的子字段信息\n\n## 查询示例\n\n- \"我想查询 XXX 的日志库的 schema\"\n- \"我想查询 XXX 的日志库的 index\"\n- \"我想查询 XXX 的日志库的结构信息\"\n\nArgs:\n ctx: MCP上下文,用于访问SLS客户端\n project: SLS项目名称,必须精确匹配\n log_store: SLS日志库名称,必须精确匹配\n region_id: 阿里云区域ID\n\nReturns:\n 包含日志库结构信息的字典\n"
16836
+ },
16837
+ "sls_execute_sql_query": {
16838
+ "name": "sls_execute_sql_query",
16839
+ "description": "执行SLS日志查询。\n\n## 功能概述\n\n该工具用于在指定的SLS项目和日志库上执行查询语句,并返回查询结果。查询将在指定的时间范围内执行。 如果上下文没有提到具体的 SQL 语句,必须优先使用 sls_translate_text_to_sql_query 工具生成查询语句,无论问题有多简单\n\n## 使用场景\n\n- 当需要根据特定条件查询日志数据时\n- 当需要分析特定时间范围内的日志信息时\n- 当需要检索日志中的特定事件或错误时\n- 当需要统计日志数据的聚合信息时\n\n\n## 查询语法\n\n查询必须使用SLS有效的查询语法,而非自然语言。如果不了解日志库的结构,可以先使用sls_describe_logstore工具获取索引信息。\n\n## 时间范围\n\n查询必须指定时间范围: if the query is generated by sls_translate_text_to_sql_query tool, should use the fromTimestampInSeconds and toTimestampInSeconds in the sls_translate_text_to_sql_query response\n- fromTimestampInSeconds: 开始时间戳(秒)\n- toTimestampInSeconds: 结束时间戳(秒)\n\n## 查询示例\n\n- \"帮我查询下 XXX 的日志信息\"\n- \"查找最近一小时内的错误日志\"\n\n## 错误处理\n- Column xxx can not be resolved 如果是 sls_translate_text_to_sql_query 工具生成的查询语句 可能存在查询列未开启统计,可以提示用户增加相对应的信息,或者调用 sls_describe_logstore 工具获取索引信息之后,要用户选择正确的字段或者提示用户对列开启统计。当确定列开启统计之后,可以再次调用sls_translate_text_to_sql_query 工具生成查询语句\n\nArgs:\n ctx: MCP上下文,用于访问SLS客户端\n project: SLS项目名称\n logStore: SLS日志库名称\n query: SLS查询语句\n fromTimestamp: 查询开始时间戳(秒)\n toTimestamp: 查询结束时间戳(秒)\n limit: 返回结果的最大数量,范围1-100,默认10\n regionId: 阿里云区域ID\n\nReturns:\n 查询结果列表,每个元素为一条日志记录\n"
16840
+ },
16841
+ "sls_translate_text_to_sql_query": {
16842
+ "name": "sls_translate_text_to_sql_query",
16843
+ "description": "将自然语言转换为SLS查询语句。当用户有明确的 logstore 查询需求,必须优先使用该工具来生成查询语句\n\n## 功能概述\n\n该工具可以将自然语言描述转换为有效的SLS查询语句,便于用户使用自然语言表达查询需求。用户有任何 SLS 日志查询需求时,都需要优先使用该工具。\n\n## 使用场景\n\n- 当用户不熟悉SLS查询语法时\n- 当需要快速构建复杂查询时\n- 当需要从自然语言描述中提取查询意图时\n\n## 使用限制\n\n- 仅支持生成SLS查询,不支持其他数据库的SQL如MySQL、PostgreSQL等\n- 生成的是查询语句,而非查询结果,需要配合sls_execute_query工具使用\n- 如果查询涉及ARMS应用,应优先使用arms_generate_trace_query工具\n- 需要对应的 log_sotre 已经设定了索引信息,如果生成的结果里面有字段没有索引或者开启统计,可能会导致查询失败,需要友好的提示用户增加相对应的索引信息\n\n## 最佳实践\n\n- 提供清晰简洁的自然语言描述\n- 不要在描述中包含项目或日志库名称\n- 如有需要,指定查询的时间范围\n- 首次生成的查询可能不完全符合要求,可能需要多次尝试\n\n## 查询示例\n\n- \"帮我生成下 XXX 的日志查询语句\"\n- \"查找最近一小时内的错误日志\"\n\nArgs:\n ctx: MCP上下文,用于访问SLS客户端\n text: 用于生成查询的自然语言文本\n project: SLS项目名称\n log_store: SLS日志库名称\n region_id: 阿里云区域ID\n\nReturns:\n 生成的SLS查询语句\n"
16844
+ },
16845
+ "sls_diagnose_query": {
16846
+ "name": "sls_diagnose_query",
16847
+ "description": "诊断SLS查询语句。\n\n## 功能概述\n\n当 SLS 查询语句执行失败时,可以调用该工具,根据错误信息,生成诊断结果。诊断结果会包含查询语句的正确性、性能分析、优化建议等信息。\n\n## 使用场景\n\n- 当需要诊断SLS查询语句的正确性时\n- 当 SQL 执行错误需要查找原因时\n\n## 查询示例\n\n- \"帮我诊断下 XXX 的日志查询语句\"\n- \"帮我分析下 XXX 的日志查询语句\"\n\nArgs:\n ctx: MCP上下文,用于访问SLS客户端\n query: SLS查询语句\n error_message: 错误信息\n project: SLS项目名称\n log_store: SLS日志库名称\n region_id: 阿里云区域ID\n"
16848
+ },
16849
+ "sls_get_regions": {
16850
+ "name": "sls_get_regions",
16851
+ "description": "获取阿里云的部分区域列表。\n\n## 功能概述\n\n该工具用于获取阿里云的部分区域列表,便于在执行SLS查询时指定区域。\n\n## 使用场景\n\n- 当需要获取阿里云的部分区域列表时\n- 当需要根据区域进行SLS查询时\n- 当用户没有明确指定区域ID 时,可以调用该工具获取区域列表,并要求用户进行选择\n\n## 返回数据格式\n\n返回包含区域列表的字典,每个字典包含region_id和region_name。\n\n## 查询示例\n\n- \"获取阿里云的部分区域列表\"\n"
16852
+ },
16853
+ "sls_get_current_time": {
16854
+ "name": "sls_get_current_time",
16855
+ "description": "获取当前时间。\n\n## 功能概述\n1. 获取当前时间,会返回当前时间字符串和当前时间戳(毫秒)\n\n## 使用场景\n1. 只有当无法从聊天记录里面获取到当前时间时候才可以调用该工具\n"
16856
+ },
16857
+ "arms_search_apps": {
16858
+ "name": "arms_search_apps",
16859
+ "description": "搜索ARMS应用。\n\n## 功能概述\n\n该工具用于根据应用名称搜索ARMS应用,返回应用的基本信息,包括应用名称、PID、用户ID和类型。\n\n## 使用场景\n\n- 当需要查找特定名称的应用时\n- 当需要获取应用的PID以便进行其他ARMS操作时\n- 当需要检查用户拥有的应用列表时\n\n## 搜索条件\n\n- app_name_query必须是应用名称的一部分,而非自然语言\n- 搜索结果将分页返回,可以指定页码和每页大小\n\n## 返回数据结构\n\n返回一个字典,包含以下信息:\n- total: 符合条件的应用总数\n- page_size: 每页大小\n- page_number: 当前页码\n- trace_apps: 应用列表,每个应用包含app_name、pid、user_id和type\n\n## 查询示例\n\n- \"帮我查询下 XXX 的应用\"\n- \"找出名称包含'service'的应用\"\n\nArgs:\n ctx: MCP上下文,用于访问ARMS客户端\n app_name_query: 应用名称查询字符串\n region_id: 阿里云区域ID\n page_size: 每页大小,范围1-100,默认20\n page_number: 页码,默认1\n\nReturns:\n 包含应用信息的字典\n"
16860
+ },
16861
+ "arms_generate_trace_query": {
16862
+ "name": "arms_generate_trace_query",
16863
+ "description": "生成ARMS应用的调用链查询语句。\n\n## 功能概述\n\n该工具用于将自然语言描述转换为ARMS调用链查询语句,便于分析应用性能和问题。\n\n## 使用场景\n\n- 当需要查询应用的调用链信息时\n- 当需要分析应用性能问题时\n- 当需要跟踪特定请求的执行路径时\n- 当需要分析服务间调用关系时\n\n## 查询处理\n\n工具会将自然语言问题转换为SLS查询,并返回:\n- 生成的SLS查询语句\n- 存储调用链数据的项目名\n- 存储调用链数据的日志库名\n\n## 查询上下文\n\n查询会考虑以下信息:\n- 应用的PID\n- 响应时间以纳秒存储,需转换为毫秒\n- 数据以span记录存储,查询耗时需要对符合条件的span进行求和\n- 服务相关信息使用serviceName字段\n- 如果用户明确提出要查询 trace信息,则需要在查询问题上question 上添加说明返回trace信息\n\n## 查询示例\n\n- \"帮我查询下 XXX 的 trace 信息\"\n- \"分析最近一小时内响应时间超过1秒的调用链\"\n\nArgs:\n ctx: MCP上下文,用于访问ARMS和SLS客户端\n user_id: 用户阿里云账号ID\n pid: 应用的PID\n region_id: 阿里云区域ID\n question: 查询调用链的自然语言问题\n\nReturns:\n 包含查询信息的字典,包括sls_query、project和log_store\n"
16864
+ },
16865
+ "arms_profile_flame_analysis": {
16866
+ "name": "arms_profile_flame_analysis",
16867
+ "description": "分析ARMS应用火焰图性能热点。\n\n## 功能概述\n\n当应用存在性能问题且开启持续剖析时,可以调用该工具对ARMS应用火焰图性能热点进行分析,生成分析结果。分析结果会包含火焰图的性能热点问题、优化建议等信息。\n\n## 使用场景\n\n- 当需要分析ARMS应用火焰图性能问题时\n\n## 查询示例\n\n- \"帮我分析下ARMS应用 XXX 的火焰图性能热点\"\n\nArgs:\n ctx: MCP上下文,用于访问SLS客户端\n pid: ARMS应用监控服务PID\n startMs: 分析的开始时间,通过get_current_time工具获取毫秒级时间戳\n endMs: 分析的结束时间,通过get_current_time工具获取毫秒级时间戳\n profileType: Profile类型,用于选择需要分析的Profile指标,支持CPU热点和内存热点,如'cpu'、'memory'\n ip: ARMS应用服务主机地址,非必要参数,用于选择所在的服务机器,如有多个填写时以英文逗号\",\"分隔,如'192.168.0.1,192.168.0.2',不填写默认查询服务所在的所有IP\n thread: 服务线程名称,非必要参数,用于选择对应线程,如有多个填写时以英文逗号\",\"分隔,如'C1 CompilerThre,C2 CompilerThre',不填写默认查询服务所有线程\n threadGroup: 服务聚合线程组名称,非必要参数,用于选择对应线程组,如有多个填写时以英文逗号\",\"分隔,如'http-nio-*-exec-*,http-nio-*-ClientPoller-*',不填写默认查询服务所有聚合线程组\n regionId: 阿里云区域ID,如'cn-hangzhou'、'cn-shanghai'等\n"
16868
+ },
16869
+ "arms_diff_profile_flame_analysis": {
16870
+ "name": "arms_diff_profile_flame_analysis",
16871
+ "description": "对比两个时间段火焰图的性能变化。\n\n## 功能概述\n\n对应用在两个不同时间段内的性能进行分析,生成差分火焰图。通常用于发布前后或性能优化前后性能对比,帮助识别性能提升或退化。\n\n## 使用场景\n\n- 发布前后、性能优化前后不同时间段火焰图性能对比\n\n## 查询示例\n\n- \"帮我分析应用 XXX 在发布前后的性能变化情况\"\n\nArgs:\n ctx: MCP上下文,用于访问SLS客户端\n pid: ARMS应用监控服务PID\n currentStartMs: 火焰图当前(基准)时间段的开始时间戳,通过get_current_time工具获取毫秒级时间戳\n currentEndMs: 火焰图当前(基准)时间段的结束时间戳,通过get_current_time工具获取毫秒级时间戳\n referenceStartMs: 火焰图对比时间段(参考时间段)的开始时间戳,通过get_current_time工具获取毫秒级时间戳\n referenceEndMs: 火焰图对比时间段(参考时间段)的结束时间戳,通过get_current_time工具获取毫秒级时间戳\n profileType: Profile类型,如'cpu'、'memory'\n ip: ARMS应用服务主机地址,非必要参数,用于选择所在的服务机器,如有多个填写时以英文逗号\",\"分隔,如'192.168.0.1,192.168.0.2',不填写默认查询服务所在的所有IP\n thread: 服务线程名称,非必要参数,用于选择对应线程,如有多个填写时以英文逗号\",\"分隔,如'C1 CompilerThre,C2 CompilerThre',不填写默认查询服务所有线程\n threadGroup: 服务聚合线程组名称,非必要参数,用于选择对应线程组,如有多个填写时以英文逗号\",\"分隔,如'http-nio-*-exec-*,http-nio-*-ClientPoller-*',不填写默认查询服务所有聚合线程组\n regionId: 阿里云区域ID,如'cn-hangzhou'、'cn-shanghai'等\n"
16872
+ },
16873
+ "arms_get_application_info": {
16874
+ "name": "arms_get_application_info",
16875
+ "description": "\n根据 PID获取具体某个应用的信息,\n## 功能概述\n1. 获取ARMS应用信息,会返回应用的 PID,AppName,开发语言类型比如 java,python 等\n\n## 使用场景\n1. 当用户明确提出要查询某个应用的信息时,可以调用该工具\n2. 有场景需要获取应用的开发语言类型,可以调用该工具\n"
16876
+ },
16877
+ "arms_trace_quality_analysis": {
16878
+ "name": "arms_trace_quality_analysis",
16879
+ "description": "Trace 质量检测\n\n## 功能概述\n识别指定 traceId 的 Trace 是否存在完整性问题(断链)和性能问题(错慢调用)\n\n## 使用场景\n\n- 检测调用链是否存在问题\n\n## 查询示例\n\n- \"帮我分析调用链\"\n\nArgs:\n ctx: MCP上下文,用于访问SLS客户端\n traceId: 待分析的 Trace 的 traceId,必要参数\n startMs: 分析的开始时间,通过get_current_time工具获取毫秒级时间戳\n endMs: 分析的结束时间,通过get_current_time工具获取毫秒级时间戳\n regionId: 阿里云区域ID,如'cn-hangzhou'、'cn-shanghai'等\n"
16880
+ },
16881
+ "arms_slow_trace_analysis": {
16882
+ "name": "arms_slow_trace_analysis",
16883
+ "description": "深入分析 Trace 慢调用根因\n\n## 功能概述\n\n针对 Trace 中的慢调用进行诊断分析,输出包含概述、根因、影响范围及解决方案的诊断报告。\n\n## 使用场景\n\n- 性能问题定位和修复\n\n## 查询示例\n\n- \"请分析 ${traceId} 这个 trace 慢的原因\"\n\nArgs:\n ctx: MCP上下文,用于访问SLS客户端\n traceId: 待分析的Trace的 traceId,必要参数\n startMs: 分析的开始时间,通过get_current_time工具获取毫秒级时间戳\n endMs: 分析的结束时间,通过get_current_time工具获取毫秒级时间戳\n regionId: 阿里云区域ID,如'cn-hangzhou'、'cn-shanghai'等\n"
16884
+ },
16885
+ "arms_error_trace_analysis": {
16886
+ "name": "arms_error_trace_analysis",
16887
+ "description": "深入分析 Trace 错误根因\n\n## 功能概述\n\n针对 Trace 中的错误调用进行深入诊断分析,输出包含概述、根因、影响范围及解决方案的错误诊断报告。\n\n## 使用场景\n\n- 性能问题定位和修复\n\n## 查询示例\n\n- \"请分析 ${traceId} 这个 trace 发生错误的原因\"\n\nArgs:\n ctx: MCP上下文,用于访问SLS客户端\n traceId: 待分析的Trace的 traceId,必要参数\n startMs: 分析的开始时间,通过get_current_time工具获取毫秒级时间戳\n endMs: 分析的结束时间,通过get_current_time工具获取毫秒级时间戳\n regionId: 阿里云区域ID,如'cn-hangzhou'、'cn-shanghai'等\n"
16888
+ },
16889
+ "cms_translate_text_to_promql": {
16890
+ "name": "cms_translate_text_to_promql",
16891
+ "description": "将自然语言转换为Prometheus PromQL查询语句。\n\n## 功能概述\n\n该工具可以将自然语言描述转换为有效的PromQL查询语句,便于用户使用自然语言表达查询需求。\n\n## 使用场景\n\n- 当用户不熟悉PromQL查询语法时\n- 当需要快速构建复杂查询时\n- 当需要从自然语言描述中提取查询意图时\n\n## 使用限制\n\n- 仅支持生成PromQL查询\n- 生成的是查询语句,而非查询结果\n- 禁止使用sls_execute_query工具执行,两者接口不兼容\n\n## 最佳实践\n\n- 提供清晰简洁的自然语言描述\n- 不要在描述中包含项目或时序库名称\n- 首次生成的查询可能不完全符合要求,可能需要多次尝试\n\n## 查询示例\n\n- \"帮我生成 XXX 的PromQL查询语句\"\n- \"查询每个namespace下的Pod数量\"\n\nArgs:\n ctx: MCP上下文,用于访问SLS客户端\n text: 用于生成查询的自然语言文本\n project: SLS项目名称\n metricStore: SLS时序库名称\n regionId: 阿里云区域ID\n\nReturns:\n 生成的PromQL查询语句\n"
16892
+ },
16893
+ "cms_execute_promql_query": {
16894
+ "name": "cms_execute_promql_query",
16895
+ "description": "执行Prometheus指标查询。\n\n## 功能概述\n\n该工具用于在指定的SLS项目和时序库上执行查询语句,并返回查询结果。查询将在指定的时间范围内执行。\n如果上下文没有提到具体的 SQL 语句,必须优先使用 cms_translate_text_to_promql 工具生成查询语句,无论问题有多简单。\n如果上下文没有提到具体的时间戳,必须优先使用 sls_get_current_time 工具生成时间戳参数,默认为最近15分钟\n\n## 使用场景\n\n- 当需要根据特定条件查询日志数据时\n- 当需要分析特定时间范围内的日志信息时\n- 当需要检索日志中的特定事件或错误时\n- 当需要统计日志数据的聚合信息时\n\n\n## 查询语法\n\n查询必须使用PromQL有效的查询语法,而非自然语言。\n\n## 时间范围\n\n查询必须指定时间范围:\n- fromTimestampInSeconds: 开始时间戳(秒)\n- toTimestampInSeconds: 结束时间戳(秒)\n默认为最近15分钟,需要调用 sls_get_current_time 工具获取当前时间\n\n## 查询示例\n\n- \"帮我查询下 job xxx 的采集状态\"\n- \"查一下当前有多少个 Pod\"\n\n## 输出\n查询结果为:xxxxx\n对应的图示:将 image 中的 URL 连接到图示中,并展示在图示中。\n\nArgs:\n ctx: MCP上下文,用于访问CMS客户端\n project: SLS项目名称\n metricStore: SLS日志库名称\n query: PromQL查询语句\n fromTimestampInSeconds: 查询开始时间戳(秒)\n toTimestampInSeconds: 查询结束时间戳(秒)\n regionId: 阿里云区域ID\n\nReturns:\n 查询结果列表,每个元素为一条日志记录\n"
16896
+ }
16897
+ }
14997
16898
  },
14998
16899
  "mcp-sentry-custom": {
14999
16900
  "category": "monitoring",
@@ -15191,11 +17092,25 @@
15191
17092
  },
15192
17093
  "searxng-simple-mcp": {
15193
17094
  "category": "search-data-extraction",
15194
- "path": "search-data-extraction/searxng-simple-mcp.json"
17095
+ "path": "search-data-extraction/searxng-simple-mcp.json",
17096
+ "validated": true,
17097
+ "tools": {
17098
+ "web_search": {
17099
+ "name": "web_search",
17100
+ "description": "\nPerform a web search using SearxNG and return formatted results.\n\nResults are returned in either text format (human-readable) or JSON format\ndepending on the result_format parameter selected.\n\n"
17101
+ }
17102
+ }
15195
17103
  },
15196
17104
  "backlinks-mcp": {
15197
17105
  "category": "search-data-extraction",
15198
- "path": "search-data-extraction/backlinks-mcp.json"
17106
+ "path": "search-data-extraction/backlinks-mcp.json",
17107
+ "validated": true,
17108
+ "tools": {
17109
+ "get_backlinks_list": {
17110
+ "name": "get_backlinks_list",
17111
+ "description": "\nGet backlinks list for the specified domain\nArgs:\n domain (str): The domain to query\nReturns:\n List of backlinks for the domain, containing title, URL, domain rating, etc.\n"
17112
+ }
17113
+ }
15199
17114
  },
15200
17115
  "@cyanheads/pubmed-mcp-server": {
15201
17116
  "category": "search-data-extraction",
@@ -15347,7 +17262,18 @@
15347
17262
  },
15348
17263
  "vectara-mcp": {
15349
17264
  "category": "search-data-extraction",
15350
- "path": "search-data-extraction/vectara-mcp.json"
17265
+ "path": "search-data-extraction/vectara-mcp.json",
17266
+ "validated": true,
17267
+ "tools": {
17268
+ "ask_vectara": {
17269
+ "name": "ask_vectara",
17270
+ "description": "\nRun a RAG query using Vectara, returning search results with a generated response.\n\nArgs:\n query: str, The user query to run - required.\n corpus_keys: list[str], List of Vectara corpus keys to use for the search - required. Please ask the user to provide one or more corpus keys. \n api_key: str, The Vectara API key - required.\n n_sentences_before: int, Number of sentences before the answer to include in the context - optional, default is 2.\n n_sentences_after: int, Number of sentences after the answer to include in the context - optional, default is 2.\n lexical_interpolation: float, The amount of lexical interpolation to use - optional, default is 0.005.\n max_used_search_results: int, The maximum number of search results to use - optional, default is 10.\n generation_preset_name: str, The name of the generation preset to use - optional, default is \"vectara-summary-table-md-query-ext-jan-2025-gpt-4o\".\n response_language: str, The language of the response - optional, default is \"eng\".\n\nReturns:\n The response from Vectara, including the generated answer and the search results.\n"
17271
+ },
17272
+ "search_vectara": {
17273
+ "name": "search_vectara",
17274
+ "description": "\nRun a semantic search query using Vectara, without generation.\n\nArgs:\n query: str, The user query to run - required.\n corpus_keys: list[str], List of Vectara corpus keys to use for the search - required. Please ask the user to provide one or more corpus keys. \n api_key: str, The Vectara API key - required.\n n_sentences_before: int, Number of sentences before the answer to include in the context - optional, default is 2.\n n_sentences_after: int, Number of sentences after the answer to include in the context - optional, default is 2.\n lexical_interpolation: float, The amount of lexical interpolation to use - optional, default is 0.005.\n\nReturns:\n The response from Vectara, including the matching search results.\n"
17275
+ }
17276
+ }
15351
17277
  },
15352
17278
  "orion-vision-mcp": {
15353
17279
  "category": "search-data-extraction",
@@ -15366,7 +17292,22 @@
15366
17292
  },
15367
17293
  "youtube-dlp-server": {
15368
17294
  "category": "search-data-extraction",
15369
- "path": "search-data-extraction/youtube-dlp-server.json"
17295
+ "path": "search-data-extraction/youtube-dlp-server.json",
17296
+ "validated": true,
17297
+ "tools": {
17298
+ "get-video-info": {
17299
+ "name": "get-video-info",
17300
+ "description": "Extract detailed information from a YouTube video URL without downloading"
17301
+ },
17302
+ "get-video-subtitles": {
17303
+ "name": "get-video-subtitles",
17304
+ "description": "Extract subtitles and captions from a YouTube video"
17305
+ },
17306
+ "get-top-comments": {
17307
+ "name": "get-top-comments",
17308
+ "description": "Extract top comments from a YouTube video (sorted by likes)"
17309
+ }
17310
+ }
15370
17311
  },
15371
17312
  "@suthio/brave-deep-research-mcp": {
15372
17313
  "category": "search-data-extraction",
@@ -15419,7 +17360,26 @@
15419
17360
  },
15420
17361
  "mcp-hn": {
15421
17362
  "category": "search-data-extraction",
15422
- "path": "search-data-extraction/mcp-hn.json"
17363
+ "path": "search-data-extraction/mcp-hn.json",
17364
+ "validated": true,
17365
+ "tools": {
17366
+ "get_stories": {
17367
+ "name": "get_stories",
17368
+ "description": "Get stories from Hacker News. The options are `top`, `new`, `ask_hn`, `show_hn` for types of stories. This doesn't include the comments. Use `get_story_info` to get the comments."
17369
+ },
17370
+ "get_user_info": {
17371
+ "name": "get_user_info",
17372
+ "description": "Get user info from Hacker News, including the stories they've submitted"
17373
+ },
17374
+ "search_stories": {
17375
+ "name": "search_stories",
17376
+ "description": "Search stories from Hacker News. It is generally recommended to use simpler queries to get a broader set of results (less than 5 words). Very targetted queries may not return any results."
17377
+ },
17378
+ "get_story_info": {
17379
+ "name": "get_story_info",
17380
+ "description": "Get detailed story info from Hacker News, including the comments"
17381
+ }
17382
+ }
15423
17383
  },
15424
17384
  "news-mcp-server": {
15425
17385
  "category": "search-data-extraction",
@@ -15487,11 +17447,25 @@
15487
17447
  },
15488
17448
  "mcp-search-linkup": {
15489
17449
  "category": "search-data-extraction",
15490
- "path": "search-data-extraction/mcp-search-linkup.json"
17450
+ "path": "search-data-extraction/mcp-search-linkup.json",
17451
+ "validated": true,
17452
+ "tools": {
17453
+ "search-web": {
17454
+ "name": "search-web",
17455
+ "description": "Search the web in real time using Linkup. Use this tool whenever the user needs trusted facts, news, or source-backed information. Returns comprehensive content from the most relevant sources."
17456
+ }
17457
+ }
15491
17458
  },
15492
17459
  "mcp-google-cse": {
15493
17460
  "category": "search-data-extraction",
15494
- "path": "search-data-extraction/mcp-google-cse.json"
17461
+ "path": "search-data-extraction/mcp-google-cse.json",
17462
+ "validated": true,
17463
+ "tools": {
17464
+ "google_search": {
17465
+ "name": "google_search",
17466
+ "description": "Search the custom search engine using the search term. Regular query arguments can also be used, like appending site:reddit.com or after:2024-04-30. If available and/or requested, the links of the search results should be used in a follow-up request using a different tool to get the full content. Example: \"claude.ai features site:reddit.com after:2024-04-30\""
17467
+ }
17468
+ }
15495
17469
  },
15496
17470
  "gnews": {
15497
17471
  "category": "search-data-extraction",
@@ -15552,7 +17526,30 @@
15552
17526
  },
15553
17527
  "mcp-server-pacman": {
15554
17528
  "category": "search-data-extraction",
15555
- "path": "search-data-extraction/mcp-server-pacman.json"
17529
+ "path": "search-data-extraction/mcp-server-pacman.json",
17530
+ "validated": true,
17531
+ "tools": {
17532
+ "search_package": {
17533
+ "name": "search_package",
17534
+ "description": "Search for packages in package indices (PyPI, npm, crates.io, Terraform Registry)"
17535
+ },
17536
+ "package_info": {
17537
+ "name": "package_info",
17538
+ "description": "Get detailed information about a specific package"
17539
+ },
17540
+ "search_docker_image": {
17541
+ "name": "search_docker_image",
17542
+ "description": "Search for Docker images in Docker Hub"
17543
+ },
17544
+ "docker_image_info": {
17545
+ "name": "docker_image_info",
17546
+ "description": "Get detailed information about a specific Docker image"
17547
+ },
17548
+ "terraform_module_latest_version": {
17549
+ "name": "terraform_module_latest_version",
17550
+ "description": "Get the latest version of a Terraform module"
17551
+ }
17552
+ }
15556
17553
  },
15557
17554
  "twitter-noauth": {
15558
17555
  "category": "other-tools-and-integrations",
@@ -15733,7 +17730,42 @@
15733
17730
  },
15734
17731
  "mcp-server-reddit": {
15735
17732
  "category": "search-data-extraction",
15736
- "path": "search-data-extraction/mcp-server-reddit.json"
17733
+ "path": "search-data-extraction/mcp-server-reddit.json",
17734
+ "validated": true,
17735
+ "tools": {
17736
+ "get_frontpage_posts": {
17737
+ "name": "get_frontpage_posts",
17738
+ "description": "Get hot posts from Reddit frontpage"
17739
+ },
17740
+ "get_subreddit_info": {
17741
+ "name": "get_subreddit_info",
17742
+ "description": "Get information about a subreddit"
17743
+ },
17744
+ "get_subreddit_hot_posts": {
17745
+ "name": "get_subreddit_hot_posts",
17746
+ "description": "Get hot posts from a specific subreddit"
17747
+ },
17748
+ "get_subreddit_new_posts": {
17749
+ "name": "get_subreddit_new_posts",
17750
+ "description": "Get new posts from a specific subreddit"
17751
+ },
17752
+ "get_subreddit_top_posts": {
17753
+ "name": "get_subreddit_top_posts",
17754
+ "description": "Get top posts from a specific subreddit"
17755
+ },
17756
+ "get_subreddit_rising_posts": {
17757
+ "name": "get_subreddit_rising_posts",
17758
+ "description": "Get rising posts from a specific subreddit"
17759
+ },
17760
+ "get_post_content": {
17761
+ "name": "get_post_content",
17762
+ "description": "Get detailed content of a specific post"
17763
+ },
17764
+ "get_post_comments": {
17765
+ "name": "get_post_comments",
17766
+ "description": "Get comments from a post"
17767
+ }
17768
+ }
15737
17769
  },
15738
17770
  "space-frontiers-search": {
15739
17771
  "category": "search-data-extraction",
@@ -15768,7 +17800,26 @@
15768
17800
  },
15769
17801
  "arxiv-mcp-server": {
15770
17802
  "category": "search-data-extraction",
15771
- "path": "search-data-extraction/arxiv-mcp-server.json"
17803
+ "path": "search-data-extraction/arxiv-mcp-server.json",
17804
+ "validated": true,
17805
+ "tools": {
17806
+ "search_papers": {
17807
+ "name": "search_papers",
17808
+ "description": "Search for papers on arXiv with advanced filtering and query optimization.\n\nQUERY CONSTRUCTION GUIDELINES:\n- Use QUOTED PHRASES for exact matches: \"multi-agent systems\", \"neural networks\", \"machine learning\"\n- Combine related concepts with OR: \"AI agents\" OR \"software agents\" OR \"intelligent agents\" \n- Use field-specific searches for precision:\n - ti:\"exact title phrase\" - search in titles only\n - au:\"author name\" - search by author\n - abs:\"keyword\" - search in abstracts only\n- Use ANDNOT to exclude unwanted results: \"machine learning\" ANDNOT \"survey\"\n- For best results, use 2-4 core concepts rather than long keyword lists\n\nADVANCED SEARCH PATTERNS:\n- Field + phrase: ti:\"transformer architecture\" for papers with exact title phrase\n- Multiple fields: au:\"Smith\" AND ti:\"quantum\" for author Smith's quantum papers \n- Exclusions: \"deep learning\" ANDNOT (\"survey\" OR \"review\") to exclude survey papers\n- Broad + narrow: \"artificial intelligence\" AND (robotics OR \"computer vision\")\n\nCATEGORY FILTERING (highly recommended for relevance):\n- cs.AI: Artificial Intelligence\n- cs.MA: Multi-Agent Systems \n- cs.LG: Machine Learning\n- cs.CL: Computation and Language (NLP)\n- cs.CV: Computer Vision\n- cs.RO: Robotics\n- cs.HC: Human-Computer Interaction\n- cs.CR: Cryptography and Security\n- cs.DB: Databases\n\nEXAMPLES OF EFFECTIVE QUERIES:\n- ti:\"reinforcement learning\" with categories: [\"cs.LG\", \"cs.AI\"] - for RL papers by title\n- au:\"Hinton\" AND \"deep learning\" with categories: [\"cs.LG\"] - for Hinton's deep learning work\n- \"multi-agent\" ANDNOT \"survey\" with categories: [\"cs.MA\"] - exclude survey papers\n- abs:\"transformer\" AND ti:\"attention\" with categories: [\"cs.CL\"] - attention papers with transformer abstracts\n\nDATE FILTERING: Use YYYY-MM-DD format for historical research:\n- date_to: \"2015-12-31\" - for foundational/classic work (pre-2016)\n- date_from: \"2020-01-01\" - for recent developments (post-2020)\n- Both together for specific time periods\n\nRESULT QUALITY: Results sorted by RELEVANCE (most relevant papers first), not just newest papers.\nThis ensures you get the most pertinent results regardless of publication date.\n\nTIPS FOR FOUNDATIONAL RESEARCH:\n- Use date_to: \"2010-12-31\" to find classic papers on BDI, SOAR, ACT-R\n- Combine with field searches: ti:\"BDI\" AND abs:\"belief desire intention\" \n- Try author searches: au:\"Rao\" AND \"BDI\" for Anand Rao's foundational BDI work"
17809
+ },
17810
+ "download_paper": {
17811
+ "name": "download_paper",
17812
+ "description": "Download a paper and create a resource for it"
17813
+ },
17814
+ "list_papers": {
17815
+ "name": "list_papers",
17816
+ "description": "List all existing papers available as resources"
17817
+ },
17818
+ "read_paper": {
17819
+ "name": "read_paper",
17820
+ "description": "Read the full content of a stored paper in markdown format"
17821
+ }
17822
+ }
15772
17823
  },
15773
17824
  "local-code-search": {
15774
17825
  "category": "search-data-extraction",
@@ -15811,7 +17862,30 @@
15811
17862
  },
15812
17863
  "ddg-mcp": {
15813
17864
  "category": "search-data-extraction",
15814
- "path": "search-data-extraction/ddg-mcp.json"
17865
+ "path": "search-data-extraction/ddg-mcp.json",
17866
+ "validated": true,
17867
+ "tools": {
17868
+ "ddg-text-search": {
17869
+ "name": "ddg-text-search",
17870
+ "description": "Search the web for text results using DuckDuckGo"
17871
+ },
17872
+ "ddg-image-search": {
17873
+ "name": "ddg-image-search",
17874
+ "description": "Search the web for images using DuckDuckGo"
17875
+ },
17876
+ "ddg-news-search": {
17877
+ "name": "ddg-news-search",
17878
+ "description": "Search for news articles using DuckDuckGo"
17879
+ },
17880
+ "ddg-video-search": {
17881
+ "name": "ddg-video-search",
17882
+ "description": "Search for videos using DuckDuckGo"
17883
+ },
17884
+ "ddg-ai-chat": {
17885
+ "name": "ddg-ai-chat",
17886
+ "description": "Chat with DuckDuckGo AI"
17887
+ }
17888
+ }
15815
17889
  },
15816
17890
  "imdb": {
15817
17891
  "category": "search-data-extraction",
@@ -15920,7 +17994,50 @@
15920
17994
  },
15921
17995
  "cryo-mcp": {
15922
17996
  "category": "search-data-extraction",
15923
- "path": "search-data-extraction/cryo-mcp.json"
17997
+ "path": "search-data-extraction/cryo-mcp.json",
17998
+ "validated": true,
17999
+ "tools": {
18000
+ "list_datasets": {
18001
+ "name": "list_datasets",
18002
+ "description": "Return a list of all available cryo datasets"
18003
+ },
18004
+ "query_dataset": {
18005
+ "name": "query_dataset",
18006
+ "description": "\nDownload blockchain data and return the file paths where the data is stored.\n\nIMPORTANT WORKFLOW NOTE: When running SQL queries, use this function first to download\ndata, then use the returned file paths with query_sql() to execute SQL on those files.\n\nExample workflow for SQL:\n1. First download data: result = query_dataset('transactions', blocks='1000:1010', output_format='parquet')\n2. Get file paths: files = result.get('files', [])\n3. Run SQL query: query_sql(\"SELECT * FROM read_parquet('/path/to/file.parquet')\", files=files)\n\nDATASET-SPECIFIC PARAMETERS:\nFor datasets that require specific address parameters (like 'balances', 'erc20_transfers', etc.),\nALWAYS use the 'contract' parameter to pass ANY Ethereum address. For example:\n\n- For 'balances' dataset: Use contract parameter for the address you want balances for\n query_dataset('balances', blocks='1000:1010', contract='0x123...')\n\n- For 'logs' or 'erc20_transfers': Use contract parameter for contract address\n query_dataset('logs', blocks='1000:1010', contract='0x123...')\n\nTo check what parameters a dataset requires, always use lookup_dataset() first:\nlookup_dataset('balances') # Will show required parameters\n\nArgs:\n dataset: The name of the dataset to query (e.g., 'logs', 'transactions', 'balances')\n blocks: Block range specification as a string (e.g., '1000:1010')\n start_block: Start block number as integer (alternative to blocks)\n end_block: End block number as integer (alternative to blocks)\n use_latest: If True, query the latest block\n blocks_from_latest: Number of blocks before the latest to include (e.g., 10 = latest-10 to latest)\n contract: Contract address to filter by - IMPORTANT: Use this parameter for ALL address-based filtering\n regardless of the parameter name in the native cryo command (address, contract, etc.)\n output_format: Output format (json, csv, parquet) - use 'parquet' for SQL queries\n include_columns: Columns to include alongside the defaults\n exclude_columns: Columns to exclude from the defaults\n\nReturns:\n Dictionary containing file paths where the downloaded data is stored\n"
18007
+ },
18008
+ "lookup_dataset": {
18009
+ "name": "lookup_dataset",
18010
+ "description": "\nLook up a specific dataset and return detailed information about it. IMPORTANT: Always use this\nfunction before querying a new dataset to understand its required parameters and schema.\n\nThe returned information includes:\n1. Required parameters for the dataset (IMPORTANT for datasets like 'balances' that need an address)\n2. Schema details showing available columns and data types\n3. Example queries for the dataset\n\nWhen the dataset requires specific parameters like 'address' (for 'balances'),\nALWAYS use the 'contract' parameter in query_dataset() to pass these values.\n\nExample:\nFor 'balances' dataset, lookup_dataset('balances') will show it requires an 'address' parameter.\nYou should then query it using:\nquery_dataset('balances', blocks='1000:1010', contract='0x1234...')\n\nArgs:\n name: The name of the dataset to look up\n sample_start_block: Optional start block for sample data (integer)\n sample_end_block: Optional end block for sample data (integer)\n use_latest_sample: If True, use the latest block for sample data\n sample_blocks_from_latest: Number of blocks before the latest to include in sample\n \nReturns:\n Detailed information about the dataset including schema and available fields\n"
18011
+ },
18012
+ "get_transaction_by_hash": {
18013
+ "name": "get_transaction_by_hash",
18014
+ "description": "\nGet detailed information about a transaction by its hash\n\nArgs:\n tx_hash: The transaction hash to look up\n \nReturns:\n Detailed information about the transaction\n"
18015
+ },
18016
+ "get_latest_ethereum_block": {
18017
+ "name": "get_latest_ethereum_block",
18018
+ "description": "\nGet information about the latest Ethereum block\n\nReturns:\n Information about the latest block including block number\n"
18019
+ },
18020
+ "query_sql": {
18021
+ "name": "query_sql",
18022
+ "description": "\nRun a SQL query against downloaded blockchain data files\n\nIMPORTANT WORKFLOW: This function should be used after calling query_dataset\nto download data. Use the file paths returned by query_dataset as input to this function.\n\nWorkflow steps:\n1. Download data: result = query_dataset('transactions', blocks='1000:1010', output_format='parquet')\n2. Get file paths: files = result.get('files', [])\n3. Execute SQL using either:\n - Direct table references: query_sql(\"SELECT * FROM transactions\", files=files)\n - Or read_parquet(): query_sql(\"SELECT * FROM read_parquet('/path/to/file.parquet')\", files=files)\n\nTo see the schema of a file, use get_sql_table_schema(file_path) before writing your query.\n\nDuckDB supports both approaches:\n1. Direct table references (simpler): \"SELECT * FROM blocks\"\n2. read_parquet function (explicit): \"SELECT * FROM read_parquet('/path/to/file.parquet')\"\n\nArgs:\n query: SQL query to execute - can use simple table names or read_parquet()\n files: List of parquet file paths to query (typically from query_dataset results)\n include_schema: Whether to include schema information in the result\n \nReturns:\n Query results and metadata\n"
18023
+ },
18024
+ "list_available_sql_tables": {
18025
+ "name": "list_available_sql_tables",
18026
+ "description": "\nList all available parquet files that can be queried with SQL\n\nUSAGE NOTES:\n- This function lists parquet files that have already been downloaded\n- Each file can be queried using read_parquet('/path/to/file.parquet') in your SQL\n- For each file, this returns the file path, dataset type, and other metadata\n- Use these file paths in your SQL queries with query_sql()\n\nReturns:\n List of available files and their metadata\n"
18027
+ },
18028
+ "get_sql_table_schema": {
18029
+ "name": "get_sql_table_schema",
18030
+ "description": "\nGet the schema and sample data for a specific parquet file\n\nWORKFLOW NOTE: Use this function to explore the structure of parquet files\nbefore writing SQL queries against them. This will show you:\n1. All available columns and their data types\n2. Sample data from the file\n3. Total row count\n\nUsage example:\n1. Get list of files: files = list_available_sql_tables()\n2. For a specific file: schema = get_sql_table_schema(files[0]['path'])\n3. Use columns in your SQL: query_sql(\"SELECT column1, column2 FROM read_parquet('/path/to/file.parquet')\")\n\nArgs:\n file_path: Path to the parquet file (from list_available_sql_tables or query_dataset)\n \nReturns:\n Table schema information including columns, data types, and sample data\n"
18031
+ },
18032
+ "query_blockchain_sql": {
18033
+ "name": "query_blockchain_sql",
18034
+ "description": "\nDownload blockchain data and run SQL query in a single step\n\nCONVENIENCE FUNCTION: This combines query_dataset and query_sql into one call.\n\nYou can write SQL queries using either approach:\n1. Simple table references: \"SELECT * FROM blocks LIMIT 10\"\n2. Explicit read_parquet: \"SELECT * FROM read_parquet('/path/to/file.parquet') LIMIT 10\"\n\nDATASET-SPECIFIC PARAMETERS:\nFor datasets that require specific address parameters (like 'balances', 'erc20_transfers', etc.),\nALWAYS use the 'contract' parameter to pass ANY Ethereum address. For example:\n\n- For 'balances' dataset: Use contract parameter for the address you want balances for\n query_blockchain_sql(\n sql_query=\"SELECT * FROM balances\",\n dataset=\"balances\",\n blocks='1000:1010',\n contract='0x123...' # Address you want balances for\n )\n\nExamples:\n```\n# Using simple table name\nquery_blockchain_sql(\n sql_query=\"SELECT * FROM blocks LIMIT 10\",\n dataset=\"blocks\",\n blocks_from_latest=100\n)\n\n# Using read_parquet() (the path will be automatically replaced)\nquery_blockchain_sql(\n sql_query=\"SELECT * FROM read_parquet('/any/path.parquet') LIMIT 10\",\n dataset=\"blocks\",\n blocks_from_latest=100\n)\n```\n\nALTERNATIVE WORKFLOW (more control):\nIf you need more control, you can separate the steps:\n1. Download data: result = query_dataset('blocks', blocks_from_latest=100, output_format='parquet')\n2. Inspect schema: schema = get_sql_table_schema(result['files'][0])\n3. Run SQL query: query_sql(\"SELECT * FROM blocks\", files=result['files'])\n\nArgs:\n sql_query: SQL query to execute - using table names or read_parquet()\n dataset: The specific dataset to query (e.g., 'transactions', 'logs', 'balances')\n If None, will be extracted from the SQL query\n blocks: Block range specification as a string (e.g., '1000:1010')\n start_block: Start block number (alternative to blocks)\n end_block: End block number (alternative to blocks)\n use_latest: If True, query the latest block\n blocks_from_latest: Number of blocks before the latest to include\n contract: Contract address to filter by - IMPORTANT: Use this parameter for ALL address-based filtering\n regardless of the parameter name in the native cryo command (address, contract, etc.)\n force_refresh: Force download of new data even if it exists\n include_schema: Include schema information in the result\n \nReturns:\n SQL query results and metadata\n"
18035
+ },
18036
+ "get_sql_examples": {
18037
+ "name": "get_sql_examples",
18038
+ "description": "\nGet example SQL queries for different blockchain datasets with DuckDB\n\nSQL WORKFLOW TIPS:\n1. First download data: result = query_dataset('dataset_name', blocks='...', output_format='parquet')\n2. Inspect schema: schema = get_sql_table_schema(result['files'][0])\n3. Run SQL: query_sql(\"SELECT * FROM read_parquet('/path/to/file.parquet')\", files=result['files'])\n\nOR use the combined approach:\n- query_blockchain_sql(sql_query=\"SELECT * FROM read_parquet('...')\", dataset='blocks', blocks='...')\n\nReturns:\n Dictionary of example queries categorized by dataset type and workflow patterns\n"
18039
+ }
18040
+ }
15924
18041
  },
15925
18042
  "twikit": {
15926
18043
  "category": "search-data-extraction",
@@ -15928,7 +18045,34 @@
15928
18045
  },
15929
18046
  "agora-mcp": {
15930
18047
  "category": "search-data-extraction",
15931
- "path": "search-data-extraction/agora-mcp.json"
18048
+ "path": "search-data-extraction/agora-mcp.json",
18049
+ "validated": true,
18050
+ "tools": {
18051
+ "agora_search": {
18052
+ "name": "agora_search",
18053
+ "description": "\nSearch for products matching the query in Agora.\n\nArgs:\n q: The search query.\n count: The number of products to return per page.\n page: The page number.\n price_min: The minimum price. Optional\n price_max: The maximum price. Optional\n sort: The sort field: price:relevance.\n order: The sort order: asc or desc.\n \nReturns:\n The search results.\n"
18054
+ },
18055
+ "agora_get_product_detail": {
18056
+ "name": "agora_get_product_detail",
18057
+ "description": "\nGet details for a specific product in Agora.\n\nArgs:\n slug: The product slug, it usually looks something like 'royal-blue-waxed-shoe-laces-6f2049ef-0d08-4a79-8937-025bb596092f-1718242165922'\n \nReturns:\n The product details.\n"
18058
+ },
18059
+ "agora_get_payment_offers": {
18060
+ "name": "agora_get_payment_offers",
18061
+ "description": "\nGet the payment offers for a product in Agora. Some products do not have variants, in such cases use the product_id as variant_id too.\nBefore calling this tool, check if the user has already provided the shipping address and user information. \nOtherwise, ask the user for the shipping address and user information.\n\nIf the user does not provide an `addressName`, use the `firstname` and `lastname` to populate it.\nArgs:\n slug: The product slug.\n product_id: The product ID as str delimited by escaped double quotes\n variant_id: The product variant ID as str delimited by escaped double quotes\n quantity: The quantity to purchase.\n shipping_address: The shipping address.\n user: The user information.\n \nExample:\n product_id = \"\\\"1234567890\\\"\"\n variant_id = \"\\\"1234567890\\\"\"\n shipping_address = {\n \"addressName\": \"John Doe\",\n \"addressFirst\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"country\": \"US\",\n \"zipCode\": \"10001\"\n }\n \n user = {\n \"firstname\": \"John\",\n \"lastname\": \"Doe\",\n \"email\": \"john@example.com\",\n }\n \nReturns:\n L402 offer that can be paid by L402-compatible clients.\n"
18062
+ },
18063
+ "agora_get_order": {
18064
+ "name": "agora_get_order",
18065
+ "description": "\nGet details for a specific order in Agora.\n\nArgs:\n order_id: The order ID.\n \nReturns:\n The order details.\n"
18066
+ },
18067
+ "agora_get_user_orders": {
18068
+ "name": "agora_get_user_orders",
18069
+ "description": "\nGet all orders for the current user.\n\nReturns:\n A list of orders.\n"
18070
+ },
18071
+ "agora_get_user_info": {
18072
+ "name": "agora_get_user_info",
18073
+ "description": "\nGet the current user's profile and shipping addresses in Agora.\n\nReturns:\n Dict containing user profile info (firstname, lastname, email) and list of shipping addresses\n"
18074
+ }
18075
+ }
15932
18076
  },
15933
18077
  "newsnow-mcp-server": {
15934
18078
  "category": "search-data-extraction",
@@ -16253,7 +18397,18 @@
16253
18397
  },
16254
18398
  "rapidocr-mcp": {
16255
18399
  "category": "search-data-extraction",
16256
- "path": "search-data-extraction/rapidocr-mcp.json"
18400
+ "path": "search-data-extraction/rapidocr-mcp.json",
18401
+ "validated": true,
18402
+ "tools": {
18403
+ "ocr_by_content": {
18404
+ "name": "ocr_by_content",
18405
+ "description": "Perform OCR recognition on base64 encoded image content.\n\nArgs:\n base64_data: Base64 encoded image content string\n\nReturns:\n List[TextContent]: List of recognized text content\n"
18406
+ },
18407
+ "ocr_by_path": {
18408
+ "name": "ocr_by_path",
18409
+ "description": "Perform OCR recognition on an image file.\n\nArgs:\n path: Path to the image file\n\nReturns:\n List[TextContent]: List of recognized text content\n"
18410
+ }
18411
+ }
16257
18412
  },
16258
18413
  "jina-ai-web-search": {
16259
18414
  "category": "search-data-extraction",
@@ -17787,7 +19942,74 @@
17787
19942
  },
17788
19943
  "fpl-mcp": {
17789
19944
  "category": "sports",
17790
- "path": "sports/fpl-mcp.json"
19945
+ "path": "sports/fpl-mcp.json",
19946
+ "validated": true,
19947
+ "tools": {
19948
+ "get_team": {
19949
+ "name": "get_team",
19950
+ "description": "Get any team's players, captain, and other details for a specific gameweek\n\nArgs:\n team_id: FPL team ID (required)\n gameweek: Gameweek number (defaults to current gameweek)\n \nReturns:\n Detailed team information including player details, captain, and value\n"
19951
+ },
19952
+ "get_my_team": {
19953
+ "name": "get_my_team",
19954
+ "description": "Get your own FPL team for a specific gameweek\n\nArgs:\n gameweek: Gameweek number (defaults to current gameweek)\n \nReturns:\n Detailed team information including player details, captain, and value\n \nNote:\n This uses your authenticated team ID from the FPL credentials.\n To get another team's details, use get_team and provide a team_id.\n"
19955
+ },
19956
+ "get_manager": {
19957
+ "name": "get_manager",
19958
+ "description": "Get detailed information about an FPL manager\n\nArgs:\n team_id: FPL team ID to look up\n \nReturns:\n Manager information including history, name, team details, and leagues\n"
19959
+ },
19960
+ "get_manager_info": {
19961
+ "name": "get_manager_info",
19962
+ "description": "Get detailed information about an FPL manager\n\nArgs:\n team_id: FPL team ID (defaults to authenticated user)\n\nReturns:\n Manager info with leagues and performance stats\n"
19963
+ },
19964
+ "get_league_standings": {
19965
+ "name": "get_league_standings",
19966
+ "description": "Get standings for a specified FPL league\n\nArgs:\n league_id: ID of the league to fetch\n \nReturns:\n League information with standings and team details\n"
19967
+ },
19968
+ "get_league_analytics": {
19969
+ "name": "get_league_analytics",
19970
+ "description": "Get rich analytics for a Fantasy Premier League mini-league\n\nReturns visualization-optimized data for various types of league analysis.\n\nArgs:\n league_id: ID of the league to analyze\n analysis_type: Type of analysis to perform:\n - \"overview\": General league overview (default)\n - \"historical\": Historical performance analysis\n - \"team_composition\": Team composition analysis\n - \"decisions\": Captain and transfer decision analysis\n - \"fixtures\": Fixture difficulty comparison\n start_gw: Starting gameweek (defaults to 1 or use \"current-N\" format)\n end_gw: Ending gameweek (defaults to current)\n \nReturns:\n Rich analytics data structured for visualization\n"
19971
+ },
19972
+ "get_player_information": {
19973
+ "name": "get_player_information",
19974
+ "description": "Get detailed information and statistics for a specific player\n\nArgs:\n player_id: FPL player ID (if provided, takes precedence over player_name)\n player_name: Player name to search for (used if player_id not provided)\n start_gameweek: Starting gameweek for filtering player history\n end_gameweek: Ending gameweek for filtering player history\n include_history: Whether to include gameweek-by-gameweek history\n include_fixtures: Whether to include upcoming fixtures\n\nReturns:\n Comprehensive player information including stats and history\n"
19975
+ },
19976
+ "search_fpl_players": {
19977
+ "name": "search_fpl_players",
19978
+ "description": "Search for FPL players by name with optional filtering\n\nArgs:\n query: Player name or partial name to search for\n position: Optional position filter (GKP, DEF, MID, FWD)\n team: Optional team name filter\n limit: Maximum number of results to return\n\nReturns:\n List of matching players with details\n"
19979
+ },
19980
+ "check_fpl_authentication": {
19981
+ "name": "check_fpl_authentication",
19982
+ "description": "Check if FPL authentication is working correctly\n\nReturns:\n Authentication status and basic team information\n"
19983
+ },
19984
+ "get_gameweek_status": {
19985
+ "name": "get_gameweek_status",
19986
+ "description": "Get precise information about current, previous, and next gameweeks\n\nReturns:\n Detailed information about gameweek timing, including exact status\n"
19987
+ },
19988
+ "analyze_player_fixtures": {
19989
+ "name": "analyze_player_fixtures",
19990
+ "description": "Analyze upcoming fixtures for a player and provide a difficulty rating\n\nArgs:\n player_name: Player name to search for\n num_fixtures: Number of upcoming fixtures to analyze (default: 5)\n\nReturns:\n Analysis of player's upcoming fixtures with difficulty ratings\n"
19991
+ },
19992
+ "get_blank_gameweeks": {
19993
+ "name": "get_blank_gameweeks",
19994
+ "description": "Get information about upcoming blank gameweeks where teams don't have fixtures\n\nArgs:\n num_gameweeks: Number of upcoming gameweeks to check (default: 5)\n\nReturns:\n Information about blank gameweeks and affected teams\n"
19995
+ },
19996
+ "get_double_gameweeks": {
19997
+ "name": "get_double_gameweeks",
19998
+ "description": "Get information about upcoming double gameweeks where teams play multiple times\n\nArgs:\n num_gameweeks: Number of upcoming gameweeks to check (default: 5)\n\nReturns:\n Information about double gameweeks and affected teams\n"
19999
+ },
20000
+ "analyze_players": {
20001
+ "name": "analyze_players",
20002
+ "description": "Filter and analyze FPL players based on multiple criteria\n\nArgs:\n position: Player position (e.g., \"midfielders\", \"defenders\")\n team: Team name filter\n min_price: Minimum player price in millions\n max_price: Maximum player price in millions\n min_points: Minimum total points\n min_ownership: Minimum ownership percentage\n max_ownership: Maximum ownership percentage\n form_threshold: Minimum form rating\n include_gameweeks: Whether to include gameweek-by-gameweek data\n num_gameweeks: Number of recent gameweeks to include\n sort_by: Metric to sort results by (default: total_points)\n sort_order: Sort direction (\"asc\" or \"desc\")\n limit: Maximum number of players to return\n \nReturns:\n Filtered player data with summary statistics\n"
20003
+ },
20004
+ "analyze_fixtures": {
20005
+ "name": "analyze_fixtures",
20006
+ "description": "Analyze upcoming fixtures for players, teams, or positions\n\nArgs:\n entity_type: Type of entity to analyze (\"player\", \"team\", or \"position\")\n entity_name: Name of the specific entity\n num_gameweeks: Number of gameweeks to look ahead\n include_blanks: Whether to include blank gameweek info\n include_doubles: Whether to include double gameweek info\n \nReturns:\n Fixture analysis with difficulty ratings and summary\n"
20007
+ },
20008
+ "compare_players": {
20009
+ "name": "compare_players",
20010
+ "description": "Compare multiple players across various metrics\n\nArgs:\n player_names: List of player names to compare (2-5 players recommended)\n metrics: List of metrics to compare\n include_gameweeks: Whether to include gameweek-by-gameweek comparison\n num_gameweeks: Number of recent gameweeks to include in comparison\n include_fixture_analysis: Whether to include fixture analysis including blanks and doubles\n \nReturns:\n Detailed comparison of players across the specified metrics\n"
20011
+ }
20012
+ }
17791
20013
  },
17792
20014
  "spurs-blog-(pounding-the-rock)": {
17793
20015
  "category": "sports",
@@ -18065,7 +20287,22 @@
18065
20287
  },
18066
20288
  "hh-jira-mcp-server": {
18067
20289
  "category": "support-service-management",
18068
- "path": "support-service-management/hh-jira-mcp-server.json"
20290
+ "path": "support-service-management/hh-jira-mcp-server.json",
20291
+ "validated": true,
20292
+ "tools": {
20293
+ "search_team_active_portfolios": {
20294
+ "name": "search_team_active_portfolios",
20295
+ "description": ""
20296
+ },
20297
+ "create_task": {
20298
+ "name": "create_task",
20299
+ "description": ""
20300
+ },
20301
+ "set_defence_checked": {
20302
+ "name": "set_defence_checked",
20303
+ "description": ""
20304
+ }
20305
+ }
18069
20306
  },
18070
20307
  "@shortcut/mcp": {
18071
20308
  "category": "support-service-management",
@@ -18571,7 +20808,74 @@
18571
20808
  },
18572
20809
  "devrev-mcp": {
18573
20810
  "category": "support-service-management",
18574
- "path": "support-service-management/devrev-mcp.json"
20811
+ "path": "support-service-management/devrev-mcp.json",
20812
+ "validated": true,
20813
+ "tools": {
20814
+ "get_current_user": {
20815
+ "name": "get_current_user",
20816
+ "description": "Fetch the current DevRev user details. When the user specifies 'me' in the query, this tool should be called to get the user details."
20817
+ },
20818
+ "get_vista": {
20819
+ "name": "get_vista",
20820
+ "description": "Retrieve information about a vista in DevRev using its ID. In DevRev a vista is a sprint board which contains sprints (or vista group items). The reponse of this tool will contain the sprint (or vista group item) IDs that you can use to filter on sprints."
20821
+ },
20822
+ "search": {
20823
+ "name": "search",
20824
+ "description": "Search DevRev using the provided query"
20825
+ },
20826
+ "get_work": {
20827
+ "name": "get_work",
20828
+ "description": "Get all information about a DevRev work item (issue, ticket) using its ID"
20829
+ },
20830
+ "create_work": {
20831
+ "name": "create_work",
20832
+ "description": "Create a new work item (issue, ticket) in DevRev"
20833
+ },
20834
+ "update_work": {
20835
+ "name": "update_work",
20836
+ "description": "Update an existing work item (issue, ticket) in DevRev"
20837
+ },
20838
+ "list_works": {
20839
+ "name": "list_works",
20840
+ "description": "List all work items (issues, tickets) in DevRev"
20841
+ },
20842
+ "get_part": {
20843
+ "name": "get_part",
20844
+ "description": "Get information about a part (enhancement) in DevRev using its ID"
20845
+ },
20846
+ "create_part": {
20847
+ "name": "create_part",
20848
+ "description": "Create a new part (enhancement) in DevRev"
20849
+ },
20850
+ "update_part": {
20851
+ "name": "update_part",
20852
+ "description": "Update an existing part (enhancement) in DevRev"
20853
+ },
20854
+ "list_parts": {
20855
+ "name": "list_parts",
20856
+ "description": "List all parts (enhancements) in DevRev"
20857
+ },
20858
+ "list_meetings": {
20859
+ "name": "list_meetings",
20860
+ "description": "List meetings in DevRev"
20861
+ },
20862
+ "valid_stage_transition": {
20863
+ "name": "valid_stage_transition",
20864
+ "description": "gets a list of valid stage transition for a given work item (issue, ticket) or part (enhancement). Use this before updating stage of the work item or part to ensure the transition is valid."
20865
+ },
20866
+ "add_timeline_entry": {
20867
+ "name": "add_timeline_entry",
20868
+ "description": "Add a timeline entry to a work item (issue, ticket) or part (enhancement)"
20869
+ },
20870
+ "get_sprints": {
20871
+ "name": "get_sprints",
20872
+ "description": "Get active or planned sprints for a given part ID. Use this to get the sprints for an issue based on its part."
20873
+ },
20874
+ "list_subtypes": {
20875
+ "name": "list_subtypes",
20876
+ "description": "List all subtypes in DevRev for a given leaf type"
20877
+ }
20878
+ }
18575
20879
  },
18576
20880
  "devrev": {
18577
20881
  "category": "support-service-management",
@@ -19064,7 +21368,18 @@
19064
21368
  },
19065
21369
  "caltrain-mcp": {
19066
21370
  "category": "travel-transportation",
19067
- "path": "travel-transportation/caltrain-mcp.json"
21371
+ "path": "travel-transportation/caltrain-mcp.json",
21372
+ "validated": true,
21373
+ "tools": {
21374
+ "next_trains": {
21375
+ "name": "next_trains",
21376
+ "description": "Return the next few scheduled Caltrain departures.\n\nArgs:\n origin: Station name (e.g. 'San Jose Diridon', 'Palo Alto', 'San Francisco').\n Supports common abbreviations like 'SF' for San Francisco, 'SJ' for San Jose.\n If station is not found, use list_stations() to see all available options.\n destination: Station name (e.g. 'San Francisco', 'Mountain View', 'Tamien').\n Supports common abbreviations like 'SF' for San Francisco, 'SJ' for San Jose.\n If station is not found, use list_stations() to see all available options.\n when_iso: Optional ISO-8601 datetime (local time). Default: now.\n\nNote: If you get a \"Station not found\" error, try using the list_stations() tool first\nto see exact station names, then retry with the correct spelling.\n"
21377
+ },
21378
+ "list_stations": {
21379
+ "name": "list_stations",
21380
+ "description": "List all available Caltrain stations.\n\nThis tool is useful when you need to find the exact station names, especially if\nthe next_trains() tool returns a \"Station not found\" error. Station names are\ncase-insensitive and support some common abbreviations like 'SF' and 'SJ'.\n\nReturns a formatted list of all Caltrain stations that can be used as origin\nor destination in the next_trains() tool.\n"
21381
+ }
21382
+ }
19068
21383
  },
19069
21384
  "georgia-511": {
19070
21385
  "category": "travel-transportation",
@@ -19754,7 +22069,34 @@
19754
22069
  },
19755
22070
  "git-mcp": {
19756
22071
  "category": "version-control",
19757
- "path": "version-control/git-mcp.json"
22072
+ "path": "version-control/git-mcp.json",
22073
+ "validated": true,
22074
+ "tools": {
22075
+ "get_last_git_tag": {
22076
+ "name": "get_last_git_tag",
22077
+ "description": "Find the last git tag in the repository\n\nArgs:\n repo_name: Name of the git repository\n\nReturns:\n Dictionary containing tag version and date\n"
22078
+ },
22079
+ "list_commits_since_last_tag": {
22080
+ "name": "list_commits_since_last_tag",
22081
+ "description": "List commit messages since main HEAD and the last git tag\n\nArgs:\n repo_name: Name of the git repository\n max_count: Maximum number of commits to return\n\nReturns:\n List of dictionaries containing commit hash, author, date, and message\n"
22082
+ },
22083
+ "list_repositories": {
22084
+ "name": "list_repositories",
22085
+ "description": "List all git repositories in the configured path\n\nReturns:\n List of repository names\n"
22086
+ },
22087
+ "create_git_tag": {
22088
+ "name": "create_git_tag",
22089
+ "description": "Create a new git tag in the repository\n\nArgs:\n repo_name: Name of the git repository\n tag_name: Name of the tag to create\n message: Optional message for annotated tag\n\nReturns:\n Dictionary containing status and tag information\n"
22090
+ },
22091
+ "push_git_tag": {
22092
+ "name": "push_git_tag",
22093
+ "description": "Push a git tag to the default remote\n\nArgs:\n repo_name: Name of the git repository\n tag_name: Name of the tag to push\n\nReturns:\n Dictionary containing status and information about the operation\n"
22094
+ },
22095
+ "refresh_repository": {
22096
+ "name": "refresh_repository",
22097
+ "description": "Refresh repository by checking out main branch and pulling all remotes\n\nArgs:\n repo_name: Name of the git repository\n\nReturns:\n Dictionary containing status and information about the operation\n"
22098
+ }
22099
+ }
19758
22100
  },
19759
22101
  "git-pr-description-generator": {
19760
22102
  "category": "version-control",
@@ -19797,7 +22139,14 @@
19797
22139
  },
19798
22140
  "mcp-server-diff-python": {
19799
22141
  "category": "version-control",
19800
- "path": "version-control/mcp-server-diff-python.json"
22142
+ "path": "version-control/mcp-server-diff-python.json",
22143
+ "validated": true,
22144
+ "tools": {
22145
+ "get-unified-diff": {
22146
+ "name": "get-unified-diff",
22147
+ "description": "Get the difference between two text articles in Unified diff format. Use this when you want to extract the difference between texts."
22148
+ }
22149
+ }
19801
22150
  },
19802
22151
  "git": {
19803
22152
  "category": "version-control",
@@ -20304,7 +22653,42 @@
20304
22653
  },
20305
22654
  "rqbit-mcp": {
20306
22655
  "category": "other-tools-and-integrations",
20307
- "path": "other-tools-and-integrations/rqbit-mcp.json"
22656
+ "path": "other-tools-and-integrations/rqbit-mcp.json",
22657
+ "validated": true,
22658
+ "tools": {
22659
+ "list_torrents": {
22660
+ "name": "list_torrents",
22661
+ "description": "List all torrents."
22662
+ },
22663
+ "download_torrent": {
22664
+ "name": "download_torrent",
22665
+ "description": "Download a torrent from a magnet link, HTTP URL, or local file."
22666
+ },
22667
+ "get_torrent_details": {
22668
+ "name": "get_torrent_details",
22669
+ "description": "Get details for a specific torrent by its ID or infohash."
22670
+ },
22671
+ "get_torrent_stats": {
22672
+ "name": "get_torrent_stats",
22673
+ "description": "Get stats and status for a specific torrent by its ID or infohash."
22674
+ },
22675
+ "delete_torrent": {
22676
+ "name": "delete_torrent",
22677
+ "description": "Delete a torrent and its files."
22678
+ },
22679
+ "start_torrent": {
22680
+ "name": "start_torrent",
22681
+ "description": "Start (resume) a torrent."
22682
+ },
22683
+ "pause_torrent": {
22684
+ "name": "pause_torrent",
22685
+ "description": "Pause a torrent."
22686
+ },
22687
+ "forget_torrent": {
22688
+ "name": "forget_torrent",
22689
+ "description": "Forget a torrent, keeping the files."
22690
+ }
22691
+ }
20308
22692
  },
20309
22693
  "openscad-3d-model-generator": {
20310
22694
  "category": "other-tools-and-integrations",
@@ -20414,7 +22798,74 @@
20414
22798
  },
20415
22799
  "imagesorcery-mcp": {
20416
22800
  "category": "other-tools-and-integrations",
20417
- "path": "other-tools-and-integrations/imagesorcery-mcp.json"
22801
+ "path": "other-tools-and-integrations/imagesorcery-mcp.json",
22802
+ "validated": true,
22803
+ "tools": {
22804
+ "blur": {
22805
+ "name": "blur",
22806
+ "description": "\nBlur specified rectangular or polygonal areas of an image using OpenCV.\n\nThis tool allows blurring multiple rectangular or polygonal areas of an image with customizable\nblur strength. Each area can be a rectangle defined by a bounding box \n[x1, y1, x2, y2] or a polygon defined by a list of points.\n\nThe blur_strength parameter controls the intensity of the blur effect. Higher values\nresult in stronger blur. It must be an odd number (default is 15).\n\nIf `invert_areas` is True, the tool will blur everything EXCEPT the specified areas.\nReturns:\n Path to the image with blurred areas\n"
22807
+ },
22808
+ "change_color": {
22809
+ "name": "change_color",
22810
+ "description": "\nChange the color palette of an image.\n\nThis tool applies a predefined color transformation to an image.\nCurrently supported palettes are 'grayscale' and 'sepia'.\n\nReturns:\n Path to the image with the new color palette.\n"
22811
+ },
22812
+ "crop": {
22813
+ "name": "crop",
22814
+ "description": "\nCrop an image using OpenCV's NumPy slicing approach\nwith OpenMCP's bounding box annotations.\n\nReturns:\n Path to the cropped image\n"
22815
+ },
22816
+ "detect": {
22817
+ "name": "detect",
22818
+ "description": "\nDetect objects in an image using models from Ultralytics.\n\nThis tool requires pre-downloaded models. Use the download-yolo-models\ncommand to download models before using this tool.\n\nIf objects aren't common, consider using a specialized model.\n\nThis tool can optionally return segmentation masks or polygons if a segmentation\nmodel (e.g., one ending in '-seg.pt') is used.\n\nReturns:\n Dictionary containing the input image path and a list of detected objects.\n Each object includes its class name, confidence score, and bounding box.\n If return_geometry is True, it also includes a 'mask' (numpy array) or\n 'polygon' (list of points).\n"
22819
+ },
22820
+ "draw_arrows": {
22821
+ "name": "draw_arrows",
22822
+ "description": "\nDraw arrows on an image using OpenCV.\n\nThis tool allows adding multiple arrows to an image with customizable\nstart and end points, color, thickness, and tip length.\n\nEach arrow is defined by its start point (x1, y1) and end point (x2, y2).\nThe 'tip_length' is relative to the arrow's length (e.g., 0.1 means 10%).\n\nReturns:\n Path to the image with drawn arrows\n"
22823
+ },
22824
+ "draw_circles": {
22825
+ "name": "draw_circles",
22826
+ "description": "\nDraw circles on an image using OpenCV.\n\nThis tool allows adding multiple circles to an image with customizable\ncenter, radius, color, thickness, and fill option.\n\nEach circle is defined by its center coordinates (center_x, center_y) and radius.\n\nReturns:\n Path to the image with drawn circles\n"
22827
+ },
22828
+ "draw_lines": {
22829
+ "name": "draw_lines",
22830
+ "description": "\nDraw lines on an image using OpenCV.\n\nThis tool allows adding multiple lines to an image with customizable\nstart and end points, color, and thickness.\n\nEach line is defined by its start point (x1, y1) and end point (x2, y2).\n\nReturns:\n Path to the image with drawn lines\n"
22831
+ },
22832
+ "draw_rectangles": {
22833
+ "name": "draw_rectangles",
22834
+ "description": "\nDraw rectangles on an image using OpenCV.\n\nThis tool allows adding multiple rectangles to an image with customizable\nposition, color, thickness, and fill option.\n\nEach rectangle is defined by two points: (x1, y1) for the top-left corner\nand (x2, y2) for the bottom-right corner.\n\nReturns:\n Path to the image with drawn rectangles\n"
22835
+ },
22836
+ "draw_texts": {
22837
+ "name": "draw_texts",
22838
+ "description": "\nDraw text on an image using OpenCV.\n\nThis tool allows adding multiple text elements to an image with customizable\nposition, font, size, color, and thickness.\n\nAvailable font_face options:\n- 'FONT_HERSHEY_SIMPLEX' (default)\n- 'FONT_HERSHEY_PLAIN'\n- 'FONT_HERSHEY_DUPLEX'\n- 'FONT_HERSHEY_COMPLEX'\n- 'FONT_HERSHEY_TRIPLEX'\n- 'FONT_HERSHEY_COMPLEX_SMALL'\n- 'FONT_HERSHEY_SCRIPT_SIMPLEX'\n- 'FONT_HERSHEY_SCRIPT_COMPLEX'\n\nReturns:\n Path to the image with drawn text\n"
22839
+ },
22840
+ "fill": {
22841
+ "name": "fill",
22842
+ "description": "\nFill specified rectangular or polygonal areas of an image with a color and opacity.\n\nThis tool allows filling multiple areas of an image with a customizable\ncolor and opacity. Each area can be a rectangle defined by a bounding box \n[x1, y1, x2, y2] or a polygon defined by a list of points.\n\nThe 'opacity' parameter controls the transparency of the fill. 1.0 is fully opaque,\n0.0 is fully transparent. Default is 0.5.\nThe 'color' is in BGR format, e.g., [255, 0, 0] for blue. Default is black.\n\nIf the `color` is set to `None`, the specified area will be made fully transparent,\neffectively deleting it (similar to ImageMagick). In this case, the `opacity`\nparameter is ignored.\n\nIf `invert_areas` is True, the tool will fill everything EXCEPT the specified areas.\nReturns:\n Path to the image with filled areas\n"
22843
+ },
22844
+ "find": {
22845
+ "name": "find",
22846
+ "description": "\nFind objects in an image based on a text description.\n\nThis tool uses open-vocabulary detection models to find objects matching a text description.\nIt requires pre-downloaded YOLOE models that support text prompts (e.g. yoloe-11l-seg.pt).\n\nThis tool can optionally return segmentation masks or polygons.\n\nReturns:\n Dictionary containing the input image path and a list of found objects.\n Each object includes its confidence score and bounding box. If return_geometry\n is True, it also includes a 'mask' (numpy array) or 'polygon' (list of points).\n"
22847
+ },
22848
+ "get_metainfo": {
22849
+ "name": "get_metainfo",
22850
+ "description": "\nGet metadata information about an image file.\n\nReturns:\n Dictionary containing metadata about the image (size, dimensions,\n format, etc.)\n"
22851
+ },
22852
+ "ocr": {
22853
+ "name": "ocr",
22854
+ "description": "\nPerforms Optical Character Recognition (OCR) on an image using EasyOCR.\n\nThis tool extracts text from images in various languages. The default language is English,\nbut you can specify other languages using their language codes (e.g., 'en', 'ru', 'fr', etc.).\n\nReturns:\n Dictionary containing the input image path and a list of detected text segments\n with their text content, confidence scores, and bounding box coordinates.\n"
22855
+ },
22856
+ "overlay": {
22857
+ "name": "overlay",
22858
+ "description": "\nOverlays one image on top of another, handling transparency.\n\nThis tool places an overlay image onto a base image at a specified (x, y)\ncoordinate. If the overlay image has an alpha channel (e.g., a transparent PNG),\nit will be blended correctly with the base image. If the overlay extends\nbeyond the boundaries of the base image, it will be cropped.\n\nReturns:\n Path to the resulting image.\n"
22859
+ },
22860
+ "resize": {
22861
+ "name": "resize",
22862
+ "description": "\nResize an image using OpenCV.\n\nThe function can resize an image in three ways:\n1. By specifying both width and height\n2. By specifying either width or height (preserving aspect ratio)\n3. By specifying a scale factor\n\nReturns:\n Path to the resized image\n"
22863
+ },
22864
+ "rotate": {
22865
+ "name": "rotate",
22866
+ "description": "\nRotate an image using imutils.rotate_bound function.\n\nThe function rotates the image by the specified angle in degrees.\nPositive angles represent counterclockwise rotation.\nThe rotate_bound function ensures the entire rotated image is visible\nby automatically adjusting the output image size.\n\nReturns:\n Path to the rotated image\n"
22867
+ }
22868
+ }
20418
22869
  },
20419
22870
  "heybeauty-mcp": {
20420
22871
  "category": "other-tools-and-integrations",
@@ -20769,7 +23220,50 @@
20769
23220
  },
20770
23221
  "mcp-applemusic": {
20771
23222
  "category": "other-tools-and-integrations",
20772
- "path": "other-tools-and-integrations/mcp-applemusic.json"
23223
+ "path": "other-tools-and-integrations/mcp-applemusic.json",
23224
+ "validated": true,
23225
+ "tools": {
23226
+ "itunes_play": {
23227
+ "name": "itunes_play",
23228
+ "description": "Start playback in Music (iTunes)."
23229
+ },
23230
+ "itunes_pause": {
23231
+ "name": "itunes_pause",
23232
+ "description": "Pause playback in Music (iTunes)."
23233
+ },
23234
+ "itunes_next": {
23235
+ "name": "itunes_next",
23236
+ "description": "Skip to the next track."
23237
+ },
23238
+ "itunes_previous": {
23239
+ "name": "itunes_previous",
23240
+ "description": "Return to the previous track."
23241
+ },
23242
+ "itunes_search": {
23243
+ "name": "itunes_search",
23244
+ "description": "\nSearch the Music library for tracks whose names contain the given query.\nReturns a list of tracks formatted as \"Track Name - Artist\".\n"
23245
+ },
23246
+ "itunes_play_song": {
23247
+ "name": "itunes_play_song",
23248
+ "description": "\nPlay the first track whose name exactly matches the given song name.\nReturns a confirmation message.\n"
23249
+ },
23250
+ "itunes_create_playlist": {
23251
+ "name": "itunes_create_playlist",
23252
+ "description": "\nCreate a new playlist with the given name and add tracks to it.\n'songs' should be a comma-separated list of exact track names.\nReturns a confirmation message including the number of tracks added.\n"
23253
+ },
23254
+ "itunes_library": {
23255
+ "name": "itunes_library",
23256
+ "description": "\nReturn a summary of the Music library, including total tracks and user playlists.\n"
23257
+ },
23258
+ "itunes_current_song": {
23259
+ "name": "itunes_current_song",
23260
+ "description": "\nGet information about the currently playing track.\nReturns the track name, artist, and album.\n"
23261
+ },
23262
+ "itunes_all_songs": {
23263
+ "name": "itunes_all_songs",
23264
+ "description": "\nGet a list of all songs in the Music library.\nReturns a formatted list of all tracks with their names and artists.\n"
23265
+ }
23266
+ }
20773
23267
  },
20774
23268
  "claude-enhancements": {
20775
23269
  "category": "other-tools-and-integrations",
@@ -21209,7 +23703,14 @@
21209
23703
  },
21210
23704
  "mcp-server-calculator": {
21211
23705
  "category": "other-tools-and-integrations",
21212
- "path": "other-tools-and-integrations/mcp-server-calculator.json"
23706
+ "path": "other-tools-and-integrations/mcp-server-calculator.json",
23707
+ "validated": true,
23708
+ "tools": {
23709
+ "calculate": {
23710
+ "name": "calculate",
23711
+ "description": "Calculates/evaluates the given expression."
23712
+ }
23713
+ }
21213
23714
  },
21214
23715
  "sandbox-fusion": {
21215
23716
  "category": "other-tools-and-integrations",
@@ -21280,7 +23781,22 @@
21280
23781
  },
21281
23782
  "haiguitang-mcp": {
21282
23783
  "category": "other-tools-and-integrations",
21283
- "path": "other-tools-and-integrations/haiguitang-mcp.json"
23784
+ "path": "other-tools-and-integrations/haiguitang-mcp.json",
23785
+ "validated": true,
23786
+ "tools": {
23787
+ "get_prompt": {
23788
+ "name": "get_prompt",
23789
+ "description": "获取海龟汤游戏的玩法"
23790
+ },
23791
+ "get_puzzle": {
23792
+ "name": "get_puzzle",
23793
+ "description": "获取一个谜题的完整内容\n\nArgs:\n puzzle_title: 海龟汤的标题\n\nReturns:\n 选择结果信息\n"
23794
+ },
23795
+ "list_puzzles_tool": {
23796
+ "name": "list_puzzles_tool",
23797
+ "description": "列出所有可用的谜题\n\nReturns:\n 谜题列表\n"
23798
+ }
23799
+ }
21284
23800
  },
21285
23801
  "deepseek-thinker-mcp": {
21286
23802
  "category": "other-tools-and-integrations",
@@ -21392,7 +23908,18 @@
21392
23908
  },
21393
23909
  "time-mcp-local": {
21394
23910
  "category": "other-tools-and-integrations",
21395
- "path": "other-tools-and-integrations/time-mcp-local.json"
23911
+ "path": "other-tools-and-integrations/time-mcp-local.json",
23912
+ "validated": true,
23913
+ "tools": {
23914
+ "get_current_time": {
23915
+ "name": "get_current_time",
23916
+ "description": "Get current time in a specific timezones"
23917
+ },
23918
+ "convert_time": {
23919
+ "name": "convert_time",
23920
+ "description": "Convert time between timezones"
23921
+ }
23922
+ }
21396
23923
  },
21397
23924
  "cort-mcp": {
21398
23925
  "category": "other-tools-and-integrations",
@@ -21439,11 +23966,145 @@
21439
23966
  },
21440
23967
  "kroger-mcp": {
21441
23968
  "category": "other-tools-and-integrations",
21442
- "path": "other-tools-and-integrations/kroger-mcp.json"
23969
+ "path": "other-tools-and-integrations/kroger-mcp.json",
23970
+ "validated": true,
23971
+ "tools": {
23972
+ "search_locations": {
23973
+ "name": "search_locations",
23974
+ "description": "\nSearch for Kroger store locations near a zip code.\n\nArgs:\n zip_code: Zip code to search near (uses environment default if not provided)\n radius_in_miles: Search radius in miles (1-100)\n limit: Number of results to return (1-200)\n chain: Filter by specific chain name\n\nReturns:\n Dictionary containing location search results\n"
23975
+ },
23976
+ "get_location_details": {
23977
+ "name": "get_location_details",
23978
+ "description": "\nGet detailed information about a specific Kroger store location.\n\nArgs:\n location_id: The unique identifier for the store location\n\nReturns:\n Dictionary containing detailed location information\n"
23979
+ },
23980
+ "set_preferred_location": {
23981
+ "name": "set_preferred_location",
23982
+ "description": "\nSet a preferred store location for future operations.\n\nArgs:\n location_id: The unique identifier for the store location\n\nReturns:\n Dictionary confirming the preferred location has been set\n"
23983
+ },
23984
+ "get_preferred_location": {
23985
+ "name": "get_preferred_location",
23986
+ "description": "\nGet the currently set preferred store location.\n\nReturns:\n Dictionary containing the preferred location information\n"
23987
+ },
23988
+ "check_location_exists": {
23989
+ "name": "check_location_exists",
23990
+ "description": "\nCheck if a location exists in the Kroger system.\n\nArgs:\n location_id: The unique identifier for the store location\n\nReturns:\n Dictionary indicating whether the location exists\n"
23991
+ },
23992
+ "get_product_images": {
23993
+ "name": "get_product_images",
23994
+ "description": "\nGet an image for a specific product from the requested perspective.\n\nUse get_product_details first to see what perspectives are available (typically \"front\", \"back\", \"left\", \"right\").\n\nArgs:\n product_id: The unique product identifier\n perspective: The image perspective to retrieve (default: \"front\")\n location_id: Store location ID (uses preferred if not provided)\n\nReturns:\n The product image from the requested perspective\n"
23995
+ },
23996
+ "search_products": {
23997
+ "name": "search_products",
23998
+ "description": "\nSearch for products at a Kroger store.\n\nArgs:\n search_term: Product search term (e.g., \"milk\", \"bread\", \"organic apples\")\n location_id: Store location ID (uses preferred location if not provided)\n limit: Number of results to return (1-50)\n fulfillment: Filter by fulfillment method (csp=curbside pickup, delivery, pickup)\n brand: Filter by brand name\n\nReturns:\n Dictionary containing product search results\n"
23999
+ },
24000
+ "get_product_details": {
24001
+ "name": "get_product_details",
24002
+ "description": "\nGet detailed information about a specific product.\n\nArgs:\n product_id: The unique product identifier\n location_id: Store location ID for pricing/availability (uses preferred if not provided)\n\nReturns:\n Dictionary containing detailed product information\n"
24003
+ },
24004
+ "search_products_by_id": {
24005
+ "name": "search_products_by_id",
24006
+ "description": "\nSearch for products by their specific product ID.\n\nArgs:\n product_id: The product ID to search for\n location_id: Store location ID (uses preferred location if not provided)\n\nReturns:\n Dictionary containing matching products\n"
24007
+ },
24008
+ "add_items_to_cart": {
24009
+ "name": "add_items_to_cart",
24010
+ "description": "\nAdd a single item to the user's Kroger cart and track it locally.\n\nIf the user doesn't specifically indicate a preference for pickup or delivery,\nyou should ask them which modality they prefer before calling this tool.\n\nArgs:\n product_id: The product ID or UPC to add to cart\n quantity: Quantity to add (default: 1)\n modality: Fulfillment method - PICKUP or DELIVERY\n\nReturns:\n Dictionary confirming the item was added to cart\n"
24011
+ },
24012
+ "bulk_add_to_cart": {
24013
+ "name": "bulk_add_to_cart",
24014
+ "description": "\nAdd multiple items to the user's Kroger cart in a single operation.\n\nIf the user doesn't specifically indicate a preference for pickup or delivery,\nyou should ask them which modality they prefer before calling this tool.\n\nArgs:\n items: List of items to add. Each item should have:\n - product_id: The product ID or UPC\n - quantity: Quantity to add (default: 1)\n - modality: PICKUP or DELIVERY (default: PICKUP)\n\nReturns:\n Dictionary with results for each item\n"
24015
+ },
24016
+ "view_current_cart": {
24017
+ "name": "view_current_cart",
24018
+ "description": "\nView the current cart contents tracked locally.\n\nNote: This tool can only see items that were added via this MCP server.\nThe Kroger API does not provide permission to query the actual user cart contents.\n\nReturns:\n Dictionary containing current cart items and summary\n"
24019
+ },
24020
+ "remove_from_cart": {
24021
+ "name": "remove_from_cart",
24022
+ "description": "\nRemove an item from the local cart tracking only.\n\nIMPORTANT: This tool CANNOT remove items from the actual Kroger cart in the app/website.\nIt only updates our local tracking to stay in sync. The user must remove the item from\ntheir actual cart through the Kroger app or website themselves.\n\nUse this tool only when:\n1. The user has already removed an item from their Kroger cart through the app/website\n2. You need to update the local tracking to reflect that change\n\nArgs:\n product_id: The product ID to remove\n modality: Specific modality to remove (if None, removes all instances)\n\nReturns:\n Dictionary confirming the removal from local tracking\n"
24023
+ },
24024
+ "clear_current_cart": {
24025
+ "name": "clear_current_cart",
24026
+ "description": "\nClear all items from the local cart tracking only.\n\nIMPORTANT: This tool CANNOT remove items from the actual Kroger cart in the app/website.\nIt only clears our local tracking. The user must remove items from their actual cart\nthrough the Kroger app or website themselves.\n\nUse this tool only when:\n1. The user has already cleared their Kroger cart through the app/website\n2. You need to update the local tracking to reflect that change\n3. Or when the local tracking is out of sync with the actual cart\n\nReturns:\n Dictionary confirming the local cart tracking was cleared\n"
24027
+ },
24028
+ "mark_order_placed": {
24029
+ "name": "mark_order_placed",
24030
+ "description": "\nMark the current cart as an order that has been placed and move it to order history.\nUse this after you've completed checkout on the Kroger website/app.\n\nArgs:\n order_notes: Optional notes about the order\n\nReturns:\n Dictionary confirming the order was recorded\n"
24031
+ },
24032
+ "view_order_history": {
24033
+ "name": "view_order_history",
24034
+ "description": "\nView the history of placed orders.\n\nNote: This tool can only see orders that were explicitly marked as placed via this MCP server.\nThe Kroger API does not provide permission to query the actual order history from Kroger's systems.\n\nArgs:\n limit: Number of recent orders to show (1-50)\n\nReturns:\n Dictionary containing order history\n"
24035
+ },
24036
+ "list_chains": {
24037
+ "name": "list_chains",
24038
+ "description": "\nGet a list of all Kroger-owned chains.\n\nReturns:\n Dictionary containing chain information\n"
24039
+ },
24040
+ "get_chain_details": {
24041
+ "name": "get_chain_details",
24042
+ "description": "\nGet detailed information about a specific Kroger chain.\n\nArgs:\n chain_name: Name of the chain to get details for\n\nReturns:\n Dictionary containing chain details\n"
24043
+ },
24044
+ "check_chain_exists": {
24045
+ "name": "check_chain_exists",
24046
+ "description": "\nCheck if a chain exists in the Kroger system.\n\nArgs:\n chain_name: Name of the chain to check\n\nReturns:\n Dictionary indicating whether the chain exists\n"
24047
+ },
24048
+ "list_departments": {
24049
+ "name": "list_departments",
24050
+ "description": "\nGet a list of all available departments in Kroger stores.\n\nReturns:\n Dictionary containing department information\n"
24051
+ },
24052
+ "get_department_details": {
24053
+ "name": "get_department_details",
24054
+ "description": "\nGet detailed information about a specific department.\n\nArgs:\n department_id: The unique identifier for the department\n\nReturns:\n Dictionary containing department details\n"
24055
+ },
24056
+ "check_department_exists": {
24057
+ "name": "check_department_exists",
24058
+ "description": "\nCheck if a department exists in the Kroger system.\n\nArgs:\n department_id: The department ID to check\n\nReturns:\n Dictionary indicating whether the department exists\n"
24059
+ },
24060
+ "get_user_profile": {
24061
+ "name": "get_user_profile",
24062
+ "description": "\nGet the authenticated user's Kroger profile information.\n\nReturns:\n Dictionary containing user profile data\n"
24063
+ },
24064
+ "test_authentication": {
24065
+ "name": "test_authentication",
24066
+ "description": "\nTest if the current authentication token is valid.\n\nReturns:\n Dictionary indicating authentication status\n"
24067
+ },
24068
+ "get_authentication_info": {
24069
+ "name": "get_authentication_info",
24070
+ "description": "\nGet information about the current authentication state and token.\n\nReturns:\n Dictionary containing authentication information\n"
24071
+ },
24072
+ "force_reauthenticate": {
24073
+ "name": "force_reauthenticate",
24074
+ "description": "\nForce re-authentication by clearing the current authentication token.\nUse this if you're having authentication issues or need to log in as a different user.\n\nReturns:\n Dictionary indicating the re-authentication was initiated\n"
24075
+ },
24076
+ "get_current_datetime": {
24077
+ "name": "get_current_datetime",
24078
+ "description": "\nGet the current system date and time.\n\nThis tool is useful for comparing with cart checkout dates, order history,\nor any other time-sensitive operations.\n\nReturns:\n Dictionary containing current date and time information\n"
24079
+ },
24080
+ "start_authentication": {
24081
+ "name": "start_authentication",
24082
+ "description": "\nStart the OAuth authentication flow with Kroger.\n\nThis tool returns a URL that the user needs to open in their browser\nto authenticate with Kroger. After authorization, the user will be\nredirected to a callback URL that they need to copy and paste back.\n\nReturns:\n Dictionary with authorization URL and instructions\n"
24083
+ },
24084
+ "complete_authentication": {
24085
+ "name": "complete_authentication",
24086
+ "description": "\nComplete the OAuth flow using the redirect URL from Kroger.\n\nAfter opening the auth URL in your browser and authorizing the app,\nyou'll be redirected to a callback URL. Copy that entire URL and\npass it to this tool to complete the authentication process.\n\nArgs:\n redirect_url: The full URL from your browser after authorization\n \nReturns:\n Dictionary indicating authentication status\n"
24087
+ }
24088
+ }
21443
24089
  },
21444
24090
  "awslabs.aws-documentation-mcp-server": {
21445
24091
  "category": "other-tools-and-integrations",
21446
- "path": "other-tools-and-integrations/awslabs-aws-documentation-mcp-server.json"
24092
+ "path": "other-tools-and-integrations/awslabs-aws-documentation-mcp-server.json",
24093
+ "validated": true,
24094
+ "tools": {
24095
+ "read_documentation": {
24096
+ "name": "read_documentation",
24097
+ "description": "Fetch and convert an AWS documentation page to markdown format.\n\n## Usage\n\nThis tool retrieves the content of an AWS documentation page and converts it to markdown format.\nFor long documents, you can make multiple calls with different start_index values to retrieve\nthe entire content in chunks.\n\n## URL Requirements\n\n- Must be from the docs.aws.amazon.com domain\n- Must end with .html\n\n## Example URLs\n\n- https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html\n- https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html\n\n## Output Format\n\nThe output is formatted as markdown text with:\n- Preserved headings and structure\n- Code blocks for examples\n- Lists and tables converted to markdown format\n\n## Handling Long Documents\n\nIf the response indicates the document was truncated, you have several options:\n\n1. **Continue Reading**: Make another call with start_index set to the end of the previous response\n2. **Stop Early**: For very long documents (>30,000 characters), if you've already found the specific information needed, you can stop reading\n\nArgs:\n ctx: MCP context for logging and error handling\n url: URL of the AWS documentation page to read\n max_length: Maximum number of characters to return\n start_index: On return output starting at this character index\n\nReturns:\n Markdown content of the AWS documentation\n"
24098
+ },
24099
+ "search_documentation": {
24100
+ "name": "search_documentation",
24101
+ "description": "Search AWS documentation using the official AWS Documentation Search API.\n\n## Usage\n\nThis tool searches across all AWS documentation for pages matching your search phrase.\nUse it to find relevant documentation when you don't have a specific URL.\n\n## Search Tips\n\n- Use specific technical terms rather than general phrases\n- Include service names to narrow results (e.g., \"S3 bucket versioning\" instead of just \"versioning\")\n- Use quotes for exact phrase matching (e.g., \"AWS Lambda function URLs\")\n- Include abbreviations and alternative terms to improve results\n\n## Result Interpretation\n\nEach result includes:\n- rank_order: The relevance ranking (lower is more relevant)\n- url: The documentation page URL\n- title: The page title\n- context: A brief excerpt or summary (if available)\n\nArgs:\n ctx: MCP context for logging and error handling\n search_phrase: Search phrase to use\n limit: Maximum number of results to return\n\nReturns:\n List of search results with URLs, titles, and context snippets\n"
24102
+ },
24103
+ "recommend": {
24104
+ "name": "recommend",
24105
+ "description": "Get content recommendations for an AWS documentation page.\n\n## Usage\n\nThis tool provides recommendations for related AWS documentation pages based on a given URL.\nUse it to discover additional relevant content that might not appear in search results.\n\n## Recommendation Types\n\nThe recommendations include four categories:\n\n1. **Highly Rated**: Popular pages within the same AWS service\n2. **New**: Recently added pages within the same AWS service - useful for finding newly released features\n3. **Similar**: Pages covering similar topics to the current page\n4. **Journey**: Pages commonly viewed next by other users\n\n## When to Use\n\n- After reading a documentation page to find related content\n- When exploring a new AWS service to discover important pages\n- To find alternative explanations of complex concepts\n- To discover the most popular pages for a service\n- To find newly released information by using a service's welcome page URL and checking the **New** recommendations\n\n## Finding New Features\n\nTo find newly released information about a service:\n1. Find any page belong to that service, typically you can try the welcome page\n2. Call this tool with that URL\n3. Look specifically at the **New** recommendation type in the results\n\n## Result Interpretation\n\nEach recommendation includes:\n- url: The documentation page URL\n- title: The page title\n- context: A brief description (if available)\n\nArgs:\n ctx: MCP context for logging and error handling\n url: URL of the AWS documentation page to get recommendations for\n\nReturns:\n List of recommended pages with URLs, titles, and context\n"
24106
+ }
24107
+ }
21447
24108
  },
21448
24109
  "registry": {
21449
24110
  "category": "other-tools-and-integrations",
@@ -21473,7 +24134,14 @@
21473
24134
  },
21474
24135
  "think_mcp": {
21475
24136
  "category": "other-tools-and-integrations",
21476
- "path": "other-tools-and-integrations/think_mcp.json"
24137
+ "path": "other-tools-and-integrations/think_mcp.json",
24138
+ "validated": true,
24139
+ "tools": {
24140
+ "think": {
24141
+ "name": "think",
24142
+ "description": "Use the tool to think about something. It will not obtain new information or change the database, \nbut just append the thought to the log. Use it when complex reasoning or some cache memory is needed.\n "
24143
+ }
24144
+ }
21477
24145
  },
21478
24146
  "@thomaswawra/server-spotify": {
21479
24147
  "category": "other-tools-and-integrations",
@@ -21821,7 +24489,26 @@
21821
24489
  },
21822
24490
  "mcp-think-tool": {
21823
24491
  "category": "other-tools-and-integrations",
21824
- "path": "other-tools-and-integrations/mcp-think-tool.json"
24492
+ "path": "other-tools-and-integrations/mcp-think-tool.json",
24493
+ "validated": true,
24494
+ "tools": {
24495
+ "think": {
24496
+ "name": "think",
24497
+ "description": "Use this tool to think about something. It will not obtain new information or change anything, \nbut just append the thought to the log. Use it when complex reasoning or cache memory is needed.\n\nArgs:\n thought: A thought to think about. This can be structured reasoning, step-by-step analysis,\n policy verification, or any other mental process that helps with problem-solving.\n"
24498
+ },
24499
+ "get_thoughts": {
24500
+ "name": "get_thoughts",
24501
+ "description": "Retrieve all thoughts recorded in the current session.\n\nThis tool helps review the thinking process that has occurred so far.\n"
24502
+ },
24503
+ "clear_thoughts": {
24504
+ "name": "clear_thoughts",
24505
+ "description": "Clear all recorded thoughts from the current session.\n\nUse this to start fresh if the thinking process needs to be reset.\n"
24506
+ },
24507
+ "get_thought_stats": {
24508
+ "name": "get_thought_stats",
24509
+ "description": "Get statistics about the thoughts recorded in the current session."
24510
+ }
24511
+ }
21825
24512
  },
21826
24513
  "spotify-mcp": {
21827
24514
  "category": "other-tools-and-integrations",
@@ -22272,7 +24959,22 @@
22272
24959
  },
22273
24960
  "casual-mcp-server-words": {
22274
24961
  "category": "other-tools-and-integrations",
22275
- "path": "other-tools-and-integrations/casual-mcp-server-words.json"
24962
+ "path": "other-tools-and-integrations/casual-mcp-server-words.json",
24963
+ "validated": true,
24964
+ "tools": {
24965
+ "define": {
24966
+ "name": "define",
24967
+ "description": "Get the definition(s) of an English word."
24968
+ },
24969
+ "example_usage": {
24970
+ "name": "example_usage",
24971
+ "description": "Get example usage of a word, if available."
24972
+ },
24973
+ "synonyms": {
24974
+ "name": "synonyms",
24975
+ "description": "Get synonyms for a word, if available."
24976
+ }
24977
+ }
22276
24978
  },
22277
24979
  "mochi-flashcards": {
22278
24980
  "category": "other-tools-and-integrations",
@@ -22286,7 +24988,18 @@
22286
24988
  },
22287
24989
  "mcp-slicer": {
22288
24990
  "category": "other-tools-and-integrations",
22289
- "path": "other-tools-and-integrations/mcp-slicer.json"
24991
+ "path": "other-tools-and-integrations/mcp-slicer.json",
24992
+ "validated": true,
24993
+ "tools": {
24994
+ "list_nodes": {
24995
+ "name": "list_nodes",
24996
+ "description": "\nList MRML nodes via the Slicer Web Server API.\n\nThe filter_type parameter specifies the type of node information to retrieve.\nPossible values include \"names\" (node names), \"ids\" (node IDs), and \"properties\" (node properties).\nThe default value is \"names\".\n\nThe class_name, name, and id parameters are optional and can be used to further filter nodes.\nThe class_name parameter allows filtering nodes by class name.\nThe name parameter allows filtering nodes by name.\nThe id parameter allows filtering nodes by ID.\n\nExamples:\n- List the names of all nodes: {\"tool\": \"list_nodes\", \"arguments\": {\"filter_type\": \"names\"}}\n- List the IDs of nodes of a specific class: {\"tool\": \"list_nodes\", \"arguments\": {\"filter_type\": \"ids\", \"class_name\": \"vtkMRMLModelNode\"}}\n- List the properties of nodes with a specific name: {\"tool\": \"list_nodes\", \"arguments\": {\"filter_type\": \"properties\", \"name\": \"MyModel\"}}\n- List nodes with a specific ID: {\"tool\": \"list_nodes\", \"arguments\": {\"filter_type\": \"ids\", \"id\": \"vtkMRMLModelNode123\"}}\n\nReturns a dictionary containing node information.\nIf filter_type is \"names\" or \"ids\", the returned dictionary contains a \"nodes\" key, whose value is a list containing node names or IDs.\nExample: {\"nodes\": [\"node1\", \"node2\", ...]} or {\"nodes\": [\"id1\", \"id2\", ...]}\nIf filter_type is \"properties\", the returned dictionary contains a \"nodes\" key, whose value is a dictionary containing node properties.\nExample: {\"nodes\": {\"node1\": {\"property1\": \"value1\", \"property2\": \"value2\"}, ...}}\nIf an error occurs, a dictionary containing an \"error\" key is returned, whose value is a string describing the error.\n"
24997
+ },
24998
+ "execute_python_code": {
24999
+ "name": "execute_python_code",
25000
+ "description": "\nExecute Python code in 3D Slicer.\n\nParameters:\ncode (str): The Python code to execute.\n\nThe code parameter is a string containing the Python code to be executed in 3D Slicer's Python environment.\nThe code should be executable by Python's `exec()` function. To get return values, the code should assign the result to a variable named `__execResult`.\n\nExamples:\n- Create a sphere model: {\"tool\": \"execute_python_code\", \"arguments\": {\"code\": \"sphere = slicer.vtkMRMLModelNode(); slicer.mrmlScene.AddNode(sphere); sphere.SetName('MySphere'); __execResult = sphere.GetID()\"}}\n- Get the number of nodes in the current scene: {\"tool\": \"execute_python_code\", \"arguments\": {\"code\": \"__execResult = len(slicer.mrmlScene.GetNodes())\"}}\n- Calculate 1+1: {\"tool\": \"execute_python_code\", \"arguments\": {\"code\": \"__execResult = 1 + 1\"}}\n\nReturns:\n dict: A dictionary containing the execution result.\n\n If the code execution is successful, the dictionary will contain the following key-value pairs:\n - \"success\": True\n - \"message\": The result of the code execution. If the code assigns the result to `__execResult`, the value of `__execResult` is returned, otherwise it returns empty.\n\n If the code execution fails, the dictionary will contain the following key-value pairs:\n - \"success\": False\n - \"message\": A string containing an error message indicating the cause of the failure. The error message may come from the Slicer Web Server or the Python interpreter.\n\nExamples:\n- Successful execution: {\"success\": True, \"message\": 2} # Assuming the result of 1+1 is 2\n- Successful execution: {\"success\": True, \"message\": \"vtkMRMLScene1\"} # Assuming the created sphere id is vtkMRMLScene1\n- Python execution error: {\"success\": False, \"message\": \"Server error: name 'slicer' is not defined\"}\n- Connection error: {\"success\": False, \"message\": \"Connection error: ...\"}\n- HTTP error: {\"success\": False, \"message\": \"HTTP Error 404: Not Found\"}\n"
25001
+ }
25002
+ }
22290
25003
  },
22291
25004
  "tmf620-product-catalog-management": {
22292
25005
  "category": "other-tools-and-integrations",
@@ -22390,7 +25103,86 @@
22390
25103
  },
22391
25104
  "owl-mcp": {
22392
25105
  "category": "other-tools-and-integrations",
22393
- "path": "other-tools-and-integrations/owl-mcp.json"
25106
+ "path": "other-tools-and-integrations/owl-mcp.json",
25107
+ "validated": true,
25108
+ "tools": {
25109
+ "add_axiom": {
25110
+ "name": "add_axiom",
25111
+ "description": "\nAdd an axiom to the ontology using OWL functional syntax.\n\nArgs:\n owl_file_path: Absolute path to the OWL file\n axiom_str: String representation of the axiom in OWL functional syntax\n e.g., \"SubClassOf(:Dog :Animal)\"\n\nReturns:\n str: Success message or error\n"
25112
+ },
25113
+ "add_axioms": {
25114
+ "name": "add_axioms",
25115
+ "description": "\nAdds a list of axioms to the ontology, using OWL functional syntax.\n\nArgs:\n owl_file_path: Absolute path to the OWL file\n axiom_strs: List of string representation of the axiom in OWL functional syntax\n e.g., [\"SubClassOf(:Dog :Animal)\", ...]\n\nReturns:\n str: Success message or error\n"
25116
+ },
25117
+ "remove_axiom": {
25118
+ "name": "remove_axiom",
25119
+ "description": "\nRemove an axiom from the ontology using OWL functional syntax.\n\nArgs:\n owl_file_path: Absolute path to the OWL file\n axiom_str: String representation of the axiom in OWL functional syntax\n\nReturns:\n str: Success message or error\n"
25120
+ },
25121
+ "find_axioms": {
25122
+ "name": "find_axioms",
25123
+ "description": "\nFind axioms matching a pattern in the ontology.\n\nArgs:\n owl_file_path: Absolute path to the OWL file\n pattern: A string pattern to match against axiom strings\n (simple substring matching)\n limit: (int) Maximum number of axioms to return (default: 100)\n include_labels: If True, include human-readable labels after ## in the output\n annotation_property: Optional annotation property IRI to use for labels \n (defaults to rdfs:label)\n\nReturns:\n list[str]: List of matching axiom strings\n"
25124
+ },
25125
+ "get_all_axioms": {
25126
+ "name": "get_all_axioms",
25127
+ "description": "\nGet all axioms in the ontology as strings.\n\nArgs:\n owl_file_path: Absolute path to the OWL file\n limit: Maximum number of axioms to return (default: 100)\n include_labels: If True, include human-readable labels after ## in the output\n annotation_property: Optional annotation property IRI to use for labels \n (defaults to rdfs:label)\n\nReturns:\n list[str]: List of all axiom strings\n"
25128
+ },
25129
+ "add_prefix": {
25130
+ "name": "add_prefix",
25131
+ "description": "\nAdd a prefix mapping to the ontology.\n\nArgs:\n owl_file_path: Absolute path to the OWL file\n prefix: The prefix string (e.g., \"ex\")\n uri: The URI the prefix maps to (e.g., \"http://example.org/\")\n\nNote that usually an ontology will contain standard prefixes for rdf, rdfs, owl, xsd\n\nReturns:\n str: Success message\n"
25132
+ },
25133
+ "ontology_metadata": {
25134
+ "name": "ontology_metadata",
25135
+ "description": "\nGet metadata about the ontology.\n\nArgs:\n owl_file_path: Absolute path to the OWL file\n\nReturns:\n list[str]: List of metadata items\n"
25136
+ },
25137
+ "list_configured_ontologies": {
25138
+ "name": "list_configured_ontologies",
25139
+ "description": "\nList all ontologies defined in the configuration.\n\nReturns:\n List[OntologyConfigInfo]: List of configured ontologies\n"
25140
+ },
25141
+ "configure_ontology": {
25142
+ "name": "configure_ontology",
25143
+ "description": "\nAdd or update an ontology in the configuration.\n\nArgs:\n name: A unique name for the ontology\n path: Absolute path to the ontology file\n metadata_axioms: List of metadata axioms as strings\n readonly: Whether the ontology is read-only (default: False)\n description: Optional description\n preferred_serialization: Optional preferred serialization format\n annotation_property: Optional annotation property IRI for labels (default: rdfs:label)\n\nReturns:\n str: Success or error message\n"
25144
+ },
25145
+ "remove_ontology_config": {
25146
+ "name": "remove_ontology_config",
25147
+ "description": "\nRemove an ontology from the configuration.\n\nArgs:\n name: Name of the ontology to remove\n\nReturns:\n str: Success or error message\n"
25148
+ },
25149
+ "get_ontology_config": {
25150
+ "name": "get_ontology_config",
25151
+ "description": "\nGet configuration for a specific ontology.\n\nArgs:\n name: Name of the ontology\n\nReturns:\n Optional[OntologyConfigInfo]: The ontology configuration or None if not found\n"
25152
+ },
25153
+ "register_ontology_in_config": {
25154
+ "name": "register_ontology_in_config",
25155
+ "description": "\nRegister an existing ontology in the configuration system.\n\nThis allows you to save preferences and metadata for frequently used ontologies,\nmaking them accessible by name in future sessions.\n\nArgs:\n owl_file_path: Absolute path to the ontology file\n name: Optional custom name for the ontology (defaults to filename without extension)\n readonly: Whether the ontology should be read-only (defaults to current setting if loaded)\n description: Optional description for the ontology\n preferred_serialization: Optional preferred serialization format\n annotation_property: Optional annotation property IRI for labels (defaults to current setting if loaded)\n\nReturns:\n str: Name of the registered ontology\n"
25156
+ },
25157
+ "load_and_register_ontology": {
25158
+ "name": "load_and_register_ontology",
25159
+ "description": "\nLoad an ontology and register it in the configuration system in one step.\n\nArgs:\n owl_file_path: Absolute path to the ontology file\n name: Optional name for the ontology (defaults to filename stem)\n readonly: Whether the ontology should be read-only (default: False)\n create_if_not_exists: If True, create the file if it doesn't exist (default: True)\n description: Optional description of the ontology\n preferred_serialization: Optional preferred serialization format\n metadata_axioms: Optional list of metadata axioms to add to the ontology\n annotation_property: Optional annotation property IRI for labels (default: rdfs:label)\n \nReturns:\n str: Success message\n"
25160
+ },
25161
+ "add_axiom_by_name": {
25162
+ "name": "add_axiom_by_name",
25163
+ "description": "\nAdd an axiom to a configured ontology using its name.\n\nArgs:\n ontology_name: Name of the ontology as defined in configuration\n axiom_str: String representation of the axiom in OWL functional syntax\n\nReturns:\n str: Success message or error\n"
25164
+ },
25165
+ "remove_axiom_by_name": {
25166
+ "name": "remove_axiom_by_name",
25167
+ "description": "\nRemove an axiom from a configured ontology using its name.\n\nArgs:\n ontology_name: Name of the ontology as defined in configuration\n axiom_str: String representation of the axiom in OWL functional syntax\n\nReturns:\n str: Success message or error\n"
25168
+ },
25169
+ "find_axioms_by_name": {
25170
+ "name": "find_axioms_by_name",
25171
+ "description": "\nFind axioms matching a pattern in a configured ontology using its name.\n\nArgs:\n ontology_name: Name of the ontology as defined in configuration\n pattern: A string pattern to match against axiom strings\n limit: Maximum number of axioms to return (default: 100)\n include_labels: If True, include human-readable labels after ## in the output\n annotation_property: Optional annotation property IRI to use for labels \n (defaults to rdfs:label)\n\nReturns:\n list[str]: List of matching axiom strings or empty list if ontology not found\n"
25172
+ },
25173
+ "add_prefix_by_name": {
25174
+ "name": "add_prefix_by_name",
25175
+ "description": "\nAdd a prefix mapping to a configured ontology using its name.\n\nArgs:\n ontology_name: Name of the ontology as defined in configuration\n prefix: The prefix string (e.g., \"ex:\")\n uri: The URI the prefix maps to (e.g., \"http://example.org/\")\n\nReturns:\n str: Success message or error\n"
25176
+ },
25177
+ "get_labels_for_iri": {
25178
+ "name": "get_labels_for_iri",
25179
+ "description": "\nGet all labels for a given IRI.\n\nArgs:\n owl_file_path: Absolute path to the OWL file\n iri: The IRI to get labels for (as a string)\n annotation_property: Optional annotation property IRI to use for labels\n (defaults to rdfs:label if None)\n\nReturns:\n List[str]: List of label strings\n"
25180
+ },
25181
+ "get_labels_for_iri_by_name": {
25182
+ "name": "get_labels_for_iri_by_name",
25183
+ "description": "\nGet all labels for a given IRI in a configured ontology.\n\nArgs:\n ontology_name: Name of the ontology as defined in configuration\n iri: The IRI to get labels for (as a string)\n annotation_property: Optional annotation property IRI to use for labels\n (defaults to rdfs:label if None)\n\nReturns:\n List[str]: List of label strings or empty list if ontology not found\n"
25184
+ }
25185
+ }
22394
25186
  },
22395
25187
  "just-prompt-(multi-llm-provider)": {
22396
25188
  "category": "other-tools-and-integrations",
@@ -22621,7 +25413,22 @@
22621
25413
  },
22622
25414
  "mcp-ollama": {
22623
25415
  "category": "other-tools-and-integrations",
22624
- "path": "other-tools-and-integrations/mcp-ollama.json"
25416
+ "path": "other-tools-and-integrations/mcp-ollama.json",
25417
+ "validated": true,
25418
+ "tools": {
25419
+ "list_models": {
25420
+ "name": "list_models",
25421
+ "description": "List all downloaded Ollama models"
25422
+ },
25423
+ "show_model": {
25424
+ "name": "show_model",
25425
+ "description": "Get detailed information about a specific model\n\nArgs:\n name: Name of the model to show information about\n"
25426
+ },
25427
+ "ask_model": {
25428
+ "name": "ask_model",
25429
+ "description": "Ask a question to a specific Ollama model\n\nArgs:\n model: Name of the model to use (e.g., 'llama2')\n question: The question to ask the model\n"
25430
+ }
25431
+ }
22625
25432
  },
22626
25433
  "dust": {
22627
25434
  "category": "other-tools-and-integrations",
@@ -22756,7 +25563,14 @@
22756
25563
  },
22757
25564
  "mcp-timeserver": {
22758
25565
  "category": "other-tools-and-integrations",
22759
- "path": "other-tools-and-integrations/mcp-timeserver.json"
25566
+ "path": "other-tools-and-integrations/mcp-timeserver.json",
25567
+ "validated": true,
25568
+ "tools": {
25569
+ "get-current-time": {
25570
+ "name": "get-current-time",
25571
+ "description": "Get the current time in the configured local timezone"
25572
+ }
25573
+ }
22760
25574
  },
22761
25575
  "@ibraheem4/eventbrite-mcp": {
22762
25576
  "category": "other-tools-and-integrations",
@@ -23284,7 +26098,30 @@
23284
26098
  },
23285
26099
  "ygg-torrent-mcp": {
23286
26100
  "category": "other-tools-and-integrations",
23287
- "path": "other-tools-and-integrations/ygg-torrent-mcp.json"
26101
+ "path": "other-tools-and-integrations/ygg-torrent-mcp.json",
26102
+ "validated": true,
26103
+ "tools": {
26104
+ "prepare_search_query": {
26105
+ "name": "prepare_search_query",
26106
+ "description": "Always use this tool to prepare a query for `search_torrents`.\nProperly split the user's intention and the actual search query (space-separated keywords) to avoid unfruitful results.\n# Instructions:\n- `user_intent`: Must reflect user's overall intention (e.g., \"last episode of Breaking Bad\", \"season 5 of Breaking Bad\", \"complete series of Breaking Bad\").\n- `search_query`: The actual search terms, consisting of lowercase, space-separated keywords. Do not add generic terms (e.g., \"movie\", \"series\"), common prefixes (e.g., \"the\", \"a\", \"and\"), or extra information (e.g., episode name, resolution, codec). For TV series, use `sXXeYY` for specific episodes (e.g., \"breaking bad s05e16\"), `sXX` for complete seasons (e.g., \"breaking bad s05\") and only the show name for complete series (e.g., \"breaking bad\").\n- For non-French language, if requested, just add 'multi' to the query\n"
26107
+ },
26108
+ "search_torrents": {
26109
+ "name": "search_torrents",
26110
+ "description": "Searches for torrents on YggTorrent using a query (space-separated keywords) and returns a list of torrent results.\n# Instructions:\n- To be called after `prepare_search_query`.\n- Provide **only** `query`, except if user mentions other parameters.\n- Prioritize results using the following hierarchy: is 1080p > smaller file size > is x265 > max seeders+leechers.\n- Recommend up to 3 of the best results, **always** providing filename, file size, seeders/leechers, date, source, and an ultra concise reason.\n- If the search results are too broad, suggest the user provide more specific keywords.\n- Keep recommendations and suggestions concise."
26111
+ },
26112
+ "get_torrent_details": {
26113
+ "name": "get_torrent_details",
26114
+ "description": "Get details from YggTorrent about a specific torrent by id."
26115
+ },
26116
+ "get_magnet_link": {
26117
+ "name": "get_magnet_link",
26118
+ "description": "Get the magnet link from YggTorrent for a specific torrent by id."
26119
+ },
26120
+ "download_torrent_file": {
26121
+ "name": "download_torrent_file",
26122
+ "description": "Download the torrent file from YggTorrent for a specific torrent by id."
26123
+ }
26124
+ }
23288
26125
  },
23289
26126
  "ntlk-mcp-002": {
23290
26127
  "category": "other-tools-and-integrations",
@@ -23351,7 +26188,18 @@
23351
26188
  },
23352
26189
  "interactive-feedback": {
23353
26190
  "category": "other-tools-and-integrations",
23354
- "path": "other-tools-and-integrations/interactive-feedback.json"
26191
+ "path": "other-tools-and-integrations/interactive-feedback.json",
26192
+ "validated": true,
26193
+ "tools": {
26194
+ "interactive_feedback": {
26195
+ "name": "interactive_feedback",
26196
+ "description": "\nRequests user input via GUI after AI displays complete response in chat.\n\nUSAGE FLOW:\n1. AI displays complete response in chat dialog\n2. AI calls this tool to collect user input\n3. Tool returns user feedback only\n\nThis tool collects user input, not for displaying AI responses.\nAI responses must appear in chat dialog before calling this tool.\n\nPARAMETER REQUIREMENTS:\n- AI MUST provide BOTH 'message' and 'full_response' parameters\n- Both parameters cannot be empty or whitespace-only\n- MCP service will automatically select which content to display based on user's display_mode setting\n\nUSAGE PATTERN:\n\n# Step 1: AI displays complete response in chat\n# Step 2: AI calls tool with BOTH parameters\ninteractive_feedback(\n message=\"你希望我实现这些更改吗?\", # Required: concise question\n full_response=\"我分析了你的代码,发现了3个问题...\", # Required: complete response\n predefined_options=[\"修复方案A\", \"修复方案B\", \"让我想想\"]\n)\n\nNote: MCP service automatically selects appropriate content based on user's display mode configuration.\n"
26197
+ },
26198
+ "optimize_user_input": {
26199
+ "name": "optimize_user_input",
26200
+ "description": "\n使用配置的 LLM API 来优化或强化用户输入的文本。\n\n此功能可以帮助用户将口语化的、可能存在歧义的输入,转化为更结构化、\n更清晰、更便于 AI 模型理解的文本。\n\nArgs:\n original_text: 用户的原始输入文本\n mode: 优化模式\n - 'optimize': 一键优化,使用预设的通用优化指令\n - 'reinforce': 提示词强化,使用用户自定义的强化指令\n reinforcement_prompt: 在 'reinforce' 模式下用户的自定义指令\n\nReturns:\n str: 优化后的文本或错误信息\n"
26201
+ }
26202
+ }
23355
26203
  },
23356
26204
  "websocket-enhancer": {
23357
26205
  "category": "other-tools-and-integrations",
@@ -23375,7 +26223,42 @@
23375
26223
  },
23376
26224
  "anki-mcp": {
23377
26225
  "category": "other-tools-and-integrations",
23378
- "path": "other-tools-and-integrations/anki-mcp.json"
26226
+ "path": "other-tools-and-integrations/anki-mcp.json",
26227
+ "validated": true,
26228
+ "tools": {
26229
+ "add-notes": {
26230
+ "name": "add-notes",
26231
+ "description": "Add one or more notes to Anki"
26232
+ },
26233
+ "check-connection": {
26234
+ "name": "check-connection",
26235
+ "description": "Check connection to Anki"
26236
+ },
26237
+ "list-decks": {
26238
+ "name": "list-decks",
26239
+ "description": "List all available decks in Anki"
26240
+ },
26241
+ "get-cards-reviewed": {
26242
+ "name": "get-cards-reviewed",
26243
+ "description": "Get the number of cards reviewed by day"
26244
+ },
26245
+ "list-models": {
26246
+ "name": "list-models",
26247
+ "description": "List all available note models in Anki"
26248
+ },
26249
+ "get-model-fields": {
26250
+ "name": "get-model-fields",
26251
+ "description": "Get all field names and descriptions for a specific Anki note model"
26252
+ },
26253
+ "find-notes": {
26254
+ "name": "find-notes",
26255
+ "description": "Find notes matching a query in Anki"
26256
+ },
26257
+ "update-notes": {
26258
+ "name": "update-notes",
26259
+ "description": "Update one or more existing notes in Anki"
26260
+ }
26261
+ }
23379
26262
  },
23380
26263
  "agentrpc": {
23381
26264
  "category": "other-tools-and-integrations",
@@ -23401,7 +26284,14 @@
23401
26284
  },
23402
26285
  "mcp-sleep": {
23403
26286
  "category": "other-tools-and-integrations",
23404
- "path": "other-tools-and-integrations/mcp-sleep.json"
26287
+ "path": "other-tools-and-integrations/mcp-sleep.json",
26288
+ "validated": true,
26289
+ "tools": {
26290
+ "sleep": {
26291
+ "name": "sleep",
26292
+ "description": "If you need to wait for a few seconds to continue with the task you are performing ."
26293
+ }
26294
+ }
23405
26295
  },
23406
26296
  "sound-effects": {
23407
26297
  "category": "other-tools-and-integrations",
@@ -23554,7 +26444,50 @@
23554
26444
  },
23555
26445
  "sherlock-mcp": {
23556
26446
  "category": "other-tools-and-integrations",
23557
- "path": "other-tools-and-integrations/sherlock-mcp.json"
26447
+ "path": "other-tools-and-integrations/sherlock-mcp.json",
26448
+ "validated": true,
26449
+ "tools": {
26450
+ "search": {
26451
+ "name": "search",
26452
+ "description": "\nSearch for available domains matching the query.\nReturns search results with available/unavailable domains, their prices in USD cents, and a search ID needed for purchase requests.\nThe query can be a full domain name with or without the TLD but not subdomains or text.\n\nValid queries: \n - \"example\"\n - \"example.com\" \n - \"my-domain\"\n\nInvalid queries:\n - \"www.example.com\" # no subdomains\n - \"this is a search\" # no spaces\n - \"sub.domain.com\" # no subdomains\n"
26453
+ },
26454
+ "claim_account": {
26455
+ "name": "claim_account",
26456
+ "description": "\nLinks an email address to an AI agent's account for web interface access and account recovery.\n\nImportant notes:\n- Only accounts without an existing email can be linked\n- Each email can only be linked to one account\n- This method is rarely needed since emails are also set during domain registration\n"
26457
+ },
26458
+ "set_contact_information": {
26459
+ "name": "set_contact_information",
26460
+ "description": "\nSet the contact information that will be used for domain purchases and ICANN registration.\nContact information must be set before attempting any domain purchases.\n\nAll fields are required:\n first_name: First name\n last_name: Last name\n email: Email address\n address: Street address\n city: City\n state: Two-letter state code for US/Canada (e.g., 'CA', 'NY') or province name (e.g., 'Madrid')\n postal_code: Postal code\n country: Two-letter country code ('US', 'ES', 'FR')\n"
26461
+ },
26462
+ "get_contact_information": {
26463
+ "name": "get_contact_information",
26464
+ "description": "\nRetrieve the currently configured contact information that will be used for domain purchases and ICANN registration.\n"
26465
+ },
26466
+ "get_purchase_offers": {
26467
+ "name": "get_purchase_offers",
26468
+ "description": "\nRequest available payment options for a domain.\nThis method returns an L402 offer, which includes details such as offer_id, amount, currency, and more.\nThe returned offer can be processed by any tool supporting L402 offers.\nThe TLD .ai mandates a minimum registration and renewal period of two years. So inform the user that they need to purchase a 2 year package when they request a .ai domain.\n\nThe L402 offer structure:\n{\n 'offers': [\n {\n 'offer_id': 'example_offer_id', # String identifier for the offer\n 'amount': 100, # Numeric cost value in USD cents\n 'currency': 'usd', # Currency code\n 'description': 'Example offer', # Text description\n 'title': 'Example Package' # Title of the package\n }\n ],\n 'payment_context_token': 'example_token', # Payment context token\n 'payment_request_url': 'https://api.example.com/payment-request', # Payment URL\n 'version': '0.2.2' # API version\n}\n\nsid: Search ID from a previous search request\ndomain: Domain name to purchase from the search results related to `sid`\n"
26469
+ },
26470
+ "domains": {
26471
+ "name": "domains",
26472
+ "description": "\nList domains owned by the authenticated user.\nEach domain object contains:\n id (str): Unique domain identifier (domain_id in other methods)\n domain_name (str): The registered domain name\n created_at (str): ISO timestamp of domain creation\n expires_at (str): ISO timestamp of domain expiration\n auto_renew (bool): Whether domain is set to auto-renew\n locked (bool): Domain transfer lock status\n private (bool): WHOIS privacy protection status\n nameservers (list): List of nameserver hostnames\n status (str): Domain status (e.g. 'active')\n"
26473
+ },
26474
+ "dns_records": {
26475
+ "name": "dns_records",
26476
+ "description": "\nGet DNS records for a domain.\n\ndomain_id: Domain UUID (e.g: 'd1234567-89ab-cdef-0123-456789abcdef')\nEach DNS record contains:\n id (str): Unique record identifier\n type (str): DNS record type (e.g. 'A', 'CNAME', 'MX', 'TXT')\n name (str): DNS record name\n value (str): DNS record value\n ttl (int): Time to live in seconds\n"
26477
+ },
26478
+ "create_dns": {
26479
+ "name": "create_dns",
26480
+ "description": "\nCreate a new DNS record for a domain.\n\ndomain_id: Domain UUID (e.g., 'd1234567-89ab-cdef-0123-456789abcdef')\ntype: DNS record type ('A', 'AAAA', 'CNAME', 'MX', 'TXT', etc.)\nname: Subdomain or record name (e.g., 'www' creates www.yourdomain.com)\nvalue: Record value (e.g., IP address for A records, domain for CNAME)\nttl: Time To Live in seconds (default: 3600)\n"
26481
+ },
26482
+ "update_dns": {
26483
+ "name": "update_dns",
26484
+ "description": "\nUpdate an existing DNS record for a domain.\n\nNOTE: Updating a record will change its record id.\ndomain_id: Domain UUID (e.g., 'd1234567-89ab-cdef-0123-456789abcdef')\nrecord_id: DNS record UUID to update\ntype: DNS record type ('A', 'AAAA', 'CNAME', 'MX', 'TXT', etc.)\nname: Subdomain or record name (e.g., 'www' for www.yourdomain.com)\nvalue: New record value (e.g., IP address for A records)\nttl: Time To Live in seconds (default: 3600)\n"
26485
+ },
26486
+ "delete_dns": {
26487
+ "name": "delete_dns",
26488
+ "description": "\nDelete a DNS record for a domain.\n\ndomain_id: Domain UUID (e.g., 'd1234567-89ab-cdef-0123-456789abcdef')\nrecord_id: DNS record ID to delete\n"
26489
+ }
26490
+ }
23558
26491
  },
23559
26492
  "grpc-bridge": {
23560
26493
  "category": "other-tools-and-integrations",
@@ -23806,7 +26739,14 @@
23806
26739
  },
23807
26740
  "mcp-datetime": {
23808
26741
  "category": "other-tools-and-integrations",
23809
- "path": "other-tools-and-integrations/mcp-datetime.json"
26742
+ "path": "other-tools-and-integrations/mcp-datetime.json",
26743
+ "validated": true,
26744
+ "tools": {
26745
+ "get_datetime": {
26746
+ "name": "get_datetime",
26747
+ "description": "Get current date and time in various formats"
26748
+ }
26749
+ }
23810
26750
  },
23811
26751
  "needle": {
23812
26752
  "category": "other-tools-and-integrations",
@@ -24058,12 +26998,6 @@
24058
26998
  "validated": false,
24059
26999
  "tools": {}
24060
27000
  },
24061
- "mixpanel-analytics": {
24062
- "category": "uncategorized",
24063
- "path": "uncategorized/mixpanel-analytics.json",
24064
- "validated": false,
24065
- "tools": {}
24066
- },
24067
27001
  "@mshaaban0/contentful-delivery-mcp-server": {
24068
27002
  "category": "uncategorized",
24069
27003
  "path": "uncategorized/mshaaban0-contentful-delivery-mcp-server.json",
@@ -42595,7 +45529,38 @@
42595
45529
  },
42596
45530
  "random-number-mcp": {
42597
45531
  "category": "other-tools-and-integrations",
42598
- "path": "other-tools-and-integrations/random-number-mcp.json"
45532
+ "path": "other-tools-and-integrations/random-number-mcp.json",
45533
+ "validated": true,
45534
+ "tools": {
45535
+ "random_int": {
45536
+ "name": "random_int",
45537
+ "description": "Generate a random integer between low and high (inclusive).\n\nArgs:\n low: Lower bound (inclusive)\n high: Upper bound (inclusive)\n\nReturns:\n Random integer between low and high\n"
45538
+ },
45539
+ "random_float": {
45540
+ "name": "random_float",
45541
+ "description": "Generate a random float between low and high.\n\nArgs:\n low: Lower bound (default 0.0)\n high: Upper bound (default 1.0)\n\nReturns:\n Random float between low and high\n"
45542
+ },
45543
+ "random_choices": {
45544
+ "name": "random_choices",
45545
+ "description": "Choose k items from population with replacement, optionally weighted.\n\nArgs:\n population: List of items to choose from\n k: Number of items to choose (default 1)\n weights: Optional weights for each item (default None for equal weights)\n\nReturns:\n List of k chosen items\n"
45546
+ },
45547
+ "random_shuffle": {
45548
+ "name": "random_shuffle",
45549
+ "description": "Return a new list with items in random order.\n\nArgs:\n items: List of items to shuffle\n\nReturns:\n New list with items in random order\n"
45550
+ },
45551
+ "random_sample": {
45552
+ "name": "random_sample",
45553
+ "description": "Choose k unique items from population without replacement.\n\nArgs:\n population: List of items to choose from\n k: Number of items to choose\n\nReturns:\n List of k unique chosen items\n"
45554
+ },
45555
+ "secure_token_hex": {
45556
+ "name": "secure_token_hex",
45557
+ "description": "Generate a secure random hex token.\n\nArgs:\n nbytes: Number of random bytes to generate (default 32)\n\nReturns:\n Hex string containing 2*nbytes characters\n"
45558
+ },
45559
+ "secure_random_int": {
45560
+ "name": "secure_random_int",
45561
+ "description": "Generate a secure random integer below upper_bound.\n\nArgs:\n upper_bound: Upper bound (exclusive)\n\nReturns:\n Random integer in range [0, upper_bound)\n"
45562
+ }
45563
+ }
42599
45564
  },
42600
45565
  "my-mcp-server": {
42601
45566
  "category": "other-tools-and-integrations",
@@ -43527,7 +46492,14 @@
43527
46492
  },
43528
46493
  "orly-mcp": {
43529
46494
  "category": "other-tools-and-integrations",
43530
- "path": "other-tools-and-integrations/orly-mcp.json"
46495
+ "path": "other-tools-and-integrations/orly-mcp.json",
46496
+ "validated": true,
46497
+ "tools": {
46498
+ "generate_orly_cover": {
46499
+ "name": "generate_orly_cover",
46500
+ "description": "Generate an O'RLY? book cover image.\n \n This tool creates a parody book cover in the style of O'Reilly books with custom title, subtitle, author, and styling options.\n The generated image will be displayed directly in the chat.\n\n Args:\n title (str): The main title for the book cover\n subtitle (str): The subtitle text (appears at the top)\n author (str): The author name (appears at the bottom right)\n image_code (str, optional): Image code 1-40 for the animal/object on the cover. Defaults to random.\n theme (str, optional): Color theme 0-16. Defaults to random.\n guide_text_placement (str, optional): Where to place \"guide\" text - 'top_left', 'top_right', 'bottom_left', 'bottom_right'. Defaults to 'bottom_right'.\n guide_text (str, optional): The guide text to display. Defaults to 'The Definitive Guide' As often as possible, try not to just use \"The Definitive Guide\" but something more creative.\n\n Returns:\n Image: The generated O'RLY? book cover image that will be displayed in chat.\n "
46501
+ }
46502
+ }
43531
46503
  },
43532
46504
  "image-dimensions": {
43533
46505
  "category": "other-tools-and-integrations",
@@ -44108,11 +47080,36 @@
44108
47080
  "validated": false,
44109
47081
  "tools": {}
44110
47082
  },
44111
- "@mcp-postgres-server": {
47083
+ "mcp-postgres-server": {
44112
47084
  "category": "databases",
44113
47085
  "path": "databases/mcp-postgres-server.json",
44114
- "validated": false,
44115
- "tools": {}
47086
+ "validated": true,
47087
+ "tools": {
47088
+ "connect_db": {
47089
+ "name": "connect_db",
47090
+ "description": "Connect to PostgreSQL database. NOTE: Default connection exists - only use when requested or if other commands fail"
47091
+ },
47092
+ "query": {
47093
+ "name": "query",
47094
+ "description": "Execute a SELECT query"
47095
+ },
47096
+ "execute": {
47097
+ "name": "execute",
47098
+ "description": "Execute an INSERT, UPDATE, or DELETE query"
47099
+ },
47100
+ "list_schemas": {
47101
+ "name": "list_schemas",
47102
+ "description": "List all schemas in the database"
47103
+ },
47104
+ "list_tables": {
47105
+ "name": "list_tables",
47106
+ "description": "List tables in the database"
47107
+ },
47108
+ "describe_table": {
47109
+ "name": "describe_table",
47110
+ "description": "Get table structure"
47111
+ }
47112
+ }
44116
47113
  },
44117
47114
  "@mcp-mongodb-atlas": {
44118
47115
  "category": "databases",
@@ -44217,9 +47214,28 @@
44217
47214
  }
44218
47215
  }
44219
47216
  },
44220
- "mcp_12306": {
47217
+ "train_12306": {
44221
47218
  "category": "travel-transportation",
44222
- "path": "travel-transportation/py-train-12306.json"
47219
+ "path": "travel-transportation/py-train-12306.json",
47220
+ "validated": true,
47221
+ "tools": {
47222
+ "query_tickets": {
47223
+ "name": "query_tickets",
47224
+ "description": "查询火车票信息,只需要传入出发车站名、到达车站名、出发日期、乘客类型,如: 北京, 汉口, 2025-07-15, ADULT"
47225
+ },
47226
+ "query_train_info": {
47227
+ "name": "query_train_info",
47228
+ "description": "查询火车车次信息,包括时刻表、途径站、停靠时间等信息"
47229
+ },
47230
+ "query_train_price": {
47231
+ "name": "query_train_price",
47232
+ "description": "查询火车的车票价格,需要出发车站名,到达车站名,出发日期"
47233
+ },
47234
+ "get_station_code": {
47235
+ "name": "get_station_code",
47236
+ "description": "获取车站中文名的code(代号/代码)"
47237
+ }
47238
+ }
44223
47239
  },
44224
47240
  "mcp-12306": {
44225
47241
  "category": "travel-transportation",
@@ -44228,5 +47244,315 @@
44228
47244
  "mcp-server-12306": {
44229
47245
  "category": "travel-transportation",
44230
47246
  "path": "travel-transportation/py-12306-mcp-server.json"
47247
+ },
47248
+ "mixpanel-mcp-server": {
47249
+ "category": "uncategorized",
47250
+ "path": "uncategorized/mixpanel-analytics.json",
47251
+ "validated": true,
47252
+ "tools": {
47253
+ "mixpanel_track_event": {
47254
+ "name": "mixpanel_track_event",
47255
+ "description": "Track a custom event in Mixpanel"
47256
+ },
47257
+ "mixpanel_track_pageview": {
47258
+ "name": "mixpanel_track_pageview",
47259
+ "description": "Track a page view event in Mixpanel"
47260
+ },
47261
+ "mixpanel_track_signup": {
47262
+ "name": "mixpanel_track_signup",
47263
+ "description": "Track a signup event and create a user profile in Mixpanel"
47264
+ },
47265
+ "mixpanel_set_user_profile": {
47266
+ "name": "mixpanel_set_user_profile",
47267
+ "description": "Update a user's profile properties in Mixpanel"
47268
+ }
47269
+ }
47270
+ },
47271
+ "discord-mcp": {
47272
+ "category": "communication",
47273
+ "path": "communication/discord-mcp.json",
47274
+ "validated": true,
47275
+ "tools": {
47276
+ "discord_send_message": {
47277
+ "name": "discord_send_message",
47278
+ "description": "Send a message to a Discord channel, optionally with up to 10 files"
47279
+ },
47280
+ "discord_edit_message": {
47281
+ "name": "discord_edit_message",
47282
+ "description": "Edit a previously sent message"
47283
+ },
47284
+ "discord_delete_message": {
47285
+ "name": "discord_delete_message",
47286
+ "description": "Delete a message"
47287
+ },
47288
+ "discord_add_reaction": {
47289
+ "name": "discord_add_reaction",
47290
+ "description": "Add a reaction to a message"
47291
+ },
47292
+ "discord_remove_reaction": {
47293
+ "name": "discord_remove_reaction",
47294
+ "description": "Remove a reaction from a message"
47295
+ },
47296
+ "discord_get_message_history": {
47297
+ "name": "discord_get_message_history",
47298
+ "description": "Get message history from a Discord channel with optional filtering"
47299
+ },
47300
+ "discord_search_messages": {
47301
+ "name": "discord_search_messages",
47302
+ "description": "Search for messages in a Discord channel with text query and filters"
47303
+ },
47304
+ "discord_get_message": {
47305
+ "name": "discord_get_message",
47306
+ "description": "Get a specific message by ID with full attachment details"
47307
+ },
47308
+ "discord_list_attachments": {
47309
+ "name": "discord_list_attachments",
47310
+ "description": "List all attachments in a Discord channel from recent messages"
47311
+ },
47312
+ "discord_download_attachment": {
47313
+ "name": "discord_download_attachment",
47314
+ "description": "Download a Discord attachment and return it as MCP file reference"
47315
+ },
47316
+ "discord_cleanup_download": {
47317
+ "name": "discord_cleanup_download",
47318
+ "description": "Clean up a previously downloaded Discord attachment file"
47319
+ },
47320
+ "discord_get_channel": {
47321
+ "name": "discord_get_channel",
47322
+ "description": "Get information about a Discord channel"
47323
+ },
47324
+ "discord_get_dm_channels": {
47325
+ "name": "discord_get_dm_channels",
47326
+ "description": "Get list of DM channels for the current user"
47327
+ },
47328
+ "discord_create_dm": {
47329
+ "name": "discord_create_dm",
47330
+ "description": "Create or get existing DM channel with a user"
47331
+ },
47332
+ "discord_get_friends": {
47333
+ "name": "discord_get_friends",
47334
+ "description": "Get list of friends for the current user"
47335
+ },
47336
+ "discord_add_friend": {
47337
+ "name": "discord_add_friend",
47338
+ "description": "Send a friend request to a user"
47339
+ },
47340
+ "discord_remove_friend": {
47341
+ "name": "discord_remove_friend",
47342
+ "description": "Remove a friend or cancel a friend request"
47343
+ },
47344
+ "discord_update_presence": {
47345
+ "name": "discord_update_presence",
47346
+ "description": "Update your Discord presence/status"
47347
+ },
47348
+ "discord_clear_presence": {
47349
+ "name": "discord_clear_presence",
47350
+ "description": "Clear your Discord presence/activity"
47351
+ }
47352
+ }
47353
+ },
47354
+ "discord-mcp-server": {
47355
+ "category": "communication",
47356
+ "path": "communication/discord-mcp-server.json",
47357
+ "validated": false,
47358
+ "tools": {}
47359
+ },
47360
+ "mcp-google-analytics": {
47361
+ "category": "data-platforms",
47362
+ "path": "data-platforms/mcp-google-analytics.json",
47363
+ "validated": true,
47364
+ "tools": {
47365
+ "run_report": {
47366
+ "name": "run_report",
47367
+ "description": "\nRun a basic Google Analytics report with specified metrics and dimensions.\n\nArgs:\n metrics: List of metrics to include (e.g., ['activeUsers', 'sessions'])\n dimensions: Optional list of dimensions (e.g., ['date', 'deviceCategory'])\n date_range_start: Start date in YYYY-MM-DD format or NdaysAgo format (default: 7daysAgo)\n date_range_end: End date in YYYY-MM-DD format or 'today' (default: today)\n row_limit: Maximum number of rows to return (default: 10)\n"
47368
+ },
47369
+ "get_accounts": {
47370
+ "name": "get_accounts",
47371
+ "description": "\nGet a list of all Google Analytics accounts that the authenticated user has access to.\n"
47372
+ },
47373
+ "get_properties": {
47374
+ "name": "get_properties",
47375
+ "description": "\nGet a list of all properties within a Google Analytics account.\n\nArgs:\n account_id: The Google Analytics account ID\n"
47376
+ },
47377
+ "get_metadata": {
47378
+ "name": "get_metadata",
47379
+ "description": "\nGet metadata about available metrics and dimensions in Google Analytics.\n"
47380
+ }
47381
+ }
47382
+ },
47383
+ "@toolsdk.ai/google-analytics-mcp": {
47384
+ "category": "marketing",
47385
+ "path": "marketing/google-analytics-mcp-server.json",
47386
+ "validated": false,
47387
+ "tools": {}
47388
+ },
47389
+ "@toolsdk.ai/mixpanel-mcp-server": {
47390
+ "category": "uncategorized",
47391
+ "path": "uncategorized/mixpanel-analytics-toolsdk.json",
47392
+ "validated": true,
47393
+ "tools": {
47394
+ "mixpanel_track_event": {
47395
+ "name": "mixpanel_track_event",
47396
+ "description": "Track a custom event in Mixpanel"
47397
+ },
47398
+ "mixpanel_track_pageview": {
47399
+ "name": "mixpanel_track_pageview",
47400
+ "description": "Track a page view event in Mixpanel"
47401
+ },
47402
+ "mixpanel_track_signup": {
47403
+ "name": "mixpanel_track_signup",
47404
+ "description": "Track a signup event and create a user profile in Mixpanel"
47405
+ },
47406
+ "mixpanel_set_user_profile": {
47407
+ "name": "mixpanel_set_user_profile",
47408
+ "description": "Update a user's profile properties in Mixpanel"
47409
+ }
47410
+ }
47411
+ },
47412
+ "@executeautomation/playwright-mcp-server": {
47413
+ "category": "browser-automation",
47414
+ "path": "browser-automation/playwright-mcp-server.json",
47415
+ "validated": true,
47416
+ "tools": {
47417
+ "start_codegen_session": {
47418
+ "name": "start_codegen_session",
47419
+ "description": "Start a new code generation session to record Playwright actions"
47420
+ },
47421
+ "end_codegen_session": {
47422
+ "name": "end_codegen_session",
47423
+ "description": "End a code generation session and generate the test file"
47424
+ },
47425
+ "get_codegen_session": {
47426
+ "name": "get_codegen_session",
47427
+ "description": "Get information about a code generation session"
47428
+ },
47429
+ "clear_codegen_session": {
47430
+ "name": "clear_codegen_session",
47431
+ "description": "Clear a code generation session without generating a test"
47432
+ },
47433
+ "playwright_navigate": {
47434
+ "name": "playwright_navigate",
47435
+ "description": "Navigate to a URL"
47436
+ },
47437
+ "playwright_screenshot": {
47438
+ "name": "playwright_screenshot",
47439
+ "description": "Take a screenshot of the current page or a specific element"
47440
+ },
47441
+ "playwright_click": {
47442
+ "name": "playwright_click",
47443
+ "description": "Click an element on the page"
47444
+ },
47445
+ "playwright_iframe_click": {
47446
+ "name": "playwright_iframe_click",
47447
+ "description": "Click an element in an iframe on the page"
47448
+ },
47449
+ "playwright_iframe_fill": {
47450
+ "name": "playwright_iframe_fill",
47451
+ "description": "Fill an element in an iframe on the page"
47452
+ },
47453
+ "playwright_fill": {
47454
+ "name": "playwright_fill",
47455
+ "description": "fill out an input field"
47456
+ },
47457
+ "playwright_select": {
47458
+ "name": "playwright_select",
47459
+ "description": "Select an element on the page with Select tag"
47460
+ },
47461
+ "playwright_hover": {
47462
+ "name": "playwright_hover",
47463
+ "description": "Hover an element on the page"
47464
+ },
47465
+ "playwright_upload_file": {
47466
+ "name": "playwright_upload_file",
47467
+ "description": "Upload a file to an input[type='file'] element on the page"
47468
+ },
47469
+ "playwright_evaluate": {
47470
+ "name": "playwright_evaluate",
47471
+ "description": "Execute JavaScript in the browser console"
47472
+ },
47473
+ "playwright_console_logs": {
47474
+ "name": "playwright_console_logs",
47475
+ "description": "Retrieve console logs from the browser with filtering options"
47476
+ },
47477
+ "playwright_close": {
47478
+ "name": "playwright_close",
47479
+ "description": "Close the browser and release all resources"
47480
+ },
47481
+ "playwright_get": {
47482
+ "name": "playwright_get",
47483
+ "description": "Perform an HTTP GET request"
47484
+ },
47485
+ "playwright_post": {
47486
+ "name": "playwright_post",
47487
+ "description": "Perform an HTTP POST request"
47488
+ },
47489
+ "playwright_put": {
47490
+ "name": "playwright_put",
47491
+ "description": "Perform an HTTP PUT request"
47492
+ },
47493
+ "playwright_patch": {
47494
+ "name": "playwright_patch",
47495
+ "description": "Perform an HTTP PATCH request"
47496
+ },
47497
+ "playwright_delete": {
47498
+ "name": "playwright_delete",
47499
+ "description": "Perform an HTTP DELETE request"
47500
+ },
47501
+ "playwright_expect_response": {
47502
+ "name": "playwright_expect_response",
47503
+ "description": "Ask Playwright to start waiting for a HTTP response. This tool initiates the wait operation but does not wait for its completion."
47504
+ },
47505
+ "playwright_assert_response": {
47506
+ "name": "playwright_assert_response",
47507
+ "description": "Wait for and validate a previously initiated HTTP response wait operation."
47508
+ },
47509
+ "playwright_custom_user_agent": {
47510
+ "name": "playwright_custom_user_agent",
47511
+ "description": "Set a custom User Agent for the browser"
47512
+ },
47513
+ "playwright_get_visible_text": {
47514
+ "name": "playwright_get_visible_text",
47515
+ "description": "Get the visible text content of the current page"
47516
+ },
47517
+ "playwright_get_visible_html": {
47518
+ "name": "playwright_get_visible_html",
47519
+ "description": "Get the HTML content of the current page. By default, all <script> tags are removed from the output unless removeScripts is explicitly set to false."
47520
+ },
47521
+ "playwright_go_back": {
47522
+ "name": "playwright_go_back",
47523
+ "description": "Navigate back in browser history"
47524
+ },
47525
+ "playwright_go_forward": {
47526
+ "name": "playwright_go_forward",
47527
+ "description": "Navigate forward in browser history"
47528
+ },
47529
+ "playwright_drag": {
47530
+ "name": "playwright_drag",
47531
+ "description": "Drag an element to a target location"
47532
+ },
47533
+ "playwright_press_key": {
47534
+ "name": "playwright_press_key",
47535
+ "description": "Press a keyboard key"
47536
+ },
47537
+ "playwright_save_as_pdf": {
47538
+ "name": "playwright_save_as_pdf",
47539
+ "description": "Save the current page as a PDF file"
47540
+ },
47541
+ "playwright_click_and_switch_tab": {
47542
+ "name": "playwright_click_and_switch_tab",
47543
+ "description": "Click a link and switch to the newly opened tab"
47544
+ }
47545
+ }
47546
+ },
47547
+ "@mcp-server/google-search-mcp": {
47548
+ "category": "search-data-extraction",
47549
+ "path": "search-data-extraction/google-search-mcp-server.json",
47550
+ "validated": true,
47551
+ "tools": {
47552
+ "search": {
47553
+ "name": "search",
47554
+ "description": ""
47555
+ }
47556
+ }
44231
47557
  }
44232
47558
  }