redmine_bulk_create_issues
Create up to 100 Redmine issues in one call with duplicate-subject checks, skip or fail on existing matches, and optional pacing or concurrency.
Instructions
Bulk-create issues with subject idempotency.
Args:
issues: list of issue spec dicts (≤ 100 per call). Each spec
requires project, tracker, subject; optional
fields match redmine_create_issue (description,
priority, status, assigned_to_id, difficulty,
due_date, start_date, done_ratio, custom_fields).
on_duplicate: "skip" (default) pre-checks each subject within
its project and reports existing matches as skipped with
duplicate_of; "fail" reports duplicates as failures;
"create_anyway" skips the pre-check entirely.
pacing_seconds: sleep between POSTs (default 50ms — empirically
the floor for not tripping Redmine's per-issue rate cap on
small VMs). Set 0 to disable. Only used when concurrency=1.
stop_on_error: True to bail at first failure; remainder lands in
skipped_for_stop_on_error (sequential) or skipped
(concurrent).
concurrency: parallel in-flight creates (default 1 = sequential).
Values > 1 use a bounded asyncio.Semaphore fan-out and are
mutually exclusive with pacing — leave pacing_seconds at its
default (or 0). A 5xx from any item aborts the batch.
Returns {"results": [{subject, status, id?, duplicate_of?, error?, hint?}], "summary": {total, created, skipped, failed}}.
Honors REDMINE_MCP_READ_ONLY.
With quiet=True a successful result is reduced to ids + status (bulk:
compact per-item rows + summary) instead of the full issue JSON. Errors
are never reduced.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| quiet | No | ||
| issues | Yes | ||
| concurrency | No | ||
| on_duplicate | No | skip | |
| stop_on_error | No | ||
| pacing_seconds | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |