Records that disagree
The income statement and the household statement give different household incomes. Nobody but you can settle which one to stand behind.
Applications for the 2026–27 cycle are open until 30 June 2026
CiteApply is a scholarship application an assistant can help you fill in — but only from three source records, and only up to the point where judgment starts. The page registers six WebMCP tools on itself, so an agent in your browser works against the portal's own rules, version checks and refusals instead of guessing at the form.
Every application here begins from three documents — an enrollment record, a household statement and an income statement. Take one of the two sample sets, or upload a set you downloaded from this page.
Read the records before you start: each one opens as the PDF the server parses. The interesting set is the one that disagrees — two accepted records give different incomes, the portal refuses to choose, and so does the agent. Watching it happen takes about half a minute: you allow access, and a scripted client calls the real tools while the form fills in front of you.
Fictional demo · Synthetic data only
These are the actual files the server reads. Open any of them, or download a whole set and upload it back — the application that opens is built from the sentences inside them, never from anything typed in here.
The income statement and the household statement give different household incomes. Nobody but you can settle which one to stand behind.
All three records line up, so every answer can be read straight out of them and the application runs end to end.
Download one of the sets above and upload its three PDFs here. The server checks each file against the records it committed to and opens that application.
Nothing real is accepted, and nothing you choose is kept: each file is hashed, compared, and dropped. Anything that is not one of this demonstration's own records is refused, by name-free message, before an application exists.
6 WebMCP tools registered
Declared on document.modelContext when the application page loads. Four read; two can move the draft.
0 ways an agent can submit
No tool submits, confirms, resolves a conflict or loads a receipt. The server refuses those calls; it does not merely omit them.
1 call to bind a whole batch
apply_evidence_backed_answers is atomic and version-checked. Every entry validates, or nothing changes.
= same review, either way
By hand or assisted, the walk ends on the same frozen review and the same content hash on the receipt.
Horizon Education Aid is a need-based award for students already enrolled in an undergraduate program. Every figure below is invented for this demonstration.
Evidence, not guesses
An answer here is a link to a record, not a string an assistant thought was plausible. The application shows what the answer is, which document it came from, and the sentence in that document it rests on — and the tools hand out opaque claim handles rather than raw PDFs or storage paths.
Where a second record says the same thing, the answer is marked corroborated. Where nothing supports it, the answer is not written at all.
The refusal
When two accepted records disagree about income, the write is refused. Not deferred, not guessed at with a confidence score — refused, with the reason and the one safe thing to do instead. The saved application does not move, and the choice stays on the page in front of you.
This is the server's own response, sent verbatim to the calling agent:
apply_evidence_backed_answers409
{
"ok": false,
"error": {
"code": "conflict_requires_human",
"message": "Income sources disagree. Resolve this in CiteApply.",
"safeActions": ["resolve_in_visible_application"]
}
}A form that moves
Six questions apply when the application opens. Answer the household one and two more become required — the guardian's name and the household size — so the form the agent read a moment ago is no longer the form in front of it.
That is why get_form_requirements returns rules rather than a field-to-answer map, and why every write carries the version it was based on. An agent working from a stale picture is refused rather than allowed to overwrite.
One human commitment
Preparing a review freezes exactly what you approved and closes assisted access in the same movement. From there the assistant has nothing left to do: it cannot return from the review, cannot confirm, and cannot load, print or export the receipt.
Both walks end in the same place — the same frozen review, and the same content hash printed on the same receipt.
The manual path is the whole product; the assisted path is the same product with a second pair of hands. Both are real here, and you can walk either one. The beats in ochre are the ones that are yours in both.
conflict_requires_humanyoursBoth paths reach the same three decisions that are only yours, and the same frozen review — the same content hash on the same receipt. The assistant removes the reading and the retyping. It does not remove you.
You do not need an agent to see the difference. Start the set that disagrees, allow assisted access, and a scripted client on the page calls the same six tools against the same server — every acceptance and both refusals land in the ledger while you watch. The application then counts what it did against what you did by hand, from this session only.
Starting a set parses its three PDFs on the server and turns them into a short index of claims. Nothing is typed in, and no record is treated as more than a claim until it is cited.
An answer is a link to a record, not free text. The application shows what each answer is, which document it came from, and the sentence in that document it rests on.
When two accepted records disagree, or when a declaration is yours to make, the portal stops and hands you the decision. Then it freezes exactly what you approved and submits that.
An assistant is optional and off until you turn it on. Once an application is open, CiteApply asks you which way you want to work — by hand, or with an assistant helping — and every control is on the page either way. Nothing is hidden while assisted access is off, and the two paths end on the same frozen review.
Every tool is declared on document.modelContext with the hints below. Four only read. The two that can change something are version-checked and refuse rather than guess.
get_application_state
readOnlyuntrusted content
Reads the saved application. The redacted mode is safe before access is allowed; the protected mode is not offered until you allow it.
get_form_requirements
readOnlythe portal's own rules
Reads which questions apply and the rule behind each one. Rules, never a field-to-answer map.
get_evidence_index
readOnlyuntrusted content
Lists the claims parsed from this set's records as opaque handles. No raw PDF, no storage path, no full excerpt.
get_validation_issues
readOnlythe portal's own rules
Reads what is currently blocking review, in order. It changes nothing.
apply_evidence_backed_answers
can change the draftuntrusted content
Links handles to answers in one atomic, version-checked call. Every entry validates or nothing changes.
prepare_submission_review
can change the draftthe portal's own rules
Freezes a ready draft into a review for you to inspect, then closes assisted access. It returns readiness, not the review.
Turn WebMCP on in Chrome, start the records that disagree, allow assisted access on the application page, and say these three things in order.
Chrome flag
chrome://flags/#enable-webmcp-testingLaunch switch
--enable-features=WebMCPTestingNow ask it to pick an income figure. It comes back conflict_requires_human, the saved application does not move, and the choice stays on the page in front of you. That refusal is the product working, not a failure.
No. Horizon Education Aid does not exist, the award and the dates on this page are invented, and nothing you do here is sent to any program. The applicant, the three records and every figure in them are synthetic.
Choose which records to start from, declare your email address, resolve a disagreement between two records, return from a review, confirm or submit the application, or load, print or export a receipt. The server refuses those calls; it is not a matter of the tool descriptions asking nicely.
Then you have the whole product. Every control is on the page with or without assisted access, and nothing is hidden while it is off. In a browser without WebMCP the application page says so plainly and stays completely usable.
Your answers, which record each one cites, and the review and receipt you produce — all against a session cookie that lasts 60 minutes. Because the records are synthetic, none of it is anyone's real data, and there is nothing here worth keeping.
Nothing you enter is submitted anywhere, the records are invented, and the session lasts an hour. Take the records that disagree if you only have time for one.