Portuguese company public procurement (Portal BASE)
get_portuguese_company_public_procurementPublic-procurement record of a Portuguese company from IMPIC's Portal BASE (weekly open-data files on dados.gov.pt, public domain; every public contract since 2012): contracts WON by NIPC — buyer, subject, procedure and contract type (closed lists), CPV, lots, contract/base/final prices in EUR, dates, duration, framework agreement, closure, bidder count, contract modifications —, contracts ISSUED as a buyer, notices in the Diário da República; newest first, capped at 100. Winners and bidders published without a NIF are never named, only counted. 400 without charge for a natural-person NIF or an invalid check digit; 404 without charge when nothing is found (absence is not conclusive). Price $0.02.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| nipc | Yes | Portuguese NIPC (tax identifier of a legal person): nine digits with a valid check digit, PT prefix and separators tolerated, e.g. 504904493 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402 — no wallet needed. Get one at https://api.sirenic.eu/compte. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. | |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. | |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). | |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |