Skip to main content
Glama

Safe Rate

Update my Universal Application

update_my_application
DestructiveIdempotent

Requires the shopper's Safe Rate sign-in (scope poppy:write). Change answers in the loan scenario of the shopper's Universal Application. Send only the fields that change: everything else keeps its saved value, and nothing is saved if the result would be invalid. Cannot share the application or record an SSN — those are the shopper's own click on saferate.com.

Input Schema

NameRequiredDescriptionDefault
zipNo
timelineNo
usdaAreaNo
occupancyNo
creditBandNo
hoaMonthlyNo
loanAmountNo
usdaIncomeNo
downPaymentNo
loanPurposeNo
propertyTypeNo
numberOfUnitsNo
propertyValueNo
propertyAddressNo
hasMilitaryServiceNo
expected_updated_atNoupdated_at from your last read of the application. If the shopper (or anyone) changed it since, nothing is saved and you get error 'conflict': read it again first.
costOverridesMonthlyNo
propertyAddressPartsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-redundant behavior: the required auth scope, merge-not-replace semantics ('everything else keeps its saved value'), and all-or-nothing validation ('nothing is saved if the result would be invalid'). It does not describe rate limits or what the response contains after a successful write, but nothing contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the prerequisite (sign-in scope) before the action, then the patch convention, then the hard limits. Every sentence adds information not available in the schema or annotations, and the em-dash clause on SSN/sharing is compact rather than padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter, nested-object, destructive mutation with no output schema, the description covers the critical unknowns: auth requirement, merge semantics, atomic failure on invalid results, and the conflict-relevant state assumption. Gaps remain around return value after a successful write and per-field meaning for the enums, but the fundamental call-shape risks are addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 6% (18 parameters, with only expected_updated_at documented in the schema), so the description carries most of the burden. It compensates partially by establishing that the call is a partial update in which omitted fields retain saved values, which is real meaning beyond the schema. However, it explains none of the domain parameters (creditBand, usdaArea, costOverridesMonthly, propertyAddressParts) or how the two address fields interact, leaving the bulk of the semantics undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Change answers') and a specific resource and sub-scope ('the loan scenario of the shopper's Universal Application'), which an agent can distinguish from get_my_application or start_my_application in the sibling list. It stops short of explicitly naming those siblings or stating the read-vs-write boundary, so differentiation is inferable rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear operating context (Safe Rate sign-in with scope poppy:write) and an explicit exclusion: sharing the application and recording an SSN cannot be done here and must happen on saferate.com. It also states the patch convention ('send only the fields that change'), which governs how to call it. It does not say when to prefer this over start_my_application (e.g., first-time creation), leaving one routing gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources