Skip to content

Tools · Parcels

MCP tools for the Parcels module (coworking): registering letters and packages with a photo, the queue, pickup, return, discard, reopening, deletion and the member's "do I have a parcel?".

The Parcels module through the assistant: registering the parcel with a photo and notifying the member, following the queue, handling photos, marking the pickup, returning, discarding, reopening and deleting, and the member asking whether anything is waiting. There are 16 tools.

Each tool carries a badge: Read-only changes nothing, Changes creates or changes something right away, and Asks to confirm only acts after your yes to a summary. See Money and confirmation.

In short

ToolWhat it doesMinimum roleType
get_parcels_overviewThe space at a glance: the settings and how many are waitingAnyone who sees the spaceRead-only
get_parcelOne parcel, with the photosAny (yours); team (any)Read-only
do_i_have_parcelsYour parcels, pending and history, with the place and the codeAnyRead-only
mark_parcel_picked_upMarks the pickupAny (yours); moderator or finance (others')Changes
search_parcel_recipientsFinds the recipient by nameModerator or financeRead-only
register_parcelRegisters the parcel and notifies the recipient by emailModerator or financeChanges
list_pending_parcelsThe queue of parcels waiting for pickupModerator or financeRead-only
list_parcelsThe history, with any statusModerator or financeRead-only
update_parcelFixes the data and the locker codeModerator or finance (waiting); admin (closed)Changes
add_parcel_photoAdds a photoModerator or financeChanges
replace_parcel_photoReplaces a photoModerator or financeChanges
return_parcelReturns to the senderModerator or financeChanges
remove_parcel_photoRemoves a photo for goodModerator or financeAsks to confirm
discard_parcelDiscards a parcel nobody picked upAdminChanges
reopen_parcelUndoes a closingAdminChanges
delete_parcelDeletes a record made by mistakeAdminAsks to confirm

The space is created with create_space and module: "parcels", with the parcels argument for the settings; update_space changes only what you send and keeps the rest.

The team, here, is the owner, the admin, the moderator and finance. The roles are the routes' roles: the assistant never does more than the connected person could do on screen. The owner and the admin see all 16 tools; the moderator and finance, 13 (no discarding, reopening or deleting); the member, 4 (get_parcels_overview, get_parcel, do_i_have_parcels and mark_parcel_picked_up, on their own parcels).

The locker code is a secret. No team response carries it, and it is hidden in the MCP audit log; only do_i_have_parcels and get_parcel show it, to the recipient themselves. Whoever registers or fixes a parcel can set the code, never read it, and the assistant doesn't repeat it.

The space settings

The parcels argument of create_space and update_space accepts:

FieldTypeDescription
locker_modenone or freenone: everything stays at the front desk; free: the team writes where it left each parcel
locker_pickup_codetrue or falseThe team can set a pickup code per parcel; only the recipient sees it
email_includes_phototrue or falseThe notice email carries a thumbnail of the photo (default: yes)
require_staff_confirmationtrue or falseTrue: only the team marks the pickup. False (default): the member can too
reminder_after_days, reminder_max_countnumbers, or nullStalled deadline and reminder cap. They are already accepted, but the reminder doesn't run yet

get_parcels_overview

Read-only

The space at a glance. The settings (locker mode and whether the member confirms their own pickup), how many parcels are waiting for you (mine.pendingCount) and, for the team, how many are pending and stalled. Minimum role: anyone who sees the space.

ParameterTypeRequiredDescription
spaceid or linkYesThe Parcels space

Ask like this: "How many parcels are stalled at the Downtown location?"

get_parcel

Read-only

One parcel. With the photos, in signed links valid for 1 hour. The team reads any parcel in the community, without the code; the recipient reads theirs, with the place and the code while it's waiting. Anyone else gets "not found". Minimum role: any.

ParameterTypeRequiredDescription
parcel_ididYesThe parcel (from list_pending_parcels)

Ask like this: "Show me Maria's parcel."

do_i_have_parcels

Read-only

"Do I have a parcel?" Only yours: the pending ones (all) and the history (the latest), with where to pick up, the locker code while it's waiting and the photos (1-hour links). Show the code only to the person themselves. Minimum role: any.

ParameterTypeRequiredDescription
spaceid or linkNoA specific space; without it, all
history_limitnumberNoHow many from the history (1 to 100)

Ask like this: "Do I have any parcel waiting?"

mark_parcel_picked_up

Changes

Mark the pickup. The team marks it as STAFF (default, with the name of who came in picked_up_by_name, which defaults to the recipient) or THIRD_PARTY (the name is required). The recipient themselves marks it as SELF, only if the space doesn't require team confirmation (otherwise, refused). The locker code is deleted. It's idempotent: on an already closed parcel, it returns already_closed: true. Minimum role: any (yours); moderator or finance (others').

ParameterTypeRequiredDescription
parcel_ididYesThe parcel (from list_pending_parcels)
methodSTAFF, SELF or THIRD_PARTYNoHow it was picked up
picked_up_by_nametextNoWho came to collect it (required with THIRD_PARTY)

Ask like this: "Mark Maria's parcel as picked up." · "I already picked up my parcel."

search_parcel_recipients

Read-only

Who receives it. The space's members whose name starts with q (at least 3 letters, up to 8 results), with only id, name and initials. The id is the recipient_profile_id for register_parcel. Minimum role: moderator (or finance).

ParameterTypeRequiredDescription
spaceid or linkYesThe Parcels space
qtextYesThe start of the name

Ask like this: "Find Maria Souza so I can register a parcel."

register_parcel

Changes

Register the parcel. For a member with access to the space. It sends the recipient the notice email (with the thumbnail, if the space is set that way), in the community's time zone: the assistant says so. kind is LETTER, PACKAGE or OTHER (the latter requires kind_label). locker_label and locker_pickup_code (4 to 12 characters, a secret) only apply if the space allows it. client_request_id makes a repeated call return the same parcel, with no second email. The same recipient, kind and tracking within 24 hours is refused (409), unless force is true. Minimum role: moderator (or finance).

ParameterTypeRequiredDescription
spaceid or linkYesThe Parcels space
recipient_profile_ididYesFrom search_parcel_recipients
kindLETTER, PACKAGE or OTHERYesThe kind
kind_labeltextWith OTHERUp to 60 characters
sender_name, carrier, tracking_codetextNoSender, carrier and tracking
notestextNoUp to 200 characters
locker_label, locker_pickup_codetextNoWhere it was left and the code
photoslistNoUp to 5, each with image_url or image_base64
client_request_id, forcetext, true/falseNoIdempotency and duplicate registration

Ask like this: "An Amazon package arrived for Maria Souza, in locker 12. Photo: [link]."

list_pending_parcels

Read-only

The queue. The parcels waiting for pickup, newest to oldest, with recipient, kind, sender, place, how long they've waited and stalled_days when past the deadline. Filters: kind, q (recipient, sender, carrier or tracking), stalled, recipient_profile_id, from and to (YYYY-MM-DD, in the community's time zone). Never the code (only has_locker_code). Minimum role: moderator (or finance).

ParameterTypeRequiredDescription
spaceid or linkYesThe Parcels space
kind, q, stalled, recipient_profile_id, from, tovariousNoThe filters
page, limitnumbersNoPagination (up to 100)

Ask like this: "What has been stalled at the front desk for more than 3 days?"

list_parcels

Read-only

The history. Same as list_pending_parcels, but with any status (RECEIVED, PICKED_UP, RETURNED, DISCARDED), filterable by status. Minimum role: moderator (or finance).

ParameterTypeRequiredDescription
spaceid or linkYesThe Parcels space
statusstatusNoFilters by status
the filters of list_pending_parcelsvariousNo

Ask like this: "Which parcels were returned this month?"

update_parcel

Changes

Fix. Kind, sender, carrier, tracking, note, place and locker code (which is set again, never read) of a parcel that's waiting. A closed parcel can only be corrected by an owner or admin, and never the code. Each fix goes in the log. Minimum role: moderator (or finance).

ParameterTypeRequiredDescription
parcel_ididYesThe parcel (from list_pending_parcels)
kind, kind_label, sender_name, carrier, tracking_code, notes, locker_label, locker_pickup_codevariousNoOnly what changes

Ask like this: "Fix the tracking on Maria's parcel to BR123456789."

add_parcel_photo

Changes

Add a photo. Up to 5 per parcel, in private storage. The team; on a closed parcel, only the owner and the admin. Minimum role: moderator (or finance).

ParameterTypeRequiredDescription
parcel_ididYesThe parcel (from list_pending_parcels)
image_url or image_base64 (+ image_type)textYesThe photo: a public link or the file in base64. It's kept in private storage

Ask like this: "Attach this photo to Maria's parcel."

replace_parcel_photo

Changes

Replace a photo. Replaces a photo with the new file; the old one is deleted. Minimum role: moderator (or finance).

ParameterTypeRequiredDescription
parcel_ididYesThe parcel (from list_pending_parcels)
photo_ididYesThe photo (from get_parcel)
image_url or image_base64 (+ image_type)textYesThe photo: a public link or the file in base64. It's kept in private storage

Ask like this: "Replace the parcel's first photo with this one."

return_parcel

Changes

Return to the sender. Requires the reason. Nothing is deleted: the parcel stays in the history as RETURNED and the locker code is deleted. An already closed parcel answers 409. Minimum role: moderator (or finance).

ParameterTypeRequiredDescription
parcel_ididYesThe parcel (from list_pending_parcels)
reasontextYesThe reason, up to 200 characters; it goes in the log

Ask like this: "Return Maria's parcel to the sender: refused."

remove_parcel_photo

Asks to confirm

Remove a photo. The file is deleted for good. On the first call it returns the summary and the confirmation code. Minimum role: moderator (or finance).

ParameterTypeRequiredDescription
parcel_ididYesThe parcel (from list_pending_parcels)
photo_ididYesThe photo (from get_parcel)

Ask like this: "Remove the parcel's second photo; it shows the address."

discard_parcel

Changes

Discard. For a parcel nobody picked up. Requires the reason. Nothing is deleted: it stays as DISCARDED in the history, and reopen_parcel undoes it. It doesn't ask for confirmation, since it's reversible. Minimum role: admin (owner or admin).

ParameterTypeRequiredDescription
parcel_ididYesThe parcel (from list_pending_parcels)
reasontextYesThe reason, up to 200 characters; it goes in the log

Ask like this: "Discard Maria's parcel: expired without pickup."

reopen_parcel

Changes

Reopen. Undoes a pickup, return or discard made by mistake: it goes back to RECEIVED, with the reason. The deleted code doesn't come back; set another with update_parcel. Minimum role: admin (owner or admin).

ParameterTypeRequiredDescription
parcel_ididYesThe parcel (from list_pending_parcels)
reasontextYesThe reason, up to 200 characters; it goes in the log

Ask like this: "Reopen Maria's parcel: the pickup was marked by mistake."

delete_parcel

Asks to confirm

Delete a record made by mistake. It leaves the lists and the photos are deleted; the log keeps who and why. To close a parcel for real, use mark_parcel_picked_up, return_parcel or discard_parcel. On the first call it returns the summary and the confirmation code. Minimum role: admin (owner or admin).

ParameterTypeRequiredDescription
parcel_ididYesThe parcel (from list_pending_parcels)
reasontextYesThe reason, up to 200 characters; it goes in the log

Ask like this: "Delete the record of John's parcel: I registered it for the wrong person."