rossum-mcp 0.3.5__py3-none-any.whl → 0.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
rossum_mcp/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.3.5"
3
+ __version__ = "0.4.0"
rossum_mcp/server.py CHANGED
@@ -17,6 +17,7 @@ from rossum_api.dtos import Token
17
17
  from rossum_mcp.logging_config import setup_logging
18
18
  from rossum_mcp.tools import (
19
19
  register_annotation_tools,
20
+ register_discovery_tools,
20
21
  register_document_relation_tools,
21
22
  register_email_template_tools,
22
23
  register_engine_tools,
@@ -45,6 +46,7 @@ logger.info(f"Rossum MCP Server starting in {MODE} mode")
45
46
  mcp = FastMCP("rossum-mcp-server")
46
47
  client = AsyncRossumAPIClient(base_url=BASE_URL, credentials=Token(token=API_TOKEN))
47
48
 
49
+ register_discovery_tools(mcp)
48
50
  register_annotation_tools(mcp, client)
49
51
  register_queue_tools(mcp, client)
50
52
  register_schema_tools(mcp, client)
@@ -3,6 +3,13 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from rossum_mcp.tools.annotations import register_annotation_tools
6
+ from rossum_mcp.tools.catalog import (
7
+ TOOL_CATALOG,
8
+ ToolCategory,
9
+ ToolInfo,
10
+ get_catalog_summary,
11
+ )
12
+ from rossum_mcp.tools.discovery import register_discovery_tools
6
13
  from rossum_mcp.tools.document_relations import register_document_relation_tools
7
14
  from rossum_mcp.tools.email_templates import register_email_template_tools
8
15
  from rossum_mcp.tools.engines import register_engine_tools
@@ -15,7 +22,12 @@ from rossum_mcp.tools.users import register_user_tools
15
22
  from rossum_mcp.tools.workspaces import register_workspace_tools
16
23
 
17
24
  __all__ = [
25
+ "TOOL_CATALOG",
26
+ "ToolCategory",
27
+ "ToolInfo",
28
+ "get_catalog_summary",
18
29
  "register_annotation_tools",
30
+ "register_discovery_tools",
19
31
  "register_document_relation_tools",
20
32
  "register_email_template_tools",
21
33
  "register_engine_tools",
@@ -0,0 +1,169 @@
1
+ """Tool catalog for dynamic tool discovery.
2
+
3
+ Provides lightweight metadata for all MCP tools organized by category.
4
+ This is the single source of truth for tool categorization - the agent
5
+ fetches this catalog from MCP to avoid data duplication.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from dataclasses import dataclass
11
+
12
+
13
+ @dataclass
14
+ class ToolInfo:
15
+ """Lightweight tool metadata for catalog."""
16
+
17
+ name: str
18
+ description: str
19
+
20
+
21
+ @dataclass
22
+ class ToolCategory:
23
+ """A category of related tools."""
24
+
25
+ name: str
26
+ description: str
27
+ tools: list[ToolInfo]
28
+ keywords: list[str]
29
+
30
+
31
+ # Tool catalog organized by functional category
32
+ # Keywords enable automatic pre-loading based on user request text
33
+ TOOL_CATALOG: dict[str, ToolCategory] = {
34
+ "annotations": ToolCategory(
35
+ name="annotations",
36
+ description="Document processing: upload, retrieve, update, and confirm annotations",
37
+ tools=[
38
+ ToolInfo("upload_document", "Upload document to queue"),
39
+ ToolInfo("get_annotation", "Retrieve annotation with extracted data"),
40
+ ToolInfo("list_annotations", "List annotations for a queue"),
41
+ ToolInfo("start_annotation", "Start annotation (to_review -> reviewing)"),
42
+ ToolInfo("bulk_update_annotation_fields", "Bulk update annotation fields"),
43
+ ToolInfo("confirm_annotation", "Confirm annotation (-> confirmed)"),
44
+ ],
45
+ keywords=["annotation", "document", "upload", "extract", "confirm", "review"],
46
+ ),
47
+ "queues": ToolCategory(
48
+ name="queues",
49
+ description="Queue management: create, configure, and list document processing queues",
50
+ tools=[
51
+ ToolInfo("get_queue", "Retrieve queue details"),
52
+ ToolInfo("list_queues", "List all queues"),
53
+ ToolInfo("get_queue_schema", "Get queue's schema"),
54
+ ToolInfo("get_queue_engine", "Get queue's AI engine"),
55
+ ToolInfo("create_queue", "Create a queue"),
56
+ ToolInfo("update_queue", "Update queue settings"),
57
+ ToolInfo("get_queue_template_names", "List available queue templates"),
58
+ ToolInfo("create_queue_from_template", "Create queue from template"),
59
+ ],
60
+ keywords=["queue", "inbox", "connector"],
61
+ ),
62
+ "schemas": ToolCategory(
63
+ name="schemas",
64
+ description="Schema management: define and modify document field structures",
65
+ tools=[
66
+ ToolInfo("get_schema", "Retrieve schema details"),
67
+ ToolInfo("list_schemas", "List all schemas"),
68
+ ToolInfo("update_schema", "Update schema"),
69
+ ToolInfo("create_schema", "Create new schema"),
70
+ ToolInfo("patch_schema", "Add/update/remove schema fields"),
71
+ ToolInfo("get_schema_tree_structure", "Get lightweight schema tree"),
72
+ ToolInfo("prune_schema_fields", "Bulk remove schema fields"),
73
+ ],
74
+ keywords=["schema", "field", "datapoint", "section", "multivalue", "tuple"],
75
+ ),
76
+ "engines": ToolCategory(
77
+ name="engines",
78
+ description="AI engine management: create and configure extraction/splitting engines",
79
+ tools=[
80
+ ToolInfo("get_engine", "Retrieve engine details"),
81
+ ToolInfo("list_engines", "List all engines"),
82
+ ToolInfo("update_engine", "Update engine settings"),
83
+ ToolInfo("create_engine", "Create new engine"),
84
+ ToolInfo("create_engine_field", "Create engine field mapping"),
85
+ ToolInfo("get_engine_fields", "List engine fields"),
86
+ ],
87
+ keywords=["engine", "ai", "extractor", "splitter", "training"],
88
+ ),
89
+ "hooks": ToolCategory(
90
+ name="hooks",
91
+ description="Extensions/webhooks: create and manage automation hooks",
92
+ tools=[
93
+ ToolInfo("get_hook", "Retrieve hook details with code"),
94
+ ToolInfo("list_hooks", "List all hooks for a queue"),
95
+ ToolInfo("create_hook", "Create new hook"),
96
+ ToolInfo("update_hook", "Update hook configuration"),
97
+ ToolInfo("list_hook_logs", "View hook execution logs"),
98
+ ToolInfo("list_hook_templates", "List Rossum Store templates"),
99
+ ToolInfo("create_hook_from_template", "Create hook from template"),
100
+ ],
101
+ keywords=["hook", "extension", "webhook", "automation", "function", "serverless"],
102
+ ),
103
+ "email_templates": ToolCategory(
104
+ name="email_templates",
105
+ description="Email templates: configure automated email responses",
106
+ tools=[
107
+ ToolInfo("get_email_template", "Retrieve email template"),
108
+ ToolInfo("list_email_templates", "List email templates"),
109
+ ToolInfo("create_email_template", "Create email template"),
110
+ ],
111
+ keywords=["email", "template", "notification", "rejection"],
112
+ ),
113
+ "document_relations": ToolCategory(
114
+ name="document_relations",
115
+ description="Document relations: manage export/einvoice document links",
116
+ tools=[
117
+ ToolInfo("get_document_relation", "Retrieve document relation"),
118
+ ToolInfo("list_document_relations", "List document relations"),
119
+ ],
120
+ keywords=["document relation", "export", "einvoice"],
121
+ ),
122
+ "relations": ToolCategory(
123
+ name="relations",
124
+ description="Annotation relations: manage edit/attachment/duplicate links",
125
+ tools=[
126
+ ToolInfo("get_relation", "Retrieve relation details"),
127
+ ToolInfo("list_relations", "List annotation relations"),
128
+ ],
129
+ keywords=["relation", "duplicate", "attachment", "edit"],
130
+ ),
131
+ "rules": ToolCategory(
132
+ name="rules",
133
+ description="Validation rules: manage schema validation rules",
134
+ tools=[
135
+ ToolInfo("get_rule", "Retrieve rule details"),
136
+ ToolInfo("list_rules", "List validation rules"),
137
+ ],
138
+ keywords=["rule", "validation", "constraint"],
139
+ ),
140
+ "users": ToolCategory(
141
+ name="users",
142
+ description="User management: list users and roles",
143
+ tools=[
144
+ ToolInfo("get_user", "Retrieve user details"),
145
+ ToolInfo("list_users", "List users with filters"),
146
+ ToolInfo("list_user_roles", "List available user roles"),
147
+ ],
148
+ keywords=["user", "role", "permission", "token_owner"],
149
+ ),
150
+ "workspaces": ToolCategory(
151
+ name="workspaces",
152
+ description="Workspace management: organize queues into workspaces",
153
+ tools=[
154
+ ToolInfo("get_workspace", "Retrieve workspace details"),
155
+ ToolInfo("list_workspaces", "List all workspaces"),
156
+ ToolInfo("create_workspace", "Create new workspace"),
157
+ ],
158
+ keywords=["workspace", "organization"],
159
+ ),
160
+ }
161
+
162
+
163
+ def get_catalog_summary() -> str:
164
+ """Get a compact text summary of all tool categories for the system prompt."""
165
+ lines = ["Available MCP tool categories (use `list_tool_categories` for details):"]
166
+ for category in TOOL_CATALOG.values():
167
+ tool_names = ", ".join(t.name for t in category.tools)
168
+ lines.append(f"- **{category.name}**: {category.description} [{tool_names}]")
169
+ return "\n".join(lines)
@@ -0,0 +1,36 @@
1
+ """Discovery tools for dynamic tool loading.
2
+
3
+ Provides MCP tool to explore available tool categories and their metadata.
4
+ The agent uses this to fetch the catalog and load tools on-demand.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from dataclasses import asdict
10
+ from typing import TYPE_CHECKING
11
+
12
+ from rossum_mcp.tools.catalog import TOOL_CATALOG
13
+
14
+ if TYPE_CHECKING:
15
+ from fastmcp import FastMCP
16
+
17
+
18
+ def register_discovery_tools(mcp: FastMCP) -> None:
19
+ """Register discovery tools with the FastMCP server."""
20
+
21
+ @mcp.tool(
22
+ description="List all available tool categories with descriptions, tool names, and keywords. "
23
+ "Use this to discover what tools are available, then use load_tool_category to load "
24
+ "tools from specific categories before using them."
25
+ )
26
+ async def list_tool_categories() -> list[dict]:
27
+ return [
28
+ {
29
+ "name": category.name,
30
+ "description": category.description,
31
+ "tool_count": len(category.tools),
32
+ "tools": [asdict(tool) for tool in category.tools],
33
+ "keywords": category.keywords,
34
+ }
35
+ for category in TOOL_CATALOG.values()
36
+ ]
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  import logging
6
6
  import os
7
7
  from dataclasses import replace
8
- from typing import TYPE_CHECKING, cast
8
+ from typing import TYPE_CHECKING, Literal, cast, get_args
9
9
 
10
10
  from rossum_api import APIClientError
11
11
  from rossum_api.domain_logic.resources import Resource
@@ -156,7 +156,7 @@ async def _update_queue(client: AsyncRossumAPIClient, queue_id: int, queue_data:
156
156
 
157
157
 
158
158
  # Available template names for create_queue_from_template
159
- QUEUE_TEMPLATE_NAMES = (
159
+ QueueTemplateName = Literal[
160
160
  "EU Demo Template",
161
161
  "AP&R EU Demo Template",
162
162
  "Tax Invoice EU Demo Template",
@@ -177,13 +177,14 @@ QUEUE_TEMPLATE_NAMES = (
177
177
  "Credit Note Demo Template",
178
178
  "Debit Note Demo Template",
179
179
  "Proforma Invoice Demo Template",
180
- )
180
+ ]
181
+ QUEUE_TEMPLATE_NAMES = get_args(QueueTemplateName)
181
182
 
182
183
 
183
184
  async def _create_queue_from_template(
184
185
  client: AsyncRossumAPIClient,
185
186
  name: str,
186
- template_name: str,
187
+ template_name: QueueTemplateName,
187
188
  workspace_id: int,
188
189
  include_documents: bool = False,
189
190
  engine_id: int | None = None,
@@ -281,19 +282,11 @@ def register_queue_tools(mcp: FastMCP, client: AsyncRossumAPIClient) -> None:
281
282
  )
282
283
  async def create_queue_from_template(
283
284
  name: str,
284
- template_name: str,
285
+ template_name: QueueTemplateName,
285
286
  workspace_id: int,
286
287
  include_documents: bool = False,
287
288
  engine_id: int | None = None,
288
289
  ) -> Queue | dict:
289
- """
290
- Available templates: EU Demo Template, AP&R EU Demo Template, Tax Invoice EU Demo Template,
291
- US Demo Template, AP&R US Demo Template, Tax Invoice US Demo Template, UK Demo Template,
292
- AP&R UK Demo Template, Tax Invoice UK Demo Template, CZ Demo Template, Empty Organization Template,
293
- Delivery Notes Demo Template, Delivery Note Demo Template, Chinese Invoices (Fapiao) Demo Template,
294
- Tax Invoice CN Demo Template, Certificates of Analysis Demo Template, Purchase Order Demo Template,
295
- Credit Note Demo Template, Debit Note Demo Template, Proforma Invoice Demo Template.
296
- """
297
290
  return await _create_queue_from_template(
298
291
  client, name, template_name, workspace_id, include_documents, engine_id
299
292
  )
@@ -737,6 +737,8 @@ def register_schema_tools(mcp: FastMCP, client: AsyncRossumAPIClient) -> None:
737
737
  @mcp.tool(
738
738
  description="""Patch schema nodes (add/update/remove fields in a schema).
739
739
 
740
+ You MUST load `schema-patching` skill first to avoid errors.
741
+
740
742
  Operations:
741
743
  - add: Create new field. Requires parent_id (section or tuple id) and node_data.
742
744
  - update: Modify existing field. Requires node_data with fields to change.
@@ -748,7 +750,8 @@ Node types for add:
748
750
  - Multivalue (table): {"label": "Table", "category": "multivalue", "children": <tuple>}
749
751
  - Tuple (table row): {"id": "row_id", "label": "Row", "category": "tuple", "children": [<datapoints with id>]}
750
752
 
751
- Important: Datapoints inside a tuple MUST have an "id" field. Section-level datapoints get id from node_id parameter."""
753
+ Important: Datapoints inside a tuple MUST have an "id" field. Section-level datapoints get id from node_id parameter.
754
+ """
752
755
  )
753
756
  async def patch_schema(
754
757
  schema_id: int,
@@ -49,10 +49,7 @@ async def _create_workspace(
49
49
  f"Creating workspace: name={name}, organization_id={organization_id}, "
50
50
  f"organization_url={organization_url}, metadata={metadata}"
51
51
  )
52
- workspace_data: dict = {
53
- "name": name,
54
- "organization": organization_url,
55
- }
52
+ workspace_data: dict = {"name": name, "organization": organization_url}
56
53
  if metadata is not None:
57
54
  workspace_data["metadata"] = metadata
58
55
 
@@ -1,10 +1,19 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rossum-mcp
3
- Version: 0.3.5
3
+ Version: 0.4.0
4
4
  Summary: MCP server for AI-powered Rossum orchestration: document workflows, debug pipelines automatically, and configure intelligent document processing through natural language.
5
5
  Author-email: "Dan Stancl (Rossum AI)" <daniel.stancl@gmail.com>
6
6
  License: MIT
7
7
  Keywords: mcp,rossum,document-processing
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
16
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
8
17
  Requires-Python: >=3.12
9
18
  Description-Content-Type: text/markdown
10
19
  Requires-Dist: fastmcp>2.0.0
@@ -45,11 +54,12 @@ Requires-Dist: sphinx-rtd-theme>=2.0.0; extra == "all"
45
54
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
46
55
  [![PyPI - rossum-mcp](https://img.shields.io/pypi/v/rossum-mcp?label=rossum-mcp)](https://pypi.org/project/rossum-mcp/)
47
56
  [![Coverage](https://codecov.io/gh/stancld/rossum-mcp/branch/master/graph/badge.svg?flag=rossum-mcp)](https://codecov.io/gh/stancld/rossum-mcp)
48
- [![MCP Tools](https://img.shields.io/badge/MCP_Tools-49-blue.svg)](#available-tools)
57
+ [![MCP Tools](https://img.shields.io/badge/MCP_Tools-50-blue.svg)](#available-tools)
49
58
 
50
59
  [![Rossum API](https://img.shields.io/badge/Rossum-API-orange.svg)](https://github.com/rossumai/rossum-api)
51
60
  [![MCP](https://img.shields.io/badge/MCP-compatible-green.svg)](https://modelcontextprotocol.io/)
52
61
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
62
+ [![ty](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ty/main/assets/badge/v0.json)](https://github.com/astral-sh/ty)
53
63
  [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
54
64
 
55
65
  </div>
@@ -64,7 +74,9 @@ A Model Context Protocol (MCP) server that provides tools for uploading document
64
74
 
65
75
  ## Features
66
76
 
67
- ### Document Processing
77
+ <details>
78
+ <summary><strong>Document Processing (6 tools)</strong></summary>
79
+
68
80
  - **upload_document**: Upload a document to Rossum for processing
69
81
  - **get_annotation**: Retrieve annotation data for a previously uploaded document
70
82
  - **list_annotations**: List all annotations for a queue with optional filtering
@@ -72,7 +84,11 @@ A Model Context Protocol (MCP) server that provides tools for uploading document
72
84
  - **bulk_update_annotation_fields**: Bulk update annotation field values using JSON Patch operations
73
85
  - **confirm_annotation**: Confirm annotation to move it to 'confirmed' status
74
86
 
75
- ### Queue & Schema Management
87
+ </details>
88
+
89
+ <details>
90
+ <summary><strong>Queue & Schema Management (13 tools)</strong></summary>
91
+
76
92
  - **get_queue**: Retrieve queue details including schema_id
77
93
  - **list_queues**: List all queues with optional filtering by workspace or name
78
94
  - **get_schema**: Retrieve schema details and content
@@ -87,17 +103,29 @@ A Model Context Protocol (MCP) server that provides tools for uploading document
87
103
  - **patch_schema**: Add, update, or remove individual schema nodes without replacing entire content
88
104
  - **prune_schema_fields**: Efficiently remove multiple fields from schema at once (for organization setup)
89
105
 
90
- ### Workspace Management
106
+ </details>
107
+
108
+ <details>
109
+ <summary><strong>Workspace Management (3 tools)</strong></summary>
110
+
91
111
  - **get_workspace**: Retrieve workspace details by ID
92
112
  - **list_workspaces**: List all workspaces with optional filtering
93
113
  - **create_workspace**: Create a new workspace
94
114
 
95
- ### User Management
115
+ </details>
116
+
117
+ <details>
118
+ <summary><strong>User Management (3 tools)</strong></summary>
119
+
96
120
  - **get_user**: Retrieve user details by ID
97
121
  - **list_users**: List users with optional filtering by username, email, etc.
98
122
  - **list_user_roles**: List all user roles (permission groups) in the organization
99
123
 
100
- ### Engine Management
124
+ </details>
125
+
126
+ <details>
127
+ <summary><strong>Engine Management (6 tools)</strong></summary>
128
+
101
129
  - **get_engine**: Retrieve engine details by ID
102
130
  - **list_engines**: List all engines with optional filters
103
131
  - **create_engine**: Create a new engine (extractor or splitter)
@@ -105,7 +133,11 @@ A Model Context Protocol (MCP) server that provides tools for uploading document
105
133
  - **create_engine_field**: Create engine fields and link them to schemas
106
134
  - **get_engine_fields**: Retrieve engine fields for a specific engine or all engine fields
107
135
 
108
- ### Extensions & Rules
136
+ </details>
137
+
138
+ <details>
139
+ <summary><strong>Extensions & Rules (9 tools)</strong></summary>
140
+
109
141
  - **get_hook**: Get hook/extension details
110
142
  - **list_hooks**: List webhooks and serverless functions (extensions)
111
143
  - **create_hook**: Create webhooks or serverless function hooks for custom logic
@@ -116,17 +148,34 @@ A Model Context Protocol (MCP) server that provides tools for uploading document
116
148
  - **get_rule**: Get business rule details
117
149
  - **list_rules**: List business rules with trigger conditions and actions
118
150
 
119
- ### Email Templates
151
+ </details>
152
+
153
+ <details>
154
+ <summary><strong>Email Templates (3 tools)</strong></summary>
155
+
120
156
  - **get_email_template**: Retrieve email template details by ID
121
157
  - **list_email_templates**: List email templates with optional filtering by queue, type, or name
122
158
  - **create_email_template**: Create email templates for automated or manual email sending
123
159
 
124
- ### Relations Management
160
+ </details>
161
+
162
+ <details>
163
+ <summary><strong>Relations Management (4 tools)</strong></summary>
164
+
125
165
  - **get_relation**: Retrieve relation details by ID
126
166
  - **list_relations**: List all relations between annotations (edit, attachment, duplicate)
127
167
  - **get_document_relation**: Retrieve document relation details by ID
128
168
  - **list_document_relations**: List all document relations (export, einvoice)
129
169
 
170
+ </details>
171
+
172
+ <details>
173
+ <summary><strong>Tool Discovery (1 tool)</strong></summary>
174
+
175
+ - **list_tool_categories**: List all available tool categories with descriptions, tool names, and keywords for dynamic tool loading
176
+
177
+ </details>
178
+
130
179
  ## Prerequisites
131
180
 
132
181
  - Python 3.12 or higher
@@ -1704,6 +1753,65 @@ template = create_email_template(
1704
1753
  )
1705
1754
  ```
1706
1755
 
1756
+ ### Tool Discovery
1757
+
1758
+ #### list_tool_categories
1759
+
1760
+ Lists all available tool categories with their descriptions, tool names, and keywords. This enables dynamic tool loading where agents can discover and load only the tools they need for a specific task.
1761
+
1762
+ **Parameters:**
1763
+ None
1764
+
1765
+ **Returns:**
1766
+ ```json
1767
+ [
1768
+ {
1769
+ "name": "annotations",
1770
+ "description": "Document processing: upload, retrieve, update, and confirm annotations",
1771
+ "tool_count": 6,
1772
+ "tools": [
1773
+ {"name": "upload_document", "description": "Upload document to queue"},
1774
+ {"name": "get_annotation", "description": "Retrieve annotation with extracted data"}
1775
+ ],
1776
+ "keywords": ["annotation", "document", "upload", "extract", "confirm", "review"]
1777
+ },
1778
+ {
1779
+ "name": "queues",
1780
+ "description": "Queue management: create, configure, and list document processing queues",
1781
+ "tool_count": 8,
1782
+ "tools": [
1783
+ {"name": "get_queue", "description": "Retrieve queue details"},
1784
+ {"name": "list_queues", "description": "List all queues"}
1785
+ ],
1786
+ "keywords": ["queue", "inbox", "connector"]
1787
+ }
1788
+ ]
1789
+ ```
1790
+
1791
+ **Available Categories:**
1792
+ - `annotations` - Document processing tools (6 tools)
1793
+ - `queues` - Queue management tools (8 tools)
1794
+ - `schemas` - Schema management tools (7 tools)
1795
+ - `engines` - AI engine management tools (6 tools)
1796
+ - `hooks` - Extensions/webhooks tools (7 tools)
1797
+ - `email_templates` - Email template tools (3 tools)
1798
+ - `document_relations` - Document relation tools (2 tools)
1799
+ - `relations` - Annotation relation tools (2 tools)
1800
+ - `rules` - Validation rule tools (2 tools)
1801
+ - `users` - User management tools (3 tools)
1802
+ - `workspaces` - Workspace management tools (3 tools)
1803
+
1804
+ **Example usage:**
1805
+ ```python
1806
+ # Discover all tool categories
1807
+ categories = list_tool_categories()
1808
+
1809
+ # Find categories by keyword matching
1810
+ for category in categories:
1811
+ if "schema" in category["keywords"]:
1812
+ print(f"Found: {category['name']} with {category['tool_count']} tools")
1813
+ ```
1814
+
1707
1815
  ## Annotation Status Workflow
1708
1816
 
1709
1817
  When a document is uploaded, the annotation progresses through various states:
@@ -1,22 +1,24 @@
1
- rossum_mcp/__init__.py,sha256=kNJJh9t1YHiVg1EvqMnUPQZRlAWqWbOFVNxUjRJYf3w,58
1
+ rossum_mcp/__init__.py,sha256=JZzxK5jFrwguJ3WpKyFiO5TBQkTocX2MsRYB64Dcrg8,58
2
2
  rossum_mcp/logging_config.py,sha256=OH5G6K4wH_g-m55FdRO1BYXIDtOop-lD9Ps_mTMQ8eY,4792
3
3
  rossum_mcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- rossum_mcp/server.py,sha256=KHBsXpBgzPmh8Wm0w1soFQs_c49FhPI3HQRzgbE36gQ,1899
5
- rossum_mcp/tools/__init__.py,sha256=bbgO7KdO8o2qnznZ5u3CVA9hrxpMgurCfWdL6SRrpZI,1133
4
+ rossum_mcp/server.py,sha256=r9YO5Lt0lZ2iwqCBnMAVE3yhjHXvFlU9sZb4NknjOXQ,1959
5
+ rossum_mcp/tools/__init__.py,sha256=70BqRQUnMqQL30VXO2PRJAIwCYu9JAC9B7nIvw0MvCY,1428
6
6
  rossum_mcp/tools/annotations.py,sha256=UtBWM33nUsdB9Ro-aBKPhM1mNT_XLWNwZcdqaywVq5k,7049
7
7
  rossum_mcp/tools/base.py,sha256=_18YZA6HQXi2Oa7MBMrI3gxyFZDGeKjgrzWvyYsLoAE,1113
8
+ rossum_mcp/tools/catalog.py,sha256=3cpxTc8LIyiA0gRtPrVbBTm30zGy37ray7f6hbTUkIA,7190
9
+ rossum_mcp/tools/discovery.py,sha256=g6Y1uQ7kCVOCVtzFNcyihgLyBLL4t3gWVcxA4d3UrEg,1203
8
10
  rossum_mcp/tools/document_relations.py,sha256=7-mdRyRXXZRtRsL_ntZpfpWbMVYS5NUKW6yya4AzmNQ,2169
9
11
  rossum_mcp/tools/email_templates.py,sha256=vDq9xGq3M4IPEodWMpTFu5n29N3HXFES9wt5MqrL6Cw,4784
10
12
  rossum_mcp/tools/engines.py,sha256=6Q_gmATzb4eOwSjCmbsZAGm9unsogAfi2b-GyZ9Zyhc,6617
11
13
  rossum_mcp/tools/hooks.py,sha256=gimlDvxrT3g4mjbDS0ZWPOUbE0ytf0Sz_7qcySE-63w,12523
12
- rossum_mcp/tools/queues.py,sha256=2jsM8zuE7pfJoHicBygMevc1mZNOIe1YVG0ynqhEM-Y,10906
14
+ rossum_mcp/tools/queues.py,sha256=Ij1fNZLJni2I0km77aeikQri51y1eaplfl4NrOSA9m8,10370
13
15
  rossum_mcp/tools/relations.py,sha256=ko1_v6meM2zCEmnhaDQt-T4uX_XJcRV4-X-Pxsu_prQ,2016
14
16
  rossum_mcp/tools/rules.py,sha256=6wFsyY9cVxlVAjyFXn0vCt5IvY8ZdXufG7ubP94tANs,1708
15
- rossum_mcp/tools/schemas.py,sha256=7Jn4fh2hxRxcOjcvAU_oavgzyB2PjMtN7Kh-5LvIVlo,29495
17
+ rossum_mcp/tools/schemas.py,sha256=tEVXsKSkXC0bG5q9bAcZ4mm47bOKqTLRAvUSyaGYa7w,29558
16
18
  rossum_mcp/tools/users.py,sha256=uVojYtUQs4KorQxgmmPRNJtExS4GbzyckZ1W4Y_0Qrk,3047
17
- rossum_mcp/tools/workspaces.py,sha256=bquN2Jh0OzX69R-LAe8PksZSp71x5qEZfpp_zGhaW-A,2965
18
- rossum_mcp-0.3.5.dist-info/METADATA,sha256=GRHOwWUkePewTgwuj2VyCUp2PsAYZE-ne_EesMqRVbI,55705
19
- rossum_mcp-0.3.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
20
- rossum_mcp-0.3.5.dist-info/entry_points.txt,sha256=eth2XELk0QGw9-_H3QL8PQ0OE-RDfzipbSvRy0EUc2c,54
21
- rossum_mcp-0.3.5.dist-info/top_level.txt,sha256=cziqyWFE89hFhCfsq60Fk6JcwslNtgP01WHIJ5plMEM,11
22
- rossum_mcp-0.3.5.dist-info/RECORD,,
19
+ rossum_mcp/tools/workspaces.py,sha256=nD_NILCjo8YxLdIcYYLXr8kOUMcCOASzH9m8uagCuc4,2942
20
+ rossum_mcp-0.4.0.dist-info/METADATA,sha256=K9yXVML81MI5EMnbCNl5jjiyAMM8MiKF5RoDwPaZYcY,59023
21
+ rossum_mcp-0.4.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
22
+ rossum_mcp-0.4.0.dist-info/entry_points.txt,sha256=eth2XELk0QGw9-_H3QL8PQ0OE-RDfzipbSvRy0EUc2c,54
23
+ rossum_mcp-0.4.0.dist-info/top_level.txt,sha256=cziqyWFE89hFhCfsq60Fk6JcwslNtgP01WHIJ5plMEM,11
24
+ rossum_mcp-0.4.0.dist-info/RECORD,,