# mkna: Ecuador's official documents (remote · mcp.mkna.ai)

Search and quote every law, decree, resolution, ruling and ordinance Ecuador publishes.

- Trust score: 70/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-28

## Components

- remote · `mcp.mkna.ai`: 70/100 (this document), [markdown](https://verifymcp.io/servers/ai-mkna-mkna/mcp.md), [page](https://verifymcp.io/servers/ai-mkna-mkna/mcp)

## Channel facts

- Endpoint: `https://mcp.mkna.ai/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## 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-09-28.

- **Endpoint Security**: 11/100
  - TLS not yet verified: we couldn't open a connection to check the certificate.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS not yet verified: we couldn't read the response headers to check for it.
  - DNSSEC not yet verified: we couldn't validate it against a resolver.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but we couldn't connect to verify it.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the mkna: Ecuador's official documents MCP server?

mkna: Ecuador's official documents is a hosted endpoint at https://mcp.mkna.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http ai-mkna-mkna 'https://mcp.mkna.ai/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "ai-mkna-mkna": {
      "url": "https://mcp.mkna.ai/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "ai-mkna-mkna": {
      "type": "http",
      "url": "https://mcp.mkna.ai/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.ai-mkna-mkna]
url = "https://mcp.mkna.ai/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-mkna-mkna": {
      "type": "remote",
      "url": "https://mcp.mkna.ai/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-mkna-mkna --url 'https://mcp.mkna.ai/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-mkna-mkna:
    url: "https://mcp.mkna.ai/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "ai-mkna-mkna": {
      "Transport": "http",
      "Url": "https://mcp.mkna.ai/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add ai-mkna-mkna -t streamable-http -u 'https://mcp.mkna.ai/mcp'
```

### Other

```json
{
  "mcpServers": {
    "ai-mkna-mkna": {
      "type": "http",
      "url": "https://mcp.mkna.ai/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-09-28 (score 70, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-27 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-25 (score 69, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-24 (score 69)

First indexed and scored.

## MCP tools (7)

### `companies` (~312 tokens)

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.

Input parameters:

- `assets_min`
- `ciiu`
- `employees_max`
- `employees_min`
- `history` (boolean)
- `limit` (integer)
- `name`
- `offset` (integer)
- `province`
- `revenue_max`
- `revenue_min`
- `ruc`
- `sort` (string)
- `year`

### `search` (~476 tokens)

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.

Input parameters:

- `category`
- `document_id`
- `family`
- `kind`
- `limit` (integer)
- `published_from`
- `published_to`
- `query` (string, required)
- `sector`
- `sort` (string)
- `topic`

### `fetch` (~238 tokens)

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.

Input parameters:

- `id` (string, required)

### `read` (~227 tokens)

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`.

Input parameters:

- `article`
- `document_id` (string, required)
- `max_chars` (integer)
- `page_from`
- `page_to`

### `citations` (~261 tokens)

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.

Input parameters:

- `direction` (string)
- `document_id` (string, required)
- `limit` (integer)
- `relation`

### `documents` (~243 tokens)

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.

Input parameters:

- `category`
- `cursor`
- `family`
- `kind`
- `published_from`
- `published_to`
- `sector`
- `topic`

### `catalog` (~220 tokens)

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.

Input parameters:

- `sector`

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-mkna-mkna/mcp#diagnostics

## Score history

- 2026-09-28: 70
- 2026-09-27: 70
- 2026-09-26: 69
- 2026-09-25: 69
- 2026-09-24: 69

## Common questions

### What is the mkna: Ecuador's official documents MCP server?

mkna: Ecuador's official documents is an MCP server listed in the public MCP registry as ai.mkna/mkna. Search and quote every law, decree, resolution, ruling and ordinance Ecuador publishes. This page covers its hosted endpoint (https://mcp.mkna.ai/mcp).

### Is the mkna: Ecuador's official documents MCP server safe to use?

mkna: Ecuador's official documents scores 70 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the mkna: Ecuador's official documents MCP server expose?

mkna: Ecuador's official documents exposes 7 tools: companies, search, fetch, read, citations, and 2 more. Their descriptions and schemas cost roughly 1,977 tokens of context every time the server is loaded.

### Does the mkna: Ecuador's official documents MCP server require authentication?

Its publisher declares no required credentials for mkna: Ecuador's official documents. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

### Is the mkna: Ecuador's official documents MCP server still maintained?

mkna: Ecuador's official documents is still listed in the MCP registry, though our most recent checks did not reach this channel. We last reached this channel on 27 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.mkna.ai/mcp
- Website: https://mkna.ai/
- Changelog RSS feed: https://verifymcp.io/servers/ai-mkna-mkna/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-mkna-mkna/mcp.json
- HTML version of this page: https://verifymcp.io/servers/ai-mkna-mkna/mcp
