← WebMCP Directory

Tool tree

henryknows-webmcp.netlify.app

Health & EducationTools verified
Website
AI assistant that answers F-1 and SEVIS regulatory questions for international student advisors — with citations to the primary sources.
Explore capabilities
    get_preparation_caseAnswer

    Start here and read silently. This connects the shared HenryKnows panel and returns the selected case plus the expeditor guide. Keep this live page visible beside the conversation and reuse the same page/tool connection throughout. Do not narrate that you opened it, called this tool, or found empty fields. Empty case: ask 'What would you like to figure out?' Address the user as 'you,' never 'the student.' Never treat agent memory as verified facts. Returns no credentials or unrelated history.

    View tool JSON
    {
      "name": "get_preparation_case",
      "kind": "answer",
      "impl": "imperative",
      "description": "Start here and read silently. This connects the shared HenryKnows panel and returns the selected case plus the expeditor guide. Keep this live page visible beside the conversation and reuse the same page/tool connection throughout. Do not narrate that you opened it, called this tool, or found empty fields. Empty case: ask 'What would you like to figure out?' Address the user as 'you,' never 'the student.' Never treat agent memory as verified facts. Returns no credentials or unrelated history.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/"
    }
    propose_case_updateAction

    Keep the shared page visibly current. Call once promptly after each clear substantive answer; never ask separate permission to record it or repeat it back. Patch structured dates/statuses in facts only, not again in reportedFacts. Unless the user says the I-20 will change, currentProgramEndDate also supplies the September 15 I-20 end date; do not ask for it twice. reportedFacts is only relevant context with no structured field. assumptions is only an actual tentative plan or working date, never generic missing/'not reported' items. If the user is asking which date is best, first help develop concrete options and tradeoffs instead of demanding a date. The two lists replace prior lists, so preserve still-relevant entries. Never invent consequential details. Ask exactly one focused follow-up per turn.

    View tool JSON
    {
      "name": "propose_case_update",
      "kind": "act",
      "impl": "imperative",
      "description": "Keep the shared page visibly current. Call once promptly after each clear substantive answer; never ask separate permission to record it or repeat it back. Patch structured dates/statuses in facts only, not again in reportedFacts. Unless the user says the I-20 will change, currentProgramEndDate also supplies the September 15 I-20 end date; do not ask for it twice. reportedFacts is only relevant context with no structured field. assumptions is only an actual tentative plan or working date, never generic missing/'not reported' items. If the user is asking which date is best, first help develop concrete options and tradeoffs instead of demanding a date. The two lists replace prior lists, so preserve still-relevant entries. Never invent consequential details. Ask exactly one focused follow-up per turn.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "expectedRevision"
        ],
        "properties": {
          "expectedRevision": {
            "type": "integer",
            "minimum": 1,
            "description": "The current case revision returned by get_preparation_case."
          },
          "inquiry": {
            "type": "string",
            "maxLength": 4000
          },
          "context": {
            "type": "string",
            "maxLength": 4000,
            "description": "Only relevant circumstances or goals that do not fit structured mapper fields. No raw attachments or unrelated agent memory."
          },
          "reportedFacts": {
            "type": "array",
            "maxItems": 12,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 240
            },
            "description": "Cumulative concise facts relevant to the inquiry that have no structured scenario field. Do not repeat facts supplied in facts, prepend 'student reports,' or include assumptions/derived conclusions."
          },
          "assumptions": {
            "type": "array",
            "maxItems": 12,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 240
            },
            "description": "Cumulative actual tentative plans or user-chosen working dates. Do not list unknown, absent, not-reported, or merely unverified fields; ask about a consequential unknown instead."
          },
          "category": {
            "type": "string",
            "enum": [
              "unspecified",
              "F-1",
              "J-1",
              "M-1",
              "general"
            ]
          },
          "facts": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "startingPosition": {
                "type": "string",
                "enum": [
                  "unknown",
                  "current_ds_inside_us",
                  "prospective_outside_us",
                  "change_status_inside_us",
                  "readmitted_fixed_period",
                  "transfer_or_program_change"
                ],
                "description": "Starting situation"
              },
              "admissionBasis": {
                "type": "string",
                "enum": [
                  "unknown",
                  "duration_of_status",
                  "fixed_period"
                ],
                "description": "Admission basis"
              },
              "inUsOnEffectiveDate": {
                "type": "string",
                "enum": [
                  "unknown",
                  "yes",
                  "no"
                ],
                "description": "In the U.S. on September 15, 2026"
              },
              "maintainingStatusOnEffectiveDate": {
                "type": "string",
                "enum": [
                  "unknown",
                  "yes",
                  "no"
                ],
                "description": "Maintaining status on September 15, 2026"
              },
              "programStartDate": {
                "type": "string",
                "maxLength": 10,
                "description": "Program start date. YYYY-MM-DD or an empty string if unknown."
              },
              "currentProgramEndDate": {
                "type": "string",
                "maxLength": 10,
                "description": "Current I-20 program end date. YYYY-MM-DD or an empty string if unknown."
              },
              "programEndOnEffectiveDate": {
                "type": "string",
                "maxLength": 10,
                "description": "Only set this if the I-20 end date in effect on September 15, 2026 will differ from currentProgramEndDate; otherwise HenryKnows derives it. YYYY-MM-DD."
              },
              "optIntent": {
                "type": "string",
                "enum": [
                  "unknown",
                  "yes",
                  "no"
                ],
                "description": "Planning OPT"
              },
              "optStage": {
                "type": "string",
                "enum": [
                  "unknown",
                  "none",
                  "pre_completion",
                  "post_completion_not_filed",
                  "post_completion_pending",
                  "post_completion_approved",
                  "stem_not_filed",
                  "stem_pending",
                  "stem_approved"
                ],
                "description": "OPT stage"
              },
              "optFilingDate": {
                "type": "string",
                "maxLength": 10,
                "description": "OPT application filing date. YYYY-MM-DD or an empty string if unknown."
              },
              "dsoRecommendedOpt": {
                "type": "string",
                "enum": [
                  "unknown",
                  "yes",
                  "no"
                ],
                "description": "DSO recommendation received"
              },
              "cptPlan": {
                "type": "string",
                "enum": [
                  "unknown",
                  "none",
                  "planned"
                ],
                "description": "CPT during the program"
              },
              "travelPosture": {
                "type": "string",
                "enum": [
                  "unknown",
                  "none",
                  "planned",
                  "completed",
                  "automatic_visa_revalidation"
                ],
                "description": "International travel"
              },
              "reentryDate": {
                "type": "string",
                "maxLength": 10,
                "description": "Return date. YYYY-MM-DD or an empty string if unknown."
              },
              "reentryBasis": {
                "type": "string",
                "enum": [
                  "unknown",
                  "same_i20_balance",
                  "new_f1_admission",
                  "longer_program_i20",
                  "automatic_visa_revalidation"
                ],
                "description": "Basis for return"
              },
              "optFiledBeforeDeparture": {
                "type": "string",
                "enum": [
                  "unknown",
                  "yes",
                  "no"
                ],
                "description": "OPT filing before departure"
              },
              "pendingExtensionOnDeparture": {
                "type": "string",
                "enum": [
                  "unknown",
                  "yes",
                  "no"
                ],
                "description": "Extension pending at departure"
              },
              "educationLevel": {
                "type": "string",
                "enum": [
                  "unknown",
                  "undergraduate",
                  "graduate",
                  "other"
                ],
                "description": "Education level"
              },
              "programType": {
                "type": "string",
                "enum": [
                  "unknown",
                  "college_or_university",
                  "english_language_training",
                  "public_high_school",
                  "private_high_school",
                  "other"
                ],
                "description": "Program type"
              },
              "firstAcademicYearCompleted": {
                "type": "string",
                "enum": [
                  "unknown",
                  "yes",
                  "no"
                ],
                "description": "First academic year completed"
              },
              "i94AdmitUntilDate": {
                "type": "string",
                "maxLength": 10,
                "description": "Actual I-94 admit-until date. YYYY-MM-DD or an empty string if unknown."
              },
              "currentEadEndDate": {
                "type": "string",
                "maxLength": 10,
                "description": "Current EAD end date. YYYY-MM-DD or an empty string if unknown."
              },
              "eadEndOnEffectiveDate": {
                "type": "string",
                "maxLength": 10,
                "description": "EAD end date in place on September 15, 2026. YYYY-MM-DD or an empty string if unknown."
              },
              "schoolTransferPlan": {
                "type": "string",
                "enum": [
                  "unknown",
                  "yes",
                  "no"
                ],
                "description": "School transfer planned"
              },
              "academicProgramChangePlan": {
                "type": "string",
                "enum": [
                  "unknown",
                  "yes",
                  "no"
                ],
                "description": "Program change planned"
              },
              "nextProgramLevelPlan": {
                "type": "string",
                "enum": [
                  "unknown",
                  "not_planning",
                  "higher",
                  "same_or_lower"
                ],
                "description": "Later program"
              },
              "nextProgramStartDate": {
                "type": "string",
                "maxLength": 10,
                "description": "Later program start date. YYYY-MM-DD or an empty string if unknown."
              },
              "nextProgramEndDate": {
                "type": "string",
                "maxLength": 10,
                "description": "Later program end date. YYYY-MM-DD or an empty string if unknown."
              },
              "returnProgramStartDate": {
                "type": "string",
                "maxLength": 10,
                "description": "Return I-20 program start date. YYYY-MM-DD or an empty string if unknown."
              },
              "returnProgramEndDate": {
                "type": "string",
                "maxLength": 10,
                "description": "Return I-20 program end date. YYYY-MM-DD or an empty string if unknown."
              },
              "hasF2Dependents": {
                "type": "string",
                "enum": [
                  "unknown",
                  "yes",
                  "no"
                ],
                "description": "F-2 dependents"
              },
              "earlyEndSituation": {
                "type": "string",
                "enum": [
                  "unknown",
                  "none",
                  "completed_early",
                  "authorized_withdrawal",
                  "status_violation"
                ],
                "description": "Early program ending"
              },
              "earlyEndDate": {
                "type": "string",
                "maxLength": 10,
                "description": "Early ending date. YYYY-MM-DD or an empty string if unknown."
              },
              "pendingEmploymentImmigrantPetition": {
                "type": "string",
                "enum": [
                  "unknown",
                  "yes",
                  "no"
                ],
                "description": "Employment immigrant petition pending"
              }
            }
          },
          "alternative": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "label",
              "changes"
            ],
            "properties": {
              "label": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "changes": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "startingPosition": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "current_ds_inside_us",
                      "prospective_outside_us",
                      "change_status_inside_us",
                      "readmitted_fixed_period",
                      "transfer_or_program_change"
                    ],
                    "description": "Starting situation"
                  },
                  "admissionBasis": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "duration_of_status",
                      "fixed_period"
                    ],
                    "description": "Admission basis"
                  },
                  "inUsOnEffectiveDate": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "yes",
                      "no"
                    ],
                    "description": "In the U.S. on September 15, 2026"
                  },
                  "maintainingStatusOnEffectiveDate": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "yes",
                      "no"
                    ],
                    "description": "Maintaining status on September 15, 2026"
                  },
                  "programStartDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "Program start date. YYYY-MM-DD or an empty string if unknown."
                  },
                  "currentProgramEndDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "Current I-20 program end date. YYYY-MM-DD or an empty string if unknown."
                  },
                  "programEndOnEffectiveDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "Only set this if the I-20 end date in effect on September 15, 2026 will differ from currentProgramEndDate; otherwise HenryKnows derives it. YYYY-MM-DD."
                  },
                  "optIntent": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "yes",
                      "no"
                    ],
                    "description": "Planning OPT"
                  },
                  "optStage": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "none",
                      "pre_completion",
                      "post_completion_not_filed",
                      "post_completion_pending",
                      "post_completion_approved",
                      "stem_not_filed",
                      "stem_pending",
                      "stem_approved"
                    ],
                    "description": "OPT stage"
                  },
                  "optFilingDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "OPT application filing date. YYYY-MM-DD or an empty string if unknown."
                  },
                  "dsoRecommendedOpt": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "yes",
                      "no"
                    ],
                    "description": "DSO recommendation received"
                  },
                  "cptPlan": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "none",
                      "planned"
                    ],
                    "description": "CPT during the program"
                  },
                  "travelPosture": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "none",
                      "planned",
                      "completed",
                      "automatic_visa_revalidation"
                    ],
                    "description": "International travel"
                  },
                  "reentryDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "Return date. YYYY-MM-DD or an empty string if unknown."
                  },
                  "reentryBasis": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "same_i20_balance",
                      "new_f1_admission",
                      "longer_program_i20",
                      "automatic_visa_revalidation"
                    ],
                    "description": "Basis for return"
                  },
                  "optFiledBeforeDeparture": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "yes",
                      "no"
                    ],
                    "description": "OPT filing before departure"
                  },
                  "pendingExtensionOnDeparture": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "yes",
                      "no"
                    ],
                    "description": "Extension pending at departure"
                  },
                  "educationLevel": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "undergraduate",
                      "graduate",
                      "other"
                    ],
                    "description": "Education level"
                  },
                  "programType": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "college_or_university",
                      "english_language_training",
                      "public_high_school",
                      "private_high_school",
                      "other"
                    ],
                    "description": "Program type"
                  },
                  "firstAcademicYearCompleted": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "yes",
                      "no"
                    ],
                    "description": "First academic year completed"
                  },
                  "i94AdmitUntilDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "Actual I-94 admit-until date. YYYY-MM-DD or an empty string if unknown."
                  },
                  "currentEadEndDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "Current EAD end date. YYYY-MM-DD or an empty string if unknown."
                  },
                  "eadEndOnEffectiveDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "EAD end date in place on September 15, 2026. YYYY-MM-DD or an empty string if unknown."
                  },
                  "schoolTransferPlan": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "yes",
                      "no"
                    ],
                    "description": "School transfer planned"
                  },
                  "academicProgramChangePlan": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "yes",
                      "no"
                    ],
                    "description": "Program change planned"
                  },
                  "nextProgramLevelPlan": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "not_planning",
                      "higher",
                      "same_or_lower"
                    ],
                    "description": "Later program"
                  },
                  "nextProgramStartDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "Later program start date. YYYY-MM-DD or an empty string if unknown."
                  },
                  "nextProgramEndDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "Later program end date. YYYY-MM-DD or an empty string if unknown."
                  },
                  "returnProgramStartDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "Return I-20 program start date. YYYY-MM-DD or an empty string if unknown."
                  },
                  "returnProgramEndDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "Return I-20 program end date. YYYY-MM-DD or an empty string if unknown."
                  },
                  "hasF2Dependents": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "yes",
                      "no"
                    ],
                    "description": "F-2 dependents"
                  },
                  "earlyEndSituation": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "none",
                      "completed_early",
                      "authorized_withdrawal",
                      "status_violation"
                    ],
                    "description": "Early program ending"
                  },
                  "earlyEndDate": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "Early ending date. YYYY-MM-DD or an empty string if unknown."
                  },
                  "pendingEmploymentImmigrantPetition": {
                    "type": "string",
                    "enum": [
                      "unknown",
                      "yes",
                      "no"
                    ],
                    "description": "Employment immigrant petition pending"
                  }
                }
              }
            }
          },
          "removeAlternative": {
            "type": "boolean"
          }
        }
      },
      "page": "/"
    }
    confirm_preparation_caseAction

    Use for the one full confirmation after material conversational follow-ups and calculation screening are settled, not after each fact. Pass the exact concise recap and the user's direct confirming words. Never call this based on silence, your own assertion, or a response that contains a correction. If a later consequential clarification is required, confirm only the changed point or concise revised recap rather than repeating the whole case by default. This confirms reported facts and planned dates, not status or eligibility.

    View tool JSON
    {
      "name": "confirm_preparation_case",
      "kind": "act",
      "impl": "imperative",
      "description": "Use for the one full confirmation after material conversational follow-ups and calculation screening are settled, not after each fact. Pass the exact concise recap and the user's direct confirming words. Never call this based on silence, your own assertion, or a response that contains a correction. If a later consequential clarification is required, confirm only the changed point or concise revised recap rather than repeating the whole case by default. This confirms reported facts and planned dates, not status or eligibility.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "expectedRevision",
          "summary",
          "studentResponse"
        ],
        "properties": {
          "expectedRevision": {
            "type": "integer",
            "minimum": 1,
            "description": "The current case revision returned by get_preparation_case."
          },
          "summary": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1800,
            "description": "The concise final recap you showed the student."
          },
          "studentResponse": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500,
            "description": "The user's direct response clearly agreeing with that recap."
          }
        }
      },
      "page": "/"
    }
    screen_duration_topicsAction

    Assess how the new duration-of-status rules affect a confirmed F-1 scenario: transition from D/S, fixed admission periods, extensions of stay, and interactions with OPT, travel/reentry, CPT, transfers and program changes. This is NOT a general F-1 eligibility, travel authorization, or employment authorization tool. Inspect the current draft for possible new-rule topics and every input a calculation would need. Do this once near the final recap when a calculation is likely, and again only if the plan materially changes. No prior confirmation required. Use the result internally; do not call it 'the mapper,' narrate the checklist, or dump missing fields on the user. Ask one relevant question at a time. If a missing date is the choice the user wants help making, develop useful options with Henry before asking them to choose. Missing inputs need not block broader Henry work.

    View tool JSON
    {
      "name": "screen_duration_topics",
      "kind": "act",
      "impl": "imperative",
      "description": "Assess how the new duration-of-status rules affect a confirmed F-1 scenario: transition from D/S, fixed admission periods, extensions of stay, and interactions with OPT, travel/reentry, CPT, transfers and program changes. This is NOT a general F-1 eligibility, travel authorization, or employment authorization tool. Inspect the current draft for possible new-rule topics and every input a calculation would need. Do this once near the final recap when a calculation is likely, and again only if the plan materially changes. No prior confirmation required. Use the result internally; do not call it 'the mapper,' narrate the checklist, or dump missing fields on the user. Ask one relevant question at a time. If a missing date is the choice the user wants help making, develop useful options with Henry before asking them to choose. Missing inputs need not block broader Henry work.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "expectedRevision": {
            "type": "integer",
            "minimum": 1,
            "description": "The current case revision returned by get_preparation_case."
          }
        },
        "required": [
          "expectedRevision"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    compare_duration_plansAction

    Assess how the new duration-of-status rules affect a confirmed F-1 scenario: transition from D/S, fixed admission periods, extensions of stay, and interactions with OPT, travel/reentry, CPT, transfers and program changes. This is NOT a general F-1 eligibility, travel authorization, or employment authorization tool. Compare new-rule effects for two explicitly different, confirmed plans. Rejects absent/identical alternatives. Returns canonical findings, citations, timelines and hypothetical posture for agent evaluation. Optional: use check_duration_plan for one plan.

    View tool JSON
    {
      "name": "compare_duration_plans",
      "kind": "act",
      "impl": "imperative",
      "description": "Assess how the new duration-of-status rules affect a confirmed F-1 scenario: transition from D/S, fixed admission periods, extensions of stay, and interactions with OPT, travel/reentry, CPT, transfers and program changes. This is NOT a general F-1 eligibility, travel authorization, or employment authorization tool. Compare new-rule effects for two explicitly different, confirmed plans. Rejects absent/identical alternatives. Returns canonical findings, citations, timelines and hypothetical posture for agent evaluation. Optional: use check_duration_plan for one plan.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "expectedRevision": {
            "type": "integer",
            "minimum": 1,
            "description": "The current case revision returned by get_preparation_case."
          }
        },
        "required": [
          "expectedRevision"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    check_duration_planAnswer

    Assess how the new duration-of-status rules affect a confirmed F-1 scenario: transition from D/S, fixed admission periods, extensions of stay, and interactions with OPT, travel/reentry, CPT, transfers and program changes. This is NOT a general F-1 eligibility, travel authorization, or employment authorization tool. Calculate the new-rule effects on a single confirmed plan, with no alternative. Returns source-linked findings and timeline for review. Does not generate the mapper advisement or final documents.

    View tool JSON
    {
      "name": "check_duration_plan",
      "kind": "answer",
      "impl": "imperative",
      "description": "Assess how the new duration-of-status rules affect a confirmed F-1 scenario: transition from D/S, fixed admission periods, extensions of stay, and interactions with OPT, travel/reentry, CPT, transfers and program changes. This is NOT a general F-1 eligibility, travel authorization, or employment authorization tool. Calculate the new-rule effects on a single confirmed plan, with no alternative. Returns source-linked findings and timeline for review. Does not generate the mapper advisement or final documents.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "expectedRevision": {
            "type": "integer",
            "minimum": 1,
            "description": "The current case revision returned by get_preparation_case."
          }
        },
        "required": [
          "expectedRevision"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    ask_henryAction

    Ask HenryKnows a broad regulatory reference question in student or professional mode. It can inspect a clearly labeled draft before final confirmation to identify material follow-ups, and can be called repeatedly. Use it quietly: never tell the user that an operation ran, a revision changed, evidence became outdated, or an argument was rejected. includeMapper=true requires current confirmed calculations and attaches any completed advisement. Returns an operation ID; poll get_preparation_operation without narrating the ID. Henry supplies answers; YOU author the final documents.

    View tool JSON
    {
      "name": "ask_henry",
      "kind": "act",
      "impl": "imperative",
      "description": "Ask HenryKnows a broad regulatory reference question in student or professional mode. It can inspect a clearly labeled draft before final confirmation to identify material follow-ups, and can be called repeatedly. Use it quietly: never tell the user that an operation ran, a revision changed, evidence became outdated, or an argument was rejected. includeMapper=true requires current confirmed calculations and attaches any completed advisement. Returns an operation ID; poll get_preparation_operation without narrating the ID. Henry supplies answers; YOU author the final documents.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "expectedRevision",
          "question",
          "audience",
          "includeMapper"
        ],
        "properties": {
          "expectedRevision": {
            "type": "integer",
            "minimum": 1,
            "description": "The current case revision returned by get_preparation_case."
          },
          "question": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "audience": {
            "type": "string",
            "enum": [
              "student",
              "professional"
            ]
          },
          "includeMapper": {
            "type": "boolean",
            "description": "Include current mapper findings and any completed advisement for agent evaluation. False permits a broader or draft-orientation answer without a new-rule calculation."
          }
        }
      },
      "page": "/"
    }
    request_duration_advisementAction

    Assess how the new duration-of-status rules affect a confirmed F-1 scenario: transition from D/S, fixed admission periods, extensions of stay, and interactions with OPT, travel/reentry, CPT, transfers and program changes. This is NOT a general F-1 eligibility, travel authorization, or employment authorization tool. Optionally start or reuse the canonical mapper's student-facing advisement for one already calculated plan when its narrative adds value beyond the calculation and Henry answer. This interprets specialized new-rule evidence, not all F-1 questions. May take minutes; poll the same returned operation ID. Evaluate it and consult Henry as needed; do not automatically run it, narrate its job status, or ask the student to approve the regulatory analysis.

    View tool JSON
    {
      "name": "request_duration_advisement",
      "kind": "act",
      "impl": "imperative",
      "description": "Assess how the new duration-of-status rules affect a confirmed F-1 scenario: transition from D/S, fixed admission periods, extensions of stay, and interactions with OPT, travel/reentry, CPT, transfers and program changes. This is NOT a general F-1 eligibility, travel authorization, or employment authorization tool. Optionally start or reuse the canonical mapper's student-facing advisement for one already calculated plan when its narrative adds value beyond the calculation and Henry answer. This interprets specialized new-rule evidence, not all F-1 questions. May take minutes; poll the same returned operation ID. Evaluate it and consult Henry as needed; do not automatically run it, narrate its job status, or ask the student to approve the regulatory analysis.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "expectedRevision",
          "plan"
        ],
        "properties": {
          "expectedRevision": {
            "type": "integer",
            "minimum": 1,
            "description": "The current case revision returned by get_preparation_case."
          },
          "plan": {
            "type": "string",
            "enum": [
              "baseline",
              "alternative"
            ]
          }
        }
      },
      "page": "/"
    }
    get_preparation_operationAnswer

    Privately read a Henry answer or poll the existing mapper advisement job. Returns pending, ready, failed or outdated, original audience/plan, timing, and evidence. Do not narrate operation IDs, polling, retries, or recoverable errors. A ready result still needs judgment: check missing follow-ups, contradictions and citations. Never regenerate while this job is pending.

    View tool JSON
    {
      "name": "get_preparation_operation",
      "kind": "answer",
      "impl": "imperative",
      "description": "Privately read a Henry answer or poll the existing mapper advisement job. Returns pending, ready, failed or outdated, original audience/plan, timing, and evidence. Do not narrate operation IDs, polling, retries, or recoverable errors. A ready result still needs judgment: check missing follow-ups, contradictions and citations. Never regenerate while this job is pending.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "operationId"
        ],
        "properties": {
          "operationId": {
            "type": "string",
            "maxLength": 36
          }
        }
      },
      "page": "/"
    }
    save_preparation_documentsAction

    Atomically retain the TWO documents YOU authored for the current confirmed case. Nothing is saved unless both pass validation. Correct rejected arguments silently. Student: plain, practical, conversational, no inline citations; explain necessary terms and use direct question bullets. Set includeTimeline=true to let the page append the canonical timeline; do not write a duplicate timeline section. If alternatives remain, summarize their practical tradeoff. Professional: usually shorter, expert-to-expert, but straightforward. Lead directly with the case-specific question in short sentences. Include only controlling facts and dates, unusual or unresolved authority, case-specific consequence, and requested review. Omit routine professional instruction of every kind unless it is disputed or explains a case-specific departure from normal practice. Do not include familiar filing windows, reporting duties, document checklists, or standard office procedure merely because they apply. Do not repeat the full student timeline unless its sequence needs review. Cite primary authority without attributing analysis to HenryKnows or a mapper. Never mention tools, internal classifications, or these writing instructions. A current timeline needs at least one selected Henry answer that interpreted it; that answer may support the pair while each document still needs an answer in its own audience mode. On success, call get_preparation_outputs and claim completion only when completion.status is 'ready.'

    View tool JSON
    {
      "name": "save_preparation_documents",
      "kind": "act",
      "impl": "imperative",
      "description": "Atomically retain the TWO documents YOU authored for the current confirmed case. Nothing is saved unless both pass validation. Correct rejected arguments silently. Student: plain, practical, conversational, no inline citations; explain necessary terms and use direct question bullets. Set includeTimeline=true to let the page append the canonical timeline; do not write a duplicate timeline section. If alternatives remain, summarize their practical tradeoff. Professional: usually shorter, expert-to-expert, but straightforward. Lead directly with the case-specific question in short sentences. Include only controlling facts and dates, unusual or unresolved authority, case-specific consequence, and requested review. Omit routine professional instruction of every kind unless it is disputed or explains a case-specific departure from normal practice. Do not include familiar filing windows, reporting duties, document checklists, or standard office procedure merely because they apply. Do not repeat the full student timeline unless its sequence needs review. Cite primary authority without attributing analysis to HenryKnows or a mapper. Never mention tools, internal classifications, or these writing instructions. A current timeline needs at least one selected Henry answer that interpreted it; that answer may support the pair while each document still needs an answer in its own audience mode. On success, call get_preparation_outputs and claim completion only when completion.status is 'ready.'",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "expectedRevision",
          "student",
          "professional"
        ],
        "properties": {
          "expectedRevision": {
            "type": "integer",
            "minimum": 1,
            "description": "The current case revision returned by get_preparation_case."
          },
          "student": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "title",
              "sections",
              "answerIds",
              "includeTimeline"
            ],
            "properties": {
              "title": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "sections": {
                "type": "array",
                "minItems": 1,
                "maxItems": 12,
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "heading",
                    "body",
                    "sourceIds"
                  ],
                  "properties": {
                    "heading": {
                      "type": "string",
                      "maxLength": 120
                    },
                    "body": {
                      "type": "string",
                      "maxLength": 4000,
                      "description": "Your synthesized prose. Plain text, no HTML. Separate reported facts, findings, unknowns and questions only when each section helps this reader."
                    },
                    "sourceIds": {
                      "type": "array",
                      "maxItems": 20,
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "answerIds": {
                "type": "array",
                "minItems": 1,
                "maxItems": 10,
                "items": {
                  "type": "string"
                },
                "description": "Completed operation IDs actually used. Must include one ask_henry ID in this document's audience mode. A current duration-advisement ID may also be supplied as supporting evidence."
              },
              "includeTimeline": {
                "type": "boolean",
                "description": "Let the page append the current new-rule timeline. Usually true for the student guide and false for the professional summary unless the date sequence itself needs review. When true, do not write a separate timeline section."
              }
            }
          },
          "professional": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "title",
              "sections",
              "answerIds",
              "includeTimeline"
            ],
            "properties": {
              "title": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "sections": {
                "type": "array",
                "minItems": 1,
                "maxItems": 12,
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "heading",
                    "body",
                    "sourceIds"
                  ],
                  "properties": {
                    "heading": {
                      "type": "string",
                      "maxLength": 120
                    },
                    "body": {
                      "type": "string",
                      "maxLength": 4000,
                      "description": "Your synthesized prose. Plain text, no HTML. Separate reported facts, findings, unknowns and questions only when each section helps this reader."
                    },
                    "sourceIds": {
                      "type": "array",
                      "maxItems": 20,
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "answerIds": {
                "type": "array",
                "minItems": 1,
                "maxItems": 10,
                "items": {
                  "type": "string"
                },
                "description": "Completed operation IDs actually used. Must include one ask_henry ID in this document's audience mode. A current duration-advisement ID may also be supplied as supporting evidence."
              },
              "includeTimeline": {
                "type": "boolean",
                "description": "Let the page append the current new-rule timeline. Usually true for the student guide and false for the professional summary unless the date sequence itself needs review. When true, do not write a separate timeline section."
              }
            }
          }
        }
      },
      "page": "/"
    }
    get_preparation_outputsAnswer

    Final completion gate. Privately read retained documents, freshness, evidence source IDs, operation status, and completion. No new generation. Tell the user simply where the two documents are ready ONLY when completion.status is 'ready'; silently repair recoverable save mistakes. An interrupted or failed save remains incomplete.

    View tool JSON
    {
      "name": "get_preparation_outputs",
      "kind": "answer",
      "impl": "imperative",
      "description": "Final completion gate. Privately read retained documents, freshness, evidence source IDs, operation status, and completion. No new generation. Tell the user simply where the two documents are ready ONLY when completion.status is 'ready'; silently repair recoverable save mistakes. An interrupted or failed save remains incomplete.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {}
      },
      "page": "/"
    }