US mechanics lien and preliminary notice deadlines for all 50 states plus DC. Calculates statutory deadlines from an invoice date and exposes the underlying state rules with statute citations.
Four well-named tools with clear, domain-specific descriptions (avg 180 chars). All tools have input schemas with Zod validation and type constraints. Naming follows verb_noun pattern (calculate_, list_, get_). Parameters are well-described with format constraints (regex for dates, length for state codes). Output structure is documented via JSON responses with disclaimers. Main gaps: no output schema documentation in code, no pagination support for list tools, no enum constraints for optional parameters like project_type/role, and error handling lacks recovery guidance beyond generic fail() wrapper.
Calculates the preliminary notice deadline and the lien filing deadline for a US construction invoice. Needs the invoice or delivery date and the state. Returns dates, days remaining, and any warnings such as weekend or holiday rollover. Covers all 50 states plus DC. Not legal advice.
Returns the underlying deadline rules for a state, including statute citations, the deadline table and common questions. Use this when the user asks why a deadline falls where it does, or wants the statute, rather than just a date.
Returns every available state guide with its code, title and slug. Useful for discovering what exists before fetching one.
Returns the two-letter codes of every US jurisdiction with deadline rules available, all 50 states plus DC. Use this to check a code before calculating.
Optional parameters lack enum constraints. 'project_type' accepts free-form strings ('Commercial', 'Residential') but should declare enum values. 'role' similarly unconstrained. LLMs will hallucinate invalid values.
No output schema documentation. Tools return JSON via ok() wrapper, but response structure (fields, types, nesting) is not documented in code or comments. LLMs cannot plan downstream operations without knowing what fields to expect.
List tools lack pagination. list_supported_states and list_state_lien_guides return all results without limit/offset/page parameters. If state count grows, response bloat will waste tokens and risk context window exhaustion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Error handling is generic. fail() returns raw error messages without recovery guidance. E.g., invalid state code returns 'State not found' instead of 'Invalid state code. Call list_supported_states() to see valid codes.'
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint metadata. All four tools are read-only and idempotent, declaring this via annotations helps agents reason about safety and retry logic.