French Public Administration Directory: Search Services and Offices (Annuaire DILA)
annuairesp/search-french-public-services
Search the French government's directory of public administrations and services (Annuaire de l'administration et des services publics, published by DILA). Returns records with name, telephone, e-mail, websites, address, the people assigned and the source administration, plus the total number of matching records. Filter with an Opendatasoft ODSQL expression, page with limit (up to 20) and offset (the service reaches only the first 10,000 matches, offset plus limit). Several fields hold JSON encoded as text, and records can name the public officials assigned to a service, with their direct telephone, so data-protection law applies to reuse. Data passed through unmodified and served by Eden Engine; not an official DILA product.
Price
$0.0026 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.
Data source
Direction de l'information légale et administrative
Data from the Annuaire de l'administration et des services publics, Direction de l'information légale et administrative (DILA, Premier ministre), service-public.gouv.fr, reused under the Etalab Open Licence 2.0 stated by the publisher on service-public.gouv.fr. Credit the source and the date of last update; each record's `copyright` field names its source administration. Served by Eden Engine; not an official DILA product.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "annuairesp/search-french-public-services" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "annuairesp/search-french-public-services" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "annuairesp/search-french-public-services", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "annuairesp/search-french-public-services", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 20, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"limit"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many directory records to return, 1 to 20. Required."
},
"where": {
"type": "string",
"maxLength": 500,
"description": "Optional Opendatasoft ODSQL filter expression over the directory's fields (see get-directory-dataset-schema for the field names), for example categorie = \"SI\" or search(nom, \"prefecture\"). A field name the directory does not have is refused. Leave out to read records unfiltered."
},
"offset": {
"type": "integer",
"maximum": 9999,
"minimum": 0,
"description": "Records to skip before the first one returned, for reading the next page, 0 to 9999. Leave out to start at the first record. The service refuses an offset plus limit above its ten thousand record window."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"total_count",
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Record identifier (a UUID)."
},
"nom": {
"type": [
"string",
"null"
],
"description": "Name of the service or administration."
},
"sigle": {
"type": [
"string",
"null"
],
"description": "Acronym of the service."
},
"adresse": {
"type": [
"string",
"null"
],
"description": "JSON array encoded as a string."
},
"categorie": {
"type": [
"string",
"null"
],
"description": "Category code of the record."
},
"copyright": {
"type": [
"string",
"null"
],
"description": "The administration that is the source of the record; credit it."
},
"telephone": {
"type": [
"string",
"null"
],
"description": "JSON array encoded as a string: [{valeur, description}]."
},
"site_internet": {
"type": [
"string",
"null"
],
"description": "JSON array encoded as a string: [{libelle, valeur}] of websites."
},
"adresse_courriel": {
"type": [
"string",
"null"
]
},
"date_modification": {
"type": [
"string",
"null"
],
"description": "Last modification, DD/MM/YYYY HH:MM:SS."
},
"url_service_public": {
"type": [
"string",
"null"
]
},
"affectation_personne": {
"type": [
"string",
"null"
],
"description": "JSON array encoded as a string: the people assigned to the service, with function and telephone."
},
"date_modification_datetime": {
"type": [
"string",
"null"
],
"description": "Last modification as an ISO 8601 datetime with offset."
}
},
"additionalProperties": true
},
"description": "Directory records, in the service's own order."
},
"total_count": {
"type": "integer",
"description": "Matching records in the whole directory, not only the page returned."
}
},
"description": "The directory answer: `total_count` is the number of records matching the request across the whole directory, `results` holds the records returned.",
"additionalProperties": true
}