Skip to main content
Glama

Trackkr.app - Parcel log for apartments

log_incoming_parcel

Accepts parsed text from Google Cloud Vision OCR label scans and/or a trusted Firebase Storage photoUrl, cross-references internal Firestore unit listings, enforces a 4-hour idempotent lock on (trackingNumber + unitId), and schedules automated email alerts via SendGrid.

Input Schema

NameRequiredDescriptionDefault
qtyNoNumber of parcels in this delivery (integer between 1 and 99).
actorNoAudit identity of the caller or AI agent triggering the mutation.
notesNoOptional staff or carrier notes (maximum 1,999 characters).
unitIdNoOptional explicit Firestore unit document ID under businesses/{businessId}/units/{unitId}. If omitted, resolved deterministically from rawOcrText.
photoUrlNoPublic HTTPS Firebase Cloud Storage URL of the package photo (must be hosted on firebasestorage.googleapis.com, storage.googleapis.com, or *.firebasestorage.app). Embedded in the resident notification email.
businessIdYesTenant business identifier (must match the authenticated property businessId, 1-128 alphanumeric/dash/underscore chars).
occupantIdNoOptional explicit occupant ID within the matched unit. If omitted, resolved deterministically from rawOcrText.
rawOcrTextNoRaw OCR text extracted from a shipping label or envelope (up to 10,000 characters). Used to extract tracking numbers and match unit/occupant. At least one of rawOcrText, photoUrl, or unitId is required.
typeOfMailNoPackage category: "letter" | "envelope" | "small box" | "big box" | "furniture/appliances" | "other".small box
dateReceivedNoOptional ISO date received in YYYY-MM-DD format (defaults to current UTC date).
timeReceivedNoOptional time received string (e.g. "2:30 PM", defaults to current UTC time).
pickupMessageNoOptional custom pickup location instruction included in the resident notification email (maximum 100 characters).
trackingNumberNoOptional explicit carrier tracking number (UPS 1Z..., Amazon TBA..., USPS, or FedEx). Paired with unitId for 4-hour idempotent deduplication.
idempotencyModeNoBehavior when the same (trackingNumber + unitId) was already logged within the last 4 hours: "merge" increments qty on the existing pending parcel; "reject" returns REJECTED_DUPLICATE without modifying.merge

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries full burden and does disclose meaningful side effects: automated SendGrid email alerts, a 4-hour idempotent lock keyed on trackingNumber+unitId, and Firestore cross-referencing. It omits auth/permission expectations and does not say what a successful or failed response looks like, keeping it short of a 5.

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?

It is a single front-loaded sentence with no filler, starting with the primary input and progressing through the pipeline. It is dense but every clause carries information; the main cost is that the density makes the central 'log this parcel' action slightly implicit.

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 a complex 14-parameter mutation with 100% schema coverage and no output schema, the description covers inputs, key side effects, and idempotency behavior adequately. The remaining gap is the absence of any indication of return values or failure modes, which matters given no output schema exists.

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 100%, so the baseline is 3. The description reinforces the meaning of the deduplication key (trackingNumber + unitId) and the OCR/photo inputs, but adds little beyond what the well-annotated schema already documents for the 14 parameters.

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?

The description names a concrete action chain (accepts OCR text/photoUrl, cross-references Firestore unit listings, enforces an idempotent lock, schedules email alerts), and the verb+resource combination makes it distinguishable from the read-oriented siblings get_pending_parcels and release_parcel_with_signature.

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

Usage Guidelines2/5

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

It describes the internal pipeline but gives no explicit when-to-use guidance or routing against siblings such as get_pending_parcels or release_parcel_with_signature. The only usage constraint ('at least one of rawOcrText, photoUrl, or unitId') lives in the schema, not the description.

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