# io.github.shopanaio/novaposhta (npm · @shopana/novaposhta-mcp-server)

MCP Server for Nova Poshta API integration with AI assistants

- Trust score: 67/100 (medium)
- Change this week: +21
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

## Components

- npm · `@shopana/novaposhta-mcp-server`: 67/100 (this document), [markdown](https://verifymcp.io/servers/shopanaio-novaposhta/shopana-novaposhta-mcp-server.md), [page](https://verifymcp.io/servers/shopanaio-novaposhta/shopana-novaposhta-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `@shopana/novaposhta-mcp-server`
- Version: `0.0.1-alpha.7`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-04.

- **Supply Chain Security**: 83/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known medium-severity CVE affects hono 4.12.33, reached via @modelcontextprotocol/sdk > hono. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 44/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 255 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 4775 tokens (~95/item across 50 items; 50 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 99% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add shopanaio-novaposhta -- npx -y @shopana/novaposhta-mcp-server
```

### Codex

```bash
codex mcp add shopanaio-novaposhta -- npx -y @shopana/novaposhta-mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "shopanaio-novaposhta": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@shopana/novaposhta-mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add shopanaio-novaposhta --command npx --arg -y --arg @shopana/novaposhta-mcp-server
```

### Hermes

```yaml
mcp_servers:
  shopanaio-novaposhta:
    command: "npx"
    args: ["-y", "@shopana/novaposhta-mcp-server"]
```

### Other

```json
{
  "mcpServers": {
    "shopanaio-novaposhta": {
      "command": "npx",
      "args": [
        "-y",
        "@shopana/novaposhta-mcp-server"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-04 (score 67, +3)

- [security regression] CVE-2026-69207 affects this package: medium
- [security regression] Known CVEs: partial → fail
- [functional improvement] Stability: unverified → 0.27

### 2026-08-02 (score 64, +43)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional] First check of Schema quality: unverified
- [functional] Licence: Apache-2.0

### 2026-07-31 (score 21, −7)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 28, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-27 (score 46)

First indexed and scored.

## MCP tools (50)

### `track_document` (~93 tokens)

Track a single Nova Poshta document by number and optional phone to receive live status, location, and ETA. Doc 1.2 describes the standard success/data/errors/warnings/info envelope returned by Nova Poshta, which this helper surfaces back to the caller.

Input parameters:

- `DocumentNumber` (string, required): Nova Poshta tracking number (14 digits).
- `Phone` (string): Optional recipient phone in international format (380XXXXXXXXX).

### `track_multiple_documents` (~67 tokens)

Track multiple Nova Poshta documents at once and receive aggregated statistics. Doc 1.2 states every API call returns the same envelope, so use the success/errors/warnings fields here to mirror the native batch tracking response.

Input parameters:

- `DocumentNumbers` (array, required): List of tracking numbers to check.

### `track_multiple` (~80 tokens)

Track multiple Nova Poshta documents with organized results and statistics via TrackingDocument/getStatusDocuments (doc 1.2). Returns successful/failed tracking attempts with delivery statistics (delivered, in-transit, at-warehouse counts). More convenient than track_multiple_documents for batch operations.

Input parameters:

- `DocumentNumbers` (array, required): List of tracking numbers (14 digits each).

### `get_document_movement` (~67 tokens)

Get movement history for up to 10 documents including statuses and timestamps. Doc 1.2 identifies InternetDocument numbers as the primary shipment identifiers, which this endpoint accepts in batches.

Input parameters:

- `DocumentNumbers` (array, required)
- `ShowDeliveryDetails` (boolean): Include extended delivery checkpoints.

### `get_document_list` (~123 tokens)

List documents created in the given date range. Per doc 1.2, these queries target the InternetDocument model used for оформлення відправлень, so date filters help keep the success/data/errors response manageable.

Input parameters:

- `DateTimeFrom` (string, required): Start date (format dd.mm.yyyy).
- `DateTimeTo` (string, required): End date (format dd.mm.yyyy).
- `GetFullList` (string): Use "1" to request full list ignoring pagination (may be slow).
- `Page` (number): Page number (default 1).

### `address_get_settlements` (~66 tokens)

Get settlement areas (областей) via Address/getSettlementAreas (doc 1.3). Returns list of administrative regions/areas in Ukraine. Docs recommend caching this public directory for 12 hours.

Input parameters:

- `Ref` (string): Optional area reference to get specific area.

### `address_get_settlement_country_region` (~91 tokens)

Get settlement country regions (регіонів) for a specific area via Address/getSettlementCountryRegion (doc 1.3). Returns list of regions within an administrative area. Requires areaRef parameter. Docs recommend caching for 12 hours.

Input parameters:

- `AreaRef` (string, required): Area reference from address_get_settlements.
- `Ref` (string): Optional region reference to get specific region.

### `address_search_cities` (~130 tokens)

Find Nova Poshta cities by name or postal index using Address/getCities (doc 1.3). Docs note the city directory is public (no API key) but must be cached and refreshed daily because it exposes Area and Delivery1-Delivery7 flags. IMPORTANT: Always use limit parameter (recommended: 10) to avoid large responses.

Input parameters:

- `FindByString` (string, required): Partial city name or postal code.
- `Limit` (number): Items per page (max 50). Recommended: 10 to avoid large responses.
- `Page` (number): Page number (default 1).

### `address_search_settlements` (~117 tokens)

Search for settlements (city, town, village) with pagination over the same Address/getCities dataset described in doc 1.3 (Area + Delivery1-Delivery7 fields, daily refresh recommended). IMPORTANT: Always use limit parameter (recommended: 10) to avoid large responses.

Input parameters:

- `CityName` (string, required): Settlement name or postal code.
- `Limit` (number): Items per page (1-500). Recommended: 10 to avoid large responses.
- `Page` (number): Page number (default 1).

### `address_search_streets` (~113 tokens)

Search for streets inside a settlement via Address/getStreet (doc 1.4). Used for door pickup/delivery flows, limited to 500 records per page, public but should be cached and refreshed daily. IMPORTANT: Always use limit parameter (recommended: 10) to avoid large responses.

Input parameters:

- `Limit` (number): Max items to return. Recommended: 10 to avoid large responses.
- `SettlementRef` (string, required): Settlement reference ID.
- `StreetName` (string, required): Street name or fragment.

### `address_get_warehouses` (~305 tokens)

List Nova Poshta warehouses (branches, postomats, pickup points) via Address/getWarehouses (doc 1.5). Docs emphasize caching the branch directory daily to leverage schedule arrays, max weight limits, and warehouse types without re-fetching thousands of rows. IMPORTANT: Always use limit parameter (recommended: 10-20) to avoid large responses.

Input parameters:

- `BicycleParking` (string): Filter by bicycle parking availability (1/0).
- `CityName` (string): City name filter.
- `CityRef` (string): City reference from getCities.
- `FindByString` (string): Search string for warehouse name, address, or street.
- `Language` (string): Language code (UA, RU, EN).
- `Limit` (number): Items per page (default 50). Recommended: 10-20 to avoid large responses.
- `POSTerminal` (string): Filter by POS terminal availability (1/0).
- `Page` (number): Page number (default 1).
- `PostFinance` (string): Filter by NovaPay cash desk availability (1/0).
- `Ref` (string): Specific warehouse reference (returns single warehouse).
- `SettlementRef` (string): Settlement reference from searchSettlements.
- `TypeOfWarehouseRef` (string): Filter by warehouse type (Branch, Postomat, Pickup Point).
- `WarehouseId` (string): Warehouse number (e.g., "1" for Branch #1).

### `address_save` (~114 tokens)

Create new address for a counterparty via Address/save (doc 1.24). Requires API key plus CounterpartyRef, StreetRef, BuildingNumber; response returns the Ref and Description needed for door-to-door delivery.

Input parameters:

- `BuildingNumber` (string, required): Building number (required).
- `CounterpartyRef` (string, required): Counterparty reference.
- `Flat` (string): Apartment number (optional).
- `Note` (string): Additional note (optional).
- `StreetRef` (string, required): Street reference from address_search_streets.

### `address_update` (~115 tokens)

Update existing counterparty address with Address/update (doc 1.25). Nova Poshta docs stress you can edit an address only until a waybill is created with it, so run this immediately after address creation.

Input parameters:

- `BuildingNumber` (string): Updated building number.
- `CounterpartyRef` (string, required): Counterparty reference.
- `Flat` (string): Updated apartment number.
- `Note` (string): Updated note.
- `Ref` (string, required): Address reference to update.
- `StreetRef` (string): Updated street reference.

### `address_delete` (~52 tokens)

Delete counterparty address by reference using Address/delete (doc 1.25). Allowed only before the address participates in an Internet document; afterward the API blocks deletion.

Input parameters:

- `Ref` (string, required): Address reference to delete.

### `waybill_calculate_cost` (~210 tokens)

Calculate delivery cost and optional delivery date estimation for a shipment. Doc 1.2 explains that every Nova Poshta call sends apiKey/modelName/calledMethod/methodProperties, so this helper either forwards your raw InternetDocument payload or builds one from typed fields (CitySender, CityRecipient, ServiceType, CargoType, Cost, Weight, SeatsAmount).

Input parameters:

- `CargoType` (string): Cargo type (Parcel, Documents, TiresWheels, etc.).
- `CityRecipient` (string): Recipient city reference.
- `CitySender` (string): Sender city reference.
- `Cost` (number): Declared value in UAH.
- `SeatsAmount` (number): Number of seats.
- `ServiceType` (string): Service type (WarehouseWarehouse, WarehouseDoors, etc.).
- `Weight` (number): Weight in kg.
- `request` (object): Raw Nova Poshta price calculation payload (CitySender, CityRecipient, ServiceType, CargoType, Cost, Weight, SeatsAmount).

### `waybill_get_estimate` (~174 tokens)

Get complete shipment estimate (price + delivery date) in one call via InternetDocument/getDocumentPrice and getDocumentDeliveryDate (doc 1.2). Combines cost calculation and delivery date estimation for convenience. Requires the same PascalCase parameters as waybill_calculate_cost.

Input parameters:

- `CargoType` (string): Cargo type (Parcel, Documents, TiresWheels, etc.).
- `CityRecipient` (string): Recipient city reference.
- `CitySender` (string): Sender city reference.
- `Cost` (number): Declared value in UAH.
- `SeatsAmount` (number): Number of seats.
- `ServiceType` (string): Service type (WarehouseWarehouse, WarehouseDoors, etc.).
- `Weight` (number): Weight in kg.
- `request` (object): Raw Nova Poshta price calculation payload.

### `waybill_create` (~81 tokens)

Create a standard Nova Poshta waybill (Internet document) via InternetDocument/save (doc 1.2). This is the basic waybill creation method. For additional services use waybill_create_with_options. For postomat delivery use waybill_create_for_postomat.

Input parameters:

- `request` (object, required): Raw Nova Poshta create waybill payload (see docs).

### `waybill_create_with_options` (~97 tokens)

Create a Nova Poshta waybill with additional options and services via InternetDocument/save (doc 1.2). Supports backward delivery, additional services, third-party payer, and RedBox barcodes. Use this when you need COD, insurance, or return shipments.

Input parameters:

- `request` (object, required): Raw Nova Poshta create waybill payload with additional options (backwardDeliveryData, additionalServices, thirdPerson, redBoxBarcode).

### `waybill_create_for_postomat` (~83 tokens)

Create a waybill for postomat delivery via InternetDocument/save (doc 1.2). Postomats have size/weight restrictions (max 30kg, max dimensions). Requires proper warehouse selection (postomat type) and seat options configuration.

Input parameters:

- `request` (object, required): Raw Nova Poshta create postomat waybill payload with optionsSeat array.

### `waybill_create_batch` (~72 tokens)

Batch create multiple waybills sequentially via InternetDocument/save (doc 1.2). Processes each waybill one by one to avoid rate limiting. Returns array of results including any errors. Useful for bulk shipment creation.

Input parameters:

- `requests` (array, required): Array of Nova Poshta create waybill payloads.

### `waybill_update` (~70 tokens)

Update an existing waybill. Per doc 1.2 the same InternetDocument request envelope is used for update calls, so pass the raw payload (must include DocumentRef) exactly as defined by Nova Poshta.

Input parameters:

- `request` (object, required): Raw Nova Poshta update payload (must include DocumentRef).

### `waybill_delete` (~66 tokens)

Delete one or multiple waybills by their DocumentRef via InternetDocument/delete (doc 1.2). Waybills can only be deleted before they enter processing. Returns success/error status for the operation.

Input parameters:

- `documentRefs` (array, required): Array of DocumentRef values to delete.

### `waybill_delete_batch` (~73 tokens)

Batch delete multiple waybills by their DocumentRef via InternetDocument/delete (doc 1.2). Alias for waybill_delete that processes all refs in a single API call. Waybills can only be deleted before they enter processing.

Input parameters:

- `documentRefs` (array, required): Array of DocumentRef values to delete.

### `waybill_get_delivery_date` (~126 tokens)

Get estimated delivery date for a city pair and service type. Doc 1.2 outlines the generic Nova Poshta envelope, and this helper builds the methodProperties (CitySender, CityRecipient, ServiceType, optional DateTime) expected by the delivery-date method.

Input parameters:

- `CityRecipient` (string): Recipient city reference.
- `CitySender` (string): Sender city reference.
- `DateTime` (string): Optional shipment date (dd.mm.yyyy).
- `ServiceType` (string): Service type.
- `request` (object): Raw Nova Poshta delivery date payload.

### `reference_get_cargo_types` (~60 tokens)

List available cargo types supported by Nova Poshta via Common/getCargoTypes (doc 1.8). Docs advise caching this API-key-protected directory monthly; expect values such as Parcel, Cargo, Documents, TiresWheels, Pallet.

### `reference_get_pack_list` (~87 tokens)

List available packaging types via Common/getPackList (doc 1.10). Returns standard package dimensions and descriptions. Useful for calculating delivery costs and validating package options. Docs recommend caching monthly.

Input parameters:

- `Height` (number): Optional package height filter in cm.
- `Length` (number): Optional package length filter in cm.
- `Width` (number): Optional package width filter in cm.

### `reference_get_tires_wheels_list` (~51 tokens)

List available tires and wheels types via Common/getTiresWheelsList (doc 1.12). Returns types and descriptions for shipping tires and wheels as cargo. Docs recommend caching monthly.

### `reference_get_cargo_description_list` (~77 tokens)

List cargo descriptions with optional search via Common/getCargoDescriptionList (doc 1.15). Returns predefined descriptions for common cargo types. Supports search by keyword. Docs recommend caching monthly.

Input parameters:

- `FindByString` (string): Optional search keyword for cargo description.
- `Page` (number): Page number (default 1).

### `reference_get_pickup_time_intervals` (~88 tokens)

Get available pickup time intervals via Common/getPickupTimeIntervals (doc 1.17). Returns time windows when Nova Poshta can pick up packages from sender. Requires city reference and date. Docs recommend caching hourly.

Input parameters:

- `DateTime` (string, required): Pickup date (dd.mm.yyyy).
- `SenderCityRef` (string, required): Sender city reference from address_search_cities.

### `reference_get_backward_cargo_types` (~59 tokens)

List backward delivery cargo types via Common/getBackwardDeliveryCargoTypes (doc 1.18). Returns types of cargo that can be sent back (documents, money, etc.). Used for return shipments and COD. Docs recommend caching monthly.

### `reference_get_redelivery_payers` (~57 tokens)

List payer types for redelivery via Common/getTypesOfPayersForRedelivery (doc 1.19). Returns who can pay for backward delivery (Sender/Recipient). Used with return shipments. Docs recommend caching monthly.

### `reference_get_service_types` (~56 tokens)

List delivery service types (warehouse-door etc.) through Common/getServiceType (doc 1.9). Docs say to refresh monthly and point out the four core technologies: WarehouseWarehouse, WarehouseDoors, DoorsWarehouse, DoorsDoors.

### `reference_get_payment_methods` (~55 tokens)

List supported payment methods for shipments (Cash/NonCash) matching the Common/getPaymentForm directory from doc 1.7, which notes that non-cash payments are only available to customers with a Nova Poshta contract.

### `reference_get_pallet_types` (~45 tokens)

List pallet types with dimensions and weight via Common/getPalletsList (doc 1.13). Refresh monthly per docs, especially when offering reverse delivery of pallets.

### `reference_get_time_intervals` (~82 tokens)

Get available delivery time intervals for recipient city using Common/getTimeIntervals (doc 1.16). Requires RecipientCityRef (and optional DateTime) and returns Number/Start/End entries that docs recommend caching monthly.

Input parameters:

- `DateTime` (string): Specific date (dd.mm.yyyy).
- `RecipientCityRef` (string, required): Recipient city reference.

### `reference_get_ownership_forms` (~58 tokens)

List corporate ownership forms required for counterparty creation via Common/getOwnershipFormsList (doc 1.11). Docs provide both short and full names for refs such as ТОВ, ПрАТ, ФГ and recommend a monthly refresh.

### `reference_decode_message` (~78 tokens)

Decode Nova Poshta API message code into human readable text. Doc 1.2 explains how every response contains success/data/errors/warnings/info blocks with numeric codes; this helper calls getMessageCodeText to map those codes to UA/RU descriptions.

Input parameters:

- `MessageCode` (string, required): Message code (e.g., 20000200039).

### `reference_get_types_of_payers` (~66 tokens)

Get list of payer types (Sender/Recipient/ThirdPerson) for waybill creation via Common/getTypesOfPayers (doc 1.7). Docs stress the ThirdPerson payer is accessible only after signing a service contract and that the directory should be cached monthly.

### `reference_get_payment_forms` (~62 tokens)

Get list of payment forms (Cash/NonCash) for waybill creation with Common/getPaymentForm (doc 1.7). Nova Poshta notes non-cash payments are available only to contracted clients, so keep a cached copy to validate user choices.

### `reference_get_types_of_counterparties` (~62 tokens)

Get list of counterparty types (PrivatePerson/Organization) via Common/getTypesOfCounterparties (doc 1.14). Requires API key and, per docs, should be refreshed monthly to stay aligned with sender/recipient onboarding rules.

### `counterparty_get_counterparties` (~140 tokens)

Get counterparties list filtered by property (Sender/Recipient/ThirdPerson) via Counterparty/getCounterparties (doc 1.6). Docs require an API key, recommend caching the directory daily, and note each page tops out at 500 rows so always filter with CounterpartyProperty/FindByString.

Input parameters:

- `CityRef` (string): Filter by city reference.
- `CounterpartyProperty` (string, required): Counterparty role: Sender, Recipient, or ThirdPerson.
- `FindByString` (string): Search by name, phone, or EDRPOU.
- `Page` (number): Page number (default 1).

### `counterparty_get_addresses` (~103 tokens)

Get addresses for a specific counterparty using Counterparty/getCounterpartyAddresses (doc 1.6). Requires API key plus CounterpartyProperty/Ref and, per docs, should be refreshed daily because every page is capped at 500 entries.

Input parameters:

- `CounterpartyProperty` (string): Counterparty role: Sender or Recipient.
- `Page` (number): Page number (default 1).
- `Ref` (string, required): Counterparty reference from getCounterparties.

### `counterparty_get_contact_persons` (~81 tokens)

Get contact persons for a counterparty through Counterparty/getCounterpartyContactPersons (doc 1.6). API key is mandatory and the list should be cached daily; use paging to stay under the 500-record response cap.

Input parameters:

- `Page` (number): Page number (default 1).
- `Ref` (string, required): Counterparty reference.

### `counterparty_save` (~219 tokens)

Create new counterparty (private person or organization) with Counterparty/save (docs 1.20–1.21). Provide CityRef + CounterpartyProperty/Type; private persons require first/last name while organizations must also send OwnershipForm and EDRPOU. Docs recommend refreshing supporting directories monthly and note an API key is required.

Input parameters:

- `CounterpartyProperty` (string, required): Role: Sender or Recipient
- `CounterpartyType` (string, required): Type: PrivatePerson or Organization
- `EDRPOU` (string): EDRPOU code (required for Organization).
- `Email` (string): Email address (optional).
- `FirstName` (string): First name (required for PrivatePerson, optional for Organization).
- `LastName` (string): Last name (required for PrivatePerson, optional for Organization).
- `MiddleName` (string): Middle name (optional).
- `OwnershipForm` (string): Ownership form reference (required for Organization).
- `Phone` (string, required): Phone number in format 380XXXXXXXXX (required).

### `counterparty_update` (~135 tokens)

Update existing counterparty details via Counterparty/update (doc 1.22). Nova Poshta only lets you edit a counterparty from creation up until you create a waybill (ІД) with it, so run updates early.

Input parameters:

- `CounterpartyProperty` (string, required): Counterparty role: Sender or Recipient
- `Email` (string): Updated email.
- `FirstName` (string): Updated first name.
- `LastName` (string): Updated last name.
- `MiddleName` (string): Updated middle name.
- `Phone` (string): Updated phone.
- `Ref` (string, required): Counterparty reference to update.

### `counterparty_delete` (~62 tokens)

Delete counterparty by reference using Counterparty/delete (doc 1.22). IMPORTANT: Docs explicitly state only Recipient counterparties can be deleted through the API; Sender cleanup must go through your account manager.

Input parameters:

- `Ref` (string, required): Counterparty reference to delete.

### `counterparty_get_options` (~70 tokens)

Get counterparty options and permissions via Counterparty/getCounterpartyOptions (doc 1.23) to see booleans such as CanPayTheThirdPerson, CanSameDayDelivery, HideDeliveryCost, etc., before building a waybill.

Input parameters:

- `Ref` (string, required): Counterparty reference.

### `contact_person_save` (~133 tokens)

Create new contact person for a counterparty via ContactPerson/save (doc 1.26). Docs require entering all fields in Ukrainian and with an API key; response returns the Ref/Description pair referenced in waybills.

Input parameters:

- `CounterpartyRef` (string, required): Counterparty reference from getCounterparties.
- `Email` (string): Email address (optional).
- `FirstName` (string, required): First name (required).
- `LastName` (string, required): Last name (required).
- `MiddleName` (string): Middle name (optional).
- `Phone` (string, required): Phone number 380XXXXXXXXX (required).

### `contact_person_update` (~131 tokens)

Update existing contact person details via ContactPerson/update (doc 1.27). Only legal entities may edit full profiles, private persons can change phone only, and edits are allowed solely before a waybill is issued for that counterparty.

Input parameters:

- `CounterpartyRef` (string, required): Counterparty reference.
- `Email` (string): Updated email.
- `FirstName` (string): Updated first name.
- `LastName` (string): Updated last name.
- `MiddleName` (string): Updated middle name.
- `Phone` (string): Updated phone.
- `Ref` (string, required): Contact person reference to update.

### `contact_person_delete` (~73 tokens)

Delete contact person by reference using ContactPerson/delete (doc 1.27). Nova Poshta allows deletions via API only for legal entities and only until the contact was used on an Internet document.

Input parameters:

- `CounterpartyRef` (string, required): Counterparty reference.
- `Ref` (string, required): Contact person reference to delete.

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/shopanaio-novaposhta/shopana-novaposhta-mcp-server#diagnostics

## Score history

- 2026-08-04: 67
- 2026-08-03: 64
- 2026-08-02: 64
- 2026-08-01: 21
- 2026-07-31: 21
- 2026-07-30: 28
- 2026-07-28: 46
- 2026-07-27: 46

## Links

- npm package: https://www.npmjs.com/package/@shopana/novaposhta-mcp-server
- Socket report: https://socket.dev/npm/package/@shopana/novaposhta-mcp-server
- Repository: https://github.com/shopanaio/carrier-api
- Changelog RSS feed: https://verifymcp.io/servers/shopanaio-novaposhta/shopana-novaposhta-mcp-server/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/shopanaio-novaposhta/shopana-novaposhta-mcp-server/changelog.json
- HTML version of this page: https://verifymcp.io/servers/shopanaio-novaposhta/shopana-novaposhta-mcp-server
