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 +1 -1
- rossum_mcp/server.py +2 -0
- rossum_mcp/tools/__init__.py +12 -0
- rossum_mcp/tools/catalog.py +169 -0
- rossum_mcp/tools/discovery.py +36 -0
- rossum_mcp/tools/queues.py +6 -13
- rossum_mcp/tools/schemas.py +4 -1
- rossum_mcp/tools/workspaces.py +1 -4
- {rossum_mcp-0.3.5.dist-info → rossum_mcp-0.4.0.dist-info}/METADATA +118 -10
- {rossum_mcp-0.3.5.dist-info → rossum_mcp-0.4.0.dist-info}/RECORD +13 -11
- {rossum_mcp-0.3.5.dist-info → rossum_mcp-0.4.0.dist-info}/WHEEL +0 -0
- {rossum_mcp-0.3.5.dist-info → rossum_mcp-0.4.0.dist-info}/entry_points.txt +0 -0
- {rossum_mcp-0.3.5.dist-info → rossum_mcp-0.4.0.dist-info}/top_level.txt +0 -0
rossum_mcp/__init__.py
CHANGED
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)
|
rossum_mcp/tools/__init__.py
CHANGED
|
@@ -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
|
+
]
|
rossum_mcp/tools/queues.py
CHANGED
|
@@ -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
|
-
|
|
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:
|
|
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:
|
|
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
|
)
|
rossum_mcp/tools/schemas.py
CHANGED
|
@@ -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,
|
rossum_mcp/tools/workspaces.py
CHANGED
|
@@ -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
|
+
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
|
[](https://opensource.org/licenses/MIT)
|
|
46
55
|
[](https://pypi.org/project/rossum-mcp/)
|
|
47
56
|
[](https://codecov.io/gh/stancld/rossum-mcp)
|
|
48
|
-
[](#available-tools)
|
|
49
58
|
|
|
50
59
|
[](https://github.com/rossumai/rossum-api)
|
|
51
60
|
[](https://modelcontextprotocol.io/)
|
|
52
61
|
[](https://github.com/astral-sh/ruff)
|
|
62
|
+
[](https://github.com/astral-sh/ty)
|
|
53
63
|
[](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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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=
|
|
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=
|
|
5
|
-
rossum_mcp/tools/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
18
|
-
rossum_mcp-0.
|
|
19
|
-
rossum_mcp-0.
|
|
20
|
-
rossum_mcp-0.
|
|
21
|
-
rossum_mcp-0.
|
|
22
|
-
rossum_mcp-0.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|