{"ok":true,"site":{"host":"jkdorman-creator.github.io","url":"https://jkdorman-creator.github.io/rapidsync-submission-triage/","type":"live","desc":"A workers compensation submission desk that hands AI agents real tools through WebMCP, and asks a human when it hits something only a person can settle.","tools":[{"name":"list_inbox","kind":"answer","impl":"imperative","description":"Lists the workers compensation submissions waiting in the triage queue, with the producing agency, subject line, and how many documents each one has. Start here to see what is available to work.","title":"List the submission queue","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/rapidsync-submission-triage/"},{"name":"open_submission","kind":"act","impl":"imperative","description":"Opens one submission into the workspace and returns the producer email in full plus the list of documents attached to it. Clears any record left over from the last submission. Use the id from list_inbox.","title":"Open a submission","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"submission_id":{"type":"string","description":"The submission id from list_inbox, for example SUB-4471."}},"required":["submission_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/rapidsync-submission-triage/"},{"name":"read_attachment","kind":"answer","impl":"imperative","description":"Extracts and returns the text of one PDF attached to the open submission. This page opens the file for you, so you do not need to download or parse anything. Pass the attachment id from open_submission.","title":"Read an attached document","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"attachment_id":{"type":"string","description":"The attachment id from open_submission, for example ATT-4471-A."}},"required":["attachment_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/rapidsync-submission-triage/"},{"name":"update_submission","kind":"act","impl":"imperative","description":"Writes values you found onto the submission record on screen. Send only fields you actually read in the email or a document. Leave anything doubtful blank and use ask_underwriter instead of guessing. Values you send appear on screen immediately.","title":"Write findings to the record","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"named_insured":{"type":"string","description":"Legal name of the applicant business, exactly as written on the application."},"fein":{"type":"string","description":"Federal employer ID of the applicant business, formatted 12-3456789."},"entity_type":{"type":"string","description":"Corporation, LLC, partnership, or sole proprietor."},"state":{"type":"string","description":"Two letter state code, or several separated by commas, where the business operates."},"years_in_business":{"type":"number","description":"How many years the business has been operating."},"effective_date":{"type":"string","description":"Requested policy effective date as written, for example 11/01/2026."},"experience_mod":{"type":"number","description":"Experience modification factor, for example 0.92."},"governing_class":{"type":"string","description":"The four digit class code carrying the largest payroll."},"class_description":{"type":"string","description":"Plain description of the governing class code."},"annual_payroll":{"type":"number","description":"Total annual payroll across all class codes, as a number."},"employee_count":{"type":"number","description":"Total employee count across all class codes."},"losses_on_app":{"type":"string","enum":["yes","no"],"description":"What the APPLICATION says about prior losses. Report what the form claims, even if a loss run disagrees."},"loss_run_years":{"type":"number","description":"How many policy years the attached loss runs actually cover."},"loss_run_claims":{"type":"number","description":"Number of claims listed on the loss runs."},"loss_run_incurred":{"type":"number","description":"Total incurred across all claims on the loss runs, as a number."},"source_document":{"type":"string","description":"Attachment id these values came from, so the record shows which document each fact is based on. Omit for facts taken from the email body."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/rapidsync-submission-triage/"},{"name":"check_submission","kind":"answer","impl":"imperative","description":"Runs RapidSync's underwriting rules against the record on screen and reports what is missing, what contradicts itself, any appetite problem, and which lane the file currently falls into. These rules are fixed, not a judgment call. Run it after each update.","title":"Run the underwriting rules","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/rapidsync-submission-triage/"},{"name":"ask_underwriter","kind":"act","impl":"imperative","description":"Raises a judgment call to the human underwriter: highlights the field, explains why it matters, and puts a question to them. Use ONLY for something a person has to decide, such as two documents disagreeing. Do NOT use it for a value that is simply missing from the paperwork — the underwriter does not have that either, so it belongs in draft_reply to the producer. Returns the words to say. Changes no data.","title":"Ask the underwriter for help","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"field":{"type":"string","enum":["named_insured","fein","entity_type","state","years_in_business","effective_date","experience_mod","governing_class","class_description","annual_payroll","employee_count","losses_on_app","loss_run_years","loss_run_claims","loss_run_incurred","agency_name","agent_email"],"description":"Which field on the record the underwriter has to make a call on."},"question":{"type":"string","description":"The question in plain language, saying what you found and what you need from them."},"why":{"type":"string","description":"Optional. Why this value matters here, if you know something the page does not."}},"required":["field","question"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/rapidsync-submission-triage/"},{"name":"propose_routing","kind":"act","impl":"imperative","description":"Puts a proposed lane and your reasoning on screen for the underwriter to approve or reject. Routing a submission is the decision this desk exists to make, so this tool never routes anything by itself - a person has to click. Lanes: quote_now, indication, send_for_info, likely_decline.","title":"Propose a routing lane","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"lane":{"type":"string","enum":["quote_now","indication","send_for_info","likely_decline"],"description":"Which lane you believe this belongs in."},"rationale":{"type":"string","description":"Two or three sentences saying why, naming the facts that drove it."}},"required":["lane","rationale"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/rapidsync-submission-triage/"},{"name":"draft_reply","kind":"act","impl":"imperative","description":"Writes the email back to the producing agent asking for exactly what this submission still needs, and puts it on screen. It is not sent. The underwriter reads it, edits it if they want, and sends it themselves. Use after check_submission, once you know what is actually missing.","title":"Draft the reply to the producer","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"subject":{"type":"string","description":"Subject line. Name the insured and the effective date."},"body":{"type":"string","description":"The email itself. List each thing needed as its own line, and say why it is needed."}},"required":["subject","body"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/rapidsync-submission-triage/"}],"category":"Finance & Crypto","favicon":"/favicons/jkdorman-creator.github.io.svg","apiSurface":"spec","toolCount":8}}