Skip to content

API documentation

With the Do4U API you use the same tools as on the website from your own software: summarise, compare, support replies, alt texts, rewrite and translate. Every request is processed on our own servers in Poland, EU.

Base URL: https://do4u.eu/api/v1

OpenAPI 3.1 description (JSON) – Machine-readable description of this API for code generators and tools such as Postman or Insomnia. No key needed.

Authentication

Create a key under API keys in your account. Send it with every request in the header Authorization: Bearer <key> (or X-API-Key: <key>). Keep the key secret and never put it into a web page. You can revoke a key at any time.

How it works

Jobs run asynchronously. You create a job and get its id at once (HTTP 202). Then you fetch the job until its status is done or failed. Ask every 2 to 5 seconds; most jobs take a few seconds.

Endpoints

GET /tools Tools, options and your input limits
GET /balance Your credit balance
POST /jobs Create a job (JSON, or multipart/form-data with an image file)
GET /jobs/{id} Status and result of a job
DELETE /key Revoke the key you send with this request, for example when an integration is disconnected. Jobs already created still finish.
POST /key/revoke The same as DELETE /key, for clients that can only send GET and POST.

Example

Create a job, then fetch the result:

curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tool": "summarize", "text": "...", "options": {"length": "short"}, "language": "en"}'
HTTP/1.1 202 Accepted
{"id": "8f1c0b6a...", "tool": "summarize", "status": "queued", "model": "do4u-standard",
 "credits_estimate": 1, "links": {"self": "https://do4u.eu/api/v1/jobs/8f1c0b6a..."}}
curl https://do4u.eu/api/v1/jobs/8f1c0b6a... -H "Authorization: Bearer d4u_YOUR_KEY"

{"id": "8f1c0b6a...", "tool": "summarize", "status": "done", "model": "do4u-standard", "credits_estimate": 1,
 "result": {"summary": "...", "key_points": ["...", "..."]}, "credits": 1,
 "notice": "AI-generated, please check before use."}
curl -X POST https://do4u.eu/api/v1/jobs -H "Authorization: Bearer d4u_YOUR_KEY" \
  -F tool=alt_text -F language=de -F "text=Product page: hiking boots" -F image=@photo.jpg

Request fields for POST /jobs

toolName of the tool, see the table below. Required.
textInput text. For compare: text A. For alt_text: optional page context.
text_bText B (compare only).
urlPublic web page to read instead of text (summarize, accessibility_check).
htmlHTML of a page to check (accessibility_check), up to 300,000 characters.
focus_keywordOptional focus keyword for seo_meta. Without target, seo_meta writes in language.
faqOptional FAQ snippets (support_reply only).
questionsOptional for seo_meta, content_brief and faq_schema: frequent visitor questions as a list of texts or {"text": ..., "count": n} (up to 50, at most 20 are used). faq_schema answers them first if the source answers them; visitor_questions in the result says what happened to each.
imageImage for alt_text: file field in multipart/form-data, or base64 / data URI in JSON. JPG, PNG, WebP or GIF, up to 5 MB.
image_urlOptional for alt_text instead of image: public address of the image (http or https; JPEG, PNG, WebP or GIF; at most 5 MB). Do4U loads it once in the background. If that fails, the job fails with error image_unavailable and costs nothing.
optionsObject with options of the tool, for example {"length": "short"}.
languageLanguage of the result and notes: en, de or pl. Default en. For translate, the target language is the option target.
no_storetrue: the input is deleted right after processing and the result after the first retrieval.
brand_voiceOptional: false switches your brand voice off for this job (default: the brand voice applies if you have set one).
ai_labelOptional: true shows the visible note "Marked as AI-generated" with the result in the web interface, false hides it. Default: the setting in your account. The machine-readable AI label is always in the result and cannot be switched off: the fields ai_generated and generator, an HTML comment in HTML results, ai_notice for image descriptions. ai_generated is false if the result comes from automatic checks only.
callback_urlOptional: public https address that gets a signed POST when the job is finished (see Webhooks).
render_jsOptional: true loads the page with JavaScript first (pages that build their content in the browser; tools that read a url). Costs the render surcharge only if the page was really loaded this way; the result field render says what happened.
no_cacheOptional: true always starts a new AI job. Without it, a finished and still stored result of your account (or workspace) with the same tool, options and input is reused: the job is done at once, from_history is true and it costs 0 % of the credits of the original. Never with no_store, never for a url.
allow_same_languageOptional for translate, translate_html and translate_file: true translates even if the text already is in the target language. Without it such a job is rejected with same_language (400) – only when the check is sure.

Repeat requests safely (Idempotency-Key)

Send the header Idempotency-Key with POST /jobs, for example a random UUID for each job (1 to 255 printable ASCII characters). If the connection breaks and you send the same request again with the same Idempotency-Key and the same API key within 24 hours, you get the same answer again: the same job, no second job and no second charge. The answer then has the header Idempotent-Replayed: true. Use a new key for every new job. If you send the same key with a different request, you get 422 idempotency_conflict. Errors are not stored: after an error you can send the request again with the same key.

curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Idempotency-Key: 5f0c2a8e-7d1b-4c3a-9e2f-1b6d8a4c0e77" \
  -H "Content-Type: application/json" \
  -d '{"tool": "summarize", "text": "..."}'

Tools and options

ToolInputs Options (first value is the default)Result fieldsPrice
contract_deadlinesContract dates and deadlines text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, calendar_events, calendar_options, calendar_review, chart_data, draft_text, draft_html usually 1–3 credits
quote_builderQuotation calculator text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
complaint_caseComplaint case draft text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
tender_responseEvidence-based tender response text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
product_consistencyProduct document consistency text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
onboarding_planSource-backed onboarding plans text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
interview_guideStructured professional interview guides text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
project_handoverTraceable project handovers text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
cashflow_forecastCash-flow forecast and scenarios text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
expense_policy_checkInternal expense-policy review text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
migration_acceptanceMigration acceptance review text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
batch_traceabilityBatch and serial trace review text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
maintenance_plannerSource-backed maintenance planning text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, calendar_events, calendar_options, calendar_review, chart_data, draft_text, draft_html usually 1–3 credits
incident_reviewEvidence-linked incident review text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
job_cost_reviewJob cost and margin review text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
sla_reviewSLA event and response-time review text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
cutting_planOne-dimensional cutting plan text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
measurement_reviewMeasurement series review text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
change_impactMaintained change-impact review text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
recovery_planOperational recovery planning text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
assessment_rubricsEvidence-based assessment rubric text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
literature_screeningLiterature screening review text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
interview_codingInterview coding with a maintained codebook text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
recipe_scalingRecipe quantities and purchasing text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
room_quantitiesRoom measurements and material quantities text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
crop_planningCrop spacing and rotation review text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
script_continuityScript continuity review text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
experiment_designReproducible experiment design text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
press_releasePress release text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
job_ad_createJob advertisement text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
offer_cover_letterCover letter for an offer text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
customer_change_noticeCustomer notice about a change text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
polite_declinePolite decline text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
payment_reminderPayment reminder text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
event_invitationEvent invitation text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
cancellation_letterCancellation letter text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
complaint_letterComplaint letter text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
company_profileCompany profile text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
speech_draftSpeech draft text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
grant_summaryGrant application summary text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
parent_letterLetter to parents text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
notice_boardNotice for a board or door text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
cover_letterApplication cover letter text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
property_listingProperty listing text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
classified_adClassified ad text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
donation_appealDonation appeal text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
release_notesRelease notes text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
video_chaptersVideo chapters text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
meeting_agendaMeeting agenda text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
document_questionsQuestions to a document text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
contract_clause_reviewContract clauses to review text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
action_itemsTasks and decisions from text text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
contradiction_checkContradictions in a document text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
missing_informationMissing information in a request text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
official_letter_explainerOfficial letter explained text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
checklist_from_textChecklist from a text text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
ticket_triageTicket triage text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
feedback_sortingFeedback sorting text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
recommendation_letterRecommendation letter text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
cv_from_notesCV from notes text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
thank_you_letterThank-you letter text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
appointment_confirmationAppointment confirmation text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
out_of_officeOut-of-office message text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
offer_follow_upOffer follow-up text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
quick_guideQuick guide text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
safety_briefingSafety briefing text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
tenant_noticeTenant notice text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
internal_announcementInternal announcement text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
work_reportWork report text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
defect_listDefect list text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
reference_explainedEmployment reference explained text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
reference_draftEmployment reference draft text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
utility_bill_checkUtility bill check text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
allergen_labellingAllergen labelling text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
flashcardsFlashcards text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
lesson_planLesson plan text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
insurance_claimInsurance claim report text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
travel_expensesTravel expense report text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
club_annual_reportClub annual report text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
flat_handoverFlat handover report text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
staff_talk_prepStaff talk preparation text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
cash_reportCash report for clubs text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
mileage_log_checkMileage log check text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
timesheet_summaryTimesheet summary text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
meter_readingsMeter readings evaluation text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
inventory_listInventory list text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
shift_handoverShift handover text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
club_budgetClub budget plan text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
interview_preparationJob interview preparation text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
driving_lesson_recordDriving lesson record text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
hair_colour_cardHair colour card text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
photo_shoot_schedulePhoto shoot schedule text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
wedding_day_scheduleWedding day schedule text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
home_exercise_sheetHome exercise sheet text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
care_reportCare report text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
childcare_observationChildcare observation report text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
death_notice_obituaryDeath notice and obituary text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
owners_meetingOwners meeting: invitation and minutes text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
pet_aftercare_sheetPet aftercare sheet text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
workshop_reportWorkshop report for vehicle owners text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
electrical_test_recordElectrical test record text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
temperature_log_checkTemperature log check text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
bakers_percentageBaker's percentage calculator text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
hive_recordHive record evaluation text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
timber_listTimber list with solid cubic metres text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
planting_planPlanting plan with quantities text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
power_load_phasesPower load per phase text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
load_listLoad list with payload check text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
cleaning_planCleaning plan with weekly hours text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
paint_quantityPaint quantity for painters text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
tile_quantityTile quantity with adhesive and grout text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
roofing_materialRoofing material from roof areas text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
glass_orderGlass order with area and weight text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
removal_volumeRemoval volume and vehicle size text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
standard_line_offerTranslation offer by standard lines text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
gold_purchase_receiptOld gold purchase receipt text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
brew_logBrew log with attenuation and alcohol text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
hiking_time_planHiking time plan by legs text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
rider_stock_checkTechnical rider against stock text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
bait_station_checkBait station check report text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
pool_water_logPool water log check text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
dog_training_reportDog training report and homework plan text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
pet_boarding_reportPet boarding report for owners text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
alteration_order_sheetAlteration order sheet with measurements text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
floral_bill_of_materialsFloral bill of materials text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
stable_feed_planStable feed plan with quantities and costs text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
music_practice_planMusic practice plan with a note for parents text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
tutoring_progress_reportTutoring progress report for parents text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
hoof_care_reportHoof care report with next appointment text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key, chart_data, draft_text, draft_html usually 1–3 credits
supplier_compareSupplier offer comparison text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key usually 1–3 credits
three_way_matchOrder, delivery and invoice reconciliation text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key usually 1–3 credits
payment_matchPayment and invoice reconciliation text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key usually 1–3 credits
reorder_planReorder planning assistant text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key usually 1–3 credits
shift_planShift planning assistant text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key usually 1–3 credits
project_planProject capacity planner text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key usually 1–3 credits
label_sheetBarcode and QR label sheets text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key usually 1–3 credits
test_casesRequirements test matrix text – tool, type, columns, rows, findings, summary, exports, review_required, ai_required, ai_model, source_sha256, note_key usually 1–3 credits
receipt_extractReceipt digitiser text action: review | exportexport_format: csv | xlsxocr_language: en | de | pl | fr | es | it | nl | cs | sk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv | uk | nb type, fields, items, evidence, source_text, source_sha256, warnings, review_required, note_key, export usually 1–3 credits
spreadsheet_formulaSpreadsheet formula assistant text – tool, version, status, formula, explanation, tests, tests_executed, assumptions, application, formula_language, separator, review_status, input_sha256, note_key, exports usually 1–3 credits
translation_checkTranslation quality check text – tool, version, status, items, checks, review_status, input_sha256, note_key, exports usually 1–3 credits
transcribeAudio and video transcription text – tool, status, segments, duration_ms, source_sha256, review_required, error, exports usually 1–2 credits
document_mergeDocument template merge text action: review | exportexport_format: docx | pdf tool, type, status, source_sha256, files, rows, preview, placeholders, columns, missing, empty, approval_required, review_required, note_key, export usually 1–3 credits
import_mapImport mapping assistant text action: review | exportexport_format: csv | xlsx type, source_headers, target_headers, types, mapping, rows, issues, profile, source_sha256, approval_required, export usually 1–2 credits
presentationPresentations from source material text, phase, approved, approval_token – tool, status, title, slides, context, approval_required, approval_token, review_required, exports usually 1–3 credits
document_filingDocument filing assistant text action: review | exportexport_format: zipocr_language: en | de | pl | fr | es | it | nl | cs | sk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv | uk | nb tool, type, status, source_sha256, files, rows, preview, placeholders, columns, missing, empty, approval_required, review_required, note_key, export usually 1–3 credits
meeting_minutesMeeting minutes text items: 10 | 5 | 20 tool, version, status, items, review_status, source_binding, source_sha256, exports usually 1–3 credits
tender_requirementsTender requirements text items: 10 | 5 | 20 tool, version, status, items, review_status, source_binding, source_sha256, exports usually 1–3 credits
work_instructionsWork instructions text items: 10 | 5 | 20 tool, version, status, items, review_status, source_binding, source_sha256, exports usually 1–3 credits
learning_quizLearning quiz text items: 10 | 5 | 20 tool, version, status, items, review_status, source_binding, source_sha256, exports usually 1–3 credits
clean_tableCSV and XLSX cleaner text, selected delimiter: auto | comma | semicolon | tabdecimal: keep | commaoffice_action: review | exportexport_format: csv | xlsx type, rows, changes, selection_required, source_sha256, limits, note, export usually 1–2 credits
anonymizeText anonymiser text, selected, terms scope: all | email | phone | iban | ipoffice_action: review | exportexport_format: txt type, text, findings, selection_required, source_sha256, offset_unit, note, export usually 1–2 credits
subtitlesSubtitle check and translation text, max_line_chars, max_lines, max_cps mode: check | translateformat: auto | srt | vtttarget: en | de | pl | cs | sk | bg | hr | sl | uk | el | fr | es | it | pt | nl | da | sv | fi | lt | hu | ro tool, mode, format, target, status, cue_count, timings_preserved, source_check, result_check, guidelines, filename, mime, file, preview, note usually 1–3 credits
invoice_validateE-invoice validation text profile: auto | en16931 | xrechnung tool, status, accepted_by_rules, findings, checks, versions, counts, source_sha256, error, note, exports usually 1–2 credits
blog_assistantBlog writing assistant phase, topic, audience, goal, text, source_url, analyse_url, approved, sources_approved, approval_token, briefing_hash – type, title, outline, questions, sources, approval_required, approval_token, briefing_hash, paragraphs, publication, exports usually 1–3 credits
moderate_commentReview comments for spam text – classification, reason, suggestion, action, note usually 1–3 credits
document_htmlTurn documents into HTML image, pdf, text page: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 html, plain_text, notes, page, note usually 2–3 credits
image_textFind baked-in image text url image_index: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 html, plain_text, notes, images, image_index, coverage, note usually 2–3 credits
pdf_accessibilityCheck PDF accessibility pdf – checks, pages, truncated, repaired, note, convert_url usually 1–2 credits
summarizeSummarise text, url length: medium | short | long summary, key_points usually 1–3 credits
compareCompare text, text_b focus: overall | facts | tone | seo summary, similarities, differences usually 1–3 credits
support_replySupport reply text, faq tone: friendly | neutral | formal reply, concerns, questions usually 1–3 credits
alt_textAlt texts image, text, filename, image_url – alt, caption, description, filename, filename_base, extension, language, alt_length, alt_max, alt_status, caption_length, caption_max, caption_status usually 2–3 credits
rewriteRewrite text style: simpler | shorter | more_formal | more_casual | more_persuasive | easy_to_read text, changes, language, style_label, readability, easy_check, easy_note, review_status, review_limit, diff usually 1–4 credits
accessibility_checkAccessibility check url, html – summary, page, counts, findings, checks, readability, note fixed 3 credits per task
seo_metaSEO title & description url, text, focus_keyword, questions target: en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv variants, current, focus_keyword, limits, keywords, note fixed 1 credit per task
translate_htmlTranslate HTML html target: en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv html, segments, check, glossary, notes, note, review_status, alignment usually 1–4 credits
product_descriptionProduct descriptions text tone: neutral | friendly | persuasive | formallength: medium | short | longchannel: shop | marketplacetarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svmeta_description: no | yes products, language, detected_language, channel, format, limits, counts, check, note usually 1–3 credits
headlinesHeadlines and subject lines text kind: page | newsletter | adtone: neutral | friendly | persuasive | formalcount: 5 | 3 | 8target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv kind, fields, variants, limits, counts, enough, report, language, detected_language, note fixed 1 credit per task
faq_schemaFAQ and schema markup url, text, questions type: faq | organization | localbusiness | productcount: 8 | 5 | 10target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv type, kind, jsonld, html, valid, faq, fields, checks, counts, unverified, dropped, existing, existing_errors, existing_same, page, language, detected_language, notes, note, visitor_questions fixed 2 credits per task
content_briefContent briefing text, audience, questions target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv title, title_length, title_max, title_status, goal, intent, outline, questions, length, markdown, counts, dropped, limits, language, detected_language, notes, note usually 1–2 credits
review_replyReplies to reviews text, company stars: 0 | 1 | 2 | 3 | 4 | 5platform: general | google | trustpilot | booking | tripadvisor | airbnb | yelp | app_store | google_playtone: friendly | neutral | formalcount: 3 | 2target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv assessment, variants, limits, platform, stars, tone, counts, dropped, enough, report, hints, checks, language, detected_language, note usually 1–2 credits
social_postsSocial posts from an article url, text channels: all | linkedin | facebook | instagram | linkedin+facebook | linkedin+instagram | facebook+instagramtone: friendly | neutral | persuasive | formal | casualvariants: 1 | 2 | 3target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv channels, posts, limits, counts, enough, report, link, link_in_bio, language, detected_language, source, notes, note usually 1–3 credits
explain_termsExplain terms url, text level: simple | general | expertexamples: no | yestarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv terms, level, language, detected_language, source, text_length, text_clipped, counts, dropped, adjusted, limits, other_candidates, checks, markdown, html, notes, note usually 1–3 credits
extract_dataExtract data url, text types: all | hours | prices | hours+prices | addresses | hours+addresses | prices+addresses | hours+prices+addresses | events | hours+events | prices+events | hours+prices+events | addresses+events | hours+addresses+events | prices+addresses+events | hours+prices+addresses+events | contact | hours+contact | prices+contact | hours+prices+contact | addresses+contact | hours+addresses+contact | prices+addresses+contact | hours+prices+addresses+contact | events+contact | hours+events+contact | prices+events+contact | hours+prices+events+contact | addresses+events+contact | hours+addresses+events+contact | prices+addresses+events+contacttarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv kinds, hours, prices, addresses, events, contact, counts, empty, unverified, dropped, limits, source, language, detected_language, notes, note usually 1–3 credits
redirect_planRedirect plan old_urls, new_urls, old_domain, new_domain ai: yes | no old_base, new_base, mappings, counts, unused_new, invalid, dropped, ai, legend, language, domain_ignored, notes, note usually 1–3 credits
contrast_checkColour contrast check colors level: aa | aaatext_size: normal | large colors, pairs, counts, invalid, settings, palette_check, legend, language, note usually 1–2 credits
language_levelLanguage level (A1–C1) text level: B1 | A1 | A2 | B2 | C1target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svkeep_terms: no | yes text, changes, level, language, detected_language, translated, summary, within_guideline, measures, over_guideline, over_count, readability, content, kept_terms, checks, hints, note usually 1–4 credits
llms_txtllms.txt generator url target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv name, summary, details, file, filename, sections, counts, pages_read, read, existing, dropped, hints, language, detected_language, notes, note usually 1–3 credits
internal_linksInternal links text, pages, sitemap_url, page_url – links, text, text_is_html, counts, pages, dropped, ai, limits, language, detected_language, timeout, notes, note usually 1–3 credits
outdated_contentOutdated content url, text, html, reference_date target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv reference_date, reference_date_given, findings, summary, counts, source, dropped, ai, limits, language, detected_language, timeout, notes, note usually 1–3 credits
inclusive_languageInclusive and plain language text scope: both | exclusion | complexitygender: not_prescribed | neutral | pair | star | colon | brand_voice language, scope, gender, summary, counts, findings, candidates, measures, applied, changed, revised_text, diff, dropped, checks, hints, note usually 1–3 credits
review_analysisReview analysis text focus: all | criticismtarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv format, columns, language, detected_language, focus, counts, selection, stars, period, languages, languages_unknown, personal_data, themes, praise, criticism, page, faq, cited, dropped, limits, hints, notes, note usually 1–3 credits
ai_visibility_checkAI visibility check url, text, html, topic, questions target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv coverage, coverage_level, counts, questions, faq_questions, sections, qa_on_page, structured_data, llms_txt, robots_txt, readability, hints, source, topic, dropped, ai, limits, files, language, detected_language, note, how usually 1–3 credits
events_calendarEvents to calendar url, text, time_zone, year target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv events, counts, unverified, dropped, timezone, year, today, limits, ics, jsonld, filename, source, language, detected_language, notes, note usually 1–3 credits
product_photoProduct photo to text image, image_url, text, languages target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svcategory_list: google | free language, detected_language, title, title_length, title_max, title_status, short_description, short_length, short_max, short_status, description, description_length, description_max, description_status, bullets, bullets_count, bullets_max_length, bullets_status, alt_text, alt_length, alt_max, alt_status, category_group, attributes, attribute_sources, attribute_list, translations, removed, hints, claims_checked, claims_unchecked, counts, limits, notes, category_list, jsonld, jsonld_check, product_json, check, note usually 2–3 credits
chart_descriptionDescribe charts and infographics image, image_url, text target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svlength: normal | short chart_type, title, language, detected_language, alt, alt_length, alt_max, alt_status, description, description_length, description_max, description_status, description_size, axes, data, data_rows, table, data_csv, html, image_text, pie_check, hints, counts, limits, notes, verify_numbers, check, note usually 2–3 credits
design_feedbackDesign feedback from a screenshot image, image_url, text target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svdevice: auto | phone | desktop language, detected_language, device, summary, findings, image, image_basis, counts, removed, hints, limits, notes, estimate, check, note, text, markdown usually 2–3 credits
job_ad_checkJob ad check url, text, html jurisdiction: auto | eu | de | pltarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv language, detected_language, jurisdiction, title, checklist, counts, pay, structure, length, findings, titles, summary, source, text_cut, dropped, ai, hints, note usually 1–3 credits
green_claims_checkGreen claims check url, text, html target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv findings, summary, counts, source, dropped, ai, limits, legal, language, detected_language, timeout, notes, note usually 1–3 credits
broken_link_checkBroken link check url resources: yes | noexternal: no | yes language, url, host, counts, broken, more_broken, redirects, more_redirects, soft, start_soft, suggestions, not_reached, limits, note, truncated usually 1–2 credits
duplicate_content_checkDuplicate content check url, text – language, mode, url, host, summary, counts, findings, passed, hints, thresholds, pages, limits, note, truncated usually 1–2 credits
hreflang_checkhreflang check url – language, url, counts, findings, pages, matrix, annotations, legend, limits, note usually 1–2 credits
ai_robots_txtAI crawlers in robots.txt site_url, robots_txt, groups, crawlers – file, file_complete, ai_section, crawlers, counts, source, existing, changes, checks, notes, legend, sources, verified_on, language, note usually 1–2 credits
faq_from_supportFAQ from support messages text, faq_url target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv format, input_kind, columns, language, detected_language, languages, counts, selection, faq_page, personal_data, topics, gaps, cited, dropped, limits, placeholder, hints, notes, note, export usually 1–3 credits
price_display_checkPrice display check url, text, html ai: yes | nojurisdiction: auto | de | pl jurisdiction, jurisdiction_auto, jurisdiction_label, source, price, previous_prices, prior_30_days, unit_prices, quantities, discounts, hints, structured, findings, counts, checks, ai, dropped, legal_sources, language, notes, note usually 1–3 credits
form_text_checkForm texts url, html, error_messages target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svtone: neutral | friendly | formal language, detected_language, tone, required_word, forms, errors, counts, criteria, summary, source, dropped, ai, hints, note usually 1–3 credits
newsletter_checkNewsletter check html, eml, text, subject, preheader target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv language, detected_language, input, subject, preheader, checklist, counts, links, links_total, images, eml, pairs, improvements, text_cut, dropped, ai, hints, note usually 1–3 credits
social_card_checkSocial card check url – language, url, counts, preview, findings, tags, images, snippet, guidance, limits, note usually 1–2 credits
image_performance_checkImage check url – language, url, counts, total, formats, lcp, page_findings, summary, images, more_images, legend, limits, note, truncated usually 1–2 credits
ai_transparency_checkAI transparency check url, text, html chatbot: auto | yes | nomedia: unknown | no | realistic | artistic | illustrativearticles: unknown | no | unreviewed | reviewedtarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv language, detected_language, source, answers, checklist, detected, notices, summary, counts, dropped, ai, legal, hints, note usually 1–3 credits
structured_data_checkStructured data check url, html – language, url, input, counts, formats, findings, items, rules, visible, limits, truncated, note usually 1–2 credits
legal_notice_checkLegal notice check url, text, html ai: yes | nojurisdiction: auto | de | pl jurisdiction, jurisdiction_auto, jurisdiction_basis, jurisdiction_label, source, entity, items, extra, counts, ai, dropped, legal_sources, language, notes, note, truncated usually 1–3 credits
glossary_builderBuild a glossary url, text, html, languages source: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svmax_pages: 1 | 2 | 3 | 5 | 10 language, language_name, language_source, targets, target_names, items, existing, counts, pages, reading, source, text_cut, dropped, glossary, hints, note, export usually 1–3 credits
local_business_checkBusiness data check url, text ai: no | yes language, url, host, mode, country, table, findings, counts, structured, suggestion, handover, pages, failed, not_reached, limits, ai, dropped, notes, note usually 1–2 credits
ai_literacy_policyAI literacy policy (AI Act Art. 4) text, uses, roles, data, company_name company_size: 1-9 | 10-49 | 50-249 | 250+sector: general | retail | services | crafts | health | finance | education | public_sector | media | it | manufacturing | tourism | socialreview_months: 12 | 6 | 24language: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv language, title, sections, training, record_columns, markdown, text, profile, counts, dropped, legal, hints, note usually 1–2 credits
withdrawal_button_checkWithdrawal button check url, text, html ai: yes | nojurisdiction: auto | de | pl | eusubscriptions: auto | yes | no jurisdiction, jurisdiction_auto, jurisdiction_basis, jurisdiction_label, law, source, subscription, items, candidates, counts, ai, dropped, legal_sources, language, notes, note, truncated usually 1–3 credits
product_safety_checkProduct page check (GPSR) url, text, html market_language: auto | bg | cs | da | de | el | en | es | fi | fr | hr | hu | it | lt | nl | pl | pt | ro | sk | sl | sv language, market_language, market_language_label, market_basis, page_language, source, product, manufacturer_seat, items, counts, dropped, ai, hints, notes, legal, legal_sources, note usually 1–3 credits
newsletter_createCreate newsletter text, urls, main_url, audience, occasion target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svtone: friendly | neutral | persuasive | formal | casuallength: medium | short | long subjects, subject, preheader, intro, articles, closing, text, body_html, email_html, placeholders, unread, claims, dropped, counts, language, detected_language, note usually 1–3 credits
website_checkWebsite check url scope: short | full score, categories, findings, counts, snippet, llms_txt, summary, actions, note fixed 5 credits per task
translateTranslate text target: en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv translation, notes, review_status, alignment usually 1–4 credits
proofreadProofreading text text_language: auto | en | de | pl | fr | es | it | pt | nl | cs | sk | uk | ru | bg | ro | hu | sv | da | fi | tr | el | ar | fa | he | hi | zh | ja | ko | th text, html, language, identical, summary, counts, changed_share, changes, notes, beta, note usually 1–4 credits
translate_fileLanguage files text target: en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svscope: auto | all | missingline_endings: lf | crlf | lf_no_final_newline | crlf_no_final_newline format, target, filename, mime, file, entries, counts, flagged, preview, check, notes, note usually 5–8 credits

Job status

queued and running: still working (position and wait_seconds help you to wait). done: result contains the fields of the tool. failed: nothing was charged (credits is 0); error.code names the reason: address_blocked (Do4U does not open this address, for example a private or internal one; send the text or HTML instead), input_too_large (shorten the input), image_unavailable or job_failed. expired: the result is no longer stored.

Webhooks

Add "callback_url" to POST /api/v1/jobs, and Do4U sends a signed POST (event job.finished with status, credits and the result link - not the result itself) as soon as the job is done. Only public addresses on port 80 or 443; we retry up to 6 times with growing pauses.

Example: create a job with callback_url – and the request Do4U sends to that address when the job is finished:

curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tool": "summarize", "text": "...", "callback_url": "https://example.com/do4u-hook"}'
POST /do4u-hook
Content-Type: application/json
X-Do4U-Event: job.finished
X-Do4U-Signature: t=1793180000,v1=6b1f...

{"event":"job.finished","id":"8f1c0b6a...","tool":"summarize","status":"done","credits":1,
 "created":"2026-10-28T10:00:00+01:00","finished":"2026-10-28T10:00:04+01:00","result_url":"https://do4u.eu/api/v1/jobs/8f1c0b6a..."}

Check the header X-Do4U-Signature: t=<time>,v1=<hex>, where v1 = HMAC-SHA256(secret, "<time>.<raw body>"). Reject old times (e.g. older than 5 minutes). Your secret starts with whsec_ and is shown on the page API keys.

// Node.js: rawBody = the request body exactly as received (string)
const crypto = require('crypto');
function do4uSignatureOk(rawBody, header, secret) {
  const t = (header.match(/t=(\d+)/) || [])[1];
  const v1 = (header.match(/v1=([0-9a-f]{64})/) || [])[1];
  if (!t || !v1 || Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
  const expected = crypto.createHmac('sha256', secret).update(t + '.' + rawBody).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}
// PHP
function do4u_signature_ok(string $raw, string $header, string $secret): bool {
    if (!preg_match('/t=(\d+),v1=([0-9a-f]{64})/', $header, $m) || abs(time() - (int)$m[1]) > 300) return false;
    return hash_equals(hash_hmac('sha256', $m[1] . '.' . $raw, $secret), $m[2]);
}
$ok = do4u_signature_ok(file_get_contents('php://input'), $_SERVER['HTTP_X_DO4U_SIGNATURE'] ?? '', 'whsec_YOUR_SECRET');

credits.low

When the credit balance of an account drops below the threshold, Do4U sends one signed POST to the webhook address of the account. The event contains no personal data, only the balance, the threshold and the time (UTC). The next one follows only after credits were added again (purchase, monthly free credits or voucher). Signature and secret are the same as for job.finished.

POST /do4u-hook
Content-Type: application/json
X-Do4U-Event: credits.low
X-Do4U-Signature: t=1793180000,v1=6b1f...

{"event":"credits.low","balance":18,"threshold":20,"ts":"2026-10-29T10:00:04Z"}

You set the address and the threshold here: API keys

n8n

Ready-made workflow: a webhook receives the call from Do4U, checks the signature, fetches the result and hands it to your next step.

Download the n8n template (JSON)

Template, not yet tested in a real n8n or Make instance – please test the signature check before you use it.

In n8n: Workflows → Import from file. Then enter your secret in the node "Check signature" and your API key in "Do4U: get result", activate the workflow and use the production URL of the webhook as callback_url. Self-hosted n8n needs the environment variable NODE_FUNCTION_ALLOW_BUILTIN=crypto for the signature check.

Make

  1. Add the module Webhooks → Custom webhook as the trigger and switch on "JSON pass-through" and "Get request headers" in its advanced settings.
  2. Use the address of this webhook as callback_url.
  3. Check the signature: compare v1 from the header X-Do4U-Signature with sha256(t + "." + raw body; hex; your secret).
  4. Add HTTP → Make a request: GET on result_url with the header Authorization: Bearer <your API key>.
  5. Use the field result in your next modules.

Template, not yet tested in a real n8n or Make instance – please test the signature check before you use it.

Recipes: chain tools

A recipe runs 2 to 4 tools one after the other as one job. Send "recipe" instead of "tool": either the name of a ready-made recipe or a list of steps. The text goes into the first step; the result of each step is the text for the next step. GET /api/v1/recipes lists the ready-made recipes, the tools you can use and the field each tool hands on.

curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"recipe": [{"tool": "summarize", "options": {"length": "short"}},
               {"tool": "translate", "options": {"target": "pl"}}], "text": "..."}'
curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"recipe": "summary_translate_meta", "options": {"target": "pl"}, "text": "..."}'

You get one estimate for all steps (credits_estimate). That amount is reserved at the start. After each step the real use is booked and the rest stays reserved until the end, then it is released. A failed step costs nothing, the remaining steps are skipped, and steps that were already finished are charged.

HTTP/1.1 202 Accepted
{"id": "3c9e0d1a...", "tool": "recipe", "recipe": null, "status": "queued", "model": "do4u-standard", "credits_estimate": 4,
 "steps": [{"n": 1, "tool": "summarize", "credits_estimate": 2}, {"n": 2, "tool": "translate", "credits_estimate": 2}],
 "links": {"self": "https://do4u.eu/api/v1/jobs/3c9e0d1a..."}}

GET /api/v1/jobs/{id} shows every step with its status (pending, queued, running, done, failed, skipped), its credits, a notice input_shortened if the text had to be shortened for the next tool, and the result of each step once the recipe has ended. With no_store the results are shown once. callback_url fires once, at the end of the recipe.

GET https://do4u.eu/api/v1/jobs/3c9e0d1a...

{"id": "3c9e0d1a...", "tool": "recipe", "status": "done", "credits_estimate": 4, "credits": 3, "steps_total": 2,
 "steps": [{"n": 1, "tool": "summarize", "status": "done", "credits": 1, "result": {"summary": "...", "key_points": ["..."]}},
           {"n": 2, "tool": "translate", "status": "done", "credits": 2, "notices": ["input_shortened"], "result": {"translation": "...", "notes": []}}],
 "result": {"translation": "...", "notes": []}}

GET https://do4u.eu/api/v1/recipes

Errors

Errors always have the same form: {"error": {"code": "...", "message": "..."}}. With 429 and 503 the header Retry-After says how many seconds to wait.

CodeHTTPMeaning
missing_key401No API key sent.
invalid_key401Key unknown or revoked.
rate_limited429Too many requests in this minute.
invalid_json400Body is not a JSON object.
unknown_tool400No tool with this name.
invalid_option400Unknown option or value.
invalid_field400A field has the wrong type.
invalid_language400language is not en, de or pl.
empty_input400No text or URL.
text_b_required400compare needs text and text_b.
input_too_long400Input longer than your limit.
input_too_large400Input too large for one job: shorten it or split it into several jobs.
invalid_url400URL not allowed or not readable.
invalid_image400Image missing, wrong format or too large.
payload_too_large413Request body larger than 8 MB.
insufficient_credits402Not enough credits.
email_not_verified402Confirm your email address first.
daily_limit429Free daily limit used up (website_check scope short).
too_many_open_jobs429Too many open jobs in your account.
package_required403The tool needs a purchased package.
busy503The queue is full, try again shortly.
tool_unavailable503The tool is not available right now.
not_found404Unknown endpoint or job.
method_not_allowed405Wrong HTTP method.
internal_error500Error on our side.
invalid_idempotency_key400Idempotency-Key is empty, too long or has characters that are not printable ASCII.
idempotency_conflict422This Idempotency-Key was already used with a different request.
idempotency_in_progress409A request with this Idempotency-Key is still running. Wait a moment (Retry-After).
idempotency_unavailable503Idempotency-Key cannot be used right now. Try again later.
same_language400The text already is in the target language (translate tools). Send allow_same_language: true to translate anyway.

Limits

Credits

A new job shows an estimate (credits_estimate); charged is the actual use (credits). Failed jobs cost nothing. Free credits are used first.

Office tools: inputs, review and exports

All nine tools use POST /api/v1/jobs and the existing job status endpoint. Input documents and generated drafts are data, never instructions to execute actions. Results require review before operational use. No tool sends messages, publishes articles or changes source files.

Meeting minutes

meeting_minutes

Input and limits

Plain UTF-8 text only, up to 12,000 characters; each non-empty source line is limited to 1,200 characters. options.items accepts the strings "5", "10" or "20" (default "10"). Source language is preserved. Uploaded PDFs, remote URLs and images are not accepted.

Result and export

The result contains reviewed draft candidates, exact source quotations, line numbers and byte offsets. Missing owners, deadlines or answers remain missing. result.exports.text and result.exports.csv contain filename, mime and UTF-8 content. CSV cells receive formula protection. Learning quizzes also provide result.exports.moodle_xml for Moodle short-answer import. Questions and answers still need subject review.

JSON request

{
    "tool": "meeting_minutes",
    "text": "Decision: use the blue design.\nAnna will send the draft by 7 November 2026.\nBudget remains open.",
    "options": {
        "items": "10"
    }
}

Tender requirements

tender_requirements

Input and limits

Plain UTF-8 text only, up to 12,000 characters; each non-empty source line is limited to 1,200 characters. options.items accepts the strings "5", "10" or "20" (default "10"). Source language is preserved. Uploaded PDFs, remote URLs and images are not accepted.

Result and export

The result contains reviewed draft candidates, exact source quotations, line numbers and byte offsets. Missing owners, deadlines or answers remain missing. result.exports.text and result.exports.csv contain filename, mime and UTF-8 content. CSV cells receive formula protection. Learning quizzes also provide result.exports.moodle_xml for Moodle short-answer import. Questions and answers still need subject review.

JSON request

{
    "tool": "tender_requirements",
    "text": "A signed declaration is mandatory.\nThe proposal must include two references.\nThe submission deadline is 9 November 2026.",
    "options": {
        "items": "10"
    }
}

Work instructions

work_instructions

Input and limits

Plain UTF-8 text only, up to 12,000 characters; each non-empty source line is limited to 1,200 characters. options.items accepts the strings "5", "10" or "20" (default "10"). Source language is preserved. Uploaded PDFs, remote URLs and images are not accepted.

Result and export

The result contains reviewed draft candidates, exact source quotations, line numbers and byte offsets. Missing owners, deadlines or answers remain missing. result.exports.text and result.exports.csv contain filename, mime and UTF-8 content. CSV cells receive formula protection. Learning quizzes also provide result.exports.moodle_xml for Moodle short-answer import. Questions and answers still need subject review.

JSON request

{
    "tool": "work_instructions",
    "text": "Prerequisite: a clean surface.\nOperator: technician.\nSwitch off the device before cleaning.\nCheck that the surface is dry.",
    "options": {
        "items": "10"
    }
}

Learning quiz

learning_quiz

Input and limits

Plain UTF-8 text only, up to 12,000 characters; each non-empty source line is limited to 1,200 characters. options.items accepts the strings "5", "10" or "20" (default "10"). Source language is preserved. Uploaded PDFs, remote URLs and images are not accepted.

Result and export

The result contains reviewed draft candidates, exact source quotations, line numbers and byte offsets. Missing owners, deadlines or answers remain missing. result.exports.text and result.exports.csv contain filename, mime and UTF-8 content. CSV cells receive formula protection. Learning quizzes also provide result.exports.moodle_xml for Moodle short-answer import. Questions and answers still need subject review.

JSON request

{
    "tool": "learning_quiz",
    "text": "Water freezes at zero degrees Celsius.\nA triangle has three sides.\nPhotosynthesis uses light energy.",
    "options": {
        "items": "10"
    }
}

CSV and XLSX cleaner

clean_table

Input and limits

Send CSV in text (up to 24,000 bytes), or text beginning D4XLSX1: followed by strict base64 of an XLSX file (up to 1,000,000 decoded bytes). Limits: one sheet, 201 rows including the header, 32 columns, 3,000 cells and 20,000 cell-text bytes. Formulas, macros and external links are rejected. Styles and spreadsheet features are not preserved. options.delimiter: auto, comma, semicolon or tab. options.decimal: keep or comma.

Result and export

The review identifies exact duplicate rows and conservative value corrections. To export, submit the same original text and options again, with options.office_action="export", options.export_format="csv" or "xlsx", and selected as a JSON-encoded string list of reviewed IDs. Only selected changes apply. An empty selection applies no cleanup. CSV formula protection remains active; XLSX stores literal strings. The worker recomputes IDs rather than trusting a client report.

selected is a string containing a JSON list, for example "[\"C1\"]"; use actual IDs from the review. Maximum 5,000 bytes and 3,000 distinct IDs. Export jobs return result.type="office_export" and result.export containing filename, mime and content_base64. Decode base64 as file bytes. No client-supplied report is accepted.

JSON request

{
    "tool": "clean_table",
    "text": "Name,Date\nAlpha,2026-11-02\nAlpha,2026-11-02",
    "options": {
        "delimiter": "comma",
        "decimal": "keep"
    }
}

Text anonymiser

anonymize

Input and limits

Plain UTF-8 text up to 12,000 bytes. options.scope accepts all, email, phone, iban or ip. Optional terms is a string of up to 30 exact, case-sensitive terms on separate lines, at most 2,000 bytes. Name and address detection requires these custom terms. IP recognition covers IPv4; phone candidates need review and IBAN candidates require a valid checksum.

Result and export

Review each occurrence and its proposed placeholder. Repeated identical values use stable placeholders within that text. For export, resubmit the original text and options with options.office_action="export", options.export_format="txt", and selected as a JSON-encoded string list of occurrence IDs. Unselected occurrences remain unchanged. This assists redaction and does not certify irreversible anonymisation.

selected is a string containing a JSON list, for example "[\"C1\"]"; use actual IDs from the review. Maximum 5,000 bytes and 3,000 distinct IDs. Export jobs return result.type="office_export" and result.export containing filename, mime and content_base64. Decode base64 as file bytes. No client-supplied report is accepted.

JSON request

{
    "tool": "anonymize",
    "text": "Contact: alex@example.org; reference AB-104.",
    "terms": "AB-104",
    "options": {
        "scope": "all"
    }
}

Subtitle check and translation

subtitles

Input and limits

Send plain SRT or WebVTT in text, up to 65,536 bytes, 200 cues and 16,000 cue-text characters. Styling, embedded markup and unsupported metadata are rejected. options.mode is check (default) or translate; options.format is auto, srt or vtt. options.target selects a supported language for translation. Integer fields max_line_chars (10–100, default 42), max_lines (1–6, default 2) and max_cps (5–40, default 20) are top-level fields.

Result and export

The result reports timing errors, overlaps, line lengths and reading speed. Checking keeps the original language. Translation changes cue text while retaining source timings and cue correspondence; it does not retime or split cues. Downloadable text is in result.file with result.filename and result.mime. Invalid timing may leave file null. A successful check is not a guarantee of accessibility or linguistic quality.

JSON request

{
    "tool": "subtitles",
    "text": "1\n00:00:01,000 --> 00:00:04,000\nThe workshop opens at nine.\n",
    "max_line_chars": 42,
    "options": {
        "mode": "check",
        "format": "srt"
    }
}

E-invoice validation

invoice_validate

Input and limits

Send UTF-8 invoice XML in text, up to 262,144 bytes. Accepted inputs are UBL Invoice, UBL CreditNote and UN/CEFACT CII with an EN 16931 or XRechnung 3 profile. options.profile is auto, en16931 or xrechnung. ZIP, PDF, embedded ZUGFeRD PDF extraction, DTDs and external entities are not supported. Extracted XML may be submitted independently if it meets the accepted profile.

Result and export

Validation uses official, pinned XSD and Schematron artefacts: KoSIT 1.6.3, XRechnung 3.0.2 configuration dated 2026-08-31, EN 16931 rules 1.3.16 and XRechnung rules 2.6.0. The result records the versions, document hash, findings, severity, rule IDs and acceptance status. not_checked means no conformance decision was obtained. A technical pass does not guarantee recipient acceptance, accounting correctness or legal compliance.

JSON request

The compact XML example below is deliberately incomplete and should return validation errors. A full business invoice must include all mandatory fields; the example demonstrates the request format, not a conformant invoice.

{
    "tool": "invoice_validate",
    "text": "<Invoice xmlns=\"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2\" xmlns:cbc=\"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2\"><cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID></Invoice>",
    "options": {
        "profile": "auto"
    }
}

Blog writing assistant

blog_assistant

Input and limits

The briefing phase requires topic (300 bytes), audience (500 bytes) and goal (500 bytes). Optional text supplies up to 12,000 bytes of source material, in no more than 12 paragraphs of 1,800 bytes each. An optional source_url must be a public HTTP(S) address of at most 2,000 characters; analyse_url must be the JSON boolean true to authorise analysis. Private targets and disallowed pages remain blocked.

Result and export

First submit phase="briefing". Review the returned outline, questions and sources. The owner-bound result supplies approval_token and briefing_hash. Only after explicit review, submit phase="article", approved=true, sources_approved=true and both unchanged values. The approval expires after 30 minutes and belongs to the authenticated account. Article requests cannot replace topic, audience, goal, text or sources. The article remains a draft with source-linked paragraphs; nothing is published automatically.

JSON request

{
    "tool": "blog_assistant",
    "phase": "briefing",
    "topic": "Bicycle inspections",
    "audience": "Local commuters",
    "goal": "Explain the appointment process",
    "text": "An inspection requires an appointment.\n\nThe workshop checks brakes, tyres and lights."
}

Article request after approval

{
    "tool": "blog_assistant",
    "phase": "article",
    "approved": true,
    "sources_approved": true,
    "approval_token": "TOKEN_FROM_REVIEWED_BRIEFING",
    "briefing_hash": "HASH_FROM_REVIEWED_BRIEFING"
}

Invoice reports include result.exports.json; validated article drafts include result.exports.text. Each export contains filename, mime and UTF-8 content. Article text retains source references and remains an unpublished draft.

Save exports as attachments with the returned MIME type. Treat all text as untrusted content and escape it before HTML rendering. Do not execute document contents or turn findings into automatic external actions.

Document, spreadsheet and media tools

These eight tools use the same authenticated job API. Submit a JSON request whose text field contains a JSON-encoded object. Uploaded files are represented by filename and standard base64 content inside that object. No remote file URL is fetched.

Preview and export are separate requests. Export requires explicit approval and the source fingerprint or owner-bound approval token returned by the preview. A file or model response cannot grant approval.

Receipt digitiser

receipt_extract

Input and limits

The envelope contains files: one object with name and content_base64. PDF, PNG, JPEG or TXT; maximum 1 MB, PDFs up to three pages. options.action is review or export; options.export_format is csv or xlsx. For export, resubmit the original files plus approved=true, source_sha256 and reviewed with corrected fields and items.

Result and review

The review returns extracted fields, line items, exact source evidence and arithmetic warnings. Exported values are customer-reviewed drafts, not verified accounting records. OCR can introduce errors.

Request example

{
    "tool": "receipt_extract",
    "text": "{\"files\":[{\"name\":\"receipt.txt\",\"content_base64\":\"U2FtcGxlIFN0b3JlCjIwMjYtMTEtMDIKTmV0OiAxMDAuMDAKVGF4OiAxOS4wMApUb3RhbDogMTE5LjAwIEVVUg==\"}]}"
}
Decoded text envelope schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "files"
    ],
    "properties": {
        "files": {
            "type": "array",
            "minItems": 1,
            "maxItems": 1,
            "items": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "name",
                    "content_base64"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 160
                    },
                    "content_base64": {
                        "type": "string",
                        "contentEncoding": "base64",
                        "maxLength": 1400000
                    }
                }
            }
        },
        "approved": {
            "type": "boolean"
        },
        "source_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
        },
        "reviewed": {
            "type": "object"
        }
    }
}

Spreadsheet formula assistant

spreadsheet_formula

Input and limits

The envelope contains task, columns, application, formula_language and separator. Each column has name, cell and sample. Up to 20 columns and 3,000 task characters. application is excel or sheets; function names are en, de or pl; separator is a comma or semicolon. English function names are available for compatible spreadsheet settings.

Result and review

Returns formula, explanation, assumptions and example checks. tests_executed is false: the server never runs the formula. The supported subset allows common functions and local cell references; external references, macros and network functions are rejected.

Request example

{
    "tool": "spreadsheet_formula",
    "text": "{\"task\":\"Calculate quantity times unit price.\",\"columns\":[{\"name\":\"Quantity\",\"cell\":\"A2\",\"sample\":\"3\"},{\"name\":\"Unit price\",\"cell\":\"B2\",\"sample\":\"12\"}],\"application\":\"excel\",\"formula_language\":\"en\",\"separator\":\",\"}"
}
Decoded text envelope schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "task",
        "columns",
        "application",
        "formula_language",
        "separator"
    ],
    "properties": {
        "task": {
            "type": "string",
            "maxLength": 3000
        },
        "columns": {
            "type": "array",
            "minItems": 1,
            "maxItems": 20,
            "items": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "name",
                    "cell",
                    "sample"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 100
                    },
                    "cell": {
                        "type": "string",
                        "pattern": "^[A-Z]{1,2}[1-9][0-9]{0,5}$"
                    },
                    "sample": {
                        "type": "string",
                        "maxLength": 300
                    }
                }
            }
        },
        "application": {
            "enum": [
                "excel",
                "sheets"
            ]
        },
        "formula_language": {
            "enum": [
                "en",
                "de",
                "pl"
            ]
        },
        "separator": {
            "enum": [
                ",",
                ";"
            ]
        }
    }
}

Translation quality check

translation_check

Input and limits

The envelope contains source, translation, source_language and target_language, plus optional terms with source and target pairs. Up to 10,000 characters per text and 30 term pairs.

Result and review

Returns possible differences with exact quotations and byte offsets in both texts. Separate checks compare literal numeric occurrences and required terms. Localised formatting or inflection may explain a finding; an empty report does not certify accuracy.

Request example

{
    "tool": "translation_check",
    "text": "{\"source\":\"The battery lasts 12 hours.\",\"translation\":\"Der Akku hält 10 Stunden.\",\"source_language\":\"en\",\"target_language\":\"de\",\"terms\":[]}"
}
Decoded text envelope schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "source",
        "translation",
        "source_language",
        "target_language"
    ],
    "properties": {
        "source": {
            "type": "string",
            "maxLength": 10000
        },
        "translation": {
            "type": "string",
            "maxLength": 10000
        },
        "source_language": {
            "type": "string",
            "pattern": "^[a-z]{2}(-[A-Z]{2})?$"
        },
        "target_language": {
            "type": "string",
            "pattern": "^[a-z]{2}(-[A-Z]{2})?$"
        },
        "terms": {
            "type": "array",
            "maxItems": 30,
            "items": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "source",
                    "target"
                ],
                "properties": {
                    "source": {
                        "type": "string",
                        "maxLength": 100
                    },
                    "target": {
                        "type": "string",
                        "maxLength": 100
                    }
                }
            }
        }
    }
}

Audio and video transcription

transcribe

Input and limits

The envelope contains filename, content_base64 and language. Supported formats: WAV, MP3, M4A, MP4, WebM, OGG and FLAC. Maximum 3 MiB and 30 seconds. language is auto or a supported language code. Files are processed locally; no URL download is performed.

Result and review

Returns timestamped segments and TXT, SRT and VTT exports for review. Recognition can be wrong. A not_completed status includes a bounded error code and does not represent a successful transcript.

A real file is required. The schema below describes the decoded text envelope; content_base64 must contain the actual file bytes encoded as standard base64. Placeholder strings are not working examples.

Decoded text envelope schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "filename",
        "content_base64",
        "language"
    ],
    "properties": {
        "filename": {
            "type": "string",
            "maxLength": 150
        },
        "content_base64": {
            "type": "string",
            "contentEncoding": "base64",
            "maxLength": 4194304
        },
        "language": {
            "enum": [
                "auto",
                "de",
                "en",
                "pl",
                "fr",
                "es",
                "it",
                "nl",
                "pt",
                "cs",
                "sk",
                "da",
                "sv",
                "fi",
                "et",
                "lv",
                "lt",
                "hu",
                "ro",
                "bg",
                "el",
                "hr",
                "sl",
                "uk",
                "ru",
                "tr",
                "nb"
            ]
        }
    }
}

Document template merge

document_merge

Input and limits

The envelope contains template with name and content_base64, plus data as CSV text or D4XLSX1: followed by standard base64 XLSX bytes. A DOCX template accepts up to 32 placeholders and the data up to 20 rows. options.action is review or export; options.export_format is docx or pdf. Export requires the original inputs, approved=true and source_sha256.

Result and review

The preview lists placeholders, data columns and missing values. Missing used values block export. A ZIP contains completed documents. DOCX preserves the template layout; PDF uses a simple text layout without Word styling or images.

A real file is required. The schema below describes the decoded text envelope; content_base64 must contain the actual file bytes encoded as standard base64. Placeholder strings are not working examples.

Decoded text envelope schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "template",
        "data"
    ],
    "properties": {
        "template": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "name",
                "content_base64"
            ],
            "properties": {
                "name": {
                    "type": "string",
                    "maxLength": 160
                },
                "content_base64": {
                    "type": "string",
                    "contentEncoding": "base64",
                    "maxLength": 1400000
                }
            }
        },
        "data": {
            "type": "string",
            "maxLength": 1400000
        },
        "approved": {
            "type": "boolean"
        },
        "source_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
        }
    }
}

Import mapping assistant

import_map

Input and limits

The envelope contains source and target tables as CSV text or D4XLSX1: followed by standard base64 XLSX bytes. The target header names required columns; an optional second row declares text, number, date or email, optionally prefixed by required:. mapping contains zero-based source-column indexes or null. Up to 200 data rows and 32 columns.

Result and review

Returns suggested mappings, a reusable profile, preview rows and validation issues. Export with options.action=export requires approved=true and an explicit mapping; unresolved validation issues block export. No external system is modified.

Request example

{
    "tool": "import_map",
    "text": "{\"source\":\"name,amount\\nExample,12\",\"target\":\"name,amount\\nrequired:text,number\"}"
}
Decoded text envelope schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "source",
        "target"
    ],
    "properties": {
        "source": {
            "type": "string",
            "maxLength": 1400000
        },
        "target": {
            "type": "string",
            "maxLength": 1400000
        },
        "approved": {
            "type": "boolean"
        },
        "mapping": {
            "type": "array",
            "maxItems": 32,
            "items": {
                "type": [
                    "integer",
                    "null"
                ],
                "minimum": 0,
                "maximum": 31
            }
        }
    }
}

Presentations from source material

presentation

Input and limits

For phase=outline, text contains title, audience, purpose and material. Material has one to eight source paragraphs, up to 1,200 characters each. For phase=pptx, send approved=true and approval_token at the top level; text must be absent or empty. Tokens are bound to the authenticated account and expire.

Result and review

The outline contains source-bound slide titles and quotations. After review, the second request exports an editable PPTX with geometric accents and speaker notes. Source text cannot modify approval, account binding or export permissions.

Request example

{
    "tool": "presentation",
    "phase": "outline",
    "text": "{\"title\":\"Workshop services\",\"audience\":\"Local businesses\",\"purpose\":\"Explain available services\",\"material\":\"The workshop repairs bicycles.\\nAppointments are required for inspections.\"}"
}
Decoded text envelope schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "title",
        "audience",
        "purpose",
        "material"
    ],
    "properties": {
        "title": {
            "type": "string",
            "maxLength": 160
        },
        "audience": {
            "type": "string",
            "maxLength": 300
        },
        "purpose": {
            "type": "string",
            "maxLength": 500
        },
        "material": {
            "type": "string",
            "maxLength": 12000
        }
    }
}

Export an approved presentation

Replace APPROVAL_TOKEN_FROM_OWN_OUTLINE with the token from the reviewed outline result; it is not a working token.

{
    "tool": "presentation",
    "phase": "pptx",
    "approved": true,
    "approval_token": "APPROVAL_TOKEN_FROM_OWN_OUTLINE"
}

Document filing assistant

document_filing

Input and limits

The envelope contains files and an optional project name. Up to ten TXT, PDF, DOCX, PNG or JPEG files, 1 MB per file and 2 MB combined. options.action is review or export; options.export_format is zip. Export requires original inputs, approved=true, source_sha256 and a names object mapping file IDs to reviewed destinations.

Result and review

Returns proposed categories, dates and filenames. Suggestions are based on document text and require review. Export creates a ZIP of copies; originals remain unchanged. Unsafe paths, extension changes and duplicate destinations are rejected.

Request example

{
    "tool": "document_filing",
    "text": "{\"files\":[{\"name\":\"invoice.txt\",\"content_base64\":\"SW52b2ljZQoyMDI2LTExLTAyClRvdGFsIDEyMCBFVVI=\"}],\"project\":\"Project\"}"
}
Decoded text envelope schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "files"
    ],
    "properties": {
        "files": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "items": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "name",
                    "content_base64"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 160
                    },
                    "content_base64": {
                        "type": "string",
                        "contentEncoding": "base64",
                        "maxLength": 1400000
                    }
                }
            }
        },
        "project": {
            "type": "string",
            "maxLength": 80
        },
        "approved": {
            "type": "boolean"
        },
        "source_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
        },
        "names": {
            "type": "object",
            "additionalProperties": {
                "type": "string"
            }
        }
    }
}

Text exports contain content. Binary exports identify base64 through content_base64 or encoding=base64. Decode only the declared encoding. Filenames are suggestions; results are available only through the authenticated, owner-checked job result.

Purchasing, planning and operational tools

These eight tools use the existing authenticated job API. The text field contains a JSON-encoded object with the input fields listed below. Examples contain real, bounded sample data.

Every initial result requires an AI model phase through the existing worker service. Deterministic code validates source references, constraints and calculations after the model proposes matches, assignments or structure. There is no code-only fallback.

Send application/json. Multipart uploads, remote file URLs, unknown fields and nonempty tool-specific options are rejected. Omit options or send an empty object. Common API flags retain their shared API meaning.

Supplier offer comparison

supplier_compare

Compare supplier offer lines against required items, review AI match proposals and inspect quantity, currency, shipping and total-price differences.

Decoded input fields

requirements — Required items
CSV columns: description,quantity,unit. Use the same unit spelling as in the offers. Up to 30 rows; 40 rows across all tables.
offers — Supplier offer lines
CSV columns: supplier,description,quantity,unit,unit_price,shipping,currency,lead_days. Shipping is the charge for this line only; enter 0 if none. Lead time may be empty. Compare prices on the same tax basis.
csv_separator — CSV separator
Choose semicolon, comma or tab for the exported CSV only. Source CSV uploads still require their documented comma-separated headers.
csv_bom — UTF-8 marker in CSV
Include a UTF-8 byte-order mark for spreadsheet compatibility, or omit it for systems that require plain UTF-8.
csv_line_ending — CSV line endings
Use LF or CRLF for exported CSV records. This does not change source text or line breaks inside quoted cells.
include_json — Include JSON export
Offer an additional structured JSON report containing the complete reviewed rows, findings and summary. No action is executed by exporting it.
max_lead_days — Lead-time review limit
0 disables this additional check. Otherwise, flag offer lead times above the selected number of days and offers with no stated lead time. Prices and comparisons remain unchanged. Maximum 999 days.
row_order — Review row order
Reorder complete table rows without removing findings, changing calculations or modifying assignments. Empty sort values appear last; equal values retain their original relative order.

Maximum UTF-8 bytes in the text envelope: 60000

Result and source review

The result type is ops_review. columns contains key and label_key; rows contains the corresponding scalar cell values. findings contains localisable code values and source refs; summary contains label_key and value. review_required and ai_required are true. ai_model identifies the accepted model when supplied by the worker. Some tools also return source_sha256 or note_key. Source strings remain untrusted data and must be rendered as text, never executable HTML or instructions.

Request example

{
    "tool": "supplier_compare",
    "text": "{\"requirements\":\"description,quantity,unit\\nBlue A4 folders,10,piece\",\"offers\":\"supplier,description,quantity,unit,unit_price,shipping,currency,lead_days\\nNorth,Blue A4 document folders,10,piece,2.50,5.00,EUR,3\\nSouth,A4 folder blue,10,piece,2.30,8.00,EUR,5\",\"csv_separator\":\"semicolon\",\"csv_bom\":true,\"csv_line_ending\":\"lf\",\"include_json\":false,\"max_lead_days\":0,\"row_order\":\"source\"}"
}
Decoded text object schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "requirements",
        "offers"
    ],
    "properties": {
        "requirements": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 20000
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 30,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "description",
                            "quantity",
                            "unit"
                        ],
                        "properties": {
                            "description": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "quantity": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "unit": {
                                "type": "string",
                                "maxLength": 240
                            }
                        }
                    }
                }
            ]
        },
        "offers": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 20000
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 30,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "supplier",
                            "description",
                            "quantity",
                            "unit",
                            "unit_price",
                            "shipping",
                            "currency",
                            "lead_days"
                        ],
                        "properties": {
                            "supplier": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "description": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "quantity": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "unit": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "unit_price": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "shipping": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "currency": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "lead_days": {
                                "type": "string",
                                "maxLength": 240
                            }
                        }
                    }
                }
            ]
        },
        "csv_separator": {
            "type": "string",
            "enum": [
                "semicolon",
                "comma",
                "tab"
            ],
            "default": "semicolon"
        },
        "csv_bom": {
            "type": "boolean",
            "default": true
        },
        "csv_line_ending": {
            "type": "string",
            "enum": [
                "lf",
                "crlf"
            ],
            "default": "lf"
        },
        "include_json": {
            "type": "boolean",
            "default": false
        },
        "max_lead_days": {
            "type": "integer",
            "minimum": 0,
            "maximum": 999,
            "default": 0
        },
        "row_order": {
            "type": "string",
            "enum": [
                "source",
                "supplier"
            ],
            "default": "source"
        }
    }
}

Order, delivery and invoice reconciliation

three_way_match

Match order, delivery and invoice lines with AI assistance, then calculate missing quantities, excess billing and unit-price differences from the source data.

Decoded input fields

orders — Order lines
CSV columns: reference,description,quantity,unit,unit_price,currency. Reference means the shared order reference, not a supplier document number. Use the same unit labels and tax basis throughout.
deliveries — Delivered lines
CSV columns: reference,description,quantity,unit. Reference means the shared order reference. Partial deliveries may be separate rows.
invoices — Invoice lines
CSV columns: reference,description,quantity,unit,unit_price,currency. Reference means the shared order reference. Tax, discounts and credit notes must not be entered as item lines.
csv_separator — CSV separator
Choose semicolon, comma or tab for the exported CSV only. Source CSV uploads still require their documented comma-separated headers.
csv_bom — UTF-8 marker in CSV
Include a UTF-8 byte-order mark for spreadsheet compatibility, or omit it for systems that require plain UTF-8.
csv_line_ending — CSV line endings
Use LF or CRLF for exported CSV records. This does not change source text or line breaks inside quoted cells.
include_json — Include JSON export
Offer an additional structured JSON report containing the complete reviewed rows, findings and summary. No action is executed by exporting it.
review_blank_references — Flag missing document references
Add a review finding for every order, delivery or invoice row with an empty reference. Existing matching decisions and warnings remain unchanged.
row_order — Review row order
Reorder complete table rows without removing findings, changing calculations or modifying assignments. Empty sort values appear last; equal values retain their original relative order.

Maximum UTF-8 bytes in the text envelope: 60000

Result and source review

The result type is ops_review. columns contains key and label_key; rows contains the corresponding scalar cell values. findings contains localisable code values and source refs; summary contains label_key and value. review_required and ai_required are true. ai_model identifies the accepted model when supplied by the worker. Some tools also return source_sha256 or note_key. Source strings remain untrusted data and must be rendered as text, never executable HTML or instructions.

Request example

{
    "tool": "three_way_match",
    "text": "{\"orders\":\"reference,description,quantity,unit,unit_price,currency\\nPO-1,Blue A4 folders,10,piece,2.50,EUR\",\"deliveries\":\"reference,description,quantity,unit\\nPO-1,A4 folders blue,8,piece\",\"invoices\":\"reference,description,quantity,unit,unit_price,currency\\nPO-1,Blue document folders A4,10,piece,2.60,EUR\",\"csv_separator\":\"semicolon\",\"csv_bom\":true,\"csv_line_ending\":\"lf\",\"include_json\":false,\"review_blank_references\":false,\"row_order\":\"source\"}"
}
Decoded text object schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "orders",
        "deliveries",
        "invoices"
    ],
    "properties": {
        "orders": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 20000
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 30,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "reference",
                            "description",
                            "quantity",
                            "unit",
                            "unit_price",
                            "currency"
                        ],
                        "properties": {
                            "reference": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "description": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "quantity": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "unit": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "unit_price": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "currency": {
                                "type": "string",
                                "maxLength": 240
                            }
                        }
                    }
                }
            ]
        },
        "deliveries": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 20000
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 30,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "reference",
                            "description",
                            "quantity",
                            "unit"
                        ],
                        "properties": {
                            "reference": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "description": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "quantity": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "unit": {
                                "type": "string",
                                "maxLength": 240
                            }
                        }
                    }
                }
            ]
        },
        "invoices": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 20000
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 30,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "reference",
                            "description",
                            "quantity",
                            "unit",
                            "unit_price",
                            "currency"
                        ],
                        "properties": {
                            "reference": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "description": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "quantity": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "unit": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "unit_price": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "currency": {
                                "type": "string",
                                "maxLength": 240
                            }
                        }
                    }
                }
            ]
        },
        "csv_separator": {
            "type": "string",
            "enum": [
                "semicolon",
                "comma",
                "tab"
            ],
            "default": "semicolon"
        },
        "csv_bom": {
            "type": "boolean",
            "default": true
        },
        "csv_line_ending": {
            "type": "string",
            "enum": [
                "lf",
                "crlf"
            ],
            "default": "lf"
        },
        "include_json": {
            "type": "boolean",
            "default": false
        },
        "review_blank_references": {
            "type": "boolean",
            "default": false
        },
        "row_order": {
            "type": "string",
            "enum": [
                "source",
                "reference"
            ],
            "default": "source"
        }
    }
}

Payment and invoice reconciliation

payment_match

Propose matches between incoming payments and open invoices, identify ambiguity and calculate instalments, remaining balances and overpayments.

Decoded input fields

payments — Incoming payments
CSV columns: reference,counterparty,date,amount,currency. Use invoice references where known, positive amounts and YYYY-MM-DD dates. One payment can be proposed for one invoice only.
invoices — Open invoices
CSV columns: reference,counterparty,date,amount,currency. Amount is the outstanding balance before the uploaded payments. References may be empty, but ambiguity can prevent allocation.
csv_separator — CSV separator
Choose semicolon, comma or tab for the exported CSV only. Source CSV uploads still require their documented comma-separated headers.
csv_bom — UTF-8 marker in CSV
Include a UTF-8 byte-order mark for spreadsheet compatibility, or omit it for systems that require plain UTF-8.
csv_line_ending — CSV line endings
Use LF or CRLF for exported CSV records. This does not change source text or line breaks inside quoted cells.
include_json — Include JSON export
Offer an additional structured JSON report containing the complete reviewed rows, findings and summary. No action is executed by exporting it.
review_date — Invoice-age reference date
Optional explicit YYYY-MM-DD date, from 1900 through 2200. Open invoice balances are checked by age from the source invoice date. Empty disables this check. Invoice age is not a payment due date or a legal overdue finding.
aging_days — Invoice-age review threshold
Flag positive open balances whose invoice date is at least this many days before the selected reference date. Range 0–3,650 days. Requires a reference date; no invoice deadline is inferred.
row_order — Review row order
Reorder complete table rows without removing findings, changing calculations or modifying assignments. Empty sort values appear last; equal values retain their original relative order.

Maximum UTF-8 bytes in the text envelope: 60000

Result and source review

The result type is ops_review. columns contains key and label_key; rows contains the corresponding scalar cell values. findings contains localisable code values and source refs; summary contains label_key and value. review_required and ai_required are true. ai_model identifies the accepted model when supplied by the worker. Some tools also return source_sha256 or note_key. Source strings remain untrusted data and must be rendered as text, never executable HTML or instructions.

Request example

{
    "tool": "payment_match",
    "text": "{\"payments\":\"reference,counterparty,date,amount,currency\\nINV-1,North Studio,2026-11-02,60.00,EUR\\nINV-1,North Studio,2026-11-03,40.00,EUR\",\"invoices\":\"reference,counterparty,date,amount,currency\\nINV-1,North Studio,2026-11-01,100.00,EUR\",\"csv_separator\":\"semicolon\",\"csv_bom\":true,\"csv_line_ending\":\"lf\",\"include_json\":false,\"review_date\":\"\",\"aging_days\":30,\"row_order\":\"source\"}"
}
Decoded text object schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "payments",
        "invoices"
    ],
    "properties": {
        "payments": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 20000
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 30,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "reference",
                            "counterparty",
                            "date",
                            "amount",
                            "currency"
                        ],
                        "properties": {
                            "reference": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "counterparty": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "date": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "amount": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "currency": {
                                "type": "string",
                                "maxLength": 240
                            }
                        }
                    }
                }
            ]
        },
        "invoices": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 20000
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 30,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "reference",
                            "counterparty",
                            "date",
                            "amount",
                            "currency"
                        ],
                        "properties": {
                            "reference": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "counterparty": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "date": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "amount": {
                                "type": "string",
                                "maxLength": 240
                            },
                            "currency": {
                                "type": "string",
                                "maxLength": 240
                            }
                        }
                    }
                }
            ]
        },
        "csv_separator": {
            "type": "string",
            "enum": [
                "semicolon",
                "comma",
                "tab"
            ],
            "default": "semicolon"
        },
        "csv_bom": {
            "type": "boolean",
            "default": true
        },
        "csv_line_ending": {
            "type": "string",
            "enum": [
                "lf",
                "crlf"
            ],
            "default": "lf"
        },
        "include_json": {
            "type": "boolean",
            "default": false
        },
        "review_date": {
            "type": "string",
            "maxLength": 10,
            "default": ""
        },
        "aging_days": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3650,
            "default": 30
        },
        "row_order": {
            "type": "string",
            "enum": [
                "source",
                "date"
            ],
            "default": "source"
        }
    }
}

Reorder planning assistant

reorder_plan

Prioritise stock items with AI, calculate replenishment quantities from supplied demand and lead times, and review minimum-order and pack-size effects.

Decoded input fields

items — Stock items
CSV columns: id,name,on_hand,daily_demand,lead_days,safety_stock,min_order,pack_size. IDs must be unique. Quantities use decimal points; lead_days and min_order are nonnegative whole numbers, and pack_size is a positive whole number.
horizon_days — Additional coverage days
Target coverage equals lead time plus these additional days. Demand is assumed constant; the result is a planning estimate.
notes — Planning notes and preferences
Optional context for the AI proposal. Availability, qualifications, dependencies and numerical limits must also be entered in the structured tables; notes never override those checks.
csv_separator — CSV separator
Choose semicolon, comma or tab for the exported CSV only. Source CSV uploads still require their documented comma-separated headers.
csv_bom — UTF-8 marker in CSV
Include a UTF-8 byte-order mark for spreadsheet compatibility, or omit it for systems that require plain UTF-8.
csv_line_ending — CSV line endings
Use LF or CRLF for exported CSV records. This does not change source text or line breaks inside quoted cells.
include_json — Include JSON export
Offer an additional structured JSON report containing the complete reviewed rows, findings and summary. No action is executed by exporting it.
large_order_threshold — Large-order review threshold
0 disables this additional check. Otherwise, flag suggested order quantities strictly above the threshold, up to 10,000,000 units. Source stock, demand, target coverage, pack rounding and order quantities are not changed.
row_order — Review row order
Reorder complete table rows without removing findings, changing calculations or modifying assignments. Empty sort values appear last; equal values retain their original relative order.

Maximum UTF-8 bytes in the text envelope: 120000

Result and source review

The result type is ops_review. columns contains key and label_key; rows contains the corresponding scalar cell values. findings contains localisable code values and source refs; summary contains label_key and value. review_required and ai_required are true. ai_model identifies the accepted model when supplied by the worker. Some tools also return source_sha256 or note_key. Source strings remain untrusted data and must be rendered as text, never executable HTML or instructions.

Request example

{
    "tool": "reorder_plan",
    "text": "{\"items\":\"id,name,on_hand,daily_demand,lead_days,safety_stock,min_order,pack_size\\nI1,Brake pads,12,3,5,4,10,5\\nI2,Chain oil,30,1,3,2,6,6\",\"horizon_days\":7,\"notes\":\"Brake pads support scheduled repairs and should be reviewed first. Chain oil is less urgent.\",\"csv_separator\":\"semicolon\",\"csv_bom\":true,\"csv_line_ending\":\"lf\",\"include_json\":false,\"large_order_threshold\":0,\"row_order\":\"source\"}"
}
Decoded text object schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "items",
        "horizon_days"
    ],
    "properties": {
        "items": {
            "type": "string",
            "maxLength": 40000
        },
        "horizon_days": {
            "type": "integer",
            "minimum": 0,
            "maximum": 365
        },
        "notes": {
            "type": "string",
            "maxLength": 3000
        },
        "csv_separator": {
            "type": "string",
            "enum": [
                "semicolon",
                "comma",
                "tab"
            ],
            "default": "semicolon"
        },
        "csv_bom": {
            "type": "boolean",
            "default": true
        },
        "csv_line_ending": {
            "type": "string",
            "enum": [
                "lf",
                "crlf"
            ],
            "default": "lf"
        },
        "include_json": {
            "type": "boolean",
            "default": false
        },
        "large_order_threshold": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10000000,
            "default": 0
        },
        "row_order": {
            "type": "string",
            "enum": [
                "source",
                "order_desc"
            ],
            "default": "source"
        }
    }
}

Shift planning assistant

shift_plan

Propose worker assignments with AI and check availability, required skills, overlapping shifts, supplied hour limits and remaining coverage.

Decoded input fields

workers — Workers
CSV columns: id,name,skills,max_hours. Multiple skills use |. max_hours is the maximum total planned work across this proposal, not a legal working-time limit.
availability — Availability
CSV columns: id,worker_id,start,end. Times are explicitly UTC in YYYY-MM-DDTHH:MM format. One availability interval must cover the complete shift.
shifts — Shifts
CSV columns: id,start,end,skill,needed. All times are UTC. A worker must have the exact required skill. needed is the required number of workers.
notes — Planning notes and preferences
Optional context for the AI proposal. Availability, qualifications, dependencies and numerical limits must also be entered in the structured tables; notes never override those checks.
csv_separator — CSV separator
Choose semicolon, comma or tab for the exported CSV only. Source CSV uploads still require their documented comma-separated headers.
csv_bom — UTF-8 marker in CSV
Include a UTF-8 byte-order mark for spreadsheet compatibility, or omit it for systems that require plain UTF-8.
csv_line_ending — CSV line endings
Use LF or CRLF for exported CSV records. This does not change source text or line breaks inside quoted cells.
include_json — Include JSON export
Offer an additional structured JSON report containing the complete reviewed rows, findings and summary. No action is executed by exporting it.
max_shift_hours — Shift-duration review threshold
0 disables this additional check. Otherwise, flag source shifts longer than the selected duration, up to 168 hours. Assignments and coverage warnings are retained. This is a planning preference, not a legal working-time assessment.
row_order — Review row order
Reorder complete table rows without removing findings, changing calculations or modifying assignments. Empty sort values appear last; equal values retain their original relative order.

Maximum UTF-8 bytes in the text envelope: 120000

Result and source review

The result type is ops_review. columns contains key and label_key; rows contains the corresponding scalar cell values. findings contains localisable code values and source refs; summary contains label_key and value. review_required and ai_required are true. ai_model identifies the accepted model when supplied by the worker. Some tools also return source_sha256 or note_key. Source strings remain untrusted data and must be rendered as text, never executable HTML or instructions.

Request example

{
    "tool": "shift_plan",
    "text": "{\"workers\":\"id,name,skills,max_hours\\nW1,Alex,service|repair,8\\nW2,Sam,service,8\",\"availability\":\"id,worker_id,start,end\\nA1,W1,2026-11-09T08:00,2026-11-09T16:00\\nA2,W2,2026-11-09T08:00,2026-11-09T16:00\",\"shifts\":\"id,start,end,skill,needed\\nS1,2026-11-09T08:00,2026-11-09T12:00,service,1\\nS2,2026-11-09T12:00,2026-11-09T16:00,repair,1\",\"notes\":\"Where practical, retain Alex for repair work and use Sam for the service desk.\",\"csv_separator\":\"semicolon\",\"csv_bom\":true,\"csv_line_ending\":\"lf\",\"include_json\":false,\"max_shift_hours\":0,\"row_order\":\"source\"}"
}
Decoded text object schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "workers",
        "availability",
        "shifts"
    ],
    "properties": {
        "workers": {
            "type": "string",
            "maxLength": 40000
        },
        "availability": {
            "type": "string",
            "maxLength": 40000
        },
        "shifts": {
            "type": "string",
            "maxLength": 40000
        },
        "notes": {
            "type": "string",
            "maxLength": 3000
        },
        "csv_separator": {
            "type": "string",
            "enum": [
                "semicolon",
                "comma",
                "tab"
            ],
            "default": "semicolon"
        },
        "csv_bom": {
            "type": "boolean",
            "default": true
        },
        "csv_line_ending": {
            "type": "string",
            "enum": [
                "lf",
                "crlf"
            ],
            "default": "lf"
        },
        "include_json": {
            "type": "boolean",
            "default": false
        },
        "max_shift_hours": {
            "type": "number",
            "minimum": 0,
            "maximum": 168,
            "default": 0
        },
        "row_order": {
            "type": "string",
            "enum": [
                "source",
                "begin"
            ],
            "default": "source"
        }
    }
}

Project capacity planner

project_plan

Use AI to propose task priorities and resource assignments, then calculate a dependency-aware schedule against daily capacity and flag work that remains unassigned.

Decoded input fields

tasks — Project tasks
CSV columns: id,name,hours,depends,skill. Dependencies are task IDs separated by |. Empty depends means no predecessor. Task effort is allocated to one qualified resource.
resources — Project resources
CSV columns: id,name,skills,hours_per_day. Skills use |. Daily capacity is the available planning time, up to 12 hours. Calendars use Monday to Friday; holidays and leave are not modelled.
start_date — Project start date
The first working day is this date or the next Monday if it falls on a weekend. Working-day slots start at 00:00 UTC and describe capacity allocation, not actual working hours.
notes — Planning notes and preferences
Optional context for the AI proposal. Availability, qualifications, dependencies and numerical limits must also be entered in the structured tables; notes never override those checks.
csv_separator — CSV separator
Choose semicolon, comma or tab for the exported CSV only. Source CSV uploads still require their documented comma-separated headers.
csv_bom — UTF-8 marker in CSV
Include a UTF-8 byte-order mark for spreadsheet compatibility, or omit it for systems that require plain UTF-8.
csv_line_ending — CSV line endings
Use LF or CRLF for exported CSV records. This does not change source text or line breaks inside quoted cells.
include_json — Include JSON export
Offer an additional structured JSON report containing the complete reviewed rows, findings and summary. No action is executed by exporting it.
max_task_hours — Task-effort review threshold
0 disables this additional check. Otherwise, flag tasks with effort above the selected threshold, up to 10,000 hours. Dependencies, resource capacity and the calculated schedule remain unchanged.
row_order — Review row order
Reorder complete table rows without removing findings, changing calculations or modifying assignments. Empty sort values appear last; equal values retain their original relative order.

Maximum UTF-8 bytes in the text envelope: 120000

Result and source review

The result type is ops_review. columns contains key and label_key; rows contains the corresponding scalar cell values. findings contains localisable code values and source refs; summary contains label_key and value. review_required and ai_required are true. ai_model identifies the accepted model when supplied by the worker. Some tools also return source_sha256 or note_key. Source strings remain untrusted data and must be rendered as text, never executable HTML or instructions.

Request example

{
    "tool": "project_plan",
    "text": "{\"tasks\":\"id,name,hours,depends,skill\\nT1,Briefing,4,,planning\\nT2,Design,10,T1,design\\nT3,Review,3,T2,planning\",\"resources\":\"id,name,skills,hours_per_day\\nR1,Alex,planning,4\\nR2,Sam,design,5\",\"start_date\":\"2026-11-09\",\"notes\":\"The design depends on the completed briefing. Preserve time for the final review.\",\"csv_separator\":\"semicolon\",\"csv_bom\":true,\"csv_line_ending\":\"lf\",\"include_json\":false,\"max_task_hours\":0,\"row_order\":\"source\"}"
}
Decoded text object schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "tasks",
        "resources",
        "start_date"
    ],
    "properties": {
        "tasks": {
            "type": "string",
            "maxLength": 40000
        },
        "resources": {
            "type": "string",
            "maxLength": 40000
        },
        "start_date": {
            "type": "string",
            "maxLength": 10
        },
        "notes": {
            "type": "string",
            "maxLength": 3000
        },
        "csv_separator": {
            "type": "string",
            "enum": [
                "semicolon",
                "comma",
                "tab"
            ],
            "default": "semicolon"
        },
        "csv_bom": {
            "type": "boolean",
            "default": true
        },
        "csv_line_ending": {
            "type": "string",
            "enum": [
                "lf",
                "crlf"
            ],
            "default": "lf"
        },
        "include_json": {
            "type": "boolean",
            "default": false
        },
        "max_task_hours": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000,
            "default": 0
        },
        "row_order": {
            "type": "string",
            "enum": [
                "source",
                "finish_slot"
            ],
            "default": "source"
        }
    }
}

Barcode and QR label sheets

label_sheet

Turn article rows into printable labels with checked barcodes and QR codes.

Decoded input fields

csv — Article rows (CSV)
Required columns: id, name, code, qr. Up to 24 rows. QR payloads come only from the supplied qr column.
format — Barcode format
EAN-13 requires 13 digits and a valid check digit. Code 128 supports 1–24 printable ASCII characters.
layout — Sheet layout
A4: 2 × 7 labels measuring 99.1 × 38.1 mm, or 3 × 8 labels measuring 63.5 × 33.9 mm. Print at 100% without scaling.
csv_separator — CSV separator
Choose semicolon, comma or tab for the exported CSV only. Source CSV uploads still require their documented comma-separated headers.
csv_bom — UTF-8 marker in CSV
Include a UTF-8 byte-order mark for spreadsheet compatibility, or omit it for systems that require plain UTF-8.
csv_line_ending — CSV line endings
Use LF or CRLF for exported CSV records. This does not change source text or line breaks inside quoted cells.
include_json — Include JSON export
Offer an additional structured JSON report containing the complete reviewed rows, findings and summary. No action is executed by exporting it.
max_label_characters — Printed label-name review threshold
0 disables this additional check. Otherwise, flag printed names longer than the chosen number of Unicode characters, up to 160. The same names, labels and sequence remain in the preview, PDF and SVG; nothing is truncated by this option.
require_https_qr — Flag QR content without a plain HTTPS address
Add a finding when QR content is not an HTTPS address with a host and without embedded credentials, whitespace or backslashes. The QR payload is never changed, opened or fetched. This syntax check does not establish that a destination is safe.

Maximum UTF-8 bytes in the text envelope: 24000

Result and source review

The result type is ops_review. columns contains key and label_key; rows contains the corresponding scalar cell values. findings contains localisable code values and source refs; summary contains label_key and value. review_required and ai_required are true. ai_model identifies the accepted model when supplied by the worker. Some tools also return source_sha256 or note_key. Source strings remain untrusted data and must be rendered as text, never executable HTML or instructions.

Request example

{
    "tool": "label_sheet",
    "text": "{\"csv\":\"id,name,code,qr\\nA1,Blue storage box,BOX-001,BOX-001\\nA2,Green storage box,BOX-002,BOX-002\",\"format\":\"code128\",\"layout\":\"auto\",\"csv_separator\":\"semicolon\",\"csv_bom\":true,\"csv_line_ending\":\"lf\",\"include_json\":false,\"max_label_characters\":0,\"require_https_qr\":false}"
}
Decoded text object schema
{
    "type": "object",
    "required": [
        "csv",
        "format",
        "layout"
    ],
    "additionalProperties": false,
    "properties": {
        "csv": {
            "type": "string",
            "maxLength": 18000
        },
        "format": {
            "enum": [
                "code128",
                "ean13"
            ]
        },
        "layout": {
            "enum": [
                "auto",
                "a4_2x7",
                "a4_3x8"
            ]
        },
        "csv_separator": {
            "type": "string",
            "enum": [
                "semicolon",
                "comma",
                "tab"
            ],
            "default": "semicolon"
        },
        "csv_bom": {
            "type": "boolean",
            "default": true
        },
        "csv_line_ending": {
            "type": "string",
            "enum": [
                "lf",
                "crlf"
            ],
            "default": "lf"
        },
        "include_json": {
            "type": "boolean",
            "default": false
        },
        "max_label_characters": {
            "type": "integer",
            "minimum": 0,
            "maximum": 160,
            "default": 0
        },
        "require_https_qr": {
            "type": "boolean",
            "default": false
        }
    }
}

Requirements test matrix

test_cases

Create source-linked positive and negative review cases from supplied requirements.

Decoded input fields

requirements — Requirements
Separate up to 12 requirements with blank lines. Each requirement may contain up to 1,000 UTF-8 bytes.
context — Review context
Optional scope information, up to 2,000 UTF-8 bytes. It is not an additional requirement or an instruction to execute tests.
csv_separator — CSV separator
Choose semicolon, comma or tab for the exported CSV only. Source CSV uploads still require their documented comma-separated headers.
csv_bom — UTF-8 marker in CSV
Include a UTF-8 byte-order mark for spreadsheet compatibility, or omit it for systems that require plain UTF-8.
csv_line_ending — CSV line endings
Use LF or CRLF for exported CSV records. This does not change source text or line breaks inside quoted cells.
include_json — Include JSON export
Offer an additional structured JSON report containing the complete reviewed rows, findings and summary. No action is executed by exporting it.
max_step_characters — Test-step length review threshold
0 disables this additional check. Otherwise, flag test cases containing an individual step longer than the chosen number of Unicode characters, up to 6,000. Full steps and expected results remain visible and exported.
row_order — Review row order
Reorder complete table rows without removing findings, changing calculations or modifying assignments. Empty sort values appear last; equal values retain their original relative order.

Maximum UTF-8 bytes in the text envelope: 24000

Result and source review

The result type is ops_review. columns contains key and label_key; rows contains the corresponding scalar cell values. findings contains localisable code values and source refs; summary contains label_key and value. review_required and ai_required are true. ai_model identifies the accepted model when supplied by the worker. Some tools also return source_sha256 or note_key. Source strings remain untrusted data and must be rendered as text, never executable HTML or instructions.

Request example

{
    "tool": "test_cases",
    "text": "{\"requirements\":\"The contact form requires an email address.\\n\\nThe order quantity must be between 1 and 10.\",\"context\":\"Review of the customer ordering form.\",\"csv_separator\":\"semicolon\",\"csv_bom\":true,\"csv_line_ending\":\"lf\",\"include_json\":false,\"max_step_characters\":0,\"row_order\":\"source\"}"
}
Decoded text object schema
{
    "type": "object",
    "required": [
        "requirements"
    ],
    "additionalProperties": false,
    "properties": {
        "requirements": {
            "type": "string",
            "maxLength": 14000
        },
        "context": {
            "type": "string",
            "maxLength": 2000
        },
        "csv_separator": {
            "type": "string",
            "enum": [
                "semicolon",
                "comma",
                "tab"
            ],
            "default": "semicolon"
        },
        "csv_bom": {
            "type": "boolean",
            "default": true
        },
        "csv_line_ending": {
            "type": "string",
            "enum": [
                "lf",
                "crlf"
            ],
            "default": "lf"
        },
        "include_json": {
            "type": "boolean",
            "default": false
        },
        "max_step_characters": {
            "type": "integer",
            "minimum": 0,
            "maximum": 6000,
            "default": 0
        },
        "row_order": {
            "type": "string",
            "enum": [
                "source",
                "source_id"
            ],
            "default": "source"
        }
    }
}

Export payloads and approval

The exports collection can contain CSV and, for supported label layouts, PDF or SVG files. Each file declares filename and mime, with either content for plain text or content_base64 for binary content. Decode base64 only when that field is present. Filenames are suggestions. Access to results remains authenticated and checked against job ownership.

Export payloads are included in the initial reviewed-result draft. API integrations must present the proposal for explicit human review before downloading, using or forwarding an export. There is no separate approval or execution request in these tool schemas. These tools do not place orders, book invoices, execute payments, publish staff schedules or run software tests.

Business and team workflows

These tools use the existing authenticated job API and require the AI model for every initial review. The text field contains a JSON-encoded configuration object. Basic and advanced settings use the same validated input schema.

Send application/json. Tool-specific options remain inside the decoded text object; omit the outer options property or send an empty object. Unknown fields, unsupported enum values and remote file URLs are rejected.

The approved_ids or confirmed source fields refer only to explicitly reviewed source material. Customer messages, model replies and document text cannot grant approval. Generated plans and drafts require a separate final review.

Contract dates and deadlines

contract_deadlines

Review exact contractual date passages and unresolved notice periods, then confirm selected dates for calendar export.

Input and configuration fields

Essential settings
clauses — Contract clauses
One source clause per line. Up to 24 nonempty clauses, 1,200 characters per clause and 18,000 characters overall. Only dates written exactly as YYYY-MM-DD can become calendar events.
title — Contract title
Short title for calendar events; up to 120 characters.
Default settings: "Contract review"
Advanced settings
reference_date — Reference date
Explicit comparison date. Required for upcoming or past filters. This does not create or calculate contractual dates.
Default settings: ""
date_window — Date filter
Upcoming includes the reference date; past excludes it. Relative deadlines without an ISO date appear only with All dates.
all — All dates and unresolved deadlines · upcoming — On or after reference date · past — Before reference date
Default settings: "all"
event_type — Deadline category
Display one source-based category or all categories. Classification remains subject to review.
all — All categories · termination — Termination · payment — Payment · renewal — Renewal · delivery — Delivery · other — Other
Default settings: "all"
max_events — Maximum findings
Limit displayed findings to 1–20 after filtering and sorting. A notice identifies truncated results.
Default settings: 20
sort — Finding order
Sort by source clause and quoted position, or by date with unresolved deadlines last.
source — Source order · date — Date order
Default settings: "source"
reminder_days — Calendar reminder lead time
0 disables reminders. Otherwise a display reminder is set 1–90 days before each confirmed all-day event; calendar application behaviour can vary.
Default settings: 7
include_source — Include source quotations
Show exact quotations in the review and confirmed calendar descriptions. Source IDs and character positions remain visible in both modes.
yes — Include quotations · no — Source references only
Default settings: "yes"
calendar_name — Calendar name
Name for the confirmed ICS calendar, up to 120 characters.
Default settings: "Reviewed contract dates"

Maximum UTF-8 input bytes: 24000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "contract_deadlines",
    "text": "{\"clauses\":\"The invoice is payable on 2027-03-15.\\nNotice must be received at least 30 days before renewal.\\nThe delivery date is 2027-04-02.\",\"title\":\"Service agreement\",\"reference_date\":\"2027-01-01\",\"date_window\":\"upcoming\",\"event_type\":\"all\",\"max_events\":20,\"sort\":\"date\",\"reminder_days\":7,\"include_source\":\"yes\",\"calendar_name\":\"Reviewed agreement dates\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "clauses": {
            "type": "string",
            "maxLength": 18000,
            "minLength": 1
        },
        "title": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "reference_date": {
            "type": "string",
            "maxLength": 10,
            "description": "Explicit ISO date YYYY-MM-DD, 2000 through 2100, or an empty string where optional."
        },
        "date_window": {
            "type": "string",
            "enum": [
                "all",
                "upcoming",
                "past"
            ]
        },
        "event_type": {
            "type": "string",
            "enum": [
                "all",
                "termination",
                "payment",
                "renewal",
                "delivery",
                "other"
            ]
        },
        "max_events": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20
        },
        "sort": {
            "type": "string",
            "enum": [
                "source",
                "date"
            ]
        },
        "reminder_days": {
            "type": "integer",
            "minimum": 0,
            "maximum": 90
        },
        "include_source": {
            "type": "string",
            "enum": [
                "yes",
                "no"
            ]
        },
        "calendar_name": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        }
    },
    "required": [
        "clauses"
    ]
}

Quotation calculator

quote_builder

Arrange supplied labor, service and material positions into a draft with deterministic markup, margin, discount and tax calculations.

Input and configuration fields

Essential settings
items — Quotation positions
CSV headers: label,kind,quantity,unit,cost. kind is labor, material or service. quantity uses a decimal point and up to three decimals; cost is the net unit cost with up to two decimals. Up to 30 rows. Labor quantities can represent hours.
currency — Currency
One currency for all positions; no exchange-rate conversion. All amounts use two decimal places.
EUR — EUR · USD — USD · GBP — GBP · PLN — PLN · CZK — CZK · DKK — DKK · SEK — SEK · NOK — NOK · CHF — CHF · HUF — HUF · RON — RON
Default settings: "EUR"
Advanced settings
pricing_mode — Pricing method
Markup adds a percentage to cost. Target margin divides cost by one minus the percentage; it is the pre-discount margin, not a markup.
markup — Markup on cost · margin — Target margin before discount
Default settings: "markup"
pricing_percent — Pricing percentage
0–500 for markup or 0–95 for target margin; at most two decimal places.
Default settings: 20
discount_percent — Discount percentage
Explicit discount of 0–100%, applied to each calculated selling price before tax. At most two decimal places.
Default settings: 0
tax_percent — Tax percentage
Explicit tax of 0–100% applied after discount. Zero means no added tax. This tool does not determine the applicable tax rate or tax treatment.
Default settings: 0
rounding — Rounding at each calculation step
Round line cost, selling price, discounted net amount and tax to two currency decimals using the selected rule. Totals sum the rounded lines.
nearest — Nearest cent; halves round up · up — Always round up · down — Always round down
Default settings: "nearest"
item_scope — Included position kinds
Include all source positions or only labor, material or service. Excluded positions do not contribute to any total.
all — All position kinds · labor — Labor only · material — Material only · service — Service only
Default settings: "all"
detail — Result detail
Show individual source positions or totals by position kind. Both views use the same line-level calculations.
full — Individual positions · totals — Totals by kind
Default settings: "full"
quote_reference — Quotation reference
Optional internal identifier up to 120 characters. It is displayed as supplied and creates no customer commitment.
Default settings: ""
valid_until — Draft validity date
Optional explicit ISO date displayed for review. It does not send an offer or create an agreement.
Default settings: ""

Maximum UTF-8 input bytes: 24000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "quote_builder",
    "text": "{\"items\":\"label,kind,quantity,unit,cost\\nWorkshop labor,labor,2.5,hour,40.00\\nReplacement kit,material,1,piece,30.00\",\"currency\":\"EUR\",\"pricing_mode\":\"markup\",\"pricing_percent\":20,\"discount_percent\":5,\"tax_percent\":19,\"rounding\":\"nearest\",\"item_scope\":\"all\",\"detail\":\"full\",\"quote_reference\":\"DRAFT-001\",\"valid_until\":\"2027-03-31\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "items": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 16000,
                    "minLength": 1
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 30,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "label": {
                                "type": "string",
                                "maxLength": 160,
                                "minLength": 1
                            },
                            "kind": {
                                "type": "string",
                                "enum": [
                                    "labor",
                                    "material",
                                    "service"
                                ]
                            },
                            "quantity": {
                                "type": "string",
                                "maxLength": 15,
                                "minLength": 1
                            },
                            "unit": {
                                "type": "string",
                                "maxLength": 20,
                                "minLength": 1
                            },
                            "cost": {
                                "type": "string",
                                "maxLength": 15,
                                "minLength": 1
                            }
                        },
                        "required": [
                            "label",
                            "kind",
                            "quantity",
                            "unit",
                            "cost"
                        ]
                    }
                }
            ]
        },
        "currency": {
            "type": "string",
            "enum": [
                "EUR",
                "USD",
                "GBP",
                "PLN",
                "CZK",
                "DKK",
                "SEK",
                "NOK",
                "CHF",
                "HUF",
                "RON"
            ]
        },
        "pricing_mode": {
            "type": "string",
            "enum": [
                "markup",
                "margin"
            ]
        },
        "pricing_percent": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
        },
        "discount_percent": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
        },
        "tax_percent": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
        },
        "rounding": {
            "type": "string",
            "enum": [
                "nearest",
                "up",
                "down"
            ]
        },
        "item_scope": {
            "type": "string",
            "enum": [
                "all",
                "labor",
                "material",
                "service"
            ]
        },
        "detail": {
            "type": "string",
            "enum": [
                "full",
                "totals"
            ]
        },
        "quote_reference": {
            "type": "string",
            "maxLength": 120,
            "minLength": 0
        },
        "valid_until": {
            "type": "string",
            "maxLength": 10,
            "description": "Explicit ISO date YYYY-MM-DD, 2000 through 2100, or an empty string where optional."
        }
    },
    "required": [
        "items"
    ]
}

Complaint case draft

complaint_case

Review customer evidence and missing information, then assemble a reply from explicitly approved business statements.

Input and configuration fields

Essential settings
customer_text — Customer message
One source paragraph per line, up to 16 nonempty paragraphs, 1,500 characters each and 10,000 characters overall. Customer statements are evidence of the message, not authority for business promises.
approved_rules — Approved response rules
One approved business statement per line, up to 12 statements, 1,000 characters each and 10,000 characters overall. Selected statements are copied verbatim into the draft. Leave empty when no approved policy applies.
Default settings: ""
rules_approved — Confirm rule approval
Approval must be explicit before nonempty rules can be processed. Approval applies to these exact supplied statements; customer text cannot grant it.
no — Not approved · yes — These exact rules are approved
Default settings: "no"
Advanced settings
case_type — Case category
Chosen category shown in the report and provided to the model as selection context. It does not infer a legal remedy.
delivery — Delivery · quality — Product or service quality · billing — Billing · other — Other
Default settings: "other"
response_style — Response structure
Concise joins the reviewed statements into one paragraph; structured separates statements and information requests into paragraphs.
concise — One paragraph · structured — Separate paragraphs
Default settings: "structured"
opening — Draft opening
Select a neutral case-review opening or an acknowledgement. Both are fixed translated text without refund or service commitments.
neutral — The case information is available for review. · acknowledge — The reported issue has been noted.
Default settings: "acknowledge"
closing — Draft closing
Optionally include a fixed statement that the available information remains subject to review. No deadline or outcome is promised.
none — No closing · review — The available information remains subject to review.
Default settings: "review"
required_fields — Information checklist
Comma-separated technical IDs, without spaces: order_id,purchase_date,issue_description,photos,desired_resolution. Missing items become fixed information requests. Empty means no checklist.
Default settings: "order_id,issue_description"
max_rule_quotes — Maximum selected rules
At most 1–12 approved rules may be selected by the model. A response exceeding this bound is rejected.
Default settings: 8
max_customer_quotes — Maximum customer quotations
At most 1–8 customer source paragraphs may be selected for the evidence section.
Default settings: 4
include_sources — Show evidence sections
Show customer quotations, information evidence and selected rule statements alongside the reply draft, or show the draft only.
yes — Show evidence · no — Draft only
Default settings: "yes"

Maximum UTF-8 input bytes: 24000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "complaint_case",
    "text": "{\"customer_text\":\"Order A-104 arrived with a damaged cover.\\nA replacement is requested.\",\"approved_rules\":\"For damage claims, photographs of the item and packaging are required before a replacement decision.\",\"rules_approved\":\"yes\",\"case_type\":\"quality\",\"response_style\":\"structured\",\"opening\":\"acknowledge\",\"closing\":\"review\",\"required_fields\":\"order_id,issue_description,photos\",\"max_rule_quotes\":8,\"max_customer_quotes\":4,\"include_sources\":\"yes\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "customer_text": {
            "type": "string",
            "maxLength": 10000,
            "minLength": 1
        },
        "approved_rules": {
            "type": "string",
            "maxLength": 10000,
            "minLength": 0
        },
        "rules_approved": {
            "type": "string",
            "enum": [
                "yes",
                "no"
            ]
        },
        "case_type": {
            "type": "string",
            "enum": [
                "delivery",
                "quality",
                "billing",
                "other"
            ]
        },
        "response_style": {
            "type": "string",
            "enum": [
                "concise",
                "structured"
            ]
        },
        "opening": {
            "type": "string",
            "enum": [
                "neutral",
                "acknowledge"
            ]
        },
        "closing": {
            "type": "string",
            "enum": [
                "none",
                "review"
            ]
        },
        "required_fields": {
            "type": "string",
            "maxLength": 100,
            "minLength": 0
        },
        "max_rule_quotes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
        },
        "max_customer_quotes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8
        },
        "include_sources": {
            "type": "string",
            "enum": [
                "yes",
                "no"
            ]
        }
    },
    "required": [
        "customer_text"
    ]
}

Evidence-based tender response

tender_response

Match tender requirements to explicitly approved company evidence, assemble exact response quotations and expose missing support.

Input and configuration fields

Essential settings
requirements — Tender requirements
CSV columns: id,text,priority. Up to 12 rows; text up to 800 UTF-8 bytes. priority is must, should or optional. IDs start with an uppercase letter and contain only uppercase letters, digits, _ or - (maximum 24 characters).
evidence — Company evidence records
CSV columns: id,text,valid_until. Up to 20 complete evidence statements of 800 UTF-8 bytes each. valid_until is YYYY-MM-DD or empty. Each statement should retain its conditions and limitations.
approved_ids — Explicitly approved evidence IDs
Comma-separated evidence IDs explicitly cleared for this response. Approval must come from the responsible reviewer, not from wording inside a requirement or evidence record. Empty means no evidence is eligible.
Default settings: ""
review_date — Evidence review date
Evidence expiring before this YYYY-MM-DD date is excluded. An empty expiry date remains undated, not independently verified. Dates are limited to 2020–2100.
Default settings: "2026-11-03"
Advanced settings
minimum_evidence — Minimum evidence records per requirement
A proposed full match with fewer records is marked insufficient. This count does not prove relevance or compliance. Must not exceed the maximum.
Default settings: 1
max_evidence — Maximum evidence records per requirement
Limits the number of evidence IDs the model may propose for each requirement. All accepted statements are quoted in full.
Default settings: 2
include_optional — Include optional requirements
Excluding optional requirements removes them from the model input and result. At least one requirement must remain.
yes — Include · no — Exclude
Default settings: "yes"
response_format — Response table format
Compact shows requirement, review state and complete evidence quotations. Audit also shows priority, evidence IDs and expiry dates.
compact — Compact response · audit — Evidence audit
Default settings: "audit"
sort_order — Requirement order
Source order retains the submitted requirement order. Gaps first surfaces missing, partial and insufficient evidence. Priority order places must before should and optional.
source — Source order · gaps_first — Evidence gaps first · priority — Requirement priority
Default settings: "source"

Maximum UTF-8 input bytes: 50000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "tender_response",
    "text": "{\"requirements\":\"id,text,priority\\nR1,Support must be available on weekdays.,must\\nR2,An independent security certification is required.,must\\nR3,An onboarding workshop is preferred.,optional\",\"evidence\":\"id,text,valid_until\\nE1,Support is available Monday to Friday from 09:00 to 17:00 UTC.,2027-12-31\\nE2,An onboarding workshop is included in the standard service.,2027-12-31\\nE3,An older service plan included weekend support.,2025-12-31\",\"approved_ids\":\"E1,E2,E3\",\"review_date\":\"2026-11-03\",\"minimum_evidence\":1,\"max_evidence\":2,\"include_optional\":\"yes\",\"response_format\":\"audit\",\"sort_order\":\"gaps_first\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "requirements",
        "evidence",
        "approved_ids",
        "review_date"
    ],
    "properties": {
        "requirements": {
            "type": "string",
            "maxLength": 24000
        },
        "evidence": {
            "type": "string",
            "maxLength": 24000
        },
        "approved_ids": {
            "type": "string",
            "maxLength": 500,
            "default": ""
        },
        "review_date": {
            "type": "string",
            "maxLength": 10,
            "default": "2026-11-03"
        },
        "minimum_evidence": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3,
            "default": 1
        },
        "max_evidence": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3,
            "default": 2
        },
        "include_optional": {
            "type": "string",
            "enum": [
                "yes",
                "no"
            ],
            "default": "yes"
        },
        "response_format": {
            "type": "string",
            "enum": [
                "compact",
                "audit"
            ],
            "default": "audit"
        },
        "sort_order": {
            "type": "string",
            "enum": [
                "source",
                "gaps_first",
                "priority"
            ],
            "default": "source"
        }
    }
}

Product document consistency

product_consistency

Compare source-linked product values across datasheets, manuals, packaging and product text with explicit unit rules and tolerances.

Input and configuration fields

Essential settings
documents — Product documents
CSV columns: id,kind,text. Supply 2–4 documents, each up to 2,400 UTF-8 bytes. kind is datasheet, manual, packaging or product. IDs follow the uppercase source-ID rules. CSV quoting is required for commas and line breaks inside text.
features — Features to compare
CSV columns: id,label,type,unit. Up to 6 features. label (up to 80 UTF-8 bytes) must occur literally in each extracted quotation, ignoring case. type is number or text. Text features require an empty unit; numeric unit is the comparison unit. Supported evidence uses explicit attribute statements such as Weight: 2 kg or Colour=Blue; free-form statements without this structure remain missing. Text qualifiers must be retained; qualified numeric statements are not treated as bare numbers.
reference_id — Reference document ID
An existing document ID used as the baseline for every comparison. Missing or ambiguous reference values leave the corresponding comparison unresolved.
Default settings: "D1"
Advanced settings
unit_policy — Unit comparison
Exact requires the feature unit unchanged. Metric permits only mg/g/kg, mm/cm/m, ml/L, W/kW and mV/V conversions within the same family. Units are case-sensitive; all other mismatches remain conflicts.
exact — Exact units only · metric — Allow listed metric conversions
Default settings: "exact"
absolute_tolerance — Absolute numeric tolerance
Maximum absolute difference in the feature comparison unit. Applied only to compatible numeric values; 0 requires equality unless relative tolerance allows a difference.
Default settings: 0
relative_tolerance_pct — Relative tolerance (%)
The allowed difference is the larger of the absolute tolerance and abs(reference value) × percentage / 100. A zero reference gives zero relative allowance.
Default settings: 0
case_sensitive — Text case comparison
Controls case sensitivity for text values only. It never changes unit case or source quotations.
no — Ignore case · yes — Case-sensitive
Default settings: "no"
whitespace_policy — Text whitespace comparison
Exact compares text values as extracted. Collapse trims edges and treats consecutive whitespace as one space. Source quotations remain unchanged.
exact — Preserve whitespace · collapse — Normalise whitespace
Default settings: "collapse"
missing_policy — Missing-value treatment
Missing or ambiguous values remain visible either as an open evidence gap or as a blocking conflict. This never invents a replacement value.
warn — Flag an evidence gap · conflict — Treat as a conflict
Default settings: "warn"
result_filter — Rows shown
All shows every comparison against the reference. Issues shows only differences, unit conflicts and missing values; summaries still count every comparison.
all — All comparisons · issues — Issues only
Default settings: "all"
sort_order — Result order
Feature order follows the feature table. Document order groups by document ID. Issues first brings nonmatching comparisons to the top.
feature — Feature order · document — Document order · issues_first — Issues first
Default settings: "feature"
decimal_separator — Source decimal separator
Numeric values must use the selected separator consistently, with up to six decimal places and no thousands separators. Magnitude is limited to 100,000,000. The model must copy numbers exactly.
dot — Decimal point · comma — Decimal comma
Default settings: "dot"

Maximum UTF-8 input bytes: 50000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "product_consistency",
    "text": "{\"documents\":\"id,kind,text\\nD1,datasheet,Weight: 2 kg. Colour: Blue.\\nD2,packaging,Weight: 2000 g. Colour: blue.\\nD3,manual,Weight: 2.2 kg. Colour: Red.\",\"features\":\"id,label,type,unit\\nF1,Weight,number,kg\\nF2,Colour,text,\",\"reference_id\":\"D1\",\"unit_policy\":\"metric\",\"absolute_tolerance\":0.05,\"relative_tolerance_pct\":1,\"case_sensitive\":\"no\",\"whitespace_policy\":\"collapse\",\"missing_policy\":\"warn\",\"result_filter\":\"all\",\"sort_order\":\"issues_first\",\"decimal_separator\":\"dot\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "documents",
        "features",
        "reference_id"
    ],
    "properties": {
        "documents": {
            "type": "string",
            "maxLength": 24000
        },
        "features": {
            "type": "string",
            "maxLength": 24000
        },
        "reference_id": {
            "type": "string",
            "maxLength": 24,
            "default": "D1"
        },
        "unit_policy": {
            "type": "string",
            "enum": [
                "exact",
                "metric"
            ],
            "default": "exact"
        },
        "absolute_tolerance": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "default": 0
        },
        "relative_tolerance_pct": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "default": 0
        },
        "case_sensitive": {
            "type": "string",
            "enum": [
                "no",
                "yes"
            ],
            "default": "no"
        },
        "whitespace_policy": {
            "type": "string",
            "enum": [
                "exact",
                "collapse"
            ],
            "default": "collapse"
        },
        "missing_policy": {
            "type": "string",
            "enum": [
                "warn",
                "conflict"
            ],
            "default": "warn"
        },
        "result_filter": {
            "type": "string",
            "enum": [
                "all",
                "issues"
            ],
            "default": "all"
        },
        "sort_order": {
            "type": "string",
            "enum": [
                "feature",
                "document",
                "issues_first"
            ],
            "default": "feature"
        },
        "decimal_separator": {
            "type": "string",
            "enum": [
                "dot",
                "comma"
            ],
            "default": "dot"
        }
    }
}

Source-backed onboarding plans

onboarding_plan

Turn confirmed internal material into a reviewable onboarding schedule with dates, responsibilities, learning goals and bounded daily workload.

Input and configuration fields

Essential settings
role — Role
Professional role for the onboarding plan; maximum 200 UTF-8 bytes.
Default settings: ""
start_date — Start date
First calendar day of the planning horizon. Dates are computed in UTC; public holidays and absences are not inferred.
Default settings: "2026-11-09"
documents — Confirmed internal source documents
CSV with exact headers id,text; 1–12 unique source IDs and source texts of at most 1,000 UTF-8 bytes each. Supply existing tasks and process descriptions, not instructions for the AI. No URLs or markup.
Default settings: ""
confirmed — Sources confirmed for planning
Explicit confirmation that the supplied internal material is appropriate for this planning draft. This does not grant access or approve any real-world action.
Default settings: false
Advanced settings
horizon — Planning horizon
Calendar horizon from the start date. Only the selected working days are available for scheduling.
7_days — 7 days · 14_days — 14 days · 30_days — 30 days · 4_weeks — 4 weeks · 8_weeks — 8 weeks
Default settings: "14_days"
workdays — Working days
Restrict available dates to the selected weekday pattern. Local holidays and leave are not automatically excluded.
mon_fri — Monday–Friday · mon_sat — Monday–Saturday · all_days — All days
Default settings: "mon_fri"
work_mode — Working mode
Guide the source-backed task selection and display the chosen mode for each task. No meeting, account or access right is created.
onsite — On site · remote — Remote · hybrid — Hybrid
Default settings: "hybrid"
owners — Responsible roles
One role per paragraph, separated by a blank line; 1–8 roles, at most 160 UTF-8 bytes each. The AI can assign only these roles.
Default settings: ""
learning_goals — Learning goals
One goal per paragraph, separated by a blank line; 1–8 goals, at most 600 UTF-8 bytes each. Every proposed task is mapped to one supplied goal.
Default settings: ""
task_count — Number of tasks
Exactly this many distinct source-backed tasks are requested. The documents must contain enough suitable task excerpts.
Default settings: 4
minutes_per_day — Daily onboarding budget
Maximum sum of planned task minutes on each working day. Each task requires at least 5 minutes.
Default settings: 120
follow_up — Follow-up mode
Add no checkpoint, the next available working day, or the final working day of the horizon. A checkpoint at the horizon boundary remains on the final available date.
none — None · next_workday — Next working day · final_day — Final working day
Default settings: "next_workday"

Maximum UTF-8 input bytes: 24000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "onboarding_plan",
    "text": "{\"role\":\"Customer support specialist\",\"start_date\":\"2026-11-09\",\"documents\":\"id,text\\nS1,Read the support handbook and review the escalation workflow.\\nS2,Practice writing replies in the training workspace and review the sample cases.\",\"confirmed\":true,\"horizon\":\"14_days\",\"workdays\":\"mon_fri\",\"work_mode\":\"hybrid\",\"owners\":\"Team lead\\n\\nTraining coordinator\",\"learning_goals\":\"Understand the escalation workflow.\\n\\nPrepare clear support replies.\",\"task_count\":4,\"minutes_per_day\":120,\"follow_up\":\"next_workday\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "role",
        "start_date",
        "documents",
        "confirmed",
        "horizon",
        "workdays",
        "work_mode",
        "owners",
        "learning_goals",
        "task_count",
        "minutes_per_day",
        "follow_up"
    ],
    "properties": {
        "role": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "start_date": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1
        },
        "documents": {
            "type": "string",
            "maxLength": 14000,
            "minLength": 1
        },
        "confirmed": {
            "type": "boolean"
        },
        "horizon": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "7_days",
                "14_days",
                "30_days",
                "4_weeks",
                "8_weeks"
            ]
        },
        "workdays": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "mon_fri",
                "mon_sat",
                "all_days"
            ]
        },
        "work_mode": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "onsite",
                "remote",
                "hybrid"
            ]
        },
        "owners": {
            "type": "string",
            "maxLength": 1500,
            "minLength": 1
        },
        "learning_goals": {
            "type": "string",
            "maxLength": 3000,
            "minLength": 1
        },
        "task_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
        },
        "minutes_per_day": {
            "type": "integer",
            "minimum": 15,
            "maximum": 480
        },
        "follow_up": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "none",
                "next_workday",
                "final_day"
            ]
        }
    }
}

Structured professional interview guides

interview_guide

Create consistent job-related questions, time allocations and evidence anchors from a role description and professional requirements, without applicant scoring.

Input and configuration fields

Essential settings
role_description — Role description
Professional role and responsibilities only, up to 3,000 UTF-8 bytes. Do not include applicant profiles, personal data or protected characteristics.
Default settings: ""
requirements — Professional requirements
One job-related requirement per paragraph, separated by a blank line; 1–12 requirements, at most 1,000 UTF-8 bytes each. No URLs, markup or private applicant information.
Default settings: ""
duration — Interview duration in minutes
Total session duration, including the reserved buffer. At least 2 minutes per question must remain after the buffer.
Default settings: 45
Advanced settings
level — Experience level
Adjust the standardized question depth: foundations, practical end-to-end work, or complex trade-offs. This describes the role, not an assessment of a person.
entry — Entry level · experienced — Experienced · senior — Senior
Default settings: "experienced"
interview_type — Interview format
Add a consistent structured, technical or proposed case-study framing to every question.
structured — Structured interview · technical — Technical interview · case_study — Case study
Default settings: "structured"
focus — Professional focus
Emphasize observable competencies, problem solving, or communication about the work.
competencies — Professional competencies · problem_solving — Problem solving · communication — Professional communication
Default settings: "competencies"
question_types — Question strategies
Use one strategy or a mixture of at least two. Questions are built from exact professional requirement excerpts.
mixed — Mixed strategies · knowledge — Knowledge · scenario — Proposed scenario · experience — Professional experience
Default settings: "mixed"
question_count — Number of questions
Exactly this many distinct requirement-and-strategy combinations are requested. At least 2 minutes per question must remain.
Default settings: 6
rubric — Assessment anchors
Include no scale, three evidence levels, or five evidence levels. The tool supplies anchors only and never assigns a score to an applicant.
none — None · three_level — Three evidence levels · five_level — Five evidence levels
Default settings: "three_level"
followups — Follow-up question
Optionally include one standardized prompt for evidence, alternatives and verification. Its discussion time is included in each question allocation.
none — None · one — One follow-up
Default settings: "one"
time_buffer — Reserved session buffer
Minutes reserved for introduction, transitions and closing; deducted before question time is evenly allocated.
Default settings: 5

Maximum UTF-8 input bytes: 24000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "interview_guide",
    "text": "{\"role_description\":\"Software support engineer responsible for diagnosing product issues and documenting reproducible cases.\",\"requirements\":\"Explain a reproducible debugging process.\\n\\nCommunicate technical findings clearly to the delivery team.\",\"duration\":45,\"level\":\"experienced\",\"interview_type\":\"structured\",\"focus\":\"problem_solving\",\"question_types\":\"mixed\",\"question_count\":4,\"rubric\":\"three_level\",\"followups\":\"one\",\"time_buffer\":5}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "role_description",
        "requirements",
        "duration",
        "level",
        "interview_type",
        "focus",
        "question_types",
        "question_count",
        "rubric",
        "followups",
        "time_buffer"
    ],
    "properties": {
        "role_description": {
            "type": "string",
            "maxLength": 3000,
            "minLength": 1
        },
        "requirements": {
            "type": "string",
            "maxLength": 12000,
            "minLength": 1
        },
        "duration": {
            "type": "integer",
            "minimum": 15,
            "maximum": 120
        },
        "level": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "entry",
                "experienced",
                "senior"
            ]
        },
        "interview_type": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "structured",
                "technical",
                "case_study"
            ]
        },
        "focus": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "competencies",
                "problem_solving",
                "communication"
            ]
        },
        "question_types": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "mixed",
                "knowledge",
                "scenario",
                "experience"
            ]
        },
        "question_count": {
            "type": "integer",
            "minimum": 2,
            "maximum": 12
        },
        "rubric": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "none",
                "three_level",
                "five_level"
            ]
        },
        "followups": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "none",
                "one"
            ]
        },
        "time_buffer": {
            "type": "integer",
            "minimum": 0,
            "maximum": 20
        }
    }
}

Traceable project handovers

project_handover

Prepare a concise handover from identified project sources, with explicit status, responsibilities, filters and visible unknowns.

Input and configuration fields

Essential settings
project — Project name
Name of the project or workstream, up to 200 UTF-8 bytes.
Default settings: ""
sources — Project source snapshot
CSV with exact headers id,category,status,role,text. Use 1–12 rows, unique IDs and source texts up to 1,000 UTF-8 bytes. Categories: risk, decision, open, deliverable. Statuses: open, in_progress, done, unknown. Use a role label rather than private personal data. No URLs or markup.
Default settings: ""
cutoff_date — Snapshot cutoff date
Date assigned to the supplied snapshot. This is a user-provided reference date, not an independently verified source timestamp.
Default settings: "2026-11-09"
Advanced settings
audience — Handover audience
Guide which source-backed points are selected when more sources match than the item limit.
successor — Successor · team — Delivery team · management — Management
Default settings: "successor"
category_filter — Category filter
Include all categories or only the selected source category.
all — All · risk — Risk · decision — Decision · open — Open · deliverable — Deliverable
Default settings: "all"
status_filter — Status filter
Filter the explicitly supplied status. Status is never inferred from a model paraphrase.
all — All · open — Open · in_progress — In progress · done — Completed in source · unknown — Unknown
Default settings: "all"
role_filter — Responsible role filter
Optional exact role label from the CSV; an empty value includes all roles. The filter is case-sensitive.
Default settings: ""
detail — Excerpt detail
Maximum source excerpt length per item: brief 180, standard 400, detailed 800 UTF-8 bytes. The original wording and language are retained.
brief — Brief · standard — Standard · detailed — Detailed
Default settings: "standard"
max_items — Maximum handover items
Select at most this many matching sources, one excerpt per source. Fewer matching sources produce fewer items.
Default settings: 8
include_unknowns — Include unknown status
Keep or exclude sources explicitly marked unknown. Missing facts are never filled with invented answers.
yes — Include · no — Exclude
Default settings: "yes"
sort_order — Display order
Sort the selected handover points by original source order, localized category or localized status.
source — Source order · category — Category · status — Status
Default settings: "source"

Maximum UTF-8 input bytes: 24000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "project_handover",
    "text": "{\"project\":\"Customer portal release\",\"sources\":\"id,category,status,role,text\\nS1,decision,done,Delivery lead,The release scope contains the account page and notification settings.\\nS2,risk,open,QA lead,The mobile regression review is still pending.\\nS3,open,unknown,Operations,The deployment window has not been confirmed.\",\"cutoff_date\":\"2026-11-09\",\"audience\":\"successor\",\"category_filter\":\"all\",\"status_filter\":\"all\",\"role_filter\":\"\",\"detail\":\"standard\",\"max_items\":8,\"include_unknowns\":\"yes\",\"sort_order\":\"source\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "project",
        "sources",
        "cutoff_date",
        "audience",
        "category_filter",
        "status_filter",
        "role_filter",
        "detail",
        "max_items",
        "include_unknowns",
        "sort_order"
    ],
    "properties": {
        "project": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "sources": {
            "type": "string",
            "maxLength": 18000,
            "minLength": 1
        },
        "cutoff_date": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1
        },
        "audience": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "successor",
                "team",
                "management"
            ]
        },
        "category_filter": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "all",
                "risk",
                "decision",
                "open",
                "deliverable"
            ]
        },
        "status_filter": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "all",
                "open",
                "in_progress",
                "done",
                "unknown"
            ]
        },
        "role_filter": {
            "type": "string",
            "maxLength": 160,
            "minLength": 0
        },
        "detail": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "brief",
                "standard",
                "detailed"
            ]
        },
        "max_items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
        },
        "include_unknowns": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "yes",
                "no"
            ]
        },
        "sort_order": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "enum": [
                "source",
                "category",
                "status"
            ]
        }
    }
}

Cash-flow forecast and scenarios

cashflow_forecast

Compare a source-backed base cash-flow forecast with explicit timing and amount scenarios, daily balances and reserve-buffer warnings.

Input and configuration fields

Essential settings
transactions — Cash movements
CSV headers: id,date,direction,amount,description,certainty. Up to 40 unique source IDs. direction is in or out; certainty is confirmed or expected. Dates use YYYY-MM-DD; positive amounts use a decimal point and at most two decimals, up to 10000000.00. Descriptions are limited to 600 UTF-8 bytes. No URL is fetched.
start_date — Forecast start date
Opening balance is the balance immediately before this day. Earlier source movements remain visible but are not included in the base forecast. Dates are UTC calendar dates, without weekend or holiday adjustments.
opening_balance — Opening balance
Signed decimal amount from -10000000.00 to 10000000.00, at most two decimals. Supply an explicit known balance; the tool does not connect to a bank.
Default settings: "0.00"
currency — Currency
One currency for all source rows, balances, buffers and limits. All amounts use two decimals; no exchange-rate conversion is performed.
EUR — EUR · USD — USD · GBP — GBP · PLN — PLN · CZK — CZK · DKK — DKK · SEK — SEK · NOK — NOK · CHF — CHF · HUF — HUF · RON — RON
Default settings: "EUR"
Advanced settings
horizon_days — Forecast horizon in days
Include 1–90 calendar days from the start date. Movements outside either horizon remain visible and receive a finding; they do not enter that forecast balance.
Default settings: 30
reserve_buffer — Reserve buffer
Nonnegative decimal balance threshold up to 10000000.00. A finding identifies scenario balances below this level; this is a planning preference, not an overdraft facility.
Default settings: "0.00"
inflow_delay_days — Scenario inflow delay
Shift inflows dated on or after the forecast start forward by 0–90 calendar days in the scenario only. Earlier source movements stay excluded from both forecasts because the opening balance already establishes the starting position. A delayed item may leave the horizon; its base date remains visible.
Default settings: 0
outflow_delay_days — Scenario outflow delay
Shift outflows dated on or after the forecast start forward by 0–90 calendar days in the scenario only. Earlier source movements stay excluded from both forecasts. This is an assumption, not permission to postpone a payment. Source dates remain visible.
Default settings: 0
inflow_percent — Scenario inflow percentage
Apply an integer percentage from 0 to 200 to every inflow in the scenario. Amounts round to the nearest cent, with halves upward; base amounts remain unchanged.
Default settings: 100
outflow_percent — Scenario outflow percentage
Apply an integer percentage from 0 to 200 to every outflow in the scenario. Amounts round to the nearest cent, with halves upward; base amounts remain unchanged.
Default settings: 100
expected_inflow_percent — Expected inflow percentage
For source inflows marked expected, apply this 0–100 integer percentage after the general inflow percentage, rounding again to cents. Confirmed inflows and all outflows are unaffected by this second factor.
Default settings: 100
chart_interval — Chart interval
Daily shows every day-end balance. Weekly shows each seventh day and the final day. Minimum balances and buffer findings are still calculated for every day, including omitted chart days.
daily — Daily · weekly — Weekly
Default settings: "daily"
sort_order — Review row order
Reorder complete source rows only. Monetary checks, source data, forecasts and all findings remain unchanged.
source — Source order · date — Date order · category — Proposed category
Default settings: "date"

Maximum UTF-8 input bytes: 40000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "cashflow_forecast",
    "text": "{\"transactions\":\"id,date,direction,amount,description,certainty\\nT1,2027-03-02,in,1200.00,Customer invoice for completed design work,expected\\nT2,2027-03-03,out,900.00,Monthly office rent,confirmed\\nT3,2027-03-08,out,450.00,Staff payroll,confirmed\",\"start_date\":\"2027-03-01\",\"opening_balance\":\"500.00\",\"currency\":\"EUR\",\"horizon_days\":14,\"reserve_buffer\":\"200.00\",\"inflow_delay_days\":4,\"outflow_delay_days\":0,\"inflow_percent\":100,\"outflow_percent\":100,\"expected_inflow_percent\":80,\"chart_interval\":\"daily\",\"sort_order\":\"date\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "transactions",
        "start_date"
    ],
    "properties": {
        "transactions": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 24000,
                    "description": "UTF-8 CSV with exact comma-separated headers id,date,direction,amount,description,certainty. Quote commas/newlines inside cells; maximum 40 data rows."
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 40,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "id",
                            "date",
                            "direction",
                            "amount",
                            "description",
                            "certainty"
                        ],
                        "properties": {
                            "id": {
                                "type": "string",
                                "pattern": "^[A-Z][A-Z0-9_-]{0,23}$",
                                "maxLength": 24
                            },
                            "date": {
                                "type": "string",
                                "pattern": "^(20[0-9]{2}|2100)-[0-9]{2}-[0-9]{2}$",
                                "maxLength": 10,
                                "description": "Valid calendar date YYYY-MM-DD, 2000 through 2100."
                            },
                            "direction": {
                                "type": "string",
                                "enum": [
                                    "in",
                                    "out"
                                ]
                            },
                            "amount": {
                                "type": "string",
                                "pattern": "^(0|[1-9][0-9]{0,7})(\\.[0-9]{1,2})?$",
                                "maxLength": 11,
                                "description": "Plain decimal amount, maximum 10000000.00. No exponent or thousands separator."
                            },
                            "description": {
                                "type": "string",
                                "maxLength": 600
                            },
                            "certainty": {
                                "type": "string",
                                "enum": [
                                    "confirmed",
                                    "expected"
                                ]
                            }
                        }
                    }
                }
            ]
        },
        "start_date": {
            "type": "string",
            "pattern": "^(20[0-9]{2}|2100)-[0-9]{2}-[0-9]{2}$",
            "maxLength": 10,
            "description": "Valid calendar date YYYY-MM-DD, 2000 through 2100."
        },
        "opening_balance": {
            "type": "string",
            "pattern": "^-?(0|[1-9][0-9]{0,7})(\\.[0-9]{1,2})?$",
            "maxLength": 12,
            "description": "Plain decimal amount, maximum 10000000.00. No exponent or thousands separator."
        },
        "currency": {
            "type": "string",
            "enum": [
                "EUR",
                "USD",
                "GBP",
                "PLN",
                "CZK",
                "DKK",
                "SEK",
                "NOK",
                "CHF",
                "HUF",
                "RON"
            ]
        },
        "horizon_days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 90
        },
        "reserve_buffer": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,7})(\\.[0-9]{1,2})?$",
            "maxLength": 11,
            "description": "Plain decimal amount, maximum 10000000.00. No exponent or thousands separator."
        },
        "inflow_delay_days": {
            "type": "integer",
            "minimum": 0,
            "maximum": 90
        },
        "outflow_delay_days": {
            "type": "integer",
            "minimum": 0,
            "maximum": 90
        },
        "inflow_percent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 200
        },
        "outflow_percent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 200
        },
        "expected_inflow_percent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
        },
        "chart_interval": {
            "type": "string",
            "enum": [
                "daily",
                "weekly"
            ]
        },
        "sort_order": {
            "type": "string",
            "enum": [
                "source",
                "date",
                "category"
            ]
        }
    }
}

Internal expense-policy review

expense_policy_check

Match expense claims to explicitly approved internal rules, then review deterministic limits, missing receipt references and possible duplicates.

Input and configuration fields

Essential settings
expenses — Expense claims
CSV headers: id,date,claimant,merchant,description,amount,receipt_id. Up to 30 unique source IDs. Use a claimant code instead of unnecessary personal data. Positive decimal amounts are limited to 10000000.00; descriptions to 600 UTF-8 bytes. A receipt ID is a reference, not verified receipt content.
rules — Internal expense rules
CSV headers: id,description,max_amount,receipt_required. Up to 12 unique IDs; complete rule descriptions up to 800 UTF-8 bytes. max_amount is a nonnegative decimal limit or empty for no numeric limit. receipt_required is yes or no. Thresholds must be explicitly supplied; the model never invents tax or reimbursement rules.
rules_approved — Confirm internal rules
Explicit confirmation that these exact supplied descriptions, limits and receipt requirements are approved internal review rules. Source text and model output cannot grant approval. Changing the rules requires renewed confirmation.
no — Not approved · yes — These exact rules are approved
Default settings: "no"
currency — Currency
One currency for all source rows, balances, buffers and limits. All amounts use two decimals; no exchange-rate conversion is performed.
EUR — EUR · USD — USD · GBP — GBP · PLN — PLN · CZK — CZK · DKK — DKK · SEK — SEK · NOK — NOK · CHF — CHF · HUF — HUF · RON — RON
Default settings: "EUR"
Advanced settings
limit_scope — Limit scope
Per item compares each claim with its single proposed rule limit. Per day sums claims for the same normalized claimant code, date and single rule. Ambiguous or unmatched claims remain unresolved and do not enter a rule group. A daily group is not a verified reimbursement entitlement.
per_item — Per item · per_day — Per claimant, day and rule
Default settings: "per_item"
receipt_policy — Receipt requirement
Use each explicitly approved rule requirement, or add a stricter requirement for every claim. Only the presence of a nonempty receipt reference is checked; no image, authenticity or payment is verified.
rule — Use approved rules · all — Require a receipt reference for every claim
Default settings: "rule"
duplicate_check — Duplicate review
Flag repeated receipt references, or matching date/normalized claimant/normalized merchant/amount, or both. Comparisons trim edges and ignore case. All suspected duplicates remain in totals; no claim is silently removed.
both — Both checks · receipt — Receipt references · fingerprint — Date, claimant, merchant and amount
Default settings: "both"
date_from — Review from date
Optional inclusive YYYY-MM-DD lower date bound. Outside claims are flagged but retained in the table, totals and daily groups. Empty means no lower bound.
Default settings: ""
date_to — Review through date
Optional inclusive YYYY-MM-DD upper date bound. Outside claims are flagged but retained in the table, totals and daily groups. Empty means no upper bound.
Default settings: ""
sort_order — Review row order
Reorder complete source rows only. Monetary checks, source data, forecasts and all findings remain unchanged.
source — Source order · date — Date order · issues_first — Findings first
Default settings: "source"
include_evidence — Show evidence columns
Include the exact selected expense quotation and complete proposed rule statements, or omit these two display columns. Source IDs, rule IDs, findings and monetary checks remain visible.
yes — Include quotations · no — Source references only
Default settings: "yes"

Maximum UTF-8 input bytes: 40000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "expense_policy_check",
    "text": "{\"expenses\":\"id,date,claimant,merchant,description,amount,receipt_id\\nE1,2027-03-02,TEAM-A,City Hotel,Overnight hotel stay for a client visit,140.00,REC-101\\nE2,2027-03-02,TEAM-A,Rail Company,Train journey for the client visit,35.00,\\nE3,2027-03-02,TEAM-A,City Hotel,Overnight hotel stay for a client visit,140.00,REC-101\",\"rules\":\"id,description,max_amount,receipt_required\\nR1,Hotel accommodation for business trips is reviewed against the supplied limit.,120.00,yes\\nR2,Rail travel for business trips requires a receipt reference.,80.00,yes\",\"rules_approved\":\"yes\",\"currency\":\"EUR\",\"limit_scope\":\"per_item\",\"receipt_policy\":\"rule\",\"duplicate_check\":\"both\",\"date_from\":\"2027-03-01\",\"date_to\":\"2027-03-31\",\"sort_order\":\"issues_first\",\"include_evidence\":\"yes\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "expenses",
        "rules"
    ],
    "properties": {
        "expenses": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 24000,
                    "description": "UTF-8 CSV with exact comma-separated headers id,date,claimant,merchant,description,amount,receipt_id. Quote commas/newlines inside cells; maximum 30 data rows."
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 30,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "id",
                            "date",
                            "claimant",
                            "merchant",
                            "description",
                            "amount",
                            "receipt_id"
                        ],
                        "properties": {
                            "id": {
                                "type": "string",
                                "pattern": "^[A-Z][A-Z0-9_-]{0,23}$",
                                "maxLength": 24
                            },
                            "date": {
                                "type": "string",
                                "pattern": "^(20[0-9]{2}|2100)-[0-9]{2}-[0-9]{2}$",
                                "maxLength": 10,
                                "description": "Valid calendar date YYYY-MM-DD, 2000 through 2100."
                            },
                            "claimant": {
                                "type": "string",
                                "maxLength": 100
                            },
                            "merchant": {
                                "type": "string",
                                "maxLength": 160
                            },
                            "description": {
                                "type": "string",
                                "maxLength": 600
                            },
                            "amount": {
                                "type": "string",
                                "pattern": "^(0|[1-9][0-9]{0,7})(\\.[0-9]{1,2})?$",
                                "maxLength": 11,
                                "description": "Plain decimal amount, maximum 10000000.00. No exponent or thousands separator."
                            },
                            "receipt_id": {
                                "type": "string",
                                "maxLength": 100
                            }
                        }
                    }
                }
            ]
        },
        "rules": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 24000,
                    "description": "UTF-8 CSV with exact comma-separated headers id,description,max_amount,receipt_required. Quote commas/newlines inside cells; maximum 12 data rows."
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 12,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "id",
                            "description",
                            "max_amount",
                            "receipt_required"
                        ],
                        "properties": {
                            "id": {
                                "type": "string",
                                "pattern": "^[A-Z][A-Z0-9_-]{0,23}$",
                                "maxLength": 24
                            },
                            "description": {
                                "type": "string",
                                "maxLength": 800
                            },
                            "max_amount": {
                                "oneOf": [
                                    {
                                        "type": "string",
                                        "pattern": "^(0|[1-9][0-9]{0,7})(\\.[0-9]{1,2})?$",
                                        "maxLength": 11,
                                        "description": "Plain decimal amount, maximum 10000000.00. No exponent or thousands separator."
                                    },
                                    {
                                        "type": "string",
                                        "enum": [
                                            ""
                                        ]
                                    }
                                ]
                            },
                            "receipt_required": {
                                "type": "string",
                                "enum": [
                                    "yes",
                                    "no"
                                ]
                            }
                        }
                    }
                }
            ]
        },
        "rules_approved": {
            "type": "string",
            "enum": [
                "no",
                "yes"
            ]
        },
        "currency": {
            "type": "string",
            "enum": [
                "EUR",
                "USD",
                "GBP",
                "PLN",
                "CZK",
                "DKK",
                "SEK",
                "NOK",
                "CHF",
                "HUF",
                "RON"
            ]
        },
        "limit_scope": {
            "type": "string",
            "enum": [
                "per_item",
                "per_day"
            ]
        },
        "receipt_policy": {
            "type": "string",
            "enum": [
                "rule",
                "all"
            ]
        },
        "duplicate_check": {
            "type": "string",
            "enum": [
                "both",
                "receipt",
                "fingerprint"
            ]
        },
        "date_from": {
            "oneOf": [
                {
                    "type": "string",
                    "pattern": "^(20[0-9]{2}|2100)-[0-9]{2}-[0-9]{2}$",
                    "maxLength": 10,
                    "description": "Valid calendar date YYYY-MM-DD, 2000 through 2100."
                },
                {
                    "type": "string",
                    "enum": [
                        ""
                    ]
                }
            ]
        },
        "date_to": {
            "oneOf": [
                {
                    "type": "string",
                    "pattern": "^(20[0-9]{2}|2100)-[0-9]{2}-[0-9]{2}$",
                    "maxLength": 10,
                    "description": "Valid calendar date YYYY-MM-DD, 2000 through 2100."
                },
                {
                    "type": "string",
                    "enum": [
                        ""
                    ]
                }
            ]
        },
        "sort_order": {
            "type": "string",
            "enum": [
                "source",
                "date",
                "issues_first"
            ]
        },
        "include_evidence": {
            "type": "string",
            "enum": [
                "yes",
                "no"
            ]
        }
    }
}

Migration acceptance review

migration_acceptance

Compare source and target extracts with explicit mapping, normalization and tolerances, then review source-bound AI classifications of representative findings.

Input and configuration fields

Essential settings
source_csv — Source CSV
Up to 1,000 rows and 12 columns. Comma-separated UTF-8 CSV with ASCII column names; each cell at most 600 bytes.
target_csv — Target CSV
Target extract using the same CSV conventions. Empty datasets may contain the header only.
mapping_csv — Column mapping
CSV headers source,target,type. Up to ten mappings; type is text, number or reference. Reference values must identify a row in the corresponding extract. Key matching always uses exact values.
Advanced settings
source_key — Source key column
A column present in the source CSV. Empty or duplicate keys remain visible as data gaps.
Default settings: "id"
target_key — Target key column
A column present in the target CSV. Keys are matched exactly, independently of text normalization.
Default settings: "id"
whitespace — Whitespace comparison
Exact preserves whitespace; trim removes surrounding whitespace; collapse also replaces internal whitespace runs with one space.
exact — exact · trim — trim · collapse — collapse
Default settings: "trim"
case_sensitive — Case-sensitive text comparison
No compares mapped text after Unicode lowercasing. Keys and reference lookups remain exact.
yes — yes · no — no
Default settings: "yes"
null_tokens — Empty values
One value per line, at most eight values and 120 bytes. Values match after whitespace processing and before case normalization.
Default settings: "NULL"
empty_policy — Empty-value policy
Equivalent treats configured null tokens as empty strings. Exact retains the tokens as ordinary values.
exact — exact · equivalent — equivalent
Default settings: "equivalent"
absolute_tolerance — Absolute numeric tolerance
Maximum absolute difference in the supplied numeric unit. Decimal-dot values only; no unit conversion.
Default settings: 0
relative_tolerance_pct — Relative numeric tolerance (%)
Tolerance relative to the absolute source value. The larger of absolute and relative tolerance applies; a zero source uses absolute tolerance.
Default settings: 0
extra_rows — Additional target records
Issue reports additional target records as findings. Allow treats their presence as acceptable within the configured scope.
issue — issue · allow — allow
Default settings: "issue"
detail_filter — Detail selection
Issues hides matching detail rows. All includes matching rows. Totals and AI candidate selection remain independent of this display filter.
issues — issues · all — all
Default settings: "issues"

Maximum UTF-8 input bytes: 200000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "migration_acceptance",
    "text": "{\"source_csv\":\"id,name,amount,parent\\nA1,Blue box,10,\\nA2,Small box,20,A1\",\"target_csv\":\"id,title,amount,parent\\nA1,Blue box,10,\\nA2,Small box,22,A9\",\"mapping_csv\":\"source,target,type\\nname,title,text\\namount,amount,number\\nparent,parent,reference\",\"source_key\":\"id\",\"target_key\":\"id\",\"whitespace\":\"trim\",\"case_sensitive\":\"yes\",\"null_tokens\":\"NULL\",\"empty_policy\":\"equivalent\",\"absolute_tolerance\":0,\"relative_tolerance_pct\":0,\"extra_rows\":\"issue\",\"detail_filter\":\"issues\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "source_csv",
        "target_csv",
        "mapping_csv"
    ],
    "properties": {
        "source_csv": {
            "type": "string",
            "description": "Up to 1,000 rows and 12 columns. Comma-separated UTF-8 CSV with ASCII column names; each cell at most 600 bytes.",
            "maxLength": 190000
        },
        "target_csv": {
            "type": "string",
            "description": "Target extract using the same CSV conventions. Empty datasets may contain the header only.",
            "maxLength": 190000
        },
        "mapping_csv": {
            "type": "string",
            "description": "CSV headers source,target,type. Up to ten mappings; type is text, number or reference. Reference values must identify a row in the corresponding extract. Key matching always uses exact values.",
            "maxLength": 190000
        },
        "source_key": {
            "type": "string",
            "description": "A column present in the source CSV. Empty or duplicate keys remain visible as data gaps.",
            "default": "id",
            "maxLength": 600
        },
        "target_key": {
            "type": "string",
            "description": "A column present in the target CSV. Keys are matched exactly, independently of text normalization.",
            "default": "id",
            "maxLength": 600
        },
        "whitespace": {
            "type": "string",
            "description": "Exact preserves whitespace; trim removes surrounding whitespace; collapse also replaces internal whitespace runs with one space.",
            "default": "trim",
            "enum": [
                "exact",
                "trim",
                "collapse"
            ],
            "maxLength": 600
        },
        "case_sensitive": {
            "type": "string",
            "description": "No compares mapped text after Unicode lowercasing. Keys and reference lookups remain exact.",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ],
            "maxLength": 600
        },
        "null_tokens": {
            "type": "string",
            "description": "One value per line, at most eight values and 120 bytes. Values match after whitespace processing and before case normalization.",
            "default": "NULL",
            "maxLength": 600
        },
        "empty_policy": {
            "type": "string",
            "description": "Equivalent treats the configured empty values as empty strings. Exact retains them as ordinary values.",
            "default": "equivalent",
            "enum": [
                "exact",
                "equivalent"
            ],
            "maxLength": 600
        },
        "absolute_tolerance": {
            "type": "number",
            "description": "Maximum absolute difference in the supplied numeric unit. Decimal-dot values only; no unit conversion.",
            "default": 0,
            "minimum": 0,
            "maximum": 1000000
        },
        "relative_tolerance_pct": {
            "type": "number",
            "description": "Tolerance relative to the absolute source value. The larger of absolute and relative tolerance applies; a zero source uses absolute tolerance.",
            "default": 0,
            "minimum": 0,
            "maximum": 100
        },
        "extra_rows": {
            "type": "string",
            "description": "Issue reports additional target records as findings. Allow treats their presence as acceptable within the configured scope.",
            "default": "issue",
            "enum": [
                "issue",
                "allow"
            ],
            "maxLength": 600
        },
        "detail_filter": {
            "type": "string",
            "description": "Issues hides matching detail rows. All includes matching rows. Totals and AI candidate selection remain independent of this display filter.",
            "default": "issues",
            "enum": [
                "issues",
                "all"
            ],
            "maxLength": 600
        }
    }
}

Batch and serial trace review

batch_traceability

Trace supplied batch relationships and movement ledgers, calculate unit-bound balances and identify recipients and missing evidence within an explicit scope.

Input and configuration fields

Essential settings
batches_csv — Batch register CSV
Headers id,product,serial,unit,opening,notes. Up to 100 unique batch IDs. Opening is the starting ledger balance, not an independently verified inventory.
links_csv — Batch relationships CSV
Headers parent,child; up to 200 relationships. Relationships describe trace links and never deduct stock. A header-only file is valid.
movements_csv — Movement ledger CSV
Headers id,batch,kind,quantity,unit,party,reference,date. Up to 300 unique movements. Kinds: receive,consume,ship,adjust_in,adjust_out. Quantities are non-negative decimal-dot values; dates use YYYY-MM-DD.
start_batch — Starting batch
Exactly one starting batch or serial number is required. Batch IDs use letters, digits, underscores or hyphens.
Default settings: ""
Advanced settings
start_serial — Starting serial number
Alternative to the starting batch. The serial must identify exactly one supplied batch.
Default settings: ""
direction — Trace direction
Forward follows parent to child; backward follows child to parent; both explores both directions. Cycles are visited once.
forward — forward · backward — backward · both — both
Default settings: "both"
max_depth — Maximum relationship depth
Between 1 and 20. Relationships beyond the boundary are counted explicitly; their batches are not included.
Default settings: 10
as_of — Movement cutoff date
Optional inclusive cutoff in YYYY-MM-DD. Only movement dates are filtered; undated batch relationships are not historical snapshots.
Default settings: ""
include_zero — Display zero stock
No hides zero-balance stock detail rows. Trace reach, movements and AI note review are unaffected.
yes — yes · no — no
Default settings: "yes"
movement_view — Movement details
All displays every selected movement. Shipments displays shipping movements only; stock displays other movements. Every selected movement still contributes to the stock balance.
all — all · shipments — shipments · stock — stock
Default settings: "all"
minimum_stock — Stock warning threshold
Balances below this threshold are highlighted. Units must match each batch exactly. Incompatible movements are excluded from arithmetic and reported as gaps.
Default settings: 0
detail_order — Detail order
Batch sorts by batch identifier. Issues first places deterministic findings before ordinary details.
batch — batch · issues_first — issues first
Default settings: "batch"

Maximum UTF-8 input bytes: 200000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "batch_traceability",
    "text": "{\"batches_csv\":\"id,product,serial,unit,opening,notes\\nB1,Base material,S1,kg,100,Keep dry\\nB2,Finished product,S2,kg,20,Inspect packaging\",\"links_csv\":\"parent,child\\nB1,B2\",\"movements_csv\":\"id,batch,kind,quantity,unit,party,reference,date\\nM1,B2,ship,5,kg,Warehouse A,DEL-1,2026-11-01\",\"start_batch\":\"B1\",\"start_serial\":\"\",\"direction\":\"forward\",\"max_depth\":10,\"as_of\":\"\",\"include_zero\":\"yes\",\"movement_view\":\"all\",\"minimum_stock\":0,\"detail_order\":\"batch\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "batches_csv",
        "links_csv",
        "movements_csv"
    ],
    "properties": {
        "batches_csv": {
            "type": "string",
            "description": "Headers id,product,serial,unit,opening,notes. Up to 100 unique batch IDs. Opening is the starting ledger balance, not an independently verified inventory.",
            "maxLength": 190000
        },
        "links_csv": {
            "type": "string",
            "description": "Headers parent,child; up to 200 relationships. Relationships describe trace links and never deduct stock. A header-only file is valid.",
            "maxLength": 190000
        },
        "movements_csv": {
            "type": "string",
            "description": "Headers id,batch,kind,quantity,unit,party,reference,date. Up to 300 unique movements. Kinds: receive,consume,ship,adjust_in,adjust_out. Quantities are non-negative decimal-dot values; dates use YYYY-MM-DD.",
            "maxLength": 190000
        },
        "start_batch": {
            "type": "string",
            "description": "Exactly one starting batch or serial number is required. Batch IDs use letters, digits, underscores or hyphens.",
            "default": "",
            "maxLength": 600
        },
        "start_serial": {
            "type": "string",
            "description": "Alternative to the starting batch. The serial must identify exactly one supplied batch.",
            "default": "",
            "maxLength": 600
        },
        "direction": {
            "type": "string",
            "description": "Forward follows parent to child; backward follows child to parent; both explores both directions. Cycles are visited once.",
            "default": "both",
            "enum": [
                "forward",
                "backward",
                "both"
            ],
            "maxLength": 600
        },
        "max_depth": {
            "type": "integer",
            "description": "Between 1 and 20. Relationships beyond the boundary are counted explicitly; their batches are not included.",
            "default": 10,
            "minimum": 1,
            "maximum": 20
        },
        "as_of": {
            "type": "string",
            "description": "Optional inclusive cutoff in YYYY-MM-DD. Only movement dates are filtered; undated batch relationships are not historical snapshots.",
            "default": "",
            "maxLength": 600
        },
        "include_zero": {
            "type": "string",
            "description": "No hides zero-balance stock detail rows. Trace reach, movements and AI note review are unaffected.",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ],
            "maxLength": 600
        },
        "movement_view": {
            "type": "string",
            "description": "All displays every selected movement. Shipments displays shipping movements only; stock displays other movements. Every selected movement still contributes to the stock balance.",
            "default": "all",
            "enum": [
                "all",
                "shipments",
                "stock"
            ],
            "maxLength": 600
        },
        "minimum_stock": {
            "type": "number",
            "description": "Balances below this threshold are highlighted. Units must match each batch exactly. Incompatible movements are excluded from arithmetic and reported as gaps.",
            "default": 0,
            "minimum": -1000000,
            "maximum": 1000000
        },
        "detail_order": {
            "type": "string",
            "description": "Batch sorts by batch identifier. Issues first places deterministic findings before ordinary details.",
            "default": "batch",
            "enum": [
                "batch",
                "issues_first"
            ],
            "maxLength": 600
        }
    }
}

Source-backed maintenance planning

maintenance_planner

Plan date-based and operating-hour maintenance from explicit source intervals, with overdue review, responsible roles and separately confirmed calendar export.

Input and configuration fields

Essential settings
assets — Maintenance source records
CSV headers: id,asset,instruction,interval_days,interval_hours,last_date,last_hours,current_hours,priority,owner. CSV text is limited to 40,000 UTF-8 bytes. Up to 20 unique uppercase IDs; asset and owner up to 160 UTF-8 bytes, manufacturer instruction up to 1,200 bytes. At least one explicit positive interval is required: days 1–3,650 or hours 1–100,000. Day intervals require a last_date in YYYY-MM-DD, no later than the reference date. Hour intervals require integer last_hours and current_hours from 0–10,000,000, with current_hours not below last_hours. Unused interval and meter cells stay empty. priority is high, medium or low. owner may be empty. Intervals must be transcribed from the actual manufacturer or approved maintenance source; the tool does not verify their authority.
Default settings: ""
reference_date — Reference date
Explicit YYYY-MM-DD date used to compare due dates and action deadlines; supported years 2000–2100. No current date is guessed.
Default settings: "2026-11-03"
Advanced settings
horizon_days — Planning horizon in days
Calendar due dates on or before the reference date plus this many days are due within the planning horizon. The next date is last_date plus the supplied interval; overdue work is not silently rolled forward.
Default settings: 30
priority_filter — Priority filter
Filter the explicitly supplied priority before model selection. Priority is not inferred from the asset name or generated by the model.
all — All · high — High · high_medium — High and medium
Default settings: "all"
due_filter — Due-state filter
All includes later work. Due includes overdue tasks, dates within the horizon and hour thresholds within the configured warning. Overdue requires a date strictly before the reference date or a negative remaining-hour balance. Equality is due, not overdue.
all — All · due — Due within selected bounds · overdue — Overdue
Default settings: "due"
hours_warning — Operating-hour warning threshold
Include hour-based tasks when remaining operating hours are at or below this threshold. This is not an operating-rate estimate and never creates a calendar date from hours.
Default settings: 20
max_items — Maximum selected records
The AI selects this many eligible records, or all eligible records when fewer remain. Selection is a review proposal; excluded or unselected records are counted rather than presented as completed.
Default settings: 12
detail — Excerpt detail
Brief excerpts contain at most 180 UTF-8 bytes; detailed excerpts at most 600. Excerpts remain exact source wording in the original language.
brief — Brief excerpts · detailed — Detailed excerpts
Default settings: "detailed"
sort_order — Display order
Sort complete selected rows by supplied priority, calculated due date with hour-only tasks last, or original source order.
priority — Supplied priority · date — Source date · source — Source order
Default settings: "priority"
calendar_name — Calendar name
Name of the separately confirmed calendar export, at most 120 UTF-8 bytes. Only validated date-based due dates can become events. No calendar service is contacted.
Default settings: "Maintenance review"
reminder_days — Reminder lead time
0 disables reminders. Otherwise the confirmed calendar uses a display reminder 1–90 days before each selected all-day event. Separate human confirmation is mandatory.
Default settings: 7

Maximum UTF-8 input bytes: 50000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "maintenance_planner",
    "text": "{\"assets\":\"id,asset,instruction,interval_days,interval_hours,last_date,last_hours,current_hours,priority,owner\\nA1,Air filter,Inspect the filter and record visible contamination.,30,,2026-10-10,,,high,Maintenance team\\nA2,Workshop compressor,Check the belt condition and record the result.,,200,,1000,1190,medium,Workshop lead\",\"reference_date\":\"2026-11-03\",\"horizon_days\":30,\"priority_filter\":\"all\",\"due_filter\":\"due\",\"hours_warning\":20,\"max_items\":12,\"detail\":\"detailed\",\"sort_order\":\"priority\",\"calendar_name\":\"Reviewed maintenance dates\",\"reminder_days\":7}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "assets",
        "reference_date",
        "horizon_days",
        "priority_filter",
        "due_filter",
        "hours_warning",
        "max_items",
        "detail",
        "sort_order",
        "calendar_name",
        "reminder_days"
    ],
    "properties": {
        "assets": {
            "type": "string",
            "maxLength": 40000,
            "minLength": 1
        },
        "reference_date": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "format": "date"
        },
        "horizon_days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 365
        },
        "priority_filter": {
            "type": "string",
            "enum": [
                "all",
                "high",
                "high_medium"
            ],
            "maxLength": 100,
            "minLength": 1
        },
        "due_filter": {
            "type": "string",
            "enum": [
                "all",
                "due",
                "overdue"
            ],
            "maxLength": 100,
            "minLength": 1
        },
        "hours_warning": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10000
        },
        "max_items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20
        },
        "detail": {
            "type": "string",
            "enum": [
                "brief",
                "detailed"
            ],
            "maxLength": 100,
            "minLength": 1
        },
        "sort_order": {
            "type": "string",
            "enum": [
                "priority",
                "date",
                "source"
            ],
            "maxLength": 100,
            "minLength": 1
        },
        "calendar_name": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "reminder_days": {
            "type": "integer",
            "minimum": 0,
            "maximum": 90
        }
    }
}

Evidence-linked incident review

incident_review

Organise incident chronology, impact, source-confirmed causes, hypotheses and action follow-up with exact evidence and visible unanswered questions.

Input and configuration fields

Essential settings
incident — Incident title
Short incident name, up to 200 UTF-8 bytes. No secrets, personal identifiers or credentials.
Default settings: ""
evidence — Incident evidence records
CSV headers: id,date,kind,status,impact,owner,deadline,text,criterion. CSV text is limited to 40,000 UTF-8 bytes. Up to 24 unique uppercase IDs; text up to 1,200 UTF-8 bytes, criterion up to 500 and owner up to 160. date and deadline are YYYY-MM-DD or empty. kind is event, impact, cause, hypothesis or action. status is recorded, confirmed, open, in_progress, done, verified or unknown. A cause requires confirmed; a hypothesis requires open or unknown; an action requires open, in_progress, done, verified or unknown. impact is high, medium, low or unknown. Confirmation and verification are claims in the supplied record, not independent findings. Missing owner, deadline and effectiveness criterion stay empty.
Default settings: ""
reference_date — Reference date
Explicit YYYY-MM-DD date used to compare due dates and action deadlines; supported years 2000–2100. No current date is guessed.
Default settings: "2026-11-03"
Advanced settings
focus — Review focus
Select all evidence, event/impact chronology, causes/hypotheses, or actions before model selection. Related event and impact evidence can still be referenced from the full supplied snapshot.
all — All · chronology — Chronology · causes — Causes and hypotheses · actions — Actions
Default settings: "all"
cause_filter — Cause classification filter
Keep both source classifications, only source-confirmed causes, or only hypotheses. The model cannot promote a hypothesis to a confirmed cause. Confirmation is copied from the input and must be independently reviewed.
all — All · confirmed — Confirmed in supplied source · hypotheses — Hypotheses only
Default settings: "all"
action_filter — Action status filter
All retains every supplied action status. Open includes open, in_progress and unknown; verified includes only source-reported verified actions. A completed action is not automatically effective or verified.
all — All · open — Open · verified — Verified in supplied source
Default settings: "all"
impact_filter — Impact filter
Filter the explicit impact level across all record types. Unknown impact is included only with All. The model never invents severity.
all — All · high — High · high_medium — High and medium
Default settings: "all"
max_items — Maximum selected records
The AI selects this many eligible records, or all eligible records when fewer remain. Selection is a review proposal; excluded or unselected records are counted rather than presented as completed.
Default settings: 16
detail — Excerpt detail
Brief excerpts contain at most 180 UTF-8 bytes; detailed excerpts at most 600. Excerpts remain exact source wording in the original language.
brief — Brief excerpts · detailed — Detailed excerpts
Default settings: "detailed"
sort_order — Display order
Sort complete selected rows by source date with undated items last, localized record type, or original source order. Missing dates are never inferred.
chronology — Chronology · type — Record type · source — Source order
Default settings: "chronology"
include_questions — Include evidence-gap questions
Add fixed review questions for missing cause support, responsible roles, action deadlines and effectiveness criteria. Unverified actions remain questions, not automatically completed checks. Overdue open action deadlines are compared with the explicit reference date.
Default settings: true

Maximum UTF-8 input bytes: 50000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "incident_review",
    "text": "{\"incident\":\"Packaging line interruption\",\"evidence\":\"id,date,kind,status,impact,owner,deadline,text,criterion\\nE1,2026-11-02,event,recorded,high,,,The line stopped after the temperature alarm.,\\nE2,2026-11-02,impact,recorded,high,,,Production was paused for 25 minutes.,\\nH1,2026-11-02,hypothesis,open,high,,,A blocked cooling path is suspected but has not been confirmed.,\\nA1,2026-11-03,action,open,high,Maintenance lead,2026-11-05,Inspect the cooling path and record the findings.,No temperature alarm during the documented validation run.\",\"reference_date\":\"2026-11-03\",\"focus\":\"all\",\"cause_filter\":\"all\",\"action_filter\":\"all\",\"impact_filter\":\"all\",\"max_items\":16,\"detail\":\"detailed\",\"sort_order\":\"chronology\",\"include_questions\":true}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "incident",
        "evidence",
        "reference_date",
        "focus",
        "cause_filter",
        "action_filter",
        "impact_filter",
        "max_items",
        "detail",
        "sort_order",
        "include_questions"
    ],
    "properties": {
        "incident": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "evidence": {
            "type": "string",
            "maxLength": 40000,
            "minLength": 1
        },
        "reference_date": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "format": "date"
        },
        "focus": {
            "type": "string",
            "enum": [
                "all",
                "chronology",
                "causes",
                "actions"
            ],
            "maxLength": 100,
            "minLength": 1
        },
        "cause_filter": {
            "type": "string",
            "enum": [
                "all",
                "confirmed",
                "hypotheses"
            ],
            "maxLength": 100,
            "minLength": 1
        },
        "action_filter": {
            "type": "string",
            "enum": [
                "all",
                "open",
                "verified"
            ],
            "maxLength": 100,
            "minLength": 1
        },
        "impact_filter": {
            "type": "string",
            "enum": [
                "all",
                "high",
                "high_medium"
            ],
            "maxLength": 100,
            "minLength": 1
        },
        "max_items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 24
        },
        "detail": {
            "type": "string",
            "enum": [
                "brief",
                "detailed"
            ],
            "maxLength": 100,
            "minLength": 1
        },
        "sort_order": {
            "type": "string",
            "enum": [
                "chronology",
                "type",
                "source"
            ],
            "maxLength": 100,
            "minLength": 1
        },
        "include_questions": {
            "type": "boolean"
        }
    }
}

Job cost and margin review

job_cost_review

Compare net plan costs with source-backed actual cost assignments, exact line calculations, variances and margin warnings.

Input and configuration fields

Essential settings
plans — Planned positions
CSV columns id,description,planned_net,revenue_net. Up to 15 positions. All amounts are net, in one currency.
actuals — Actual costs
CSV columns id,date,kind,description,quantity,unit_net,plan_id. Up to 30 rows. Labor quantity means hours; material and external quantities mean units. An empty plan_id requests a model proposal.
currency — Currency
A single two-decimal currency applies to all figures.
EUR — EUR · USD — USD · GBP — GBP · PLN — PLN · CZK — CZK · DKK — DKK · SEK — SEK · NOK — NOK · CHF — CHF · HUF — HUF · RON — RON
Default settings: "EUR"
net_basis — Net amounts confirmed
Only net inputs are supported; no tax calculation or gross-to-net conversion is performed.
yes — Yes · no — No
Default settings: "no"
Advanced settings
rounding — Line rounding
Round each quantity multiplied by unit rate to cents before summing. Half-even rounds exact ties to an even cent.
half_up — Round ties upward · half_even — Round ties to even cents
Default settings: "half_up"
group_by — Detail ordering
Order detail rows by assigned plan, cost kind or source ID. Plan totals always remain separate.
plan — Plan position · kind — Cost kind · source — Source ID
Default settings: "plan"
variance_filter — Plan-row visibility
Optionally show only plan rows whose positive cost variance exceeds the threshold. Summary totals and all findings remain complete.
all — All · over_threshold — Above variance threshold
Default settings: "all"
variance_threshold — Cost variance threshold
Nonnegative net amount used for plan overspend findings and the optional plan-row filter.
Default settings: "0.00"
margin_warning_percent — Margin warning percentage
Flag allocated plan margins below this whole percentage, from 0 to 100. Zero revenue produces an unknown margin.
Default settings: 20
date_from — Period start
Optional inclusive date. Only actual costs are filtered; supplied full plan costs and revenues remain unchanged.
Default settings: ""
date_to — Period end
Optional inclusive date. Excluded actual rows remain visible and do not enter selected cost totals.
Default settings: ""
mapping_mode — Assignment policy
Assisted uses a single validated model proposal. Explicit-only allocates only supplied plan_id values; ambiguous and unmatched costs stay unallocated.
assisted — Assisted assignment · explicit_only — Explicit assignments only
Default settings: "assisted"
show_details — Show ordinary detail rows
Unassigned, ambiguous and excluded rows remain visible even when ordinary details are hidden.
yes — Yes · no — No
Default settings: "yes"
include_quotes — Show source quotations
Evidence remains validated even when quotations are hidden from the report.
yes — Yes · no — No
Default settings: "yes"

Maximum UTF-8 input bytes: 50000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "job_cost_review",
    "text": "{\"plans\":\"id,description,planned_net,revenue_net\\nP1,Website launch,600.00,1000.00\",\"actuals\":\"id,date,kind,description,quantity,unit_net,plan_id\\nA1,2027-03-01,labor,Website launch implementation,8.000,80.00,P1\\nA2,2027-03-02,material,Website launch graphics,1.000,100.00,\",\"currency\":\"EUR\",\"net_basis\":\"yes\",\"rounding\":\"half_up\",\"group_by\":\"plan\",\"variance_filter\":\"all\",\"variance_threshold\":\"0.00\",\"margin_warning_percent\":30,\"date_from\":\"\",\"date_to\":\"\",\"mapping_mode\":\"assisted\",\"show_details\":\"yes\",\"include_quotes\":\"yes\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "plans",
        "actuals"
    ],
    "properties": {
        "plans": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 24000
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 15,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "id",
                            "description",
                            "planned_net",
                            "revenue_net"
                        ],
                        "properties": {
                            "id": {
                                "type": "string",
                                "maxLength": 24,
                                "pattern": "^[A-Z][A-Z0-9_-]{0,23}$"
                            },
                            "description": {
                                "type": "string",
                                "maxLength": 300
                            },
                            "planned_net": {
                                "type": "string",
                                "maxLength": 11,
                                "pattern": "^(0|[1-9][0-9]{0,7})(?:\\.[0-9]{1,2})?$"
                            },
                            "revenue_net": {
                                "type": "string",
                                "maxLength": 11,
                                "pattern": "^(0|[1-9][0-9]{0,7})(?:\\.[0-9]{1,2})?$"
                            }
                        }
                    }
                }
            ]
        },
        "actuals": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 24000
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 30,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "id",
                            "date",
                            "kind",
                            "description",
                            "quantity",
                            "unit_net",
                            "plan_id"
                        ],
                        "properties": {
                            "id": {
                                "type": "string",
                                "maxLength": 24,
                                "pattern": "^[A-Z][A-Z0-9_-]{0,23}$"
                            },
                            "date": {
                                "type": "string",
                                "maxLength": 10,
                                "pattern": "^(20[0-9]{2}|2100)-[0-9]{2}-[0-9]{2}$"
                            },
                            "kind": {
                                "type": "string",
                                "maxLength": 100,
                                "enum": [
                                    "labor",
                                    "material",
                                    "external"
                                ]
                            },
                            "description": {
                                "type": "string",
                                "maxLength": 300
                            },
                            "quantity": {
                                "type": "string",
                                "maxLength": 12,
                                "pattern": "^(0|[1-9][0-9]{0,7})(?:\\.[0-9]{1,3})?$"
                            },
                            "unit_net": {
                                "type": "string",
                                "maxLength": 11,
                                "pattern": "^(0|[1-9][0-9]{0,7})(?:\\.[0-9]{1,2})?$"
                            },
                            "plan_id": {
                                "type": "string",
                                "maxLength": 24,
                                "pattern": "^(?:|[A-Z][A-Z0-9_-]{0,23})$"
                            }
                        }
                    }
                }
            ]
        },
        "currency": {
            "type": "string",
            "enum": [
                "EUR",
                "USD",
                "GBP",
                "PLN",
                "CZK",
                "DKK",
                "SEK",
                "NOK",
                "CHF",
                "HUF",
                "RON"
            ]
        },
        "net_basis": {
            "type": "string",
            "enum": [
                "yes",
                "no"
            ]
        },
        "rounding": {
            "type": "string",
            "enum": [
                "half_up",
                "half_even"
            ]
        },
        "group_by": {
            "type": "string",
            "enum": [
                "plan",
                "kind",
                "source"
            ]
        },
        "variance_filter": {
            "type": "string",
            "enum": [
                "all",
                "over_threshold"
            ]
        },
        "variance_threshold": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,7})(?:\\.[0-9]{1,2})?$",
            "maxLength": 11
        },
        "margin_warning_percent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
        },
        "date_from": {
            "type": "string",
            "pattern": "^(?:|(20[0-9]{2}|2100)-[0-9]{2}-[0-9]{2})$",
            "maxLength": 10,
            "description": "Optional valid calendar date YYYY-MM-DD, 2000 through 2100."
        },
        "date_to": {
            "type": "string",
            "pattern": "^(?:|(20[0-9]{2}|2100)-[0-9]{2}-[0-9]{2})$",
            "maxLength": 10,
            "description": "Optional valid calendar date YYYY-MM-DD, 2000 through 2100."
        },
        "mapping_mode": {
            "type": "string",
            "enum": [
                "assisted",
                "explicit_only"
            ]
        },
        "show_details": {
            "type": "string",
            "enum": [
                "yes",
                "no"
            ]
        },
        "include_quotes": {
            "type": "string",
            "enum": [
                "yes",
                "no"
            ]
        }
    }
}

SLA event and response-time review

sla_review

Check explicit ticket events against confirmed rules with working-time, pause and daylight-saving calculations.

Input and configuration fields

Essential settings
events — Ticket events
CSV columns id,ticket,at,event,priority,description. Up to 60 events across 12 tickets within 31 elapsed days. Timestamps require seconds and an explicit UTC offset.
rules — Approved SLA rules
CSV columns id,priority,description,response_minutes,resolution_minutes. Up to 12 rules; each threshold is an explicit positive integer in minutes.
rules_approved — Rules explicitly confirmed
The supplied descriptions and numeric thresholds require explicit confirmation before processing.
no — No · yes — Yes
Default settings: "no"
Advanced settings
timezone — Business timezone
Local calendar dates, weekdays, business hours and supplied holidays use this timezone. Source timestamp offsets determine chronological order.
UTC — UTC · Europe/Berlin — Europe/Berlin · Europe/Warsaw — Europe/Warsaw · Europe/London — Europe/London · Europe/Paris — Europe/Paris · Europe/Rome — Europe/Rome · Europe/Madrid — Europe/Madrid · Europe/Lisbon — Europe/Lisbon · Europe/Helsinki — Europe/Helsinki · Europe/Athens — Europe/Athens · Europe/Bucharest — Europe/Bucharest · Europe/Kyiv — Europe/Kyiv · Europe/Dublin — Europe/Dublin · Europe/Vilnius — Europe/Vilnius · Europe/Riga — Europe/Riga · Europe/Tallinn — Europe/Tallinn · America/New_York — America/New_York
Default settings: "Europe/Berlin"
clock — SLA clock
Business time counts only configured local working intervals. Elapsed time counts all seconds. Selected pauses are excluded in both modes.
business — Business time · elapsed — Elapsed time
Default settings: "business"
business_hours — Daily business interval
One same-day HH:MM-HH:MM interval, with start before end and both times before 24:00. Applies in business-time mode.
Default settings: "09:00-17:00"
business_days — Working weekdays
Unique comma-separated weekday numbers, Monday 1 through Sunday 7. Applies in business-time mode.
Default settings: "1,2,3,4,5"
holidays — Excluded local dates
Up to 31 unique YYYY-MM-DD dates, separated by commas or newlines. No automatic holiday calendar is assumed; applies in business-time mode.
Default settings: ""
pause_states — Paused clock states
Comma-separated pause_customer and/or pause_vendor, or empty for no clock exclusions. resume closes an active pause; resolve also closes it.
Default settings: "pause_customer"
cycle_mode — Cycle selection
Review all explicit open/reopen cycles or only the first. Other cycles remain visible as excluded; sequence warnings are retained.
all — All · first — First cycle only
Default settings: "all"
date_from — Period start
Optional inclusive local opening date for cycle selection. Events are retained for sequence validation.
Default settings: ""
date_to — Period end
Optional inclusive local opening date for cycle selection. Excluded cycles remain visible.
Default settings: ""
sort_order — Result ordering
Order by ticket or put findings and incomplete cycles first.
ticket — Ticket · issues_first — Findings first
Default settings: "ticket"
include_quotes — Show source quotations
Evidence remains validated even when quotations are hidden from the report.
yes — Yes · no — No
Default settings: "yes"

Maximum UTF-8 input bytes: 50000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "sla_review",
    "text": "{\"events\":\"id,ticket,at,event,priority,description\\nE1,T1,2027-03-01T09:00:00+01:00,open,high,Hosted service interruption\\nE2,T1,2027-03-01T09:30:00+01:00,response,high,Initial support response\\nE3,T1,2027-03-01T10:00:00+01:00,pause_customer,high,Waiting for customer information\\nE4,T1,2027-03-01T11:00:00+01:00,resume,high,Customer information received\\nE5,T1,2027-03-01T12:00:00+01:00,resolve,high,Service restored\",\"rules\":\"id,priority,description,response_minutes,resolution_minutes\\nR1,high,High-priority hosted service incidents,60,180\",\"rules_approved\":\"yes\",\"timezone\":\"Europe/Berlin\",\"clock\":\"business\",\"business_hours\":\"09:00-17:00\",\"business_days\":\"1,2,3,4,5\",\"holidays\":\"\",\"pause_states\":\"pause_customer\",\"cycle_mode\":\"all\",\"date_from\":\"\",\"date_to\":\"\",\"sort_order\":\"ticket\",\"include_quotes\":\"yes\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "events",
        "rules"
    ],
    "properties": {
        "events": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 24000
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 60,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "id",
                            "ticket",
                            "at",
                            "event",
                            "priority",
                            "description"
                        ],
                        "properties": {
                            "id": {
                                "type": "string",
                                "maxLength": 24,
                                "pattern": "^[A-Z][A-Z0-9_-]{0,23}$"
                            },
                            "ticket": {
                                "type": "string",
                                "maxLength": 24,
                                "pattern": "^[A-Z][A-Z0-9_-]{0,23}$"
                            },
                            "at": {
                                "type": "string",
                                "maxLength": 25,
                                "pattern": "^(20[0-9]{2}|2100)-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:Z|[+-][0-9]{2}:[0-9]{2})$"
                            },
                            "event": {
                                "type": "string",
                                "maxLength": 100,
                                "enum": [
                                    "open",
                                    "response",
                                    "resolve",
                                    "reopen",
                                    "pause_customer",
                                    "pause_vendor",
                                    "resume"
                                ]
                            },
                            "priority": {
                                "type": "string",
                                "maxLength": 100,
                                "enum": [
                                    "critical",
                                    "high",
                                    "normal",
                                    "low"
                                ]
                            },
                            "description": {
                                "type": "string",
                                "maxLength": 300
                            }
                        }
                    }
                }
            ]
        },
        "rules": {
            "oneOf": [
                {
                    "type": "string",
                    "maxLength": 24000
                },
                {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 12,
                    "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "id",
                            "priority",
                            "description",
                            "response_minutes",
                            "resolution_minutes"
                        ],
                        "properties": {
                            "id": {
                                "type": "string",
                                "maxLength": 24,
                                "pattern": "^[A-Z][A-Z0-9_-]{0,23}$"
                            },
                            "priority": {
                                "type": "string",
                                "maxLength": 100,
                                "enum": [
                                    "critical",
                                    "high",
                                    "normal",
                                    "low"
                                ]
                            },
                            "description": {
                                "type": "string",
                                "maxLength": 400
                            },
                            "response_minutes": {
                                "type": "string",
                                "maxLength": 5,
                                "pattern": "^[1-9][0-9]{0,4}$"
                            },
                            "resolution_minutes": {
                                "type": "string",
                                "maxLength": 5,
                                "pattern": "^[1-9][0-9]{0,4}$"
                            }
                        }
                    }
                }
            ]
        },
        "rules_approved": {
            "type": "string",
            "enum": [
                "no",
                "yes"
            ]
        },
        "timezone": {
            "type": "string",
            "enum": [
                "UTC",
                "Europe/Berlin",
                "Europe/Warsaw",
                "Europe/London",
                "Europe/Paris",
                "Europe/Rome",
                "Europe/Madrid",
                "Europe/Lisbon",
                "Europe/Helsinki",
                "Europe/Athens",
                "Europe/Bucharest",
                "Europe/Kyiv",
                "Europe/Dublin",
                "Europe/Vilnius",
                "Europe/Riga",
                "Europe/Tallinn",
                "America/New_York"
            ]
        },
        "clock": {
            "type": "string",
            "enum": [
                "business",
                "elapsed"
            ]
        },
        "business_hours": {
            "type": "string",
            "maxLength": 11,
            "pattern": "^[0-2][0-9]:[0-5][0-9]-[0-2][0-9]:[0-5][0-9]$"
        },
        "business_days": {
            "type": "string",
            "maxLength": 32
        },
        "holidays": {
            "type": "string",
            "maxLength": 500
        },
        "pause_states": {
            "type": "string",
            "maxLength": 100
        },
        "cycle_mode": {
            "type": "string",
            "enum": [
                "all",
                "first"
            ]
        },
        "date_from": {
            "type": "string",
            "pattern": "^(?:|(20[0-9]{2}|2100)-[0-9]{2}-[0-9]{2})$",
            "maxLength": 10,
            "description": "Optional valid calendar date YYYY-MM-DD, 2000 through 2100."
        },
        "date_to": {
            "type": "string",
            "pattern": "^(?:|(20[0-9]{2}|2100)-[0-9]{2}-[0-9]{2})$",
            "maxLength": 10,
            "description": "Optional valid calendar date YYYY-MM-DD, 2000 through 2100."
        },
        "sort_order": {
            "type": "string",
            "enum": [
                "ticket",
                "issues_first"
            ]
        },
        "include_quotes": {
            "type": "string",
            "enum": [
                "yes",
                "no"
            ]
        }
    }
}

One-dimensional cutting plan

cutting_plan

Allocate requested lengths to supplied bars or rolls with explicit kerf, end trims, material groups, remnants and cost preferences, then review every allocation and remaining piece.

Input and configuration fields

Essential settings
demand — Required parts CSV
Headers id,material,unit,length,quantity,note. Up to 20 unique uppercase IDs and 200 total part instances. Positive lengths use a decimal point with at most three decimals; positive integer quantity. Notes are at most 300 UTF-8 bytes. All rows in both files must use one common unit: mm, cm, m or in.
stock — Available stock CSV
Headers id,material,unit,length,quantity,cost,kind,note. Up to 30 unique uppercase IDs and 100 total stock instances. kind is new or remnant; cost is a nonnegative per-item decimal amount with at most two decimals in the selected currency. Existing remnants are explicit stock items; no stock is purchased.
Advanced settings
kerf — Kerf per part
Nonnegative decimal string in the common length unit, at most three decimals. Exactly one kerf is charged per allocated part, including the final part.
Default settings: "0"
trim_start — Leading trim
Nonnegative decimal string deducted once from the start of every used stock item, in the common unit.
Default settings: "0"
trim_end — Trailing trim
Nonnegative decimal string deducted once from the end of every used stock item, in the common unit.
Default settings: "0"
minimum_remnant — Minimum reusable remainder
Nonnegative decimal string. Positive remaining lengths at or above this threshold are reported as reusable; shorter remnants count as waste. This classification does not change placement.
Default settings: "0"
strategy — Placement strategy
Best fit chooses the smallest remaining capacity after the higher-priority stock preferences. First fit omits that remaining-capacity ranking. Both are bounded greedy heuristics and never prove optimality.
best_fit — Best fit · first_fit — First fit
Default settings: "best_fit"
objective — Stock selection objective
Material prefers shorter fitting stock after remnant and opened-stock preferences. Cost ranks unopened stock by the supplied per-item cost before remaining capacity. Already opened stock is preferred. No global cost minimum is claimed.
material — Material usage · cost — Supplied cost
Default settings: "material"
currency — Cost currency
A single label for all supplied stock costs. No exchange-rate conversion or independent price verification is performed.
EUR — EUR · USD — USD · GBP — GBP · PLN — PLN · CHF — CHF
Default settings: "EUR"
prefer_remnants — Prioritize existing remnants
Yes ranks compatible remnant stock before new stock. This preference comes before opened-stock, cost and remaining-capacity ranking.
yes — Yes · no — No
Default settings: "yes"
allow_remnants — Allow existing remnants
No excludes stock rows marked remnant from placement. Their exclusion never creates new stock or changes demand quantities.
yes — Yes · no — No
Default settings: "yes"
material_case — Case-sensitive material groups
Material names are trimmed. No additionally compares Unicode lowercase names; different material groups are never mixed.
yes — Yes · no — No
Default settings: "yes"
cut_order — Part placement order
Longest first orders by length and uses the AI-proposed source order to break ties. AI priority follows the source-bound order proposed from demand notes. Every demand instance remains accounted for.
longest_first — Longest first · ai_priority — AI-proposed priority
Default settings: "longest_first"
display_order — Result order
Stock orders used stock instances by identifier. Waste first orders by combined kerf, trim and remaining length. Display order never changes the computed plan.
stock — Stock identifier · waste_first — Largest nonproduct length first
Default settings: "stock"

Maximum UTF-8 input bytes: 180000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "cutting_plan",
    "text": "{\"demand\":\"id,material,unit,length,quantity,note\\nD1,Aluminium,mm,400,2,Handle edges carefully\\nD2,Aluminium,mm,180,2,Standard workshop order\",\"stock\":\"id,material,unit,length,quantity,cost,kind,note\\nS1,Aluminium,mm,1000,2,12.50,new,Available standard bar\\nS2,Aluminium,mm,400,1,2.00,remnant,Existing remnant\",\"kerf\":\"2\",\"trim_start\":\"5\",\"trim_end\":\"5\",\"minimum_remnant\":\"100\",\"strategy\":\"best_fit\",\"objective\":\"material\",\"currency\":\"EUR\",\"prefer_remnants\":\"yes\",\"allow_remnants\":\"yes\",\"material_case\":\"yes\",\"cut_order\":\"longest_first\",\"display_order\":\"stock\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "demand",
        "stock"
    ],
    "properties": {
        "demand": {
            "type": "string",
            "description": "Headers id,material,unit,length,quantity,note. Up to 20 unique uppercase IDs and 200 total part instances. Positive lengths use a decimal point with at most three decimals; positive integer quantity. Notes are at most 300 UTF-8 bytes. All rows in both files must use one common unit: mm, cm, m or in.",
            "maxLength": 160000
        },
        "stock": {
            "type": "string",
            "description": "Headers id,material,unit,length,quantity,cost,kind,note. Up to 30 unique uppercase IDs and 100 total stock instances. kind is new or remnant; cost is a nonnegative per-item decimal amount with at most two decimals in the selected currency. Existing remnants are explicit stock items; no stock is purchased.",
            "maxLength": 160000
        },
        "kerf": {
            "type": "string",
            "description": "Nonnegative decimal string in the common length unit, at most three decimals. Exactly one kerf is charged per allocated part, including the final part.",
            "default": "0",
            "maxLength": 120,
            "pattern": "^(0|[1-9][0-9]{0,5})(\\.[0-9]{1,3})?$"
        },
        "trim_start": {
            "type": "string",
            "description": "Nonnegative decimal string deducted once from the start of every used stock item, in the common unit.",
            "default": "0",
            "maxLength": 120,
            "pattern": "^(0|[1-9][0-9]{0,5})(\\.[0-9]{1,3})?$"
        },
        "trim_end": {
            "type": "string",
            "description": "Nonnegative decimal string deducted once from the end of every used stock item, in the common unit.",
            "default": "0",
            "maxLength": 120,
            "pattern": "^(0|[1-9][0-9]{0,5})(\\.[0-9]{1,3})?$"
        },
        "minimum_remnant": {
            "type": "string",
            "description": "Nonnegative decimal string. Positive remaining lengths at or above this threshold are reported as reusable; shorter remnants count as waste. This classification does not change placement.",
            "default": "0",
            "maxLength": 120,
            "pattern": "^(0|[1-9][0-9]{0,5})(\\.[0-9]{1,3})?$"
        },
        "strategy": {
            "type": "string",
            "description": "Best fit chooses the smallest remaining capacity after the higher-priority stock preferences. First fit omits that remaining-capacity ranking. Both are bounded greedy heuristics and never prove optimality.",
            "default": "best_fit",
            "enum": [
                "best_fit",
                "first_fit"
            ],
            "maxLength": 120
        },
        "objective": {
            "type": "string",
            "description": "Material prefers shorter fitting stock after remnant and opened-stock preferences. Cost ranks unopened stock by the supplied per-item cost before remaining capacity. Already opened stock is preferred. No global cost minimum is claimed.",
            "default": "material",
            "enum": [
                "material",
                "cost"
            ],
            "maxLength": 120
        },
        "currency": {
            "type": "string",
            "description": "A single label for all supplied stock costs. No exchange-rate conversion or independent price verification is performed.",
            "default": "EUR",
            "enum": [
                "EUR",
                "USD",
                "GBP",
                "PLN",
                "CHF"
            ],
            "maxLength": 120
        },
        "prefer_remnants": {
            "type": "string",
            "description": "Yes ranks compatible remnant stock before new stock. This preference comes before opened-stock, cost and remaining-capacity ranking.",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ],
            "maxLength": 120
        },
        "allow_remnants": {
            "type": "string",
            "description": "No excludes stock rows marked remnant from placement. Their exclusion never creates new stock or changes demand quantities.",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ],
            "maxLength": 120
        },
        "material_case": {
            "type": "string",
            "description": "Material names are trimmed. No additionally compares Unicode lowercase names; different material groups are never mixed.",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ],
            "maxLength": 120
        },
        "cut_order": {
            "type": "string",
            "description": "Longest first orders by length and uses the AI-proposed source order to break ties. AI priority follows the source-bound order proposed from demand notes. Every demand instance remains accounted for.",
            "default": "longest_first",
            "enum": [
                "longest_first",
                "ai_priority"
            ],
            "maxLength": 120
        },
        "display_order": {
            "type": "string",
            "description": "Stock orders used stock instances by identifier. Waste first orders by combined kerf, trim and remaining length. Display order never changes the computed plan.",
            "default": "stock",
            "enum": [
                "stock",
                "waste_first"
            ],
            "maxLength": 120
        }
    }
}

Measurement series review

measurement_review

Compare measured values with explicitly approved limits, summarize feature and batch groups and review missing readings, ambiguous specifications and source-backed AI observations.

Input and configuration fields

Essential settings
measurements — Measurements CSV
Headers id,feature,batch,date,value,unit,note. Up to 500 unique uppercase IDs, 20 feature-and-unit groups and 100 result groups. Dates use YYYY-MM-DD from 2000 through 2100. value is a signed decimal string with up to six decimals, or empty. Notes are at most 300 UTF-8 bytes.
specifications — Approved specification CSV
Headers id,feature,unit,lower,upper,note. Up to 20 unique uppercase IDs. At least one limit must be supplied per specification; an empty lower or upper limit means one-sided checking. Limits are signed decimal strings with at most six decimals. Matching uses the configured feature-name comparison and exact units. Multiple matches remain unresolved.
limits_approved — Confirm supplied limits
Explicit confirmation that these exact supplied specifications and limits are approved for this review. Changing them requires renewed confirmation. Source notes and model output cannot grant approval.
no — Not approved · yes — These exact limits are approved
Default settings: "no"
Advanced settings
date_from — Include from date
Optional inclusive lower date bound in YYYY-MM-DD. Earlier observations are excluded from statistics and counted separately.
Default settings: ""
date_to — Include through date
Optional inclusive upper date bound in YYYY-MM-DD. Later observations are excluded from statistics and counted separately.
Default settings: ""
group_by — Statistical grouping
Feature combines all included batches for each feature and exact unit. Feature and batch keeps batches separate. A maximum of 100 result groups is accepted.
feature — Feature and unit · feature_batch — Feature, unit and batch
Default settings: "feature_batch"
case_sensitive — Case-sensitive feature matching
Names are trimmed. No additionally compares Unicode lowercase names. Units always match exactly; there is no unit conversion or inferred alias mapping.
yes — Yes · no — No
Default settings: "yes"
missing_policy — Missing measurement policy
Report marks groups with empty values for review. Exclude omits empty values from statistics without this additional group warning. Missing-value counts remain visible in both modes; invalid numeric text is rejected.
report — Report missing values · exclude — Exclude from numeric statistics
Default settings: "report"
boundary — Limit boundary interpretation
Inclusive accepts values equal to a supplied bound. Exclusive marks equality as out of range. Comparisons use exact unrounded fixed-point values.
inclusive — Inclusive bounds · exclusive — Exclusive bounds
Default settings: "inclusive"
rounding_digits — Displayed decimal places
Between 0 and 6 decimal places for descriptive statistics. Display rounding never changes specification limits or out-of-range decisions.
Default settings: 3
minimum_sample — Minimum numeric sample size
Groups with fewer numeric observations receive a review status. Between 2 and 500; this threshold does not establish statistical confidence or representativeness.
Default settings: 5
deviation — Standard deviation convention
Sample uses n−1 and requires at least two numeric observations. Population uses n and requires at least one. Values describe only the supplied observations; no wider population inference is implied.
sample — Sample standard deviation · population — Population standard deviation
Default settings: "sample"
sort_order — Group order
Source retains the first appearance of each group. Issues first puts review groups first. Feature sorts by supplied feature name and batch. Statistics remain unchanged.
source — Source order · issues_first — Review groups first · feature — Feature and batch
Default settings: "source"
include_evidence — Show representative quotation
Yes includes the exact first included measurement note for each feature-and-unit group. No hides this display column only; source IDs and model validation remain unchanged.
yes — Include quotation · no — Source IDs only
Default settings: "yes"
detail_filter — Displayed groups
All shows every included group. Issues shows groups with missing or ambiguous specifications, out-of-range values, insufficient numeric sample size or report-mode missing values. Complete summary counts remain unchanged.
all — All groups · issues — Review groups only
Default settings: "all"

Maximum UTF-8 input bytes: 180000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "measurement_review",
    "text": "{\"measurements\":\"id,feature,batch,date,value,unit,note\\nM1,Diameter,B1,2026-11-01,10.010,mm,Instrument zero checked\\nM2,Diameter,B1,2026-11-01,10.020,mm,Same measurement procedure\\nM3,Diameter,B1,2026-11-01,10.060,mm,Repeat measurement recommended\\nM4,Diameter,B1,2026-11-01,,mm,Reading unavailable\",\"specifications\":\"id,feature,unit,lower,upper,note\\nS1,Diameter,mm,9.950,10.050,Approved drawing revision A\",\"limits_approved\":\"yes\",\"date_from\":\"\",\"date_to\":\"\",\"group_by\":\"feature_batch\",\"case_sensitive\":\"yes\",\"missing_policy\":\"report\",\"boundary\":\"inclusive\",\"rounding_digits\":3,\"minimum_sample\":3,\"deviation\":\"sample\",\"sort_order\":\"source\",\"include_evidence\":\"yes\",\"detail_filter\":\"all\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "measurements",
        "specifications",
        "limits_approved"
    ],
    "properties": {
        "measurements": {
            "type": "string",
            "description": "Headers id,feature,batch,date,value,unit,note. Up to 500 unique uppercase IDs, 20 feature-and-unit groups and 100 result groups. Dates use YYYY-MM-DD from 2000 through 2100. value is a signed decimal string with up to six decimals, or empty. Notes are at most 300 UTF-8 bytes.",
            "maxLength": 160000
        },
        "specifications": {
            "type": "string",
            "description": "Headers id,feature,unit,lower,upper,note. Up to 20 unique uppercase IDs. At least one limit must be supplied per specification; an empty lower or upper limit means one-sided checking. Limits are signed decimal strings with at most six decimals. Matching uses the configured feature-name comparison and exact units. Multiple matches remain unresolved.",
            "maxLength": 160000
        },
        "limits_approved": {
            "type": "string",
            "description": "Explicit confirmation that these exact supplied specifications and limits are approved for this review. Changing them requires renewed confirmation. Source notes and model output cannot grant approval.",
            "default": "no",
            "enum": [
                "no",
                "yes"
            ],
            "maxLength": 120
        },
        "date_from": {
            "type": "string",
            "description": "Optional inclusive lower date bound in YYYY-MM-DD. Earlier observations are excluded from statistics and counted separately.",
            "default": "",
            "maxLength": 120
        },
        "date_to": {
            "type": "string",
            "description": "Optional inclusive upper date bound in YYYY-MM-DD. Later observations are excluded from statistics and counted separately.",
            "default": "",
            "maxLength": 120
        },
        "group_by": {
            "type": "string",
            "description": "Feature combines all included batches for each feature and exact unit. Feature and batch keeps batches separate. A maximum of 100 result groups is accepted.",
            "default": "feature_batch",
            "enum": [
                "feature",
                "feature_batch"
            ],
            "maxLength": 120
        },
        "case_sensitive": {
            "type": "string",
            "description": "Names are trimmed. No additionally compares Unicode lowercase names. Units always match exactly; there is no unit conversion or inferred alias mapping.",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ],
            "maxLength": 120
        },
        "missing_policy": {
            "type": "string",
            "description": "Report marks groups with empty values for review. Exclude omits empty values from statistics without this additional group warning. Missing-value counts remain visible in both modes; invalid numeric text is rejected.",
            "default": "report",
            "enum": [
                "report",
                "exclude"
            ],
            "maxLength": 120
        },
        "boundary": {
            "type": "string",
            "description": "Inclusive accepts values equal to a supplied bound. Exclusive marks equality as out of range. Comparisons use exact unrounded fixed-point values.",
            "default": "inclusive",
            "enum": [
                "inclusive",
                "exclusive"
            ],
            "maxLength": 120
        },
        "rounding_digits": {
            "type": "integer",
            "description": "Between 0 and 6 decimal places for descriptive statistics. Display rounding never changes specification limits or out-of-range decisions.",
            "default": 3,
            "minimum": 0,
            "maximum": 6
        },
        "minimum_sample": {
            "type": "integer",
            "description": "Groups with fewer numeric observations receive a review status. Between 2 and 500; this threshold does not establish statistical confidence or representativeness.",
            "default": 5,
            "minimum": 2,
            "maximum": 500
        },
        "deviation": {
            "type": "string",
            "description": "Sample uses n−1 and requires at least two numeric observations. Population uses n and requires at least one. Values describe only the supplied observations; no wider population inference is implied.",
            "default": "sample",
            "enum": [
                "sample",
                "population"
            ],
            "maxLength": 120
        },
        "sort_order": {
            "type": "string",
            "description": "Source retains the first appearance of each group. Issues first puts review groups first. Feature sorts by supplied feature name and batch. Statistics remain unchanged.",
            "default": "source",
            "enum": [
                "source",
                "issues_first",
                "feature"
            ],
            "maxLength": 120
        },
        "include_evidence": {
            "type": "string",
            "description": "Yes includes the exact first included measurement note for each feature-and-unit group. No hides this display column only; source IDs and model validation remain unchanged.",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ],
            "maxLength": 120
        },
        "detail_filter": {
            "type": "string",
            "description": "All shows every included group. Issues shows groups with missing or ambiguous specifications, out-of-range values, insufficient numeric sample size or report-mode missing values. Complete summary counts remain unchanged.",
            "default": "all",
            "enum": [
                "all",
                "issues"
            ],
            "maxLength": 120
        }
    }
}

Maintained change-impact review

change_impact

Trace concrete changes through maintained dependencies and review affected documents, tests, processes and responsible roles without inventing impact links.

Input and configuration fields

Essential settings
elements — Maintained elements
CSV headers id,name,kind,criticality,approval,owner,description. Up to 40 unique uppercase IDs. name and owner: at most 160 UTF-8 bytes; description: 1,200 bytes. kind: document,test,process,system. criticality: high,medium,low. approval: approved,draft,unknown. Empty owner is allowed and remains a gap. Approval is a source claim, not an approval granted by this tool. CSV limit: 40,000 UTF-8 bytes.
Default settings: ""
dependencies — Maintained dependencies
CSV headers id,from,to,evidence. from is the prerequisite or upstream element; to is the dependent or downstream element. Up to 100 unique edge IDs and pairs for change review, 50 for recovery. Both endpoints must exist. Evidence is required and limited to 600 UTF-8 bytes. A header-only file is valid; missing external relationships cannot be inferred. CSV limit: 40,000 UTF-8 bytes.
Default settings: ""
changes — Concrete proposed changes
CSV headers id,element,description. Up to 12 unique uppercase change IDs, each linked to an existing element. Description: 1,200 UTF-8 bytes. Each selected starting element must have at least one supplied change. Only changes on selected starting elements enter the review. CSV limit: 40,000 UTF-8 bytes.
Default settings: ""
start_ids — Starting element IDs
One to eight distinct existing element IDs separated by whitespace or commas. Every starting element requires a concrete change record. No model-generated starting ID is accepted.
Default settings: ""
baseline — Baseline version
Required baseline identifier, up to 120 UTF-8 bytes. It labels this supplied snapshot; the tool does not retrieve or compare an external version.
Default settings: "BASE-1"
Advanced settings
direction — Traversal direction
Forward follows prerequisite to dependent; backward follows dependent to prerequisite; both explores both directions. Reverse traversal is a dependency review, not proof of downstream impact. Every displayed path consists only of supplied edge IDs.
forward — Forward · backward — Backward · both — Both directions
Default settings: "forward"
max_depth — Maximum path depth
One to twenty edges from each changed starting element. The shortest discovered path is retained per change and element. Boundary edges are reported; undiscovered elements beyond the limit are not considered unaffected.
Default settings: 10
kind_filter — Element type filter
Filters review candidates after full graph traversal. Hidden intermediate elements still participate in dependency paths.
all — All · document — Document · test — Test · process — Process · system — System
Default settings: "all"
criticality_filter — Criticality filter
Filters review candidates by the explicitly supplied criticality. Recovery scheduling still includes all affected processes before this display selection; low-priority dependencies cannot disappear from the plan.
all — All · high — High · high_medium — High and medium
Default settings: "all"
approval_filter — Source approval filter
Filters the supplied approval field only. approved is a source label, not an independently verified release authorisation.
all — All · approved — Approved in source · draft — Draft in source · unknown — Unknown
Default settings: "all"
max_items — Maximum review selections
The AI selects exactly this many eligible records, or all eligible records when fewer remain. The complete deterministic analysis still covers every supplied dependency and affected process. Unselected records are not certified unaffected or restored.
Default settings: 10
detail — Quotation detail
Brief excerpts are limited to 120 characters, detailed excerpts to 240. The model is asked to prefer passages of at most 80 characters. Each quotation must be an exact contiguous passage in its original source language.
brief — Brief · detailed — Detailed
Default settings: "detailed"
sort_order — Display order
Reorders selected rows by original source order, shortest selected path depth, or supplied criticality. Reachability and selection do not change.
source — Source order · depth — Path depth · criticality — Supplied criticality
Default settings: "depth"
include_gaps — Include ownership and approval gaps
When enabled, missing owners, non-approved source labels and absent reachable document or test records produce explicit findings. Cycle and depth-boundary warnings and the review notice remain visible regardless of this setting.
Default settings: true

Maximum UTF-8 input bytes: 100000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "change_impact",
    "text": "{\"elements\":\"id,name,kind,criticality,approval,owner,description\\nS1,Order service,system,high,approved,Platform team,The service validates incoming order fields.\\nD1,Order handbook,document,medium,draft,Documentation team,The handbook describes required order fields.\\nT1,Order validation test,test,high,approved,Quality team,The test checks missing required order fields.\",\"dependencies\":\"id,from,to,evidence\\nL1,S1,D1,The handbook documents the order service interface.\\nL2,S1,T1,The test exercises the order service validation.\",\"changes\":\"id,element,description\\nC1,S1,Add a mandatory delivery reference to each order.\",\"start_ids\":\"S1\",\"direction\":\"forward\",\"max_depth\":10,\"kind_filter\":\"all\",\"criticality_filter\":\"all\",\"approval_filter\":\"all\",\"baseline\":\"BASE-1\",\"max_items\":10,\"detail\":\"detailed\",\"sort_order\":\"depth\",\"include_gaps\":true}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "elements",
        "dependencies",
        "changes",
        "start_ids",
        "direction",
        "max_depth",
        "kind_filter",
        "criticality_filter",
        "approval_filter",
        "baseline",
        "max_items",
        "detail",
        "sort_order",
        "include_gaps"
    ],
    "properties": {
        "elements": {
            "type": "string",
            "maxLength": 40000
        },
        "dependencies": {
            "type": "string",
            "maxLength": 40000
        },
        "changes": {
            "type": "string",
            "maxLength": 40000
        },
        "start_ids": {
            "type": "string",
            "maxLength": 1200
        },
        "direction": {
            "type": "string",
            "maxLength": 100,
            "enum": [
                "forward",
                "backward",
                "both"
            ]
        },
        "max_depth": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20
        },
        "kind_filter": {
            "type": "string",
            "maxLength": 100,
            "enum": [
                "all",
                "document",
                "test",
                "process",
                "system"
            ]
        },
        "criticality_filter": {
            "type": "string",
            "maxLength": 100,
            "enum": [
                "all",
                "high",
                "high_medium"
            ]
        },
        "approval_filter": {
            "type": "string",
            "maxLength": 100,
            "enum": [
                "all",
                "approved",
                "draft",
                "unknown"
            ]
        },
        "baseline": {
            "type": "string",
            "maxLength": 120
        },
        "max_items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20
        },
        "detail": {
            "type": "string",
            "maxLength": 100,
            "enum": [
                "brief",
                "detailed"
            ]
        },
        "sort_order": {
            "type": "string",
            "maxLength": 100,
            "enum": [
                "source",
                "depth",
                "criticality"
            ]
        },
        "include_gaps": {
            "type": "boolean"
        }
    }
}

Operational recovery planning

recovery_plan

Build a reviewable recovery sequence from maintained process dependencies and tasks, explicit resources, outage simulations and RTO/RPO targets.

Input and configuration fields

Essential settings
processes — Critical operational and IT processes
CSV headers id,name,criticality,rto_minutes,rpo_minutes,backup_at,owner,description. Up to 20 unique uppercase IDs. name and owner: 160 UTF-8 bytes; description: 1,200 bytes. criticality: high,medium,low. rto_minutes: integer 1–10,080; rpo_minutes: integer 0–10,080. backup_at is YYYY-MM-DDTHH:MM:00Z or empty and cannot be later than reference_time. Missing backup times remain unknown. Years 2000–2100. CSV limit: 40,000 UTF-8 bytes.
Default settings: ""
dependencies — Maintained dependencies
CSV headers id,from,to,evidence. from is the prerequisite or upstream element; to is the dependent or downstream element. Up to 100 unique edge IDs and pairs for change review, 50 for recovery. Both endpoints must exist. Evidence is required and limited to 600 UTF-8 bytes. A header-only file is valid; missing external relationships cannot be inferred. CSV limit: 40,000 UTF-8 bytes.
Default settings: ""
tasks — Maintained recovery tasks
CSV headers id,process,sequence,duration_minutes,resource,units,instruction. Up to 40 unique task IDs. Process and resource IDs must exist. sequence: integer 1–100, unique within each process; duration_minutes: integer 1–10,080; units: integer 1–100. Instructions: 1,200 UTF-8 bytes. A header-only file is valid and produces missing-task blockers. All tasks of each affected process are planned in sequence; none are invented or executed. CSV limit: 40,000 UTF-8 bytes.
Default settings: ""
resources — Recovery resources
CSV headers id,name,capacity. Up to 20 unique uppercase resource IDs. name: 160 UTF-8 bytes; capacity: integer 1–100 simultaneous units. Capacity is supplied, not verified. CSV limit: 40,000 UTF-8 bytes.
Default settings: ""
failed_processes — Simulated failed process IDs
One to twenty distinct existing process IDs separated by whitespace or commas. All downstream dependent processes are included transitively. Unaffected prerequisites are assumed available; missing relationships remain an evidence limitation.
Default settings: ""
reference_time — Explicit UTC reference time
YYYY-MM-DDTHH:MM:00Z, years 2000–2100. This is minute zero of the simulated outage and the reference for backup age. Seconds must be 00. No current timestamp is inferred.
Default settings: "2026-11-03T09:00:00Z"
Advanced settings
unavailable_resources — Simulated unavailable resource IDs
Zero to twenty distinct existing resource IDs separated by whitespace or commas. Listed resources have zero effective capacity. Empty means no additional simulated resource outage.
Default settings: ""
horizon_minutes — Planning horizon in minutes
One to 10,080 minutes from the explicit reference time. A process whose tasks cannot all finish within the horizon is blocked; partial reservations are rolled back and are not presented as a completed recovery.
Default settings: 480
priority_order — Recovery scheduling priority
Ready processes are selected by supplied criticality, shortest RTO, or source order. Each process waits for all affected prerequisites. Resource reservations use a deterministic greedy earliest-fit schedule; the result is not a globally optimal schedule.
criticality — Supplied criticality · rto — Shortest supplied RTO · source — Source order
Default settings: "criticality"
capacity_percent — Available resource capacity (%)
An integer from 1 to 100 scales each supplied resource capacity downward, rounded down to whole units. Simulated unavailable resources remain at zero. Tasks needing more units are blocked; capacity is never silently exceeded.
Default settings: 100
rto_margin_minutes — RTO safety margin in minutes
Zero to 1,440 minutes added to each calculated process finish when comparing it with its RTO target. This comparison margin does not reserve resources or alter the task schedule.
Default settings: 0
rpo_policy — Backup-age policy
Warn keeps the supplied recovery tasks schedulable while flagging missing or too-old backup evidence. Block prevents that process from being scheduled when backup age is unknown or exceeds RPO; downstream dependants are blocked too. Backup timestamps do not prove backup integrity or actual data loss.
warn — Warn about backup gaps · block — Block on backup gaps
Default settings: "warn"
criticality_filter — Criticality filter
Filters review candidates by the explicitly supplied criticality. Recovery scheduling still includes all affected processes before this display selection; low-priority dependencies cannot disappear from the plan.
all — All · high — High · high_medium — High and medium
Default settings: "all"
max_items — Maximum review selections
The AI selects exactly this many eligible records, or all eligible records when fewer remain. The complete deterministic analysis still covers every supplied dependency and affected process. Unselected records are not certified unaffected or restored.
Default settings: 10
detail — Quotation detail
Brief excerpts are limited to 120 characters, detailed excerpts to 240. The model is asked to prefer passages of at most 80 characters. Each quotation must be an exact contiguous passage in its original source language.
brief — Brief · detailed — Detailed
Default settings: "detailed"
sort_order — Display order
Sorts selected process rows by calculated start time with blocked rows last, or original source order. It does not change the recovery schedule.
schedule — Scheduled start · source — Source order
Default settings: "schedule"

Maximum UTF-8 input bytes: 100000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "recovery_plan",
    "text": "{\"processes\":\"id,name,criticality,rto_minutes,rpo_minutes,backup_at,owner,description\\nP1,Order database,high,60,60,2026-11-03T08:30:00Z,Database team,Restore the maintained order database before restarting order intake.\\nP2,Order intake,high,120,60,2026-11-03T08:30:00Z,Service team,Order intake requires the order database to be available.\",\"dependencies\":\"id,from,to,evidence\\nL1,P1,P2,Order intake reads and writes the order database.\",\"tasks\":\"id,process,sequence,duration_minutes,resource,units,instruction\\nT1,P1,1,30,R1,1,Restore the approved database backup and record the validation result.\\nT2,P2,1,20,R1,1,Restart the maintained order intake service after database verification.\",\"resources\":\"id,name,capacity\\nR1,Recovery operator,1\",\"failed_processes\":\"P1\",\"unavailable_resources\":\"\",\"reference_time\":\"2026-11-03T09:00:00Z\",\"horizon_minutes\":480,\"priority_order\":\"criticality\",\"capacity_percent\":100,\"rto_margin_minutes\":0,\"rpo_policy\":\"warn\",\"criticality_filter\":\"all\",\"max_items\":10,\"detail\":\"detailed\",\"sort_order\":\"schedule\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "processes",
        "dependencies",
        "tasks",
        "resources",
        "failed_processes",
        "unavailable_resources",
        "reference_time",
        "horizon_minutes",
        "priority_order",
        "capacity_percent",
        "rto_margin_minutes",
        "rpo_policy",
        "criticality_filter",
        "max_items",
        "detail",
        "sort_order"
    ],
    "properties": {
        "processes": {
            "type": "string",
            "maxLength": 40000
        },
        "dependencies": {
            "type": "string",
            "maxLength": 40000
        },
        "tasks": {
            "type": "string",
            "maxLength": 40000
        },
        "resources": {
            "type": "string",
            "maxLength": 40000
        },
        "failed_processes": {
            "type": "string",
            "maxLength": 1200
        },
        "unavailable_resources": {
            "type": "string",
            "maxLength": 1200,
            "minLength": 0
        },
        "reference_time": {
            "type": "string",
            "maxLength": 20
        },
        "horizon_minutes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10080
        },
        "priority_order": {
            "type": "string",
            "maxLength": 100,
            "enum": [
                "criticality",
                "rto",
                "source"
            ]
        },
        "capacity_percent": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
        },
        "rto_margin_minutes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1440
        },
        "rpo_policy": {
            "type": "string",
            "maxLength": 100,
            "enum": [
                "warn",
                "block"
            ]
        },
        "criticality_filter": {
            "type": "string",
            "maxLength": 100,
            "enum": [
                "all",
                "high",
                "high_medium"
            ]
        },
        "max_items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20
        },
        "detail": {
            "type": "string",
            "maxLength": 100,
            "enum": [
                "brief",
                "detailed"
            ]
        },
        "sort_order": {
            "type": "string",
            "maxLength": 100,
            "enum": [
                "schedule",
                "source"
            ]
        }
    }
}

Evidence-based assessment rubric

assessment_rubrics

Compare work artifacts with explicit criteria and performance levels, inspect exact evidence quotations and calculate scores from supplied human ratings.

Input and configuration fields

Essential settings
criteria — Rubric criteria CSV
Headers id,name,weight,definition. Up to 8 unique criteria. IDs use uppercase letters, digits, underscores or hyphens and begin with a letter, at most 24 characters. name: 120 UTF-8 bytes; definition: 300 bytes. weight is an integer from 1 to 1000. At most 60 evidence-and-criterion pairs are accepted. Each CSV is limited to 24,000 UTF-8 bytes; exact comma-separated headers and valid CSV quoting are required. Links, encoded URLs, markup and control characters are rejected.
Default settings: ""
levels — Performance levels CSV
Headers id,criterion,points,descriptor. Between 2 and 4 levels per criterion and at most 32 total. Each criterion ID must exist. points is an integer from 0 to 1000, unique within that criterion; the maximum must be positive. descriptor: 300 UTF-8 bytes. IDs are unique across the whole level table. Each CSV is limited to 24,000 UTF-8 bytes; exact comma-separated headers and valid CSV quoting are required. Links, encoded URLs, markup and control characters are rejected.
Default settings: ""
evidence — Artifact evidence CSV
Headers id,name,text. Up to 10 uniquely identified work artifacts, with a name of at most 120 UTF-8 bytes and evidence text of at most 1,200 bytes. This tool supports reviewing supplied work artifacts, not making consequential decisions about people. Each CSV is limited to 24,000 UTF-8 bytes; exact comma-separated headers and valid CSV quoting are required. Links, encoded URLs, markup and control characters are rejected.
Default settings: ""
ratings — Supplied human ratings CSV
Headers id,evidence,criterion,level. Optional rows, up to 80; a header-only file is valid. Every reference must exist and the level must belong to that criterion. At most one supplied human rating per evidence-and-criterion pair. These are input records, not identity-verified approvals. Each CSV is limited to 24,000 UTF-8 bytes; exact comma-separated headers and valid CSV quoting are required. Links, encoded URLs, markup and control characters are rejected.
Default settings: ""
definitions_approved — Confirm supplied definitions
Explicit confirmation applies to these exact criterion definitions and performance levels or this exact codebook. Changing any definition requires renewed confirmation. It does not approve an AI result.
no — Not confirmed · yes — Confirmed for this review
Default settings: "no"
version — Confirmed definition version
A required source version label of at most 120 UTF-8 bytes. The tool does not retrieve or verify an external version.
Default settings: "VERSION-1"
Advanced settings
detail — Quotation detail
Brief quotes are limited to 60 characters, detailed quotes to 120. Every quote must be an exact contiguous source passage. Sources are never rewritten or translated.
brief — Brief · detailed — Detailed
Default settings: "detailed"
sort_order — Result order
Source order follows the first supplied source appearance; identifier order sorts by source ID. Within a source, the original proposed criterion or code order remains stable. Sorting does not change calculations or warnings.
source — Source order · id — Source identifier
Default settings: "source"
weight_mode — Criterion weighting
Supplied weights use each positive integer weight. Equal uses weight 1 for every criterion. Human points are divided by that criterion's maximum supplied level points, then combined using these weights.
supplied — Supplied criterion weights · equal — Equal criterion weights
Default settings: "supplied"
missing_rating — Missing human-rating policy
Incomplete withholds the aggregate score until all criteria have a supplied human rating. Zero explicitly counts a missing human rating as zero while retaining the missing-rating warning. AI suggestions never enter the aggregate.
incomplete — Show incomplete score · zero — Treat missing human ratings as zero
Default settings: "incomplete"
score_scale — Aggregate score scale
Integer from 1 to 1000. The normalized weighted human score is multiplied by this scale. This is a numerical display scale, not a grade or pass threshold.
Default settings: 100
rounding_digits — Score decimal places
From 0 to 4 decimal places. Exact rational arithmetic is rounded half up only for final display; no binary floating-point scores are used.
Default settings: 2
level_order — Displayed performance-level order
Sort each criterion's supplied level descriptors by ascending or descending points. The scoring definition and AI suggestion remain unchanged.
ascending — Ascending points · descending — Descending points
Default settings: "ascending"

Maximum UTF-8 input bytes: 80000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "assessment_rubrics",
    "text": "{\"criteria\":\"id,name,weight,definition\\nC1,Traceability,2,Claims are linked to identifiable source records.\\nC2,Clarity,1,The method and its limitations are stated explicitly.\",\"levels\":\"id,criterion,points,descriptor\\nL1,C1,0,No identifiable supporting source is provided.\\nL2,C1,2,The main claim cites an identifiable source record.\\nL3,C2,0,The method or its limitations are absent.\\nL4,C2,2,The method and at least one limitation are explicit.\",\"evidence\":\"id,name,text\\nE1,Workshop report,The conclusion uses record DATA-7. The method compares two samples and cannot establish causality.\",\"ratings\":\"id,evidence,criterion,level\\nH1,E1,C1,L2\",\"definitions_approved\":\"yes\",\"version\":\"RUBRIC-1\",\"detail\":\"detailed\",\"sort_order\":\"source\",\"weight_mode\":\"supplied\",\"missing_rating\":\"incomplete\",\"score_scale\":100,\"rounding_digits\":2,\"level_order\":\"ascending\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "criteria",
        "levels",
        "evidence",
        "ratings",
        "definitions_approved",
        "version",
        "detail",
        "sort_order",
        "weight_mode",
        "missing_rating",
        "score_scale",
        "rounding_digits",
        "level_order"
    ],
    "properties": {
        "criteria": {
            "type": "string",
            "maxLength": 24000
        },
        "levels": {
            "type": "string",
            "maxLength": 24000
        },
        "evidence": {
            "type": "string",
            "maxLength": 24000
        },
        "ratings": {
            "type": "string",
            "maxLength": 24000
        },
        "definitions_approved": {
            "type": "string",
            "enum": [
                "no",
                "yes"
            ]
        },
        "version": {
            "type": "string",
            "maxLength": 120
        },
        "detail": {
            "type": "string",
            "enum": [
                "brief",
                "detailed"
            ]
        },
        "sort_order": {
            "type": "string",
            "enum": [
                "source",
                "id"
            ]
        },
        "weight_mode": {
            "type": "string",
            "enum": [
                "supplied",
                "equal"
            ]
        },
        "missing_rating": {
            "type": "string",
            "enum": [
                "incomplete",
                "zero"
            ]
        },
        "score_scale": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000
        },
        "rounding_digits": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4
        },
        "level_order": {
            "type": "string",
            "enum": [
                "ascending",
                "descending"
            ]
        }
    }
}

Literature screening review

literature_screening

Review supplied abstracts against explicit inclusion and exclusion criteria, keep evidence quotations and show reviewer disagreements before selection.

Input and configuration fields

Essential settings
records — Supplied publication records CSV
Headers id,title,year,language,text. Up to 15 unique records; title: 200 UTF-8 bytes; text: 1,200 bytes. year is 1900–2100. language is an exact two- or three-letter lowercase tag with an optional uppercase region. Supply the abstract or a bounded full-text excerpt; no publication is retrieved. Each CSV is limited to 24,000 UTF-8 bytes; exact comma-separated headers and valid CSV quoting are required. Links, encoded URLs, markup and control characters are rejected.
Default settings: ""
criteria — Screening criteria CSV
Headers id,kind,definition. Up to 8 unique criteria. kind is include or exclude; definition: 300 UTF-8 bytes. At most 60 record-and-criterion pairs are accepted. Every criterion is reviewed for every supplied record. Each CSV is limited to 24,000 UTF-8 bytes; exact comma-separated headers and valid CSV quoting are required. Links, encoded URLs, markup and control characters are rejected.
Default settings: ""
reviews — Supplied human reviews CSV
Headers id,record,reviewer,decision,note. Optional rows, up to 30; a header-only file is valid. record must exist; reviewer is an uppercase ID. decision is include, exclude or unclear. note: 300 UTF-8 bytes, optionally empty. At most two distinct reviewers per record and one row per reviewer-and-record pair. Reviewer identities are labels, not verified accounts. Each CSV is limited to 24,000 UTF-8 bytes; exact comma-separated headers and valid CSV quoting are required. Links, encoded URLs, markup and control characters are rejected.
Default settings: ""
definitions_approved — Confirm supplied definitions
Explicit confirmation applies to these exact criterion definitions and performance levels or this exact codebook. Changing any definition requires renewed confirmation. It does not approve an AI result.
no — Not confirmed · yes — Confirmed for this review
Default settings: "no"
version — Confirmed definition version
A required source version label of at most 120 UTF-8 bytes. The tool does not retrieve or verify an external version.
Default settings: "VERSION-1"
Advanced settings
detail — Quotation detail
Brief quotes are limited to 60 characters, detailed quotes to 120. Every quote must be an exact contiguous source passage. Sources are never rewritten or translated.
brief — Brief · detailed — Detailed
Default settings: "detailed"
sort_order — Result order
Source order follows the first supplied source appearance; identifier order sorts by source ID. Within a source, the original proposed criterion or code order remains stable. Sorting does not change calculations or warnings.
source — Source order · id — Source identifier
Default settings: "source"
year_from — First publication year
Inclusive lower bound from 1900 to 2100. Out-of-range records remain in the result with an explicit flag.
Default settings: 2000
year_to — Last publication year
Inclusive upper bound from 1900 to 2100; must not precede the lower bound. No year is inferred from source prose.
Default settings: 2100
languages — Allowed supplied language tags
Optional comma-separated list of up to 12 exact tags such as en,de,pl. Tags use two or three lowercase letters with an optional uppercase region, for example en-GB. Empty disables this metadata check. No translation or language detection is performed.
Default settings: ""
reviewer_policy — Required human reviewers
Require one or two distinct supplied reviewers per record. Missing reviewers, disagreement and unclear decisions are flagged independently of AI criterion suggestions.
one — One human reviewer · two — Two human reviewers
Default settings: "two"
duplicate_policy — Duplicate-title review
Flag compares titles after trimming, whitespace normalization and Unicode lowercase conversion. Ignore disables only this duplicate-title heuristic. No record is removed or merged.
flag — Flag for review · ignore — Skip duplicate-title flags
Default settings: "flag"
screening_stage — Declared supplied evidence scope
Distinguishes supplied title/abstract material from supplied full-text excerpts in the model request and report. Neither setting fetches a publication or establishes that an excerpt is complete.
title_abstract — Supplied title and abstract · supplied_full_text — Supplied full-text excerpt
Default settings: "title_abstract"

Maximum UTF-8 input bytes: 80000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "literature_screening",
    "text": "{\"records\":\"id,title,year,language,text\\nR1,Workshop training comparison,2024,en,The study compares two training groups of adult participants. Allocation was not randomized.\\nR2,Workshop training comparison,2023,en,The report describes a single training group without a comparison group.\",\"criteria\":\"id,kind,definition\\nC1,include,A comparison group is described.\\nC2,exclude,Participants are children.\",\"reviews\":\"id,record,reviewer,decision,note\\nV1,R1,REVIEWER1,include,Comparison group is described.\\nV2,R1,REVIEWER2,unclear,Check whether the comparison meets the protocol.\",\"definitions_approved\":\"yes\",\"version\":\"PROTOCOL-1\",\"detail\":\"detailed\",\"sort_order\":\"source\",\"year_from\":2020,\"year_to\":2026,\"languages\":\"en\",\"reviewer_policy\":\"two\",\"duplicate_policy\":\"flag\",\"screening_stage\":\"title_abstract\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "records",
        "criteria",
        "reviews",
        "definitions_approved",
        "version",
        "detail",
        "sort_order",
        "year_from",
        "year_to",
        "languages",
        "reviewer_policy",
        "duplicate_policy",
        "screening_stage"
    ],
    "properties": {
        "records": {
            "type": "string",
            "maxLength": 24000
        },
        "criteria": {
            "type": "string",
            "maxLength": 24000
        },
        "reviews": {
            "type": "string",
            "maxLength": 24000
        },
        "definitions_approved": {
            "type": "string",
            "enum": [
                "no",
                "yes"
            ]
        },
        "version": {
            "type": "string",
            "maxLength": 120
        },
        "detail": {
            "type": "string",
            "enum": [
                "brief",
                "detailed"
            ]
        },
        "sort_order": {
            "type": "string",
            "enum": [
                "source",
                "id"
            ]
        },
        "year_from": {
            "type": "integer",
            "minimum": 1900,
            "maximum": 2100
        },
        "year_to": {
            "type": "integer",
            "minimum": 1900,
            "maximum": 2100
        },
        "languages": {
            "type": "string",
            "maxLength": 120
        },
        "reviewer_policy": {
            "type": "string",
            "enum": [
                "one",
                "two"
            ]
        },
        "duplicate_policy": {
            "type": "string",
            "enum": [
                "flag",
                "ignore"
            ]
        },
        "screening_stage": {
            "type": "string",
            "enum": [
                "title_abstract",
                "supplied_full_text"
            ]
        }
    }
}

Interview coding with a maintained codebook

interview_coding

Assign supplied codes to interview segments with exact quotations, review uncoded passages and conflicting proposals, and count segments or interviews.

Input and configuration fields

Essential settings
segments — Interview segments CSV
Headers id,interview,speaker,text. Up to 20 unique segments. interview is an uppercase ID; speaker is a supplied label of at most 80 UTF-8 bytes; text: 1,200 bytes. All IDs begin with a letter and use uppercase letters, digits, underscores or hyphens, at most 24 characters. Use pseudonymous labels where appropriate. Each CSV is limited to 24,000 UTF-8 bytes; exact comma-separated headers and valid CSV quoting are required. Links, encoded URLs, markup and control characters are rejected.
Default settings: ""
codebook — Confirmed codebook CSV
Headers id,name,definition,exclusion,group. Up to 12 unique code IDs. name: 120 UTF-8 bytes; definition and exclusion: 300 bytes each. exclusion may be empty. A nonempty uppercase group ID marks mutually exclusive codes. Empty group means no exclusivity group. The codebook defines interpretation boundaries; no new code is invented. Each CSV is limited to 24,000 UTF-8 bytes; exact comma-separated headers and valid CSV quoting are required. Links, encoded URLs, markup and control characters are rejected.
Default settings: ""
definitions_approved — Confirm supplied definitions
Explicit confirmation applies to these exact criterion definitions and performance levels or this exact codebook. Changing any definition requires renewed confirmation. It does not approve an AI result.
no — Not confirmed · yes — Confirmed for this review
Default settings: "no"
version — Confirmed definition version
A required source version label of at most 120 UTF-8 bytes. The tool does not retrieve or verify an external version.
Default settings: "VERSION-1"
Advanced settings
detail — Quotation detail
Brief quotes are limited to 60 characters, detailed quotes to 120. Every quote must be an exact contiguous source passage. Sources are never rewritten or translated.
brief — Brief · detailed — Detailed
Default settings: "detailed"
sort_order — Result order
Source order follows the first supplied source appearance; identifier order sorts by source ID. Within a source, the original proposed criterion or code order remains stable. Sorting does not change calculations or warnings.
source — Source order · id — Source identifier
Default settings: "source"
coding_mode — Coding mode
Single permits at most one proposed code per segment and requires maximum codes to be 1. Multiple allows several distinct supplied codes, bounded by the configured maximum.
single — One code per segment · multiple — Multiple codes per segment
Default settings: "multiple"
max_codes — Maximum codes per segment
Integer from 1 to 3. Every proposed code requires its own exact quotation from that segment. Repeated codes are rejected; empty code arrays remain explicitly uncoded.
Default settings: 3
speaker_filter — Exact speaker filter
Optional exact supplied speaker label, up to 80 UTF-8 bytes. No identity inference is performed. Excluded segment counts remain visible.
Default settings: ""
interview_filter — Exact interview filter
Optional existing interview ID. The two filters are combined; an empty resulting selection is rejected. No excluded segment is sent to the model.
Default settings: ""
minimum_count — Low-frequency review threshold
Integer from 1 to 20 applied to the selected counting unit. Codes below the threshold are flagged, including unused codes; no rows are suppressed.
Default settings: 2
count_mode — Code frequency unit
Segments counts each segment at most once per code. Interviews counts each supplied interview ID at most once per code, even when several segments match. Neither count is a population estimate.
segments — Distinct segments · interviews — Distinct interviews
Default settings: "segments"
uncoded_policy — Uncoded segment handling
Flag adds a review finding for uncoded segments. Report retains the uncoded result rows without that extra finding. It never fabricates a supporting quotation or code.
flag — Flag for review · report — Report uncoded rows without extra flag
Default settings: "flag"

Maximum UTF-8 input bytes: 80000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "interview_coding",
    "text": "{\"segments\":\"id,interview,speaker,text\\nS1,I1,Participant A,The handover checklist helped me locate the missing files.\\nS2,I1,Participant A,I still needed a colleague to explain the approval step.\\nS3,I2,Participant B,The process takes place every Monday.\",\"codebook\":\"id,name,definition,exclusion,group\\nC1,Helpful guidance,An explicit description of guidance that helped complete work.,A neutral mention without reported help.,\\nC2,Unclear approval,An explicit need for clarification of the approval procedure.,A statement that approval was already clear.,APPROVAL\\nC3,Clear approval,An explicit statement that the approval procedure was clear.,A request for help understanding approval.,APPROVAL\",\"definitions_approved\":\"yes\",\"version\":\"CODEBOOK-1\",\"detail\":\"detailed\",\"sort_order\":\"source\",\"coding_mode\":\"multiple\",\"max_codes\":3,\"speaker_filter\":\"\",\"interview_filter\":\"\",\"minimum_count\":2,\"count_mode\":\"segments\",\"uncoded_policy\":\"flag\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "segments",
        "codebook",
        "definitions_approved",
        "version",
        "detail",
        "sort_order",
        "coding_mode",
        "max_codes",
        "speaker_filter",
        "interview_filter",
        "minimum_count",
        "count_mode",
        "uncoded_policy"
    ],
    "properties": {
        "segments": {
            "type": "string",
            "maxLength": 24000
        },
        "codebook": {
            "type": "string",
            "maxLength": 24000
        },
        "definitions_approved": {
            "type": "string",
            "enum": [
                "no",
                "yes"
            ]
        },
        "version": {
            "type": "string",
            "maxLength": 120
        },
        "detail": {
            "type": "string",
            "enum": [
                "brief",
                "detailed"
            ]
        },
        "sort_order": {
            "type": "string",
            "enum": [
                "source",
                "id"
            ]
        },
        "coding_mode": {
            "type": "string",
            "enum": [
                "single",
                "multiple"
            ]
        },
        "max_codes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3
        },
        "speaker_filter": {
            "type": "string",
            "maxLength": 80
        },
        "interview_filter": {
            "type": "string",
            "maxLength": 24
        },
        "minimum_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20
        },
        "count_mode": {
            "type": "string",
            "enum": [
                "segments",
                "interviews"
            ]
        },
        "uncoded_policy": {
            "type": "string",
            "enum": [
                "flag",
                "report"
            ]
        }
    }
}

Recipe quantities and purchasing

recipe_scaling

Scale recipe quantities, apply explicit yields, combine equivalent ingredients and calculate whole packages with an auditable source trail.

Input and configuration fields

Essential settings
ingredients — Recipe ingredients
Up to 30 rows. ingredient_key identifies an explicitly equivalent ingredient; names do not create equivalence. quantity and pack_size use the row unit. yield_percent is the retained percentage after the supplied loss assumption. Empty pack_size leaves purchasing unresolved. Notes are limited to 160 UTF-8 bytes.
base_portions — Base portions
Positive decimal up to 10000; the portion count represented by the original recipe.
Default settings: "4"
target_portions — Target portions
Positive decimal up to 10000; used only in portion-ratio mode.
Default settings: "8"
Advanced settings
scaling_mode — Scaling method
Use target portions divided by base portions, or the explicit factor. Both input fields remain strictly validated.
portions — Portion ratio · factor — Explicit factor
Default settings: "portions"
scale_factor — Explicit scaling factor
Positive decimal up to 100; used only in explicit-factor mode.
Default settings: "2"
apply_yield — Apply supplied yields
Divide the scaled net amount by each row’s supplied yield fraction. Disabled mode treats the supplied quantity as the required amount before reserve.
yes — Enabled · no — Disabled
Default settings: "yes"
reserve_percent — Reserve percentage
Nonnegative decimal from 0 to 100, applied to the calculated material requirement before package rounding.
Default settings: "0"
aggregation — Ingredient aggregation
Combine only equal ingredient_key values with compatible dimensions, or keep each source row separate. Different mass and volume dimensions under one combined key are rejected.
ingredient — Combine matching ingredient keys · source — Source order
Default settings: "ingredient"
unit_display — Displayed quantity units
Use base mass and volume units, or convert them to kg and L. Count quantities remain pcs.
base — g, ml and pcs · large — kg, L and pcs
Default settings: "base"
purchase_packs — Calculate whole packages
Round the exact requirement upward to whole supplied packages. Missing or conflicting package sizes remain visible; no purchase is placed.
yes — Enabled · no — Disabled
Default settings: "yes"
rounding_digits — Displayed decimal places
Display zero to six decimal places. Exact comparisons and whole-pack rounding use unrounded values.
Default settings: 3
rounding_mode — Display rounding
Round halfway values upward, or always round a positive remainder upward. This affects display only.
half_up — Round half upward · up — Round upward
Default settings: "half_up"
sort_order — Result order
Preserve source order or place rows with calculation gaps and AI review concerns first.
source — Source order · issues_first — Review concerns first
Default settings: "source"
include_evidence — Show exact source notes
Include exact source notes in the table and exports, or retain only record identifiers. Source validation always remains active.
yes — Enabled · no — Disabled
Default settings: "yes"

Maximum UTF-8 input bytes: 160000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "recipe_scaling",
    "text": "{\"ingredients\":\"id,ingredient_key,name,quantity,unit,yield_percent,pack_size,note\\nI1,FLOUR,Flour,0.5,kg,100,1,Keep the flour type unchanged.\\nI2,CARROT,Carrots,300,g,80,500,Yield includes the supplied trimming allowance.\\nI3,FLOUR,Flour for dusting,100,g,100,1000,Same flour stock as I1.\",\"base_portions\":\"4\",\"target_portions\":\"10\",\"scaling_mode\":\"portions\",\"scale_factor\":\"2\",\"apply_yield\":\"yes\",\"reserve_percent\":\"10\",\"aggregation\":\"ingredient\",\"unit_display\":\"base\",\"purchase_packs\":\"yes\",\"rounding_digits\":3,\"rounding_mode\":\"half_up\",\"sort_order\":\"source\",\"include_evidence\":\"yes\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "ingredients": {
            "type": "string",
            "maxLength": 100000
        },
        "base_portions": {
            "type": "string",
            "default": "4",
            "maxLength": 32
        },
        "target_portions": {
            "type": "string",
            "default": "8",
            "maxLength": 32
        },
        "scaling_mode": {
            "type": "string",
            "default": "portions",
            "enum": [
                "portions",
                "factor"
            ]
        },
        "scale_factor": {
            "type": "string",
            "default": "2",
            "maxLength": 32
        },
        "apply_yield": {
            "type": "string",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ]
        },
        "reserve_percent": {
            "type": "string",
            "default": "0",
            "maxLength": 32
        },
        "aggregation": {
            "type": "string",
            "default": "ingredient",
            "enum": [
                "ingredient",
                "source"
            ]
        },
        "unit_display": {
            "type": "string",
            "default": "base",
            "enum": [
                "base",
                "large"
            ]
        },
        "purchase_packs": {
            "type": "string",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ]
        },
        "rounding_digits": {
            "type": "integer",
            "default": 3,
            "minimum": 0,
            "maximum": 6
        },
        "rounding_mode": {
            "type": "string",
            "default": "half_up",
            "enum": [
                "half_up",
                "up"
            ]
        },
        "sort_order": {
            "type": "string",
            "default": "source",
            "enum": [
                "source",
                "issues_first"
            ]
        },
        "include_evidence": {
            "type": "string",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ]
        }
    },
    "required": [
        "ingredients"
    ]
}

Room measurements and material quantities

room_quantities

Convert rectangular room measurements into surface quantities and material requirements using supplied coverage, coats, reserve and package sizes.

Input and configuration fields

Essential settings
rooms — Room measurements
Up to 20 rectangular rooms. Each row assigns one supplied product to its target surface. All dimensions use the selected common unit. A separate row is required for a different surface or product.
openings — Opening measurements
Up to 40 openings linked to room_id. Width × height × quantity is deducted only from walls when subtraction is enabled. A header-only CSV represents no openings. Opening geometry and overlap are not inferred.
products — Product coverage definitions
Up to 20 products. target is floor, ceiling or walls; coverage is m² per L or kg per coat. unit is L or kg. Empty pack_size leaves purchasing unresolved. All rates are supplied assumptions, not retrieved specifications.
dimension_unit — Measurement unit
Apply m, cm or mm consistently to every room and opening dimension. Outputs use m and m².
m — m · cm — cm · mm — mm
Default settings: "m"
Advanced settings
opening_policy — Opening deductions
Subtract linked opening rectangles from wall area, or retain gross area. Floor and ceiling calculations do not deduct openings.
subtract — Subtract from walls · ignore — Keep gross wall area
Default settings: "subtract"
reserve_percent — Reserve percentage
Nonnegative decimal from 0 to 100, applied to the calculated material requirement before package rounding.
Default settings: "10"
coats_mode — Coat-count source
Use the supplied coat count of each product, or one explicit global coat count.
product — Aggregate by product · global — Global coat count
Default settings: "product"
coats — Global coat count
Integer from 1 to 10, used only when the global coat-count source is selected.
Default settings: 2
purchase_packs — Calculate whole packages
Round the exact requirement upward to whole supplied packages. Missing or conflicting package sizes remain visible; no purchase is placed.
yes — Enabled · no — Disabled
Default settings: "yes"
pack_scope — Package rounding scope
Aggregate requirements for each product before whole-package rounding, or round each room separately. No stock is deducted automatically.
product — Aggregate by product · room — Round each room separately
Default settings: "product"
rounding_digits — Displayed decimal places
Display zero to six decimal places. Exact comparisons and whole-pack rounding use unrounded values.
Default settings: 3
rounding_mode — Display rounding
Round halfway values upward, or always round a positive remainder upward. This affects display only.
half_up — Round half upward · up — Round upward
Default settings: "half_up"
sort_order — Result order
Preserve source order or place rows with calculation gaps and AI review concerns first.
source — Source order · issues_first — Review concerns first
Default settings: "source"
include_evidence — Show exact source notes
Include exact source notes in the table and exports, or retain only record identifiers. Source validation always remains active.
yes — Enabled · no — Disabled
Default settings: "yes"

Maximum UTF-8 input bytes: 160000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "room_quantities",
    "text": "{\"rooms\":\"id,name,length,width,height,product_id,note\\nR1,Workshop,5,4,2.5,P1,Verify the wall measurements before ordering.\\nR2,Store room,3,2,2.5,P1,Use the same supplied wall coating.\",\"openings\":\"id,room_id,width,height,quantity,note\\nO1,R1,1,2,1,Door opening.\\nO2,R1,1.5,1,2,Two windows.\",\"products\":\"id,name,target,coverage,unit,pack_size,coats,note\\nP1,Wall coating,walls,10,L,5,2,Coverage is a supplied planning value per coat.\",\"dimension_unit\":\"m\",\"opening_policy\":\"subtract\",\"reserve_percent\":\"10\",\"coats_mode\":\"product\",\"coats\":2,\"purchase_packs\":\"yes\",\"pack_scope\":\"product\",\"rounding_digits\":3,\"rounding_mode\":\"half_up\",\"sort_order\":\"source\",\"include_evidence\":\"yes\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "rooms": {
            "type": "string",
            "maxLength": 100000
        },
        "openings": {
            "type": "string",
            "maxLength": 100000
        },
        "products": {
            "type": "string",
            "maxLength": 100000
        },
        "dimension_unit": {
            "type": "string",
            "default": "m",
            "enum": [
                "m",
                "cm",
                "mm"
            ]
        },
        "opening_policy": {
            "type": "string",
            "default": "subtract",
            "enum": [
                "subtract",
                "ignore"
            ]
        },
        "reserve_percent": {
            "type": "string",
            "default": "10",
            "maxLength": 32
        },
        "coats_mode": {
            "type": "string",
            "default": "product",
            "enum": [
                "product",
                "global"
            ]
        },
        "coats": {
            "type": "integer",
            "default": 2,
            "minimum": 1,
            "maximum": 10
        },
        "purchase_packs": {
            "type": "string",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ]
        },
        "pack_scope": {
            "type": "string",
            "default": "product",
            "enum": [
                "product",
                "room"
            ]
        },
        "rounding_digits": {
            "type": "integer",
            "default": 3,
            "minimum": 0,
            "maximum": 6
        },
        "rounding_mode": {
            "type": "string",
            "default": "half_up",
            "enum": [
                "half_up",
                "up"
            ]
        },
        "sort_order": {
            "type": "string",
            "default": "source",
            "enum": [
                "source",
                "issues_first"
            ]
        },
        "include_evidence": {
            "type": "string",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ]
        }
    },
    "required": [
        "rooms",
        "openings",
        "products"
    ]
}

Crop spacing and rotation review

crop_planning

Calculate rectangular planting capacities and review occupancy conflicts, family intervals and missing history without inventing growing rules.

Input and configuration fields

Essential settings
beds — Measured beds
Up to 20 rectangular beds. Every row has its own m, cm or mm unit. A planting occupies the whole referenced bed for conflict checks.
plantings — Planned crops
Up to 30 plantings with inclusive start and end dates. family is an explicit uppercase key, not a botanical classification inferred from the crop name. Spacing uses the selected common spacing unit.
history — Recorded previous crops
Up to 40 historical records with inclusive dates. A header-only CSV is allowed. Records are checked for overlap and same-family intervals; missing external history cannot be reconstructed.
rules — Supplied family intervals
Up to 20 unique family rules. break_days is an integer from 0 to 3650, counting complete clear days. A header-only CSV is allowed; missing rules remain visible in explicit-rule mode.
Advanced settings
spacing_unit — Spacing and edge-margin unit
Apply m, cm or mm to both plant and row spacing and the common edge margin. Bed dimensions retain their own explicitly supplied units.
m — m · cm — cm · mm — mm
Default settings: "cm"
edge_margin — Edge margin on each side
Nonnegative decimal up to 10000 in the spacing unit. Twice this margin is removed from both bed dimensions before counting positions.
Default settings: "0"
path_percent — Planning allowance for paths
Nonnegative decimal from 0 to 100. Reduce the rectangular grid count by this percentage and round down. This is an aggregate allowance, not a geometric path layout.
Default settings: "0"
rotation_mode — Rotation-rule source
Use explicit rules for each family, or the supplied global interval. No agronomic interval is inferred automatically.
rules — Explicit family rules · default — Global supplied interval
Default settings: "rules"
default_break_days — Global clear-day interval
Integer from 0 to 3650, used only in global-interval mode. The interval applies to the same supplied family key.
Default settings: 365
overlap_policy — Counts during occupancy conflicts
Retain draft capacities with explicit overlap warnings, or set the affected planting counts to zero. Overlaps with supplied history also count.
flag — Flag conflicts and retain draft counts · block_count — Suppress counts for overlapping plantings
Default settings: "flag"
history_status — Historical coverage declaration
Declare whether the supplied historical records are complete for the intended review. This declaration does not verify external records.
complete — Declared complete · incomplete — Declared incomplete
Default settings: "incomplete"
date_from — Display interval start
Optional YYYY-MM-DD date from 2000 through 2100. Include plantings that overlap the display interval; all supplied records still participate in conflict checks.
Default settings: ""
date_to — Display interval end
Optional inclusive YYYY-MM-DD end date from 2000 through 2100. Empty means no upper display bound.
Default settings: ""
rounding_digits — Displayed decimal places
Display zero to six decimal places. Exact comparisons and whole-pack rounding use unrounded values.
Default settings: 3
sort_order — Result order
Preserve source order or place rows with calculation gaps and AI review concerns first.
source — Source order · issues_first — Review concerns first
Default settings: "source"
include_evidence — Show exact source notes
Include exact source notes in the table and exports, or retain only record identifiers. Source validation always remains active.
yes — Enabled · no — Disabled
Default settings: "yes"

Maximum UTF-8 input bytes: 160000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "crop_planning",
    "text": "{\"beds\":\"id,name,length,width,unit,note\\nB1,North bed,4,1.2,m,Rectangular measured bed.\\nB2,South bed,3,1,m,Separate planting area.\",\"plantings\":\"id,bed_id,crop,family,start,end,row_spacing,plant_spacing,note\\nC1,B1,Carrots,APIACEAE,2027-03-01,2027-06-30,30,10,Check the supplied row spacing.\\nC2,B1,Beetroot,AMARANTHACEAE,2027-06-15,2027-09-30,30,15,The planned dates overlap the earlier crop.\\nC3,B2,Peas,FABACEAE,2027-03-01,2027-06-01,40,10,Review the available history.\",\"history\":\"id,bed_id,family,start,end,note\\nH1,B1,APIACEAE,2026-03-01,2026-08-31,Recorded previous crop.\",\"rules\":\"id,family,break_days,note\\nT1,APIACEAE,365,Explicit supplied interval.\\nT2,AMARANTHACEAE,180,Explicit supplied interval.\",\"spacing_unit\":\"cm\",\"edge_margin\":\"0\",\"path_percent\":\"10\",\"rotation_mode\":\"rules\",\"default_break_days\":365,\"overlap_policy\":\"flag\",\"history_status\":\"incomplete\",\"date_from\":\"\",\"date_to\":\"\",\"rounding_digits\":3,\"sort_order\":\"source\",\"include_evidence\":\"yes\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "beds": {
            "type": "string",
            "maxLength": 100000
        },
        "plantings": {
            "type": "string",
            "maxLength": 100000
        },
        "history": {
            "type": "string",
            "maxLength": 100000
        },
        "rules": {
            "type": "string",
            "maxLength": 100000
        },
        "spacing_unit": {
            "type": "string",
            "default": "cm",
            "enum": [
                "m",
                "cm",
                "mm"
            ]
        },
        "edge_margin": {
            "type": "string",
            "default": "0",
            "maxLength": 32
        },
        "path_percent": {
            "type": "string",
            "default": "0",
            "maxLength": 32
        },
        "rotation_mode": {
            "type": "string",
            "default": "rules",
            "enum": [
                "rules",
                "default"
            ]
        },
        "default_break_days": {
            "type": "integer",
            "default": 365,
            "minimum": 0,
            "maximum": 3650
        },
        "overlap_policy": {
            "type": "string",
            "default": "flag",
            "enum": [
                "flag",
                "block_count"
            ]
        },
        "history_status": {
            "type": "string",
            "default": "incomplete",
            "enum": [
                "complete",
                "incomplete"
            ]
        },
        "date_from": {
            "type": "string",
            "default": "",
            "maxLength": 32
        },
        "date_to": {
            "type": "string",
            "default": "",
            "maxLength": 32
        },
        "rounding_digits": {
            "type": "integer",
            "default": 3,
            "minimum": 0,
            "maximum": 6
        },
        "sort_order": {
            "type": "string",
            "default": "source",
            "enum": [
                "source",
                "issues_first"
            ]
        },
        "include_evidence": {
            "type": "string",
            "default": "yes",
            "enum": [
                "yes",
                "no"
            ]
        }
    },
    "required": [
        "beds",
        "plantings",
        "history",
        "rules"
    ]
}

Script continuity review

script_continuity

Compare declared scene states against maintained continuity rules and inspect exact narrative evidence with a separate AI support assessment.

Input and configuration fields

Essential settings
scenes — Scenes
CSV columns id,day,order,text. Up to 40 scenes; day and order are integers 1–999, and each day/order pair must be unique. Scene text is limited to 1200 UTF-8 bytes.
Default settings: ""
states — Declared continuity states
CSV columns id,scene,entity,kind,state,quote. Up to 20 state records. kind is role, prop or costume. Each quote must be an exact passage of its referenced scene, at most 240 UTF-8 bytes. One record per scene, entity and kind. State equality uses exact text, including spelling and case.
Default settings: ""
rules — Maintained continuity rules
CSV columns id,entity,kind,scope,policy,description. Up to 20 rules. scope is same_day or whole_story; policy is constant or track. Entity and kind must match exactly. Descriptions are limited to 240 UTF-8 bytes.
Default settings: ""
Advanced settings
day_from — First story day
Inclusive lower story-day boundary. Only selected state records are reviewed.
Default settings: 1
day_to — Last story day
Inclusive upper story-day boundary, not earlier than the first story day.
Default settings: 999
kind_filter — Continuity category
Limit state evidence to one maintained category.
all — All · role — Role · prop — Prop · costume — Costume
Default settings: "all"
entity_filter — Exact entity filter
An optional exact entity name. Empty includes all entities; spelling and case must match maintained records.
Default settings: ""
rule_filter — Rule policy
Constant flags declared state changes; track documents changes without treating them as conflicts. Filtering changes the set of applicable rules.
all — All · constant — Constant state required · track — Track changes
Default settings: "all"
sort_order — Evidence order
Order state evidence chronologically or by exact entity name. Rule comparisons retain maintained rule and scene order.
chronology — Story chronology · entity — Entity
Default settings: "chronology"
show_consistent — Show unchanged comparisons
Include comparisons where the declared state remains identical. Hidden unchanged comparisons are counted explicitly; source evidence always remains visible.
Default settings: true
include_gaps — Identify missing rules
Add a finding for selected state records without an applicable maintained rule.
Default settings: true
detail — AI evidence length
Brief excerpts are limited to 120 characters, detailed excerpts to 240. Exact source language is retained. Very large inputs can still be rejected.
brief — Brief evidence · detailed — Detailed evidence
Default settings: "brief"
baseline — Script baseline
A supplied version or revision label displayed with every evidence and comparison row.
Default settings: "V1"

Maximum UTF-8 input bytes: 90000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "script_continuity",
    "text": "{\"scenes\":\"id,day,order,text\\nS1,1,1,Mara wears a red coat and carries a brass key.\\nS2,1,2,Mara wears a blue coat and carries a brass key.\",\"states\":\"id,scene,entity,kind,state,quote\\nE1,S1,Mara,costume,red coat,Mara wears a red coat\\nE2,S2,Mara,costume,blue coat,Mara wears a blue coat\",\"rules\":\"id,entity,kind,scope,policy,description\\nR1,Mara,costume,same_day,constant,The coat remains unchanged during the same story day.\",\"day_from\":1,\"day_to\":999,\"kind_filter\":\"all\",\"entity_filter\":\"\",\"rule_filter\":\"all\",\"sort_order\":\"chronology\",\"show_consistent\":true,\"include_gaps\":true,\"detail\":\"brief\",\"baseline\":\"V1\"}"
}
Complete configuration schema
{
    "type": "object",
    "properties": {
        "scenes": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40000
        },
        "states": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40000
        },
        "rules": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40000
        },
        "day_from": {
            "type": "integer",
            "minimum": 1,
            "maximum": 999
        },
        "day_to": {
            "type": "integer",
            "minimum": 1,
            "maximum": 999
        },
        "kind_filter": {
            "type": "string",
            "enum": [
                "all",
                "role",
                "prop",
                "costume"
            ],
            "minLength": 1,
            "maxLength": 40000
        },
        "entity_filter": {
            "type": "string",
            "minLength": 0,
            "maxLength": 120
        },
        "rule_filter": {
            "type": "string",
            "enum": [
                "all",
                "constant",
                "track"
            ],
            "minLength": 1,
            "maxLength": 40000
        },
        "sort_order": {
            "type": "string",
            "enum": [
                "chronology",
                "entity"
            ],
            "minLength": 1,
            "maxLength": 40000
        },
        "show_consistent": {
            "type": "boolean"
        },
        "include_gaps": {
            "type": "boolean"
        },
        "detail": {
            "type": "string",
            "enum": [
                "brief",
                "detailed"
            ],
            "minLength": 1,
            "maxLength": 40000
        },
        "baseline": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
        }
    },
    "required": [
        "scenes",
        "states",
        "rules",
        "day_from",
        "day_to",
        "kind_filter",
        "entity_filter",
        "rule_filter",
        "sort_order",
        "show_consistent",
        "include_gaps",
        "detail",
        "baseline"
    ],
    "additionalProperties": false
}

Reproducible experiment design

experiment_design

Build a complete, bounded non-clinical run matrix from maintained factors and levels, with seeded ordering and source-bound AI factor review.

Input and configuration fields

Essential settings
factors — Factors and purpose
CSV columns id,name,purpose. Between 1 and 6 factors. Names:120 UTF-8 bytes; purpose:600. The AI classifies only the supplied purpose and cites an exact passage.
Default settings: ""
levels — Maintained factor levels
CSV columns id,factor,value. Each factor needs 2–6 distinct values and valid level IDs. Up to 36 levels; each value is at most 120 UTF-8 bytes. Numeric-looking values remain literal labels and are never converted to measurements.
Default settings: ""
combinations — Explicit allowed combinations
Used only for allowed_combinations mode. CSV starts with id, followed by every factor ID in the selected factor order. Each cell contains a level ID belonging to that factor. Duplicate combinations are rejected. Leave empty for full_factorial.
Default settings: ""
design_mode — Combination mode
Full factorial enumerates every maintained level combination. Explicit mode includes only the supplied allowed combinations. Neither mode infers safety or feasibility.
full_factorial — Full factorial · allowed_combinations — Explicit allowed combinations
Default settings: "full_factorial"
objective — Maintained objective
A supplied non-clinical objective used as context for source-bound factor review and displayed unchanged in the result. It cannot authorize new levels or experiments.
Default settings: ""
Advanced settings
replicates — Replicates per combination
Repeat every included combination equally. Replication does not establish statistical power or independence.
Default settings: 2
block_size — Runs per block
Consecutive runs are grouped into blocks of this size; the final block may be shorter. These are scheduling groups, not inferred scientific blocking factors.
Default settings: 4
randomization — Run ordering
None preserves generated order. Within blocks shuffles only inside the original blocks. Global shuffles all runs before block assignment. A versioned SHA256 ranking and seed produce reproducible ordering.
none — No randomization · within_blocks — Randomize within blocks · global — Randomize globally
Default settings: "within_blocks"
seed — Reproducibility seed
Integer 0–2147483647. The same complete inputs and ordering algorithm produce the same matrix. This seed is not a security mechanism.
Default settings: 42
run_limit — Maximum complete run count
Reject the whole design if combinations multiplied by replicates exceed this limit. No random subset or silent truncation is produced.
Default settings: 180
factor_order — Factor order
Preserve CSV factor order or sort by factor ID. Explicit combination headers must follow this selected order.
source — Source order · id — ID order
Default settings: "source"
level_order — Level order
Preserve level CSV order within each factor or sort by level ID. This changes full-factorial enumeration and may change block membership.
source — Source order · id — ID order
Default settings: "source"
replicate_order — Replication order
Grouped places replicates of each combination together. Interleaved traverses all combinations once per replicate before randomization.
grouped — Group by combination · interleaved — Interleave replicates
Default settings: "interleaved"
domain — Non-clinical work area
The supported scope is non-clinical process, material, software or educational work. The tool does not establish safety, approvals or suitability for human experimentation.
manufacturing — Manufacturing · materials — Materials · software — Software · education — Education
Default settings: "manufacturing"
design_name — Design reference
A supplied reference displayed with all runs and factor reviews.
Default settings: "DESIGN1"
detail — AI evidence length
Brief excerpts are limited to 120 characters, detailed excerpts to 240. Exact source language is retained. Very large inputs can still be rejected.
brief — Brief evidence · detailed — Detailed evidence
Default settings: "brief"

Maximum UTF-8 input bytes: 90000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "experiment_design",
    "text": "{\"factors\":\"id,name,purpose\\nF1,Print speed,Compare print speed settings for visible edge quality.\\nF2,Cooling setting,Compare controlled cooling settings while reviewing print quality.\",\"levels\":\"id,factor,value\\nL1,F1,Slow\\nL2,F1,Fast\\nL3,F2,Low\\nL4,F2,High\",\"combinations\":\"\",\"design_mode\":\"full_factorial\",\"replicates\":2,\"block_size\":4,\"randomization\":\"within_blocks\",\"seed\":42,\"run_limit\":180,\"factor_order\":\"source\",\"level_order\":\"source\",\"replicate_order\":\"interleaved\",\"domain\":\"manufacturing\",\"objective\":\"Compare maintained printer settings on non-clinical sample parts.\",\"design_name\":\"DESIGN1\",\"detail\":\"brief\"}"
}
Complete configuration schema
{
    "type": "object",
    "properties": {
        "factors": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40000
        },
        "levels": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40000
        },
        "combinations": {
            "type": "string",
            "minLength": 0,
            "maxLength": 40000
        },
        "design_mode": {
            "type": "string",
            "enum": [
                "full_factorial",
                "allowed_combinations"
            ],
            "minLength": 1,
            "maxLength": 40000
        },
        "replicates": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10
        },
        "block_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 180
        },
        "randomization": {
            "type": "string",
            "enum": [
                "none",
                "within_blocks",
                "global"
            ],
            "minLength": 1,
            "maxLength": 40000
        },
        "seed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
        },
        "run_limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 180
        },
        "factor_order": {
            "type": "string",
            "enum": [
                "source",
                "id"
            ],
            "minLength": 1,
            "maxLength": 40000
        },
        "level_order": {
            "type": "string",
            "enum": [
                "source",
                "id"
            ],
            "minLength": 1,
            "maxLength": 40000
        },
        "replicate_order": {
            "type": "string",
            "enum": [
                "grouped",
                "interleaved"
            ],
            "minLength": 1,
            "maxLength": 40000
        },
        "domain": {
            "type": "string",
            "enum": [
                "manufacturing",
                "materials",
                "software",
                "education"
            ],
            "minLength": 1,
            "maxLength": 40000
        },
        "objective": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600
        },
        "design_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
        },
        "detail": {
            "type": "string",
            "enum": [
                "brief",
                "detailed"
            ],
            "minLength": 1,
            "maxLength": 40000
        }
    },
    "required": [
        "factors",
        "levels",
        "combinations",
        "design_mode",
        "replicates",
        "block_size",
        "randomization",
        "seed",
        "run_limit",
        "factor_order",
        "level_order",
        "replicate_order",
        "domain",
        "objective",
        "design_name",
        "detail"
    ],
    "additionalProperties": false
}

Press release

press_release

Write a press release from supplied facts, with approved quotes kept word for word and no invented figures.

Input and configuration fields

Essential settings
facts — Facts
What happened, who is involved, why it matters. Plain notes are enough.
Default settings: ""
organisation — Organisation
Name of the issuing organisation.
Default settings: ""
location — Location
Place of the dateline.
Default settings: ""
release_date — Date
Date as it should appear.
Default settings: ""
approved_quotes — Approved quotes
Only quotes that were approved. Added word for word; the AI writes no quotes.
Default settings: ""
Advanced settings
boilerplate — About the organisation
Standard paragraph, added word for word.
Default settings: ""
contact — Contact details
Added word for word at the end.
Default settings: ""
length — Length
Approximate length of the draft.
short — Short · medium — Medium · long — Long
Default settings: "medium"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "press_release",
    "text": "{\"facts\":\"Riverside Bakery opens a second shop on Mill Street on 12 May. The shop creates 6 jobs. Bread is baked on site with flour from Hartmann Mill.\",\"organisation\":\"Riverside Bakery\",\"location\":\"Bridgeport\",\"release_date\":\"2 May\",\"approved_quotes\":\"\\\"We wanted to bake where our customers live.\\\" Anna Berg, owner\",\"boilerplate\":\"Riverside Bakery has baked bread in Bridgeport since 1994.\",\"contact\":\"Anna Berg, press@riverside-bakery.example\",\"length\":\"short\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "facts": {
            "type": "string",
            "maxLength": 8000,
            "minLength": 1
        },
        "organisation": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "location": {
            "type": "string",
            "maxLength": 80
        },
        "release_date": {
            "type": "string",
            "maxLength": 40
        },
        "approved_quotes": {
            "type": "string",
            "maxLength": 1800
        },
        "boilerplate": {
            "type": "string",
            "maxLength": 1600
        },
        "contact": {
            "type": "string",
            "maxLength": 600
        },
        "length": {
            "type": "string",
            "enum": [
                "short",
                "medium",
                "long"
            ]
        }
    },
    "required": [
        "facts",
        "organisation",
        "length"
    ]
}

Job advertisement

job_ad_create

Write a job advertisement from role facts, with salary and application details kept word for word and exclusionary wording reported.

Input and configuration fields

Essential settings
facts — Facts
Tasks, requirements, what is offered, working hours. Plain notes are enough.
Default settings: ""
job_title — Job title
Added word for word as the title.
Default settings: ""
company — Company
Name of the employer.
Default settings: ""
location — Location
Place of work or remote.
Default settings: ""
salary — Salary
Added word for word. Leave empty if not published.
Default settings: ""
apply_contact — How to apply
Contact or address for applications, added word for word.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "job_ad_create",
    "text": "{\"facts\":\"Support the workshop team. Plan repair orders, order parts, talk to customers. Completed training as a car mechanic required, driving licence required. 38 hours per week, 30 days of holiday.\",\"job_title\":\"Service advisor (all genders)\",\"company\":\"Martens Garage\",\"location\":\"Lindenau\",\"salary\":\"\",\"apply_contact\":\"jobs@martens-garage.example\",\"tone\":\"neutral\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "facts": {
            "type": "string",
            "maxLength": 8000,
            "minLength": 1
        },
        "job_title": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "company": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "location": {
            "type": "string",
            "maxLength": 120
        },
        "salary": {
            "type": "string",
            "maxLength": 120
        },
        "apply_contact": {
            "type": "string",
            "maxLength": 300
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        }
    },
    "required": [
        "facts",
        "job_title",
        "company",
        "tone"
    ]
}

Cover letter for an offer

offer_cover_letter

Write the letter that accompanies an offer: amount, validity and offer number stay exactly as supplied.

Input and configuration fields

Essential settings
facts — Facts
What is offered, for whom, what matters to this customer.
Default settings: ""
customer — Customer
Name of the customer or contact person.
Default settings: ""
offer_number — Offer number
Added word for word.
Default settings: ""
amount — Amount
Added word for word, for example with currency.
Default settings: ""
valid_until — Valid until
Added word for word.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "offer_cover_letter",
    "text": "{\"facts\":\"Offer for repainting the stairwell in the Maple Street building. Two coats, work during office hours, the customer asked for low-odour paint.\",\"customer\":\"Ms Keller, Maple Street Property\",\"offer_number\":\"A-2041\",\"amount\":\"4,180 EUR plus VAT\",\"valid_until\":\"30 June\",\"sender\":\"Jonas Weber, Weber Painters\",\"tone\":\"friendly\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "facts": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "customer": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "offer_number": {
            "type": "string",
            "maxLength": 60
        },
        "amount": {
            "type": "string",
            "maxLength": 60
        },
        "valid_until": {
            "type": "string",
            "maxLength": 60
        },
        "sender": {
            "type": "string",
            "maxLength": 600
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        }
    },
    "required": [
        "facts",
        "customer",
        "tone"
    ]
}

Customer notice about a change

customer_change_notice

Announce a price, terms or service change clearly: what changes, from when, what customers need to do.

Input and configuration fields

Essential settings
facts — Facts
What changes, why, what stays the same, what customers can do.
Default settings: ""
organisation — Organisation
Name of the sender.
Default settings: ""
effective_date — Effective from
Added word for word.
Default settings: ""
contact — Contact details
Added word for word at the end.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "customer_change_notice",
    "text": "{\"facts\":\"The monthly membership rises from 29 to 32 EUR because of higher energy costs. Contracts can be cancelled until the change takes effect. Opening hours stay the same.\",\"organisation\":\"North Gym\",\"effective_date\":\"1 March\",\"contact\":\"service@north-gym.example\",\"tone\":\"neutral\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "facts": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "organisation": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "effective_date": {
            "type": "string",
            "maxLength": 60,
            "minLength": 1
        },
        "contact": {
            "type": "string",
            "maxLength": 600
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        }
    },
    "required": [
        "facts",
        "organisation",
        "effective_date",
        "tone"
    ]
}

Polite decline

polite_decline

Write a respectful decline for a request, a supplier or an application, stating only the reason that was supplied.

Input and configuration fields

Essential settings
situation — Situation
Who asked for what. Plain notes are enough.
Default settings: ""
reason — Reason
Only the reason that may be stated. Leave empty to give no reason.
Default settings: ""
alternative — Alternative
Optional offer or next step.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "polite_decline",
    "text": "{\"situation\":\"Lena Hoffmann applied for the trainee position in our print shop. Interview on 4 April.\",\"reason\":\"Another applicant had more experience with offset printing.\",\"alternative\":\"We keep the application for six months if she agrees.\",\"sender\":\"Tom Richter, Richter Print\",\"tone\":\"friendly\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "situation": {
            "type": "string",
            "maxLength": 4000,
            "minLength": 1
        },
        "reason": {
            "type": "string",
            "maxLength": 1000
        },
        "alternative": {
            "type": "string",
            "maxLength": 1000
        },
        "sender": {
            "type": "string",
            "maxLength": 600
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        }
    },
    "required": [
        "situation",
        "tone"
    ]
}

Payment reminder

payment_reminder

Write a payment reminder at the chosen level. Invoice number, amount and date stay exact; no invented fees or threats.

Input and configuration fields

Essential settings
customer — Customer
Name of the customer.
Default settings: ""
invoice_number — Invoice number
Added word for word.
Default settings: ""
invoice_date — Invoice date
Added word for word.
Default settings: ""
amount — Open amount
Added word for word, with currency.
Default settings: ""
due_date — New due date
Added word for word.
Default settings: ""
level — Level
How firm the reminder is.
friendly — Friendly reminder · second — Second reminder · final — Final reminder
Default settings: "friendly"
payment_details — Payment details
Added word for word.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""
Advanced settings
notes — Notes
Optional: earlier contact, agreed fees, consequences that apply.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "payment_reminder",
    "text": "{\"customer\":\"Baker & Sons\",\"invoice_number\":\"2026-118\",\"invoice_date\":\"3 February\",\"amount\":\"1,240.00 EUR\",\"due_date\":\"20 March\",\"level\":\"friendly\",\"notes\":\"\",\"payment_details\":\"IBAN DE00 0000 0000 0000 0000 00\",\"sender\":\"Accounts team, Lumen Print\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "customer": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "invoice_number": {
            "type": "string",
            "maxLength": 60,
            "minLength": 1
        },
        "invoice_date": {
            "type": "string",
            "maxLength": 40
        },
        "amount": {
            "type": "string",
            "maxLength": 60,
            "minLength": 1
        },
        "due_date": {
            "type": "string",
            "maxLength": 40,
            "minLength": 1
        },
        "level": {
            "type": "string",
            "enum": [
                "friendly",
                "second",
                "final"
            ]
        },
        "notes": {
            "type": "string",
            "maxLength": 2000
        },
        "payment_details": {
            "type": "string",
            "maxLength": 500
        },
        "sender": {
            "type": "string",
            "maxLength": 600
        }
    },
    "required": [
        "customer",
        "invoice_number",
        "amount",
        "due_date",
        "level"
    ]
}

Event invitation

event_invitation

Write an invitation with the date, place and reply details exactly as supplied.

Input and configuration fields

Essential settings
event — Event
Name or kind of event.
Default settings: ""
facts — Facts
Purpose, programme, who is invited, what to bring.
Default settings: ""
date_time — Date and time
Added word for word.
Default settings: ""
place — Place
Added word for word.
Default settings: ""
rsvp — Reply
How and until when to reply. Added word for word.
Default settings: ""
host — Host
Who invites.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "event_invitation",
    "text": "{\"event\":\"Summer party of the Lindenhof tenants\",\"facts\":\"Grill and drinks are provided, please bring a salad or a cake. Children welcome. Music from 18:00.\",\"date_time\":\"Saturday 21 June, 16:00\",\"place\":\"Courtyard, Lindenhof 4\",\"rsvp\":\"Reply to Mrs Yilmaz by 14 June\",\"host\":\"Tenants committee\",\"tone\":\"friendly\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "event": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "facts": {
            "type": "string",
            "maxLength": 5000,
            "minLength": 1
        },
        "date_time": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "place": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "rsvp": {
            "type": "string",
            "maxLength": 160
        },
        "host": {
            "type": "string",
            "maxLength": 160
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        }
    },
    "required": [
        "event",
        "facts",
        "date_time",
        "place",
        "tone"
    ]
}

Cancellation letter

cancellation_letter

Write a clear cancellation letter for a contract with a request for written confirmation. No legal advice.

Input and configuration fields

Essential settings
contract — Contract
Kind of contract and contract number.
Default settings: ""
provider — Provider
Name of the company.
Default settings: ""
end_date — End of contract
For example a date or "next possible date". Added word for word.
Default settings: ""
customer_block — Customer details
Name, address and customer number. Added word for word.
Default settings: ""
Advanced settings
notes — Notes
Optional: reason, direct debit to stop, data to delete.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "cancellation_letter",
    "text": "{\"contract\":\"Mobile contract, customer number 88213\",\"provider\":\"Telecom North\",\"end_date\":\"next possible date\",\"customer_block\":\"Maria Lang, Oak Street 7, 12345 Riverton\",\"notes\":\"Please stop the direct debit after the last invoice.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "contract": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "provider": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "end_date": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "customer_block": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1
        },
        "notes": {
            "type": "string",
            "maxLength": 1500
        }
    },
    "required": [
        "contract",
        "provider",
        "end_date",
        "customer_block"
    ]
}

Complaint letter

complaint_letter

Turn notes into a factual complaint with a clear request and deadline, without threats or invented details.

Input and configuration fields

Essential settings
facts — Facts
What happened, when, what was agreed, what has been tried.
Default settings: ""
recipient — Recipient
Company or person.
Default settings: ""
desired_outcome — Requested outcome
What should happen now.
Default settings: ""
reference — Reference
Order or customer number. Added word for word.
Default settings: ""
deadline — Deadline
Added word for word.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "complaint_letter",
    "text": "{\"facts\":\"Washing machine ordered on 3 March, delivered on 20 March instead of 10 March. Door seal damaged on delivery. Reported by phone on 21 March, no answer since.\",\"recipient\":\"HomeTech Service\",\"desired_outcome\":\"Replacement of the door seal or of the machine.\",\"reference\":\"Order 55821\",\"deadline\":\"14 April\",\"sender\":\"Paul Novak, Elm Road 2\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "facts": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "recipient": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "desired_outcome": {
            "type": "string",
            "maxLength": 800,
            "minLength": 1
        },
        "reference": {
            "type": "string",
            "maxLength": 80
        },
        "deadline": {
            "type": "string",
            "maxLength": 60
        },
        "sender": {
            "type": "string",
            "maxLength": 600
        }
    },
    "required": [
        "facts",
        "recipient",
        "desired_outcome"
    ]
}

Company profile

company_profile

Write an "about us" text in two lengths from supplied facts, without invented figures or superlatives.

Input and configuration fields

Essential settings
facts — Facts
What the company does, for whom, since when, how it works.
Default settings: ""
company — Company
Name of the company.
Default settings: ""
location — Location
Optional.
Default settings: ""
contact — Contact details
Added word for word at the end.
Default settings: ""
Advanced settings
length — Length
Approximate length of the draft.
short — Short · medium — Medium · long — Long
Default settings: "medium"
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "company_profile",
    "text": "{\"facts\":\"Family business for garden furniture, founded 2003. Own workshop with 14 people. Wood from regional forests. Sells to private customers and hotels. Repairs for 10 years.\",\"company\":\"Waldholz Furniture\",\"location\":\"Freiberg\",\"contact\":\"hello@waldholz.example\",\"length\":\"short\",\"tone\":\"friendly\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "facts": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "company": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "location": {
            "type": "string",
            "maxLength": 120
        },
        "contact": {
            "type": "string",
            "maxLength": 600
        },
        "length": {
            "type": "string",
            "enum": [
                "short",
                "medium",
                "long"
            ]
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        }
    },
    "required": [
        "facts",
        "company",
        "length",
        "tone"
    ]
}

Speech draft

speech_draft

Draft a speech for an occasion from supplied facts, with no invented anecdotes, names or numbers.

Input and configuration fields

Essential settings
occasion — Occasion
For example anniversary, farewell, opening.
Default settings: ""
speaker — Speaker
Who speaks, in which role.
Default settings: ""
audience — Audience
Who listens.
Default settings: ""
facts — Facts
Names, milestones, what should be said. Only what is written here can appear.
Default settings: ""
Advanced settings
length — Length
Approximate length of the draft.
short — Short · medium — Medium · long — Long
Default settings: "medium"
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "speech_draft",
    "text": "{\"occasion\":\"Farewell of Helga Sommer after 31 years\",\"speaker\":\"Managing director\",\"audience\":\"Colleagues and family\",\"facts\":\"Helga Sommer started in 1995 in accounting and later led the team of 6. She introduced the first online invoices and trained 12 apprentices. She will now travel to Norway.\",\"length\":\"short\",\"tone\":\"friendly\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "occasion": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "speaker": {
            "type": "string",
            "maxLength": 160
        },
        "audience": {
            "type": "string",
            "maxLength": 160
        },
        "facts": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "length": {
            "type": "string",
            "enum": [
                "short",
                "medium",
                "long"
            ]
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        }
    },
    "required": [
        "occasion",
        "facts",
        "length",
        "tone"
    ]
}

Grant application summary

grant_summary

Write the project summary of a grant application from supplied facts, with no invented figures or effects.

Input and configuration fields

Essential settings
project — Project title
Added word for word.
Default settings: ""
organisation — Organisation
Applicant.
Default settings: ""
funder — Funder
Optional, for choosing the wording.
Default settings: ""
facts — Facts
Problem, goals, activities, target group, expected effects.
Default settings: ""
amount — Requested amount
Added word for word.
Default settings: ""
period — Period
Added word for word.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "grant_summary",
    "text": "{\"project\":\"Reading afternoons in the district library\",\"organisation\":\"Friends of the East Library\",\"funder\":\"City culture fund\",\"facts\":\"Children from 6 to 10 read aloud with volunteers on two afternoons per week. Many families have few books at home. 8 volunteers are ready, books are provided by the library. Goal: more children use the library regularly.\",\"amount\":\"6,500 EUR\",\"period\":\"September to June\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "project": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "organisation": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "funder": {
            "type": "string",
            "maxLength": 160
        },
        "facts": {
            "type": "string",
            "maxLength": 8000,
            "minLength": 1
        },
        "amount": {
            "type": "string",
            "maxLength": 60
        },
        "period": {
            "type": "string",
            "maxLength": 60
        }
    },
    "required": [
        "project",
        "organisation",
        "facts"
    ]
}

Letter to parents

parent_letter

Write a clear letter from a school or nursery to parents: what happens, when, and what parents need to do.

Input and configuration fields

Essential settings
school — School or nursery
Name of the institution.
Default settings: ""
facts — Facts
What happens, what is needed, what it costs.
Default settings: ""
date_time — Date and time
Added word for word.
Default settings: ""
deadline — Reply deadline
Added word for word.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "parent_letter",
    "text": "{\"school\":\"Sunflower Primary School\",\"facts\":\"Class 3b visits the zoo. Children need a packed lunch and rain clothes. The trip costs 8 EUR, to be paid in class. We return by 14:00.\",\"date_time\":\"Tuesday 13 May, 8:30\",\"deadline\":\"Friday 9 May\",\"sender\":\"Ms Aydin, class teacher\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "school": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "facts": {
            "type": "string",
            "maxLength": 5000,
            "minLength": 1
        },
        "date_time": {
            "type": "string",
            "maxLength": 80
        },
        "deadline": {
            "type": "string",
            "maxLength": 60
        },
        "sender": {
            "type": "string",
            "maxLength": 600
        }
    },
    "required": [
        "school",
        "facts"
    ]
}

Notice for a board or door

notice_board

Write a short notice for a board, door or stairwell: what happens, when, what to do.

Input and configuration fields

Essential settings
facts — Facts
What happens, who is affected, what to do.
Default settings: ""
date_time — Date and time
Added word for word.
Default settings: ""
place — Place
Added word for word.
Default settings: ""
contact — Contact details
Added word for word at the end.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "notice_board",
    "text": "{\"facts\":\"The water is switched off because the main valve is being replaced. Please fill some water beforehand and do not use the washing machine.\",\"date_time\":\"Thursday 8 May, 9:00 to 12:00\",\"place\":\"House numbers 4 to 8\",\"contact\":\"Caretaker Mr Lang, 0151 000000\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "facts": {
            "type": "string",
            "maxLength": 3000,
            "minLength": 1
        },
        "date_time": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "place": {
            "type": "string",
            "maxLength": 160
        },
        "contact": {
            "type": "string",
            "maxLength": 600
        }
    },
    "required": [
        "facts",
        "date_time"
    ]
}

Application cover letter

cover_letter

Write a job application letter from the job advertisement and a profile. Only stated skills and experience appear.

Input and configuration fields

Essential settings
job_ad — Job advertisement
Text of the advertisement.
Default settings: ""
profile — Own profile
Experience, skills, education, motivation. Only this may be claimed.
Default settings: ""
company — Company
Name of the employer.
Default settings: ""
applicant — Applicant details
Name and contact details. Added word for word.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "cover_letter",
    "text": "{\"job_ad\":\"We are looking for a team assistant with experience in event organisation. Good English required.\",\"profile\":\"Six years as office manager at a trade fair company. Organised 40 customer events per year. English at B2 level. Looking for a role with more responsibility.\",\"company\":\"Norden Events\",\"applicant\":\"Sara Jensen, sara@example.com\",\"tone\":\"neutral\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "job_ad": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "profile": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "company": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "applicant": {
            "type": "string",
            "maxLength": 400,
            "minLength": 1
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        }
    },
    "required": [
        "job_ad",
        "profile",
        "company",
        "applicant",
        "tone"
    ]
}

Property listing

property_listing

Write a property listing from supplied facts. Size and price stay exact; no invented features or neighbourhood claims.

Input and configuration fields

Essential settings
facts — Facts
Size, rooms, condition, year, features, what is near.
Default settings: ""
location — Location
Added word for word.
Default settings: ""
price — Price or rent
Added word for word.
Default settings: ""
contact — Contact details
Added word for word at the end.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "property_listing",
    "text": "{\"facts\":\"3 rooms, 74 square metres, second floor, balcony facing south, renovated 2021, fitted kitchen, cellar, tram stop 5 minutes on foot.\",\"location\":\"Schillerstrasse, Leipzig\",\"price\":\"980 EUR plus utilities\",\"contact\":\"Immobilien Kern, 0341 000000\",\"tone\":\"neutral\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "facts": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "location": {
            "type": "string",
            "maxLength": 160
        },
        "price": {
            "type": "string",
            "maxLength": 80
        },
        "contact": {
            "type": "string",
            "maxLength": 600
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        }
    },
    "required": [
        "facts",
        "tone"
    ]
}

Classified ad

classified_ad

Write a short, honest classified ad for an item, with defects named and the price kept exact.

Input and configuration fields

Essential settings
facts — Facts
What it is, age, condition, defects, what is included.
Default settings: ""
price — Price
Added word for word.
Default settings: ""
location — Location
Added word for word.
Default settings: ""
contact — Contact
Added word for word.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "classified_ad",
    "text": "{\"facts\":\"Child bike 20 inch, bought 2022, 6 gears, blue. Small scratch on the frame, new brakes last year. Lights included.\",\"price\":\"120 EUR\",\"location\":\"Potsdam\",\"contact\":\"Message on the platform\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "facts": {
            "type": "string",
            "maxLength": 3000,
            "minLength": 1
        },
        "price": {
            "type": "string",
            "maxLength": 60
        },
        "location": {
            "type": "string",
            "maxLength": 120
        },
        "contact": {
            "type": "string",
            "maxLength": 200
        }
    },
    "required": [
        "facts"
    ]
}

Donation appeal

donation_appeal

Write a donation appeal from supplied facts, with no invented impact figures and no pressure.

Input and configuration fields

Essential settings
organisation — Organisation
Name of the organisation.
Default settings: ""
facts — Facts
What the money is for, who benefits, what has been done so far.
Default settings: ""
goal — Donation goal
Added word for word.
Default settings: ""
donation_details — How to donate
Account or link. Added word for word.
Default settings: ""
contact — Contact details
Added word for word at the end.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "donation_appeal",
    "text": "{\"organisation\":\"Animal Shelter Bergen\",\"facts\":\"The roof of the dog house leaks and has to be replaced before winter. The shelter cares for about 40 dogs. A roofer quoted 12,000 EUR. 5,000 EUR has been collected so far.\",\"goal\":\"7,000 EUR by October\",\"donation_details\":\"IBAN DE00 0000 0000 0000 0000 00, reference Roof\",\"contact\":\"info@shelter-bergen.example\",\"tone\":\"friendly\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "organisation": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "facts": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "goal": {
            "type": "string",
            "maxLength": 80
        },
        "donation_details": {
            "type": "string",
            "maxLength": 500
        },
        "contact": {
            "type": "string",
            "maxLength": 600
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        }
    },
    "required": [
        "organisation",
        "facts",
        "tone"
    ]
}

Release notes

release_notes

Turn a list of changes into readable release notes. Every change appears once, and numbers stay as supplied.

Input and configuration fields

Essential settings
changes — Changes
One change per row. Type is added, changed, fixed, removed or security.
Default settings: ""
product — Product
Name of the product.
Default settings: ""
version — Version
Added word for word.
Default settings: ""
release_date — Date
Added word for word.
Default settings: ""
audience — Audience
Who reads the notes.
customers — Customers · developers — Developers · internal — Internal team
Default settings: "customers"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "release_notes",
    "text": "{\"changes\":\"id,type,text\\nC1,added,CSV export for invoices\\nC2,fixed,Login failed when the e-mail contained capital letters\\nC3,changed,Reports load in the background\",\"product\":\"Billy Invoices\",\"version\":\"3.2\",\"release_date\":\"12 May\",\"audience\":\"customers\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "changes": {
            "type": "string",
            "maxLength": 30000,
            "minLength": 1
        },
        "product": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "version": {
            "type": "string",
            "maxLength": 40
        },
        "release_date": {
            "type": "string",
            "maxLength": 40
        },
        "audience": {
            "type": "string",
            "enum": [
                "customers",
                "developers",
                "internal"
            ]
        }
    },
    "required": [
        "changes",
        "product",
        "audience"
    ]
}

Video chapters

video_chapters

Create chapter marks from subtitles or a transcript with time codes. The times come from the file, only titles from the AI.

Input and configuration fields

Essential settings
transcript — Transcript with time codes
SRT, VTT or lines that begin with a time such as 01:12.
Default settings: ""
max_chapters — Maximum chapters
From 3 to 20.
Default settings: 8
Advanced settings
min_gap_seconds — Minimum distance in seconds
From 10 to 600.
Default settings: 60

Maximum UTF-8 input bytes: 70000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "video_chapters",
    "text": "{\"transcript\":\"00:00 Welcome to the workshop and a short overview of today.\\n00:40 We start with the tools you need for changing a tyre.\\n01:30 First loosen the wheel nuts while the car is on the ground.\\n02:20 Now jack up the car at the marked point.\\n03:10 Remove the wheel and mount the spare.\\n04:05 Tighten the nuts crosswise and lower the car.\\n05:00 Check the pressure and store the tools.\",\"max_chapters\":4,\"min_gap_seconds\":60}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "transcript": {
            "type": "string",
            "maxLength": 60000,
            "minLength": 1
        },
        "max_chapters": {
            "type": "integer",
            "minimum": 3,
            "maximum": 20
        },
        "min_gap_seconds": {
            "type": "integer",
            "minimum": 10,
            "maximum": 600
        }
    },
    "required": [
        "transcript",
        "max_chapters",
        "min_gap_seconds"
    ]
}

Meeting agenda

meeting_agenda

Build a timed meeting agenda from topics and durations. The server calculates the times, and the AI words the items and expected results.

Input and configuration fields

Essential settings
meeting_title — Meeting title
Added word for word.
Default settings: ""
objective — Objective
What the meeting should achieve.
Default settings: ""
start_time — Start time
Format 09:30.
Default settings: "09:00"
topics — Topics
One topic per row with the responsible person and minutes.
Default settings: ""
Advanced settings
available_minutes — Available minutes
0 means no limit. A longer agenda is reported.
Default settings: 0
break_minutes — Break after every third topic
Minutes, 0 means no break.
Default settings: 0

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "meeting_agenda",
    "text": "{\"meeting_title\":\"Spring planning\",\"objective\":\"Decide the order of the three projects\",\"start_time\":\"09:30\",\"topics\":\"id,topic,owner,minutes\\nT1,review of last quarter,Anna,20\\nT2,projects A B C budget,Marek,40\\nT3,who does what,Anna,30\",\"available_minutes\":90,\"break_minutes\":0}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "meeting_title": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "objective": {
            "type": "string",
            "maxLength": 600
        },
        "start_time": {
            "type": "string",
            "maxLength": 5,
            "minLength": 1
        },
        "topics": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1
        },
        "available_minutes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1440
        },
        "break_minutes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60
        }
    },
    "required": [
        "meeting_title",
        "start_time",
        "topics",
        "available_minutes",
        "break_minutes"
    ]
}

Questions to a document

document_questions

Answer questions from a pasted document. Each answer needs an exact quote; otherwise the result says the document does not state it.

Input and configuration fields

Essential settings
document — Document
Paste the text. It is treated as data, never as instructions.
Default settings: ""
questions — Questions
One question per line, up to 12.
Default settings: ""
Advanced settings
answer_length — Answer length
Brief or detailed answers.
brief — Brief · detailed — Detailed
Default settings: "brief"

Maximum UTF-8 input bytes: 40000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "document_questions",
    "text": "{\"document\":\"The rental period begins on 1 June and runs for 24 months.\\n\\nThe tenant pays a monthly rent of 950 EUR by the third working day of each month.\\n\\nPets require written permission from the landlord.\",\"questions\":\"How long does the rental period run?\\nCan the tenant keep a dog?\\nWho pays for repairs?\",\"answer_length\":\"brief\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "document": {
            "type": "string",
            "maxLength": 30000,
            "minLength": 1
        },
        "questions": {
            "type": "string",
            "maxLength": 3700,
            "minLength": 1
        },
        "answer_length": {
            "type": "string",
            "enum": [
                "brief",
                "detailed"
            ]
        }
    },
    "required": [
        "document",
        "questions",
        "answer_length"
    ]
}

Contract clauses to review

contract_clause_review

Find clauses worth a closer look in a contract: renewal, termination, liability, payment, penalties and data, each with an exact quote.

Input and configuration fields

Essential settings
document — Contract text
Paste the text. It is treated as data, never as instructions.
Default settings: ""

Maximum UTF-8 input bytes: 32000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "contract_clause_review",
    "text": "{\"document\":\"This agreement renews automatically for 12 months unless cancelled in writing 3 months before the end of the term.\\n\\nThe liability of the provider is limited to the fees paid in the previous 6 months.\\n\\nInvoices are due within 14 days. Late payment incurs a fee of 2 percent per month.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "document": {
            "type": "string",
            "maxLength": 30000,
            "minLength": 1
        }
    },
    "required": [
        "document"
    ]
}

Tasks and decisions from text

action_items

Extract tasks, decisions and open questions from e-mails or notes. Owners and dates appear only if they are in the text.

Input and configuration fields

Essential settings
document — E-mails or notes
Paste the text. It is treated as data, never as instructions.
Default settings: ""

Maximum UTF-8 input bytes: 32000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "action_items",
    "text": "{\"document\":\"Hi all, we agreed to move the launch to 12 June. Marek will update the price list by Friday. Nobody has checked yet whether the supplier can deliver earlier.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "document": {
            "type": "string",
            "maxLength": 30000,
            "minLength": 1
        }
    },
    "required": [
        "document"
    ]
}

Contradictions in a document

contradiction_check

Find statements in a document that contradict each other, such as different dates or amounts, with both passages quoted.

Input and configuration fields

Essential settings
document — Document
Paste the text. It is treated as data, never as instructions.
Default settings: ""

Maximum UTF-8 input bytes: 32000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "contradiction_check",
    "text": "{\"document\":\"The project starts on 1 March and ends after 6 months.\\n\\nThe budget is 40,000 EUR in total.\\n\\nIn section 4 the project ends on 30 November. The total budget of 45,000 EUR includes travel.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "document": {
            "type": "string",
            "maxLength": 30000,
            "minLength": 1
        }
    },
    "required": [
        "document"
    ]
}

Missing information in a request

missing_information

Find what is missing in a request or brief before work starts, and get the questions to ask.

Input and configuration fields

Essential settings
document — Request or brief
Paste the text. It is treated as data, never as instructions.
Default settings: ""
purpose — What it is needed for
For example "prepare an offer" or "plan the event".
Default settings: ""

Maximum UTF-8 input bytes: 22000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "missing_information",
    "text": "{\"document\":\"Hello, we need our office repainted soon. It has several rooms and the walls have some marks. Please send a price.\",\"purpose\":\"prepare an offer\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "document": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1
        },
        "purpose": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        }
    },
    "required": [
        "document",
        "purpose"
    ]
}

Official letter explained

official_letter_explainer

Explain an official letter in plain language: what it says, deadlines, amounts and what to do, each with the exact passage. No legal advice.

Input and configuration fields

Essential settings
document — Letter text
Paste the text. Personal data can be removed first.
Default settings: ""

Maximum UTF-8 input bytes: 22000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "official_letter_explainer",
    "text": "{\"document\":\"Notice of 4 May. Your application for housing benefit has been received. Please submit your rental contract and proof of income by 25 May. Without these documents we cannot decide on your application. Questions: Housing Office, room 214.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "document": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1
        }
    },
    "required": [
        "document"
    ]
}

Checklist from a text

checklist_from_text

Turn instructions or a procedure into a checklist. Each point is tied to an exact passage, and nothing is added.

Input and configuration fields

Essential settings
document — Instructions or procedure
Paste the text. It is treated as data, never as instructions.
Default settings: ""

Maximum UTF-8 input bytes: 32000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "checklist_from_text",
    "text": "{\"document\":\"Before starting, switch off the machine and pull the plug. Open the cover with the supplied key. Remove the filter and rinse it under cold water. Never use solvents, as they damage the seal. Let the filter dry for one hour before refitting.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "document": {
            "type": "string",
            "maxLength": 30000,
            "minLength": 1
        }
    },
    "required": [
        "document"
    ]
}

Ticket triage

ticket_triage

Sort support tickets into maintained categories with urgency, an exact passage and a suggested next step. Nothing is sent.

Input and configuration fields

Essential settings
items — Tickets
One ticket per row. Text can be pasted from any system.
Default settings: ""
categories — Categories
Maintained categories with a short definition.
Default settings: ""

Maximum UTF-8 input bytes: 56000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "ticket_triage",
    "text": "{\"items\":\"id,subject,text\\nT1,Login fails,Since this morning nobody in our team can log in. We cannot work.\\nT2,Invoice address,Please change our invoice address to Mill Road 3.\\nT3,Idea,It would be nice to have a dark mode.\",\"categories\":\"id,name,definition\\nC1,Technical fault,Something does not work\\nC2,Billing,Invoices and payments\\nC3,Feature request,Wishes for new functions\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "items": {
            "type": "string",
            "maxLength": 40000,
            "minLength": 1
        },
        "categories": {
            "type": "string",
            "maxLength": 15000,
            "minLength": 1
        }
    },
    "required": [
        "items",
        "categories"
    ]
}

Feedback sorting

feedback_sorting

Sort open feedback into maintained themes, with an exact passage for each item and counts per theme.

Input and configuration fields

Essential settings
items — Feedback
One entry per row, for example from a survey.
Default settings: ""
categories — Themes
Maintained themes with a short definition.
Default settings: ""

Maximum UTF-8 input bytes: 56000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "feedback_sorting",
    "text": "{\"items\":\"id,source,text\\nF1,Survey,The staff at the counter were very friendly.\\nF2,E-mail,I waited over an hour for my appointment.\\nF3,Survey,Parking is hard to find near the building.\",\"categories\":\"id,name,definition\\nS1,Staff,Behaviour and advice of staff\\nS2,Waiting time,Waiting and appointments\\nS3,Location,Access and parking\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "items": {
            "type": "string",
            "maxLength": 40000,
            "minLength": 1
        },
        "categories": {
            "type": "string",
            "maxLength": 15000,
            "minLength": 1
        }
    },
    "required": [
        "items",
        "categories"
    ]
}

Recommendation letter

recommendation_letter

Write a letter of recommendation from supplied facts, without invented achievements, ratings or comparisons.

Input and configuration fields

Essential settings
person — Person
Who is being recommended.
Default settings: ""
relationship — Relationship
How the writer knows the person, and for how long.
Default settings: ""
purpose — Recommended for
Optional: job, course or programme.
Default settings: ""
facts — Facts
Plain notes are enough. Only what is written here can appear in the draft.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "recommendation_letter",
    "text": "{\"person\":\"Mira Kovac\",\"relationship\":\"Team lead for three years at Lumen Print\",\"purpose\":\"Project manager role\",\"facts\":\"Mira planned the move of our print workshop in 2025. She trained two new colleagues. She kept customers informed during the move.\",\"tone\":\"friendly\",\"sender\":\"Tom Berg, Head of Production, Lumen Print\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "person": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "relationship": {
            "type": "string",
            "maxLength": 240,
            "minLength": 1
        },
        "purpose": {
            "type": "string",
            "maxLength": 200
        },
        "facts": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        },
        "sender": {
            "type": "string",
            "maxLength": 600,
            "minLength": 1
        }
    },
    "required": [
        "person",
        "relationship",
        "facts",
        "tone",
        "sender"
    ]
}

CV from notes

cv_from_notes

Turn notes on work and education into a structured CV, with dates and employers exactly as supplied.

Input and configuration fields

Essential settings
full_name — Name
Added word for word.
Default settings: ""
contact — Contact details
Added word for word below the name.
Default settings: ""
target_role — Target role
Optional: the job this CV is for.
Default settings: ""
experience — Work experience
Positions, employers, dates and tasks. Plain notes are enough.
Default settings: ""
education — Education
Optional: schools, courses and dates.
Default settings: ""
skills — Skills
Optional: languages, tools and other skills.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "cv_from_notes",
    "text": "{\"full_name\":\"Mira Kovac\",\"contact\":\"mira.kovac@example.org\",\"target_role\":\"Project manager\",\"experience\":\"2022 to today: team coordinator at Lumen Print, planned workshop move, trained new colleagues. 2018 to 2022: print technician at Atlas Druck.\",\"education\":\"2018 vocational training as print technician\",\"skills\":\"Project planning, German, English\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "full_name": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "contact": {
            "type": "string",
            "maxLength": 400
        },
        "target_role": {
            "type": "string",
            "maxLength": 160
        },
        "experience": {
            "type": "string",
            "maxLength": 5000,
            "minLength": 1
        },
        "education": {
            "type": "string",
            "maxLength": 2000
        },
        "skills": {
            "type": "string",
            "maxLength": 1000
        }
    },
    "required": [
        "full_name",
        "experience"
    ]
}

Thank-you letter

thank_you_letter

Write a thank-you letter to customers, donors or partners from the supplied occasion and facts.

Input and configuration fields

Essential settings
recipient — Recipient
Person or organisation.
Default settings: ""
occasion — Occasion
What the thanks are for.
Default settings: ""
facts — Facts
Plain notes are enough. Only what is written here can appear in the draft.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "thank_you_letter",
    "text": "{\"recipient\":\"Riverside Bakery\",\"occasion\":\"Sponsoring our summer fair\",\"facts\":\"The bakery donated bread for 200 guests. Two of their staff helped at the stand.\",\"tone\":\"friendly\",\"sender\":\"Anna Berg, Board, Riverside Association\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "recipient": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "occasion": {
            "type": "string",
            "maxLength": 240,
            "minLength": 1
        },
        "facts": {
            "type": "string",
            "maxLength": 4000,
            "minLength": 1
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        },
        "sender": {
            "type": "string",
            "maxLength": 600
        }
    },
    "required": [
        "recipient",
        "occasion",
        "facts",
        "tone"
    ]
}

Appointment confirmation

appointment_confirmation

Write an appointment confirmation with date, place and change details exactly as supplied.

Input and configuration fields

Essential settings
recipient — Recipient
Name of the person.
Default settings: ""
subject_matter — Appointment
What the appointment is about.
Default settings: ""
date_time — Date and time
Added word for word.
Default settings: ""
place — Place
Added word for word.
Default settings: ""
notes — Notes
Optional: what to bring, how to prepare.
Default settings: ""
cancellation — Change or cancel
How to change or cancel. Added word for word.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "appointment_confirmation",
    "text": "{\"recipient\":\"Mr Novak\",\"subject_matter\":\"Heating inspection\",\"date_time\":\"12 May, 10:00\",\"place\":\"Mill Road 4\",\"notes\":\"Please make sure the boiler room is accessible. Bring the last inspection report.\",\"cancellation\":\"Call 030 000000 by the day before.\",\"tone\":\"neutral\",\"sender\":\"Service team, Heizung Berg\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "recipient": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "subject_matter": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "date_time": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "place": {
            "type": "string",
            "maxLength": 200
        },
        "notes": {
            "type": "string",
            "maxLength": 2000
        },
        "cancellation": {
            "type": "string",
            "maxLength": 400
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        },
        "sender": {
            "type": "string",
            "maxLength": 600
        }
    },
    "required": [
        "recipient",
        "subject_matter",
        "date_time",
        "tone"
    ]
}

Out-of-office message

out_of_office

Write an out-of-office message for people outside the organisation and one for colleagues, with the period as supplied.

Input and configuration fields

Essential settings
person — Person
Name of the person who is away.
Default settings: ""
date_range — Period
From and until, as it should appear.
Default settings: ""
substitute — Who takes over
Name and contact. Added word for word.
Default settings: ""
notes — Notes
Optional: urgent matters, what waits until the return.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "out_of_office",
    "text": "{\"person\":\"Mira Kovac\",\"date_range\":\"4 to 15 August\",\"substitute\":\"Tom Berg, tom.berg@example.org\",\"notes\":\"Invoices wait until the return.\",\"tone\":\"friendly\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "person": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "date_range": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "substitute": {
            "type": "string",
            "maxLength": 300
        },
        "notes": {
            "type": "string",
            "maxLength": 1500
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        }
    },
    "required": [
        "person",
        "date_range",
        "tone"
    ]
}

Offer follow-up

offer_follow_up

Write a polite follow-up on an open offer, without pressure, invented deadlines or discounts.

Input and configuration fields

Essential settings
customer — Customer
Name of the customer.
Default settings: ""
offer_reference — Offer
Number or title and date. Added word for word.
Default settings: ""
facts — Facts
What was offered, what was discussed, what the next step would be.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "offer_follow_up",
    "text": "{\"customer\":\"Atlas Druck\",\"offer_reference\":\"Offer 2026-41 of 3 March\",\"facts\":\"New folding machine with installation. We talked about delivery in May. Next step would be a short call.\",\"tone\":\"neutral\",\"sender\":\"Anna Berg, Sales, Lumen Print\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "customer": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "offer_reference": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "facts": {
            "type": "string",
            "maxLength": 3000,
            "minLength": 1
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        },
        "sender": {
            "type": "string",
            "maxLength": 600
        }
    },
    "required": [
        "customer",
        "offer_reference",
        "facts",
        "tone"
    ]
}

Quick guide

quick_guide

Turn notes into a short step-by-step guide, with warnings only as supplied.

Input and configuration fields

Essential settings
guide_title — Title
Added word for word.
Default settings: ""
audience — For whom
Optional: who uses this guide.
Default settings: ""
notes — Notes
Steps, settings and warnings in any order.
Default settings: ""
support — Help
Optional: who to ask. Added word for word.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "quick_guide",
    "text": "{\"guide_title\":\"Clean the coffee machine\",\"audience\":\"Office team\",\"notes\":\"Turn off and let it cool. Empty the drip tray. Rinse the tray with warm water. Do not use the dishwasher. Press the clean button for 3 seconds.\",\"support\":\"Facility team, room 12\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "guide_title": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "audience": {
            "type": "string",
            "maxLength": 160
        },
        "notes": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "support": {
            "type": "string",
            "maxLength": 300
        }
    },
    "required": [
        "guide_title",
        "notes"
    ]
}

Safety briefing

safety_briefing

Write a safety briefing from the rules and hazards supplied, without adding hazards, rules or legal statements.

Input and configuration fields

Essential settings
workplace — Workplace
Area or task the briefing is for.
Default settings: ""
notes — Rules and hazards
Own rules, hazards and emergency steps. Nothing else is added.
Default settings: ""
responsible — Responsible
Added word for word.
Default settings: ""
briefing_date — Date of the briefing
Added word for word.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "safety_briefing",
    "text": "{\"workplace\":\"Print workshop\",\"notes\":\"Hazards: moving rollers, solvent vapours. Rules: tie back long hair, wear gloves when cleaning, keep doors open when using solvent. Emergency: press the red stop button, call the shift lead.\",\"responsible\":\"Tom Berg\",\"briefing_date\":\"12 May\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "workplace": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "notes": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "responsible": {
            "type": "string",
            "maxLength": 160
        },
        "briefing_date": {
            "type": "string",
            "maxLength": 40
        }
    },
    "required": [
        "workplace",
        "notes"
    ]
}

Tenant notice

tenant_notice

Write a notice to tenants about work, access or changes, with date and contact exactly as supplied.

Input and configuration fields

Essential settings
property — Property
Address or building.
Default settings: ""
topic — Topic
What the notice is about.
Default settings: ""
facts — Facts
Plain notes are enough. Only what is written here can appear in the draft.
Default settings: ""
date_time — Date and time
Added word for word.
Default settings: ""
contact — Contact details
Added word for word.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "tenant_notice",
    "text": "{\"property\":\"Mill Road 4\",\"topic\":\"Water shut-off for pipe repair\",\"facts\":\"The water is off in the whole building for about 4 hours. Please collect water beforehand and keep the access to the cellar free.\",\"date_time\":\"12 May, 08:00\",\"contact\":\"Facility team, 030 000000\",\"tone\":\"neutral\",\"sender\":\"Property management Berg\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "property": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "topic": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "facts": {
            "type": "string",
            "maxLength": 4000,
            "minLength": 1
        },
        "date_time": {
            "type": "string",
            "maxLength": 80
        },
        "contact": {
            "type": "string",
            "maxLength": 400
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        },
        "sender": {
            "type": "string",
            "maxLength": 600
        }
    },
    "required": [
        "property",
        "topic",
        "facts",
        "tone"
    ]
}

Internal announcement

internal_announcement

Write an announcement for colleagues or members from supplied facts, with date and contact exactly as given.

Input and configuration fields

Essential settings
topic — Topic
What the announcement is about.
Default settings: ""
audience — For whom
Optional: team, department or all members.
Default settings: ""
facts — Facts
Plain notes are enough. Only what is written here can appear in the draft.
Default settings: ""
effective_date — Effective from
Added word for word.
Default settings: ""
contact — Contact details
Who answers questions. Added word for word.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "internal_announcement",
    "text": "{\"topic\":\"New opening hours of the office\",\"audience\":\"All staff\",\"facts\":\"The office closes at 16:00 on Fridays. Calls go to the answering service after that. Please tell customers about this in your next contact.\",\"effective_date\":\"1 June\",\"contact\":\"Anna Berg, office\",\"tone\":\"neutral\",\"sender\":\"Management, Lumen Print\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "topic": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "audience": {
            "type": "string",
            "maxLength": 160
        },
        "facts": {
            "type": "string",
            "maxLength": 5000,
            "minLength": 1
        },
        "effective_date": {
            "type": "string",
            "maxLength": 40
        },
        "contact": {
            "type": "string",
            "maxLength": 300
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        },
        "sender": {
            "type": "string",
            "maxLength": 600
        }
    },
    "required": [
        "topic",
        "facts",
        "tone"
    ]
}

Work report

work_report

Turn notes and a table of hours and material into a clean work report. The server adds up hours and amounts, and the AI words the work done.

Input and configuration fields

Essential settings
customer — Customer
Added word for word.
Default settings: ""
site — Site
Optional: address or job number.
Default settings: ""
work_date — Date of work
Added word for word.
Default settings: ""
technician — Carried out by
Optional: name or team.
Default settings: ""
work_notes — Notes on the work
What was done, what was found, what is still open. Plain notes are enough.
Default settings: ""
lines — Hours and material
One row per item. kind is labour, material or other. unit_price may be empty.
Default settings: ""
Advanced settings
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "work_report",
    "text": "{\"customer\":\"Hartmann Bakery\",\"site\":\"Mill Street 4\",\"work_date\":\"12 May 2026\",\"technician\":\"Tom Berg\",\"work_notes\":\"Replaced the leaking valve on the dough mixer water line. Tested for leaks, none found. The second valve shows rust and should be replaced at the next service.\",\"lines\":\"id,kind,description,quantity,unit,unit_price\\nL1,labour,Repair and test,2.5,h,48\\nL2,material,Ball valve DN15,1,pc,18.40\\nL3,other,Travel,1,flat,25\",\"currency\":\"EUR\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "customer": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "site": {
            "type": "string",
            "maxLength": 200
        },
        "work_date": {
            "type": "string",
            "maxLength": 40,
            "minLength": 1
        },
        "technician": {
            "type": "string",
            "maxLength": 160
        },
        "work_notes": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        }
    },
    "required": [
        "customer",
        "work_date",
        "work_notes",
        "lines"
    ]
}

Defect list

defect_list

Turn inspection notes into a numbered defect list. Every entry is linked to the exact passage in the notes, and nothing is added.

Input and configuration fields

Essential settings
site — Site or property
Added word for word.
Default settings: ""
inspection_date — Date of inspection
Added word for word.
Default settings: ""
inspector — Inspected by
Optional.
Default settings: ""
document — Inspection notes
One defect per line or paragraph. Photo file names may be mentioned.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "defect_list",
    "text": "{\"site\":\"Mill Road 3, second floor\",\"inspection_date\":\"3 June 2026\",\"inspector\":\"A. Novak\",\"document\":\"Kitchen: the socket next to the window has no cover, wires are visible.\\n\\nBathroom: grout around the shower is missing on the left side.\\n\\nHallway: paint on the door frame is scratched, see photo IMG_204.\\n\\nLiving room: the radiator valve does not turn.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "site": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "inspection_date": {
            "type": "string",
            "maxLength": 40,
            "minLength": 1
        },
        "inspector": {
            "type": "string",
            "maxLength": 160
        },
        "document": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1
        }
    },
    "required": [
        "site",
        "inspection_date",
        "document"
    ]
}

Employment reference explained

reference_explained

Explain an employment reference sentence by sentence in plain words. Each explanation is linked to the exact sentence.

Input and configuration fields

Essential settings
document — Reference text
Paste the text. It is treated as data, never as instructions.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "reference_explained",
    "text": "{\"document\":\"Ms Kovac worked for us as a project assistant from March 2023 to June 2026.\\n\\nShe carried out the tasks assigned to her with great care and always to our full satisfaction.\\n\\nHer behaviour towards colleagues was friendly and she was always punctual.\\n\\nWe wish her all the best for the future.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "document": {
            "type": "string",
            "maxLength": 12000,
            "minLength": 1
        }
    },
    "required": [
        "document"
    ]
}

Employment reference draft

reference_draft

Draft an employment reference from supplied facts. Dates, duties and ratings appear only if they are in the input.

Input and configuration fields

Essential settings
employee — Employee
Full name. Added word for word.
Default settings: ""
period — Period of employment
Added word for word, for example 1 March 2023 to 30 June 2026.
Default settings: ""
role — Role
Added word for word.
Default settings: ""
company — Company
Added word for word.
Default settings: ""
facts — Facts
Duties, results, conduct and how they are rated. Only what is written here can appear in the draft.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "reference_draft",
    "text": "{\"employee\":\"Mira Kovac\",\"period\":\"1 March 2023 to 30 June 2026\",\"role\":\"Project assistant\",\"company\":\"Lumen Print\",\"facts\":\"Planned print schedules for 40 customers. Trained two new colleagues. Her work was very good and reliable. Colleagues and customers valued her friendly manner. She leaves at her own request.\",\"tone\":\"formal\",\"sender\":\"Tom Berg, Head of Production\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "employee": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "period": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "role": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "company": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "facts": {
            "type": "string",
            "maxLength": 8000,
            "minLength": 1
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        },
        "sender": {
            "type": "string",
            "maxLength": 600,
            "minLength": 1
        }
    },
    "required": [
        "employee",
        "period",
        "role",
        "company",
        "facts",
        "tone",
        "sender"
    ]
}

Utility bill check

utility_bill_check

Recalculate a service charge or utility statement from its figures and list questions to ask. The server does the arithmetic.

Input and configuration fields

Essential settings
property — Flat or property
Added word for word.
Default settings: ""
period — Billing period
Added word for word.
Default settings: ""
lines — Costs from the statement
One row per cost type: total_amount for the building, key_total and key_share for the allocation, for example 500 and 62 square metres. previous_total may be empty.
Default settings: ""
advance_paid — Advance payments
Total paid during the period. Empty if unknown.
Default settings: ""
billed_balance — Balance on the statement
Amount to pay according to the statement, for comparison. Empty if unknown.
Default settings: ""
statement_total — Notes from the statement
Optional: anything else stated on the statement, such as the billed balance.
Default settings: ""
Advanced settings
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "utility_bill_check",
    "text": "{\"property\":\"Mill Road 3, flat 5\",\"period\":\"1 Jan to 31 Dec 2025\",\"lines\":\"id,cost_type,total_amount,key_total,key_share,previous_total\\nC1,Heating,8400,500,62,6800\\nC2,Water,2100,500,62,2050\\nC3,Caretaker,3600,500,62,3600\\nC4,Insurance,1500,500,62,1450\",\"advance_paid\":\"1500\",\"billed_balance\":\"402.60\",\"statement_total\":\"Statement dated 15 March 2026.\",\"currency\":\"EUR\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "property": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "period": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1
        },
        "advance_paid": {
            "type": "string",
            "maxLength": 20
        },
        "billed_balance": {
            "type": "string",
            "maxLength": 20
        },
        "statement_total": {
            "type": "string",
            "maxLength": 2000
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        }
    },
    "required": [
        "property",
        "period",
        "lines"
    ]
}

Allergen labelling

allergen_labelling

Mark the 14 main food allergens per dish from ingredient lists. Each entry names the ingredient it comes from, for review by the business.

Input and configuration fields

Essential settings
dishes — Dishes and ingredients
One row per dish with all ingredients, including those of bought products where known.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "allergen_labelling",
    "text": "{\"dishes\":\"id,dish,ingredients\\nD1,Pancakes,\\\"wheat flour, eggs, milk, butter, salt\\\"\\nD2,Lentil soup,\\\"lentils, carrots, celery, onions, olive oil\\\"\\nD3,Salad with vinaigrette,\\\"lettuce, tomatoes, mustard, wine vinegar, sunflower oil\\\"\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "dishes": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1
        }
    },
    "required": [
        "dishes"
    ]
}

Flashcards

flashcards

Turn study text into question and answer cards. Each card is linked to the exact passage, and the set can be imported into flashcard programs.

Input and configuration fields

Essential settings
document — Study text
Paste the text. It is treated as data, never as instructions.
Default settings: ""
card_count — Number of cards
From 5 to 40.
Default settings: 12

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "flashcards",
    "text": "{\"document\":\"Photosynthesis takes place in the chloroplasts of plant cells. Chlorophyll absorbs light, mainly in the red and blue range.\\n\\nIn the light reactions, water is split and oxygen is released. The energy is stored in ATP and NADPH.\\n\\nIn the Calvin cycle, carbon dioxide is turned into sugar using this energy.\",\"card_count\":5}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "document": {
            "type": "string",
            "maxLength": 30000,
            "minLength": 1
        },
        "card_count": {
            "type": "integer",
            "minimum": 5,
            "maximum": 40
        }
    },
    "required": [
        "document",
        "card_count"
    ]
}

Lesson plan

lesson_plan

Build a timed lesson plan from phases and durations. The server calculates the times, and the AI words each phase and its learning aim.

Input and configuration fields

Essential settings
meeting_title — Lesson title
Added word for word.
Default settings: ""
objective — Learning goal and group
What the group should be able to do afterwards, and who the group is.
Default settings: ""
start_time — Start time
Format 09:30.
Default settings: "08:00"
topics — Phases
One phase per row with who leads it and minutes.
Default settings: ""
Advanced settings
available_minutes — Available minutes
0 means no limit. A longer plan is reported.
Default settings: 45
break_minutes — Break after every third phase
Minutes, 0 means no break.
Default settings: 0

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "lesson_plan",
    "text": "{\"meeting_title\":\"Fractions: adding with the same denominator\",\"objective\":\"Class 5 can add fractions with the same denominator.\",\"start_time\":\"08:00\",\"topics\":\"id,topic,owner,minutes\\nP1,Repeat what a fraction is,Teacher,5\\nP2,Show adding with pizza slices,Teacher,10\\nP3,Exercises in pairs,Pupils,20\\nP4,Compare results and summary,Class,10\",\"available_minutes\":45,\"break_minutes\":0}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "meeting_title": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "objective": {
            "type": "string",
            "maxLength": 800
        },
        "start_time": {
            "type": "string",
            "maxLength": 5,
            "minLength": 1
        },
        "topics": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1
        },
        "available_minutes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1440
        },
        "break_minutes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60
        }
    },
    "required": [
        "meeting_title",
        "start_time",
        "topics",
        "available_minutes",
        "break_minutes"
    ]
}

Insurance claim report

insurance_claim

Write a claim report to an insurer from supplied facts. Policy number, date and amount stay exact, and nothing is added.

Input and configuration fields

Essential settings
insurer — Insurer
Added word for word.
Default settings: ""
policy_number — Policy number
Added word for word.
Default settings: ""
incident_date — Date of the incident
Added word for word.
Default settings: ""
incident_place — Place of the incident
Added word for word.
Default settings: ""
facts — Facts
What happened, what was damaged, what was done afterwards, who was involved.
Default settings: ""
claim_amount — Amount claimed
Optional. Added word for word.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "insurance_claim",
    "text": "{\"insurer\":\"Riverside Insurance\",\"policy_number\":\"HR-4471-22\",\"incident_date\":\"14 March 2026\",\"incident_place\":\"Mill Road 3, flat 5\",\"facts\":\"A water pipe in the kitchen wall burst at night. Water ran into the kitchen and hallway. The floor in the hallway and a kitchen cabinet are damaged. We turned off the main valve and called a plumber the same morning.\",\"claim_amount\":\"2,350 EUR\",\"sender\":\"Anna Novak, Mill Road 3, Bridgeport\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "insurer": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "policy_number": {
            "type": "string",
            "maxLength": 60,
            "minLength": 1
        },
        "incident_date": {
            "type": "string",
            "maxLength": 60,
            "minLength": 1
        },
        "incident_place": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "facts": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "claim_amount": {
            "type": "string",
            "maxLength": 60
        },
        "sender": {
            "type": "string",
            "maxLength": 600,
            "minLength": 1
        }
    },
    "required": [
        "insurer",
        "policy_number",
        "incident_date",
        "incident_place",
        "facts",
        "sender"
    ]
}

Travel expense report

travel_expenses

Turn a list of expenses into a travel expense report. The server adds up the amounts and reports missing receipts and dates.

Input and configuration fields

Essential settings
traveller — Traveller
Added word for word.
Default settings: ""
period — Travel period
Added word for word.
Default settings: ""
purpose — Purpose of the trip
Where to and why.
Default settings: ""
lines — Expenses
One row per expense. receipt is yes or no.
Default settings: ""
Advanced settings
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "travel_expenses",
    "text": "{\"traveller\":\"Mira Kovac\",\"period\":\"3 to 4 June 2026\",\"purpose\":\"Visit to the supplier Hartmann Paper in Bridgeport to agree the delivery schedule.\",\"lines\":\"id,date,category,description,amount,receipt\\nE1,3 June,Train,Return ticket,86.50,yes\\nE2,3 June,Hotel,One night,112,yes\\nE3,3 June,Meals,Dinner with supplier,48.20,no\\nE4,4 June,Taxi,Station to office,,no\",\"currency\":\"EUR\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "traveller": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "period": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "purpose": {
            "type": "string",
            "maxLength": 1500,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        }
    },
    "required": [
        "traveller",
        "period",
        "purpose",
        "lines"
    ]
}

Club annual report

club_annual_report

Write the annual report of a club or association from notes. Member numbers and finances appear exactly as supplied.

Input and configuration fields

Essential settings
club — Club or association
Added word for word.
Default settings: ""
year — Year
Added word for word.
Default settings: ""
facts — Facts
Events, members, finances, thanks and plans. Plain notes are enough.
Default settings: ""
sender — Sender and signature
Name, role and contact details. Added word for word.
Default settings: ""
Advanced settings
length — Length
Approximate length of the draft.
short — Short · medium — Medium · long — Long
Default settings: "medium"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "club_annual_report",
    "text": "{\"club\":\"Riverside Rowing Club\",\"year\":\"2025\",\"facts\":\"We held the summer regatta in June with 120 participants. Two new boats were bought. Membership grew from 84 to 97. Income was 18,400 EUR and spending 16,900 EUR. In 2026 we want to renovate the boathouse. Thanks to the volunteers of the regatta team.\",\"length\":\"medium\",\"sender\":\"Anna Novak, Chair\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "club": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "year": {
            "type": "string",
            "maxLength": 20,
            "minLength": 1
        },
        "facts": {
            "type": "string",
            "maxLength": 10000,
            "minLength": 1
        },
        "length": {
            "type": "string",
            "enum": [
                "short",
                "medium",
                "long"
            ]
        },
        "sender": {
            "type": "string",
            "maxLength": 600,
            "minLength": 1
        }
    },
    "required": [
        "club",
        "year",
        "facts",
        "length",
        "sender"
    ]
}

Flat handover report

flat_handover

Write a flat handover report from notes. Address, meter readings, keys and people present stay exactly as entered.

Input and configuration fields

Essential settings
address — Address
Added word for word.
Default settings: ""
handover_date — Date of handover
Added word for word.
Default settings: ""
parties — People present
Names and roles. Added word for word.
Default settings: ""
meters — Meter readings
One meter per line with number and reading. Added word for word.
Default settings: ""
keys — Keys
What was handed over. Added word for word.
Default settings: ""
rooms_notes — Notes by room
Condition, room by room. Defects and agreements in plain notes.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "flat_handover",
    "text": "{\"address\":\"Mill Road 3, flat 5, Bridgeport\",\"handover_date\":\"30 June 2026\",\"parties\":\"Anna Novak (landlord), Tom Berg (tenant)\",\"meters\":\"Electricity 44812 kWh\\nWater 312 m3\",\"keys\":\"3 flat keys, 1 cellar key\",\"rooms_notes\":\"Kitchen clean, one scratch on the worktop. Living room freshly painted, no damage. Bathroom clean, the tap drips slightly. Tenant will have the tap repaired by 15 July.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "address": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "handover_date": {
            "type": "string",
            "maxLength": 40,
            "minLength": 1
        },
        "parties": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1
        },
        "meters": {
            "type": "string",
            "maxLength": 800,
            "minLength": 1
        },
        "keys": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1
        },
        "rooms_notes": {
            "type": "string",
            "maxLength": 8000,
            "minLength": 1
        }
    },
    "required": [
        "address",
        "handover_date",
        "parties",
        "meters",
        "keys",
        "rooms_notes"
    ]
}

Staff talk preparation

staff_talk_prep

Prepare a staff appraisal talk from notes: strengths, topics, questions and possible goals, with examples only from the notes.

Input and configuration fields

Essential settings
employee — Employee
Added word for word.
Default settings: ""
meeting_date — Date of the talk
Optional.
Default settings: ""
role — Role
Optional.
Default settings: ""
facts — Facts
Observations, results, concerns and wishes. Plain notes are enough.
Default settings: ""
Advanced settings
tone — Tone
Overall style of the draft.
neutral — Neutral · friendly — Friendly · formal — Formal
Default settings: "neutral"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "staff_talk_prep",
    "text": "{\"employee\":\"Mira Kovac\",\"meeting_date\":\"20 June 2026\",\"role\":\"Project assistant\",\"facts\":\"Planned the move of the workshop well. Trained two new colleagues. Reports were late three times in spring. She would like to take on more customer contact.\",\"tone\":\"friendly\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "employee": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "meeting_date": {
            "type": "string",
            "maxLength": 60
        },
        "role": {
            "type": "string",
            "maxLength": 160
        },
        "facts": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "tone": {
            "type": "string",
            "enum": [
                "neutral",
                "friendly",
                "formal"
            ]
        }
    },
    "required": [
        "employee",
        "facts",
        "tone"
    ]
}

Cash report for clubs

cash_report

Turn a cash book into a cash report. The server calculates opening and closing balance, income and expenses, and reports missing dates and receipts.

Input and configuration fields

Essential settings
club — Club or association
Added word for word.
Default settings: ""
period — Period
Added word for word, for example 1 Jan to 31 Mar 2026.
Default settings: ""
opening_balance — Opening balance
Balance at the start of the period, for example 1250.50. A negative balance starts with a minus sign.
Default settings: ""
stated_closing — Stated closing balance
Optional: the balance actually counted or shown by the bank, for comparison.
Default settings: ""
lines — Cash book
One row per booking. Enter either income or expense as a positive number. receipt is yes or no.
Default settings: ""
treasurer_notes — Notes
Optional: anything the report should mention, such as the purpose of larger bookings.
Default settings: ""
Advanced settings
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 45000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "cash_report",
    "text": "{\"club\":\"Riverside Rowing Club\",\"period\":\"1 Jan to 31 Mar 2026\",\"opening_balance\":\"1250.00\",\"stated_closing\":\"1941.20\",\"lines\":\"id,date,description,income,expense,receipt\\nK1,2026-01-15,Membership fees January,640.00,,yes\\nK2,2026-01-28,Boat fuel,,86.40,yes\\nK3,2026-02-10,Hall rent,,180.00,yes\\nK4,2026-02-21,Cake sale at the open day,212.50,,no\\nK5,,Cleaning supplies,,34.90,yes\\nK6,2026-03-12,Donation from the bakery,150.00,,yes\",\"treasurer_notes\":\"The receipt for the cake sale is still with the organiser. Cash was counted at the end of March.\",\"currency\":\"EUR\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "club": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "period": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "opening_balance": {
            "type": "string",
            "maxLength": 20,
            "minLength": 1
        },
        "stated_closing": {
            "type": "string",
            "maxLength": 20
        },
        "lines": {
            "type": "string",
            "maxLength": 30000,
            "minLength": 1
        },
        "treasurer_notes": {
            "type": "string",
            "maxLength": 2000
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        }
    },
    "required": [
        "club",
        "period",
        "opening_balance",
        "lines"
    ]
}

Mileage log check

mileage_log_check

Check a mileage log row by row. The server calculates the kilometres of each trip and reports gaps, falling readings and missing details.

Input and configuration fields

Essential settings
vehicle — Vehicle
Added word for word, for example a name or number plate.
Default settings: ""
period — Period
Optional. Added word for word.
Default settings: ""
lines — Trips
One row per trip with start and end reading. trip_type is free text, for example business or private.
Default settings: ""
remarks — Notes
Optional: anything the check should mention.
Default settings: ""

Maximum UTF-8 input bytes: 45000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "mileage_log_check",
    "text": "{\"vehicle\":\"Company van BX-KM 418\",\"period\":\"May 2026\",\"lines\":\"id,date,driver,start_km,end_km,trip_type,purpose\\nF1,2026-05-04,T. Berg,45210,45262,business,Customer visit Hartmann Bakery\\nF2,2026-05-05,T. Berg,45262,45298,private,Trip to the hardware store\\nF3,2026-05-06,A. Novak,45310,45402,business,Delivery to Mill Road\\nF4,2026-05-07,A. Novak,45402,45455,,Supplier meeting in Bridgeport\\nF5,2026-05-08,T. Berg,45450,45471,business,Site visit\",\"remarks\":\"\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "vehicle": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "period": {
            "type": "string",
            "maxLength": 80
        },
        "lines": {
            "type": "string",
            "maxLength": 30000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "vehicle",
        "lines"
    ]
}

Timesheet summary

timesheet_summary

Add up timesheets from start, end and break. The server calculates hours by person and week, compares them with target hours and reports unusual times.

Input and configuration fields

Essential settings
organisation — Company or club
Added word for word.
Default settings: ""
period — Period
Optional. Added word for word.
Default settings: ""
lines — Time entries
One row per work period. Times like 08:30, break in whole minutes.
Default settings: ""
target_hours — Target hours per week
Optional: target for one person in one calendar week, for example 38.5.
Default settings: ""
remarks — Notes
Optional: anything the summary should mention.
Default settings: ""
Advanced settings
overnight — Shifts past midnight
Yes counts an end time before the start time as the next day. No reports such rows.
no — No · yes — Yes
Default settings: "no"

Maximum UTF-8 input bytes: 45000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "timesheet_summary",
    "text": "{\"organisation\":\"Hartmann Bakery\",\"period\":\"4 to 10 May 2026\",\"lines\":\"id,person,date,start,end,break_minutes\\nS1,Mira Kovac,2026-05-04,08:00,12:30,30\\nS2,Mira Kovac,2026-05-05,08:00,14:00,30\\nS3,Mira Kovac,2026-05-06,07:30,15:45,45\\nS4,Mira Kovac,2026-05-07,08:00,13:00,\\nS5,Tom Berg,2026-05-04,06:00,10:00,0\\nS6,Tom Berg,2026-05-05,14:00,12:00,0\\nS7,Tom Berg,2026-05-06,06:00,13:00,30\\nS8,Tom Berg,2026-05-07,,11:00,15\",\"target_hours\":\"20\",\"overnight\":\"no\",\"remarks\":\"\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "organisation": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "period": {
            "type": "string",
            "maxLength": 80
        },
        "lines": {
            "type": "string",
            "maxLength": 30000,
            "minLength": 1
        },
        "target_hours": {
            "type": "string",
            "maxLength": 10
        },
        "overnight": {
            "type": "string",
            "enum": [
                "no",
                "yes"
            ]
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "organisation",
        "lines",
        "overnight"
    ]
}

Meter readings evaluation

meter_readings

Evaluate meter readings for electricity, water or gas. The server calculates consumption per period and reports outliers and falling readings.

Input and configuration fields

Essential settings
property — Property or household
Optional. Added word for word.
Default settings: ""
lines — Readings
One row per reading. Dates like 2026-03-31 or 31.03.2026. Use one unit per meter.
Default settings: ""
remarks — Notes
Optional: for example a meter change or a long absence.
Default settings: ""
Advanced settings
outlier_percent — Outlier limit in percent
Periods this far from the mean of the meter are reported. From 10 to 500.
Default settings: 50

Maximum UTF-8 input bytes: 40000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "meter_readings",
    "text": "{\"property\":\"Mill Road 3, flat 5\",\"lines\":\"id,meter,date,reading,unit\\nZ1,Electricity,2026-01-01,44120,kWh\\nZ2,Electricity,2026-02-01,44430,kWh\\nZ3,Electricity,2026-03-01,44710,kWh\\nZ4,Electricity,2026-04-01,45410,kWh\\nZ5,Electricity,2026-05-01,45700,kWh\\nZ6,Water,2026-01-01,312.5,m3\\nZ7,Water,2026-04-01,331,m3\\nZ8,Water,2026-07-01,328.5,m3\",\"outlier_percent\":50,\"remarks\":\"Space heater used in March.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "property": {
            "type": "string",
            "maxLength": 200
        },
        "lines": {
            "type": "string",
            "maxLength": 25000,
            "minLength": 1
        },
        "outlier_percent": {
            "type": "integer",
            "minimum": 10,
            "maximum": 500
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "lines",
        "outlier_percent"
    ]
}

Inventory list

inventory_list

Turn a stock count into an inventory list. The server multiplies quantity by unit value, adds up by category and reports duplicates and missing values.

Input and configuration fields

Essential settings
organisation — Shop or club
Added word for word.
Default settings: ""
inventory_date — Inventory date
Added word for word.
Default settings: ""
location — Location
Optional. Added word for word.
Default settings: ""
lines — Items
One row per item with quantity and value per unit. A missing figure is reported and the row is left out of the total.
Default settings: ""
remarks — Notes
Optional: anything the list should mention.
Default settings: ""
Advanced settings
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 45000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "inventory_list",
    "text": "{\"organisation\":\"Riverside Rowing Club\",\"inventory_date\":\"31 December 2025\",\"location\":\"Boathouse\",\"lines\":\"id,category,item,quantity,unit,unit_value\\nI1,Boats,Single scull,3,pc,1800\\nI2,Boats,Pair of oars,12,pair,95\\nI3,Kitchen,Coffee machine,1,pc,240\\nI4,Kitchen,Plates,48,pc,2.50\\nI5,Kitchen,Plates,48,pc,2.50\\nI6,Workshop,Cordless drill,2,pc,\\nI7,Workshop,Lubricant,,can,7.80\",\"remarks\":\"Counted by two board members.\",\"currency\":\"EUR\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "organisation": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "inventory_date": {
            "type": "string",
            "maxLength": 40,
            "minLength": 1
        },
        "location": {
            "type": "string",
            "maxLength": 160
        },
        "lines": {
            "type": "string",
            "maxLength": 30000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        }
    },
    "required": [
        "organisation",
        "inventory_date",
        "lines"
    ]
}

Shift handover

shift_handover

Turn shift notes into a clear handover. Only points from the notes appear, open tasks are listed separately, and nothing is rated or advised.

Input and configuration fields

Essential settings
area — Area or team
Added word for word, for example a ward, kitchen or production line.
Default settings: ""
shift — Shift and date
Added word for word.
Default settings: ""
handed_by — Handed over by
Optional. Added word for word.
Default settings: ""
received_by — Taken over by
Optional. Added word for word.
Default settings: ""
notes — Notes from the shift
Plain notes are enough. Only what is written here can appear in the handover.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "shift_handover",
    "text": "{\"area\":\"Ward 2, care team\",\"shift\":\"Late shift, 12 May 2026\",\"handed_by\":\"A. Novak\",\"received_by\":\"T. Berg\",\"notes\":\"Room 12: Mr Hansen had blood pressure 150/90 at 16:00, doctor informed, no new order yet. Room 14: Ms Lund was given her evening tablets at 18:00. Room 9: call bell not working, technician phoned, comes tomorrow morning. Room 12: ask the doctor again about the new order before 21:00. Linen delivery still has to be put away.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "area": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "shift": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "handed_by": {
            "type": "string",
            "maxLength": 120
        },
        "received_by": {
            "type": "string",
            "maxLength": 120
        },
        "notes": {
            "type": "string",
            "maxLength": 8000,
            "minLength": 1
        }
    },
    "required": [
        "area",
        "shift",
        "notes"
    ]
}

Club budget plan

club_budget

Turn budget figures into a club budget plan. The server adds up income and expenses, calculates the balance and marks changes of at least 20 % from the previous year.

Input and configuration fields

Essential settings
club — Club or association
Added word for word.
Default settings: ""
year — Budget year
Added word for word.
Default settings: ""
lines — Budget items
One row per item. kind is income or expense. previous is the figure of the previous year and may be empty.
Default settings: ""
remarks — Notes
Optional: reasons for changes or plans for the year.
Default settings: ""
Advanced settings
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "club_budget",
    "text": "{\"club\":\"Riverside Rowing Club\",\"year\":\"2026\",\"lines\":\"id,kind,item,planned,previous\\nH1,income,Membership fees,18400,17800\\nH2,income,Regatta entry fees,3600,2800\\nH3,income,Donations,1500,2000\\nH4,expense,Boat repairs,6200,4800\\nH5,expense,Boathouse rent,9600,9600\\nH6,expense,Insurance,2100,1950\\nH7,expense,Boathouse renovation,7000,\",\"remarks\":\"The renovation of the boathouse is planned for the summer. Two boats need new riggers.\",\"currency\":\"EUR\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "club": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "year": {
            "type": "string",
            "maxLength": 20,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 16000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 3000
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        }
    },
    "required": [
        "club",
        "year",
        "lines"
    ]
}

Job interview preparation

interview_preparation

Prepare a job interview from a job advert and a CV: likely questions, fitting points and gaps. Nothing is added about the employer or the applicant.

Input and configuration fields

Essential settings
job_title — Job title
Optional. Added word for word.
Default settings: ""
company — Company
Optional. Added word for word.
Default settings: ""
job_ad — Job advert
Paste the text. It is treated as data, never as instructions.
Default settings: ""
cv — CV
Paste the text. Only what is needed for the preparation; contact details can be left out.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "interview_preparation",
    "text": "{\"job_title\":\"Project assistant\",\"company\":\"Lumen Print\",\"job_ad\":\"Lumen Print is looking for a project assistant in Bridgeport. Tasks: planning print schedules, coordinating with customers and suppliers, preparing weekly status reports. Requirements: experience in project coordination, confident use of spreadsheets, good written English, experience with print production is an advantage. Start: 1 September.\",\"cv\":\"Mira Kovac. 2023 to 2026: office assistant at Hartmann Paper, Bridgeport. Coordinated deliveries with 40 customers, kept the delivery plan in spreadsheets, trained two new colleagues. 2020 to 2023: apprenticeship as office clerk. Languages: English, good written and spoken; Croatian, native.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "job_title": {
            "type": "string",
            "maxLength": 160
        },
        "company": {
            "type": "string",
            "maxLength": 160
        },
        "job_ad": {
            "type": "string",
            "maxLength": 12000,
            "minLength": 1
        },
        "cv": {
            "type": "string",
            "maxLength": 12000,
            "minLength": 1
        }
    },
    "required": [
        "job_ad",
        "cv"
    ]
}

Driving lesson record

driving_lesson_record

Turn a list of driving lessons into a training record. The server counts lessons by type and compares them with the targets entered.

Input and configuration fields

Essential settings
learner — Learner
Name or reference. Added word for word.
Default settings: ""
driving_school — Driving school
Added word for word.
Default settings: ""
licence_class — Licence class
Optional. Added word for word.
Default settings: ""
lines — Lessons
One row per lesson or block. units is the number of lessons, topic may be empty.
Default settings: ""
targets — Targets by type of lesson
One row per type with the target that applies. The tool knows no rules and only compares these figures.
Default settings: ""
remarks — Notes
Optional: anything the record should mention.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "driving_lesson_record",
    "text": "{\"learner\":\"Mira K.\",\"driving_school\":\"Lindenau Driving School\",\"licence_class\":\"B\",\"lines\":\"id,date,lesson_type,units,instructor,topic\\nL1,2026-03-03,Basic,2,T. Berg,Starting and steering\\nL2,2026-03-10,Basic,2,T. Berg,Junctions\\nL3,2026-03-17,Basic,2,T. Berg,Parking\\nL4,2026-04-07,Country road,3,A. Novak,Overtaking\\nL5,2026-04-14,Country road,2,A. Novak,\\nL6,2026-04-21,Motorway,4,A. Novak,Joining and leaving\\nL7,2026-05-05,Night,2,T. Berg,\\nL8,,Night,,T. Berg,Dipped headlights\",\"targets\":\"id,lesson_type,target_units\\nT1,Basic,12\\nT2,Country road,5\\nT3,Motorway,4\\nT4,Night,3\",\"remarks\":\"Lesson L8 was moved, the date is still open.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "learner": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "driving_school": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "licence_class": {
            "type": "string",
            "maxLength": 40
        },
        "lines": {
            "type": "string",
            "maxLength": 24000,
            "minLength": 1
        },
        "targets": {
            "type": "string",
            "maxLength": 3000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "learner",
        "driving_school",
        "lines",
        "targets"
    ]
}

Hair colour card

hair_colour_card

Turn colour products and notes into a colour card. The server calculates the mixing ratio and amounts from the products entered, and nothing is said on skin.

Input and configuration fields

Essential settings
client — Client
Name or customer number. Added word for word.
Default settings: ""
salon — Salon
Optional. Added word for word.
Default settings: ""
recipe_date — Date
Optional. Added word for word.
Default settings: ""
lines — Products
One row per product. Enter parts for a ratio, or the amount of each product.
Default settings: ""
total_amount — Total amount
Optional: the amount to mix, for example 120. It is split by the parts.
Default settings: ""
recipe_notes — Notes on the application
Optional: order, processing times, wishes of the client.
Default settings: ""
Advanced settings
unit — Unit
Up to 4 letters, for example g or ml.
Default settings: "g"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "hair_colour_card",
    "text": "{\"client\":\"Customer card 1184\",\"salon\":\"Studio Lindenau\",\"recipe_date\":\"12 May 2026\",\"lines\":\"id,product,shade,parts,amount\\nF1,Lumina Cream,7.1,1,\\nF2,Lumina Cream,6.0,1,\\nF3,Lumina Developer 6 %,,2,\",\"total_amount\":\"120\",\"unit\":\"g\",\"recipe_notes\":\"Roots first, leave for 30 minutes, then the lengths for the last 10 minutes. The client wants a cool tone without red.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "client": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "salon": {
            "type": "string",
            "maxLength": 120
        },
        "recipe_date": {
            "type": "string",
            "maxLength": 40
        },
        "lines": {
            "type": "string",
            "maxLength": 3000,
            "minLength": 1
        },
        "total_amount": {
            "type": "string",
            "maxLength": 12
        },
        "unit": {
            "type": "string",
            "maxLength": 4
        },
        "recipe_notes": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "client",
        "lines"
    ]
}

Photo shoot schedule

photo_shoot_schedule

Build a schedule for a photo shoot from steps and minutes. The server calculates all times, buffers and overruns, and the AI words each step.

Input and configuration fields

Essential settings
shoot — Shoot
Name of the shoot or client. Added word for word.
Default settings: ""
shoot_date — Date
Optional. Added word for word.
Default settings: ""
location — Location
Optional. Added word for word.
Default settings: ""
start_time — Start time
Format 09:30.
Default settings: "09:00"
latest_end — Planned end
Optional, format 18:30. A later end is reported.
Default settings: ""
lines — Steps
One row per step with minutes. fixed_start is optional, for a time that cannot move, for example golden hour at 19:40.
Default settings: ""
remarks — Notes
Optional: wishes and details that may help when wording the steps.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "photo_shoot_schedule",
    "text": "{\"shoot\":\"Family Berg, spring pictures\",\"shoot_date\":\"16 May 2026\",\"location\":\"Mill Park\",\"start_time\":\"14:00\",\"latest_end\":\"16:30\",\"lines\":\"id,step,who,minutes,fixed_start\\nA1,Arrival and light check,Photographer,20,\\nA2,Family group at the lake,Photographer and family,30,14:30\\nA3,Children on the meadow,Assistant,25,\\nA4,Change of clothes,Family,15,\\nA5,Portraits in the old orchard,Photographer,40,15:40\\nA6,Couple at the bridge in low sun,Photographer,30,16:15\",\"remarks\":\"The family wants natural pictures without posing. The children get tired quickly.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "shoot": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "shoot_date": {
            "type": "string",
            "maxLength": 40
        },
        "location": {
            "type": "string",
            "maxLength": 160
        },
        "start_time": {
            "type": "string",
            "maxLength": 5,
            "minLength": 1
        },
        "latest_end": {
            "type": "string",
            "maxLength": 5
        },
        "lines": {
            "type": "string",
            "maxLength": 12000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "shoot",
        "start_time",
        "lines"
    ]
}

Wedding day schedule

wedding_day_schedule

Build the schedule for a wedding day from steps and minutes. The server calculates all times, buffers and overruns, and the AI words each step.

Input and configuration fields

Essential settings
wedding — Wedding
Names of the couple. Added word for word.
Default settings: ""
wedding_date — Date
Optional. Added word for word.
Default settings: ""
venue — Venue
Optional. Added word for word.
Default settings: ""
start_time — Start time
Format 09:30.
Default settings: "09:00"
latest_end — Planned end
Optional, format 00:30. A later end is reported. An earlier time than the start counts as the next day.
Default settings: ""
lines — Steps
One row per step with minutes. fixed_start is optional, for a time that cannot move, for example the ceremony.
Default settings: ""
remarks — Notes
Optional: wishes and details that may help when wording the steps.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "wedding_day_schedule",
    "text": "{\"wedding\":\"Anna and Tom\",\"wedding_date\":\"20 June 2026\",\"venue\":\"Lindenhof\",\"start_time\":\"09:00\",\"latest_end\":\"00:30\",\"lines\":\"id,step,who,minutes,fixed_start\\nW1,Hair and make-up,Anna and stylist,120,\\nW2,Couple pictures in the garden,Photographer,60,\\nW3,Drive to the church,Tom,30,\\nW4,Guests arrive,Ushers,30,13:00\\nW5,Ceremony,Pastor,45,13:30\\nW6,Reception with cake,Service team,75,\\nW7,Group pictures,Photographer,40,\\nW8,Drive to the Lindenhof,All,20,\\nW9,Dinner,Kitchen,120,18:00\\nW10,Speeches,Best man,45,\\nW11,First dance,Anna and Tom,15,20:30\\nW12,Party,DJ,240,\",\"remarks\":\"The cake comes from the Hartmann Bakery. The DJ brings his own equipment.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "wedding": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "wedding_date": {
            "type": "string",
            "maxLength": 40
        },
        "venue": {
            "type": "string",
            "maxLength": 160
        },
        "start_time": {
            "type": "string",
            "maxLength": 5,
            "minLength": 1
        },
        "latest_end": {
            "type": "string",
            "maxLength": 5
        },
        "lines": {
            "type": "string",
            "maxLength": 18000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "wedding",
        "start_time",
        "lines"
    ]
}

Home exercise sheet

home_exercise_sheet

Sort the notes of a therapist into a clear home exercise sheet. Only exercises from the notes appear, with no diagnosis and no medical advice.

Input and configuration fields

Essential settings
patient — Patient
Optional: a first name or reference is enough. Added word for word.
Default settings: ""
therapist — Therapist or practice
Added word for word.
Default settings: ""
sheet_date — Date
Optional. Added word for word.
Default settings: ""
notes — Notes of the therapist
The exercises as agreed, with repetitions and how to do them. Only what is written here can appear.
Default settings: ""
practice_contact — Contact
Optional. Added word for word at the end.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "home_exercise_sheet",
    "text": "{\"patient\":\"Reference 2207\",\"therapist\":\"Lindenau Physiotherapy, K. Berg\",\"sheet_date\":\"5 May 2026\",\"notes\":\"Heel raises holding the chair, 10 times, 2 sets, in the morning and evening. Lie on the back, pull the knee to the chest with both hands, hold 20 seconds, 3 times each side. Walk on flat ground 15 minutes daily. Do the exercises slowly. Bring the sheet to the next appointment.\",\"practice_contact\":\"Lindenau Physiotherapy, telephone 0123 456789\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "patient": {
            "type": "string",
            "maxLength": 120
        },
        "therapist": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "sheet_date": {
            "type": "string",
            "maxLength": 40
        },
        "notes": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "practice_contact": {
            "type": "string",
            "maxLength": 300
        }
    },
    "required": [
        "therapist",
        "notes"
    ]
}

Care report

care_report

Turn care notes into a neutral report. Only observations from the notes appear, with no diagnosis and no advice, and a note says a qualified professional checks it.

Input and configuration fields

Essential settings
care_client — Client
A reference is enough. Added word for word.
Default settings: ""
report_date — Date and shift
Added word for word.
Default settings: ""
written_by — Written by
Optional. Added word for word.
Default settings: ""
notes — Care notes
What was observed and done. Only what is written here can appear in the report.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "care_report",
    "text": "{\"care_client\":\"Reference A-17\",\"report_date\":\"12 May 2026, early shift\",\"written_by\":\"A. Novak\",\"notes\":\"Washed at the sink with help at 08:00. Ate breakfast in the day room. Walked to the garden with the walker for about 20 minutes. Said the new chair is comfortable. Hearing aid battery changed at 09:30. Daughter phoned at 11:00. Open: ask whether the walker brakes need checking.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "care_client": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "report_date": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "written_by": {
            "type": "string",
            "maxLength": 120
        },
        "notes": {
            "type": "string",
            "maxLength": 8000,
            "minLength": 1
        }
    },
    "required": [
        "care_client",
        "report_date",
        "notes"
    ]
}

Childcare observation report

childcare_observation

Sort the notes of an educator into an observation report. Only observations appear, with no diagnosis and no rating or classification of the child.

Input and configuration fields

Essential settings
child — Child
A first name or code is enough. Added word for word.
Default settings: ""
child_group — Group
Optional. Added word for word.
Default settings: ""
observation_period — Observation period
Added word for word.
Default settings: ""
observer — Observed by
Optional. Added word for word.
Default settings: ""
notes — Notes
What the child did and said. Only what is written here can appear in the report.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "childcare_observation",
    "text": "{\"child\":\"Child A\",\"child_group\":\"Sunflower group\",\"observation_period\":\"4 to 8 May 2026\",\"observer\":\"K. Berg\",\"notes\":\"Monday: built a tower with wooden blocks during free play and counted the blocks aloud up to 12. Tuesday: asked another child to help carry the box. Wednesday: painted with both hands for about 20 minutes and said \\\"the sun is hot\\\". Thursday: listened to the story in the reading corner until the end. Friday: put on the boots without help before going out.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "child": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "child_group": {
            "type": "string",
            "maxLength": 80
        },
        "observation_period": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "observer": {
            "type": "string",
            "maxLength": 120
        },
        "notes": {
            "type": "string",
            "maxLength": 8000,
            "minLength": 1
        }
    },
    "required": [
        "child",
        "observation_period",
        "notes"
    ]
}

Death notice and obituary

death_notice_obituary

Write a death notice and a short obituary from what the family states. Names and dates stay word for word, and nothing is invented about the life of the person.

Input and configuration fields

Essential settings
deceased — Name of the deceased
Added word for word.
Default settings: ""
born — Born
Optional. Added word for word.
Default settings: ""
died — Died
Added word for word.
Default settings: ""
facts — What the family wants to say
Plain notes on the life of the person. Only what is written here can appear.
Default settings: ""
mourners — In mourning
Optional: names of the family. Added word for word.
Default settings: ""
service_details — Farewell service
Optional: place, date and wishes. Added word for word.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "death_notice_obituary",
    "text": "{\"deceased\":\"Anna Wiesental\",\"born\":\"3 March 1941\",\"died\":\"12 October 2026\",\"facts\":\"Teacher at the Bridgeport primary school for 31 years. Sang in the church choir. Loved her garden and her two grandchildren. Liked to say that a good book is never finished.\",\"mourners\":\"Paul and Lena Wiesental with Tom and Mia\",\"service_details\":\"Saturday, 24 October 2026, 11:00, Chapel at Mill Road. Instead of flowers, please consider a donation to the school library.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "deceased": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "born": {
            "type": "string",
            "maxLength": 60
        },
        "died": {
            "type": "string",
            "maxLength": 60,
            "minLength": 1
        },
        "facts": {
            "type": "string",
            "maxLength": 4000,
            "minLength": 1
        },
        "mourners": {
            "type": "string",
            "maxLength": 500
        },
        "service_details": {
            "type": "string",
            "maxLength": 500
        }
    },
    "required": [
        "deceased",
        "died",
        "facts"
    ]
}

Owners meeting: invitation and minutes

owners_meeting

Write the invitation or the minutes of an owners meeting. Agenda and resolutions stay word for word, with no legal statements and no invented deadlines.

Input and configuration fields

Essential settings
document — Document
Choose what to create.
invitation — Invitation · minutes — Minutes
Default settings: "invitation"
property_name — Property
Added word for word.
Default settings: ""
meeting_when — Date and time
Added word for word.
Default settings: ""
meeting_place — Place
Added word for word.
Default settings: ""
manager — Property manager
Added word for word.
Default settings: ""
agenda_items — Agenda
One item per line. Added word for word.
Default settings: ""
notes — Notes
Invitation: what should be mentioned. Minutes: how the meeting went. Only what is written here can appear.
Default settings: ""
attendance — Attendance
Minutes only: added word for word, for example 14 of 20 units present.
Default settings: ""
resolutions — Resolutions
Minutes only: one resolution per line with votes and amounts. Added word for word.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "owners_meeting",
    "text": "{\"document\":\"minutes\",\"property_name\":\"Owners of Mill Road 3\",\"meeting_when\":\"Thursday, 18 June 2026, 18:30\",\"meeting_place\":\"Meeting room of the Lindenau Community Centre\",\"manager\":\"Hartmann Property Management, S. Hartmann\",\"agenda_items\":\"1. Welcome\\n2. Annual statement 2025\\n3. Roof repair\\n4. Any other business\",\"notes\":\"Ms Berg asked about the timetable of the roof repair. The manager will ask the roofing firm and report back. The stairwell light was mentioned under any other business.\",\"attendance\":\"14 of 20 owners present or represented\",\"resolutions\":\"Item 2: The annual statement 2025 is approved. 13 yes, 0 no, 1 abstention.\\nItem 3: The roof repair by Dachbau Lindenau is approved at 48,500.00 EUR, paid from the reserve. 11 yes, 2 no, 1 abstention.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "document": {
            "type": "string",
            "enum": [
                "invitation",
                "minutes"
            ]
        },
        "property_name": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "meeting_when": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "meeting_place": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "manager": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "agenda_items": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "notes": {
            "type": "string",
            "maxLength": 6000
        },
        "attendance": {
            "type": "string",
            "maxLength": 200
        },
        "resolutions": {
            "type": "string",
            "maxLength": 6000
        }
    },
    "required": [
        "document",
        "property_name",
        "meeting_when",
        "meeting_place",
        "manager",
        "agenda_items"
    ]
}

Pet aftercare sheet

pet_aftercare_sheet

Sort the instructions of a veterinary practice into an aftercare sheet for pet owners. No diagnosis, and no medication or dose beyond the input.

Input and configuration fields

Essential settings
practice — Practice
Added word for word.
Default settings: ""
animal — Animal
Name and species. Added word for word.
Default settings: ""
pet_owner — Owner
Optional. Added word for word.
Default settings: ""
visit_date — Date of the visit
Added word for word.
Default settings: ""
notes — Instructions of the practice
Care, feeding, medication and doses as instructed, the next appointment. Only what is written here can appear.
Default settings: ""
practice_contact — Contact
Optional. Added word for word at the end.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "pet_aftercare_sheet",
    "text": "{\"practice\":\"Lindenau Veterinary Practice\",\"animal\":\"Mops, dog\",\"pet_owner\":\"\",\"visit_date\":\"5 May 2026\",\"notes\":\"After the dental cleaning: soft food for 3 days. No chew toys for 5 days. Demodent gel on the gums once a day in the evening for 5 days, as handed over. If there is bleeding after the 2nd day, please call the practice. Check-up on 14 May at 10:30.\",\"practice_contact\":\"Lindenau Veterinary Practice, telephone 0123 456700\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "practice": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "animal": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "pet_owner": {
            "type": "string",
            "maxLength": 120
        },
        "visit_date": {
            "type": "string",
            "maxLength": 40,
            "minLength": 1
        },
        "notes": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "practice_contact": {
            "type": "string",
            "maxLength": 300
        }
    },
    "required": [
        "practice",
        "animal",
        "visit_date",
        "notes"
    ]
}

Workshop report for vehicle owners

workshop_report

Explain a repair in plain words. The server adds up labour and parts, and the AI explains only what the order and the workshop notes say.

Input and configuration fields

Essential settings
workshop — Workshop
Added word for word.
Default settings: ""
vehicle — Vehicle
Added word for word, for example model and number plate.
Default settings: ""
mileage — Mileage
Optional. Added word for word.
Default settings: ""
lines — Labour and parts
One row per job or part. kind is labour or part. For labour, quantity means hours.
Default settings: ""
workshop_notes — Workshop notes
What was reported, found and agreed. Only what is written here can be explained.
Default settings: ""
Advanced settings
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 25000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "workshop_report",
    "text": "{\"workshop\":\"Hartmann Car Service\",\"vehicle\":\"VW Golf, BX-KM 418\",\"mileage\":\"84210 km\",\"lines\":\"id,kind,description,quantity,unit_price\\nW1,labour,Replace front brake pads and discs,1.5,89.00\\nW2,labour,Annual service with oil change,2,89.00\\nW3,part,Front brake pads set,1,64.90\\nW4,part,Front brake discs,2,58.50\\nW5,part,Engine oil in litres,4.5,14.20\\nW6,part,Oil filter,1,12.80\\nW7,part,Wiper blades,1,\",\"workshop_notes\":\"Customer reported squeaking when braking. Front brake discs were below the wear limit. Rear brake pads about half worn, workshop will look at them again at the next service. Price of the wiper blades still has to be looked up.\",\"currency\":\"EUR\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "workshop": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "vehicle": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "mileage": {
            "type": "string",
            "maxLength": 40
        },
        "lines": {
            "type": "string",
            "maxLength": 16000,
            "minLength": 1
        },
        "workshop_notes": {
            "type": "string",
            "maxLength": 3000
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        }
    },
    "required": [
        "workshop",
        "vehicle",
        "lines"
    ]
}

Electrical test record

electrical_test_record

Compare measured values with the limits entered. The server marks each value as within or outside its limit. No standard values are added, and this does not replace the test by a qualified electrician.

Input and configuration fields

Essential settings
installation — Installation
Added word for word, for example building and distribution board.
Default settings: ""
test_date — Test date
Added word for word.
Default settings: ""
tester — Tested by
Optional. Added word for word.
Default settings: ""
lines — Measurements
One row per value. The limit comes from the applicable standard or the manufacturer. limit_type is max (value may not be higher) or min (value may not be lower).
Default settings: ""
remarks — Notes
Optional: anything the record should mention, for example the measuring device.
Default settings: ""

Maximum UTF-8 input bytes: 45000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "electrical_test_record",
    "text": "{\"installation\":\"Mill Road 3, distribution board 1\",\"test_date\":\"12 May 2026\",\"tester\":\"T. Berg\",\"lines\":\"id,circuit,measurement,value,unit,limit,limit_type\\nP1,Sockets,Insulation resistance,210,MOhm,1,min\\nP2,Sockets,Loop impedance,0.62,Ohm,1.37,max\\nP3,Oven,Loop impedance,1.54,Ohm,1.37,max\\nP4,Oven,RCD trip time,24,ms,30,max\\nP5,Lighting,Insulation resistance,,MOhm,1,min\\nP6,Lighting,RCD trip current,30,mA,30,max\",\"remarks\":\"Measured with the same device on all circuits.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "installation": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "test_date": {
            "type": "string",
            "maxLength": 40,
            "minLength": 1
        },
        "tester": {
            "type": "string",
            "maxLength": 120
        },
        "lines": {
            "type": "string",
            "maxLength": 24000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "installation",
        "test_date",
        "lines"
    ]
}

Temperature log check

temperature_log_check

Check a temperature log for fridges and freezers. The server finds readings outside the entered range and days without a reading. No statement on food law.

Input and configuration fields

Essential settings
kitchen — Kitchen or business
Added word for word.
Default settings: ""
period — Period
Optional. Added word for word.
Default settings: ""
lines — Readings
One row per reading. Dates like 2026-03-31 or 31.03.2026, times like 08:30. Enter lower and upper once per appliance; empty cells keep the last range.
Default settings: ""
remarks — Notes
Optional: for example closed days, which then explain a gap.
Default settings: ""
Advanced settings
checks_per_day — Readings per day
Days with fewer readings per appliance are listed. From 1 to 6.
Default settings: 1

Maximum UTF-8 input bytes: 45000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "temperature_log_check",
    "text": "{\"kitchen\":\"Riverside Bistro\",\"period\":\"4 to 8 May 2026\",\"lines\":\"id,appliance,date,time,temperature,lower,upper,note\\nT1,Cold room,2026-05-04,08:00,4.0,0,7,\\nT2,Freezer,2026-05-04,08:05,-19,-25,-18,\\nT3,Cold room,2026-05-05,08:00,5.5,,,\\nT4,Freezer,2026-05-05,08:10,-16.5,,,Door open during delivery\\nT5,Cold room,2026-05-06,08:02,8.5,,,\\nT6,Cold room,2026-05-08,08:00,3,,,\\nT7,Freezer,2026-05-08,08:03,,,,\",\"checks_per_day\":1,\"remarks\":\"Closed on 7 May.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "kitchen": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "period": {
            "type": "string",
            "maxLength": 80
        },
        "lines": {
            "type": "string",
            "maxLength": 24000,
            "minLength": 1
        },
        "checks_per_day": {
            "type": "integer",
            "minimum": 1,
            "maximum": 6
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "kitchen",
        "lines",
        "checks_per_day"
    ]
}

Baker's percentage calculator

bakers_percentage

Turn a recipe into amounts. The server calculates grams per ingredient, total dough, hydration and dough yield from baker's percentages or from a recipe in grams.

Input and configuration fields

Essential settings
recipe — Recipe
Added word for word.
Default settings: ""
lines — Ingredients
One row per ingredient. role is flour, liquid or other. Fill in percent in all rows or amount_g in all rows.
Default settings: ""
pieces — Pieces
How many pieces are needed, for example 40.
Default settings: ""
piece_weight — Dough per piece (g)
Dough weight of one piece in grams, for example 500.
Default settings: ""
flour_weight — Or: flour weight (g)
Instead of pieces: total flour in grams, for example 10000.
Default settings: ""
remarks — Notes
Optional: anything the sheet should mention.
Default settings: ""

Maximum UTF-8 input bytes: 12000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "bakers_percentage",
    "text": "{\"recipe\":\"Wheat and rye loaf\",\"lines\":\"id,role,ingredient,percent,amount_g\\nD1,flour,Wheat flour,80,\\nD2,flour,Rye flour,20,\\nD3,liquid,Water,65,\\nD4,other,Salt,2,\\nD5,other,Fresh yeast,1,\",\"pieces\":\"40\",\"piece_weight\":\"500\",\"flour_weight\":\"\",\"remarks\":\"Dough rests overnight in the cold room.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "recipe": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "pieces": {
            "type": "string",
            "maxLength": 12
        },
        "piece_weight": {
            "type": "string",
            "maxLength": 12
        },
        "flour_weight": {
            "type": "string",
            "maxLength": 12
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "recipe",
        "lines"
    ]
}

Hive record evaluation

hive_record

Evaluate hive records. The server adds up the honey yield per hive and reports long gaps between entries. No diagnosis and no treatment advice.

Input and configuration fields

Essential settings
apiary — Apiary
Added word for word.
Default settings: ""
year — Season
Optional. Added word for word.
Default settings: ""
lines — Entries
One row per check or harvest. Dates like 2026-03-31 or 31.03.2026. honey_kg only for a harvest. No commas in the note unless it is in quotes.
Default settings: ""
remarks — Notes
Optional: anything the evaluation should mention.
Default settings: ""
Advanced settings
gap_days — Gap after days
A longer time without an entry is listed. From 7 to 365.
Default settings: 30

Maximum UTF-8 input bytes: 45000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "hive_record",
    "text": "{\"apiary\":\"Mill Road apiary\",\"year\":\"2026\",\"lines\":\"id,hive,date,honey_kg,note\\nB1,Hive 1,2026-04-12,,Queen seen and brood on six frames\\nB2,Hive 1,2026-05-20,,Queen cups found\\nB3,Hive 1,2026-06-15,18.5,First harvest\\nB4,Hive 1,2026-07-20,14,Second harvest\\nB5,Hive 2,2026-04-12,,Few bees after winter\\nB6,Hive 2,2026-06-15,9.25,Harvest from one super\\nB7,Hive 3,2026-04-12,,New colony\\nB8,Hive 3,,,\",\"gap_days\":30,\"remarks\":\"\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "apiary": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "year": {
            "type": "string",
            "maxLength": 40
        },
        "lines": {
            "type": "string",
            "maxLength": 30000,
            "minLength": 1
        },
        "gap_days": {
            "type": "integer",
            "minimum": 7,
            "maximum": 365
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "apiary",
        "lines",
        "gap_days"
    ]
}

Timber list with solid cubic metres

timber_list

Turn a log list into a timber list. The server calculates the volume of each log with the Huber formula from length and mid diameter and shows the calculation.

Input and configuration fields

Essential settings
forest — Forest or stand
Added word for word.
Default settings: ""
timber_date — Date
Optional. Added word for word.
Default settings: ""
lines — Logs
One row per log with length in metres and mid diameter in centimetres.
Default settings: ""
remarks — Notes
Optional: anything the list should mention.
Default settings: ""

Maximum UTF-8 input bytes: 20000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "timber_list",
    "text": "{\"forest\":\"Mill Forest, stand 12\",\"timber_date\":\"3 February 2026\",\"lines\":\"id,species,length_m,diameter_cm\\nH1,Spruce,4,32\\nH2,Spruce,4,28.5\\nH3,Spruce,5,24\\nH4,Pine,4.5,30\\nH5,Pine,,26\",\"remarks\":\"Logs stacked at the east track.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "forest": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "timber_date": {
            "type": "string",
            "maxLength": 40
        },
        "lines": {
            "type": "string",
            "maxLength": 12000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "forest",
        "lines"
    ]
}

Planting plan with quantities

planting_plan

Turn beds and densities into a planting plan. The server calculates the number of plants from area and density and rounds each row up to whole plants.

Input and configuration fields

Essential settings
planting_site — Planting site
Added word for word, for example project or address.
Default settings: ""
lines — Planting rows
One row per plant in a bed, with area in square metres and plants per square metre.
Default settings: ""
remarks — Notes
Optional: anything the plan should mention.
Default settings: ""

Maximum UTF-8 input bytes: 15000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "planting_plan",
    "text": "{\"planting_site\":\"Mill Road courtyard\",\"lines\":\"id,bed,plant,area_m2,density_per_m2\\nG1,North bed,Lavender,12.5,6\\nG2,North bed,Ornamental grass,4.2,5\\nG3,South bed,Ground cover,18.4,8.5\\nG4,Hedge,Hornbeam,7.5,3\\nG5,South bed,Tulips,,25\",\"remarks\":\"The area of the tulips is measured on site next week.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "planting_site": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 10000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "planting_site",
        "lines"
    ]
}

Power load per phase

power_load_phases

Add up the power per phase for an event. The server compares the watts on each phase with the fuse entered. This does not replace a check by a qualified person.

Input and configuration fields

Essential settings
event — Event
Added word for word.
Default settings: ""
fuse_amps — Fuse per phase (A)
From the supply on site, for example 16 or 32.
Default settings: 16
lines — Devices
One row per device type. phase is L1, L2 or L3. Watts from the rating plate or data sheet.
Default settings: ""
remarks — Notes
Optional: anything the overview should mention.
Default settings: ""
Advanced settings
voltage — Voltage per phase (V)
Voltage between phase and neutral.
Default settings: 230

Maximum UTF-8 input bytes: 20000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "power_load_phases",
    "text": "{\"event\":\"Summer festival, main stage\",\"fuse_amps\":16,\"voltage\":230,\"lines\":\"id,device,phase,quantity,watts\\nS1,LED spot,L1,12,180\\nS2,Moving head,L1,4,320\\nS3,Sound amplifier,L2,2,1800\\nS4,Mixing desk,L2,1,150\\nS5,Fog machine,L3,1,1500\\nS6,Bar fridge,,1,350\",\"remarks\":\"The bar is fed from the same distribution box.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "event": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "fuse_amps": {
            "type": "integer",
            "minimum": 1,
            "maximum": 630
        },
        "voltage": {
            "type": "integer",
            "minimum": 100,
            "maximum": 400
        },
        "lines": {
            "type": "string",
            "maxLength": 12000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "event",
        "fuse_amps",
        "voltage",
        "lines"
    ]
}

Load list with payload check

load_list

Turn goods into a load list. The server adds up the weights, compares them with the payload entered and reports missing figures. No statement on load securing.

Input and configuration fields

Essential settings
vehicle — Vehicle
Added word for word, for example number plate.
Default settings: ""
tour — Tour
Optional. Added word for word, for example number and date.
Default settings: ""
payload_kg — Payload (kg)
From the vehicle papers, for example 1200.
Default settings: ""
lines — Goods
One row per item with quantity and weight per piece in kilograms. stop is the unloading point.
Default settings: ""
remarks — Notes
Optional: anything the list should mention.
Default settings: ""

Maximum UTF-8 input bytes: 25000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "load_list",
    "text": "{\"vehicle\":\"Van BX-KM 418\",\"tour\":\"Tour 7, 12 May 2026\",\"payload_kg\":\"1200\",\"lines\":\"id,stop,item,quantity,unit_weight_kg\\nL1,Bridgeport,Pallet of flour,2,320\\nL2,Bridgeport,Sack of sugar,10,25\\nL3,Mill Road,Crate of bottles,14,18.5\\nL4,Mill Road,Cleaning supplies,6,12.25\\nL5,Mill Road,Display stand,1,\",\"remarks\":\"Display stand comes from the warehouse in the morning.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "vehicle": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "tour": {
            "type": "string",
            "maxLength": 120
        },
        "payload_kg": {
            "type": "string",
            "maxLength": 16,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 16000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "vehicle",
        "payload_kg",
        "lines"
    ]
}

Cleaning plan with weekly hours

cleaning_plan

Turn cleaning tasks into a plan. The server calculates the hours per week for each site from frequency and minutes and lists incomplete rows.

Input and configuration fields

Essential settings
company — Cleaning company or team
Added word for word.
Default settings: ""
period — Valid from
Optional. Added word for word.
Default settings: ""
lines — Tasks
One row per task and site with times per week and minutes per time. Every two weeks is 0.5 times per week.
Default settings: ""
remarks — Notes
Optional: anything the plan should mention.
Default settings: ""

Maximum UTF-8 input bytes: 25000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "cleaning_plan",
    "text": "{\"company\":\"Clearwater Services\",\"period\":\"May 2026\",\"lines\":\"id,site,task,times_per_week,minutes\\nR1,Mill Road office,Floors and desks,5,45\\nR2,Mill Road office,Washrooms,5,20\\nR3,Mill Road office,Windows,0.5,90\\nR4,Hartmann Bakery,Sales room,6,30\\nR5,Hartmann Bakery,Storage room,1,40\\nR6,Hartmann Bakery,Staff room,2,\",\"remarks\":\"Minutes for the staff room are agreed next week.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "company": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "period": {
            "type": "string",
            "maxLength": 80
        },
        "lines": {
            "type": "string",
            "maxLength": 14000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "company",
        "lines"
    ]
}

Paint quantity for painters

paint_quantity

Calculate the paint for a job from rooms, windows and doors, coats and coverage. The server works out litres and containers, and the AI writes a short summary for the offer.

Input and configuration fields

Essential settings
project — Project
Added word for word, for example customer and address.
Default settings: ""
lines — Rooms and areas
One row per room or surface. Wall area is perimeter times height; extra_m2 adds a ceiling or another area directly; openings_m2 is deducted. Leave coats empty to use the number below.
Default settings: ""
coverage_m2_per_l — Coverage (m² per litre)
From the product data sheet, for example 8 or 7.5.
Default settings: ""
coats — Coats
For rows without their own number. From 1 to 6.
Default settings: 2
container_l — Container size (l)
Optional: litres in one container, for example 10 or 2.5.
Default settings: "10"
remarks — Notes
Optional: anything the summary should mention, for example colours or the condition of the walls.
Default settings: ""
Advanced settings
reserve_percent — Reserve (%)
Added to the total litres. From 0 to 50.
Default settings: 10
container_price — Price per container
Optional: for the material cost, for example 89.90.
Default settings: ""
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 20000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "paint_quantity",
    "text": "{\"project\":\"Keller family, Maple Street\",\"lines\":\"id,room,perimeter_m,height_m,extra_m2,openings_m2,coats\\nR1,Living room,18.4,2.6,,5.2,\\nR2,Kitchen,12,2.5,,3.1,\\nR3,Living room ceiling,,,21.5,,1\\nR4,Hall,9.6,,,1.8,\",\"coverage_m2_per_l\":\"8\",\"coats\":2,\"container_l\":\"10\",\"reserve_percent\":10,\"container_price\":\"89.90\",\"currency\":\"EUR\",\"remarks\":\"Walls in warm white, ceiling in pure white. Small cracks in the kitchen are filled first. Height of the hall is measured on site.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "project": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 12000,
            "minLength": 1
        },
        "coverage_m2_per_l": {
            "type": "string",
            "maxLength": 12,
            "minLength": 1
        },
        "coats": {
            "type": "integer",
            "minimum": 1,
            "maximum": 6
        },
        "container_l": {
            "type": "string",
            "maxLength": 12
        },
        "reserve_percent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 50
        },
        "container_price": {
            "type": "string",
            "maxLength": 16
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "project",
        "lines",
        "coverage_m2_per_l",
        "coats",
        "reserve_percent"
    ]
}

Tile quantity with adhesive and grout

tile_quantity

Calculate tiles, adhesive and grout from the areas of a job. The server adds the waste, rounds up to whole packs per tile and works out bags from the entered consumption.

Input and configuration fields

Essential settings
project — Project
Added word for word, for example customer and address.
Default settings: ""
lines — Surfaces
One row per surface with the net area in square metres. tile names the tile. waste_percent and pack_m2 may be empty to use the values below.
Default settings: ""
waste_percent — Waste (%)
For rows without their own value. From 0 to 50.
Default settings: 10
pack_m2 — m² per pack
Optional: for rows without their own value, for example 1.44.
Default settings: ""
remarks — Notes
Optional: anything the summary should mention, for example laying pattern or substrate.
Default settings: ""
Advanced settings
adhesive_kg_m2 — Adhesive (kg per m²)
Optional: consumption from the data sheet, for example 3.5.
Default settings: ""
adhesive_bag_kg — Adhesive bag (kg)
Optional, for example 25.
Default settings: ""
grout_kg_m2 — Grout (kg per m²)
Optional: consumption from the data sheet for this tile and joint, for example 0.5.
Default settings: ""
grout_bag_kg — Grout bag (kg)
Optional, for example 5.
Default settings: ""

Maximum UTF-8 input bytes: 20000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "tile_quantity",
    "text": "{\"project\":\"Bath and kitchen, Mill Road 3\",\"lines\":\"id,surface,tile,area_m2,waste_percent,pack_m2\\nF1,Bathroom floor,Tile A 60x60,6.8,,\\nF2,Bathroom wall,Tile B 30x60,22.4,15,1.08\\nF3,Kitchen wall,Tile B 30x60,4.2,,1.08\\nF4,Hall floor,Tile A 60x60,,,\",\"waste_percent\":10,\"pack_m2\":\"1.44\",\"adhesive_kg_m2\":\"3.5\",\"adhesive_bag_kg\":\"25\",\"grout_kg_m2\":\"0.5\",\"grout_bag_kg\":\"5\",\"remarks\":\"Bathroom wall laid diagonally. The hall floor is measured after the old floor is removed.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "project": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 12000,
            "minLength": 1
        },
        "waste_percent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 50
        },
        "pack_m2": {
            "type": "string",
            "maxLength": 12
        },
        "adhesive_kg_m2": {
            "type": "string",
            "maxLength": 12
        },
        "adhesive_bag_kg": {
            "type": "string",
            "maxLength": 12
        },
        "grout_kg_m2": {
            "type": "string",
            "maxLength": 12
        },
        "grout_bag_kg": {
            "type": "string",
            "maxLength": 12
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "project",
        "lines",
        "waste_percent"
    ]
}

Roofing material from roof areas

roofing_material

Calculate roof tiles, battens and ridge from the roof faces of a job. The server uses the tiles per square metre and the batten gauge from the manufacturer and adds the waste.

Input and configuration fields

Essential settings
project — Project
Added word for word, for example customer and address.
Default settings: ""
lines — Roof faces
One row per roof face with the area on the slope in square metres. ridge_m is the ridge or hip length to cover along this face; enter a shared ridge only once.
Default settings: ""
tiles_per_m2 — Tiles per m²
From the manufacturer for this tile and batten gauge, for example 10.5.
Default settings: ""
batten_gauge_cm — Batten gauge (cm)
Optional: distance between battens, for example 33.5. Without it, no battens are calculated.
Default settings: ""
waste_percent — Waste (%)
Added to tiles and battens. From 0 to 30.
Default settings: 5
remarks — Notes
Optional: anything the summary should mention, for example the tile model or roof shape.
Default settings: ""
Advanced settings
ridge_tiles_per_m — Ridge tiles per metre
Optional: from the manufacturer, for example 2.5.
Default settings: ""

Maximum UTF-8 input bytes: 12000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "roofing_material",
    "text": "{\"project\":\"Berg house, Linden Lane 7\",\"lines\":\"id,roof_face,area_m2,ridge_m\\nD1,South face,62.4,10.4\\nD2,North face,62.4,\\nD3,Garage roof,18.3,\\nD4,Porch,,\",\"tiles_per_m2\":\"10.5\",\"batten_gauge_cm\":\"33.5\",\"waste_percent\":5,\"ridge_tiles_per_m\":\"2.5\",\"remarks\":\"Red clay tiles as on the old roof. The porch is measured when the scaffolding is up.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "project": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "tiles_per_m2": {
            "type": "string",
            "maxLength": 12,
            "minLength": 1
        },
        "batten_gauge_cm": {
            "type": "string",
            "maxLength": 12
        },
        "waste_percent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30
        },
        "ridge_tiles_per_m": {
            "type": "string",
            "maxLength": 12
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "project",
        "lines",
        "tiles_per_m2",
        "waste_percent"
    ]
}

Glass order with area and weight

glass_order

Turn panes into an order list. The server calculates the area per pane and position, an optional minimum area per pane and the weight from area, thickness and 2.5 kg per m² and mm.

Input and configuration fields

Essential settings
customer — Customer or job
Added word for word.
Default settings: ""
order_ref — Order reference
Optional. Added word for word.
Default settings: ""
lines — Panes
One row per position with width and height in millimetres, thickness in millimetres and quantity. For insulating or laminated glass enter the sum of the glass thicknesses.
Default settings: ""
remarks — Notes
Optional: anything the order should mention, for example edge finish or delivery.
Default settings: ""
Advanced settings
min_area_m2 — Minimum area per pane (m²)
Optional: as on the price list of the supplier, for example 0.5. Smaller panes are counted with this area.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "glass_order",
    "text": "{\"customer\":\"Novak kitchen and bath\",\"order_ref\":\"GL-2026-114\",\"lines\":\"id,position,glass_type,width_mm,height_mm,thickness_mm,quantity\\nG1,Kitchen window,Insulating glass 4/16/4,1200,1400,8,2\\nG2,Bathroom,Satin glass,600,450,6,1\\nG3,Shelf,Float,800,250,8,3\\nG4,Door,Float,900,,8,1\",\"min_area_m2\":\"0.5\",\"remarks\":\"Shelves with polished edges. Height of the door pane follows after the frame is fitted.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "customer": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "order_ref": {
            "type": "string",
            "maxLength": 80
        },
        "lines": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1
        },
        "min_area_m2": {
            "type": "string",
            "maxLength": 12
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "customer",
        "lines"
    ]
}

Removal volume and vehicle size

removal_volume

Turn a list of household items into a packing list. The server adds up the volume by room, adds a reserve and picks the smallest fitting vehicle from the own vehicle list.

Input and configuration fields

Essential settings
move — Move
Added word for word, for example customer and both addresses.
Default settings: ""
move_date — Moving date
Optional. Added word for word.
Default settings: ""
lines — Household items
One row per kind of item with quantity and cubic metres for one piece. note is for packing hints such as fragile or dismantle.
Default settings: ""
vehicles — Own vehicles
Optional: one row per vehicle with its load volume in cubic metres. The smallest one that fits is suggested.
Default settings: ""
reserve_percent — Reserve (%)
Added to the total volume for stacking gaps. From 0 to 50.
Default settings: 10
remarks — Notes
Optional: anything the packing list should mention, for example floors or a lift.
Default settings: ""

Maximum UTF-8 input bytes: 32000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "removal_volume",
    "text": "{\"move\":\"Hartmann family, Mill Road 3 to Linden Lane 7\",\"move_date\":\"12 June 2026\",\"lines\":\"id,room,item,quantity,volume_m3,note\\nU1,Living room,Sofa three-seater,1,1.8,\\nU2,Living room,Bookshelf,2,0.9,Dismantle\\nU3,Kitchen,Moving box,25,0.1,Fragile\\nU4,Bedroom,Wardrobe,1,2.5,Dismantle\\nU5,Bedroom,Bed 160 x 200,1,1.5,\\nU6,Cellar,Bicycle,2,,\",\"vehicles\":\"id,vehicle,volume_m3\\nV1,Van,12\\nV2,Truck 7.5 t,35\\nV3,Truck 12 t,50\",\"reserve_percent\":10,\"remarks\":\"Third floor without a lift at the old flat. The cellar is checked on the viewing day.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "move": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "move_date": {
            "type": "string",
            "maxLength": 40
        },
        "lines": {
            "type": "string",
            "maxLength": 24000,
            "minLength": 1
        },
        "vehicles": {
            "type": "string",
            "maxLength": 3000
        },
        "reserve_percent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 50
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "move",
        "lines",
        "reserve_percent"
    ]
}

Translation offer by standard lines

standard_line_offer

Turn character counts into an offer. The server converts characters with spaces into standard lines, multiplies by the price per line, adds a rush surcharge and checks a minimum fee.

Input and configuration fields

Essential settings
customer — Customer
Added word for word.
Default settings: ""
offer_number — Offer number
Optional. Added word for word.
Default settings: ""
language_pair — Languages
Optional. Added word for word, for example German into English.
Default settings: ""
deadline — Delivery
Optional. Added word for word.
Default settings: ""
lines — Documents
One row per document with the number of characters including spaces, as counted by the word processor.
Default settings: ""
price_per_line — Price per line
Net price for one standard line, for example 1.35.
Default settings: ""
line_chars — Characters per line
Characters including spaces that make one standard line. From 30 to 100.
Default settings: 55
rush_percent — Rush surcharge (%)
0 for no surcharge. From 0 to 200.
Default settings: 0
remarks — Notes
Optional: anything the offer should mention, for example the subject area or format.
Default settings: ""
Advanced settings
rounding — Rounding
How the lines of each document are counted.
exact — Exact, two decimals · up — Round up to whole lines per document
Default settings: "exact"
minimum_fee — Minimum fee
Optional: used when the total is lower, for example 40.
Default settings: ""
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 12000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "standard_line_offer",
    "text": "{\"customer\":\"Hartmann Bakery Ltd\",\"offer_number\":\"A-2026-071\",\"language_pair\":\"German into English\",\"deadline\":\"within 5 working days\",\"lines\":\"id,document,characters\\nN1,Lease agreement,12480\\nN2,Cover letter,1.830\\nN3,Appendix floor plan,\",\"price_per_line\":\"1.35\",\"line_chars\":55,\"rush_percent\":25,\"rounding\":\"exact\",\"minimum_fee\":\"40\",\"currency\":\"EUR\",\"remarks\":\"Legal subject area. The appendix is counted once the scan is readable.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "customer": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "offer_number": {
            "type": "string",
            "maxLength": 60
        },
        "language_pair": {
            "type": "string",
            "maxLength": 80
        },
        "deadline": {
            "type": "string",
            "maxLength": 60
        },
        "lines": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "price_per_line": {
            "type": "string",
            "maxLength": 12,
            "minLength": 1
        },
        "line_chars": {
            "type": "integer",
            "minimum": 30,
            "maximum": 100
        },
        "rush_percent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 200
        },
        "rounding": {
            "type": "string",
            "enum": [
                "exact",
                "up"
            ]
        },
        "minimum_fee": {
            "type": "string",
            "maxLength": 12
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "customer",
        "lines",
        "price_per_line",
        "line_chars",
        "rush_percent",
        "rounding"
    ]
}

Old gold purchase receipt

gold_purchase_receipt

Turn weighed items into a purchase receipt. The server calculates fine gold from weight and fineness and the payout from the daily price entered by the business. No prices are fetched.

Input and configuration fields

Essential settings
business — Buyer
Added word for word, for example shop name and address.
Default settings: ""
seller — Seller
Optional. Added word for word.
Default settings: ""
receipt_date — Date
Added word for word.
Default settings: ""
receipt_number — Receipt number
Optional. Added word for word.
Default settings: ""
lines — Items bought
One row per item with weight in grams and fineness in thousandths, for example 585 or 750. Weigh without stones; note it in the note column.
Default settings: ""
price_per_g — Price per gram of fine gold
Today's price set by the business, for example 58.40. Nothing is fetched from outside.
Default settings: ""
payout_percent — Share paid (%)
Share of the fine gold value that is paid out. From 1 to 100.
Default settings: 100
remarks — Notes
Optional: anything the receipt should mention, for example how the items were tested.
Default settings: ""
Advanced settings
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 20000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "gold_purchase_receipt",
    "text": "{\"business\":\"Berg Goldsmiths, Market Square 4\",\"seller\":\"Anna Novak\",\"receipt_date\":\"14 May 2026\",\"receipt_number\":\"AK-0193\",\"lines\":\"id,item,weight_g,fineness,note\\nA1,Ring,4.2,585,\\nA2,Chain,12.75,750,\\nA3,Earrings,0.875,333,weighed without stones\\nA4,Bracelet,,585,clasp still to be removed\",\"price_per_g\":\"58.40\",\"payout_percent\":90,\"currency\":\"EUR\",\"remarks\":\"Hallmarks checked with a loupe, chain tested with acid on the clasp.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "business": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1
        },
        "seller": {
            "type": "string",
            "maxLength": 160
        },
        "receipt_date": {
            "type": "string",
            "maxLength": 40,
            "minLength": 1
        },
        "receipt_number": {
            "type": "string",
            "maxLength": 40
        },
        "lines": {
            "type": "string",
            "maxLength": 12000,
            "minLength": 1
        },
        "price_per_g": {
            "type": "string",
            "maxLength": 12,
            "minLength": 1
        },
        "payout_percent": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "business",
        "receipt_date",
        "lines",
        "price_per_g",
        "payout_percent"
    ]
}

Brew log with attenuation and alcohol

brew_log

Turn gravity readings into a brew log. The server calculates apparent attenuation and an alcohol estimate from original and final gravity in degrees Plato and states the formula used.

Input and configuration fields

Essential settings
brewery — Brewery
Added word for word.
Default settings: ""
brew — Brew
Added word for word, for example beer and batch number.
Default settings: ""
brew_date — Brew day
Optional. Added word for word.
Default settings: ""
og_plato — Original gravity (°P)
Measured before pitching, for example 12.5.
Default settings: ""
fg_plato — Final gravity (°P)
Optional. If empty, the reading with the latest date is used.
Default settings: ""
lines — Readings
One row per reading. Dates like 2026-03-31 or 31.03.2026. Gravity in degrees Plato, temperature in degrees Celsius; both may be empty.
Default settings: ""
remarks — Notes
Optional: anything the log should mention, for example yeast or hops.
Default settings: ""
Advanced settings
batch_l — Batch (l)
Optional: litres in the fermenter, for example 50.
Default settings: ""

Maximum UTF-8 input bytes: 20000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "brew_log",
    "text": "{\"brewery\":\"Mill Road Brewhouse\",\"brew\":\"Pale ale, batch 27\",\"brew_date\":\"2 March 2026\",\"og_plato\":\"12.5\",\"fg_plato\":\"\",\"lines\":\"id,date,stage,gravity_plato,temperature_c,note\\nS1,2026-03-02,Pitching,12.5,12,Yeast rehydrated\\nS2,2026-03-05,Day 3,6.2,14,Krausen high\\nS3,09.03.2026,Day 7,3.1,15,Dry hopped\\nS4,2026-03-16,Bottling,2.8,4,\",\"batch_l\":\"50\",\"remarks\":\"Fermenter 2. Priming sugar added at bottling.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "brewery": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "brew": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "brew_date": {
            "type": "string",
            "maxLength": 40
        },
        "og_plato": {
            "type": "string",
            "maxLength": 8,
            "minLength": 1
        },
        "fg_plato": {
            "type": "string",
            "maxLength": 8
        },
        "lines": {
            "type": "string",
            "maxLength": 12000,
            "minLength": 1
        },
        "batch_l": {
            "type": "string",
            "maxLength": 12
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "brewery",
        "brew",
        "og_plato",
        "lines"
    ]
}

Hiking time plan by legs

hiking_time_plan

Turn the legs of a tour into a time plan. The server calculates the walking time per leg with the DIN 33466 rule, adds breaks and shows arrival and the latest time at each point.

Input and configuration fields

Essential settings
tour — Tour
Added word for word.
Default settings: ""
guide — Guide
Optional. Added word for word.
Default settings: ""
tour_date — Date
Optional. Added word for word.
Default settings: ""
lines — Legs
One row per leg in walking order, with distance in kilometres, ascent and descent in metres and the break in minutes at the end of the leg.
Default settings: ""
start_time — Start time
Time like 08:30.
Default settings: "08:00"
latest_return — Latest return
Optional: time like 17:00, for example before dark or the last bus. Each point then gets a latest time.
Default settings: ""
pace_percent — Group factor
Multiplies every walking time. Below 100 for a fast group, above 100 for a slow one.
70 — 70 % · 80 — 80 % · 90 — 90 % · 100 — 100 % (rule as it is) · 110 — 110 % · 120 — 120 % · 130 — 130 % · 150 — 150 % · 200 — 200 %
Default settings: "100"
remarks — Notes
Optional: anything the plan should mention, for example meeting point or equipment.
Default settings: ""

Maximum UTF-8 input bytes: 12000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "hiking_time_plan",
    "text": "{\"tour\":\"Three-peak round from Mill Valley\",\"guide\":\"T. Berg\",\"tour_date\":\"21 June 2026\",\"lines\":\"id,leg,distance_km,ascent_m,descent_m,break_min\\nT1,Car park to Alder hut,4.5,600,0,20\\nT2,Alder hut to summit,2.2,450,50,30\\nT3,Summit to the valley,7.8,0,1000,0\",\"start_time\":\"08:00\",\"latest_return\":\"17:00\",\"pace_percent\":\"100\",\"remarks\":\"Meeting point at the car park. Packed lunch for the summit.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "tour": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "guide": {
            "type": "string",
            "maxLength": 120
        },
        "tour_date": {
            "type": "string",
            "maxLength": 40
        },
        "lines": {
            "type": "string",
            "maxLength": 8000,
            "minLength": 1
        },
        "start_time": {
            "type": "string",
            "maxLength": 5,
            "minLength": 1
        },
        "latest_return": {
            "type": "string",
            "maxLength": 5
        },
        "pace_percent": {
            "type": "string",
            "enum": [
                "70",
                "80",
                "90",
                "100",
                "110",
                "120",
                "130",
                "150",
                "200"
            ]
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "tour",
        "lines",
        "start_time",
        "pace_percent"
    ]
}

Technical rider against stock

rider_stock_check

Compare the equipment of a technical rider with the own stock. The server adds up both lists by item and returns a shortage list with quantities.

Input and configuration fields

Essential settings
event — Event
Added word for word.
Default settings: ""
venue — Venue
Optional. Added word for word.
Default settings: ""
lines — Rider: required equipment
One row per item from the rider with the quantity needed. category is optional, for example microphones.
Default settings: ""
available — Own stock
One row per item with the quantity available for this date. Use the same names as in the rider.
Default settings: ""
remarks — Notes
Optional: anything the list should mention, for example a contact person or a deadline.
Default settings: ""

Maximum UTF-8 input bytes: 50000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "rider_stock_check",
    "text": "{\"event\":\"Summer festival, main stage, band B\",\"venue\":\"Riverside Park\",\"lines\":\"id,category,item,quantity\\nR1,Microphones,Shure SM58,6\\nR2,Microphones,Shure Beta 52A,1\\nR3,Stands,Mic stand tall,8\\nR4,Monitors,Wedge monitor,4\\nR5,Microphones,shure sm-58,2\\nR6,Cables,XLR cable 10 m,\",\"available\":\"id,item,quantity\\nB1,Shure SM58,6\\nB2,Mic stand tall,10\\nB3,Wedge monitor,2\\nB4,DI box,4\",\"remarks\":\"Missing items are clarified with the band manager on Monday.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "event": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "venue": {
            "type": "string",
            "maxLength": 120
        },
        "lines": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1
        },
        "available": {
            "type": "string",
            "maxLength": 24000
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "event",
        "lines"
    ]
}

Bait station check report

bait_station_check

Evaluate bait station checks. The server counts feeding per station, compares each check with the one before and lists overdue stations. No statement on products or legal duties.

Input and configuration fields

Essential settings
customer — Customer or site
Added word for word.
Default settings: ""
technician — Carried out by
Optional. Added word for word.
Default settings: ""
lines — Checks
One row per station and check. finding is none, partial, full, damaged or no_access. Dates like 2026-05-31 or 31.05.2026.
Default settings: ""
interval_days — Check interval (days)
As agreed with the customer. From 1 to 365.
Default settings: 28
remarks — Notes
Optional: anything the report should mention, for example measures agreed on site.
Default settings: ""
Advanced settings
report_date — Reference date
Optional, for example 2026-05-31. Overdue stations are counted up to this day; empty means the last check in the table.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "bait_station_check",
    "text": "{\"customer\":\"Hartmann Bakery, Mill Street 4\",\"technician\":\"J. Kowalski\",\"lines\":\"id,bait_station,date,bait_finding,note\\nK1,S1 store room,2026-03-02,none,\\nK2,S2 loading bay,2026-03-02,partial,\\nK3,S3 yard,2026-03-02,none,\\nK4,S1 store room,2026-03-30,none,\\nK5,S2 loading bay,2026-03-30,full,Droppings next to the station\\nK6,S3 yard,2026-03-30,no_access,Pallets in front of the station\\nK7,S1 store room,2026-05-04,none,\\nK8,S2 loading bay,2026-05-04,partial,Gap under the gate closed by the customer\",\"interval_days\":28,\"report_date\":\"2026-05-04\",\"remarks\":\"Customer asks for the report before the audit.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "customer": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "technician": {
            "type": "string",
            "maxLength": 160
        },
        "lines": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1
        },
        "interval_days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 365
        },
        "report_date": {
            "type": "string",
            "maxLength": 10
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "customer",
        "lines",
        "interval_days"
    ]
}

Pool water log check

pool_water_log

Check pool water readings such as pH, chlorine and temperature against the limits entered. The server marks deviations and days without a reading. No legal statements.

Input and configuration fields

Essential settings
facility — Pool or facility
Added word for word.
Default settings: ""
period — Period
Optional. Added word for word.
Default settings: ""
tester — Tested by
Optional. Added word for word.
Default settings: ""
lines — Readings
One row per measurement time. Leave a cell empty if the value was not measured. Dates like 2026-05-31 or 31.05.2026.
Default settings: ""
limits — Limits
One row per parameter with the limits that apply to the facility. Empty pool means all pools. The tool knows no rules and only compares with these figures.
Default settings: ""
remarks — Notes
Optional: for example closed days, which then explain a gap.
Default settings: ""
Advanced settings
checks_per_day — Readings per day
Days with fewer readings per pool are listed. From 1 to 6.
Default settings: 1

Maximum UTF-8 input bytes: 40000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "pool_water_log",
    "text": "{\"facility\":\"Lindenau Spa Hotel\",\"period\":\"4 to 6 May 2026\",\"tester\":\"M. Berg\",\"lines\":\"id,pool,date,time,ph,free_chlorine,combined_chlorine,water_temp,note\\nW1,Indoor pool,2026-05-04,08:00,7.2,0.5,0.1,28.0,\\nW2,Whirlpool,2026-05-04,08:10,7.4,0.9,0.15,36.5,\\nW3,Indoor pool,2026-05-05,08:00,7.8,0.4,0.25,28.5,Many guests on the evening before\\nW4,Whirlpool,2026-05-05,08:05,7.3,,0.1,37.0,Test strip for chlorine used up\\nW5,Indoor pool,2026-05-06,08:00,7.1,0.2,0.1,27.5,\",\"limits\":\"id,pool,parameter,lower,upper\\nG1,,ph,6.5,7.6\\nG2,,free_chlorine,0.3,0.6\\nG3,,combined_chlorine,,0.2\\nG4,Whirlpool,free_chlorine,0.7,1.0\\nG5,Whirlpool,water_temp,,37\",\"checks_per_day\":1,\"remarks\":\"The filter of the whirlpool was backwashed on 5 May.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "facility": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "period": {
            "type": "string",
            "maxLength": 80
        },
        "tester": {
            "type": "string",
            "maxLength": 120
        },
        "lines": {
            "type": "string",
            "maxLength": 24000,
            "minLength": 1
        },
        "limits": {
            "type": "string",
            "maxLength": 3000
        },
        "checks_per_day": {
            "type": "integer",
            "minimum": 1,
            "maximum": 6
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "facility",
        "lines",
        "checks_per_day"
    ]
}

Dog training report and homework plan

dog_training_report

Turn notes from a training session into a report for the owner and a homework plan. The server calculates the practice minutes, and the AI uses only exercises from the input.

Input and configuration fields

Essential settings
dog — Dog
Name and breed. Added word for word.
Default settings: ""
pet_owner — Owner
Optional. Added word for word.
Default settings: ""
trainer — Trainer or dog school
Added word for word.
Default settings: ""
session_date — Date of the session
Optional. Added word for word.
Default settings: ""
session_notes — Notes from the session
What was practised and observed, and what was agreed for home. Only what is written here can appear in the report.
Default settings: ""
lines — Homework exercises
One row per exercise as agreed: how, times per day, minutes each time and days per week.
Default settings: ""
next_session — Next session
Optional. Added word for word.
Default settings: ""

Maximum UTF-8 input bytes: 20000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "dog_training_report",
    "text": "{\"dog\":\"Bruno, Labrador\",\"pet_owner\":\"Family Novak\",\"trainer\":\"Lindenau Dog School, A. Berg\",\"session_date\":\"12 May 2026\",\"session_notes\":\"Practised loose-lead walking along the park path. Bruno pulled towards other dogs at first and walked calmly next to the owner after a few turns. Recall worked well with the long line. At home, practise in the garden before walks and stop the exercise while Bruno still enjoys it. Reward with small pieces of his usual food.\",\"lines\":\"id,exercise,instruction,times_per_day,minutes,days_per_week\\nH1,Loose-lead walking,In the garden before the walk,2,5,6\\nH2,Recall with long line,Call once and reward at once,1,10,5\\nH3,Sit and stay at the door,Before opening the door,3,2,7\",\"next_session\":\"19 May 2026, 17:00\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "dog": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "pet_owner": {
            "type": "string",
            "maxLength": 120
        },
        "trainer": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "session_date": {
            "type": "string",
            "maxLength": 40
        },
        "session_notes": {
            "type": "string",
            "maxLength": 4000,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "next_session": {
            "type": "string",
            "maxLength": 80
        }
    },
    "required": [
        "dog",
        "trainer",
        "session_notes",
        "lines"
    ]
}

Pet boarding report for owners

pet_boarding_report

Turn the entries of a boarding stay into a report for the owner. The server counts meals, walks and minutes per day, and the AI writes a friendly text without veterinary statements.

Input and configuration fields

Essential settings
animal — Animal
Name and species. Added word for word.
Default settings: ""
pet_owner — Owner
Optional. Added word for word.
Default settings: ""
boarding — Boarding or pet sitter
Added word for word.
Default settings: ""
stay — Day or period
Added word for word.
Default settings: ""
lines — Entries
One row per entry. activity is meal, walk, play, rest, care or other. Minutes for walks and play. Food and amount are kept word for word. Dates like 2026-05-31 or 31.05.2026.
Default settings: ""
remarks — Notes for the owner
Optional: how the animal settled in, what it liked. Only what is written here can appear in the text.
Default settings: ""

Maximum UTF-8 input bytes: 25000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "pet_boarding_report",
    "text": "{\"animal\":\"Lotte, dachshund\",\"pet_owner\":\"Ms Wagner\",\"boarding\":\"Lindenau Pet Hotel\",\"stay\":\"15 to 16 May 2026\",\"lines\":\"id,date,time,activity,minutes,food,note\\nP1,2026-05-15,08:00,meal,,80 g dry food,Ate everything\\nP2,2026-05-15,09:30,walk,40,,Met the beagle Max\\nP3,2026-05-15,14:00,play,20,,Ball in the garden\\nP4,2026-05-15,17:30,meal,,80 g dry food,Left a little\\nP5,2026-05-15,19:00,walk,25,,\\nP6,2026-05-16,08:00,meal,,80 g dry food,\\nP7,2026-05-16,09:30,walk,35,,\\nP8,2026-05-16,11:00,care,,,Brushed\",\"remarks\":\"Lotte settled in quickly and slept in her own basket. She liked the ball games in the garden.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "animal": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "pet_owner": {
            "type": "string",
            "maxLength": 120
        },
        "boarding": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "stay": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 16000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "animal",
        "boarding",
        "stay",
        "lines"
    ]
}

Alteration order sheet with measurements

alteration_order_sheet

Turn measurements, changes and prices into an order sheet for alterations. The server calculates new measures, line totals and the balance, and checks changes against the seam allowance.

Input and configuration fields

Essential settings
customer — Customer
Added word for word.
Default settings: ""
order_number — Order number
Optional. Added word for word.
Default settings: ""
pickup — Ready for pick-up
Optional, for example Friday 15 May. Added word for word.
Default settings: ""
lines — Alterations
One row per alteration. measure is the current measure, change is +2 or -1.5, allowance is the seam allowance available. unit_price may be empty.
Default settings: ""
remarks — Customer wishes
Optional: what the customer asked for at the fitting. Only what is written here can appear.
Default settings: ""
Advanced settings
length_unit — Unit of measurement
Shown with all measurements.
cm — Centimetres · in — Inches
Default settings: "cm"
deposit — Deposit paid
Optional, for example 20.
Default settings: ""
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 25000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "alteration_order_sheet",
    "text": "{\"customer\":\"Ms Lena Hartmann\",\"order_number\":\"A-2026-118\",\"pickup\":\"Friday 15 May\",\"lines\":\"id,garment,alteration,measure,change,allowance,quantity,unit_price\\nR1,Trousers grey,Shorten hem,104,-3,,1,14.00\\nR2,Trousers grey,Let out waist,82,+3,2,1,18.50\\nR3,Dress blue,Take in side seams,96,-4,,1,24.00\\nR4,Blazer,Shorten sleeves,63,-2,,1,22.00\\nR5,Jeans,Replace zip,,,,2,\",\"length_unit\":\"cm\",\"deposit\":\"20\",\"currency\":\"EUR\",\"remarks\":\"Hem of the trousers without turn-up. Keep the original buttons on the blazer.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "customer": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "order_number": {
            "type": "string",
            "maxLength": 40
        },
        "pickup": {
            "type": "string",
            "maxLength": 60
        },
        "lines": {
            "type": "string",
            "maxLength": 12000,
            "minLength": 1
        },
        "length_unit": {
            "type": "string",
            "enum": [
                "cm",
                "in"
            ]
        },
        "deposit": {
            "type": "string",
            "maxLength": 16
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "customer",
        "lines",
        "length_unit"
    ]
}

Floral bill of materials

floral_bill_of_materials

Turn arrangements and the stems and material per arrangement into a bill of materials. The server multiplies quantities, adds up costs per arrangement and builds a purchase list.

Input and configuration fields

Essential settings
event — Event
For example wedding Berg. Added word for word.
Default settings: ""
event_date — Date
Optional. Added word for word.
Default settings: ""
customer — Customer
Optional. Added word for word.
Default settings: ""
arrangements — Arrangements
One row per arrangement with the number of pieces.
Default settings: ""
lines — Material per arrangement
One row per material and arrangement: the arrangement as named above, stems or units per piece, unit and price per unit.
Default settings: ""
remarks — Notes
Optional: colours, wishes, delivery details.
Default settings: ""
Advanced settings
waste_percent — Extra for breakage (%)
Added to the purchase list only. From 0 to 50.
Default settings: 0
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "floral_bill_of_materials",
    "text": "{\"event\":\"Wedding Berg and Novak\",\"event_date\":\"20 June 2026\",\"customer\":\"Anna Berg\",\"arrangements\":\"id,arrangement,quantity\\nA1,Bridal bouquet,1\\nA2,Table centrepiece,8\\nA3,Buttonhole,6\",\"lines\":\"id,arrangement,material,per_arrangement,unit,unit_price\\nM1,Bridal bouquet,Rose Avalanche,15,stem,2.40\\nM2,Bridal bouquet,Eucalyptus,5,stem,1.10\\nM3,Bridal bouquet,Satin ribbon,1.5,m,0.90\\nM4,Table centrepiece,Rose Avalanche,5,stem,2.40\\nM5,Table centrepiece,Gypsophila,3,stem,1.30\\nM6,Table centrepiece,Floral foam,1,piece,1.80\\nM7,Buttonhole,Spray rose,1,stem,1.50\\nM8,Buttonhole,Pin,2,piece,\",\"waste_percent\":10,\"currency\":\"EUR\",\"remarks\":\"White and soft green only. Delivery to the Lindenhof at 10:00.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "event": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "event_date": {
            "type": "string",
            "maxLength": 40
        },
        "customer": {
            "type": "string",
            "maxLength": 160
        },
        "arrangements": {
            "type": "string",
            "maxLength": 3000,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 16000,
            "minLength": 1
        },
        "waste_percent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 50
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "event",
        "arrangements",
        "lines",
        "waste_percent"
    ]
}

Stable feed plan with quantities and costs

stable_feed_plan

Turn the ration per horse into a feed plan. The server calculates kilograms per day and period, the cost per box and the quantities to buy per feed. No feeding advice.

Input and configuration fields

Essential settings
stable — Stable
Added word for word.
Default settings: ""
period — Period
Optional. Added word for word.
Default settings: ""
lines — Rations
One row per horse and feed: kg per feed and feeds per day.
Default settings: ""
feeds — Feed prices
Optional: one row per feed with the price per kg. Feeds without a price are listed.
Default settings: ""
period_days — Days in the period
For example 30 for a month. From 1 to 366.
Default settings: 30
remarks — Notes
Optional: anything the plan should mention, for example who feeds at weekends.
Default settings: ""
Advanced settings
currency — Currency
Short code or sign shown with amounts, for example EUR.
Default settings: "EUR"

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "stable_feed_plan",
    "text": "{\"stable\":\"Lindenhof boarding stable\",\"period\":\"June 2026\",\"lines\":\"id,box,horse,feed,kg_per_meal,meals_per_day\\nF1,Box 1,Luna,Hay,4,3\\nF2,Box 1,Luna,Oats,0.5,2\\nF3,Box 2,Max,Hay,5,3\\nF4,Box 2,Max,Mineral feed,0.1,1\\nF5,Box 3,Fenja,Hay,3.5,3\\nF6,Box 3,Fenja,Pellets,0.75,2\",\"feeds\":\"id,feed,price_per_kg\\nP1,Hay,0.18\\nP2,Oats,0.45\\nP3,Pellets,0.62\",\"period_days\":30,\"currency\":\"EUR\",\"remarks\":\"The owner of Max brings the mineral feed himself.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "stable": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "period": {
            "type": "string",
            "maxLength": 80
        },
        "lines": {
            "type": "string",
            "maxLength": 16000,
            "minLength": 1
        },
        "feeds": {
            "type": "string",
            "maxLength": 3000
        },
        "period_days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 366
        },
        "currency": {
            "type": "string",
            "maxLength": 4
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "stable",
        "lines",
        "period_days"
    ]
}

Music practice plan with a note for parents

music_practice_plan

Turn pieces and minutes into a weekly practice plan with a note for parents. The server spreads the pieces over the practice days and adds up the minutes; only pieces from the input appear.

Input and configuration fields

Essential settings
student — Student
A first name is enough. Added word for word.
Default settings: ""
teacher — Teacher
Added word for word.
Default settings: ""
week — Week
Optional. Added word for word.
Default settings: ""
lines — Pieces and exercises
One row per piece or exercise with minutes per practice day. days_per_week may be empty: then the piece is practised on every practice day.
Default settings: ""
practice_days — Practice days per week
From 1 to 7.
Default settings: 5
teacher_notes — Notes from the lesson
Optional: what went well, what to watch out for when practising. Only what is written here can appear in the note.
Default settings: ""

Maximum UTF-8 input bytes: 20000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "music_practice_plan",
    "text": "{\"student\":\"Mia\",\"teacher\":\"Lindenau Music School, K. Berg\",\"week\":\"11 to 17 May 2026\",\"lines\":\"id,piece,focus,minutes_per_day,days_per_week\\nU1,Scales G major and E minor,Slowly with a metronome,5,\\nU2,Minuet in G,Bars 9 to 16 with the left hand alone,10,4\\nU3,Song of the Wind,Play through once a day,5,3\\nU4,Sight-reading booklet,One new line,5,2\",\"practice_days\":5,\"teacher_notes\":\"Mia played the first part of the minuet very evenly today. In bars 9 to 16 the left hand is still unsure. Please practise slowly and take short breaks.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "student": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "teacher": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "week": {
            "type": "string",
            "maxLength": 60
        },
        "lines": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "practice_days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 7
        },
        "teacher_notes": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "student",
        "teacher",
        "lines",
        "practice_days"
    ]
}

Tutoring progress report for parents

tutoring_progress_report

Turn topics, scores and notes from tutoring into a progress report for parents. The server calculates shares of the maximum per subject, and the AI makes no forecasts or diagnoses.

Input and configuration fields

Essential settings
student — Student
A first name is enough. Added word for word.
Default settings: ""
tutor — Tutor or tutoring school
Added word for word.
Default settings: ""
period — Period
Added word for word.
Default settings: ""
lines — Lessons and results
One row per lesson or test. score and max_score may be empty; grade is kept word for word. Dates like 2026-05-31 or 31.05.2026.
Default settings: ""
tutor_notes — Notes of the tutor
Optional: what went well, what is still practised. Only what is written here can appear in the report.
Default settings: ""

Maximum UTF-8 input bytes: 30000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "tutoring_progress_report",
    "text": "{\"student\":\"Jonas\",\"tutor\":\"Lindenau Learning Studio, P. Novak\",\"period\":\"March to May 2026\",\"lines\":\"id,date,subject,topic,score,max_score,grade\\nL1,2026-03-10,Maths,Fractions,12,20,\\nL2,2026-04-07,Maths,Fractions and decimals,15,20,\\nL3,2026-05-05,Maths,Percentages,17,20,\\nL4,2026-03-17,English,Past tense,8,15,\\nL5,2026-04-28,English,Irregular verbs,11,15,\\nL6,2026-05-12,English,School test,,,B\",\"tutor_notes\":\"Jonas now checks his fraction results on his own. The irregular verbs are practised with flashcards at the start of each lesson. He asks more questions than in March.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "student": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "tutor": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "period": {
            "type": "string",
            "maxLength": 80,
            "minLength": 1
        },
        "lines": {
            "type": "string",
            "maxLength": 16000,
            "minLength": 1
        },
        "tutor_notes": {
            "type": "string",
            "maxLength": 3000
        }
    },
    "required": [
        "student",
        "tutor",
        "period",
        "lines"
    ]
}

Hoof care report with next appointment

hoof_care_report

Turn findings per hoof and the work done into a report for the horse owner. The server calculates the next appointment from the date and interval and lists hooves without an entry. No veterinary diagnoses.

Input and configuration fields

Essential settings
horse — Horse
Name and, if useful, stable. Added word for word.
Default settings: ""
pet_owner — Owner
Optional. Added word for word.
Default settings: ""
farrier — Farrier or hoof care
Added word for word.
Default settings: ""
visit_date — Date of the visit
For example 2026-05-12 or 12.05.2026. Needed for the next appointment.
Default settings: ""
interval_weeks — Interval until the next appointment (weeks)
As agreed. From 1 to 26.
Default settings: 6
lines — Hooves
One row per hoof, or more rows for several findings. hoof is fl, fr, hl or hr. finding and work come from the lists.
Default settings: ""
remarks — Notes
Optional: anything the owner should know, for example agreements on the next visit.
Default settings: ""

Maximum UTF-8 input bytes: 20000

Results use ops_review: columns and scalar rows, summary, source-linked findings and draft exports. review_required and ai_required are true, and ai_model is do4u-standard. All text must be rendered as untrusted plaintext. Cashflow results additionally contain chart_data with type cashflow, currency, buffer_cents and up to 91 dated points containing base_cents and scenario_cents. Values are server-calculated integer cents; no model-generated chart markup is accepted. Cutting results contain chart_data with type cutting and scale 1000: bar lengths are integer thousandths of the stated unit (mm, cm, m or in). Each bar contains id, unit, length, trim_start, trim_end, kerf, segments (id and length), and remaining. One kerf is counted per finished piece. The server verifies that pieces, kerfs, end trims and remaining material exactly equal the stock length. The drawing includes at most 30 complete bars and 120 pieces; total_bars, omitted_bars and truncated explicitly describe any omission. The complete allocation remains in the table and draft exports. The heuristic does not claim global optimality.

Request example

{
    "tool": "hoof_care_report",
    "text": "{\"horse\":\"Fenja, Lindenhof\",\"pet_owner\":\"Ms Berg\",\"farrier\":\"Hoof care Novak\",\"visit_date\":\"2026-05-12\",\"interval_weeks\":6,\"lines\":\"id,hoof,hoof_finding,work,note\\nH1,fl,ok,new_shoes,\\nH2,fr,crack,new_shoes,Small crack at the toe on the outer side\\nH3,hl,uneven_wear,trim,Wears more on the inside\\nH4,hr,ok,trim,\",\"remarks\":\"Fenja stood calmly. Please keep her in the box for the next visit, ideally before feeding.\"}"
}
Complete configuration schema
{
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "horse": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
        },
        "pet_owner": {
            "type": "string",
            "maxLength": 120
        },
        "farrier": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
        },
        "visit_date": {
            "type": "string",
            "maxLength": 10,
            "minLength": 1
        },
        "interval_weeks": {
            "type": "integer",
            "minimum": 1,
            "maximum": 26
        },
        "lines": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1
        },
        "remarks": {
            "type": "string",
            "maxLength": 2000
        }
    },
    "required": [
        "horse",
        "farrier",
        "visit_date",
        "interval_weeks",
        "lines"
    ]
}

Confirmed calendar export request

Contract and maintenance reviews additionally return a signed calendar_review token bound to the authenticated account, source data and a 30-minute expiry. After explicit human review, POST token, selected event IDs and approved:true to /api/v1/business/calendar using the same account. The response is an ICS export. The server checks ownership, signature, expiry and the selection independently of the model. No calendar is modified.

POST /api/v1/business/calendar

The endpoint requires the existing API Bearer authentication for the same account that owns the contract or maintenance review. The signed review is valid for 30 minutes and binds the approved source data and event selection. Missing approval, a foreign owner, unknown event IDs or an expired or altered token are rejected. calendar_review is an object with token and expires_at (Unix timestamp). calendar_events contains id, title, date (YYYY-MM-DD) and description; calendar_options contains name and reminder_days. The initial result contains no ICS bytes. Up to 20 distinct event IDs can be selected.

{
    "token": "<calendar_review.token>",
    "selected": [
        "E1"
    ],
    "approved": true
}
Calendar confirmation schema
{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "token",
        "selected",
        "approved"
    ],
    "properties": {
        "token": {
            "type": "string",
            "minLength": 1,
            "maxLength": 81000,
            "description": "Opaque calendar review token returned by the authenticated contract or maintenance review; expires after 30 minutes."
        },
        "selected": {
            "type": "array",
            "minItems": 1,
            "maxItems": 20,
            "uniqueItems": true,
            "items": {
                "type": "string",
                "pattern": "^E[1-9][0-9]?$"
            },
            "description": "Exact event IDs from the reviewed result. The server validates them against the signed source-bound review."
        },
        "approved": {
            "type": "boolean",
            "const": true
        }
    },
    "x-human-review-required": true
}

A successful response contains ok:true and one export with filename, mime:text/calendar and the complete ICS text in content. The placeholder below describes the response structure; it is not a generated file. Saving or importing the file is a separate client action. No calendar service is contacted.

{
    "ok": true,
    "export": {
        "filename": "reviewed-dates.ics",
        "mime": "text/calendar",
        "content": "<ICS content>"
    }
}

Initial results contain draft exports with filename, mime and content, plus the source-bound review table. These drafts require explicit human review before use or forwarding. Contract deadline and maintenance reviews can include calendar_events, calendar_options and calendar_review; those fields are never accepted as model-granted approval. Calendar export requires the separate confirmed request shown above.

Widgets

A widget embeds a Do4U tool in your own website as an iframe, with the same form and result as on Do4U. Requests are charged to the account of the widget. You create widgets on the Widgets page or with the API.

Embed widgets only behind a login. The page with the widget must require a login. Anyone who can open the page can use the widget and spend your credits. Never use a widget on a public page.

Do4U cannot check from outside whether your page requires a login. You confirm this when you create the widget, and you are responsible for it. The limits below reduce the damage if a token gets out, but they do not replace the login.

One token per widget

Every widget has its own token that starts with d4w_. Do4U stores only a hash, so the token is shown only once. It can do much less than an API key:

Quick start

  1. Open the Widgets page and choose a tool, the allowed websites, the mode and the budget.
  2. Confirm that you will embed the widget only behind a login. Copy the token, which is shown only once.
  3. Add the code to a page that requires a login.
  4. Sign in, try the widget once and check the usage on the Widgets page.

Mode 1: Token in the page

The quickest way. The token is in the HTML of your page, so every signed-in user can read it. Use this mode only if you trust all users of the area. This mode allows one tool per widget.

<!-- Embed only in an area that requires a login -->
<div data-do4u-widget="w_3f9a1c0b7d2e4a68"
     data-tool="newsletter_create"
     data-token="d4w_YOUR_WIDGET_TOKEN"
     data-lang="de"
     data-theme="light"></div>
<script src="https://do4u.eu/js/do4u-widget.js" defer></script>

Mode 2: Short-lived sessions (recommended)

The widget token stays on your server. After your server has recognised a signed-in user, it requests a session token and writes only that into the page. A session token starts with d4s_ and expires by itself. In this mode the browser rejects the long-lived token, so a token copied into the HTML by mistake is noticed at once.

curl -X POST https://do4u.eu/api/v1/widgets/session \
  -H "Authorization: Bearer d4w_YOUR_WIDGET_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"tool": "newsletter_create", "subject": "user-4711", "ttl_minutes": 60}'
HTTP/1.1 201 Created
{"token": "d4s_eyJ3Ijoi...", "expires_at": "2026-11-03T20:15:00+00:00", "widget": "w_3f9a1c0b7d2e4a68", "tool": "newsletter_create"}

Example in PHP. Run this only for signed-in users, on the server that renders the page:

<?php
// Check your own login first. The token stays on this server.
if (empty($_SESSION['user_id'])) { http_response_code(403); exit; }
$ch = curl_init('https://do4u.eu/api/v1/widgets/session');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 10,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . getenv('DO4U_WIDGET_TOKEN'),
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['subject' => (string)$_SESSION['user_id']]),
]);
$antwort = json_decode((string)curl_exec($ch), true);
$marke = $antwort['token'] ?? '';
?>
<div data-do4u-widget="w_3f9a1c0b7d2e4a68" data-tool="newsletter_create"
     data-token="<?= htmlspecialchars($marke) ?>" data-session-url="/do4u-session.php"></div>
<script src="https://do4u.eu/js/do4u-widget.js" defer></script>

Optional: data-session-url names an address on your own website. When a session expires, the widget posts to this address with the cookies of your website. Check the login there and answer with {"token": "d4s_..."}.

toolOptional. Limits the session to one tool of this widget. Without it, the session covers all tools of the widget.
subjectOptional. Your ID for the user, at most 200 bytes. Do4U stores only a hash. A session with a subject sees only jobs of the same subject.
ttl_minutesOptional. Lifetime in minutes. Default 60, at most 480.

Attributes

data-do4u-widgetRequired. The ID of the widget, such as w_3f9a1c0b7d2e4a68.
data-toolRequired. The name of the tool, as in the list below.
data-tokenThe widget token or a session token. The script removes it from the element after loading.
data-langLanguage of the widget, such as de. Without it, Do4U uses the language of the browser.
data-themelight or dark. Without it, the setting of the system applies.
data-min-heightMinimum height in pixels, 480 by default. The height then follows the content.
data-session-urlAddress on your website that returns a new session token.
data-titleTitle of the iframe for screen readers. Please set this in the language of your page.

Events and prefilling

The element fires do4u:ready, do4u:result and do4u:expired. With do4uWidget.fill() your page can prefill form fields. A job never starts by itself, because the user decides when credits are spent.

const box = document.querySelector('[data-do4u-widget]');
box.addEventListener('do4u:result', (e) => {
  // e.detail = {widget, tool, result, credits}
  document.querySelector('#subject').value = e.detail.result.subject;
});
// Prefill fields. The user still starts the job.
box.addEventListener('do4u:ready', () => {
  box.do4uWidget.fill({ urls: 'https://example.com/article' });
});

Treat the result as untrusted data. AI output can be wrong, and text from read web pages can influence it. Escape it, or clean it on your server, before you show or save it. Have a person check it before you publish it.

Content Security Policy

If your website uses a Content Security Policy, allow the frame and the script. If you host the script yourself, frame-src is enough.

Content-Security-Policy: frame-src https://do4u.eu; script-src 'self' https://do4u.eu

Manage widgets with the API

Integrations can manage widgets with an API key of the account. The token in the answer to POST /widgets is shown only once. POST /widgets/session also accepts a widget token; then the field widget is not needed. With an API key, send the ID of the widget in the field widget.

POST /widgets/sessionCreate a session token.
GET /widgetsList widgets, their usage and the tools available for widgets.
POST /widgetsCreate a widget. Requires confirm_login_area: true.
GET /widgets/{id}Read one widget.
DELETE /widgets/{id}Revoke a widget.
curl -X POST https://do4u.eu/api/v1/widgets \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Team newsletter", "tools": ["newsletter_create"], "mode": "session",
       "origins": ["https://intern.example.com"], "budget_day": 100, "budget_month": 1000,
       "confirm_login_area": true}'

Errors in the widget

401 invalidThe token is wrong or revoked, or widgets are switched off.
401 expiredThe session has expired. Load the page again or use data-session-url.
401 session_requiredThis widget works only with session tokens, but it received the long-lived token.
403The widget or the session does not allow this tool.
429The budget of the widget is used up, or there are too many requests per minute.

Data and billing

Available tools

Every tool that creates a job is available as a widget. Use these names in data-tool:

summarize, support_reply, compare, alt_text, rewrite, accessibility_check, form_text_check, seo_meta, alt_pruefer, website_check, translate, translate_html, product_description, headlines, proofread, translate_file, faq_schema, product_safety_check, withdrawal_button_check, ai_literacy_policy, local_business_check, glossary_builder, legal_notice_check, duplicate_content_check, structured_data_check, ai_transparency_check, image_performance_check, social_card_check, newsletter_check, broken_link_check, price_display_check, faq_from_support, ai_robots_txt, hreflang_check, green_claims_check, job_ad_check, design_feedback, chart_description, product_photo, events_calendar, ai_visibility_check, review_analysis, inclusive_language, outdated_content, internal_links, language_level, redirect_plan, contrast_check, explain_terms, social_posts, review_reply, content_brief, extract_data, llms_txt, newsletter_create, moderate_comment, document_html, image_text, pdf_accessibility, seitenlesen, meeting_minutes, tender_requirements, work_instructions, learning_quiz, clean_table, anonymize, subtitles, invoice_validate, blog_assistant, import_map, spreadsheet_formula, translation_check, receipt_extract, document_merge, document_filing, transcribe, presentation, supplier_compare, three_way_match, label_sheet, payment_match, reorder_plan, shift_plan, project_plan, test_cases, contract_deadlines, quote_builder, complaint_case, tender_response, product_consistency, onboarding_plan, interview_guide, project_handover, cashflow_forecast, expense_policy_check, migration_acceptance, batch_traceability, maintenance_planner, incident_review, job_cost_review, sla_review, cutting_plan, measurement_review, change_impact, recovery_plan, assessment_rubrics, literature_screening, interview_coding, recipe_scaling, room_quantities, crop_planning, script_continuity, experiment_design, press_release, job_ad_create, offer_cover_letter, customer_change_notice, polite_decline, payment_reminder, event_invitation, cancellation_letter, complaint_letter, company_profile, speech_draft, grant_summary, parent_letter, notice_board, cover_letter, property_listing, classified_ad, donation_appeal, release_notes, video_chapters, meeting_agenda, document_questions, contract_clause_review, action_items, contradiction_check, missing_information, official_letter_explainer, checklist_from_text, ticket_triage, feedback_sorting, recommendation_letter, cv_from_notes, thank_you_letter, appointment_confirmation, out_of_office, offer_follow_up, quick_guide, safety_briefing, tenant_notice, internal_announcement, work_report, defect_list, reference_explained, reference_draft, utility_bill_check, allergen_labelling, flashcards, lesson_plan, insurance_claim, travel_expenses, club_annual_report, flat_handover, staff_talk_prep, cash_report, mileage_log_check, timesheet_summary, meter_readings, inventory_list, shift_handover, club_budget, interview_preparation, driving_lesson_record, hair_colour_card, photo_shoot_schedule, wedding_day_schedule, home_exercise_sheet, care_report, childcare_observation, death_notice_obituary, owners_meeting, pet_aftercare_sheet, workshop_report, electrical_test_record, temperature_log_check, bakers_percentage, hive_record, timber_list, planting_plan, power_load_phases, load_list, cleaning_plan, paint_quantity, tile_quantity, roofing_material, glass_order, removal_volume, standard_line_offer, gold_purchase_receipt, brew_log, hiking_time_plan, rider_stock_check, bait_station_check, pool_water_log, dog_training_report, pet_boarding_report, alteration_order_sheet, floral_bill_of_materials, stable_feed_plan, music_practice_plan, tutoring_progress_report, hoof_care_report

The accessibility statement has its own process without a job and is not available as a widget. Tools with their own page show a simple address field in the widget.

Data

Inputs and results are stored for 7 days (Free) or 30 days (paid packages), then deleted. Images are deleted right after processing. Results are AI-generated: please check them before you use them.

Answer emails without changing your inbox

Do4U does not run an inbox and never stores access data for your mailbox. Two ways to get reply drafts anyway:

S1 – Template for n8n or Make

  1. Trigger: a new email in your mailbox (IMAP trigger in n8n or Make – the access data stays there)
  2. POST /api/v1/jobs with tool support_reply, the email text and no_store: true
  3. Wait a few seconds and fetch GET /api/v1/jobs/{id} until the status is done
  4. Create a draft in your mailbox with the text from result.reply (Gmail or Outlook module)

Download the n8n template (JSON)

In Make, build the same scenario from the modules Email (watch emails), HTTP (make a request), Sleep and Gmail or Outlook (create a draft).

Dev extensions and shop plugins

Extract the ZIP and read the included guide. Load the browser extension locally; check shop plugins in a test shop first. Your own Dev API key is required. Shopware currently provides a CLI.