Skip to main content
Glama
paintbrushv

platworks-mcp

by paintbrushv

underwrite_run

Run deterministic underwriting on a canonical deal to obtain certified metrics (NOI, CoC, DSCR, IRR, equity multiple, yields) with engine version. Missing tax policy causes typed refusal.

Instructions

Run the deterministic underwriting engine on a canonical deal; certified metrics come from the engine, never a model.

Pass the full canonical deal inputs (engine schema v0.1) — cohorts, market rent curves, opex table, purchase/debt/exit/fund assumptions, and a property tax policy. Returns the engine's own certified metrics (NOI, CoC, DSCR, IRR, equity multiple, yields) verbatim, with the engine version on every response. A canonical missing its tax policy is refused typed — the engine never guesses. (The argument is declared optional so a missing-input refusal reaches the client as a payload instead of a validation crash.)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
inputsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it delivers rich behavioral context: the engine is deterministic, returns certified metrics verbatim with the engine version on every response, refuses a canonical missing its tax policy (never guesses), and explains why the argument is declared optional (so refusals arrive as payloads, not validation crashes). This is exemplary disclosure.

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

Conciseness4/5

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

The description is dense but every sentence earns its place — purpose is front-loaded, followed by input requirements, refusal behavior, and the optional-argument rationale. Slightly long, but no wasted words for a tool with a single complex parameter.

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

Completeness5/5

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

With no output schema, the description fully explains return values ('certified metrics (NOI, CoC, DSCR, IRR, equity multiple, yields) verbatim, with the engine version on every response') and covers input requirements and failure behavior. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema description coverage is 0% and the single 'inputs' parameter is essentially undocumented in the schema (only 'default': null). The description compensates substantially by specifying exactly what the inputs must contain (cohorts, rent curves, opex table, assumptions, tax policy) and referencing the engine schema version, though it does not detail the full v0.1 structure itself.

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

Purpose5/5

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

States a specific verb ('Run') and resource ('deterministic underwriting engine'), and distinguishes itself via 'certified metrics come from the engine, never a model' — differentiating it from model-based siblings like underwrite_backsolve. The purpose is unambiguous.

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?

The description clearly enumerates what to pass ('full canonical deal inputs (engine schema v0.1) — cohorts, market rent curves, opex table, purchase/debt/exit/fund assumptions, and a property tax policy') and states the required precondition (tax policy present). It lacks an explicit when-not-to-use or named alternative, though 'never a model' implicitly contrasts with underwrite_backsolve.

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