{server.description}
+... snippet content ...
+{group.description}
+ )} +{t('groups.noServers')}
+ ) : ( +{server.description}
+ + {/* Categories */} +{server.description}
+ ++ {t('market.argumentName')} + | ++ {t('market.description')} + | ++ {t('market.required')} + | ++ {t('market.example')} + | +
---|---|---|---|
+ {name} + | ++ {arg.description} + | ++ {arg.required ? ( + ✓ + ) : ( + ✗ + )} + | +
+ {arg.example}
+ |
+
{tool.description}
++ {JSON.stringify(tool.inputSchema, null, 2)} ++
{example.description}
++ {example.prompt} ++
{server.error}+
{t('about.newVersionAvailable', { version: latestVersion })}
+ ++ {isGroup + ? t('groups.deleteWarning', { name: serverName }) + : t('server.deleteWarning', { name: serverName })} +
+{propSchema.description}
+ )} + + {error &&{error}
} +{propSchema.description}
+ )} + handleInputChange(fullPath, e.target.value)} + className={`w-full border rounded-md px-3 py-2 ${error ? 'border-red-500' : 'border-gray-300'} focus:outline-none focus:ring-2 focus:ring-blue-500`} + /> + {error &&{error}
} +{propSchema.description}
+ )} + { + const val = e.target.value === '' ? '' : propSchema.type === 'integer' ? parseInt(e.target.value) : parseFloat(e.target.value); + handleInputChange(fullPath, val); + }} + className={`w-full border rounded-md px-3 py-2 ${error ? 'border-red-500' : 'border-gray-300'} focus:outline-none focus:ring-2 focus:ring-blue-500`} + /> + {error &&{error}
} +{propSchema.description}
+ )} + {error &&{error}
} +{propSchema.description}
+ )} + handleInputChange(fullPath, e.target.value)} + placeholder={t('tool.enterValue', { type: propSchema.type })} + className={`w-full border rounded-md px-3 py-2 ${error ? 'border-red-500' : 'border-gray-300'} focus:outline-none focus:ring-2 focus:ring-blue-500`} + /> + {error &&{error}
} +{t('tool.noParameters')}
+{t('sponsor.supportMessage')}
+ + {t('sponsor.supportButton')} + ++ {message} +
+{noOptionsText}
+ ) : ( ++ {helpText} +
+ )} ++ {JSON.stringify(tool.inputSchema, null, 2)} ++
{item}+
{item.text}+
{JSON.stringify(parsed, null, 2)}+
{String(item)}+
{String(item)}+
+ {result.error || result.message || t('tool.unknownError')} ++
+ {t('wechat.scanMessage')} +
+{error}
+{t('app.loading')}
+{serverStats.total}
+{serverStats.online}
+{serverStats.offline}
+{serverStats.connecting}
++ {t('server.name')} + | ++ {t('server.status')} + | ++ {t('server.tools')} + | ++ {t('server.enabled')} + | +
---|---|---|---|
+ {server.name} + | ++ + {t(statusTranslations[server.status] || server.status)} + + | ++ {server.tools?.length || 0} + | ++ {server.enabled !== false ? ( + ✓ + ) : ( + ✗ + )} + | +
{groupError}
+{t('app.loading')}
+{t('groups.noGroups')}
+{error}
+ +{t('app.loading')}
+{t('market.noCategories')}
+{t('app.loading')}
+{t('market.noServers')}
+{error}
+{t('app.loading')}
+{t('app.noServers')}
+{t('settings.enableSmartRoutingDescription')}
+{t('settings.enableBearerAuthDescription')}
+{t('settings.bearerAuthKeyDescription')}
+{t('settings.enableGlobalRouteDescription')}
+{t('settings.enableGroupNameRouteDescription')}
+{t('settings.pythonIndexUrlDescription')}
+{t('settings.npmRegistryDescription')}
+with inline CSS styling\n4. Example formatting:\n - Line breaks:
\n - Code:\n - Lists:and
- tags\n - Bold: \n - Italic: ", + "inputSchema": { + "type": "object", + "properties": { + "front": { + "type": "string", + "description": "The front of the card. Must use HTML formatting only." + }, + "back": { + "type": "string", + "description": "The back of the card. Must use HTML formatting only." + } + }, + "required": [ + "front", + "back" + ] + } + }, + { + "name": "get_due_cards", + "description": "Returns a given number (num) of cards due for review.", + "inputSchema": { + "type": "object", + "properties": { + "num": { + "type": "number", + "description": "Number of due cards to get" + } + }, + "required": [ + "num" + ] + } + }, + { + "name": "get_new_cards", + "description": "Returns a given number (num) of new and unseen cards.", + "inputSchema": { + "type": "object", + "properties": { + "num": { + "type": "number", + "description": "Number of new cards to get" + } + }, + "required": [ + "num" + ] + } + } + ] + }, + "obsidian-markdown-notes": { + "name": "obsidian-markdown-notes", + "display_name": "Obsidian Markdown Notes", + "description": "Read and search through your Obsidian vault or any directory containing Markdown notes", + "repository": { + "type": "git", + "url": "https://github.com/calclavia/mcp-obsidian" + }, + "homepage": "https://github.com/calclavia/mcp-obsidian", + "author": { + "name": "calclavia" + }, + "license": "APGL-3.0", + "categories": [ + "Knowledge Base" + ], + "tags": [ + "obsidian" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "https://github.com/calclavia/mcp-obsidian.git", + "${OBSIDIAN_VAULT_PATH}" + ] + } + }, + "arguments": { + "OBSIDIAN_VAULT_PATH": { + "description": "Path to your Obsidian vault", + "required": true + } + }, + "tools": [ + { + "name": "read_notes", + "description": "Read the contents of multiple notes. Each note's content is returned with its path as a reference. Failed reads for individual notes won't stop the entire operation. Reading too many at once may result in an error.", + "inputSchema": { + "type": "object", + "properties": { + "paths": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "paths" + ] + } + }, + { + "name": "search_notes", + "description": "Searches for a note by its name. The search is case-insensitive and matches partial names. Queries can also be a valid regex. Returns paths of the notes that match the query.", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string" + } + }, + "required": [ + "query" + ] + } + } + ] + }, + "fireproof-mcp": { + "display_name": "Model Context Protocol and Fireproof Demo: JSON Document Server", + "repository": { + "type": "git", + "url": "https://github.com/fireproof-storage/mcp-database-server" + }, + "license": "MIT", + "installations": { + "custom": { + "type": "custom", + "command": "node", + "args": [ + "/path/to/fireproof-mcp/build/index.js" + ], + "description": "Run the server using Node.js after installing dependencies and building" + } + }, + "homepage": "https://github.com/fireproof-storage/mcp-database-server", + "author": { + "name": "fireproof-storage" + }, + "tags": [ + "fireproof", + "database", + "MCP", + "Model Context Protocol", + "JSON", + "document store" + ], + "examples": [ + { + "title": "Basic Usage", + "description": "Using the server with Claude Desktop", + "prompt": "Configure Claude Desktop to use the Fireproof MCP server by adding the server config to the appropriate location." + } + ], + "name": "fireproof-mcp", + "description": "Immutable ledger database with live synchronization", + "categories": [ + "Databases" + ], + "is_official": true + }, + "lingo-dev": { + "display_name": "Lingo.dev MCP Server", + "repository": { + "type": "git", + "url": "https://github.com/lingodotdev/lingo.dev" + }, + "homepage": "https://lingo.dev", + "author": { + "name": "lingodotdev" + }, + "license": "Apache-2.0", + "tags": [ + "translation", + "localization", + "mcp" + ], + "arguments": { + "api-key": { + "description": "Your Lingo.dev project API key", + "required": true, + "example": "
" + } + }, + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "lingo.dev", + "mcp", + "${api-key}" + ], + "description": "Run the Lingo.dev MCP server using npx", + "recommended": true + } + }, + "examples": [ + { + "title": "Translate content", + "description": "Ask the AI tool to translate content using Lingo.dev", + "prompt": "Translate this text to Spanish: 'Hello world'" + } + ], + "name": "lingo-dev", + "description": "The [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) is a standard for connecting Large Language Models (LLMs) to external services. This guide will walk you through how to connect AI tools to Lingo.dev using MCP.", + "categories": [ + "Dev Tools" + ], + "is_official": true + }, + "veyrax-mcp": { + "display_name": "VeyraX MCP", + "repository": { + "type": "git", + "url": "https://github.com/VeyraX/veyrax-mcp" + }, + "homepage": "https://www.veyrax.com", + "author": { + "name": "VeyraX" + }, + "license": "[NOT GIVEN]", + "tags": [ + "MCP", + "Model Context Protocol", + "AI tools", + "LLM integration" + ], + "arguments": { + "VEYRAX_API_KEY": { + "description": "Your VeyraX API key found in your account settings", + "required": true + } + }, + "installations": { + "custom": { + "type": "custom", + "command": "node", + "args": [ + "path/to/veyrax-mcp/build/src/index.js", + "--config", + "\"{\\\"VEYRAX_API_KEY\\\":\\\"${VEYRAX_API_KEY}\\\"}\"" + ] + } + }, + "examples": [ + { + "title": "Getting Started with VeyraX MCP", + "description": "Basic setup for VeyraX MCP", + "prompt": "How do I set up VeyraX MCP in my environment?" + } + ], + "name": "veyrax-mcp", + "description": "Single tool to control all 100+ API integrations, and UI components", + "categories": [ + "MCP Tools" + ], + "is_official": true + }, + "mcp-server-neon": { + "display_name": "Neon MCP Server", + "repository": { + "type": "git", + "url": "https://github.com/neondatabase/mcp-server-neon" + }, + "homepage": "https://neon.tech", + "author": { + "name": "neondatabase" + }, + "license": "MIT", + "tags": [ + "database", + "postgres", + "neon", + "mcp", + "llm" + ], + "arguments": { + "NEON_API_KEY": { + "description": "Neon API key - you can generate one through the Neon console", + "required": true + } + }, + "installations": { + "cli": { + "type": "cli", + "command": "npx", + "args": [ + "@neondatabase/mcp-server-neon", + "init", + "$NEON_API_KEY" + ], + "package": "@neondatabase/mcp-server-neon", + "env": {}, + "description": "Install via npm", + "recommended": true + } + }, + "examples": [ + { + "title": "List projects", + "description": "List all Neon projects", + "prompt": "List me all my Neon projects" + }, + { + "title": "Create database and table", + "description": "Create a new Postgres database and add a users table", + "prompt": "Let's create a new Postgres database, and call it \"my-database\". Let's then create a table called users with the following columns: id, name, email, and password." + }, + { + "title": "Run migration", + "description": "Run a migration to alter a table", + "prompt": "I want to run a migration on my project called \"my-project\" that alters the users table to add a new column called \"created_at\"." + }, + { + "title": "Project summary", + "description": "Get a summary of all projects and data", + "prompt": "Can you give me a summary of all of my Neon projects and what data is in each one?" + } + ], + "name": "mcp-server-neon", + "description": "This lets you use Claude Desktop, or any MCP Client, to use natural language to accomplish things with Neon.", + "categories": [ + "Databases" + ], + "is_official": true + }, + "video-editor": { + "name": "video-editor", + "display_name": "Video Editor", + "description": "A Model Context Protocol Server to add, edit, and search videos with [Video Jungle](https://www.video-jungle.com/).", + "repository": { + "type": "git", + "url": "https://github.com/burningion/video-editing-mcp" + }, + "homepage": "https://github.com/burningion/video-editing-mcp", + "author": { + "name": "burningion" + }, + "license": "MIT", + "categories": [ + "Media Creation" + ], + "tags": [ + "video", + "editing", + "API" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/burningion/video-editing-mcp", + "video-editor-mcp", + "${YOURAPIKEY}" + ] + } + }, + "examples": [ + { + "title": "Add Video Example", + "description": "Shows how to add a video from a URL.", + "prompt": "can you download the video at https://www.youtube.com/shorts/RumgYaH5XYw and name it fly traps?" + }, + { + "title": "Search Videos Example", + "description": "Example of searching videos with a keyword.", + "prompt": "can you search my videos for fly traps?" + }, + { + "title": "Generate Edit Example", + "description": "Creates an edit from found video segments.", + "prompt": "can you create an edit of all the times the video says \"fly trap\"?" + } + ], + "arguments": { + "YOURAPIKEY": { + "description": "API key required to authenticate and communicate with Video Jungle services.", + "required": true, + "example": "YOURAPIKEY" + } + }, + "tools": [ + { + "name": "add-video", + "description": "Upload video from URL. Begins analysis of video to allow for later information retrieval for automatic video editing an search.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "name", + "url" + ] + } + }, + { + "name": "search-remote-videos", + "description": "Default method to search videos. Will return videos including video_ids, which allow for information retrieval and building video edits.", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Text search query" + }, + "limit": { + "type": "integer", + "default": 10, + "minimum": 1, + "description": "Maximum number of results to return" + }, + "project_id": { + "type": "string", + "format": "uuid", + "description": "Project ID to scope the search" + }, + "duration_min": { + "type": "number", + "minimum": 0, + "description": "Minimum video duration in seconds" + }, + "duration_max": { + "type": "number", + "minimum": 0, + "description": "Maximum video duration in seconds" + } + }, + "created_after": { + "type": "string", + "format": "date-time", + "description": "Filter videos created after this datetime" + }, + "created_before": { + "type": "string", + "format": "date-time", + "description": "Filter videos created before this datetime" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true, + "description": "Set of tags to filter by" + }, + "include_segments": { + "type": "boolean", + "default": true, + "description": "Whether to include video segments in results" + }, + "include_related": { + "type": "boolean", + "default": false, + "description": "Whether to include related videos" + }, + "query_audio": { + "type": "string", + "description": "Audio search query" + }, + "query_img": { + "type": "string", + "description": "Image search query" + }, + "oneOf": [ + { + "required": [ + "query" + ] + } + ] + } + }, + { + "name": "search-local-videos", + "description": "Search user's local videos in Photos app by keyword", + "inputSchema": { + "type": "object", + "properties": { + "keyword": { + "type": "string" + }, + "start_date": { + "type": "string", + "description": "ISO 8601 formatted datetime string (e.g. 2024-01-21T15:30:00Z)" + }, + "end_date": { + "type": "string", + "description": "ISO 8601 formatted datetime string (e.g. 2024-01-21T15:30:00Z)" + } + }, + "required": [ + "keyword" + ] + } + }, + { + "name": "generate-edit-from-videos", + "description": "Generate an edit from videos, from within a specific project. Creates a new project to work within no existing project ID (UUID) is passed ", + "inputSchema": { + "type": "object", + "properties": { + "project_id": { + "type": "string", + "description": "Either an existing Project UUID or String. A UUID puts the edit in an existing project, and a string creates a new project with that name." + }, + "name": { + "type": "string", + "description": "Video Edit name" + }, + "open_editor": { + "type": "boolean", + "description": "Open a live editor with the project's edit" + }, + "resolution": { + "type": "string", + "description": "Video resolution. Examples include '1920x1080', '1280x720'" + }, + "edit": { + "type": "array", + "cuts": { + "video_id": { + "type": "string", + "description": "Video UUID" + }, + "video_start_time": { + "type": "string", + "description": "Clip start time in 00:00:00.000 format" + }, + "video_end_time": { + "type": "string", + "description": "Clip end time in 00:00:00.000 format" + } + } + } + }, + "required": [ + "edit", + "cuts", + "name", + "project_id" + ] + } + }, + { + "name": "generate-edit-from-single-video", + "description": "Generate a compressed video edit from a single video.", + "inputSchema": { + "type": "object", + "properties": { + "project_id": { + "type": "string" + }, + "resolution": { + "type": "string" + }, + "video_id": { + "type": "string" + }, + "edit": { + "type": "array", + "cuts": { + "video_start_time": "time", + "video_end_time": "time" + } + } + }, + "required": [ + "edit", + "project_id", + "video_id", + "cuts" + ] + } + }, + { + "name": "update-video-edit", + "description": "Update an existing video edit within a specific project.", + "inputSchema": { + "type": "object", + "properties": { + "project_id": { + "type": "string", + "description": "UUID of the project containing the edit" + }, + "edit_id": { + "type": "string", + "description": "UUID of the video edit to update" + }, + "name": { + "type": "string", + "description": "Video Edit name" + }, + "description": { + "type": "string", + "description": "Description of the video edit" + }, + "video_output_format": { + "type": "string", + "description": "Output format for the video (e.g., 'mp4', 'webm')" + }, + "video_output_resolution": { + "type": "string", + "description": "Video resolution. Examples include '1920x1080', '1280x720'" + }, + "video_output_fps": { + "type": "number", + "description": "Frames per second for the output video" + }, + "video_series_sequential": { + "type": "array", + "description": "Array of video clips in sequential order", + "items": { + "type": "object", + "properties": { + "video_id": { + "type": "string", + "description": "Video UUID" + }, + "video_start_time": { + "type": "string", + "description": "Clip start time in 00:00:00.000 format" + }, + "video_end_time": { + "type": "string", + "description": "Clip end time in 00:00:00.000 format" + } + } + } + }, + "audio_overlay": { + "type": "object", + "description": "Audio overlay settings and assets" + }, + "rendered": { + "type": "boolean", + "description": "Whether the edit has been rendered" + } + }, + "required": [ + "project_id", + "edit_id" + ] + } + }, + { + "name": "create-video-bar-chart-from-two-axis-data", + "description": "Create a video bar chart from two-axis data", + "inputSchema": { + "type": "object", + "properties": { + "x_values": { + "type": "array", + "items": { + "type": "string" + } + }, + "y_values": { + "type": "array", + "items": { + "type": "number" + } + }, + "x_label": { + "type": "string" + }, + "y_label": { + "type": "string" + }, + "title": { + "type": "string" + }, + "filename": { + "type": "string" + } + }, + "required": [ + "x_values", + "y_values", + "x_label", + "y_label", + "title" + ] + } + }, + { + "name": "create-video-line-chart-from-two-axis-data", + "description": "Create a video line chart from two-axis data", + "inputSchema": { + "type": "object", + "properties": { + "x_values": { + "type": "array", + "items": { + "type": "string" + } + }, + "y_values": { + "type": "array", + "items": { + "type": "number" + } + }, + "x_label": { + "type": "string" + }, + "y_label": { + "type": "string" + }, + "title": { + "type": "string" + }, + "filename": { + "type": "string" + } + }, + "required": [ + "x_values", + "y_values", + "x_label", + "y_label", + "title" + ] + } + } + ] + }, + "mongodb": { + "name": "mongodb", + "display_name": "MongoDB", + "description": "A Model Context Protocol Server for MongoDB.", + "repository": { + "type": "git", + "url": "https://github.com/kiliczsh/mcp-mongo-server" + }, + "homepage": "https://github.com/kiliczsh/mcp-mongo-server", + "author": { + "name": "kiliczsh" + }, + "license": "MIT", + "categories": [ + "Databases" + ], + "tags": [ + "MongoDB", + "LLM" + ], + "arguments": { + "MONGODB_URI": { + "description": "The connection string for the MongoDB database.", + "required": true, + "example": "mongodb://muhammed:kilic@mongodb.localhost/sample_namespace" + } + }, + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "mcp-mongo-server", + "${MONGODB_URI}" + ] + } + }, + "tools": [ + { + "name": "query", + "description": "Execute a MongoDB query with optional execution plan analysis", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string", + "description": "Name of the collection to query" + }, + "filter": { + "type": "object", + "description": "MongoDB query filter" + }, + "projection": { + "type": "object", + "description": "Fields to include/exclude" + }, + "limit": { + "type": "number", + "description": "Maximum number of documents to return" + }, + "explain": { + "type": "string", + "description": "Optional: Get query execution information (queryPlanner, executionStats, or allPlansExecution)", + "enum": [ + "queryPlanner", + "executionStats", + "allPlansExecution" + ] + } + }, + "required": [ + "collection" + ] + } + }, + { + "name": "aggregate", + "description": "Execute a MongoDB aggregation pipeline with optional execution plan analysis", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string", + "description": "Name of the collection to aggregate" + }, + "pipeline": { + "type": "array", + "description": "Aggregation pipeline stages" + }, + "explain": { + "type": "string", + "description": "Optional: Get aggregation execution information (queryPlanner, executionStats, or allPlansExecution)", + "enum": [ + "queryPlanner", + "executionStats", + "allPlansExecution" + ] + } + }, + "required": [ + "collection", + "pipeline" + ] + } + }, + { + "name": "update", + "description": "Update documents in a MongoDB collection", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string", + "description": "Name of the collection to update" + }, + "filter": { + "type": "object", + "description": "Filter to select documents to update" + }, + "update": { + "type": "object", + "description": "Update operations to apply ($set, $unset, $inc, etc.)" + }, + "upsert": { + "type": "boolean", + "description": "Create a new document if no documents match the filter" + }, + "multi": { + "type": "boolean", + "description": "Update multiple documents that match the filter" + } + }, + "required": [ + "collection", + "filter", + "update" + ] + } + }, + { + "name": "serverInfo", + "description": "Get MongoDB server information including version, storage engine, and other details", + "inputSchema": { + "type": "object", + "properties": { + "includeDebugInfo": { + "type": "boolean", + "description": "Include additional debug information about the server" + } + } + } + }, + { + "name": "insert", + "description": "Insert one or more documents into a MongoDB collection", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string", + "description": "Name of the collection to insert into" + }, + "documents": { + "type": "array", + "description": "Array of documents to insert", + "items": { + "type": "object" + } + }, + "ordered": { + "type": "boolean", + "description": "Optional: If true, perform an ordered insert of the documents. If false, perform an unordered insert" + }, + "writeConcern": { + "type": "object", + "description": "Optional: Write concern for the insert operation" + }, + "bypassDocumentValidation": { + "type": "boolean", + "description": "Optional: Allow insert to bypass schema validation" + } + }, + "required": [ + "collection", + "documents" + ] + } + }, + { + "name": "createIndex", + "description": "Create one or more indexes on a MongoDB collection", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string", + "description": "Name of the collection to create indexes on" + }, + "indexes": { + "type": "array", + "description": "Array of index specifications", + "items": { + "type": "object", + "properties": { + "key": { + "type": "object", + "description": "Index key pattern, e.g. { field: 1 } for ascending, { field: -1 } for descending" + }, + "name": { + "type": "string", + "description": "Optional: Name of the index" + }, + "unique": { + "type": "boolean", + "description": "Optional: If true, creates a unique index" + }, + "sparse": { + "type": "boolean", + "description": "Optional: If true, creates a sparse index" + }, + "background": { + "type": "boolean", + "description": "Optional: If true, creates the index in the background" + }, + "expireAfterSeconds": { + "type": "number", + "description": "Optional: Specifies the TTL for documents (time to live)" + }, + "partialFilterExpression": { + "type": "object", + "description": "Optional: Filter expression for partial indexes" + } + }, + "required": [ + "key" + ] + } + }, + "writeConcern": { + "type": "object", + "description": "Optional: Write concern for the index creation" + }, + "commitQuorum": { + "type": [ + "string", + "number" + ], + "description": "Optional: Number of voting members required to create index" + } + }, + "required": [ + "collection", + "indexes" + ] + } + }, + { + "name": "count", + "description": "Count the number of documents in a collection that match a query", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string", + "description": "Name of the collection to count documents in" + }, + "query": { + "type": "object", + "description": "Optional: Query filter to select documents to count" + }, + "limit": { + "type": "integer", + "description": "Optional: Maximum number of documents to count" + }, + "skip": { + "type": "integer", + "description": "Optional: Number of documents to skip before counting" + }, + "hint": { + "type": "object", + "description": "Optional: Index hint to force query plan" + }, + "readConcern": { + "type": "object", + "description": "Optional: Read concern for the count operation" + }, + "maxTimeMS": { + "type": "integer", + "description": "Optional: Maximum time to allow the count to run" + }, + "collation": { + "type": "object", + "description": "Optional: Collation rules for string comparison" + } + }, + "required": [ + "collection" + ] + } + }, + { + "name": "listCollections", + "description": "List all collections in the MongoDB database", + "inputSchema": { + "type": "object", + "properties": { + "nameOnly": { + "type": "boolean", + "description": "Optional: If true, returns only the collection names instead of full collection info" + }, + "filter": { + "type": "object", + "description": "Optional: Filter to apply to the collections" + } + } + } + } + ] + }, + "data-exploration": { + "name": "data-exploration", + "display_name": "Data Exploration", + "description": "MCP server for autonomous data exploration on .csv-based datasets, providing intelligent insights with minimal effort. NOTE: Will execute arbitrary Python code on your machine, please use with caution!", + "repository": { + "type": "git", + "url": "https://github.com/reading-plus-ai/mcp-server-data-exploration" + }, + "homepage": "https://github.com/reading-plus-ai/mcp-server-data-exploration", + "author": { + "name": "reading-plus-ai" + }, + "license": "MIT", + "categories": [ + "Analytics" + ], + "tags": [ + "data", + "exploration" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "mcp-server-ds" + ] + } + }, + "examples": [ + { + "title": "California Real Estate Listing Prices", + "description": "Exploring housing price trends in California using a dataset.", + "prompt": "csv_path: Local path to the CSV file, topic: Housing price trends in California." + }, + { + "title": "Weather in London", + "description": "Investigating daily weather history in London using a dataset.", + "prompt": "csv_path: Local path to the CSV file, topic: Weather in London." + } + ], + "tools": [ + { + "name": "load_csv", + "description": "\nLoad CSV File Tool\n\nPurpose:\nLoad a local CSV file into a DataFrame.\n\nUsage Notes:\n\t\u2022\tIf a df_name is not provided, the tool will automatically assign names sequentially as df_1, df_2, and so on.\n", + "inputSchema": { + "properties": { + "csv_path": { + "title": "Csv Path", + "type": "string" + }, + "df_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Df Name" + } + }, + "required": [ + "csv_path" + ], + "title": "LoadCsv", + "type": "object" + } + }, + { + "name": "run_script", + "description": "\nPython Script Execution Tool\n\nPurpose:\nExecute Python scripts for specific data analytics tasks.\n\nAllowed Actions\n\t1.\tPrint Results: Output will be displayed as the script\u2019s stdout.\n\t2.\t[Optional] Save DataFrames: Store DataFrames in memory for future use by specifying a save_to_memory name.\n\nProhibited Actions\n\t1.\tOverwriting Original DataFrames: Do not modify existing DataFrames to preserve their integrity for future tasks.\n\t2.\tCreating Charts: Chart generation is not permitted.\n", + "inputSchema": { + "properties": { + "script": { + "title": "Script", + "type": "string" + }, + "save_to_memory": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Save To Memory" + } + }, + "required": [ + "script" + ], + "title": "RunScript", + "type": "object" + } + } + ] + }, + "tmdb": { + "name": "tmdb", + "display_name": "TMDB", + "description": "This MCP server integrates with The Movie Database (TMDB) API to provide movie information, search capabilities, and recommendations.", + "repository": { + "type": "git", + "url": "https://github.com/Laksh-star/mcp-server-tmdb" + }, + "homepage": "https://github.com/Laksh-star/mcp-server-tmdb", + "author": { + "name": "Laksh-star" + }, + "license": "MIT", + "categories": [ + "Professional Apps" + ], + "tags": [ + "tmdb", + "movies", + "recommendations" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "https://github.com/Laksh-star/mcp-server-tmdb" + ], + "env": { + "TMDB_API_KEY": "${TMDB_API_KEY}" + } + } + }, + "examples": [ + { + "title": "Search for Movies", + "description": "Search for movies by title or keywords", + "prompt": "\"Search for movies about artificial intelligence\"" + }, + { + "title": "Get Trending Movies", + "description": "Get today's or this week's trending movies", + "prompt": "\"What are the trending movies today?\"" + }, + { + "title": "Get Movie Recommendations", + "description": "Get movie recommendations based on a movie ID", + "prompt": "\"Get movie recommendations based on movie ID 550\"" + }, + { + "title": "Get Movie Details", + "description": "Get details of a specific movie by ID", + "prompt": "\"Tell me about the movie with ID 550\"" + } + ], + "arguments": { + "TMDB_API_KEY": { + "description": "API key used to authenticate requests to the TMDB API.", + "required": true, + "example": "your_api_key_here" + } + }, + "tools": [ + { + "name": "search_movies", + "description": "Search for movies by title or keywords", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Search query for movie titles" + } + }, + "required": [ + "query" + ] + } + }, + { + "name": "get_recommendations", + "description": "Get movie recommendations based on a movie ID", + "inputSchema": { + "type": "object", + "properties": { + "movieId": { + "type": "string", + "description": "TMDB movie ID to get recommendations for" + } + }, + "required": [ + "movieId" + ] + } + }, + { + "name": "get_trending", + "description": "Get trending movies for a time window", + "inputSchema": { + "type": "object", + "properties": { + "timeWindow": { + "type": "string", + "enum": [ + "day", + "week" + ], + "description": "Time window for trending movies" + } + }, + "required": [ + "timeWindow" + ] + } + } + ] + }, + "minima": { + "name": "minima", + "display_name": "Minima", + "description": "MCP server for RAG on local files", + "repository": { + "type": "git", + "url": "https://github.com/dmayboroda/minima" + }, + "homepage": "https://github.com/dmayboroda/minima", + "author": { + "name": "dmayboroda" + }, + "license": "MPLv2", + "categories": [ + "Knowledge Base" + ], + "tags": [ + "ChatGPT", + "Integration", + "Local", + "Open Source" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/dmayboroda/minima.git@main#subdirectory=mcp-server", + "minima" + ] + } + }, + "arguments": { + "LOCAL_FILES_PATH": { + "description": "Specify the root folder for indexing (on your cloud or local pc). Indexing is a recursive process, meaning all documents within subfolders of this root folder will also be indexed. Supported file types: .pdf, .xls, .docx, .txt, .md, .csv.", + "required": true, + "example": "/Users/davidmayboroda/Downloads/PDFs/" + }, + "EMBEDDING_MODEL_ID": { + "description": "Specify the embedding model to use. Currently, only Sentence Transformer models are supported. Testing has been done with sentence-transformers/all-mpnet-base-v2, but other Sentence Transformer models can be used.", + "required": false, + "example": "sentence-transformers/all-mpnet-base-v2" + }, + "EMBEDDING_SIZE": { + "description": "Define the embedding dimension provided by the model, which is needed to configure Qdrant vector storage. Ensure this value matches the actual embedding size of the specified EMBEDDING_MODEL_ID.", + "required": false, + "example": "768" + }, + "OLLAMA_MODEL": { + "description": "Set up the Ollama model, use an ID available on the Ollama site. Please, use LLM model here, not an embedding.", + "required": false, + "example": "qwen2:0.5b" + }, + "RERANKER_MODEL": { + "description": "Specify the reranker model. Currently, we have tested with BAAI rerankers. You can explore all available rerankers using a specific link.", + "required": false, + "example": "BAAI/bge-reranker-base" + }, + "USER_ID": { + "description": "Just use your email here, this is needed to authenticate custom GPT to search in your data.", + "required": true, + "example": "user@gmail.com" + }, + "PASSWORD": { + "description": "Put any password here, this is used to create a firebase account for the email specified above.", + "required": true, + "example": "password" + } + }, + "tools": [ + { + "name": "query", + "description": "Find a context in local files (PDF, CSV, DOCX, MD, TXT)", + "inputSchema": { + "properties": { + "text": { + "description": "context to find", + "title": "Text", + "type": "string" + } + }, + "required": [ + "text" + ], + "title": "Query", + "type": "object" + } + } + ] + }, + "fastn-ai-unified-api-mcp-server": { + "name": "fastn-ai-unified-api-mcp-server", + "display_name": "Fastn AI Unified API", + "description": "A remote, dynamic MCP server with a unified API that connects to 1,000+ tools, actions, and workflows, featuring built-in authentication and monitoring.", + "repository": { + "type": "git", + "url": "https://github.com/fastnai/mcp-fastn" + }, + "homepage": "https://github.com/fastnai/mcp-fastn", + "author": { + "name": "fastnai" + }, + "license": "MIT", + "categories": [ + "MCP Tools" + ], + "tags": [ + "Fastn", + "Dynamic Tool Registration", + "API-Driven Operations" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/fastnai/mcp-fastn", + "fastn", + "--api_key", + "${YOUR_API_KEY}", + "--space_id", + "${YOUR_WORKSPACE_ID}" + ] + } + }, + "arguments": { + "YOUR_API_KEY": { + "description": "The API key is required to authenticate and access the Fastn server's features and services.", + "required": true, + "example": "your_actual_api_key_here" + }, + "YOUR_WORKSPACE_ID": { + "description": "The unique identifier for your workspace in Fastn, which directs the server to the correct environment and settings.", + "required": true, + "example": "your_actual_workspace_id_here" + } + } + }, + "sentry": { + "name": "sentry", + "display_name": "Sentry", + "description": "Retrieving and analyzing issues from Sentry.io", + "repository": { + "type": "git", + "url": "https://github.com/modelcontextprotocol/servers" + }, + "homepage": "https://github.com/modelcontextprotocol/servers/blob/main/src/sentry", + "author": { + "name": "modelcontextprotocol" + }, + "license": "MIT", + "categories": [ + "Dev Tools" + ], + "tags": [ + "sentry", + "monitoring", + "errors", + "debugging" + ], + "examples": [ + { + "title": "Retrieve issue details from Sentry", + "description": "Use this command to get detailed information about a specific Sentry issue using its ID or URL.", + "prompt": "sentry-issue {issue_id_or_url}" + } + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "mcp-server-sentry", + "--auth-token", + "${YOUR_SENTRY_TOKEN}" + ] + }, + "docker": { + "type": "docker", + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "mcp/sentry", + "--auth-token", + "${YOUR_SENTRY_TOKEN}" + ] + }, + "python": { + "type": "python", + "command": "python", + "args": [ + "-m", + "mcp_server_sentry", + "--auth-token", + "${YOUR_SENTRY_TOKEN}" + ] + } + }, + "arguments": { + "YOUR_SENTRY_TOKEN": { + "description": "An authentication token required to access your Sentry account and retrieve issue details.", + "required": true, + "example": "abc123def456" + } + }, + "tools": [ + { + "name": "get_sentry_issue", + "description": "Retrieve and analyze a Sentry issue by ID or URL. Use this tool when you need to:\n - Investigate production errors and crashes\n - Access detailed stacktraces from Sentry\n - Analyze error patterns and frequencies\n - Get information about when issues first/last occurred\n - Review error counts and status", + "inputSchema": { + "type": "object", + "properties": { + "issue_id_or_url": { + "type": "string", + "description": "Sentry issue ID or URL to analyze" + } + }, + "required": [ + "issue_id_or_url" + ] + } + } + ], + "is_official": true + }, + "mcp-proxy": { + "name": "mcp-proxy", + "display_name": "MCP Proxy", + "description": "Connect to MCP servers that run on SSE transport, or expose stdio servers as an SSE server.", + "repository": { + "type": "git", + "url": "https://github.com/sparfenyuk/mcp-proxy" + }, + "homepage": "https://github.com/sparfenyuk/mcp-proxy", + "author": { + "name": "sparfenyuk" + }, + "license": "MIT", + "categories": [ + "MCP Tools" + ], + "tags": [ + "proxy", + "sse", + "stdio" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "mcp-proxy" + ] + } + } + }, + "dataset-viewer": { + "name": "dataset-viewer", + "display_name": "Dataset Viewer", + "description": "Browse and analyze Hugging Face datasets with features like search, filtering, statistics, and data export", + "repository": { + "type": "git", + "url": "https://github.com/privetin/dataset-viewer" + }, + "homepage": "https://github.com/privetin/dataset-viewer", + "author": { + "name": "privetin", + "url": "https://github.com/privetin" + }, + "license": "MIT", + "categories": [ + "Analytics" + ], + "tags": [ + "Hugging Face", + "datasets", + "data analysis" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/privetin/dataset-viewer", + "dataset-viewer" + ] + } + }, + "examples": [ + { + "title": "Validate a dataset", + "description": "Check if a dataset exists and is accessible.", + "prompt": "{\"dataset\": \"stanfordnlp/imdb\"}" + }, + { + "title": "Get dataset information", + "description": "Retrieve detailed information about a dataset.", + "prompt": "{\"dataset\": \"stanfordnlp/imdb\"}" + }, + { + "title": "Search dataset contents", + "description": "Search for text within a dataset.", + "prompt": "{\"dataset\": \"stanfordnlp/imdb\",\"config\": \"plain_text\",\"split\": \"train\",\"query\": \"great movie\"}" + }, + { + "title": "Filter and sort rows", + "description": "Filter rows using SQL-like conditions and sort them.", + "prompt": "{\"dataset\": \"stanfordnlp/imdb\",\"config\": \"plain_text\",\"split\": \"train\",\"where\": \"label = 'positive'\",\"orderby\": \"text DESC\",\"page\": 0}" + }, + { + "title": "Get dataset statistics", + "description": "Get statistics about a dataset split.", + "prompt": "{\"dataset\": \"stanfordnlp/imdb\",\"config\": \"plain_text\",\"split\": \"train\"}" + } + ], + "arguments": { + "HUGGINGFACE_TOKEN": { + "description": "Your Hugging Face API token for accessing private datasets", + "required": false, + "example": "" + } + }, + "tools": [ + { + "name": "get_info", + "description": "Get detailed information about a Hugging Face dataset including description, features, splits, and statistics. Run validate first to check if the dataset exists and is accessible.", + "inputSchema": { + "type": "object", + "properties": { + "dataset": { + "type": "string", + "description": "Hugging Face dataset identifier in the format owner/dataset", + "pattern": "^[^/]+/[^/]+$", + "examples": [ + "ylecun/mnist", + "stanfordnlp/imdb" + ] + }, + "auth_token": { + "type": "string", + "description": "Hugging Face auth token for private/gated datasets", + "optional": true + } + }, + "required": [ + "dataset" + ] + } + }, + { + "name": "get_rows", + "description": "Get paginated rows from a Hugging Face dataset", + "inputSchema": { + "type": "object", + "properties": { + "dataset": { + "type": "string", + "description": "Hugging Face dataset identifier in the format owner/dataset", + "pattern": "^[^/]+/[^/]+$", + "examples": [ + "ylecun/mnist", + "stanfordnlp/imdb" + ] + }, + "config": { + "type": "string", + "description": "Dataset configuration/subset name. Use get_info to list available configs", + "examples": [ + "default", + "en", + "es" + ] + }, + "split": { + "type": "string", + "description": "Dataset split name. Splits partition the data for training/evaluation", + "examples": [ + "train", + "validation", + "test" + ] + }, + "page": { + "type": "integer", + "description": "Page number (0-based), returns 100 rows per page", + "default": 0 + }, + "auth_token": { + "type": "string", + "description": "Hugging Face auth token for private/gated datasets", + "optional": true + } + }, + "required": [ + "dataset", + "config", + "split" + ] + } + }, + { + "name": "get_first_rows", + "description": "Get first rows from a Hugging Face dataset split", + "inputSchema": { + "type": "object", + "properties": { + "dataset": { + "type": "string", + "description": "Hugging Face dataset identifier in the format owner/dataset", + "pattern": "^[^/]+/[^/]+$", + "examples": [ + "ylecun/mnist", + "stanfordnlp/imdb" + ] + }, + "config": { + "type": "string", + "description": "Dataset configuration/subset name. Use get_info to list available configs", + "examples": [ + "default", + "en", + "es" + ] + }, + "split": { + "type": "string", + "description": "Dataset split name. Splits partition the data for training/evaluation", + "examples": [ + "train", + "validation", + "test" + ] + }, + "auth_token": { + "type": "string", + "description": "Hugging Face auth token for private/gated datasets", + "optional": true + } + }, + "required": [ + "dataset", + "config", + "split" + ] + } + }, + { + "name": "search_dataset", + "description": "Search for text within a Hugging Face dataset", + "inputSchema": { + "type": "object", + "properties": { + "dataset": { + "type": "string", + "description": "Hugging Face dataset identifier in the format owner/dataset", + "pattern": "^[^/]+/[^/]+$", + "examples": [ + "ylecun/mnist", + "stanfordnlp/imdb" + ] + }, + "config": { + "type": "string", + "description": "Dataset configuration/subset name. Use get_info to list available configs", + "examples": [ + "default", + "en", + "es" + ] + }, + "split": { + "type": "string", + "description": "Dataset split name. Splits partition the data for training/evaluation", + "examples": [ + "train", + "validation", + "test" + ] + }, + "query": { + "type": "string", + "description": "Text to search for in the dataset" + }, + "auth_token": { + "type": "string", + "description": "Hugging Face auth token for private/gated datasets", + "optional": true + } + }, + "required": [ + "dataset", + "config", + "split", + "query" + ] + } + }, + { + "name": "filter", + "description": "Filter rows in a Hugging Face dataset using SQL-like conditions", + "inputSchema": { + "type": "object", + "properties": { + "dataset": { + "type": "string", + "description": "Hugging Face dataset identifier in the format owner/dataset", + "pattern": "^[^/]+/[^/]+$", + "examples": [ + "ylecun/mnist", + "stanfordnlp/imdb" + ] + }, + "config": { + "type": "string", + "description": "Dataset configuration/subset name. Use get_info to list available configs", + "examples": [ + "default", + "en", + "es" + ] + }, + "split": { + "type": "string", + "description": "Dataset split name. Splits partition the data for training/evaluation", + "examples": [ + "train", + "validation", + "test" + ] + }, + "where": { + "type": "string", + "description": "SQL-like WHERE clause to filter rows", + "examples": [ + "column = \"value\"", + "score > 0.5", + "text LIKE \"%query%\"" + ] + }, + "orderby": { + "type": "string", + "description": "SQL-like ORDER BY clause to sort results", + "optional": true, + "examples": [ + "column ASC", + "score DESC", + "name ASC, id DESC" + ] + }, + "page": { + "type": "integer", + "description": "Page number for paginated results (100 rows per page)", + "default": 0, + "minimum": 0 + }, + "auth_token": { + "type": "string", + "description": "Hugging Face auth token for private/gated datasets", + "optional": true + } + }, + "required": [ + "dataset", + "config", + "split", + "where" + ] + } + }, + { + "name": "get_statistics", + "description": "Get statistics about a Hugging Face dataset", + "inputSchema": { + "type": "object", + "properties": { + "dataset": { + "type": "string", + "description": "Hugging Face dataset identifier in the format owner/dataset", + "pattern": "^[^/]+/[^/]+$", + "examples": [ + "ylecun/mnist", + "stanfordnlp/imdb" + ] + }, + "config": { + "type": "string", + "description": "Dataset configuration/subset name. Use get_info to list available configs", + "examples": [ + "default", + "en", + "es" + ] + }, + "split": { + "type": "string", + "description": "Dataset split name. Splits partition the data for training/evaluation", + "examples": [ + "train", + "validation", + "test" + ] + }, + "auth_token": { + "type": "string", + "description": "Hugging Face auth token for private/gated datasets", + "optional": true + } + }, + "required": [ + "dataset", + "config", + "split" + ] + } + }, + { + "name": "get_parquet", + "description": "Export Hugging Face dataset split as Parquet file", + "inputSchema": { + "type": "object", + "properties": { + "dataset": { + "type": "string", + "description": "Hugging Face dataset identifier in the format owner/dataset", + "pattern": "^[^/]+/[^/]+$", + "examples": [ + "ylecun/mnist", + "stanfordnlp/imdb" + ] + }, + "auth_token": { + "type": "string", + "description": "Hugging Face auth token for private/gated datasets", + "optional": true + } + }, + "required": [ + "dataset" + ] + } + }, + { + "name": "validate", + "description": "Check if a Hugging Face dataset exists and is accessible", + "inputSchema": { + "type": "object", + "properties": { + "dataset": { + "type": "string", + "description": "Hugging Face dataset identifier in the format owner/dataset", + "pattern": "^[^/]+/[^/]+$", + "examples": [ + "ylecun/mnist", + "stanfordnlp/imdb" + ] + }, + "auth_token": { + "type": "string", + "description": "Hugging Face auth token for private/gated datasets", + "optional": true + } + }, + "required": [ + "dataset" + ] + } + } + ] + }, + "intercom": { + "name": "intercom", + "display_name": "Intercom Support Server", + "description": "An MCP-compliant server for retrieving customer support tickets from Intercom. This tool enables AI assistants like Claude Desktop and Cline to access and analyze your Intercom support tickets.", + "repository": { + "type": "git", + "url": "https://github.com/raoulbia-ai/mcp-server-for-intercom" + }, + "homepage": "https://github.com/raoulbia-ai/mcp-server-for-intercom", + "author": { + "name": "raoulbia-ai" + }, + "license": "Apache-2.0", + "categories": [ + "Messaging" + ], + "tags": [ + "Intercom", + "support-tickets", + "API" + ], + "examples": [ + { + "title": "List Tickets Example", + "description": "Retrieve support tickets from Intercom between specific dates", + "prompt": "{\"startDate\":\"15/01/2025\",\"endDate\":\"21/01/2025\",\"keyword\":\"billing\"}" + } + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "https://github.com/raoulbia-ai/mcp-server-for-intercom" + ], + "env": { + "INTERCOM_ACCESS_TOKEN": "your-intercom-access-token" + } + } + }, + "arguments": { + "INTERCOM_ACCESS_TOKEN": { + "description": "Your Intercom API token used to authenticate requests to the Intercom API.", + "required": true, + "example": "your_intercom_api_token" + } + } + }, + "xero-mcp-server@john-zhang-dev": { + "name": "@john-zhang-dev/xero-mcp-server", + "display_name": "Xero", + "description": "Enabling clients to interact with Xero system for streamlined accounting, invoicing, and business operations.", + "repository": { + "type": "git", + "url": "https://github.com/john-zhang-dev/xero-mcp" + }, + "license": "MIT", + "examples": [ + { + "title": "Visualize my financial position over the last month", + "description": "", + "prompt": "Visualize my financial position over the last month" + }, + { + "title": "Track my spendings over last week", + "description": "", + "prompt": "Track my spendings over last week" + }, + { + "title": "Add all transactions from the monthly statement into my revenue account (account code 201) as receive money", + "description": "", + "prompt": "Add all transactions from the monthly statement into my revenue account (account code 201) as receive money" + } + ], + "author": { + "name": "john-zhang-dev" + }, + "homepage": "https://github.com/john-zhang-dev/xero-mcp", + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "xero-mcp@latest" + ], + "env": { + "XERO_CLIENT_ID": "${XERO_CLIENT_ID}", + "XERO_CLIENT_SECRET": "${XERO_CLIENT_SECRET}", + "XERO_REDIRECT_URI": "${XERO_REDIRECT_URI}" + } + } + }, + "arguments": { + "XERO_CLIENT_ID": { + "description": "The Client ID obtained from the Xero Developer center after creating an OAuth 2.0 app, required for authentication.", + "required": true, + "example": "YOUR_CLIENT_ID" + }, + "XERO_CLIENT_SECRET": { + "description": "The Client Secret generated in the Xero Developer center, necessary for authenticating requests.", + "required": true, + "example": "YOUR_CLIENT_SECRET" + }, + "XERO_REDIRECT_URI": { + "description": "The URI to redirect to after authentication, should typically match the redirect URI specified in the OAuth 2.0 app settings.", + "required": false, + "example": "http://localhost:5000/callback" + } + }, + "categories": [ + "Finance" + ], + "tools": [ + { + "name": "authenticate", + "description": "Authenticate with Xero using OAuth2", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "create_bank_transactions", + "description": "Creates one or more spent or received money transaction. Only use this tool when user has directly and explicitly ask you to create transactions.", + "inputSchema": { + "type": "object", + "description": "Transactions with an array of BankTransaction objects to create", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "Warnings": { + "description": "Displays array of warning messages from the API", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidationError" + } + }, + "BankTransactions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BankTransaction" + } + } + }, + "example": "{ bankTransactions: [{ type: \"SPEND\", date: \"2023-01-01\", reference: \"INV-001\", subTotal: \"100\", total: \"115\", totalTax: \"15\", lineItems: [{ accountCode: \"401\", description: \"taxi fare\", lineAmount: \"115\" }], contact: { contactId: \"00000000-0000-0000-0000-000000000000\", name: \"John Doe\" }, \"bankAccount\": { \"accountID\": \"6f7594f2-f059-4d56-9e67-47ac9733bfe9\", \"Code\": \"088\", \"Name\": \"Business Wells Fargo\" } }]}" + } + }, + { + "name": "create_contacts", + "description": "Creates one or multiple contacts in a Xero organisation. Only use this tool when user has directly and explicitly ask you to create contact.", + "inputSchema": { + "type": "object", + "description": "Contacts with an array of Contact objects to create", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "Warnings": { + "description": "Displays array of warning messages from the API", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidationError" + } + }, + "Contacts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Contact" + } + } + }, + "example": "{ contacts: [{ name: \"John Doe\" }]}" + } + }, + { + "name": "get_balance_sheet", + "description": "Returns a balance sheet for the end of the month of the specified date. It also returns the value at the end of the same month for the previous year.", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "list_accounts", + "description": "Retrieves the full chart of accounts", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "list_bank_transactions", + "description": "Retrieves any spent or received money transactions", + "inputSchema": { + "type": "object", + "properties": { + "where": { + "type": "string", + "description": "Filter bank transactions. See example", + "example": "Date >= DateTime(2015, 01, 01) && Date < DateTime(2015, 12, 31)" + } + } + } + }, + { + "name": "list_contacts", + "description": "Retrieves all contacts in a Xero organisation", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "list_invoices", + "description": "Retrieves sales invoices or purchase bills", + "inputSchema": { + "type": "object", + "properties": { + "where": { + "type": "string", + "description": "Filter invoices. See example", + "example": "Date >= DateTime(2015, 01, 01) && Date < DateTime(2015, 12, 31), DueDate < DateTime(2015, 12, 31)" + } + } + } + }, + { + "name": "list_journals", + "description": "Retrieves journals", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "list_organisations", + "description": "Retrieves Xero organisation details", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "list_payments", + "description": "Retrieves payments for invoices and credit notes", + "inputSchema": { + "type": "object", + "properties": { + "where": { + "type": "string", + "description": "Filter payments. See example", + "example": "Date >= DateTime(2015, 01, 01) && Date < DateTime(2015, 12, 31)" + } + } + } + }, + { + "name": "list_quotes", + "description": "Retrieves sales quotes", + "inputSchema": { + "type": "object", + "properties": {} + } + } + ] + }, + "vega-lite": { + "name": "vega-lite", + "display_name": "Vega-Lite Data Visualization", + "description": "Generate visualizations from fetched data using the VegaLite format and renderer.", + "repository": { + "type": "git", + "url": "https://github.com/isaacwasserman/mcp-vegalite-server" + }, + "homepage": "https://github.com/isaacwasserman/mcp-vegalite-server", + "author": { + "name": "isaacwasserman" + }, + "license": "[NOT FOUND]", + "categories": [ + "Media Creation" + ], + "tags": [ + "visualization", + "data", + "vega-lite" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/isaacwasserman/mcp-vegalite-server", + "mcp_server_vegalite" + ] + } + }, + "examples": [ + { + "title": "Saving Data", + "description": "Use the save_data tool to save a table of data for visualization.", + "prompt": "save_data(name='my_table', data=[{'x': 1, 'y': 2}, {'x': 2, 'y': 3}])" + }, + { + "title": "Visualizing Data", + "description": "Use the visualize_data tool to visualize saved data using Vega-Lite syntax.", + "prompt": "visualize_data(data_name='my_table', vegalite_specification='{\"mark\": \"point\", \"encoding\": {\"x\":{\"field\":\"x\",\"type\":\"quantitative\"},\"y\":{\"field\":\"y\",\"type\":\"quantitative\"}}}')" + } + ], + "tools": [ + { + "name": "save_data", + "description": "A tool which allows you to save data to a named table for later use in visualizations.\nWhen to use this tool:\n- Use this tool when you have data that you want to visualize later.\nHow to use this tool:\n- Provide the name of the table to save the data to (for later reference) and the data itself.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the table to save the data to" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "description": "Row of the table as a dictionary/object" + }, + "description": "The data to save" + } + }, + "required": [ + "name", + "data" + ] + } + }, + { + "name": "visualize_data", + "description": "A tool which allows you to produce a data visualization using the Vega-Lite grammar.\nWhen to use this tool:\n- At times, it will be advantageous to provide the user with a visual representation of some data, rather than just a textual representation.\n- This tool is particularly useful when the data is complex or has many dimensions, making it difficult to understand in a tabular format. It is not useful for singular data points.\nHow to use this tool:\n- Prior to visualization, data must be saved to a named table using the save_data tool.\n- After saving the data, use this tool to visualize the data by providing the name of the table with the saved data and a Vega-Lite specification.", + "inputSchema": { + "type": "object", + "properties": { + "data_name": { + "type": "string", + "description": "The name of the data table to visualize" + }, + "vegalite_specification": { + "type": "string", + "description": "The vegalite v5 specification for the visualization. Do not include the data field, as this will be added automatically." + } + }, + "required": [ + "data_name", + "vegalite_specification" + ] + } + } + ] + }, + "glean": { + "name": "glean", + "display_name": "Glean", + "description": "A server that uses Glean API to search and chat.", + "repository": { + "type": "git", + "url": "https://github.com/longyi1207/glean-mcp-server" + }, + "homepage": "https://github.com/longyi1207/glean-mcp-server", + "author": { + "name": "longyi1207", + "url": "https://github.com/longyi1207" + }, + "license": "MIT", + "categories": [ + "Knowledge Base" + ], + "tags": [ + "glean", + "search", + "chat", + "docker" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "https://github.com/longyi1207/glean-mcp-server" + ], + "env": { + "GLEAN_API_KEY": "YOUR_API_KEY_HERE", + "GLEAN_DOMAIN": "YOUR_DOMAIN_HERE" + } + } + }, + "arguments": { + "GLEAN_API_KEY": { + "description": "The API key required to authenticate with the Glean API.", + "required": true, + "example": "YOUR_API_KEY_HERE" + }, + "GLEAN_DOMAIN": { + "description": "The domain used for the Glean API service operations.", + "required": true, + "example": "YOUR_DOMAIN_HERE" + } + } + }, + "google-drive": { + "name": "google-drive", + "display_name": "Google Drive", + "description": "File access and search capabilities for Google Drive", + "repository": { + "type": "git", + "url": "https://github.com/modelcontextprotocol/servers" + }, + "homepage": "https://github.com/modelcontextprotocol/servers/blob/main/src/gdrive", + "author": { + "name": "modelcontextprotocol" + }, + "license": "MIT", + "categories": [ + "Productivity" + ], + "tags": [ + "google drive", + "files", + "API" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "@modelcontextprotocol/server-gdrive" + ] + }, + "docker": { + "type": "docker", + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-v", + "mcp-gdrive:/gdrive-server", + "-e", + "GDRIVE_CREDENTIALS_PATH=/gdrive-server/credentials.json", + "mcp/gdrive" + ] + } + }, + "tools": [ + { + "name": "search", + "description": "Search for files in Google Drive.", + "inputSchema": { + "query": { + "type": "string", + "description": "Search query" + } + }, + "required": [ + "query" + ] + } + ], + "is_official": true + }, + "excel": { + "name": "excel", + "display_name": "Excel", + "description": "Excel manipulation including data reading/writing, worksheet management, formatting, charts, and pivot table.", + "repository": { + "type": "git", + "url": "https://github.com/haris-musa/excel-mcp-server" + }, + "homepage": "https://github.com/haris-musa/excel-mcp-server", + "author": { + "name": "haris-musa" + }, + "license": "MIT", + "categories": [ + "Productivity" + ], + "tags": [ + "Excel Manipulation", + "Python" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/haris-musa/excel-mcp-server", + "excel-mcp-server" + ], + "env": { + "EXCEL_FILES_PATH": "${EXCEL_FILES_PATH}" + } + } + }, + "arguments": { + "EXCEL_FILES_PATH": { + "description": "Directory where Excel files will be stored.", + "required": false, + "example": "/path/to/excel/files" + } + }, + "tools": [ + { + "name": "create_workbook", + "description": "Creates a new Excel workbook.", + "inputSchema": { + "filepath": { + "type": "string" + } + }, + "required": [ + "filepath" + ] + }, + { + "name": "create_worksheet", + "description": "Creates a new worksheet in an existing workbook.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + } + }, + "required": [ + "filepath", + "sheet_name" + ] + }, + { + "name": "get_workbook_metadata", + "description": "Get metadata about workbook including sheets and ranges.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "include_ranges": { + "type": "boolean" + } + }, + "required": [ + "filepath" + ] + }, + { + "name": "write_data_to_excel", + "description": "Write data to Excel worksheet.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + }, + "data": { + "type": "array" + }, + "start_cell": { + "type": "string" + } + }, + "required": [ + "filepath", + "sheet_name", + "data" + ] + }, + { + "name": "read_data_from_excel", + "description": "Read data from Excel worksheet.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + }, + "start_cell": { + "type": "string" + }, + "end_cell": { + "type": "string" + }, + "preview_only": { + "type": "boolean" + } + }, + "required": [ + "filepath", + "sheet_name" + ] + }, + { + "name": "format_range", + "description": "Apply formatting to a range of cells.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + }, + "start_cell": { + "type": "string" + }, + "end_cell": { + "type": "string" + }, + "bold": { + "type": "boolean" + }, + "italic": { + "type": "boolean" + }, + "underline": { + "type": "boolean" + }, + "font_size": { + "type": "integer" + }, + "font_color": { + "type": "string" + }, + "bg_color": { + "type": "string" + }, + "border_style": { + "type": "string" + }, + "border_color": { + "type": "string" + }, + "number_format": { + "type": "string" + }, + "alignment": { + "type": "string" + }, + "wrap_text": { + "type": "boolean" + }, + "merge_cells": { + "type": "boolean" + }, + "protection": { + "type": "object" + }, + "conditional_format": { + "type": "object" + } + }, + "required": [ + "filepath", + "sheet_name", + "start_cell" + ] + }, + { + "name": "merge_cells", + "description": "Merge a range of cells.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + }, + "start_cell": { + "type": "string" + }, + "end_cell": { + "type": "string" + } + }, + "required": [ + "filepath", + "sheet_name", + "start_cell", + "end_cell" + ] + }, + { + "name": "unmerge_cells", + "description": "Unmerge a previously merged range of cells.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + }, + "start_cell": { + "type": "string" + }, + "end_cell": { + "type": "string" + } + }, + "required": [ + "filepath", + "sheet_name", + "start_cell", + "end_cell" + ] + }, + { + "name": "apply_formula", + "description": "Apply Excel formula to cell.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + }, + "cell": { + "type": "string" + }, + "formula": { + "type": "string" + } + }, + "required": [ + "filepath", + "sheet_name", + "cell", + "formula" + ] + }, + { + "name": "validate_formula_syntax", + "description": "Validate Excel formula syntax without applying it.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + }, + "cell": { + "type": "string" + }, + "formula": { + "type": "string" + } + }, + "required": [ + "filepath", + "sheet_name", + "cell", + "formula" + ] + }, + { + "name": "create_chart", + "description": "Create chart in worksheet.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + }, + "data_range": { + "type": "string" + }, + "chart_type": { + "type": "string" + }, + "target_cell": { + "type": "string" + }, + "title": { + "type": "string" + }, + "x_axis": { + "type": "string" + }, + "y_axis": { + "type": "string" + } + }, + "required": [ + "filepath", + "sheet_name", + "data_range", + "chart_type", + "target_cell" + ] + }, + { + "name": "create_pivot_table", + "description": "Create pivot table in worksheet.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + }, + "data_range": { + "type": "string" + }, + "target_cell": { + "type": "string" + }, + "rows": { + "type": "array" + }, + "values": { + "type": "array" + }, + "columns": { + "type": "array" + }, + "agg_func": { + "type": "string" + } + }, + "required": [ + "filepath", + "sheet_name", + "data_range", + "target_cell", + "rows", + "values" + ] + }, + { + "name": "copy_worksheet", + "description": "Copy worksheet within workbook.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "source_sheet": { + "type": "string" + }, + "target_sheet": { + "type": "string" + } + }, + "required": [ + "filepath", + "source_sheet", + "target_sheet" + ] + }, + { + "name": "delete_worksheet", + "description": "Delete worksheet from workbook.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + } + }, + "required": [ + "filepath", + "sheet_name" + ] + }, + { + "name": "rename_worksheet", + "description": "Rename worksheet in workbook.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "old_name": { + "type": "string" + }, + "new_name": { + "type": "string" + } + }, + "required": [ + "filepath", + "old_name", + "new_name" + ] + }, + { + "name": "copy_range", + "description": "Copy a range of cells to another location.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + }, + "source_start": { + "type": "string" + }, + "source_end": { + "type": "string" + }, + "target_start": { + "type": "string" + }, + "target_sheet": { + "type": "string" + } + }, + "required": [ + "filepath", + "sheet_name", + "source_start", + "source_end", + "target_start" + ] + }, + { + "name": "delete_range", + "description": "Delete a range of cells and shift remaining cells.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + }, + "start_cell": { + "type": "string" + }, + "end_cell": { + "type": "string" + }, + "shift_direction": { + "type": "string" + } + }, + "required": [ + "filepath", + "sheet_name", + "start_cell", + "end_cell" + ] + }, + { + "name": "validate_excel_range", + "description": "Validate if a range exists and is properly formatted.", + "inputSchema": { + "filepath": { + "type": "string" + }, + "sheet_name": { + "type": "string" + }, + "start_cell": { + "type": "string" + }, + "end_cell": { + "type": "string" + } + }, + "required": [ + "filepath", + "sheet_name", + "start_cell" + ] + } + ] + }, + "edubase": { + "display_name": "EduBase MCP server", + "repository": { + "type": "git", + "url": "https://github.com/EduBase/MCP" + }, + "homepage": "https://www.edubase.net", + "author": { + "name": "EduBase" + }, + "license": "MIT", + "tags": [ + "education", + "learning", + "quiz", + "assessment", + "API" + ], + "arguments": { + "EDUBASE_API_URL": { + "description": "URL to the EduBase API", + "required": true, + "example": "https://domain.edubase.net/api" + }, + "EDUBASE_API_APP": { + "description": "Your integration app ID", + "required": true, + "example": "your_integration_app_id" + }, + "EDUBASE_API_KEY": { + "description": "Your integration secret key", + "required": true, + "example": "your_integration_secret_key" + } + }, + "installations": { + "docker": { + "type": "docker", + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "EDUBASE_API_URL", + "-e", + "EDUBASE_API_APP", + "-e", + "EDUBASE_API_KEY", + "edubase/mcp" + ], + "env": { + "EDUBASE_API_URL": "https://domain.edubase.net/api", + "EDUBASE_API_APP": "your_integration_app_id", + "EDUBASE_API_KEY": "your_integration_secret_key" + }, + "description": "Run using Docker", + "recommended": false + }, + "custom": { + "type": "custom", + "command": "node", + "args": [ + "/path/to/dist/index.js" + ], + "env": { + "EDUBASE_API_URL": "https://domain.edubase.net/api", + "EDUBASE_API_APP": "your_integration_app_id", + "EDUBASE_API_KEY": "your_integration_secret_key" + }, + "description": "Run using Node.js", + "recommended": true + } + }, + "examples": [ + { + "title": "Collaborative Education Management", + "description": "Collaboratively creating and uploading questions, scheduling exams and analyzing user results with Claude", + "prompt": "I'd like to create a new quiz in EduBase with 5 multiple choice questions about basic algebra." + } + ], + "name": "edubase", + "description": " ", + "categories": [ + "MCP Tools" + ], + "tools": [ + { + "name": "edubase_get_question", + "description": "Check existing question. Questions are the lowest level in the EduBase hierarchy, serving as the building blocks for Quiz sets.", + "inputSchema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "external unique question identifier" + } + }, + "required": [ + "id" + ] + } + }, + { + "name": "edubase_post_question", + "description": "Publish or update a question. Questions are the atomic building blocks of the EduBase Quiz system and represent the lowest level in the hierarchy (Questions -> Quiz sets -> Exams).", + "inputSchema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "External unique question identifier for question management.\nOn repeated uploads, the questions are updated (rather then added) based on this value, which can be an arbitrary text.\nIf the question already exists at upload time with the same external identifier (in the given folder or Quiz set), the existing question will be updated instead of being added as a new one.\n- Use cases:\n - Integration with external systems\n - Version control\n - Batch updates\n - Content synchronization\n- Best practices:\n - Use consistent naming conventions\n - Include version, source or date information\n - Consider hierarchical IDs for related content\nExample:\n- id=MATHEMATICS_ARITHMETIC_BASIC_ADDITION_STATIC_001\n- type=numerical\n- question=What is 2+2?\n- answer=4" + }, + "type": { + "type": "string", + "description": "Type of the question.\nEduBase supports various question types to accommodate different assessment needs:\n- Basic Types:\n - GENERIC: Strict matching including spaces and punctuation\n - TEXT: Basic text input with flexible matching (ignores spaces and punctuation)\n - FREE-TEXT: Extended text response with semi-automatic grading\n - READING: Non-assessed text display for complex question groups\n- Choice-Based Types:\n - CHOICE: Single correct answer selection\n - MULTIPLE-CHOICE: Multiple correct answers\n - ORDER: Sequence arrangement (arrange items in correct order)\n - TRUE/FALSE: Statement evaluation (true statements in ANSWER, false in OPTIONS)\n- Numerical Types:\n - NUMERIC: Numerical value validation with fractions, constants, intervals\n - DATE/TIME: Calendar date validation with adjustable precision\n - EXPRESSION: Mathematical expression evaluation\n- Advanced Types:\n - MATRIX/MATRIX:EXPRESSION: Matrix evaluation (format: [a;b|c;d] for 2x2)\n - SET/SET:TEXT: Unordered collection validation\n - FILE: File submission evaluation\nExample:\ntype=numerical" + }, + "question": { + "type": "string", + "description": "The main question text that will be displayed to the test taker.\nSupports rich formatting options:\n- LaTeX Support (requires QUESTION_FORMAT=LATEX):\n - Inline: $$...$$\n - Block: $$$$...$$$$\n - IMPORTANT: When using LaTeX in questions, you MUST use double dollar signs ($$...$$) for inline math or quadruple dollar signs ($$$$...$$$$) for block math.\n - Single dollar signs ($...$) are NOT supported and will not render correctly. The inline or block method must be used, as $...$ won't work!\n- Parameters: Use curly braces {parameter_name} (defined in PARAMETERS field)\n- Quick expressions: Use ~~~expression~~~ for simple parameter calculations, e.g., area of a circle is ~~~{r}*{r}*pi~~~\n- Style formatting with EduTags:\n - Bold: [[B]]...[[/B]]\n - Italic: [[I]]...[[/I]]\n - Underline: [[U]]...[[/U]]\n - Subscript: [[SUB]]...[[/SUB]], Superscript: [[SUP]]...[[/SUP]]\n - Code: [[CODE]]...[[/CODE]], [[CODEBLOCK]]...[[/CODEBLOCK]]\n - Colors: [[COLOR:{color}]]...[[/COLOR]], [[BACKGROUND:{color}]]...[[/BACKGROUND]]\n- Tables: Use [[..]] format with semicolons for columns, vertical bars for rows, e.g., [[Header 1; Header 2 | Data 1; Data 2]]\n- Answer placeholders: [[___]] (3 underscores), for fill-in-the-gaps\nExample:\nquestion=Calculate the area of a circle with radius {r} using $$A = \\pi r^2$$" + }, + "question_format": { + "type": "string", + "description": "Controls question text rendering.\n- NORMAL: Default text formatting with standard font size, recommended for most tasks\n- LATEX: Enables LaTeX for mathematical, scientific notations (using KaTeX)\n- LONG: Smaller font with automatic paragraph breaks (ideal for lengthy text)\nExample:\nquestion_format=LATEX" + }, + "answer": { + "type": "string", + "description": "The correct answer(s) for the question.\n- For multiple answers, separate with triple-and operator (\"&&&\")\n- Parameters can be used in curly braces {param_name}\n- LaTeX Support (requires QUESTION_FORMAT=LATEX):\n - Inline: $$...$$\n - Block: $$$$...$$$$\n - IMPORTANT: When using LaTeX in answer, you MUST use double dollar signs ($$...$$) for inline math or quadruple dollar signs ($$$$...$$$$) for block math.\n - Single dollar signs ($...$) are NOT supported and will not render correctly. The inline or block method must be used, as $...$ won't work!\n- Usage by question type:\n - CHOICE: The correct option\n - MULTIPLE-CHOICE: All correct options\n - TEXT/NUMERICAL/EXPRESSION: Expected response(s)\n - ORDER: Items in correct sequence\n - TRUE/FALSE: True statements (false statements go in OPTIONS)\n - MATRIX types: Use format [a;b|c;d] for matrices\n - SET types: Unordered collection of elements\nExample:\nanswer=Paris\nanswer=sin(x)^2+cos(x)^2 # with type = EXPRESSION\nanswer=$$sin^2(x)+cos^2(x)$$ # with type = CHOICE so it renders correctly" + }, + "language": { + "type": "string", + "description": "The language of the question.\n- Alpha-2 code according to ISO 639-1\nExample:\nlanguage=hu # Hungarian" + }, + "image": { + "type": "string", + "description": "Attach an image to the question.\nSupported formats: PNG, JPEG, WebP\nFormat: filename=data, where data is either a base64-encoded image or a URL" + }, + "answer_order": { + "type": "string", + "description": "Controls whether the sequence of multiple answers matters.\n- Plus sign (+) to indicate YES\n- Blank field or minus sign (-) indicates NO (default)\n- When using answer_label, this is automatically activated\n- Essential for questions where sequence is important (e.g., steps in a process)\nExample:\nanswer_order=+\nExample API call:\nid=europe_cities_population\ntype=text\nquestion=List the following European cities in descending order by population (largest first)\nanswer=London &&& Madrid &&& Paris\nanswer_order=+" + }, + "answer_label": { + "type": "string", + "description": "Text displayed in/above the input field during the test.\n- Separate multiple labels with triple-and operators (\"&&&\")\n- Automatically activates the answer_order function\n- Perfect for multi-part questions where each part needs clear labeling\n- Useful for creating pairing/matching questions\nExample:\nanswer_label=a) Distance (km) &&& b) Time (hours) &&& c) Speed (km/h)\nExample API call:\nid=basic_math\ntype=numerical\nquestion=Given the number 16:\\n\\na) What is double this number?\\n\\nb) What is half of this number?\\n\\nc) What is this number plus 10?\nanswer=32 &&& 8 &&& 26\nanswer_label=a) Double &&& b) Half &&& c) Plus 10\npoints=3" + }, + "answer_hide": { + "type": "string", + "description": "Controls whether correct answers are hidden on the results page.\n- Plus sign (+) to indicate YES\n- Blank field or minus sign (-) indicates NO (default)\n- Useful for test security and preventing answer sharing\n- Critical for reusable questions and practice tests\nExample:\nanswer_hide=+\nExample API call:\nid=uk_countries\ntype=text\nquestion=Name any of the countries within the United Kingdom!\nanswer=England &&& Northern Ireland &&& Scotland &&& Wales\nanswer_require=1\nanswer_hide=+" + }, + "answer_indefinite": { + "type": "string", + "description": "Allows users to add any number of input fields using + and - buttons.\n- Plus sign (+) to indicate YES\n- Blank field or minus sign (-) indicates NO (default)\n- Answer labels will not appear when this is enabled\n- Ideal for brainstorming exercises or questions with variable number of answers\nExample:\nanswer_indefinite=+\nExample API call:\nid=name_countries\ntype=text\nquestion=Name as many European countries as you can think of.\nanswer=France &&& Germany &&& Italy &&& Spain &&& United Kingdom &&& ...\nanswer_indefinite=+" + }, + "answer_format": { + "type": "string", + "description": "Defines how to display the answer on the results page.\n- Only applicable for FREE-TEXT questions\n- Format: type or type:value\n- Available types:\n - normal: standard text (default)\n - code: with syntax highlighting (specify language after colon)\nExample:\nanswer_format=code:python\nanswer_format=code:sql\nExample API call:\nid=sql_basics\ntype=free-text\nquestion=Write a SQL query to select all columns from the \"users\" table where the age is greater than 18.\nanswer=SELECT * FROM users WHERE age > 18\nanswer_format=code:sql" + }, + "answer_require": { + "type": "string", + "description": "Number of answers required for maximum score.\n- Not applicable for CHOICE and FREE-TEXT questions\n- Perfect for questions with multiple valid answers where only a subset needs to be provided\n- Useful when asking students to provide any X examples from a larger set\nExample:\nanswer_require=3\nExample API call:\nid=uk_countries\ntype=text\nquestion=Name any one of the countries within the United Kingdom!\nanswer=England &&& Northern Ireland &&& Scotland &&& Wales\nanswer_require=1" + }, + "subject": { + "type": "string", + "description": "Subject classification for organizing questions.\n- Provides primary categorization for content organization\n- Use the question editor in the EduBase UI for an up-to-date list of possible values\nExample:\nsubject=Mathematics\ncategory=Algebra" + }, + "category": { + "type": "string", + "description": "Category, another layer of organization as seen in SUBJECT" + }, + "path": { + "type": "string", + "description": "Path where question will be stored in personal QuestionBase.\n- Default: /API\n- Supports hierarchical structure with forward slashes\n- Always start with a forward slash!\nExample:\npath=/Mathematics/Calculus/Derivatives" + }, + "options": { + "type": "string", + "description": "Incorrect options or false statements for choice-based question types.\n- Required for CHOICE, MULTIPLE-CHOICE question types\n- For TRUE/FALSE, these are the false statements (ANSWER contains true statements)\n- Separate multiple options with triple-and operators (\"&&&\")\n- Parameters can be used in curly braces {param_name}\n- LaTeX Support (requires QUESTION_FORMAT=LATEX):\n - Inline: $$...$$\n - Block: $$$$...$$$$\n - IMPORTANT: When using LaTeX in questions, you MUST use double dollar signs ($$...$$) for inline math or quadruple dollar signs ($$$$...$$$$) for block math.\n - Single dollar signs ($...$) are NOT supported and will not render correctly. The inline or block method must be used, as $...$ won't work!\nExample:\noptions=London &&& Berlin &&& Madrid\nExample API call:\nid=capital_france\ntype=choice\nquestion=What is the capital of France?\nanswer=Paris\noptions=London &&& Berlin &&& Madrid" + }, + "options_fix": { + "type": "string", + "description": "Controls the arrangement of answers and options.\n- Available values:\n - all: Answers appear first, followed by options\n - abc: Sort all items (answers and options) alphabetically\n - first:N: Place first N options at the end\n - last:N: Place last N options at the end\n - answers: Place all answers at the end\n- Useful for maintaining consistent presentation or for specific pedagogical purposes\nFor alphabetical ordering:\n- When migrating content from textbooks or past exams, can maintain original lettering system (a, b, c...) for:\n - Reference consistency with printed materials\n - Alignment with answer keys\n - Compatibility with existing grading systems\n - Cross-referencing with study guides\n- Particularly valuable when:\n - Test takers need to refer to both digital and printed materials\n - Questions are part of a larger standardized test system\n - Maintaining consistency with existing worksheets or textbooks\n - Digitizing legacy assessment materials\nExample:\noptions_fix=abc\nExample API call:\nid=fruit_types\ntype=multiple-choice\nquestion=Which of these are citrus fruits?\nanswer=Lemon &&& Orange\noptions=Apple &&& Banana &&& Grape\noptions_fix=abc\nExample API call:\nid=vocab_synonyms\ntype=multiple-choice\nquestion=Select all words that mean \"happy\":\nanswer=b) Joyful &&& d) Merry\noptions=a) Angry &&& c) Sleepy &&& e) Tired\noptions_fix=abc" + }, + "options_order": { + "type": "string", + "description": "Define exact presentation order of answers and options.\n- Format: ANSWER:N or OPTION:N items separated by \"&&&\"\n- ANSWER:N references the Nth provided answer\n- OPTION:N references the Nth provided option\n- OPTION_NONE:N references the Nth third option (for TRUE/FALSE questions)\n- All answers and options must be specified exactly once\nExample:\noptions_order=OPTION:0 &&& ANSWER:0 &&& OPTION:1 &&& ANSWER:1\nExample API call to create a chronologically ordered timeline\nid=historical_chronology\ntype=multiple-choice\nquestion=Which of these events occurred during the Industrial Revolution (1760-1840)?\nanswer=Invention of the Steam Engine &&& First Steam Locomotive &&& First Commercial Railway\noptions=Printing Press Invented &&& First Electric Light Bulb &&& First Powered Flight\noptions_order=OPTION:0 &&& ANSWER:0 &&& ANSWER:1 &&& ANSWER:2 &&& OPTION:1 &&& OPTION:2" + }, + "points": { + "type": "string", + "description": "Maximum points for a fully correct answer.\n- Default: 1 point\n- For questions with multiple answers, partial credit is possible based on SUBSCORING method\nExample:\npoints=10" + }, + "subscoring": { + "type": "string", + "description": "Method for calculating partial credit for partially correct answers.\n- Not applicable for CHOICE, READING and FREE-TEXT questions\n- Available values:\n - PROPORTIONAL: Points awarded proportionally to correct answers (default)\n - LINEAR_SUBSTRACTED:N: Linear scoring with N points subtracted for each error\n - CUSTOM: Use custom point distribution defined in SUBPOINTS field\n - NONE: No partial credit, all-or-nothing scoring\nExample:\nsubscoring=LINEAR_SUBSTRACTED:2\nExample API call:\nid=math_problem\ntype=numerical\nquestion=What is the sum and product of {a} and {b}?\nanswer={a}+{b} &&& {a}*{b}\nparameters={a; INTEGER; 1; 100} &&& {b; INTEGER; 1; 100}\npoints=4\nsubscoring=CUSTOM\nsubpoints=25 &&& 75" + }, + "subpoints": { + "type": "string", + "description": "Define specific point values for each answer in percentages.\n- Only used when subscoring=CUSTOM\n- Specify percentage values separated by triple-and operators (\"&&&\")\n- Not applicable for CHOICE, READING and FREE-TEXT questions\n- Values should sum to 100 (for percentage)\nExample:\nsubpoints=50 &&& 25 &&& 25\nExample meaning: For a 10-point question with three answers:\n- First answer: 5 points (50%)\n- Second answer: 2.5 points (25%)\n- Third answer: 2.5 points (25%)" + }, + "penalty_scoring": { + "type": "string", + "description": "Controls how penalty points should be applied.\n- Available values:\n - DEFAULT: Standard penalty application, which might vary by question type (default)\n - PER_ANSWER: Apply penalties for each incorrect answer\n - PER_QUESTION: Apply penalties once per question\nExample:\npenalty_scoring=PER_ANSWER" + }, + "penalty_points": { + "type": "string", + "description": "Points deducted for completely incorrect answers.\n- No penalty applied if answer is partially correct\n- No penalty for empty/unanswered questions\n- Use positive values (recommended)\nExample:\npenalty_points=2\nExample API call with penalties:\nid=physics_multiple_choice\ntype=multiple-choice\nquestion=Which of the following are forms of energy? Select all that apply.\nanswer=Kinetic &&& Potential &&& Thermal\noptions=Velocity &&& Acceleration\npoints=3\npenalty_scoring=PER_QUESTION\npenalty_points=1" + }, + "hint_penalty": { + "type": "string", + "description": "Point deduction for using hints/solutions/videos during a test.\n- Format: type or type:value\n- Types:\n - NONE: No penalty (default)\n - ONCE:N%: Single deduction regardless of number used\n - PER-HELP:N%: Deduction for each hint (only for HINT_PENALTY)\nExamples:\nhint_penalty=ONCE:20% or hint_penalty=ONCE:0.2\nhint_penalty=PER-HELP:10%\nsolution_penalty=ONCE:50%\nvideo_penalty=ONCE:15%\nExample API call with comprehensive penalty system:\nid=area_circle_parametric\ntype=expression\nquestion=Find an expression for the area of a circle with radius {r}.\nanswer=pi*{r}^2\nparameters={r; INTEGER; 2; 10}\npoints=10\nsubject=Mathematics\ncategory=Geometry\nhint=Think about the formula for circle area &&& Remember that area involves squaring the radius\nsolution=The formula for circle area is $$\\pi r^2$$\npenalty_scoring=PER_ANSWER\npenalty_points=3\nhint_penalty=PER-HELP:10%\nsolution_penalty=ONCE:50%\n# Each hint used reduces score by 10%, viewing solution reduces score by 50%" + }, + "solution_penalty": { + "type": "string", + "description": "Similar to HINT_PENALTY\nPoint deduction for viewing steps of the solution (NONE, ONCE:N%) (default: NONE)" + }, + "solution_image": { + "type": "string", + "description": "Attach an image to the solution steps.\nSupported formats: PNG, JPEG, WebP\nFormat: filename=data, where data is either a base64-encoded image or a URL" + }, + "video_penalty": { + "type": "string", + "description": "Similar to HINT_PENALTY\nPoint deduction for video assistance used (NONE, ONCE:N%) (default: NONE)" + }, + "manual_scoring": { + "type": "string", + "description": "Controls when to enable manual scoring.\n- Not applicable for READING and FREE-TEXT questions\n- Available values:\n - NO: Never use manual scoring (default)\n - NOT_CORRECT: Only manually score incorrect answers\n - ALWAYS: Always require manual scoring\nExample:\nmanual_scoring=NOT_CORRECT" + }, + "parameters": { + "type": "string", + "description": "Parameter definitions for dynamic question generation.\nOne of EduBase's most powerful features, allowing creation of dynamic questions where each user gets a unique variant of the same question.\n- Separate multiple parameters with triple-and operators (\"&&&\")\n- Up to 128 parameters can be defined\nParameter Types:\n1. FIX (Fixed Value):\n - Format: {name; FIX; value}\n - Sets a predefined constant value (integer or fraction)\n - Example: {pi; FIX; 3.1415}\n2. INTEGER (Whole Numbers):\n - Simple: {name; INTEGER}\n - Extended: {name; INTEGER; min; max}\n - Full: {name; INTEGER; min; max; inside; outside}\n - Generate random integers within specified ranges\n - Use '-' for omitting min/max values\n - Examples:\n * {p; INTEGER} - any integer\n * {p; INTEGER; 10; 20} - integer between 10 and 20 (inclusive)\n * {p; INTEGER; -; -; [10-20]; [12-14] ||| [16-18]} - integer between 10-20, excluding 12-14 and 16-18\n3. FLOAT (Decimal Numbers):\n - Simple: {name; FLOAT; precision}\n - Extended: {name; FLOAT; precision; min; max}\n - Full: {name; FLOAT; precision; min; max; inside; outside}\n - Generate random decimal numbers\n - Specify precision (decimal places)\n - Examples:\n * {p; FLOAT; 2} - float with 2 decimal places\n * {p; FLOAT; 5; 0; 1} - float between 0 and 1 with 5 decimals\n * {p; FLOAT; 1; 0; 10; -; [0-1]} - float between 0-10 excluding 0-1, with 1 decimal\n4. FORMULA (Expressions):\n - Simple: {name; FORMULA; formula}\n - Full: {name; FORMULA; formula; precision}\n - Define parameters based on other parameters\n - Examples:\n * {d; FORMULA; {b}^2-4*{a}*{c}} - quadratic formula discriminant\n * {p; FORMULA; 2*{q}+1} - linear expression\n5. LIST (Random Selection):\n - Format: {name; LIST; value1; value2; value3; ...}\n - Randomly select from predefined values\n - Up to 64 elements\n - Examples:\n * {primes; LIST; 2; 3; 5; 7; 11}\n * {animals; LIST; dog; cat; snake; camel}\n6. PERMUTATION:\n - Format: {name; PERMUTATION; value1; value2; value3; ...}\n - Creates permutated parameters accessible as {name_1}, {name_2}, etc.\n - Example: {p; PERMUTATION; A; B; C; D}\n * So {p_1} will be a different letter than {p_2}\n - Example: {primes; PERMUTATION; 2; 3; 5; 7}\n * So both {primes_1} and {primes_2} will be different single digit primes\n7. FORMAT:\n - Format: {name; FORMAT; parameter; type; ...}\n - Format parameters based on other parameters\n - Supported types: NUMBER, NUMERTEXT, ROMAN\n - Optional extra parameters based on type\n * NUMBER\n * precision: number of decimal places\n - Examples:\n * {pp; FORMAT; p; NUMBER; 1} - format as number rounded to 1 decimal\n * {pp; FORMAT; p; NUMBERTEXT} - format number as text\n * {pp; FORMAT; p; ROMAN} - format number as Roman numeral\nBest Practices:\n - Order parameters so dependent ones come later\n - Use simple notation when possible\n - Avoid unnecessary parameters\n - Use CONSTRAINTS field to ensure valid combinations\nExamples:\nparameters={pi; FIX; 3.14159} &&& {r; INTEGER; 1; 10}\nparameters={a; INTEGER; 1; 5} &&& {b; INTEGER; -10; 10} &&& {c; INTEGER; -10; 10} &&& {d; FORMULA; {b}^2-4*{a}*{c}}\nparameters={country; LIST; France; Germany; Italy} &&& {capital; LIST; Paris; Berlin; Rome}\nparameters_sync=+ # Ensures each country is paired with its correct capital" + }, + "parameters_sync": { + "type": "string", + "description": "Controls synchronization of LIST parameter selections.\n- Plus sign (+) to indicate YES\n- Blank field or minus sign (-) indicates NO (default)\n- When enabled, the Nth value from each LIST is selected together\n- Critical for paired data like countries and capitals\nExample:\nparameters_sync=+\nExample API call:\nid=capital_city\ntype=text\nquestion=What is the capital city of {country}?\nanswer={capital}\nparameters={country; LIST; France; Germany; Italy} &&& {capital; LIST; Paris; Berlin; Rome}\nparameters_sync=+" + }, + "constraints": { + "type": "string", + "description": "Define rules that parameter combinations must satisfy.\n- Mathematical expressions that must evaluate to true\n- Parameters must be in curly braces {param}\n- Allowed relations: <, <=, =, >=, >, <>\n- Multiple constraints separated by triple-and operators (\"&&&\")\nExamples:\nconstraints={b}^2-4*{a}*{c}>0\nconstraints={a}+{b}>{c} &&& {b}+{c}>{a} &&& {c}+{a}>{b}\nconstraints={x}+{y}<10 &&& {x}<4" + }, + "expression_check": { + "type": "string", + "description": "Define how expressions should be validated (RANDOM, EXPLICIT, COMPARE) (default: RANDOM).\n- RANDOM: Evaluates expressions at randomly generated points\n- EXPLICIT: Checks expressions at predefined values against target values\n- COMPARE: Direct comparison of expressions without variables\nExample:\nexpression_check=RANDOM" + }, + "expression_variable": { + "type": "string", + "description": "Specifies variable names used in expressions (separate multiple variables with &&&) (default: x).\n- Multiple variables can be used for multivariable expressions\n- Variable names must be used consistently in answer and validation\nExamples:\nexpression_variable=t &&& v # For distance formula using time and velocity" + }, + "expression_decimals": { + "type": "string", + "description": "Sets precision for decimal calculations (default: 2).\n- Inherited from decimals field if not specified\n- Critical for controlling accurate validation of expressions\nExample:\nexpression_decimals=4 # For high-precision calculations" + }, + "expression_functions": { + "type": "string", + "description": "Controls whether functions can be used in user inputs (+ for yes, - for no) (default: +).\n- Enabled by default with + sign\n- Disable with - sign when students should use alternative forms\n- Affects available input options for test takers\n- Supported functions include:\n * Basic: sqrt, abs, round, floor, ceil\n * Logarithmic: ln, log, log10\n * Trigonometric: sin, cos, tan, csc, sec, arcsin/asin, arccos/acos, arctan/atan\n * Hyperbolic: sinh, cosh, tanh, arcsinh/asinh, arccosh/acosh, arctanh/atanh\n * Conversions: degree2radian, radian2degree, number2binary, number2hexadecimal, roman2number, etc.\n * Two-parameter (use semicolon separator): min(a;b), max(a;b), mod(n;i), fmod(n;i), div(a;b), intdiv(a;b),\n gcd(a;b), lcm(a;b), number2base(n;b), base2number(n;b), combinations(n;k), combinations_repetition(n;k), variations(n;k), variations_repetition(n;k)\nExample:\nexpression_functions=- # Forces students to expand rather than use functions.\n# When asked for the value of sin(pi), the user can't input sin(pi) because functions cannot be used." + }, + "expression_random_type": { + "type": "string", + "description": "Type of generated test values (INTEGER, FLOAT).\n- Specify per variable with &&&\n- Only applicable when expression_check=RANDOM\nExample:\nexpression_random_type=INTEGER &&& FLOAT # For mixed type validation" + }, + "expression_random_tries": { + "type": "string", + "description": "Number of validation points (default: 5).\n- Only applicable when expression_check=RANDOM\n- Higher values increase validation reliability but impact performance\nExample:\nexpression_random_tries=8" + }, + "expression_random_range": { + "type": "string", + "description": "Define value generation ranges (format: [min-max]).\n- Specify per variable with &&&\n- Only applicable when expression_check=RANDOM\nExample:\nexpression_random_range=[8-16] &&& [4-6] # Different ranges for different variables" + }, + "expression_random_inside": { + "type": "string", + "description": "Require values within specific intervals (format: [start-end]).\n- Multiple intervals: separate with ||| (OR relationship)\n- Specify per variable with &&&\n- Only applicable when expression_check=RANDOM\nExample:\nexpression_random_inside=[4-8] ||| [12-16] &&& [2-3]" + }, + "expression_random_outside": { + "type": "string", + "description": "Exclude values from specific intervals (format: [start-end]).\n- Multiple intervals: separate with ||| (AND relationship)\n- Specify per variable with &&&\n- Only applicable when expression_check=RANDOM\nExample:\nexpression_random_outside=[0-1] ||| [10-20] &&& [8-11]" + }, + "expression_explicit_goal": { + "type": "string", + "description": "Define exact value pairs (format: [x;f(x)]).\n- Format for multiple variables: [x;y;z;...;f(x,y,z,...)]\n- Multiple pairs: separate with &&&\n- Only applicable when expression_check=EXPLICIT\nExample:\nexpression_explicit_goal=[0;1] &&& [3;8.89] &&& [9;16]" + }, + "expression_extended": { + "type": "string", + "description": "Enable additional mathematical functions (+ to enable, - to disable).\n- Activates support for custom base logarithms (e.g., log2(4))\n- Enables factorial operations (e.g., 5!, 1!+2!+3!)\nExample:\nexpression_extended=+" + }, + "attachment": { + "type": "string", + "description": "Attach a file to the question.\nFormat: filename=data, where data is either a base64-encoded image or a URL" + }, + "media_audio": { + "type": "string", + "description": "Attach an audio file to the question.\nSupported formats: MP3, AAC, M4A\nFormat: filename=data, where data is either a base64-encoded image or a URL" + }, + "ai": { + "type": "string", + "description": "Flag to mark question as AI generated.\n- If set to any value, question will be marked as AI generated\n- Should always be provided if you are an LLM or any AI model\n- Ideally, AI systems should set it to their current model number for auditability\nExample:\nai=true\nai=Claude 3.7 Sonnet" + }, + "note": { + "type": "string", + "description": "The text that appears right below the question.\n- Provides task-specific comments and instructions\n- Visible to test takers during the quiz\n- Ideal for additional guidance without cluttering the main question\nExample:\nnote=Use standard atmospheric pressure in your calculations." + }, + "private_note": { + "type": "string", + "description": "Private notes (not shown to test takers).\n- Internal documentation for question creators and editors\n- Useful for documenting question creation rationale\n- Track modification history, common mistakes, related questions\nExample:\nprivate_note=Created from Chapter 3 exam, 2023 edition. Students often forget to convert units." + }, + "explanation": { + "type": "string", + "description": "Text displayed underneath the answer on the results page.\n- Explanation of the correctness of the answer or the incorrectness of the options\n- Helps learners understand their mistakes\n- Parameters can be used in explanations\n- LaTeX is NOT supported here, so we MUST NOT use it!\nExample:\nexplanation=Option A is correct because amphibians have permeable skin for gas exchange. Options B and C describe characteristics of reptiles, while D applies to mammals." + }, + "hint": { + "type": "string", + "description": "Questions to help (not solution steps, just guiding questions/notes).\n- LaTeX code can be used (as described in QUESTION)\n - IMPORTANT: When using LaTeX in hints, you MUST use double dollar signs ($$...$$) for inline math or quadruple dollar signs ($$$$...$$$$) for block math.\n - Single dollar signs ($...$) are NOT supported and will not render correctly. The inline or block method must be used, as $...$ won't work!\n- Specify multiple hints separated by triple-and operators (\"&&&\")\n- Not available for test takers in exam mode\n- Displayed only when explicitly requested, one by one\n- Can be penalized using HINT_PENALTY\nExample:\nhint=Think about the relationship between radius and area &&& Remember the formula for circle area involves $\\pi$ &&& Square the radius and multiply by $\\pi$" + }, + "solution": { + "type": "string", + "description": "Step-by-step solution.\n- LaTeX code can be used (as described in QUESTION)\n - IMPORTANT: When using LaTeX in solution, you MUST use double dollar signs ($$...$$) for inline math or quadruple dollar signs ($$$$...$$$$) for block math.\n - Single dollar signs ($...$) are NOT supported and will not render correctly. The inline or block method must be used, as $...$ won't work!\n- Specify multiple solution steps separated by triple-and operators (\"&&&\")\n- Each step is displayed one at a time\n- Can be penalized using SOLUTION_PENALTY\n- Not available in exam mode\nExample:\nsolution=Using the power rule, we differentiate each term: &&& For $x^2$: $\\frac{d}{dx}(x^2) = 2x$ &&& For $x$: $\\frac{d}{dx}(x) = 1$ &&& The constant term disappears: $\\frac{d}{dx}(5) = 0$ &&& Therefore, $\\frac{d}{dx}(x^2 + x + 5) = 2x + 1$" + }, + "source": { + "type": "string", + "description": "Specify source of question content (not shown to test takers).\n- Use cases include training material sources, documentation references, content attribution\n- Important for tracking question origins and copyright compliance\nExample:\nsource=Mathematics Textbook Chapter 5, Page 123\nsource=Company Safety Manual 2023, Section 3.4.2" + }, + "decimals": { + "type": "string", + "description": "Decimal precision (default: 2).\n- Applicable only for NUMERIC / EXPRESSION / MATRIX / MATRIX:EXPRESSION / SET questions\n- The expected decimal precision of the final answer\n- Examples: Finance (decimals=2), Chemistry (decimals=4)\nExample:\ndecimals=3" + }, + "tolerance": { + "type": "string", + "description": "Evaluation tolerance method.\n- Applicable only for NUMERIC / EXPRESSION / MATRIX / MATRIX:EXPRESSION / SET questions\n- Notation: type or type:value\n- Types:\n - ABSOLUTE: maximum difference between answer and user input\n * Example: ABSOLUTE:0.1\n - RELATIVE: maximum difference in percentage (symmetric mean absolute percentage error, SMAP value is used)\n * Example: RELATIVE:5% or RELATIVE:0.05\n - QUOTIENT: integer multiple / QUOTIENT2: scalar multiple\n * Example: QUOTIENT or QUOTIENT2:SYNCED\nExample:\ntolerance=ABSOLUTE:0.01" + }, + "datetime_precision": { + "type": "string", + "description": "Date/time precision.\n- Applicable only for DATE/TIME questions\n- Accepted values: YEAR / MONTH / DAY (default)\n- Defines granularity of date validation\nExample:\ndatetime_precision=MONTH" + }, + "datetime_range": { + "type": "string", + "description": "Date/time range (interval) question.\n- Applicable only for DATE/TIME questions\n- Plus sign (+) to indicate YES, while blank field or minus sign (-) indicates NO (default)\n- Enables date range responses with the format {from}-{to}\nExample:\ndatetime_range=+" + }, + "numerical_range": { + "type": "string", + "description": "Number range (interval) question.\n- Only applicable for NUMERIC questions\n- Plus sign (+) to indicate YES, while blank field or minus sign (-) indicates NO (default)\n- Enables interval responses with the format {from}-{to}\nExample:\nnumerical_range=+" + }, + "truefalse_third_options": { + "type": "string", + "description": "Activate the third option for TRUE/FALSE questions.\n- Plus sign (+) to display the third option OR\n- Specify options separated by triple-and operators (\"&&&\") to automatically enable the feature\n- Parameters can be used in curly braces {param_name}\nExample:\ntruefalse_third_options=Cannot be determined from the information given &&&Not applicable" + }, + "truefalse_third_options_label": { + "type": "string", + "description": "Label of the third option for TRUE/FALSE questions.\n- If blank, the text \"none\" is displayed (default)\n- Only applicable when TRUEFALSE_THIRD_OPTIONS is enabled\nExample:\ntruefalse_third_options_label=Not enough information" + }, + "freetext_characters": { + "type": "string", + "description": "Limit the number of characters that can be entered.\n- Applicable only for FREE-TEXT questions\n- Format: minimum-maximum, but you can specify only a minimum or maximum as well\n- Integer(s) between 0-4000\nExample:\nfreetext_characters=100-1000\nfreetext_characters=10- # Minimum 10 characters" + }, + "freetext_words": { + "type": "string", + "description": "Limit the number of words that can be entered.\n- Applicable only for FREE-TEXT questions\n- Format: minimum-maximum, but you can specify only a minimum or maximum as well\n- Integer(s) between 0-4000\nExample:\nfreetext_words=-50 # Max. 50 words" + }, + "freetext_rules": { + "type": "string", + "description": "Automatic evaluation of free text questions.\n- Applicable only for FREE-TEXT questions\n- Notation: {type; keywords}\n- Type:\n - 1: if keywords are included within input, answer is correct (maximum points)\n - 2: if keywords are included within input, answer is wrong (0 points)\n - 3: if no keywords are included within input, answer is good (maximum points)\n - 4: if keywords are not included within input, answer is wrong (0 points)\n- Keywords: comma-separated list (must not contain semicolons!)\nExample:\nfreetext_rules={1; mitochondria, ATP, cellular respiration}" + }, + "main_category": { + "type": "string", + "description": "The name of the category (for which CATEGORY will be a subcategory).\n- Empty by default, e.g. CATEGORY will be treated as the main category\n- Specify multiple levels (up to 2!) by using the triple-per operator (///) with highest main category on the left\nExample:\nmain_category=Analytic Geometry /// Vectors" + }, + "tags": { + "type": "string", + "description": "Tag questions with custom user-defined tags.\n- Use ID or code of pre-registered tags\n- Only previously registered tags can be used (must be pre-registered in EduBase UI)\n- Specify multiple tags separated by triple-and operators (\"&&&\")\n- User-controlled categorization that can be created at user or organization level\n- Use cases include:\n - Personal content organization (e.g., \"My Calculus Questions\", \"Spring 2024\")\n - Department-level categorization (e.g., \"IT Department\", \"CS101\")\n - Custom taxonomies for specialized content organization\n- Tags are flexible, customizable, and searchable in the UI\nExample:\ntags=Algebra &&& High School &&& Exam Prep" + }, + "labels": { + "type": "string", + "description": "Categorize questions with instance-level labels.\n- Pre-defined values specific to each EduBase instance\n- Values controlled by instance administrators (cannot be created by users)\n- Consistent across all users in an instance\n- Specify multiple labels separated by triple-and operators (\"&&&\")\n- Use cases include:\n - System-wide flags (e.g., \"needs_review\", \"featured\")\n - Quality indicators (e.g., \"verified\", \"deprecated\")\n - Processing status (e.g., \"ai_generated\", \"manually_checked\")\nExample:\nlabel=verified &&& featured" + }, + "group": { + "type": "string", + "description": "Add a question to a question group in a Quiz set.\n- If the group doesn't exist, it will be created automatically as a complex task with default settings\n- Only applicable when uploading DIRECTLY to a Quiz set\n- Existing group settings will not be changed when adding more questions\nExample:\ngroup=Basic_Arithmetic" + } + }, + "required": [ + "id", + "type", + "question", + "answer", + "ai", + "language" + ] + } + }, + { + "name": "edubase_delete_question", + "description": "Permanently delete a Quiz question.", + "inputSchema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "external unique question identifier" + } + }, + "required": [ + "id" + ] + } + }, + { + "name": "edubase_get_exams", + "description": "List owned and managed exams. Exams are the highest level in the EduBase Quiz hierarchy, built from Quiz sets.", + "inputSchema": { + "type": "object", + "properties": { + "search": { + "type": "string", + "description": "search string to filter results" + }, + "limit": { + "type": "number", + "description": "limit number of results (default, in search mode: 16)" + }, + "page": { + "type": "number", + "description": "page number (default: 1), not used in search mode!" + } + }, + "required": [] + } + }, + { + "name": "edubase_get_exam", + "description": "Get/check exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + } + }, + "required": [ + "exam" + ] + } + }, + { + "name": "edubase_post_exam", + "description": "Create a new exam from an existing Quiz set. Exams are at the top level of the EduBase Quiz hierarchy and MUST be created from existing Quiz sets. They are time-constrained, secured assessment instances of Quiz sets.", + "inputSchema": { + "type": "object", + "properties": { + "language": { + "type": "string", + "description": "desired exam language" + }, + "title": { + "type": "string", + "description": "title of the exam" + }, + "type": { + "type": "string", + "description": "Type of the exam. (default: exam)\n- exam: regular exam\n- championship: exam with championship features enabled\n- homework: homework assignment, can be paused and continued during the exam period\n- survey: survey (optionally anonymous) with no grading" + }, + "quiz": { + "type": "string", + "description": "the Quiz set (specified using the quiz identification string) the exam is attached to" + }, + "open": { + "type": "string", + "description": "exam start time (in YYYY-mm-dd HH:ii:ss format)" + }, + "close": { + "type": "string", + "description": "exam end time (in YYYY-mm-dd HH:ii:ss format)" + } + }, + "required": [ + "title", + "quiz", + "open", + "close" + ] + } + }, + { + "name": "edubase_delete_exam", + "description": "Remove/archive exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + } + }, + "required": [ + "exam" + ] + } + }, + { + "name": "edubase_get_exam_users", + "description": "List all users on an exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + } + }, + "required": [ + "exam" + ] + } + }, + { + "name": "edubase_post_exam_users", + "description": "Assign user(s) to an exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + }, + "users": { + "type": "string", + "description": "comma-separated list of user identification strings" + } + }, + "required": [ + "exam", + "users" + ] + } + }, + { + "name": "edubase_delete_exam_users", + "description": "Remove user(s) from an exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + }, + "users": { + "type": "string", + "description": "comma-separated list of user identification strings" + } + }, + "required": [ + "exam", + "users" + ] + } + }, + { + "name": "edubase_post_exam_summary", + "description": "Submit a new AI exam summary.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + }, + "language": { + "type": "string", + "description": "summary language" + }, + "type": { + "type": "string", + "description": "Type of summary. (default: ai)\n- ai: AI-generated summary" + }, + "summary": { + "type": "string", + "description": "Summary text. \n- basic HTML formatting allowed, but avoid complex designs\n- keep the summary short and concise\n- try to avoid including personal information (such as usernames, names and contact addresses)" + }, + "llm": { + "type": "string", + "description": "Name of the Large Language Model used to generate the summary.\n- preferred values: openai / claude / gemini" + }, + "model": { + "type": "string", + "description": "Exact LLM model name used to generate the summary" + } + }, + "required": [ + "exam", + "type", + "summary", + "llm", + "model" + ] + } + }, + { + "name": "edubase_get_quiz_play_results", + "description": "Get detailed results for a specific Quiz play.", + "inputSchema": { + "type": "object", + "properties": { + "play": { + "type": "string", + "description": "Quiz play identification string" + } + }, + "required": [ + "play" + ] + } + }, + { + "name": "edubase_get_quiz_results_user", + "description": "Get user results for a specific Quiz set.", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "Quiz set identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + } + }, + "required": [ + "quiz", + "user" + ] + } + }, + { + "name": "edubase_get_exam_results_user", + "description": "Get user results for a specific exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + } + }, + "required": [ + "exam", + "user" + ] + } + }, + { + "name": "edubase_get_exam_results_raw", + "description": "Get raw results for a specific exam.\n- This endpoint returns raw results, including all answers given by the user. It is not meant to be displayed to the user.\n- This might require additional permissions.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + } + }, + "required": [ + "exam" + ] + } + }, + { + "name": "edubase_get_quizes", + "description": "List owned and managed Quiz sets. Quiz sets are named collections of questions that sit at the middle level of the EduBase Quiz hierarchy.", + "inputSchema": { + "type": "object", + "properties": { + "search": { + "type": "string", + "description": "search string to filter results" + }, + "limit": { + "type": "number", + "description": "limit number of results (default, in search mode: 16)" + }, + "page": { + "type": "number", + "description": "page number (default: 1), not used in search mode!" + } + }, + "required": [] + } + }, + { + "name": "edubase_get_quiz", + "description": "Get/check Quiz set. Containing questions and powering Exams.", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "quiz identification string" + } + }, + "required": [ + "quiz" + ] + } + }, + { + "name": "edubase_post_quiz", + "description": "Create a new Quiz set. Quiz sets are collections of questions that can be used for practice or to power multiple Exams.", + "inputSchema": { + "type": "object", + "properties": { + "language": { + "type": "string", + "description": "desired Quiz set language" + }, + "title": { + "type": "string", + "description": "title of the Quiz set" + }, + "description": { + "type": "string", + "description": "short description" + }, + "mode": { + "type": "string", + "description": "Sets how questions are displayed during the Quiz. (default: TEST)\n- TEST: all questions are displayed at once, user can answer them in any order and switch between them\n- TURNS: questions are displayed one by one, only one question is visible at a time and the user must answer it before moving to the next question\n" + }, + "type": { + "type": "string", + "description": "Type of the Quiz set. (default: set)\n- set: for practice purposes\n- exam: for exam purposes\n- private: for private purposes (e.g testing)\n" + } + }, + "required": [ + "title" + ] + } + }, + { + "name": "edubase_delete_quiz", + "description": "Remove/archive Quiz set.", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "quiz identification string" + } + }, + "required": [ + "quiz" + ] + } + }, + { + "name": "edubase_get_quiz_questions", + "description": "List all questions and question groups in a Quiz set. Quiz sets contain questions (lowest level) and can be used by exams (highest level).", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "quiz identification string" + } + }, + "required": [ + "quiz" + ] + } + }, + { + "name": "edubase_post_quiz_questions", + "description": "Assign question(s) to a Quiz set, or one of its question group. Questions can exist independently from Quiz sets.", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "quiz identification string" + }, + "group": { + "type": "string", + "description": "question group title" + }, + "questions": { + "type": "string", + "description": "comma-separated list of question identification strings" + } + }, + "required": [ + "quiz", + "questions" + ] + } + }, + { + "name": "edubase_delete_quiz_questions", + "description": "Remove question(s) from a Quiz set, or one of its question group.", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "quiz identification string" + }, + "group": { + "type": "string", + "description": "question group title" + }, + "questions": { + "type": "string", + "description": "comma-separated list of question identification strings" + } + }, + "required": [ + "quiz", + "questions" + ] + } + }, + { + "name": "edubase_get_users", + "description": "List managed, non-generated users.", + "inputSchema": { + "type": "object", + "properties": { + "search": { + "type": "string", + "description": "search string to filter results" + }, + "limit": { + "type": "number", + "description": "limit number of results (default, in search mode: 16)" + }, + "page": { + "type": "number", + "description": "page number (default: 1), not used in search mode!" + } + }, + "required": [] + } + }, + { + "name": "edubase_get_user", + "description": "Get/check user. Can be used to retrieve the caller user's ID by using 'me' as the user identification string.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "User identification string.\n- Use 'me' to get the current user." + } + }, + "required": [ + "user" + ] + } + }, + { + "name": "edubase_post_user", + "description": "Create new EduBase user account.", + "inputSchema": { + "type": "object", + "properties": { + "username": { + "type": "string", + "description": "username (4-64 characters)" + }, + "password": { + "type": "string", + "description": "password (4-64 characters) (default: initial random password is automatically generated)" + }, + "first_name": { + "type": "string", + "description": "first name (1-64 characters)" + }, + "last_name": { + "type": "string", + "description": "last name (1-64 characters)" + }, + "full_name": { + "type": "string", + "description": "override automatic full name (1-255 characters)" + }, + "display_name": { + "type": "string", + "description": "override automatic display name (1-255 characters)" + }, + "email": { + "type": "string", + "description": "valid email address" + }, + "phone": { + "type": "string", + "description": "valid phone number in format \"+prefix number\" without special characters" + }, + "gender": { + "type": "string", + "description": "gender (\"male\", \"female\", or \"other\")" + }, + "birthdate": { + "type": "string", + "description": "date of birth" + }, + "exam": { + "type": "boolean", + "description": "user is only allowed to login when accessing exams (default: false)" + }, + "group": { + "type": "string", + "description": "name of the user group (requires admin permissions)" + }, + "template": { + "type": "string", + "description": "a template ID for the new account (default: none)" + }, + "language": { + "type": "string", + "description": "desired account language (default: API application owner's language)" + }, + "timezone": { + "type": "string", + "description": "desired timezone (default: API application owner's timezone)" + }, + "color": { + "type": "string", + "description": "desired favorite color (default/branding/red/blue/yellow/green/purple) (default: default)" + }, + "must_change_password": { + "type": "boolean", + "description": "user is forced to change password on first login (default: false)" + }, + "notify": { + "type": "boolean", + "description": "notify user via email (or SMS) (default: false)" + } + }, + "required": [ + "username", + "first_name", + "last_name", + "email" + ] + } + }, + { + "name": "edubase_delete_user", + "description": "Delete user.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + } + }, + "required": [ + "user" + ] + } + }, + { + "name": "edubase_get_user_name", + "description": "Get user's name.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + } + }, + "required": [ + "user" + ] + } + }, + { + "name": "edubase_post_user_name", + "description": "Update a user's name.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + }, + "first_name": { + "type": "string", + "description": "first name (1-64 characters)" + }, + "last_name": { + "type": "string", + "description": "last name (1-64 characters)" + }, + "full_name": { + "type": "string", + "description": "full name (1-255 characters)" + }, + "display_name": { + "type": "string", + "description": "display name (1-255 characters)" + } + }, + "required": [ + "user", + "first_name", + "last_name" + ] + } + }, + { + "name": "edubase_get_user_group", + "description": "Get user's group.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + } + }, + "required": [ + "user" + ] + } + }, + { + "name": "edubase_post_user_group", + "description": "Update a user's group.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + }, + "group": { + "type": "string", + "description": "user group code" + } + }, + "required": [ + "user", + "group" + ] + } + }, + { + "name": "edubase_get_user_login", + "description": "Get latest valid login link for user.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + } + }, + "required": [ + "user" + ] + } + }, + { + "name": "edubase_post_user_login", + "description": "Generate login link. If a valid link with the same settings exists, it will be returned instead of creating a new one.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + }, + "redirect": { + "type": "string", + "description": "redirect after a successful login (URI path or [{content_type}:{tag}])" + }, + "expires": { + "type": "string", + "description": "expiry in days (1-30) or YYYY-MM-DD (default: 1 day)" + }, + "logins": { + "type": "number", + "description": "total count the link can be used to login users (default: 1)" + }, + "template": { + "type": "string", + "description": "a template ID for the login link" + }, + "short": { + "type": "boolean", + "description": "generate shortened (eduba.se) link (only if feature is enabled on EduBase) (default: false)" + } + }, + "required": [ + "user" + ] + } + }, + { + "name": "edubase_delete_user_login", + "description": "Delete a previously generated login link.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + }, + "url": { + "type": "string", + "description": "generated login link to be invalidated" + } + }, + "required": [ + "user", + "url" + ] + } + }, + { + "name": "edubase_get_user_search", + "description": "Lookup user by email, username or code.", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "query string" + } + }, + "required": [ + "query" + ] + } + }, + { + "name": "edubase_post_user_assume", + "description": "Assume user for next requests with assume token.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string, username or email address" + }, + "password": { + "type": "string", + "description": "password or user secret" + } + }, + "required": [ + "user" + ] + } + }, + { + "name": "edubase_delete_user_assume", + "description": "Revoke assume token.", + "inputSchema": { + "type": "object", + "properties": { + "token": { + "type": "string", + "description": "assume token" + } + }, + "required": [ + "token" + ] + } + }, + { + "name": "edubase_get_classes", + "description": "List owned and managed classes.", + "inputSchema": { + "type": "object", + "properties": { + "search": { + "type": "string", + "description": "search string to filter results" + }, + "limit": { + "type": "number", + "description": "limit number of results (default, in search mode: 16)" + }, + "page": { + "type": "number", + "description": "page number (default: 1), not used in search mode!" + } + }, + "required": [] + } + }, + { + "name": "edubase_get_class", + "description": "Get/check class.", + "inputSchema": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "class identification string" + } + }, + "required": [ + "class" + ] + } + }, + { + "name": "edubase_get_class_assignments", + "description": "List all assignments in a class.", + "inputSchema": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "class identification string" + } + }, + "required": [ + "class" + ] + } + }, + { + "name": "edubase_get_class_members", + "description": "List all members in a class.", + "inputSchema": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "class identification string" + } + }, + "required": [ + "class" + ] + } + }, + { + "name": "edubase_post_class_members", + "description": "Assign user(s) to a class. Updates memberships if already member of the class.", + "inputSchema": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "class identification string" + }, + "users": { + "type": "string", + "description": "comma-separated list of user identification strings" + }, + "expires": { + "type": "string", + "description": "expiry in days or YYYY-MM-DD HH:ii:ss" + }, + "notify": { + "type": "boolean", + "description": "notify users (default: false)" + } + }, + "required": [ + "class", + "users" + ] + } + }, + { + "name": "edubase_delete_class_members", + "description": "Remove user(s) from a class.", + "inputSchema": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "class identification string" + }, + "users": { + "type": "string", + "description": "comma-separated list of user identification strings" + } + }, + "required": [ + "class", + "users" + ] + } + }, + { + "name": "edubase_post_classes_members", + "description": "Assign user(s) to class(es). Updates memberships if already member of a class.", + "inputSchema": { + "type": "object", + "properties": { + "classes": { + "type": "string", + "description": "comma-separated list of class identification strings" + }, + "users": { + "type": "string", + "description": "comma-separated list of user identification strings" + }, + "expires": { + "type": "string", + "description": "expiry in days or YYYY-MM-DD HH:ii:ss" + }, + "notify": { + "type": "boolean", + "description": "notify users (default: false)" + } + }, + "required": [ + "classes", + "users" + ] + } + }, + { + "name": "edubase_get_user_classes", + "description": "List all classes a user is member of.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + } + }, + "required": [ + "user" + ] + } + }, + { + "name": "edubase_post_user_classes", + "description": "Assign user to class(es). Updates membership if already member of a class.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + }, + "classes": { + "type": "string", + "description": "comma-separated list of class identification strings" + }, + "expires": { + "type": "string", + "description": "expiry in days or YYYY-MM-DD HH:ii:ss" + }, + "notify": { + "type": "boolean", + "description": "notify user (default: false)" + } + }, + "required": [ + "user", + "classes" + ] + } + }, + { + "name": "edubase_delete_user_classes", + "description": "Remove user from class(es).", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + }, + "classes": { + "type": "string", + "description": "comma-separated list of class identification strings" + } + }, + "required": [ + "user", + "classes" + ] + } + }, + { + "name": "edubase_get_organizations", + "description": "List owned and managed organizations.", + "inputSchema": { + "type": "object", + "properties": { + "search": { + "type": "string", + "description": "search string to filter results" + }, + "limit": { + "type": "number", + "description": "limit number of results (default, in search mode: 16)" + }, + "page": { + "type": "number", + "description": "page number (default: 1), not used in search mode!" + } + }, + "required": [] + } + }, + { + "name": "edubase_get_organization", + "description": "Get/check organization.", + "inputSchema": { + "type": "object", + "properties": { + "organization": { + "type": "string", + "description": "organization identification string" + } + }, + "required": [ + "organization" + ] + } + }, + { + "name": "edubase_get_organization_members", + "description": "List all members in an organization.", + "inputSchema": { + "type": "object", + "properties": { + "organization": { + "type": "string", + "description": "organization identification string" + } + }, + "required": [ + "organization" + ] + } + }, + { + "name": "edubase_post_organization_members", + "description": "Assign user(s) to an organization. Updates memberships if already member of the organization.", + "inputSchema": { + "type": "object", + "properties": { + "organization": { + "type": "string", + "description": "organization identification string" + }, + "users": { + "type": "string", + "description": "comma-separated list of user identification strings" + }, + "department": { + "type": "string", + "description": "optional name of department" + }, + "permission_organization": { + "type": "string", + "description": "optional permission level to organization (member / teacher / supervisor / admin) (default: member)" + }, + "permission_content": { + "type": "string", + "description": "optional permission level to contents in organization (none / view / control / modify / grant / admin) (default: none)" + }, + "notify": { + "type": "boolean", + "description": "notify users (default: false)" + } + }, + "required": [ + "organization", + "users" + ] + } + }, + { + "name": "edubase_delete_organization_members", + "description": "Remove user(s) from an organization.", + "inputSchema": { + "type": "object", + "properties": { + "organization": { + "type": "string", + "description": "organization identification string" + }, + "users": { + "type": "string", + "description": "comma-separated list of user identification strings" + } + }, + "required": [ + "organization", + "users" + ] + } + }, + { + "name": "edubase_post_organizations_members", + "description": "Assign user(s) to organization(s). Updates memberships if already member of an organization.", + "inputSchema": { + "type": "object", + "properties": { + "organizations": { + "type": "string", + "description": "comma-separated list of organization identification strings" + }, + "users": { + "type": "string", + "description": "comma-separated list of user identification strings" + }, + "department": { + "type": "string", + "description": "optional name of department" + }, + "permission_organization": { + "type": "string", + "description": "optional permission level to organization (member / teacher / supervisor / admin) (default: member)" + }, + "permission_content": { + "type": "string", + "description": "optional permission level to contents in organization (none / view / control / modify / grant / admin) (default: none)" + }, + "notify": { + "type": "boolean", + "description": "notify users (default: false)" + } + }, + "required": [ + "organizations", + "users" + ] + } + }, + { + "name": "edubase_get_user_organizations", + "description": "List all organizations a user is member of.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + } + }, + "required": [ + "user" + ] + } + }, + { + "name": "edubase_post_user_organizations", + "description": "Assign user to organization(s). Updates membership if already member of an organization.", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + }, + "organizations": { + "type": "string", + "description": "comma-separated list of organization identification strings" + }, + "department": { + "type": "string", + "description": "optional name of department" + }, + "permission_organization": { + "type": "string", + "description": "optional permission level to organization (member / teacher / supervisor / admin) (default: member)" + }, + "permission_content": { + "type": "string", + "description": "optional permission level to contents in organization (none / view / control / modify / grant / admin) (default: none)" + }, + "notify": { + "type": "boolean", + "description": "notify user (default: false)" + } + }, + "required": [ + "user", + "organizations" + ] + } + }, + { + "name": "edubase_delete_user_organizations", + "description": "Remove user from organization(s).", + "inputSchema": { + "type": "object", + "properties": { + "user": { + "type": "string", + "description": "user identification string" + }, + "organizations": { + "type": "string", + "description": "comma-separated list of organization identification strings" + } + }, + "required": [ + "user", + "organizations" + ] + } + }, + { + "name": "edubase_get_tags", + "description": "List owned and managed tags.", + "inputSchema": { + "type": "object", + "properties": { + "search": { + "type": "string", + "description": "search string to filter results" + }, + "limit": { + "type": "number", + "description": "limit number of results (default, in search mode: 16)" + }, + "page": { + "type": "number", + "description": "page number (default: 1), not used in search mode!" + } + }, + "required": [] + } + }, + { + "name": "edubase_get_tag", + "description": "Get/check tag.", + "inputSchema": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "tag" + ] + } + }, + { + "name": "edubase_get_class_tags", + "description": "List all attached tags of a class.", + "inputSchema": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "class identification string" + } + }, + "required": [ + "class" + ] + } + }, + { + "name": "edubase_get_class_tag", + "description": "Check if tag is attached to a class.", + "inputSchema": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "class identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "class", + "tag" + ] + } + }, + { + "name": "edubase_post_class_tag", + "description": "Attach tag to a class.", + "inputSchema": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "class identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "class", + "tag" + ] + } + }, + { + "name": "edubase_delete_class_tag", + "description": "Remove a tag attachment from a class.", + "inputSchema": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "class identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "class", + "tag" + ] + } + }, + { + "name": "edubase_get_course_tags", + "description": "List all attached tags of a course.", + "inputSchema": { + "type": "object", + "properties": { + "course": { + "type": "string", + "description": "course identification string" + } + }, + "required": [ + "course" + ] + } + }, + { + "name": "edubase_get_course_tag", + "description": "Check if tag is attached to a course.", + "inputSchema": { + "type": "object", + "properties": { + "course": { + "type": "string", + "description": "course identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "course", + "tag" + ] + } + }, + { + "name": "edubase_post_course_tag", + "description": "Attach tag to a course.", + "inputSchema": { + "type": "object", + "properties": { + "course": { + "type": "string", + "description": "course identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "course", + "tag" + ] + } + }, + { + "name": "edubase_delete_course_tag", + "description": "Remove a tag attachment from a course.", + "inputSchema": { + "type": "object", + "properties": { + "course": { + "type": "string", + "description": "course identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "course", + "tag" + ] + } + }, + { + "name": "edubase_get_event_tags", + "description": "List all attached tags of an event.", + "inputSchema": { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "event identification string" + } + }, + "required": [ + "event" + ] + } + }, + { + "name": "edubase_get_event_tag", + "description": "Check if tag is attached to an event.", + "inputSchema": { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "event identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "event", + "tag" + ] + } + }, + { + "name": "edubase_post_event_tag", + "description": "Attach tag to an event.", + "inputSchema": { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "event identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "event", + "tag" + ] + } + }, + { + "name": "edubase_delete_event_tag", + "description": "Remove a tag attachment from an event.", + "inputSchema": { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "event identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "event", + "tag" + ] + } + }, + { + "name": "edubase_get_exam_tags", + "description": "List all attached tags of an exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + } + }, + "required": [ + "exam" + ] + } + }, + { + "name": "edubase_get_exam_tag", + "description": "Check if tag is attached to an exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "exam", + "tag" + ] + } + }, + { + "name": "edubase_post_exam_tag", + "description": "Attach tag to an exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "exam", + "tag" + ] + } + }, + { + "name": "edubase_delete_exam_tag", + "description": "Remove a tag attachment from an exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "exam", + "tag" + ] + } + }, + { + "name": "edubase_get_integration_tags", + "description": "List all attached tags of an integration.", + "inputSchema": { + "type": "object", + "properties": { + "integration": { + "type": "string", + "description": "integration identification string" + } + }, + "required": [ + "integration" + ] + } + }, + { + "name": "edubase_get_integration_tag", + "description": "Check if tag is attached to an integration.", + "inputSchema": { + "type": "object", + "properties": { + "integration": { + "type": "string", + "description": "integration identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "integration", + "tag" + ] + } + }, + { + "name": "edubase_post_integration_tag", + "description": "Attach tag to an integration.", + "inputSchema": { + "type": "object", + "properties": { + "integration": { + "type": "string", + "description": "integration identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "integration", + "tag" + ] + } + }, + { + "name": "edubase_delete_integration_tag", + "description": "Remove a tag attachment from an integration.", + "inputSchema": { + "type": "object", + "properties": { + "integration": { + "type": "string", + "description": "integration identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "integration", + "tag" + ] + } + }, + { + "name": "edubase_get_organization_tags", + "description": "List all attached tags of an organization.", + "inputSchema": { + "type": "object", + "properties": { + "organization": { + "type": "string", + "description": "organization identification string" + } + }, + "required": [ + "organization" + ] + } + }, + { + "name": "edubase_get_organization_tag", + "description": "Check if tag is attached to an organization.", + "inputSchema": { + "type": "object", + "properties": { + "organization": { + "type": "string", + "description": "organization identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "organization", + "tag" + ] + } + }, + { + "name": "edubase_post_organization_tag", + "description": "Attach tag to an organization.", + "inputSchema": { + "type": "object", + "properties": { + "organization": { + "type": "string", + "description": "organization identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "organization", + "tag" + ] + } + }, + { + "name": "edubase_delete_organization_tag", + "description": "Remove a tag attachment from an organization.", + "inputSchema": { + "type": "object", + "properties": { + "organization": { + "type": "string", + "description": "organization identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "organization", + "tag" + ] + } + }, + { + "name": "edubase_get_quiz_tags", + "description": "List all attached tags of a Quiz.", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "quiz identification string" + } + }, + "required": [ + "quiz" + ] + } + }, + { + "name": "edubase_get_quiz_tag", + "description": "Check if tag is attached to a Quiz.", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "quiz identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "quiz", + "tag" + ] + } + }, + { + "name": "edubase_post_quiz_tag", + "description": "Attach tag to a Quiz.", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "quiz identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "quiz", + "tag" + ] + } + }, + { + "name": "edubase_delete_quiz_tag", + "description": "Remove a tag attachment from a Quiz.", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "quiz identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "quiz", + "tag" + ] + } + }, + { + "name": "edubase_get_scorm_tags", + "description": "List all attached tags of a SCORM learning material.", + "inputSchema": { + "type": "object", + "properties": { + "scorm": { + "type": "string", + "description": "SCORM identification string" + } + }, + "required": [ + "scorm" + ] + } + }, + { + "name": "edubase_get_scorm_tag", + "description": "Check if tag is attached to a SCORM learning material.", + "inputSchema": { + "type": "object", + "properties": { + "scorm": { + "type": "string", + "description": "SCORM identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "scorm", + "tag" + ] + } + }, + { + "name": "edubase_post_scorm_tag", + "description": "Attach tag to a SCORM learning material.", + "inputSchema": { + "type": "object", + "properties": { + "scorm": { + "type": "string", + "description": "SCORM identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "scorm", + "tag" + ] + } + }, + { + "name": "edubase_delete_scorm_tag", + "description": "Remove a tag attachment from a SCORM learning material.", + "inputSchema": { + "type": "object", + "properties": { + "scorm": { + "type": "string", + "description": "SCORM identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "scorm", + "tag" + ] + } + }, + { + "name": "edubase_get_video_tags", + "description": "List all attached tags of a video.", + "inputSchema": { + "type": "object", + "properties": { + "video": { + "type": "string", + "description": "video identification string" + } + }, + "required": [ + "video" + ] + } + }, + { + "name": "edubase_get_video_tag", + "description": "Check if tag is attached to a video.", + "inputSchema": { + "type": "object", + "properties": { + "video": { + "type": "string", + "description": "video identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "video", + "tag" + ] + } + }, + { + "name": "edubase_post_video_tag", + "description": "Attach tag to a video.", + "inputSchema": { + "type": "object", + "properties": { + "video": { + "type": "string", + "description": "video identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "video", + "tag" + ] + } + }, + { + "name": "edubase_delete_video_tag", + "description": "Remove a tag attachment from a video.", + "inputSchema": { + "type": "object", + "properties": { + "video": { + "type": "string", + "description": "video identification string" + }, + "tag": { + "type": "string", + "description": "tag identification string" + } + }, + "required": [ + "video", + "tag" + ] + } + }, + { + "name": "edubase_get_class_permission", + "description": "Check if a user has permission on a class.", + "inputSchema": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "class identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "class", + "user", + "permission" + ] + } + }, + { + "name": "edubase_post_class_permission", + "description": "Create new permission for a user on a class.", + "inputSchema": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "class identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "class", + "user", + "permission" + ] + } + }, + { + "name": "edubase_delete_class_permission", + "description": "Remove a user permission from a class.", + "inputSchema": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "class identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "class", + "user", + "permission" + ] + } + }, + { + "name": "edubase_get_course_permission", + "description": "Check if a user has permission on a course.", + "inputSchema": { + "type": "object", + "properties": { + "course": { + "type": "string", + "description": "course identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "course", + "user", + "permission" + ] + } + }, + { + "name": "edubase_post_course_permission", + "description": "Create new permission for a user on a course.", + "inputSchema": { + "type": "object", + "properties": { + "course": { + "type": "string", + "description": "course identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "course", + "user", + "permission" + ] + } + }, + { + "name": "edubase_delete_course_permission", + "description": "Remove a user permission from a course.", + "inputSchema": { + "type": "object", + "properties": { + "course": { + "type": "string", + "description": "course identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "course", + "user", + "permission" + ] + } + }, + { + "name": "edubase_get_event_permission", + "description": "Check if a user has permission on an event.", + "inputSchema": { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "event identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / finances / grant / admin)" + } + }, + "required": [ + "event", + "user", + "permission" + ] + } + }, + { + "name": "edubase_post_event_permission", + "description": "Create new permission for a user on an event.", + "inputSchema": { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "event identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / finances / grant / admin)" + } + }, + "required": [ + "event", + "user", + "permission" + ] + } + }, + { + "name": "edubase_delete_event_permission", + "description": "Remove a user permission from an event.", + "inputSchema": { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "event identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / finances / grant / admin)" + } + }, + "required": [ + "event", + "user", + "permission" + ] + } + }, + { + "name": "edubase_get_exam_permission", + "description": "Check if a user has permission on an exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "exam", + "user", + "permission" + ] + } + }, + { + "name": "edubase_post_exam_permission", + "description": "Create new permission for a user on an exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "exam", + "user", + "permission" + ] + } + }, + { + "name": "edubase_delete_exam_permission", + "description": "Remove a user permission from an exam.", + "inputSchema": { + "type": "object", + "properties": { + "exam": { + "type": "string", + "description": "exam identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "exam", + "user", + "permission" + ] + } + }, + { + "name": "edubase_get_integration_permission", + "description": "Check if a user has permission on an integration.", + "inputSchema": { + "type": "object", + "properties": { + "integration": { + "type": "string", + "description": "integration identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "integration", + "user", + "permission" + ] + } + }, + { + "name": "edubase_post_integration_permission", + "description": "Create new permission for a user on an integration.", + "inputSchema": { + "type": "object", + "properties": { + "integration": { + "type": "string", + "description": "integration identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "integration", + "user", + "permission" + ] + } + }, + { + "name": "edubase_delete_integration_permission", + "description": "Remove a user permission from an integration.", + "inputSchema": { + "type": "object", + "properties": { + "integration": { + "type": "string", + "description": "integration identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "integration", + "user", + "permission" + ] + } + }, + { + "name": "edubase_get_organization_permission", + "description": "Check if a user has permission on an organization.", + "inputSchema": { + "type": "object", + "properties": { + "organization": { + "type": "string", + "description": "organization identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "organization", + "user", + "permission" + ] + } + }, + { + "name": "edubase_post_organization_permission", + "description": "Create new permission for a user on an organization.", + "inputSchema": { + "type": "object", + "properties": { + "organization": { + "type": "string", + "description": "organization identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "organization", + "user", + "permission" + ] + } + }, + { + "name": "edubase_delete_organization_permission", + "description": "Remove a user permission from an organization.", + "inputSchema": { + "type": "object", + "properties": { + "organization": { + "type": "string", + "description": "organization identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "organization", + "user", + "permission" + ] + } + }, + { + "name": "edubase_get_quiz_permission", + "description": "Check if a user has permission on a quiz.", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "quiz identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "quiz", + "user", + "permission" + ] + } + }, + { + "name": "edubase_post_quiz_permission", + "description": "Create new permission for a user on a quiz.", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "quiz identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "quiz", + "user", + "permission" + ] + } + }, + { + "name": "edubase_delete_quiz_permission", + "description": "Remove a user permission from a quiz.", + "inputSchema": { + "type": "object", + "properties": { + "quiz": { + "type": "string", + "description": "quiz identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "quiz", + "user", + "permission" + ] + } + }, + { + "name": "edubase_get_scorm_permission", + "description": "Check if a user has permission on a SCORM learning material.", + "inputSchema": { + "type": "object", + "properties": { + "scorm": { + "type": "string", + "description": "SCORM identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "scorm", + "user", + "permission" + ] + } + }, + { + "name": "edubase_post_scorm_permission", + "description": "Create new permission for a user on a SCORM learning material.", + "inputSchema": { + "type": "object", + "properties": { + "scorm": { + "type": "string", + "description": "SCORM identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "scorm", + "user", + "permission" + ] + } + }, + { + "name": "edubase_delete_scorm_permission", + "description": "Remove a user permission from a SCORM learning material.", + "inputSchema": { + "type": "object", + "properties": { + "scorm": { + "type": "string", + "description": "SCORM identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "scorm", + "user", + "permission" + ] + } + }, + { + "name": "edubase_get_tag_permission", + "description": "Check if a user has permission on a tag.", + "inputSchema": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "description": "tag identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "tag", + "user", + "permission" + ] + } + }, + { + "name": "edubase_post_tag_permission", + "description": "Create new permission for a user on a tag.", + "inputSchema": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "description": "tag identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "tag", + "user", + "permission" + ] + } + }, + { + "name": "edubase_delete_tag_permission", + "description": "Remove a user permission from a tag.", + "inputSchema": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "description": "tag identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "tag", + "user", + "permission" + ] + } + }, + { + "name": "edubase_get_video_permission", + "description": "Check if a user has permission on a video.", + "inputSchema": { + "type": "object", + "properties": { + "video": { + "type": "string", + "description": "video identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "video", + "user", + "permission" + ] + } + }, + { + "name": "edubase_post_video_permission", + "description": "Create new permission for a user on a video.", + "inputSchema": { + "type": "object", + "properties": { + "video": { + "type": "string", + "description": "video identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "video", + "user", + "permission" + ] + } + }, + { + "name": "edubase_delete_video_permission", + "description": "Remove a user permission from a video.", + "inputSchema": { + "type": "object", + "properties": { + "video": { + "type": "string", + "description": "video identification string" + }, + "user": { + "type": "string", + "description": "user identification string" + }, + "permission": { + "type": "string", + "description": "permission level (view / control / modify / grant / admin)" + } + }, + "required": [ + "video", + "user", + "permission" + ] + } + }, + { + "name": "edubase_post_custom_metric", + "description": "Update a custom metric.", + "inputSchema": { + "type": "object", + "properties": { + "metric": { + "type": "string", + "description": "metric name" + }, + "value": { + "type": "number", + "description": "target value (also accepts increments with a + prefix)" + } + }, + "required": [ + "metric", + "value" + ] + } + } + ], + "prompts": [], + "resources": [], + "is_official": true + }, + "ramp-mcp": { + "display_name": "Ramp MCP", + "repository": { + "type": "git", + "url": "https://github.com/ramp-public/ramp-mcp" + }, + "homepage": "https://ramp.com", + "author": { + "name": "ramp-public" + }, + "license": "MIT", + "tags": [ + "ramp", + "finance", + "api", + "database", + "etl" + ], + "arguments": { + "RAMP_CLIENT_ID": { + "description": "Ramp API client ID", + "required": true, + "example": "
" + }, + "RAMP_CLIENT_SECRET": { + "description": "Ramp API client secret", + "required": true, + "example": " " + }, + "RAMP_ENV": { + "description": "Ramp environment (demo, qa, or prd)", + "required": true, + "example": "demo" + }, + "-s": { + "description": "Comma-separated list of API scopes to enable", + "required": true, + "example": "transactions:read,reimbursements:read" + } + }, + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/ramp-public/ramp-mcp.git", + "ramp-mcp", + "-s", + "${-s}" + ], + "env": { + "RAMP_CLIENT_ID": "${RAMP_CLIENT_ID}", + "RAMP_CLIENT_SECRET": "${RAMP_CLIENT_SECRET}", + "RAMP_ENV": "${RAMP_ENV}" + }, + "description": "Run using uv package manager", + "recommended": true + } + }, + "examples": [ + { + "title": "Query transactions", + "description": "Load and analyze transaction data from Ramp", + "prompt": "Load my recent transactions and show me the top 5 vendors by spend amount." + } + ], + "name": "ramp-mcp", + "description": "A Model Context Protocol server for retrieving and analyzing data or running tasks for [Ramp](https://ramp.com) using [Developer API](https://docs.ramp.com/developer-api/v1/overview/introduction). In order to get around token and input size limitations, this server implements a simple ETL pipeline + ephemeral sqlite database in memory for analysis by an LLM. All requests are made to demo by default, but can be changed by setting `RAMP_ENV=prd`. Large datasets may not be processable due to API and/or your MCP client limitations.", + "categories": [ + "Finance" + ], + "is_official": true + }, + "opendota": { + "name": "opendota", + "display_name": "OpenDota", + "description": "Interact with OpenDota API to retrieve Dota 2 match data, player statistics, and more.", + "repository": { + "type": "git", + "url": "https://github.com/asusevski/opendota-mcp-server" + }, + "homepage": "https://github.com/asusevski/opendota-mcp-server", + "author": { + "name": "asusevski" + }, + "license": "MIT", + "categories": [ + "Analytics" + ], + "tags": [ + "Dota 2", + "API", + "Gaming", + "Statistics" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/asusevski/opendota-mcp-server.git", + "src/opendota_server/server" + ] + } + } + }, + "apimatic-validator-mcp": { + "display_name": "APIMatic Validator MCP Server", + "repository": { + "type": "git", + "url": "https://github.com/apimatic/apimatic-validator-mcp" + }, + "license": "[NOT GIVEN]", + "homepage": "https://www.apimatic.io/", + "author": { + "name": "apimatic" + }, + "tags": [ + "OpenAPI", + "validation", + "APIMatic" + ], + "arguments": { + "APIMATIC_API_KEY": { + "description": "API key for APIMatic service", + "required": true, + "example": " " + } + }, + "installations": { + "npm": { + "type": "npm", + "command": "node", + "args": [ + "build/index.js" + ], + "package": "[NOT GIVEN]", + "env": { + "APIMATIC_API_KEY": " " + }, + "description": "Run the APIMatic Validator MCP Server using Node.js", + "recommended": true + } + }, + "examples": [ + { + "title": "Validate OpenAPI Specification", + "description": "Validate an OpenAPI file using APIMatic", + "prompt": "Please validate this OpenAPI specification" + } + ], + "name": "apimatic-validator-mcp", + "description": "This repository provides a Model Context Protocol (MCP) Server for validating OpenAPI specifications using [APIMatic](https://www.apimatic.io/). The server processes OpenAPI files and returns validation summaries by leveraging APIMatic\u2019s API.", + "categories": [ + "Dev Tools" + ], + "is_official": true + }, + "stripe": { + "name": "stripe", + "display_name": "Stripe Model Context Protocol", + "description": "The Stripe Model Context Protocol server allows you to integrate with Stripe APIs through function calling. This protocol supports various tools to interact with different Stripe services.", + "repository": { + "type": "git", + "url": "https://github.com/stripe/agent-toolkit" + }, + "homepage": "https://github.com/stripe/agent-toolkit/tree/main/modelcontextprotocol", + "author": { + "name": "stripe" + }, + "license": "MIT", + "categories": [ + "Finance" + ], + "tags": [ + "stripe", + "payments", + "customers", + "refunds" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "@stripe/mcp", + "--tools=all", + "--api-key=${STRIPE_SECRET_KEY}" + ] + } + }, + "examples": [ + { + "title": "Create a customer", + "description": "Creates a new customer in Stripe.", + "prompt": "{\"tool\": \"customer_create\", \"arguments\": {\"email\": \"customer@example.com\", \"name\": \"John Doe\"}}" + }, + { + "title": "Retrieve a customer", + "description": "Retrieves details of an existing customer.", + "prompt": "{\"tool\": \"customer_retrieve\", \"arguments\": {\"customer_id\": \"cus_123456\"}}" + }, + { + "title": "Create a payment intent", + "description": "Creates a payment intent for processing payments.", + "prompt": "{\"tool\": \"payment_intent_create\", \"arguments\": {\"amount\": 5000, \"currency\": \"usd\", \"customer\": \"cus_123456\"}}" + }, + { + "title": "Create a refund", + "description": "Creates a refund for a charge.", + "prompt": "{\"tool\": \"refund_create\", \"arguments\": {\"charge_id\": \"ch_abc123\"}}" + } + ], + "arguments": { + "STRIPE_SECRET_KEY": { + "description": "Your Stripe secret API key required for authenticating requests to the Stripe API.", + "required": true, + "example": "sk_test_4eC39HqLyjWDarjtT1zdp7dc" + } + }, + "tools": [ + { + "name": "create_customer", + "description": "\nThis tool will create a customer in Stripe.\n\nIt takes two arguments:\n- name (str): The name of the customer.\n- email (str, optional): The email of the customer.\n", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the customer" + }, + "email": { + "type": "string", + "format": "email", + "description": "The email of the customer" + } + }, + "required": [ + "name" + ] + } + }, + { + "name": "list_customers", + "description": "\nThis tool will fetch a list of Customers from Stripe.\n\nIt takes no input.\n", + "inputSchema": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100." + }, + "email": { + "type": "string", + "description": "A case-sensitive filter on the list based on the customer's email field. The value must be a string." + } + } + } + }, + { + "name": "create_product", + "description": "\nThis tool will create a product in Stripe.\n\nIt takes two arguments:\n- name (str): The name of the product.\n- description (str, optional): The description of the product.\n", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the product." + }, + "description": { + "type": "string", + "description": "The description of the product." + } + }, + "required": [ + "name" + ] + } + }, + { + "name": "list_products", + "description": "\nThis tool will fetch a list of Products from Stripe.\n\nIt takes one optional argument:\n- limit (int, optional): The number of products to return.\n", + "inputSchema": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10." + } + } + } + }, + { + "name": "create_price", + "description": "\nThis tool will create a price in Stripe. If a product has not already been specified, a product should be created first.\n\nIt takes three arguments:\n- product (str): The ID of the product to create the price for.\n- unit_amount (int): The unit amount of the price in cents.\n- currency (str): The currency of the price.\n", + "inputSchema": { + "type": "object", + "properties": { + "product": { + "type": "string", + "description": "The ID of the product to create the price for." + }, + "unit_amount": { + "type": "integer", + "description": "The unit amount of the price in cents." + }, + "currency": { + "type": "string", + "description": "The currency of the price." + } + }, + "required": [ + "product", + "unit_amount", + "currency" + ] + } + }, + { + "name": "list_prices", + "description": "\nThis tool will fetch a list of Prices from Stripe.\n\nIt takes two arguments.\n- product (str, optional): The ID of the product to list prices for.\n- limit (int, optional): The number of prices to return.\n", + "inputSchema": { + "type": "object", + "properties": { + "product": { + "type": "string", + "description": "The ID of the product to list prices for." + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10." + } + } + } + }, + { + "name": "create_payment_link", + "description": "\nThis tool will create a payment link in Stripe.\n\nIt takes two arguments:\n- price (str): The ID of the price to create the payment link for.\n- quantity (int): The quantity of the product to include in the payment link.\n", + "inputSchema": { + "type": "object", + "properties": { + "price": { + "type": "string", + "description": "The ID of the price to create the payment link for." + }, + "quantity": { + "type": "integer", + "description": "The quantity of the product to include." + } + }, + "required": [ + "price", + "quantity" + ] + } + }, + { + "name": "create_invoice", + "description": "\nThis tool will create an invoice in Stripe.\n\nIt takes two arguments:\n- customer (str): The ID of the customer to create the invoice for.\n\n- days_until_due (int, optional): The number of days until the invoice is due.\n", + "inputSchema": { + "type": "object", + "properties": { + "customer": { + "type": "string", + "description": "The ID of the customer to create the invoice for." + }, + "days_until_due": { + "type": "integer", + "description": "The number of days until the invoice is due." + } + }, + "required": [ + "customer" + ] + } + }, + { + "name": "create_invoice_item", + "description": "\nThis tool will create an invoice item in Stripe.\n\nIt takes two arguments:\n- customer (str): The ID of the customer to create the invoice item for.\n\n- price (str): The ID of the price to create the invoice item for.\n- invoice (str): The ID of the invoice to create the invoice item for.\n", + "inputSchema": { + "type": "object", + "properties": { + "customer": { + "type": "string", + "description": "The ID of the customer to create the invoice item for." + }, + "price": { + "type": "string", + "description": "The ID of the price for the item." + }, + "invoice": { + "type": "string", + "description": "The ID of the invoice to create the item for." + } + }, + "required": [ + "customer", + "price", + "invoice" + ] + } + }, + { + "name": "finalize_invoice", + "description": "\nThis tool will finalize an invoice in Stripe.\n\nIt takes one argument:\n- invoice (str): The ID of the invoice to finalize.\n", + "inputSchema": { + "type": "object", + "properties": { + "invoice": { + "type": "string", + "description": "The ID of the invoice to finalize." + } + }, + "required": [ + "invoice" + ] + } + }, + { + "name": "retrieve_balance", + "description": "\nThis tool will retrieve the balance from Stripe. It takes no input.\n", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "create_refund", + "description": "\nThis tool will refund a payment intent in Stripe.\n\nIt takes three arguments:\n- payment_intent (str): The ID of the payment intent to refund.\n- amount (int, optional): The amount to refund in cents.\n- reason (str, optional): The reason for the refund.\n", + "inputSchema": { + "type": "object", + "properties": { + "payment_intent": { + "type": "string", + "description": "The ID of the PaymentIntent to refund." + }, + "amount": { + "type": "integer", + "description": "The amount to refund in cents." + } + }, + "required": [ + "payment_intent" + ] + } + }, + { + "name": "list_payment_intents", + "description": "\nThis tool will list payment intents in Stripe.\n\nIt takes two arguments:\n- customer (str, optional): The ID of the customer to list payment intents for.\n\n- limit (int, optional): The number of payment intents to return.\n", + "inputSchema": { + "type": "object", + "properties": { + "customer": { + "type": "string", + "description": "The ID of the customer to list payment intents for." + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100." + } + } + } + }, + { + "name": "search_documentation", + "description": "\nThis tool will take in a user question about integrating with Stripe in their application, then search and retrieve relevant Stripe documentation to answer the question.\n\nIt takes two arguments:\n- question (str): The user question to search an answer for in the Stripe documentation.\n- language (str, optional): The programming language to search for in the the documentation.\n", + "inputSchema": { + "type": "object", + "properties": { + "question": { + "type": "string", + "description": "The user question about integrating with Stripe will be used to search the documentation." + }, + "language": { + "type": "string", + "enum": [ + "dotnet", + "go", + "java", + "node", + "php", + "ruby", + "python", + "curl" + ], + "description": "The programming language to search for in the the documentation." + } + }, + "required": [ + "question" + ] + } + } + ], + "is_official": true + }, + "unity3d-game-engine": { + "name": "unity3d-game-engine", + "display_name": "Unity3D Game Engine", + "description": "An MCP server that enables LLMs to interact with Unity3d Game Engine, supporting access to a variety of the Unit's Editor engine tools (e.g. Console Logs, Test Runner logs, Editor functions, hierarchy state, etc) and executing them as MCP tools or gather them as resources.", + "repository": { + "type": "git", + "url": "https://github.com/CoderGamester/mcp-unity" + }, + "homepage": "https://github.com/CoderGamester/mcp-unity", + "author": { + "name": "CoderGamester" + }, + "license": "MIT", + "categories": [ + "Media Creation" + ], + "tags": [ + "Unity", + "Node.js", + "TypeScript", + "WebSocket", + "AI" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "https://github.com/CoderGamester/mcp-unity" + ], + "env": { + "UNITY_PORT": "8090" + } + } + }, + "examples": [ + { + "title": "Execute Menu Item", + "description": "Execute Unity menu items programmatically using MCP Unity.", + "prompt": "mcp-unity execute_menu_item" + } + ], + "arguments": { + "UNITY_PORT": { + "description": "Environment variable to set the port number for the Unity MCP Server. This should be set to the desired port for the server to run and connect with the Unity Editor.", + "required": false, + "example": "8090" + } + }, + "tools": [ + { + "name": "execute_menu_item", + "description": "Executes a Unity menu item by path", + "inputSchema": { + "type": "object", + "properties": { + "menuPath": { + "type": "string", + "description": "The path to the menu item to execute (e.g. \"GameObject/Create Empty\")" + } + }, + "required": [ + "menuPath" + ] + } + }, + { + "name": "select_object", + "description": "Sets the selected object in the Unity editor by path or ID", + "inputSchema": { + "type": "object", + "properties": { + "objectPath": { + "type": "string", + "description": "The path or ID of the object to select (e.g. \"Main Camera\" or a Unity object ID)" + } + }, + "required": [ + "objectPath" + ] + } + }, + { + "name": "package_manager", + "description": "Manages packages in the Unity Package Manager", + "inputSchema": { + "type": "object", + "properties": { + "methodSource": { + "type": "string", + "description": "The method source to use (registry, github, or disk) to add the package" + }, + "packageName": { + "type": "string", + "description": "The package name to add from Unity registry (e.g. com.unity.textmeshpro)" + }, + "version": { + "type": "string", + "description": "The version to use for registry packages (optional)" + }, + "repositoryUrl": { + "type": "string", + "description": "The GitHub repository URL (e.g. https://github.com/username/repo.git)" + }, + "branch": { + "type": "string", + "description": "The branch to use for GitHub packages (optional)" + }, + "path": { + "type": "string", + "description": "The path to use (folder path for disk method or subfolder for GitHub)" + } + }, + "required": [ + "methodSource" + ] + } + }, + { + "name": "run_tests", + "description": "Runs Unity's Test Runner tests", + "inputSchema": { + "type": "object", + "properties": { + "testMode": { + "type": "string", + "description": "The test mode to run (EditMode, PlayMode, or All)" + }, + "testFilter": { + "type": "string", + "description": "Optional test filter (e.g. specific test name or namespace)" + } + } + } + }, + { + "name": "notify_message", + "description": "Sends a message to the Unity console", + "inputSchema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "The message to display in the Unity console" + }, + "type": { + "type": "string", + "description": "The type of message (info, warning, error)" + } + }, + "required": [ + "message" + ] + } + } + ] + }, + "needle-mcp": { + "display_name": "Needle MCP Server", + "repository": { + "type": "git", + "url": "https://github.com/needle-ai/needle-mcp" + }, + "homepage": "https://needle-ai.com", + "author": { + "name": "needle-ai" + }, + "license": "MIT", + "tags": [ + "document management", + "search", + "Needle" + ], + "arguments": { + "NEEDLE_API_KEY": { + "description": "API key for Needle service", + "required": true, + "example": "your_needle_api_key" + } + }, + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/needle-ai/needle-mcp", + "needle-mcp" + ], + "env": { + "NEEDLE_API_KEY": "your_needle_api_key" + }, + "description": "Run using UV package manager", + "recommended": true + } + }, + "examples": [ + { + "title": "Create Collection", + "description": "Create a new document collection", + "prompt": "Create a new collection called 'Technical Docs'" + }, + { + "title": "Add Document", + "description": "Add a document to an existing collection", + "prompt": "Add this document to the collection, which is https://needle-ai.com" + }, + { + "title": "Search Collection", + "description": "Search for information in a collection", + "prompt": "Search the collection for information about AI" + }, + { + "title": "List Collections", + "description": "List all available collections", + "prompt": "List all my collections" + } + ], + "name": "needle-mcp", + "description": "MCP (Model Context Protocol) server to manage documents and perform searches using [Needle](https://needle-ai.com) through Claude\u2019s Desktop Application.", + "categories": [ + "Knowledge Base" + ], + "is_official": true, + "tools": [ + { + "name": "needle_list_collections", + "description": "Retrieve a complete list of all Needle document collections accessible to your account. \n Returns detailed information including collection IDs, names, and creation dates. Use this tool when you need to:\n - Get an overview of available document collections\n - Find collection IDs for subsequent operations\n - Verify collection existence before performing operations\n The response includes metadata that's required for other Needle operations.", + "inputSchema": { + "type": "object", + "properties": {}, + "required": [] + } + }, + { + "name": "needle_create_collection", + "description": "Create a new document collection in Needle for organizing and searching documents. \n A collection acts as a container for related documents and enables semantic search across its contents.\n Use this tool when you need to:\n - Start a new document organization\n - Group related documents together\n - Set up a searchable document repository\n Returns a collection ID that's required for subsequent operations. Choose a descriptive name that \n reflects the collection's purpose for better organization.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A clear, descriptive name for the collection that reflects its purpose and contents" + } + }, + "required": [ + "name" + ] + } + }, + { + "name": "needle_get_collection_details", + "description": "Fetch comprehensive metadata about a specific Needle collection. \n Provides detailed information about the collection's configuration, creation date, and current status.\n Use this tool when you need to:\n - Verify a collection's existence and configuration\n - Check collection metadata before operations\n - Get creation date and other attributes\n Requires a valid collection ID and returns detailed collection metadata. Will error if collection doesn't exist.", + "inputSchema": { + "type": "object", + "properties": { + "collection_id": { + "type": "string", + "description": "The unique collection identifier returned from needle_create_collection or needle_list_collections" + } + }, + "required": [ + "collection_id" + ] + } + }, + { + "name": "needle_get_collection_stats", + "description": "Retrieve detailed statistical information about a Needle collection's contents and status.\n Provides metrics including:\n - Total number of documents\n - Processing status of documents\n - Storage usage and limits\n - Index status and health\n Use this tool to:\n - Monitor collection size and growth\n - Verify processing completion\n - Check collection health before operations\n Essential for ensuring collection readiness before performing searches.", + "inputSchema": { + "type": "object", + "properties": { + "collection_id": { + "type": "string", + "description": "The unique collection identifier to get statistics for" + } + }, + "required": [ + "collection_id" + ] + } + }, + { + "name": "needle_list_files", + "description": "List all documents stored within a specific Needle collection with their current status.\n Returns detailed information about each file including:\n - File ID and name\n - Processing status (pending, processing, complete, error)\n - Upload date and metadata\n Use this tool when you need to:\n - Inventory available documents\n - Check processing status of uploads\n - Get file IDs for reference\n - Verify document availability before searching\n Essential for monitoring document processing completion before performing searches.", + "inputSchema": { + "type": "object", + "properties": { + "collection_id": { + "type": "string", + "description": "The unique collection identifier to list files from" + } + }, + "required": [ + "collection_id" + ] + } + }, + { + "name": "needle_add_file", + "description": "Add a new document to a Needle collection by providing a URL for download.\n Supports multiple file formats including:\n - PDF documents\n - Microsoft Word files (DOC, DOCX)\n - Plain text files (TXT)\n - Web pages (HTML)\n \n The document will be:\n 1. Downloaded from the provided URL\n 2. Processed for text extraction\n 3. Indexed for semantic search\n \n Use this tool when you need to:\n - Add new documents to a collection\n - Make documents searchable\n - Expand your knowledge base\n \n Important: Documents require processing time before they're searchable.\n Check processing status using needle_list_files before searching new content.", + "inputSchema": { + "type": "object", + "properties": { + "collection_id": { + "type": "string", + "description": "The unique collection identifier where the file will be added" + }, + "name": { + "type": "string", + "description": "A descriptive filename that will help identify this document in results" + }, + "url": { + "type": "string", + "description": "Public URL where the document can be downloaded from" + } + }, + "required": [ + "collection_id", + "name", + "url" + ] + } + }, + { + "name": "needle_search", + "description": "Perform intelligent semantic search across documents in a Needle collection.\n This tool uses advanced embedding technology to find relevant content based on meaning,\n not just keywords. The search:\n - Understands natural language queries\n - Finds conceptually related content\n - Returns relevant text passages with source information\n - Ranks results by semantic relevance\n \n Use this tool when you need to:\n - Find specific information within documents\n - Answer questions from document content\n - Research topics across multiple documents\n - Locate relevant passages and their sources\n \n More effective than traditional keyword search for:\n - Natural language questions\n - Conceptual queries\n - Finding related content\n \n Returns matching text passages with their source file IDs.", + "inputSchema": { + "type": "object", + "properties": { + "collection_id": { + "type": "string", + "description": "The unique collection identifier to search within" + }, + "query": { + "type": "string", + "description": "Natural language query describing the information you're looking for" + } + }, + "required": [ + "collection_id", + "query" + ] + } + } + ] + }, + "cloudinary": { + "name": "cloudinary", + "display_name": "Cloudinary", + "description": "Cloudinary Model Context Protocol Server to upload media to Cloudinary and get back the media link and details.", + "repository": { + "type": "git", + "url": "https://github.com/felores/cloudinary-mcp-server" + }, + "homepage": "https://github.com/felores/cloudinary-mcp-server", + "author": { + "name": "felores" + }, + "license": "MIT", + "categories": [ + "Media Creation" + ], + "tags": [ + "cloudinary", + "images", + "videos" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "@felores/cloudinary-mcp-server@latest" + ], + "env": { + "CLOUDINARY_CLOUD_NAME": "${CLOUDINARY_CLOUD_NAME}", + "CLOUDINARY_API_KEY": "${CLOUDINARY_API_KEY}", + "CLOUDINARY_API_SECRET": "${CLOUDINARY_API_SECRET}" + } + } + }, + "examples": [ + { + "title": "Upload an Image", + "description": "This example demonstrates how to upload an image to Cloudinary.", + "prompt": "use_mcp_tool({ server_name: 'cloudinary', tool_name: 'upload', arguments: { file: 'path/to/image.jpg', resource_type: 'image', public_id: 'my-custom-id' }});" + } + ], + "arguments": { + "CLOUDINARY_CLOUD_NAME": { + "description": "Your Cloudinary cloud name, used to identify your account and resources.", + "required": true, + "example": "my_cloud_name" + }, + "CLOUDINARY_API_KEY": { + "description": "Your Cloudinary API key, used to authenticate requests to the Cloudinary API.", + "required": true, + "example": "my_api_key" + }, + "CLOUDINARY_API_SECRET": { + "description": "Your Cloudinary API secret, used to authenticate requests and secure your Cloudinary account.", + "required": true, + "example": "my_api_secret" + } + }, + "tools": [ + { + "name": "upload", + "description": "Upload media (images/videos) to Cloudinary. For large files, the upload is processed in chunks and returns a streaming response. The uploaded asset will be available at:\n- HTTP: http://res.cloudinary.com/{cloud_name}/{resource_type}/upload/v1/{public_id}.{format}\n- HTTPS: https://res.cloudinary.com/{cloud_name}/{resource_type}/upload/v1/{public_id}.{format}\nwhere {cloud_name} is your Cloudinary cloud name, resource_type is 'image' or 'video', and format is determined by the file extension.", + "inputSchema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "description": "Path to file, URL, or base64 data URI to upload" + }, + "resource_type": { + "type": "string", + "enum": [ + "image", + "video", + "raw" + ], + "description": "Type of resource to upload. For videos, the upload will return a streaming response as it processes in chunks." + }, + "public_id": { + "type": "string", + "description": "Public ID to assign to the uploaded asset. This will be used in the final URL. If not provided, Cloudinary will generate one." + }, + "overwrite": { + "type": "boolean", + "description": "Whether to overwrite existing assets with the same public ID" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags to assign to the uploaded asset" + } + }, + "required": [ + "file" + ] + } + } + ] + }, + "notion": { + "name": "notion", + "display_name": "Notion", + "description": "Notion MCP integration. Search, Read, Update, and Create pages through Claude chat.", + "repository": { + "type": "git", + "url": "https://github.com/v-3/notion-server" + }, + "homepage": "https://github.com/v-3/notion-server", + "author": { + "name": "v-3" + }, + "license": "MIT", + "categories": [ + "Productivity" + ], + "tags": [ + "Notion" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "https://github.com/v-3/notion-server" + ], + "env": { + "NOTION_API_KEY": "${NOTION_API_KEY}" + } + } + }, + "arguments": { + "NOTION_API_KEY": { + "description": "Your Notion API key for authentication to access data within your Notion workspace.", + "required": true, + "example": "your_notion_api_key_here" + } + } + }, + "dicom": { + "name": "dicom", + "display_name": "DICOM Model Context Protocol", + "description": "An MCP server to query and retrieve medical images and for parsing and reading dicom-encapsulated documents (pdf etc.).", + "repository": { + "type": "git", + "url": "https://github.com/ChristianHinge/dicom-mcp" + }, + "homepage": "https://github.com/ChristianHinge/dicom-mcp", + "author": { + "name": "ChristianHinge", + "url": "https://github.com/ChristianHinge" + }, + "license": "MIT", + "categories": [ + "Professional Apps" + ], + "tags": [ + "DICOM", + "Medical Imaging", + "AI", + "PDF Extraction" + ], + "examples": [ + { + "title": "List available DICOM nodes", + "description": "Retrieve and display all configured DICOM nodes and calling AE titles.", + "prompt": "list_dicom_nodes()" + } + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/ChristianHinge/dicom-mcp", + "dicom-mcp", + "${CONFIG_PATH}" + ] + } + }, + "arguments": { + "CONFIG_PATH": { + "description": "Path to the configuration file", + "required": true, + "example": "/path/to/config.yaml" + } + }, + "tools": [ + { + "name": "list_dicom_nodes", + "description": "Lists all configured DICOM nodes and calling AE titles.", + "inputSchema": {}, + "required": [] + }, + { + "name": "switch_dicom_node", + "description": "Switches to a different configured DICOM node.", + "inputSchema": { + "node_name": { + "type": "string", + "description": "Name of the node to switch to" + } + }, + "required": [ + "node_name" + ] + }, + { + "name": "switch_calling_aet", + "description": "Switches to a different configured calling AE title.", + "inputSchema": { + "aet_name": { + "type": "string", + "description": "Name of the calling AE title to switch to" + } + }, + "required": [ + "aet_name" + ] + }, + { + "name": "verify_connection", + "description": "Tests connectivity to the configured DICOM node using C-ECHO.", + "inputSchema": {}, + "required": [] + }, + { + "name": "query_patients", + "description": "Search for patients matching specified criteria.", + "inputSchema": { + "name_pattern": { + "type": "string", + "description": "Patient name pattern (can include wildcards)", + "optional": true + }, + "patient_id": { + "type": "string", + "description": "Patient ID", + "optional": true + }, + "birth_date": { + "type": "string", + "description": "Patient birth date (YYYYMMDD)", + "optional": true + }, + "attribute_preset": { + "type": "string", + "description": "Preset level of detail", + "optional": true + }, + "additional_attributes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Additional DICOM attributes to include", + "optional": true + }, + "exclude_attributes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "DICOM attributes to exclude", + "optional": true + } + }, + "required": [] + }, + { + "name": "query_studies", + "description": "Search for studies matching specified criteria.", + "inputSchema": { + "patient_id": { + "type": "string", + "description": "Patient ID", + "optional": true + }, + "study_date": { + "type": "string", + "description": "Study date or range (YYYYMMDD or YYYYMMDD-YYYYMMDD)", + "optional": true + }, + "modality_in_study": { + "type": "string", + "description": "Modalities in study", + "optional": true + }, + "study_description": { + "type": "string", + "description": "Study description (can include wildcards)", + "optional": true + }, + "accession_number": { + "type": "string", + "description": "Accession number", + "optional": true + }, + "study_instance_uid": { + "type": "string", + "description": "Study Instance UID", + "optional": true + }, + "attribute_preset": { + "type": "string", + "description": "Preset level of detail", + "optional": true + }, + "additional_attributes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Additional DICOM attributes to include", + "optional": true + }, + "exclude_attributes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "DICOM attributes to exclude", + "optional": true + } + }, + "required": [] + }, + { + "name": "query_series", + "description": "Search for series within a study.", + "inputSchema": { + "study_instance_uid": { + "type": "string", + "description": "Study Instance UID" + }, + "modality": { + "type": "string", + "description": "Modality (e.g., 'CT', 'MR')", + "optional": true + }, + "series_number": { + "type": "string", + "description": "Series number", + "optional": true + }, + "series_description": { + "type": "string", + "description": "Series description", + "optional": true + }, + "series_instance_uid": { + "type": "string", + "description": "Series Instance UID", + "optional": true + }, + "attribute_preset": { + "type": "string", + "description": "Preset level of detail", + "optional": true + }, + "additional_attributes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Additional DICOM attributes to include", + "optional": true + }, + "exclude_attributes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "DICOM attributes to exclude", + "optional": true + } + }, + "required": [ + "study_instance_uid" + ] + }, + { + "name": "query_instances", + "description": "Search for instances within a series.", + "inputSchema": { + "series_instance_uid": { + "type": "string", + "description": "Series Instance UID" + }, + "instance_number": { + "type": "string", + "description": "Instance number", + "optional": true + }, + "sop_instance_uid": { + "type": "string", + "description": "SOP Instance UID", + "optional": true + }, + "attribute_preset": { + "type": "string", + "description": "Preset level of detail", + "optional": true + }, + "additional_attributes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Additional DICOM attributes to include", + "optional": true + }, + "exclude_attributes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "DICOM attributes to exclude", + "optional": true + } + }, + "required": [ + "series_instance_uid" + ] + }, + { + "name": "get_attribute_presets", + "description": "Lists available attribute presets for queries.", + "inputSchema": {}, + "required": [] + }, + { + "name": "retrieve_instance", + "description": "Retrieves a specific DICOM instance and saves it to the local filesystem.", + "inputSchema": { + "study_instance_uid": { + "type": "string", + "description": "Study Instance UID" + }, + "series_instance_uid": { + "type": "string", + "description": "Series Instance UID" + }, + "sop_instance_uid": { + "type": "string", + "description": "SOP Instance UID" + }, + "output_directory": { + "type": "string", + "description": "Directory to save the retrieved instance to (default: './retrieved_files')", + "optional": true + } + }, + "required": [ + "study_instance_uid", + "series_instance_uid", + "sop_instance_uid" + ] + }, + { + "name": "extract_pdf_text_from_dicom", + "description": "Retrieves a DICOM instance containing an encapsulated PDF and extracts its text content.", + "inputSchema": { + "study_instance_uid": { + "type": "string", + "description": "Study Instance UID" + }, + "series_instance_uid": { + "type": "string", + "description": "Series Instance UID" + }, + "sop_instance_uid": { + "type": "string", + "description": "SOP Instance UID" + } + }, + "required": [ + "study_instance_uid", + "series_instance_uid", + "sop_instance_uid" + ] + } + ] + }, + "huggingface-spaces": { + "name": "huggingface-spaces", + "display_name": "HuggingFace Spaces \ud83e\udd17", + "description": "Server for using HuggingFace Spaces, supporting Open Source Image, Audio, Text Models and more. Claude Desktop mode for easy integration.", + "repository": { + "type": "git", + "url": "https://github.com/evalstate/mcp-hfspace" + }, + "author": { + "name": "evalstate" + }, + "license": "MIT", + "categories": [ + "AI Systems" + ], + "tags": [ + "Hugging Face", + "Claude Desktop" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "@llmindset/mcp-hfspace" + ] + } + }, + "examples": [ + { + "title": "Image Generation Example", + "description": "Using mcp-hfspace to generate images.", + "prompt": "Use shuttleai/shuttle-3.1-aesthetic to create an image." + }, + { + "title": "Text-to-Speech Example", + "description": "Using mcp-hfspace to convert text to speech.", + "prompt": "Create an audio file from the text 'Hello, world!'." + }, + { + "title": "Speech-to-Text Example", + "description": "Using mcp-hfspace to transcribe audio to text.", + "prompt": "Transcribe the audio file 'sample_audio.wav'." + }, + { + "title": "Vision Model Example", + "description": "Using mcp-hfspace to analyze images.", + "prompt": "Analyze the image file 'test_image.jpg'." + } + ], + "homepage": "https://github.com/evalstate/mcp-hfspace", + "arguments": { + "CLAUDE_DESKTOP_MODE": { + "description": "Enables or disables the Claude Desktop Mode for the server.", + "required": false, + "example": "false" + } + }, + "tools": [ + { + "name": "available-files", + "description": "A list of available file and resources. If the User requests things like 'most recent image' or 'the audio' use this tool to identify the intended resource.This tool returns 'resource uri', 'name', 'size', 'last modified' and 'mime type' in a markdown table", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "FLUX_1-schnell-infer", + "description": "Call the FLUX.1-schnell endpoint /infer", + "inputSchema": { + "type": "object", + "properties": { + "prompt": { + "type": "string", + "description": "Prompt", + "examples": [ + "Hello!!" + ] + }, + "seed": { + "type": "number", + "description": "Seed", + "default": 0 + }, + "randomize_seed": { + "type": "boolean", + "description": "Randomize seed", + "default": true, + "examples": [ + true + ] + }, + "width": { + "type": "number", + "description": "Width", + "default": 1024, + "examples": [ + 256 + ] + }, + "height": { + "type": "number", + "description": "Height", + "default": 1024, + "examples": [ + 256 + ] + }, + "num_inference_steps": { + "type": "number", + "description": "Number of inference steps", + "default": 4, + "examples": [ + 1 + ] + } + }, + "required": [ + "prompt" + ] + } + } + ] + }, + "mcp-audiense-insights": { + "display_name": "Audiense Insights", + "repository": { + "type": "git", + "url": "https://github.com/AudienseCo/mcp-audiense-insights" + }, + "homepage": "https://github.com/AudienseCo/mcp-audiense-insights", + "author": { + "name": "AudienseCo" + }, + "license": "Apache 2.0", + "tags": [ + "marketing", + "audience analysis", + "insights", + "demographics", + "influencers" + ], + "arguments": { + "AUDIENSE_CLIENT_ID": { + "description": "Audiense API client ID", + "required": true, + "example": "your_client_id_here" + }, + "AUDIENSE_CLIENT_SECRET": { + "description": "Audiense API client secret", + "required": true, + "example": "your_client_secret_here" + }, + "TWITTER_BEARER_TOKEN": { + "description": "X/Twitter API Bearer Token for enriched influencer data", + "required": false, + "example": "your_token_here" + } + }, + "installations": { + "custom": { + "type": "npm", + "command": "node", + "args": [ + "/ABSOLUTE/PATH/TO/YOUR/build/index.js" + ], + "env": { + "AUDIENSE_CLIENT_ID": "your_client_id_here", + "AUDIENSE_CLIENT_SECRET": "your_client_secret_here", + "TWITTER_BEARER_TOKEN": "your_token_here" + }, + "description": "Manual installation by configuring Claude Desktop" + } + }, + "examples": [ + { + "title": "Audiense Demo", + "description": "Helps analyze Audiense reports interactively", + "prompt": "audiense-demo" + }, + { + "title": "Segment Matching", + "description": "Match and compare audience segments across Audiense reports, identifying similarities, unique traits, and key insights", + "prompt": "segment-matching" + } + ], + "name": "mcp-audiense-insights", + "description": "This server, based on the [Model Context Protocol (MCP)](https://github.com/modelcontextprotocol), allows **Claude** or any other MCP-compatible client to interact with your [Audiense Insights](https://www.audiense.com/) account. It extracts **marketing insights and audience analysis** from Audiense reports, covering **demographic, cultural, influencer, and content engagement analysis**.", + "categories": [ + "Analytics" + ], + "is_official": true + }, + "hubspot": { + "name": "hubspot", + "display_name": "HubSpot CRM Integration", + "description": "HubSpot CRM integration for managing contacts and companies. Create and retrieve CRM data directly through Claude chat.", + "repository": { + "type": "git", + "url": "https://github.com/buryhuang/mcp-hubspot" + }, + "homepage": "https://github.com/buryhuang/mcp-hubspot", + "author": { + "name": "buryhuang" + }, + "license": "MIT", + "categories": [ + "Productivity" + ], + "tags": [ + "HubSpot", + "API", + "AI", + "CRM", + "Integration" + ], + "installations": { + "docker": { + "type": "docker", + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "HUBSPOT_ACCESS_TOKEN=${HUBSPOT_ACCESS_TOKEN}", + "buryhuang/mcp-hubspot:latest" + ], + "env": { + "HUBSPOT_ACCESS_TOKEN": "${HUBSPOT_ACCESS_TOKEN}" + } + } + }, + "examples": [ + { + "title": "Create HubSpot contacts from LinkedIn", + "description": "This prompt allows you to create contacts in HubSpot by parsing information from a LinkedIn profile.", + "prompt": "Create HubSpot contacts and companies from following:\n\nJohn Doe\nSoftware Engineer at Tech Corp\nSan Francisco Bay Area \u2022 500+ connections\n\nExperience\nTech Corp\nSoftware Engineer\nJan 2020 - Present \u00b7 4 yrs\nSan Francisco, California\n\nPrevious Company Inc.\nSenior Developer\n2018 - 2020 \u00b7 2 yrs\n\nEducation\nUniversity of California, Berkeley\nComputer Science, BS\n2014 - 2018" + }, + { + "title": "Get latest company activities", + "description": "Use this prompt to get the latest activities related to your company in HubSpot.", + "prompt": "What's happening latestly with my pipeline?" + } + ], + "arguments": { + "HUBSPOT_ACCESS_TOKEN": { + "description": "The HubSpot access token required for authenticating API requests to HubSpot.", + "required": true, + "example": "your_access_token_here" + } + }, + "tools": [ + { + "name": "hubspot_create_contact", + "description": "Create a new contact in HubSpot", + "inputSchema": { + "type": "object", + "properties": { + "firstname": { + "type": "string", + "description": "Contact's first name" + }, + "lastname": { + "type": "string", + "description": "Contact's last name" + }, + "email": { + "type": "string", + "description": "Contact's email address" + }, + "properties": { + "type": "object", + "description": "Additional contact properties" + } + }, + "required": [ + "firstname", + "lastname" + ] + } + }, + { + "name": "hubspot_create_company", + "description": "Create a new company in HubSpot", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Company name" + }, + "properties": { + "type": "object", + "description": "Additional company properties" + } + }, + "required": [ + "name" + ] + } + }, + { + "name": "hubspot_get_company_activity", + "description": "Get activity history for a specific company", + "inputSchema": { + "type": "object", + "properties": { + "company_id": { + "type": "string", + "description": "HubSpot company ID" + } + }, + "required": [ + "company_id" + ] + } + }, + { + "name": "hubspot_get_recent_engagements", + "description": "Get recent engagement activities across all contacts and companies", + "inputSchema": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "description": "Number of days to look back (default: 7)" + }, + "limit": { + "type": "integer", + "description": "Maximum number of engagements to return (default: 50)" + } + } + } + }, + { + "name": "hubspot_get_active_companies", + "description": "Get most recently active companies from HubSpot", + "inputSchema": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "description": "Maximum number of companies to return (default: 10)" + } + } + } + }, + { + "name": "hubspot_get_active_contacts", + "description": "Get most recently active contacts from HubSpot", + "inputSchema": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "description": "Maximum number of contacts to return (default: 10)" + } + } + } + } + ] + }, + "ticketmaster": { + "name": "ticketmaster", + "display_name": "Ticketmaster", + "description": "Search for events, venues, and attractions through the Ticketmaster Discovery API", + "repository": { + "type": "git", + "url": "https://github.com/delorenj/mcp-server-ticketmaster" + }, + "homepage": "https://github.com/delorenj/mcp-server-ticketmaster", + "author": { + "name": "delorenj" + }, + "license": "MIT", + "categories": [ + "Web Services" + ], + "tags": [ + "ticketmaster", + "events", + "venues", + "attractions" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "@delorenj/mcp-server-ticketmaster" + ], + "env": { + "TICKETMASTER_API_KEY": "${TICKETMASTER_API_KEY}" + } + } + }, + "examples": [ + { + "title": "Structured JSON Output", + "description": "Example of structured JSON output for searching events.", + "prompt": " \n " + }, + { + "title": "Human-Readable Text Output", + "description": "Example of human-readable text output for searching events.", + "prompt": "ticketmaster \nsearch_ticketmaster \n\n{\n \"type\": \"event\",\n \"keyword\": \"concert\",\n \"startDate\": \"2025-02-01\",\n \"endDate\": \"2025-02-28\",\n \"city\": \"New York\",\n \"stateCode\": \"NY\"\n}\n \n\n " + } + ], + "arguments": { + "TICKETMASTER_API_KEY": { + "description": "API key required to access the Ticketmaster Discovery API.", + "required": true, + "example": "your-api-key-here" + } + }, + "tools": [ + { + "name": "search_ticketmaster", + "description": "Search for events, venues, or attractions on Ticketmaster", + "inputSchema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "event", + "venue", + "attraction" + ], + "description": "Type of search to perform" + }, + "keyword": { + "type": "string", + "description": "Search keyword or term" + }, + "startDate": { + "type": "string", + "description": "Start date in YYYY-MM-DD format" + }, + "endDate": { + "type": "string", + "description": "End date in YYYY-MM-DD format" + }, + "city": { + "type": "string", + "description": "City name" + }, + "stateCode": { + "type": "string", + "description": "State code (e.g., NY, CA)" + }, + "countryCode": { + "type": "string", + "description": "Country code (e.g., US, CA)" + }, + "venueId": { + "type": "string", + "description": "Specific venue ID to search" + }, + "attractionId": { + "type": "string", + "description": "Specific attraction ID to search" + }, + "classificationName": { + "type": "string", + "description": "Event classification/category (e.g., \"Sports\", \"Music\")" + }, + "format": { + "type": "string", + "enum": [ + "json", + "text" + ], + "description": "Output format (defaults to json)", + "default": "json" + } + }, + "required": [ + "type" + ] + } + } + ] + }, + "figma": { + "name": "figma", + "display_name": "Figma", + "description": "Give your coding agent direct access to Figma file data, helping it one-shot design implementation.", + "repository": { + "type": "git", + "url": "https://github.com/GLips/Figma-Context-MCP" + }, + "homepage": "https://github.com/GLips/Figma-Context-MCP", + "author": { + "name": "GLips" + }, + "license": "MIT", + "categories": [ + "Professional Apps" + ], + "tags": [ + "Figma", + "AI" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "figma-developer-mcp", + "--figma-api-key=${FIGMA_API_KEY}", + "--stdio" + ] + } + }, + "arguments": { + "FIGMA_API_KEY": { + "description": "Your Figma API access token (required)", + "required": true, + "example": "ticketmaster \nsearch_ticketmaster \n\n{\n \"type\": \"event\",\n \"keyword\": \"concert\",\n \"startDate\": \"2025-02-01\",\n \"endDate\": \"2025-02-28\",\n \"city\": \"New York\",\n \"stateCode\": \"NY\",\n \"format\": \"text\"\n}\n \n" + } + }, + "tools": [ + { + "name": "get_figma_data", + "description": "When the nodeId cannot be obtained, obtain the layout information about the entire Figma file", + "inputSchema": { + "type": "object", + "properties": { + "fileKey": { + "type": "string", + "description": "The key of the Figma file to fetch, often found in a provided URL like figma.com/(file|design)/ /..." + }, + "nodeId": { + "type": "string", + "description": "The ID of the node to fetch, often found as URL parameter node-id= , always use if provided" + }, + "depth": { + "type": "number", + "description": "How many levels deep to traverse the node tree, only use if explicitly requested by the user" + } + }, + "required": [ + "fileKey" + ] + } + }, + { + "name": "download_figma_images", + "description": "Download SVG and PNG images used in a Figma file based on the IDs of image or icon nodes", + "inputSchema": { + "type": "object", + "properties": { + "fileKey": { + "type": "string", + "description": "The key of the Figma file containing the node" + }, + "nodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "nodeId": { + "type": "string", + "description": "The ID of the Figma image node to fetch, formatted as 1234:5678" + }, + "imageRef": { + "type": "string", + "description": "If a node has an imageRef fill, you must include this variable. Leave blank when downloading Vector SVG images." + }, + "fileName": { + "type": "string", + "description": "The local name for saving the fetched file" + } + }, + "required": [ + "nodeId", + "fileName" + ], + "additionalProperties": false + }, + "description": "The nodes to fetch as images" + }, + "localPath": { + "type": "string", + "description": "The absolute path to the directory where images are stored in the project. Automatically creates directories if needed." + } + }, + "required": [ + "fileKey", + "nodes", + "localPath" + ] + } + } + ] + }, + "riza-mcp": { + "display_name": "Riza MCP Server", + "repository": { + "type": "git", + "url": "https://github.com/riza-io/riza-mcp" + }, + "homepage": "https://riza.io", + "author": { + "name": "riza-io" + }, + "license": "MIT", + "tags": [ + "code interpreter", + "LLM", + "tools" + ], + "arguments": { + "RIZA_API_KEY": { + "description": "API key for Riza service", + "required": true, + "example": "your-api-key" + } + }, + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "@riza-io/riza-mcp" + ], + "env": { + "RIZA_API_KEY": "your-api-key" + }, + "recommended": true + } + }, + "examples": [ + { + "title": "Configure with Claude Desktop", + "description": "Configuration for Claude Desktop", + "prompt": "{\n \"mcpServers\": {\n \"riza-server\": {\n \"command\": \"npx\",\n \"args\": [\n \"@riza-io/riza-mcp\"\n ],\n \"env\": {\n \"RIZA_API_KEY\": \"your-api-key\"\n }\n }\n }\n}" + } + ], + "name": "riza-mcp", + "description": "[Riza](https://riza.io) offers an isolated code interpreter for your LLM-generated code.", + "categories": [ + "Dev Tools" + ], + "tools": [ + { + "name": "create_tool", + "description": "Create a new tool. This tool will be used to create new tools. You can use the tools you have created to perform tasks.", + "inputSchema": { + "type": "object", + "required": [ + "name", + "description", + "code", + "input_schema", + "language" + ], + "properties": { + "name": { + "type": "string", + "description": "The name of the tool you are writing. This is what you will use to call the tool." + }, + "description": { + "type": "string", + "description": "A description of the tool you are writing. This will help you or other agents or people pick the appropriate tool in the future." + }, + "code": { + "type": "string", + "description": "The Typescript code for the tool you are writing. The code should be a valid Typescript function named `execute` that takes one argument called `input`. When called, the `input` provided will match the schema of the `input_schema` of the tool." + }, + "input_schema": { + "type": "object", + "description": "The input schema for the tool. This must be provided as a valid JSON Schema object." + }, + "language": { + "type": "string", + "description": "The language of the tool you are writing. This must be either 'TYPESCRIPT' or 'PYTHON'." + } + } + } + }, + { + "name": "fetch_tool", + "description": "Fetch a tool, including its source code.", + "inputSchema": { + "type": "object", + "properties": { + "tool_id": { + "type": "string", + "description": "The ID of the tool to fetch." + } + } + } + }, + { + "name": "edit_tool", + "description": "Edit a tool, including its source code. Omit properties that you do not want to change.", + "inputSchema": { + "type": "object", + "required": [ + "tool_id", + "code", + "language", + "input_schema" + ], + "properties": { + "tool_id": { + "type": "string", + "description": "The ID of the tool you are editing." + }, + "name": { + "type": "string", + "description": "The name of the tool you are editing. This is what you will use to call the tool." + }, + "description": { + "type": "string", + "description": "A description of the tool you are editing. This will help you or other agents or people pick the appropriate tool in the future." + }, + "code": { + "type": "string", + "description": "The Typescript code for the tool you are editing. The code should be a valid Typescript function named `execute` that takes one argument called `input`. When called, the `input` provided will match the schema of the `input_schema` of the tool." + }, + "input_schema": { + "type": "object", + "description": "The input schema for the tool. This must be provided as a valid JSON Schema object." + }, + "language": { + "type": "string", + "description": "The language of the tool you are editing. This must be either 'TYPESCRIPT' or 'PYTHON'." + } + } + } + }, + { + "name": "execute_code", + "description": "Execute arbitrary Typescript or Python code.", + "inputSchema": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code you are writing. This will be executed as a script. Write any output to stdout or stderr." + }, + "language": { + "type": "string", + "description": "The language of the code you are writing. This must be either 'TYPESCRIPT' or 'PYTHON'." + } + } + } + }, + { + "name": "list_tools", + "description": "Lists the tool definitions of all self-written tools available for use. These tools can be used by calling `use_tool` with the name and input.", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "execute_tool", + "description": "Executes a tool. This tool will be used to execute a self-written tool.", + "inputSchema": { + "type": "object", + "required": [ + "tool_id", + "input" + ], + "properties": { + "tool_id": { + "type": "string", + "description": "The ID of the tool you are executing." + }, + "input": { + "type": "object", + "description": "The input to the tool. This must match the input schema of the tool." + } + } + } + } + ], + "prompts": [], + "resources": [], + "is_official": true + }, + "uns-mcp": { + "display_name": "Unstructured API MCP Server", + "repository": { + "type": "git", + "url": "https://github.com/Unstructured-IO/UNS-MCP" + }, + "homepage": "https://docs.unstructured.io/", + "author": { + "name": "Unstructured-IO" + }, + "license": "[NOT GIVEN]", + "tags": [ + "unstructured", + "api", + "document processing", + "workflow", + "connectors" + ], + "arguments": { + "UNSTRUCTURED_API_KEY": { + "description": "API key for the Unstructured platform", + "required": true, + "example": "YOUR_KEY" + } + }, + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "uns_mcp" + ], + "env": { + "UNSTRUCTURED_API_KEY": "YOUR_KEY" + }, + "description": "Run using Python with uv", + "recommended": true + } + }, + "name": "uns-mcp", + "description": "An MCP server implementation for interacting with the Unstructured API. This server provides tools to list sources and workflows.", + "categories": [ + "Knowledge Base" + ], + "is_official": true, + "tools": [ + { + "name": "create_s3_source", + "description": "Create an S3 source connector.\n\n Args:\n name: A unique name for this connector\n remote_url: The S3 URI to the bucket or folder (e.g., s3://my-bucket/)\n recursive: Whether to access subfolders within the bucket\n\n Returns:\n String containing the created source connector information\n ", + "inputSchema": { + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "remote_url": { + "title": "Remote Url", + "type": "string" + }, + "recursive": { + "default": false, + "title": "Recursive", + "type": "boolean" + } + }, + "required": [ + "name", + "remote_url" + ], + "title": "create_s3_sourceArguments", + "type": "object" + } + }, + { + "name": "update_s3_source", + "description": "Update an S3 source connector.\n\n Args:\n source_id: ID of the source connector to update\n remote_url: The S3 URI to the bucket or folder\n recursive: Whether to access subfolders within the bucket\n\n Returns:\n String containing the updated source connector information\n ", + "inputSchema": { + "properties": { + "source_id": { + "title": "Source Id", + "type": "string" + }, + "remote_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Remote Url" + }, + "recursive": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Recursive" + } + }, + "required": [ + "source_id" + ], + "title": "update_s3_sourceArguments", + "type": "object" + } + }, + { + "name": "delete_s3_source", + "description": "Delete an S3 source connector.\n\n Args:\n source_id: ID of the source connector to delete\n\n Returns:\n String containing the result of the deletion\n ", + "inputSchema": { + "properties": { + "source_id": { + "title": "Source Id", + "type": "string" + } + }, + "required": [ + "source_id" + ], + "title": "delete_s3_sourceArguments", + "type": "object" + } + }, + { + "name": "create_azure_source", + "description": "Create an Azure source connector.\n\n Args:\n name: A unique name for this connector\n remote_url: The Azure Storage remote URL,\n with the format az:// / \n recursive: Whether to access subfolders within the bucket\n\n Returns:\n String containing the created source connector information\n ", + "inputSchema": { + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "remote_url": { + "title": "Remote Url", + "type": "string" + }, + "recursive": { + "default": false, + "title": "Recursive", + "type": "boolean" + } + }, + "required": [ + "name", + "remote_url" + ], + "title": "create_azure_sourceArguments", + "type": "object" + } + }, + { + "name": "update_azure_source", + "description": "Update an azure source connector.\n\n Args:\n source_id: ID of the source connector to update\n remote_url: The Azure Storage remote URL, with the format\n az:// / \n recursive: Whether to access subfolders within the bucket\n\n Returns:\n String containing the updated source connector information\n ", + "inputSchema": { + "properties": { + "source_id": { + "title": "Source Id", + "type": "string" + }, + "remote_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Remote Url" + }, + "recursive": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Recursive" + } + }, + "required": [ + "source_id" + ], + "title": "update_azure_sourceArguments", + "type": "object" + } + }, + { + "name": "delete_azure_source", + "description": "Delete an azure source connector.\n\n Args:\n source_id: ID of the source connector to delete\n\n Returns:\n String containing the result of the deletion\n ", + "inputSchema": { + "properties": { + "source_id": { + "title": "Source Id", + "type": "string" + } + }, + "required": [ + "source_id" + ], + "title": "delete_azure_sourceArguments", + "type": "object" + } + }, + { + "name": "create_gdrive_source", + "description": "Create a gdrive source connector.\n\n Args:\n name: A unique name for this connector\n remote_url: The gdrive URI to the bucket or folder (e.g., gdrive://my-bucket/)\n recursive: Whether to access subfolders within the bucket\n\n Returns:\n String containing the created source connector information\n ", + "inputSchema": { + "$defs": { + "Nullable_List_str__": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "OptionalNullable_List_str__": { + "anyOf": [ + { + "$ref": "#/$defs/Nullable_List_str__" + }, + { + "$ref": "#/$defs/Unset" + }, + { + "type": "null" + } + ] + }, + "Unset": { + "properties": {}, + "title": "Unset", + "type": "object" + } + }, + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "drive_id": { + "title": "Drive Id", + "type": "string" + }, + "recursive": { + "default": false, + "title": "Recursive", + "type": "boolean" + }, + "extensions": { + "$ref": "#/$defs/OptionalNullable_List_str__", + "default": "~?~unset~?~sentinel~?~" + } + }, + "required": [ + "name", + "drive_id" + ], + "title": "create_gdrive_sourceArguments", + "type": "object" + } + }, + { + "name": "update_gdrive_source", + "description": "Update an gdrive source connector.\n\n Args:\n source_id: ID of the source connector to update\n remote_url: The gdrive URI to the bucket or folder\n recursive: Whether to access subfolders within the bucket\n\n Returns:\n String containing the updated source connector information\n ", + "inputSchema": { + "$defs": { + "Nullable_List_str__": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "OptionalNullable_List_str__": { + "anyOf": [ + { + "$ref": "#/$defs/Nullable_List_str__" + }, + { + "$ref": "#/$defs/Unset" + }, + { + "type": "null" + } + ] + }, + "Unset": { + "properties": {}, + "title": "Unset", + "type": "object" + } + }, + "properties": { + "source_id": { + "title": "Source Id", + "type": "string" + }, + "drive_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Drive Id" + }, + "recursive": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Recursive" + }, + "extensions": { + "$ref": "#/$defs/OptionalNullable_List_str__", + "default": "~?~unset~?~sentinel~?~" + } + }, + "required": [ + "source_id" + ], + "title": "update_gdrive_sourceArguments", + "type": "object" + } + }, + { + "name": "delete_gdrive_source", + "description": "Delete an gdrive source connector.\n\n Args:\n source_id: ID of the source connector to delete\n\n Returns:\n String containing the result of the deletion\n ", + "inputSchema": { + "properties": { + "source_id": { + "title": "Source Id", + "type": "string" + } + }, + "required": [ + "source_id" + ], + "title": "delete_gdrive_sourceArguments", + "type": "object" + } + }, + { + "name": "create_onedrive_source", + "description": "Create a OneDrive source connector.\n\n Args:\n name: A unique name for this connector\n path: The path to the target folder in the OneDrive account,\n starting with the account\u2019s root folder\n user_pname: The User Principal Name (UPN) for the OneDrive user account in Entra ID.\n This is typically the user\u2019s email address.\n recursive: Whether to access subfolders\n authority_url: The authentication token provider URL for the Entra ID app registration.\n The default is https://login.microsoftonline.com.\n\n Returns:\n String containing the created source connector information\n ", + "inputSchema": { + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "path": { + "title": "Path", + "type": "string" + }, + "user_pname": { + "title": "User Pname", + "type": "string" + }, + "recursive": { + "default": false, + "title": "Recursive", + "type": "boolean" + }, + "authority_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "https://login.microsoftonline.com", + "title": "Authority Url" + } + }, + "required": [ + "name", + "path", + "user_pname" + ], + "title": "create_onedrive_sourceArguments", + "type": "object" + } + }, + { + "name": "update_onedrive_source", + "description": "Update a OneDrive source connector.\n\n Args:\n source_id: ID of the source connector to update\n path: The path to the target folder in the OneDrive account,\n starting with the account\u2019s root folder\n user_pname: The User Principal Name (UPN) for the OneDrive user account in Entra ID.\n This is typically the user\u2019s email address.\n recursive: Whether to access subfolders\n authority_url: The authentication token provider URL for the Entra ID app registration.\n The default is https://login.microsoftonline.com.\n tenant: The directory (tenant) ID of the Entra ID app registration.\n client_id: The application (client) ID of the Microsoft Entra ID app registration\n that has access to the OneDrive account.\n\n Returns:\n String containing the updated source connector information\n ", + "inputSchema": { + "properties": { + "source_id": { + "title": "Source Id", + "type": "string" + }, + "path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Path" + }, + "user_pname": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "User Pname" + }, + "recursive": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Recursive" + }, + "authority_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Authority Url" + }, + "tenant": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Tenant" + }, + "client_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Client Id" + } + }, + "required": [ + "source_id" + ], + "title": "update_onedrive_sourceArguments", + "type": "object" + } + }, + { + "name": "delete_onedrive_source", + "description": "Delete a OneDrive source connector.\n\n Args:\n source_id: ID of the source connector to delete\n\n Returns:\n String containing the result of the deletion\n ", + "inputSchema": { + "properties": { + "source_id": { + "title": "Source Id", + "type": "string" + } + }, + "required": [ + "source_id" + ], + "title": "delete_onedrive_sourceArguments", + "type": "object" + } + }, + { + "name": "create_s3_destination", + "description": "Create an S3 destination connector.\n\n Args:\n name: A unique name for this connector\n remote_url: The S3 URI to the bucket or folder\n key: The AWS access key ID\n secret: The AWS secret access key\n token: The AWS STS session token for temporary access (optional)\n endpoint_url: Custom URL if connecting to a non-AWS S3 bucket\n\n Returns:\n String containing the created destination connector information\n ", + "inputSchema": { + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "remote_url": { + "title": "Remote Url", + "type": "string" + } + }, + "required": [ + "name", + "remote_url" + ], + "title": "create_s3_destinationArguments", + "type": "object" + } + }, + { + "name": "update_s3_destination", + "description": "Update an S3 destination connector.\n\n Args:\n destination_id: ID of the destination connector to update\n remote_url: The S3 URI to the bucket or folder\n\n Returns:\n String containing the updated destination connector information\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + }, + "remote_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Remote Url" + }, + "recursive": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Recursive" + } + }, + "required": [ + "destination_id" + ], + "title": "update_s3_destinationArguments", + "type": "object" + } + }, + { + "name": "delete_s3_destination", + "description": "Delete an S3 destination connector.\n\n Args:\n destination_id: ID of the destination connector to delete\n\n Returns:\n String containing the result of the deletion\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + } + }, + "required": [ + "destination_id" + ], + "title": "delete_s3_destinationArguments", + "type": "object" + } + }, + { + "name": "create_weaviate_destination", + "description": "Create an weaviate vector database destination connector.\n\n Args:\n cluster_url: URL of the weaviate cluster\n collection : Name of the collection to use in the weaviate cluster\n Note: The collection is a table in the weaviate cluster.\n In platform, there are dedicated code to generate collection for users\n here, due to the simplicity of the server, we are not generating it for users.\n\n Returns:\n String containing the created destination connector information\n ", + "inputSchema": { + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "cluster_url": { + "title": "Cluster Url", + "type": "string" + }, + "collection": { + "title": "Collection", + "type": "string" + } + }, + "required": [ + "name", + "cluster_url", + "collection" + ], + "title": "create_weaviate_destinationArguments", + "type": "object" + } + }, + { + "name": "update_weaviate_destination", + "description": "Update an weaviate destination connector.\n\n Args:\n destination_id: ID of the destination connector to update\n cluster_url (optional): URL of the weaviate cluster\n collection (optional): Name of the collection(like a file) to use in the weaviate cluster\n\n Returns:\n String containing the updated destination connector information\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + }, + "cluster_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Cluster Url" + }, + "collection": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Collection" + } + }, + "required": [ + "destination_id" + ], + "title": "update_weaviate_destinationArguments", + "type": "object" + } + }, + { + "name": "delete_weaviate_destination", + "description": "Delete an weaviate destination connector.\n\n Args:\n destination_id: ID of the destination connector to delete\n\n Returns:\n String containing the result of the deletion\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + } + }, + "required": [ + "destination_id" + ], + "title": "delete_weaviate_destinationArguments", + "type": "object" + } + }, + { + "name": "create_astradb_destination", + "description": "Create an AstraDB destination connector.\n\n Args:\n name: A unique name for this connector\n collection_name: The name of the collection to use\n keyspace: The AstraDB keyspace\n batch_size: The batch size for inserting documents, must be positive (default: 20)\n\n Note: A collection in AstraDB is a schemaless document store optimized for NoSQL workloads,\n equivalent to a table in traditional databases.\n A keyspace is the top-level namespace in AstraDB that groups multiple collections.\n We require the users to create their own collection and keyspace before\n creating the connector.\n\n Returns:\n String containing the created destination connector information\n ", + "inputSchema": { + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "collection_name": { + "title": "Collection Name", + "type": "string" + }, + "keyspace": { + "title": "Keyspace", + "type": "string" + }, + "batch_size": { + "default": 20, + "title": "Batch Size", + "type": "integer" + } + }, + "required": [ + "name", + "collection_name", + "keyspace" + ], + "title": "create_astradb_destinationArguments", + "type": "object" + } + }, + { + "name": "update_astradb_destination", + "description": "Update an AstraDB destination connector.\n\n Args:\n destination_id: ID of the destination connector to update\n collection_name: The name of the collection to use (optional)\n keyspace: The AstraDB keyspace (optional)\n batch_size: The batch size for inserting documents (optional)\n\n Note: We require the users to create their own collection and\n keyspace before creating the connector.\n\n Returns:\n String containing the updated destination connector information\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + }, + "collection_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Collection Name" + }, + "keyspace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Keyspace" + }, + "batch_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Batch Size" + } + }, + "required": [ + "destination_id" + ], + "title": "update_astradb_destinationArguments", + "type": "object" + } + }, + { + "name": "delete_astradb_destination", + "description": "Delete an AstraDB destination connector.\n\n Args:\n destination_id: ID of the destination connector to delete\n\n Returns:\n String containing the result of the deletion\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + } + }, + "required": [ + "destination_id" + ], + "title": "delete_astradb_destinationArguments", + "type": "object" + } + }, + { + "name": "create_neo4j_destination", + "description": "Create an neo4j destination connector.\n\n Args:\n name: A unique name for this connector\n database: The neo4j database, e.g. \"neo4j\"\n uri: The neo4j URI, e.g. neo4j+s:// .databases.neo4j.io\n username: The neo4j username\n\n\n Returns:\n String containing the created destination connector information\n ", + "inputSchema": { + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "database": { + "title": "Database", + "type": "string" + }, + "uri": { + "title": "Uri", + "type": "string" + }, + "username": { + "title": "Username", + "type": "string" + }, + "batch_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": 100, + "title": "Batch Size" + } + }, + "required": [ + "name", + "database", + "uri", + "username" + ], + "title": "create_neo4j_destinationArguments", + "type": "object" + } + }, + { + "name": "update_neo4j_destination", + "description": "Update an neo4j destination connector.\n\n Args:\n destination_id: ID of the destination connector to update\n database: The neo4j database, e.g. \"neo4j\"\n uri: The neo4j URI, e.g. neo4j+s:// .databases.neo4j.io\n username: The neo4j username\n\n\n Returns:\n String containing the updated destination connector information\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + }, + "database": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Database" + }, + "uri": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Uri" + }, + "username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Username" + }, + "batch_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Batch Size" + } + }, + "required": [ + "destination_id" + ], + "title": "update_neo4j_destinationArguments", + "type": "object" + } + }, + { + "name": "delete_neo4j_destination", + "description": "Delete an neo4j destination connector.\n\n Args:\n destination_id: ID of the destination connector to delete\n\n Returns:\n String containing the result of the deletion\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + } + }, + "required": [ + "destination_id" + ], + "title": "delete_neo4j_destinationArguments", + "type": "object" + } + }, + { + "name": "create_mongodb_destination", + "description": "Create an MongoDB destination connector.\n\n Args:\n name: A unique name for this connector\n database: The name of the database to connect to.\n collection: The name of the target MongoDB collection\n Returns:\n String containing the created destination connector information\n ", + "inputSchema": { + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "database": { + "title": "Database", + "type": "string" + }, + "collection": { + "title": "Collection", + "type": "string" + } + }, + "required": [ + "name", + "database", + "collection" + ], + "title": "create_mongodb_destinationArguments", + "type": "object" + } + }, + { + "name": "update_mongodb_destination", + "description": "Update an MongoDB destination connector.\n\n Args:\n destination_id: ID of the destination connector to update\n database: The name of the database to connect to.\n collection: The name of the target MongoDB collection\n\n Returns:\n String containing the updated destination connector information\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + }, + "database": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Database" + }, + "collection": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Collection" + } + }, + "required": [ + "destination_id" + ], + "title": "update_mongodb_destinationArguments", + "type": "object" + } + }, + { + "name": "delete_mongodb_destination", + "description": "Delete an MongoDB destination connector.\n\n Args:\n destination_id: ID of the destination connector to delete\n\n Returns:\n String containing the result of the deletion\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + } + }, + "required": [ + "destination_id" + ], + "title": "delete_mongodb_destinationArguments", + "type": "object" + } + }, + { + "name": "create_databricks_volumes_destination", + "description": "Create an databricks volume destination connector.\n\n Args:\n name: A unique name for this connector\n catalog: Name of the catalog in the Databricks Unity Catalog service for the workspace.\n host: The Databricks host URL for the Databricks workspace.\n volume: Name of the volume associated with the schema.\n schema: Name of the schema associated with the volume. The default value is \"default\".\n volume_path: Any target folder path within the volume, starting from the root of the volume.\n Returns:\n String containing the created destination connector information\n ", + "inputSchema": { + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "catalog": { + "title": "Catalog", + "type": "string" + }, + "volume": { + "title": "Volume", + "type": "string" + }, + "host": { + "title": "Host", + "type": "string" + }, + "schema": { + "default": "default", + "title": "Schema", + "type": "string" + }, + "volume_path": { + "default": "/", + "title": "Volume Path", + "type": "string" + } + }, + "required": [ + "name", + "catalog", + "volume", + "host" + ], + "title": "create_databricks_volumes_destinationArguments", + "type": "object" + } + }, + { + "name": "update_databricks_volumes_destination", + "description": "Update an databricks volumes destination connector.\n\n Args:\n destination_id: ID of the destination connector to update\n catalog: Name of the catalog to update in the Databricks Unity Catalog\n service for the workspace.\n host: The Databricks host URL for the Databricks workspace to update.\n volume: Name of the volume associated with the schema to update.\n schema: Name of the schema associated with the volume to update.\n The default value is \"default\".\n volume_path: Any target folder path within the volume to update,\n starting from the root of the volume.\n\n\n\n Returns:\n String containing the updated destination connector information\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + }, + "catalog": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Catalog" + }, + "volume": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Volume" + }, + "host": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Host" + }, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Schema" + }, + "volume_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Volume Path" + } + }, + "required": [ + "destination_id" + ], + "title": "update_databricks_volumes_destinationArguments", + "type": "object" + } + }, + { + "name": "delete_databricks_volumes_destination", + "description": "Delete an databricks volumes destination connector.\n\n Args:\n destination_id: ID of the destination connector to delete\n\n Returns:\n String containing the result of the deletion\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + } + }, + "required": [ + "destination_id" + ], + "title": "delete_databricks_volumes_destinationArguments", + "type": "object" + } + }, + { + "name": "create_databricks_delta_table_destination", + "description": "Create an databricks volume destination connector.\n\n Args:\n name: A unique name for this connector\n catalog: Name of the catalog in the Databricks Unity Catalog service for the workspace.\n database: The name of the schema (formerly known as a database)\n in Unity Catalog for the target table\n http_path: The cluster\u2019s or SQL warehouse\u2019s HTTP Path value\n server_hostname: The Databricks cluster\u2019s or SQL warehouse\u2019s Server Hostname value\n table_name: The name of the table in the schema\n volume: Name of the volume associated with the schema.\n schema: Name of the schema associated with the volume. The default value is \"default\".\n volume_path: Any target folder path within the volume, starting from the root of the volume.\n Returns:\n String containing the created destination connector information\n ", + "inputSchema": { + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "catalog": { + "title": "Catalog", + "type": "string" + }, + "database": { + "title": "Database", + "type": "string" + }, + "http_path": { + "title": "Http Path", + "type": "string" + }, + "server_hostname": { + "title": "Server Hostname", + "type": "string" + }, + "table_name": { + "title": "Table Name", + "type": "string" + }, + "volume": { + "title": "Volume", + "type": "string" + }, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "default", + "title": "Schema" + }, + "volume_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "/", + "title": "Volume Path" + } + }, + "required": [ + "name", + "catalog", + "database", + "http_path", + "server_hostname", + "table_name", + "volume" + ], + "title": "create_databricks_delta_table_destinationArguments", + "type": "object" + } + }, + { + "name": "update_databricks_delta_table_destination", + "description": "Update an databricks volumes destination connector.\n\n Args:\n destination_id: ID of the destination connector to update\n database: The name of the schema (formerly known as a database)\n in Unity Catalog for the target table\n http_path: The cluster\u2019s or SQL warehouse\u2019s HTTP Path value\n server_hostname: The Databricks cluster\u2019s or SQL warehouse\u2019s Server Hostname value\n volume_path: Any target folder path within the volume to update,\n starting from the root of the volume.\n\n\n\n Returns:\n String containing the updated destination connector information\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + }, + "catalog": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Catalog" + }, + "database": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Database" + }, + "http_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Http Path" + }, + "server_hostname": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Server Hostname" + }, + "table_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Table Name" + }, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Schema" + }, + "volume": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Volume" + }, + "volume_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Volume Path" + } + }, + "required": [ + "destination_id" + ], + "title": "update_databricks_delta_table_destinationArguments", + "type": "object" + } + }, + { + "name": "delete_databricks_delta_table_destination", + "description": "Delete an databricks volumes destination connector.\n\n Args:\n destination_id: ID of the destination connector to delete\n\n Returns:\n String containing the result of the deletion\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + } + }, + "required": [ + "destination_id" + ], + "title": "delete_databricks_delta_table_destinationArguments", + "type": "object" + } + }, + { + "name": "invoke_firecrawl_crawlhtml", + "description": "Start an asynchronous web crawl job using Firecrawl to retrieve HTML content.\n\n Args:\n url: URL to crawl\n s3_uri: S3 URI where results will be uploaded\n limit: Maximum number of pages to crawl (default: 100)\n\n Returns:\n Dictionary with crawl job information including the job ID\n ", + "inputSchema": { + "properties": { + "url": { + "title": "Url", + "type": "string" + }, + "s3_uri": { + "title": "S3 Uri", + "type": "string" + }, + "limit": { + "default": 100, + "title": "Limit", + "type": "integer" + } + }, + "required": [ + "url", + "s3_uri" + ], + "title": "invoke_firecrawl_crawlhtmlArguments", + "type": "object" + } + }, + { + "name": "check_crawlhtml_status", + "description": "Check the status of an existing Firecrawl HTML crawl job.\n\n Args:\n crawl_id: ID of the crawl job to check\n\n Returns:\n Dictionary containing the current status of the crawl job\n ", + "inputSchema": { + "properties": { + "crawl_id": { + "title": "Crawl Id", + "type": "string" + } + }, + "required": [ + "crawl_id" + ], + "title": "check_crawlhtml_statusArguments", + "type": "object" + } + }, + { + "name": "invoke_firecrawl_llmtxt", + "description": "Start an asynchronous llmfull.txt generation job using Firecrawl.\n This file is a standardized markdown file containing information to help LLMs\n use a website at inference time.\n The llmstxt endpoint leverages Firecrawl to crawl your website and extracts data\n using gpt-4o-mini\n Args:\n url: URL to crawl\n s3_uri: S3 URI where results will be uploaded\n max_urls: Maximum number of pages to crawl (1-100, default: 10)\n\n Returns:\n Dictionary with job information including the job ID\n ", + "inputSchema": { + "properties": { + "url": { + "title": "Url", + "type": "string" + }, + "s3_uri": { + "title": "S3 Uri", + "type": "string" + }, + "max_urls": { + "default": 10, + "title": "Max Urls", + "type": "integer" + } + }, + "required": [ + "url", + "s3_uri" + ], + "title": "invoke_firecrawl_llmtxtArguments", + "type": "object" + } + }, + { + "name": "check_llmtxt_status", + "description": "Check the status of an existing llmfull.txt generation job.\n\n Args:\n job_id: ID of the llmfull.txt generation job to check\n\n Returns:\n Dictionary containing the current status of the job and text content if completed\n ", + "inputSchema": { + "properties": { + "job_id": { + "title": "Job Id", + "type": "string" + } + }, + "required": [ + "job_id" + ], + "title": "check_llmtxt_statusArguments", + "type": "object" + } + }, + { + "name": "cancel_crawlhtml_job", + "description": "Cancel an in-progress Firecrawl HTML crawl job.\n\n Args:\n crawl_id: ID of the crawl job to cancel\n\n Returns:\n Dictionary containing the result of the cancellation\n ", + "inputSchema": { + "properties": { + "crawl_id": { + "title": "Crawl Id", + "type": "string" + } + }, + "required": [ + "crawl_id" + ], + "title": "cancel_crawlhtml_jobArguments", + "type": "object" + } + }, + { + "name": "list_sources", + "description": "\n List available sources from the Unstructured API.\n\n Args:\n source_type: Optional source connector type to filter by\n\n Returns:\n String containing the list of sources\n ", + "inputSchema": { + "properties": { + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Source Type" + } + }, + "title": "list_sourcesArguments", + "type": "object" + } + }, + { + "name": "get_source_info", + "description": "Get detailed information about a specific source connector.\n\n Args:\n source_id: ID of the source connector to get information for, should be valid UUID\n\n Returns:\n String containing the source connector information\n ", + "inputSchema": { + "properties": { + "source_id": { + "title": "Source Id", + "type": "string" + } + }, + "required": [ + "source_id" + ], + "title": "get_source_infoArguments", + "type": "object" + } + }, + { + "name": "list_destinations", + "description": "List available destinations from the Unstructured API.\n\n Args:\n destination_type: Optional destination connector type to filter by\n\n Returns:\n String containing the list of destinations\n ", + "inputSchema": { + "properties": { + "destination_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Destination Type" + } + }, + "title": "list_destinationsArguments", + "type": "object" + } + }, + { + "name": "get_destination_info", + "description": "Get detailed information about a specific destination connector.\n\n Args:\n destination_id: ID of the destination connector to get information for\n\n Returns:\n String containing the destination connector information\n ", + "inputSchema": { + "properties": { + "destination_id": { + "title": "Destination Id", + "type": "string" + } + }, + "required": [ + "destination_id" + ], + "title": "get_destination_infoArguments", + "type": "object" + } + }, + { + "name": "list_workflows", + "description": "\n List workflows from the Unstructured API.\n\n Args:\n destination_id: Optional destination connector ID to filter by\n source_id: Optional source connector ID to filter by\n status: Optional workflow status to filter by\n\n Returns:\n String containing the list of workflows\n ", + "inputSchema": { + "properties": { + "destination_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Destination Id" + }, + "source_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Source Id" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Status" + } + }, + "title": "list_workflowsArguments", + "type": "object" + } + }, + { + "name": "get_workflow_info", + "description": "Get detailed information about a specific workflow.\n\n Args:\n workflow_id: ID of the workflow to get information for\n\n Returns:\n String containing the workflow information\n ", + "inputSchema": { + "properties": { + "workflow_id": { + "title": "Workflow Id", + "type": "string" + } + }, + "required": [ + "workflow_id" + ], + "title": "get_workflow_infoArguments", + "type": "object" + } + }, + { + "name": "create_workflow", + "description": "Create a new workflow.\n\n Args:\n workflow_config: A Typed Dictionary containing required fields (destination_id - should be a\n valid UUID, name, source_id - should be a valid UUID, workflow_type) and non-required fields\n (schedule, and workflow_nodes). Note workflow_nodes is only enabled when workflow_type\n is `custom` and is a list of WorkflowNodeTypedDict: partition, prompter,chunk, embed\n Below is an example of a partition workflow node:\n {\n \"name\": \"vlm-partition\",\n \"type\": \"partition\",\n \"sub_type\": \"vlm\",\n \"settings\": {\n \"provider\": \"your favorite provider\",\n \"model\": \"your favorite model\"\n }\n }\n\n\n Returns:\n String containing the created workflow information\n \n\nCustom workflow DAG nodes\n- If WorkflowType is set to custom, you must also specify the settings for the workflow\u2019s\ndirected acyclic graph (DAG) nodes. These nodes\u2019 settings are specified in the workflow_nodes array.\n- A Source node is automatically created when you specify the source_id value outside of the\nworkflow_nodes array.\n- A Destination node is automatically created when you specify the destination_id value outside\nof the workflow_nodes array.\n- You can specify Partitioner, Chunker, Prompter, and Embedder nodes.\n- The order of the nodes in the workflow_nodes array will be the same order that these nodes appear\nin the DAG, with the first node in the array added directly after the Source node.\nThe Destination node follows the last node in the array.\n- Be sure to specify nodes in the allowed order. The following DAG placements are all allowed:\n - Source -> Partitioner -> Destination,\n - Source -> Partitioner -> Chunker -> Destination,\n - Source -> Partitioner -> Chunker -> Embedder -> Destination,\n - Source -> Partitioner -> Prompter -> Chunker -> Destination,\n - Source -> Partitioner -> Prompter -> Chunker -> Embedder -> Destination\n\nPartitioner node\nA Partitioner node has a type of partition and a subtype of auto, vlm, hi_res, or fast.\n\nExamples:\n- auto strategy:\n{\n \"name\": \"Partitioner\",\n \"type\": \"partition\",\n \"subtype\": \"vlm\",\n \"settings\": {\n \"provider\": \"anthropic\", (required)\n \"model\": \"claude-3-5-sonnet-20241022\", (required)\n \"output_format\": \"text/html\",\n \"user_prompt\": null,\n \"format_html\": true,\n \"unique_element_ids\": true,\n \"is_dynamic\": true,\n \"allow_fast\": true\n }\n}\n\n- vlm strategy:\n Allowed values are provider and model. Below are examples:\n - \"provider\": \"anthropic\" \"model\": \"claude-3-5-sonnet-20241022\",\n - \"provider\": \"openai\" \"model\": \"gpt-4o\"\n\n\n- hi_res strategy:\n{\n \"name\": \"Partitioner\",\n \"type\": \"partition\",\n \"subtype\": \"unstructured_api\",\n \"settings\": {\n \"strategy\": \"hi_res\",\n \"include_page_breaks\": ,\n \"pdf_infer_table_structure\": ,\n \"exclude_elements\": [\n \" \",\n \" \"\n ],\n \"xml_keep_tags\": ,\n \"encoding\": \" \",\n \"ocr_languages\": [\n \" \",\n \" \"\n ],\n \"extract_image_block_types\": [\n \"image\",\n \"table\"\n ],\n \"infer_table_structure\": \n }\n}\n- fast strategy\n{\n \"name\": \"Partitioner\",\n \"type\": \"partition\",\n \"subtype\": \"unstructured_api\",\n \"settings\": {\n \"strategy\": \"fast\",\n \"include_page_breaks\": ,\n \"pdf_infer_table_structure\": ,\n \"exclude_elements\": [\n \" \",\n \" \"\n ],\n \"xml_keep_tags\": ,\n \"encoding\": \" \",\n \"ocr_languages\": [\n \" \",\n \" \"\n ],\n \"extract_image_block_types\": [\n \"image\",\n \"table\"\n ],\n \"infer_table_structure\": \n }\n}\n\n\nChunker node\nA Chunker node has a type of chunk and subtype of chunk_by_character or chunk_by_title.\n\n- chunk_by_character\n{\n \"name\": \"Chunker\",\n \"type\": \"chunk\",\n \"subtype\": \"chunk_by_character\",\n \"settings\": {\n \"include_orig_elements\": ,\n \"new_after_n_chars\": , (required, if not provided\nset same as max_characters)\n \"max_characters\": , (required)\n \"overlap\": , (required, if not provided set default to 0)\n \"overlap_all\": ,\n \"contextual_chunking_strategy\": \"v1\"\n }\n}\n\n- chunk_by_title\n{\n \"name\": \"Chunker\",\n \"type\": \"chunk\",\n \"subtype\": \"chunk_by_title\",\n \"settings\": {\n \"multipage_sections\":