Docflow Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Docflow Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP Server for Docflow — TextIn's document automation platform. Enables LLM agents to classify documents, extract fields/tables/stamps, and run rule-based compliance review through 41 MCP tools.
pip install git+https://github.com/intsig-textin/docflow-mcp.gitOr install in editable mode for development:
git clone https://github.com/intsig-textin/docflow-mcp.git
cd docflow-mcp
pip install -e .Set environment variables before starting the server:
export DOCFLOW_APP_ID=your_app_id
export DOCFLOW_SECRET_CODE=your_secret_code
# Optional: override API host (default: https://docflow.textin.com)
export DOCFLOW_HOST=https://docflow.textin.comGet your APP_ID and SECRET_CODE from the Docflow console.
# Via installed command
docflow-mcp
# Or via Python module
python -m docflow_mcpAdd to your Claude Code MCP settings (~/.claude/settings.json or project .claude/settings.json):
{
"mcpServers": {
"docflow": {
"command": "docflow-mcp",
"env": {
"DOCFLOW_APP_ID": "your_app_id",
"DOCFLOW_SECRET_CODE": "your_secret_code"
}
}
}
}Or if using python -m:
{
"mcpServers": {
"docflow": {
"command": "python",
"args": ["-m", "docflow_mcp"],
"env": {
"DOCFLOW_APP_ID": "your_app_id",
"DOCFLOW_SECRET_CODE": "your_secret_code"
}
}
}
}High-level tools that hide polling, multi-step logic, and upload routing.
| Tool | Description |
|---|---|
docflow_get_or_create_workspace | Find workspace by name, or create if not found (idempotent) |
docflow_list_categories | List all enabled categories with field configurations |
docflow_create_category | Create category with fields and sample file |
docflow_upload_and_extract | Upload files (list or directory) and wait for extraction results |
docflow_setup_review_rules | Create review rule repo with groups and rules (idempotent) |
docflow_run_review | Submit review task and wait for rule-by-rule results |
#### docflow_upload_and_extract — Upload Routing
Automatically selects upload mode based on file count:
Accepts either:
file_paths: explicit list of local file pathsdirectory: auto-scans for supported files (PDF, JPG, PNG, DOC, DOCX, XLS, XLSX, OFD, TXT)#### docflow_setup_review_rules — Rule Structure
Rule Repository
└── Rule Group (e.g. "金额审核")
└── Rule (name, prompt, category_ids, risk_level)
risk_level: 10=high, 20=medium, 30=lowThin wrappers covering every CRUD endpoint, organized by resource.
#### Files
| Tool | Endpoint | Description |
|---|---|---|
docflow_fetch_files | GET /file/fetch | Query processed files, filter by status/category |
docflow_update_file | POST /file/update | Update file metadata or verification status |
docflow_delete_files | POST /file/delete | Permanently delete files by task_id or batch_number |
docflow_extract_fields | POST /file/extract_fields | Re-extract specific fields without re-uploading |
docflow_retry_files | POST /file/retry | Retry processing for failed files |
docflow_amend_category | POST /file/amend_category | Correct misclassified file and trigger re-extraction |
#### Workspaces
| Tool | Endpoint | Description |
|---|---|---|
docflow_list_workspaces | GET /workspace/list | List all accessible workspaces |
docflow_get_workspace | GET /workspace/get | Get workspace details and statistics |
docflow_update_workspace | POST /workspace/update | Update name, description, auth scope, or callback URL |
docflow_delete_workspace | POST /workspace/delete | Delete workspace and all contents (permanent) |
#### Categories
| Tool | Endpoint | Description |
|---|---|---|
docflow_update_category | POST /category/update | Update category name, model, prompt, or enabled status |
docflow_delete_category | POST /category/delete | Delete category (existing file data is preserved) |
#### Category Tables
| Tool | Endpoint | Description |
|---|---|---|
docflow_list_category_tables | GET /category/tables/list | List table configs (for extracting structured rows) |
docflow_add_category_table | POST /category/tables/add | Add table field group (e.g. invoice line items) |
docflow_update_category_table | POST /category/tables/update | Update table name or column definitions |
docflow_delete_category_tables | POST /category/tables/delete | Delete table configs |
#### Category Fields
| Tool | Endpoint | Description |
|---|---|---|
docflow_list_category_fields | GET /category/fields/list | List fields with field_ids (needed for rule references) |
docflow_add_category_fields | POST /category/fields/add | Add fields to existing category |
docflow_update_category_field | POST /category/fields/update | Update field name, description, or extraction prompt |
docflow_delete_category_fields | POST /category/fields/delete | Delete fields from category |
#### Category Samples
| Tool | Endpoint | Description |
|---|---|---|
docflow_add_category_samples | POST /category/sample/upload | Add sample files to improve classification (3–5 recommended) |
docflow_list_category_samples | GET /category/sample/list | List all sample files for a category |
docflow_delete_category_samples | POST /category/sample/delete | Remove low-quality samples |
#### Review Rule Repositories
| Tool | Endpoint | Description |
|---|---|---|
docflow_list_review_repos | GET /review/rule_repo/list | List all rule repositories in workspace |
docflow_get_review_repo | GET /review/rule_repo/get | Get repo with all groups and rules |
docflow_update_review_repo | POST /review/rule_repo/update | Rename rule repository |
docflow_delete_review_repo | POST /review/rule_repo/delete | Delete repo and all its rules (permanent) |
#### Review Rule Groups
| Tool | Endpoint | Description |
|---|---|---|
docflow_update_review_rule_group | POST /review/rule_group/update | Rename rule group |
docflow_delete_review_rule_group | POST /review/rule_group/delete | Delete group and all its rules |
#### Review Rules
| Tool | Endpoint | Description |
|---|---|---|
docflow_update_review_rule | POST /review/rule/update | Update rule prompt, categories, or risk level |
docflow_delete_review_rule | POST /review/rule/delete | Delete a single rule |
#### Review Tasks
| Tool | Endpoint | Description |
|---|---|---|
docflow_get_review_result | POST /review/task/result | Get current review status without waiting |
docflow_delete_review_task | POST /review/task/delete | Delete review tasks |
docflow_retry_review_task | POST /review/task/retry | Retry entire review task |
docflow_retry_review_rule | POST /review/task/rule/retry | Retry a single rule without re-running others |
1. docflow_get_or_create_workspace → workspace_id
2. docflow_list_categories → check existing categories
3. docflow_create_category (×N) → category_id per document type
4. docflow_upload_and_extract → files[], task_ids[]
5. docflow_setup_review_rules → repo_id
6. docflow_run_review → status, groups[rule results]44 of 46 Docflow API endpoints are covered.
Intentionally omitted:
GET /auth/token — generates short-lived token for iframe embedding, not agent useGET /category/sample/download — returns binary file content, not useful for agentsInternally called (no separate tool needed):
POST /file/upload, /file/upload/sync → used inside docflow_upload_and_extractPOST /workspace/create → used inside docflow_get_or_create_workspacePOST /review/rule_repo/create, /rule_group/create, /rule/create → used inside docflow_setup_review_rulesPOST /review/task/submit → used inside docflow_run_reviewdocflow.textin.comAPP_ID and SECRET_CODEMIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.