Metadata-Version: 2.4
Name: tenderapi-mcp
Version: 0.2.0
Summary: MCP server for TenderAPI — French (BOAMP) and EU (TED) public procurement data
Project-URL: Homepage, https://tenderapi.fr
Project-URL: Documentation, https://tenderapi.fr/docs
Project-URL: Repository, https://github.com/IDNSIDNS/tenderapi-mcp
Project-URL: Issues, https://github.com/IDNSIDNS/tenderapi-mcp/issues
Author-email: TenderAPI <contact@tenderapi.fr>
License: MIT
License-File: LICENSE
Keywords: api,boamp,eu,france,mcp,procurement,ted
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27
Requires-Dist: mcp>=1.0.0
Description-Content-Type: text/markdown

# TenderAPI MCP server

<!-- mcp-name: io.github.IDNSIDNS/tenderapi-mcp -->

Expose TenderAPI (French BOAMP + EU TED public procurement data) as MCP tools for AI agents — Claude Desktop, Cursor, Continue, Zed, etc.

A thin wrapper over the public REST API at <https://tenderapi.fr>.

## Install

Requires Python 3.10+.

From PyPI (once published):

```bash
pip install tenderapi-mcp
```

From source:

```bash
git clone https://github.com/IDNSIDNS/tenderapi-mcp
cd tenderapi-mcp
pip install -e .
```

## Configure

Get a free API key at <https://tenderapi.fr/>.

Set the env var:

```bash
export TENDERAPI_KEY=ta_your_key_here
```

## Use with Claude Desktop

Edit your Claude Desktop config:

- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "tenderapi": {
      "command": "tenderapi-mcp",
      "env": {
        "TENDERAPI_KEY": "ta_your_key_here"
      }
    }
  }
}
```

Restart Claude Desktop. The `tenderapi` server should appear in the tool picker.

## Use with other MCP clients

Any MCP client supporting stdio transport. The binary `tenderapi-mcp` (installed by pip) is the entry point.

## Tools exposed

| Tool | Tier | Description |
|------|------|-------------|
| `search_tenders` | Free | Search BOAMP + TED tenders with typed filters (CPV, region, budget, deadline, source…) |
| `search_awards` | Starter | Search award notices (who won which contract, for how much) |
| `winner_intel` | Pro | Aggregated winner stats — top companies by CPV / region / year |
| `me` | — | Current key tier, quota remaining, available features |

## Tiers

- **Free**: 100 req/day — tenders only
- **Starter** (5 €/mo HT): 5 000 req/day — adds awards + webhooks
- **Pro** (15 €/mo HT): 50 000 req/day — adds winner intelligence

See <https://tenderapi.fr/#pricing>.

## Local development

Override the API base URL via `TENDERAPI_BASE_URL` (default `https://tenderapi.fr`).

## Changelog

### 0.1.2 (2026-05-07)

The underlying TenderAPI changed behaviour in ways that affect MCP clients:

- **Stricter query parameters.** Unknown parameters (e.g. `q=` instead of `keyword=`) now return `400 Bad Request` with a list of valid parameters, instead of being silently ignored. Update any tool calls that relied on the old behaviour.
- **Multi-word `keyword` search now AND-matches tokens.** `keyword=espaces verts` requires both words to appear (in title or description). Previously it required the literal substring "espaces verts".
- **Comma-separated lists supported on `region` and `cpv`.** `region=paca,bretagne` now works as well as repeating the parameter.
- **TED awards now expose real SIRETs** (`winner_siret`, `buyer_siret`) for ~50% of records. BOAMP SIRETs are being progressively enriched via the SIRENE register.
- **Country codes normalised to ISO-3166-1 alpha-2** (`FR`, not `FRA`) across both BOAMP and TED awards/tenders.

### 0.1.1 (2026-05-04)

Initial public release on the MCP Registry.

## License

MIT — see [LICENSE](LICENSE).
