Help us improve
Share bugs, ideas, or general feedback.
From ra-mcp-tools
Imports document pages to Label Studio for human annotation and feedback on transcriptions. Supports ALTO XML pre-annotations with polygons or blank image tasks for manual labeling.
npx claudepluginhub ai-riksarkivet/ra-mcp --plugin ra-mcp-toolsHow this skill is triggered — by the user, by Claude, or both
Slash command
/ra-mcp-tools:feedback-lsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Send document pages to Label Studio for human annotation and feedback.
Sets up systematic data labeling workflows using Label Studio with quality controls, inter-annotator agreement, and active learning for supervised ML projects.
Manages UiPath IXP projects for document extraction: creates projects, uploads documents, reviews predictions, improves prompts, publishes models. Use when working with IXP taxonomies and extraction quality.
Generates browser-based annotation UI for LLM traces: displays traces readably, collects Pass/Fail labels and notes, saves to CSV/SQLite/JSON. Customize for human review.
Share bugs, ideas, or general feedback.
Send document pages to Label Studio for human annotation and feedback.
label_import_to_label_studio — Import pages to a Label Studio project.
Two modes:
Use when pages already have AI transcriptions. The tool fetches ALTO XML, extracts text line polygons and transcriptions, and creates VectorLabels pre-annotations.
{
"image_urls": [
"https://lbiiif.riksarkivet.se/arkis!30002056_00004/full/max/0/default.jpg"
],
"alto_urls": [
"https://sok.riksarkivet.se/dokument/alto/SE_RA_30002056_00004"
],
"feedback": [["Transcription"]]
}
Use when there are no existing transcriptions — the user wants to annotate
from scratch. Just pass image URLs, omit alto_urls.
{
"image_urls": [
"https://lbiiif.riksarkivet.se/arkis!30002056_00004/full/max/0/default.jpg",
"https://lbiiif.riksarkivet.se/arkis!30002056_00005/full/max/0/default.jpg"
]
}
When the user wants to send pages with pre-annotations, choose the source based on what's available:
| Situation | Source | How |
|---|---|---|
Pages from browse_document results | ALTO XML from Riksarkivet | Pass alto_urls from browse output |
| User has images without transcriptions | No pre-annotations | Omit alto_urls (image-only mode) |
| User has images and wants AI transcription first | HTR transcription | Use htr_transcribe first to generate ALTO XML, then pass the ALTO export URLs as alto_urls |
| User wants to label/annotate themselves | No pre-annotations | Omit alto_urls — blank tasks for manual annotation |
Tip: If the user has untranscribed images and wants pre-annotations, suggest
running htr_transcribe (see /htr-transcription skill) first to generate
ALTO XML, then feed those results into this tool.
From browse results: Call browse_browse_document first (or use results
already in the conversation). Each page includes:
https://sok.riksarkivet.se/dokument/alto/...https://lbiiif.riksarkivet.se/arkis!.../full/max/0/default.jpgFrom any image source: Any publicly accessible image URL works for image-only mode.
| Value | Meaning |
|---|---|
Transcription | Text recognition needs correction |
Segmentation | Line/region boundaries need correction |
Each page gets its own list of feedback values. Use an empty list [] for pages
that need general review without a specific feedback flag.
Pass assign_to with a Label Studio user's email to auto-assign the imported
tasks for annotation. If omitted, tasks are created unassigned.
{
"image_urls": ["..."],
"alto_urls": ["..."],
"assign_to": "reviewer@example.com"
}
Label Studio URL, token, and project ID are configured via environment variables
(LS_URL, LS_TOKEN, LS_PROJECT_ID) — no need to pass them unless overriding.
The tool returns:
assign_to was provided)Share the task links with the user so they can go directly to Label Studio.
Set dry_run=true to see the converted Label Studio JSON without importing.
{
"image_urls": ["..."],
"alto_urls": ["..."],
"dry_run": true
}
When using alto_urls, all lists are paired by index — alto_urls[i],
image_urls[i], and feedback[i] refer to the same page.
| Rule | Detail |
|---|---|
image_urls is always required | One image URL per page |
alto_urls is optional | Omit for image-only tasks |
alto_urls and image_urls must match length | One ALTO XML per image |
feedback must match length if provided | One feedback list per page |
feedback requires alto_urls | Feedback choices attach to ALTO text regions |
The browse_browse_document tool returns per-page links in this format:
🔗 Links:
📝 ALTO XML: https://sok.riksarkivet.se/dokument/alto/SE_RA_30002056_00004
🖼️ Image: https://lbiiif.riksarkivet.se/arkis!30002056_00004/full/max/0/default.jpg
Collect the Image URLs (always needed) and ALTO XML URLs (only if you
want pre-annotations).
| Mistake | Fix |
|---|---|
| Mismatched list lengths | alto_urls and image_urls must be the same length |
| Passing feedback without alto_urls | Feedback requires ALTO (choices attach to text regions) |
| Passing feedback as flat list | Each entry must be a list of strings, e.g. [["Transcription"], []] not ["Transcription", ""] |
| Wrong ALTO URL format | Use the full URL from browse results, not just the page ID |
| Passing Label Studio credentials | Credentials are loaded from env vars — only pass if overriding |
| Variable | Description |
|---|---|
LS_URL | Label Studio instance URL |
LS_TOKEN | Label Studio Personal Access Token (JWT PAT) |
LS_PROJECT_ID | Target project ID |
These are configured in packages/label-mcp/.env and loaded automatically.