# Licita (remote · eutenders.duckdns.org)

Spanish/EU procurement intelligence for agents; x402 or prepaid credits.

- Trust score: 61/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-20

## Components

- remote · `eutenders.duckdns.org`: 61/100 (this document), [markdown](https://verifymcp.io/servers/gastonrey-licita-app/eutenders.md), [page](https://verifymcp.io/servers/gastonrey-licita-app/eutenders)

## Channel facts

- Endpoint: `https://eutenders.duckdns.org/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, 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-20.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 11 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 64/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2011 tokens (~182/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 10/100
  - Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 89/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 67% 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 --transport http gastonrey-licita-app https://eutenders.duckdns.org/mcp
```

### Codex

```toml
[mcp_servers.gastonrey-licita-app]
url = "https://eutenders.duckdns.org/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gastonrey-licita-app": {
      "type": "remote",
      "url": "https://eutenders.duckdns.org/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add gastonrey-licita-app --url https://eutenders.duckdns.org/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  gastonrey-licita-app:
    url: "https://eutenders.duckdns.org/mcp"
```

### Other

```json
{
  "mcpServers": {
    "gastonrey-licita-app": {
      "type": "http",
      "url": "https://eutenders.duckdns.org/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## 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-19 (score 61, +1)

- [security] The server changed its declared name: licita-agent → licita
- [functional regression] Schema quality: 155 → 182
- [functional improvement] Tool coverage: 52% → 67%
- [functional] New tool “billing_get_balance”
- [functional] New tool “billing_purchase_credits”
- [functional] New tool “research”
- [cosmetic] “get_buyer_history” added an optional parameter “client_key”
- [cosmetic] “get_company” added an optional parameter “client_key”
- [cosmetic] “get_company_awards” added an optional parameter “client_key”
- [cosmetic] “get_company_opportunities” added an optional parameter “client_key”
- [cosmetic] “get_renewals” added an optional parameter “client_key”
- [cosmetic] “get_tender” added an optional parameter “client_key”
- [cosmetic] “search_tenders” added an optional parameter “client_key”

### 2026-08-18 (score 60, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-08-17 (score 60)

First indexed and scored.

## MCP tools (11)

### `search_tenders` (~268 tokens)

[GET /v1/search — $0.02] Search Spanish public-sector IT/software/cyber procurement: awards, tenders and contracts. Filters: q (full-text), cpv (prefix), buyer, company, region (NUTS), from/to (YYYY-MM-DD), type=award|tender|contract. Returns compact rows with ids for the other tools.

Input parameters:

- `buyer` (string)
- `client_key` (string): Prepaid credit balance key: when set, paid calls first try to debit this account instead of requiring a per-call proof.
- `company` (string)
- `cpv` (string): CPV code or prefix, e.g. "72"
- `from` (string): YYYY-MM-DD
- `page` (integer)
- `payment_token` (string): Payment proof: dev mode → single-use token from POST /v1/dev-faucet; x402 mode → base64 payment payload (the PAYMENT-SIGNATURE / X-PAYMENT header value)
- `q` (string)
- `region` (string): NUTS code or prefix, e.g. "ES61"
- `size` (integer)
- `to` (string): YYYY-MM-DD
- `type` (string)

### `get_tender` (~147 tokens)

[GET /v1/tenders/:id — $0.02] Full tender detail by id: buyer, CPVs, deadline, estimated value, all awards/lots with winners, plus provenance (source + TED url).

Input parameters:

- `client_key` (string): Prepaid credit balance key: when set, paid calls first try to debit this account instead of requiring a per-call proof.
- `id` (integer, required): numeric id from search results
- `payment_token` (string): Payment proof: dev mode → single-use token from POST /v1/dev-faucet; x402 mode → base64 payment payload (the PAYMENT-SIGNATURE / X-PAYMENT header value)

### `get_company` (~153 tokens)

[GET /v1/companies/:id — $0.05] Company profile by id: name, country, NIF, aliases and source identifiers (cross-source identity), plus aggregate stats (wins, total awarded value, top CPVs, top buyers).

Input parameters:

- `client_key` (string): Prepaid credit balance key: when set, paid calls first try to debit this account instead of requiring a per-call proof.
- `id` (integer, required): numeric id from search results
- `payment_token` (string): Payment proof: dev mode → single-use token from POST /v1/dev-faucet; x402 mode → base64 payment payload (the PAYMENT-SIGNATURE / X-PAYMENT header value)

### `get_company_awards` (~153 tokens)

[GET /v1/companies/:id/awards — $0.05] Paginated award history for a company: dates, lots, values, tender + buyer context.

Input parameters:

- `client_key` (string): Prepaid credit balance key: when set, paid calls first try to debit this account instead of requiring a per-call proof.
- `id` (integer, required): numeric id from search results
- `page` (integer)
- `payment_token` (string): Payment proof: dev mode → single-use token from POST /v1/dev-faucet; x402 mode → base64 payment payload (the PAYMENT-SIGNATURE / X-PAYMENT header value)
- `size` (integer)

### `get_company_opportunities` (~161 tokens)

[GET /v1/companies/:id/opportunities — $0.10] Active/recent tenders matching a company's historical CPV/buyer profile, with a deterministic similarity score (explained in score_explanation).

Input parameters:

- `client_key` (string): Prepaid credit balance key: when set, paid calls first try to debit this account instead of requiring a per-call proof.
- `id` (integer, required): numeric id from search results
- `page` (integer)
- `payment_token` (string): Payment proof: dev mode → single-use token from POST /v1/dev-faucet; x402 mode → base64 payment payload (the PAYMENT-SIGNATURE / X-PAYMENT header value)
- `size` (integer)

### `get_buyer_history` (~149 tokens)

[GET /v1/buyers/:id/history — $0.05] Buyer profile by id: award history, supplier concentration (top-supplier share) and per-CPV-division recurrence (median months between awards).

Input parameters:

- `client_key` (string): Prepaid credit balance key: when set, paid calls first try to debit this account instead of requiring a per-call proof.
- `id` (integer, required): numeric id from search results
- `payment_token` (string): Payment proof: dev mode → single-use token from POST /v1/dev-faucet; x402 mode → base64 payment payload (the PAYMENT-SIGNATURE / X-PAYMENT header value)

### `get_renewals` (~196 tokens)

[GET /v1/renewals — $0.25] Forecast signals for likely re-tenders: contracts/frameworks approaching renewal. Filters: cpv (prefix), buyer, window_months (default 12, max 36), min_confidence=low|medium|high.

Input parameters:

- `buyer` (string)
- `client_key` (string): Prepaid credit balance key: when set, paid calls first try to debit this account instead of requiring a per-call proof.
- `cpv` (string)
- `min_confidence` (string)
- `page` (integer)
- `payment_token` (string): Payment proof: dev mode → single-use token from POST /v1/dev-faucet; x402 mode → base64 payment payload (the PAYMENT-SIGNATURE / X-PAYMENT header value)
- `size` (integer)
- `window_months` (integer)

### `get_pricing` (~86 tokens)

[GET /v1/pricing — $0.00] Machine-readable price ladder for all endpoints/tools plus the payment flow. Always free.

Input parameters:

- `payment_token` (string): Payment proof: dev mode → single-use token from POST /v1/dev-faucet; x402 mode → base64 payment payload (the PAYMENT-SIGNATURE / X-PAYMENT header value)

### `research` (~218 tokens)

[POST /v1/research — $0.50] High-level EU public procurement intelligence for a topic: recent tenders, relevant renewal signals, company opportunities and active buyers, each with evidence and an evidence-strength confidence label. Deterministic over the licita database (no LLM). Costs $0.50 USDC per call (x402). Use when an agent needs a research brief on a topic rather than raw rows from search_tenders/get_renewals.

Input parameters:

- `client_key` (string): Prepaid credit balance key: when set, paid calls first try to debit this account instead of requiring a per-call proof.
- `limit` (integer): max findings to return
- `payment_token` (string): Payment proof: dev mode → single-use token from POST /v1/dev-faucet; x402 mode → base64 payment payload (the PAYMENT-SIGNATURE / X-PAYMENT header value)
- `query` (string, required): topic to research (matches tender full-text, company/buyer names, renewal signals)

### `billing_get_balance` (~129 tokens)

[GET /v1/billing — $0.00] Check the prepaid credit balance for a client key (in cents and USD). Always free. Returns not_found when no account exists yet — buy credits via billing_purchase_credits to create one.

Input parameters:

- `client_key` (string, required): prepaid credit account key (must match the key used when buying credits)
- `payment_token` (string): Payment proof: dev mode → single-use token from POST /v1/dev-faucet; x402 mode → base64 payment payload (the PAYMENT-SIGNATURE / X-PAYMENT header value)

### `billing_purchase_credits` (~196 tokens)

[POST /v1/billing/credits/5 — $5.00] Buy a prepaid credit bundle (5, 10 or 25 USD) paid per-endpoint via x402 (mirrors REST POST /v1/billing/credits/:amount). Set amount to the bundle you pay for with payment_token; the proof is verified against that exact bundle, then the account is credited and the balance returned. Afterwards send client_key on every paid tool to pay from balance instead of per-call proofs.

Input parameters:

- `amount` (number|string, required): bundle amount in USD: 5, 10 or 25
- `client_key` (string, required): prepaid credit account key to credit
- `payment_token` (string): Payment proof: dev mode → single-use token from POST /v1/dev-faucet; x402 mode → base64 payment payload (the PAYMENT-SIGNATURE / X-PAYMENT header value)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/gastonrey-licita-app/eutenders#diagnostics

## Score history

- 2026-08-20: 61
- 2026-08-19: 61
- 2026-08-18: 60
- 2026-08-17: 60

## Links

- Remote endpoint: https://eutenders.duckdns.org/mcp
- Changelog RSS feed: https://verifymcp.io/servers/gastonrey-licita-app/eutenders.xml
- Changelog JSON feed: https://verifymcp.io/servers/gastonrey-licita-app/eutenders.json
- HTML version of this page: https://verifymcp.io/servers/gastonrey-licita-app/eutenders
