Serveur MCP

mkna: Ecuador's official documents

ai.mkna/mkna
Juridique et conformité Recherche et exploration Authentification requise MCP 2025-11-25

Ce que fait ce MCP

Searches, retrieves, cites, and analyzes Ecuadorian laws, decrees, rulings, ordinances, regulations, and official company records.

catalog
What exists: every publisher (family) with how many documents it has and how many have text. Call it to learn the valid `family` keys and the kinds each publisher prints before filtering `search` or `documents`, or to judge whether a missing answer means a gap in the corpus. `sector` narrows to one group of families (e.g. 'ley', 'ejecutivo', 'control', 'local'). Returns `sectors`, each with its `families`: `key`, `label`, `documents` (listed), `with_text` and `newest` (latest publication date); with `sector`, also `publisher`, `stored` (file held), `classified` and `kinds` (the kinds it prints most, with counts). Families with nothing yet are named in `without_documents`. Also, over the classified documents: `instrument_kinds`, `sectors_classified` and `topics`, the values `kind`, `sector` and `topic` take.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'catalogArguments', 'properties': {'sector': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sector', 'default': None}}}
citations
What a document cites, amends or repeals, or which documents cite, amend or repeal it. `direction`: 'out' (default) for the instruments this document refers to - the law it applies, the articles it amends, what it repeals, the rulings it cites; 'in' for the documents in the corpus that refer to this one, newest first - later reforms, repeals, regulations, rulings. `relation` narrows to one of cites, amends, repeals, regulates, replaces, applies. `limit` <= 100. Returns `citations`, each edge with the verbatim `quote` and the `page` it is on. 'out' edges name the target as written (`target_label`, `target_article`) and its `target_document_id` when the target is in the corpus (then `fetch` or `read` it); 'in' edges carry the citing document's id, title, date and url. An amendment found here is evidence of a change with its source, not a statement of what is in force.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'citationsArguments', 'required': ['document_id'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 50}, 'relation': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Relation', 'default': None}, 'direction': {'type': 'string', 'title': 'Direction', 'default': 'out'}, 'document_id': {'type': 'string', 'title': 'Document Id'}}}
companies
Count, filter and rank SCVS company financial statements; use this for company numbers. All filters are optional. Amounts are USD, employees is a count. `ciiu` accepts a code prefix ('A0119') or a Spanish sector word ('flores'); word matches report the matched codes. CIIU describes activity, not export status. `name` is an accent-insensitive substring. `history` with `ruc` or a specific `name` shows every matched company's years. The default year is the latest with at least 90% of the preceding year's filers. Name, RUC, province and CIIU are from the current directory, not historical versions of the ranking. Returns exact `total`, `sum_revenue`, selected `year` and reason, rows of financial measures, `filers_by_year`, the SCVS filing `universe`, and `source` with document, URL, retrieval time and each row's CSV locator. Cite `source` and say which year and universe the count covers.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'companiesArguments', 'properties': {'ruc': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Ruc', 'default': None}, 'ciiu': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Ciiu', 'default': None}, 'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name', 'default': None}, 'sort': {'type': 'string', 'title': 'Sort', 'default': 'revenue'}, 'year': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Year', 'default': None}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 20}, 'offset': {'type': 'integer', 'title': 'Offset', 'default': 0}, 'history': {'type': 'boolean', 'title': 'History', 'default': False}, 'province': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Province', 'default': None}, 'assets_min': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Assets Min', 'default': None}, 'revenue_max': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Revenue Max', 'default': None}, 'revenue_min': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Revenue Min', 'default': None}, 'employees_max': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Employees Max', 'default': None}, 'employees_min': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Employees Min', 'default': None}}}
documents
List documents newest first, without a query: "the latest resolutions of the SRI", "what did the Registro Oficial publish in March 2024", "recent ordinances on mining". Filters as in `search`, each optional, one value or several comma-separated: `family`, `kind`, `category` (normativa | comunicacion | otros), `sector`, `topic`, `published_from`, `published_to`. 20 documents a page; pass the answer's `cursor` to get the next page. Returns `documents`: `document_id`, `title`, `instrument`, `kind`, `family`, `publisher`, `published`, `url`, `pages` when its text is held (`text: false` when it is not yet), and its classification (`sectors`, `topics`, `nature`) when it has one. Court rulings carry their Court-written `abstract` when present. Next: `fetch` one.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'documentsArguments', 'properties': {'kind': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Kind', 'default': None}, 'topic': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Topic', 'default': None}, 'cursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Cursor', 'default': None}, 'family': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Family', 'default': None}, 'sector': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sector', 'default': None}, 'category': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Category', 'default': None}, 'published_to': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Published To', 'default': None}, 'published_from': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Published From', 'default': None}}}
fetch
Read one document, or one passage in its context, by the id `search`, `documents` or `citations` gave. A passage id (the `id` of a search result) returns the document's card and that passage with the one before and after it. A document id (`document_id`) returns the document's text, verbatim, with a [p. N] marker before each page, up to 60,000 characters; beyond that the answer says `truncated: true` and `next` names the `read` call for the following pages. Returns `id`, `title`, `text`, `url` (the publisher's address: cite it) and `metadata` (the card: instrument, kind, publisher, published date, pages, classification, Court-written `abstract` for rulings when present, and `cited_by`: how many documents in the corpus amend, repeal or cite this one). Next: `read` for more pages or one article, `citations` for what it applies and what changed it.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'fetchArguments', 'required': ['id'], 'properties': {'id': {'type': 'string', 'title': 'Id'}}}
read
Read part of a long document: a range of pages, or one article. Pass `document_id` and either `page_from` (and optionally `page_to`), as `fetch`'s `next` suggests, or `article` ('15', 'Art. 15', 'primero', 'único') for that article's full text, however many pages it spans. `max_chars` is at most 40,000 (the default). Returns the text verbatim with a [p. N] marker before each page, `path` (where the window starts in the document's structure: título, capítulo, artículo), `url`, and, when the window did not fit, `truncated: true` with `next` for the following call. To find a phrase in a long document instead of paging through it, use `search` with its `document_id`.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'read_windowArguments', 'required': ['document_id'], 'properties': {'article': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Article', 'default': None}, 'page_to': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Page To', 'default': None}, 'max_chars': {'type': 'integer', 'title': 'Max Chars', 'default': 40000}, 'page_from': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Page From', 'default': None}, 'document_id': {'type': 'string', 'title': 'Document Id'}}}
search
Find passages in every document Ecuadorian public institutions publish. Start research here. For company counts, rankings, revenue, size or employees call `companies` and cite its `source`. `query`: words or a question, best in Spanish, as the documents are ("inversión extranjera en minería", "Decreto Ejecutivo 489", "Art. 15 Ley de Minería"); English works less well. Filters, each one value or several comma-separated, all optional: `family` (a publisher key from `catalog`, e.g. 'registro_oficial'), `kind` (the kind the publisher printed, e.g. 'resolución', or a normalised one: ley, codigo, reglamento, decreto, resolucion, acuerdo, ordenanza, sentencia...), `category` (normativa | comunicacion | otros), `sector` (a sector of `catalog` such as 'ley' or 'local', or an economic one such as 'mineria'), `topic` (e.g. 'inversion_extranjera', 'tributario'), `published_from` / `published_to` (ISO dates or years), `document_id` (search inside one document), `sort` (relevance | newest), `limit` (<= 20, default 8). Returns `results`: each a passage, verbatim, with `id` (the passage id, for `fetch`), `document_id`, `title`, `instrument`, `publisher`, `family`, `kind`, `published`, `url`, `page`, `heading` and `text` (<= 1,200 chars); Court rulings also have `abstract` when their Court-written Resumen is present. `facets` counts the documents of the wider candidate set by family, kind and year: search again with one of them as a filter to narrow. Next: `fetch` the two or three best results; quote with title, page and url.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'searchArguments', 'required': ['query'], 'properties': {'kind': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Kind', 'default': None}, 'sort': {'type': 'string', 'title': 'Sort', 'default': 'relevance'}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 8}, 'query': {'type': 'string', 'title': 'Query'}, 'topic': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Topic', 'default': None}, 'family': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Family', 'default': None}, 'sector': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sector', 'default': None}, 'category': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Category', 'default': None}, 'document_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Document Id', 'default': None}, 'published_to': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Published To', 'default': None}, 'published_from': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Published From', 'default': None}}}
Ajouté
catalog
25 September 2026 02:40
Ajouté
documents
25 September 2026 02:40
Ajouté
citations
25 September 2026 02:40
Ajouté
read
25 September 2026 02:40
Ajouté
fetch
25 September 2026 02:40
Ajouté
search
25 September 2026 02:40
Ajouté
companies
25 September 2026 02:40