An activity keeps only its current state — pending, started, complete, cancelled or error — so get_activity_events, which returns each transition it went through, is where a stalled transfer actually explains itself. Inventory has to be assembled from both lists, because packages sent by the team and packages uploaded to Portals are kept apart. Destruction is gated separately from the API key, which is the right default for a tool an agent drives: an expired package and its files are deleted rather than archived.
A server over the MASV managed file transfer API, covering packages, Portals, the activity feed and connected cloud or on-premise storage integrations. MASV describes it as experimental: it has not been through their internal verification process, and support is best effort.
- Both halves of the package list: get_packages returns what team users sent to MASV directly, get_portal_packages returns what external users uploaded to Portals, and get_package, get_package_files and get_package_transfers open any one of them.
- The history behind a delivery, not just its current state: get_activities lists the event records, get_activity_events replays every state transition of one activity, and get_activities_information explains what each state means.
- Portals for collecting files from people outside the team: create_portal needs only a name and a subdomain, and update_portal covers access codes, download passwords, file-type restrictions, connected integrations and branding.
- Storage integrations in both directions: get_integrations lists what is connected, list_files_on_integration pages through a bucket or the Storage Gateway with a cursor, transfer_files_from_integration pulls files in as a new package, and send_package_to_integration pushes a package back out.
- Retention control: update_package_expiration_date_and_time moves a package's expiry, or switches unlimited storage on for it.
- Team lookups: get_team_members returns membership IDs, which is what a private portal's access list takes.
- delete_package and delete_portal, both permanent, both inert unless the delete switch is turned on.
A MASV team account: MASV_TEAM_ID and MASV_API_KEY. It runs straight from npx, so nothing is installed. Deletion is off by default — delete_package and delete_portal only work with MASV_ALLOW_DELETE set to true.
One command plus a key — npx @getmasv/masv-mcp-server, then supply credentials
