Skip to main content
Glama

Trackkr.app - Parcel log for apartments

Server Details

Trackkr MCP Server is a lightweight, lockerless multi-tenant parcel management engine that allows AI assistants to autonomously log incoming packages via OCR label text parsing, manage unit and tenant directories, and securely orchestrate package releases using digital pickup signatures over Firestore and Google Cloud infrastructure.

Ownership verified
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2024-11-05
URL
ChatGPT
–
Claude
–

TDQS

A3.7/5.0

Scored across 3 tools

Disambiguation5/5

Each tool maps to a clearly distinct phase of the parcel lifecycle: viewing pending parcels, logging incoming parcels, and releasing parcels with signature. There is no meaningful overlap in purpose or risk of confusion between them.

Naming Consistency5/5

All tool names use consistent snake_case with a leading verb and clear noun object. The longer release_parcel_with_signature remains predictable and follows the same verb_noun style.

Tool Count5/5

Three tools are well-scoped for the core apartment parcel workflow: log incoming, view pending, and release. Each tool earns its place, and the set does not feel artificially padded or excessively thin.

Completeness4/5

The core parcel lifecycle is covered from intake through pending retrieval to signed release. Minor gaps exist around looking up historical/released parcels or searching by tracking number, but the essential workflow is complete.

Available Tools

3 tools
get_pending_parcelsBInspect

Fetches the current ledger of uncollected packages, highlights aging stats (5+ days), enriches each with occupant contact preferences and notification/telemetry history, and returns structured JSON context.

NameRequiredDescriptionDefault
businessIdNoOptional tenant businessId filter. When provided, scans only that property.
maxResultsNoMaximum number of pending parcels to return (1-500, default 200).
emitTelemetryNoWhen true, emits a STALE_3_DAYS event to parcel_telemetry for newly stale parcels.
thresholdDaysNoMinimum age in days for a Pending parcel to be highlighted in the aging report (1-365, default 5).

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does add useful behavior: aging highlighting at a threshold, enrichment with occupant contact preferences and notification/telemetry history, and a structured JSON return. However, it omits a notable side effect — emitTelemetry defaults to true and writes STALE_3_DAYS events to parcel_telemetry — as well as any permission or volume considerations.

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?

A single dense sentence that front-loads the core action and then the enrichments. Every clause carries information, though the sentence is long enough that the aging/enrichment clauses run together.

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 parameterless-required read tool with a fully documented schema and no output schema, the description is nearly sufficient: it names the source data, the aging logic, the enrichment, and the return format. Only the telemetry side effect and the meaning of the return payload's structure are left unaddressed.

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 four parameters are already fully documented and the baseline is 3. The description's '(5+ days)' loosely corroborates the thresholdDays default and 'notification/telemetry history' hints at emitTelemetry, but adds no syntax, units, or interaction detail beyond the schema.

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 gives a specific verb (fetches) and resource (ledger of uncollected packages) plus the transformations applied (aging highlights, enrichment). It does not explicitly contrast with log_incoming_parcel or release_parcel_with_signature, but the read-only listing nature is unambiguous, so an agent can place it without opening a schema.

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?

There is no when-to-use guidance, no exclusions, and no mention of the sibling tools that write parcels. The operational scenario is only weakly implied by 'current ledger of uncollected packages', which falls short of the explicit routing the 4-5 band requires.

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

log_incoming_parcelBInspect

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 SMTP.

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

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full behavioral burden and does disclose important side effects: Firestore cross-referencing, a 4-hour idempotent lock on trackingNumber plus unitId, and automated SMTP email alerts. It still omits authentication expectations, failure behavior beyond the schema's idempotencyMode note, and what the tool returns.

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 a single dense but purposeful sentence with no filler. It front-loads the accepted inputs and then moves through lookup, deduplication, and notification behavior. It could be slightly more scannable, but it is not bloated.

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

Completeness3/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 no output schema and no annotations, the description covers the main workflow and side effects well. However, it does not explain the return value, error states, authorization requirements, or what record is ultimately created, which leaves meaningful gaps for an agent invoking a write-capable tool.

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 parameter meanings are already well documented in the input schema. The description adds only limited extra meaning, mainly the interaction between trackingNumber and unitId for the 4-hour deduplication lock and the OCR/photoURL input modes. The baseline of 3 is appropriate.

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 states a specific action: accepting OCR-derived label text and/or a Firebase Storage photo URL, looking up Firestore unit listings, applying an idempotency lock, and scheduling email alerts. That is clearly an inbound parcel logging operation. It does not explicitly contrast itself with the sibling tools, but the core 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 Guidelines2/5

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

The description explains what the tool does but gives no explicit guidance on when to use it versus get_pending_parcels or release_parcel_with_signature. It also does not state when not to use it or what prerequisites must be satisfied before calling it.

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

release_parcel_with_signatureBInspect

Updates parcel state to Picked Up, records the pickup timestamp and recipient name, securely saves the digital signature PNG layout to Firebase Storage, and emits a PARCEL_RELEASED telemetry event.

NameRequiredDescriptionDefault
actorNoAudit identity of the staff user or AI agent releasing the parcel.
parcelIdYesFirestore parcel document ID under businesses/{businessId}/parcels/{parcelId}.
businessIdYesTenant business identifier owning the parcel (1-128 alphanumeric/dash/underscore chars).
pickedUpByYesFull name of the resident or authorized person who signed for and collected the parcel (1-120 characters).
datePickedUpNoOptional pickup date in YYYY-MM-DD format (defaults to current UTC date).
releaseNotesNoOptional audit note recorded in PARCEL_RELEASED telemetry (maximum 500 characters).
signatureUrlNoTrusted HTTPS Firebase Cloud Storage URL of the captured recipient signature PNG. Either signatureUrl or signatureBase64 must be supplied.
timePickedUpNoOptional pickup time string (e.g. "4:15 PM", defaults to current UTC time).
signatureBase64NoBase64-encoded PNG signature image (up to 2MB decoded). Automatically uploaded to businesses/{businessId}/signatures/{parcelId}.png when signatureUrl is omitted.

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well on side effects: it discloses a state mutation, an audit record, an external Firebase Storage write, and telemetry emission. It omits permissions/auth requirements, idempotency and failure behavior, which keeps 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?

A single front-loaded sentence that leads with the primary state change and then chains the secondary effects in order. No filler or repetition, though the run-on structure would scan better as a short effect list.

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

Completeness3/5

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

For a 9-parameter mutation with a nested actor object, no annotations and no output schema, the description explains the write flow but leaves out preconditions (required current parcel state), authorization expectations and error/conflict behavior. Return values need not be covered since 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%, including the mutually-exclusive signatureUrl/signatureBase64 pair and format constraints, so the schema does the heavy lifting. The description mentions the recipient name, timestamp and signature artifact conceptually but adds no syntax or format detail beyond what is already documented.

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 states a specific verb+resource and enumerates the concrete effects: parcel state moves to Picked Up, timestamp and recipient are recorded, the signature PNG is stored, and a PARCEL_RELEASED event is emitted. This is clearly distinguishable from the intake and listing siblings by lifecycle stage, though it never names an alternative to differentiate explicitly.

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?

There is no when-to-use framing: nothing says which prior parcel state this release requires, when to prefer signatureUrl over signatureBase64 workflow-wise, or why an agent would call this rather than log_incoming_parcel. The reader can only infer usage from the effects described.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • First observedget_pending_parcels
    • First observedlog_incoming_parcel
    • First observedrelease_parcel_with_signature

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Remote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    23 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources