Koskamo

dokumendiregister MCP

An MCP server that connects AI assistants to Estonian public-authority document registers. It enables cross-register search, full-text extraction from attached files, and retrieval of documents linked to specific companies by registry code, all without requiring an API key.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

dokumendiregister MCP logo, by NimistuCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by Nimistu
MCP endpoint (Streamable HTTP)
https://dokumendiregister.ee/api/dokreg-mcp/mcp
Vendor documentation

What its tools do

6 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

6 of 6 have a description · 6 of 6 declare behavior hints · 2 of 5 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search all Estonian public authority registers with a single query
  • Retrieve documents mentioning a specific company by registry code
  • Extract and search full text from PDF and ASiC-E attachments
  • Find recent documents from specific authorities like the Financial Intelligence Unit

Source and maintenance

Community listingRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
dokumendiregister 0.1.0
MCP protocol negotiated in check
2025-11-25
Tools
6 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

dokumendiregister.ee aggregates the document registers (dokumendiregistrid) of Estonian public authorities — ministries, agencies, inspectorates and municipalities — into one free, ad-free search. Each authority runs its own register with no shared search; this indexes them together, including the extracted text of attached files, and links every document to the companies named in it (via the Estonian Business Register / nimistu.ee). Use this server to: search documents by subject, company or person name, or reference number; read a document's metadata, file list and extracted text; list every public-authority document naming a given company by its 8-digit registry code (registrikood) — a cross-register company join unique to dokumendiregister.ee; and browse the indexed authorities. Workflow: call `search` (or `search_documents` for authority/type/restriction/date filters) to find documents, then `fetch` by the returned id for the full text. Use `documents_by_company` to pull everything on a company, and `list_authorities` to discover filter values. Data is reused from the authorities' own public registers. Access-restricted (AK) documents expose metadata only — never file contents.

Tools

6 advertised

search — Search Estonian public-authority documents
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full-text search across the document registers (dokumendiregistrid) of Estonian public authorities — ministries, agencies, inspectorates and municipalities — aggregated by dokumendiregister.ee. Searches document titles, reference numbers, counterparties and the extracted text of attached files. Returns matches each with a stable `id` (pass to `fetch`) and a canonical dokumendiregister.ee URL.

search input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "Max results (default 10)."
    },
    "query": {
      "type": "string",
      "description": "Free text: a subject, a company or person name, or a document reference number."
    }
  },
  "additionalProperties": false
}
search output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "total",
    "results"
  ],
  "properties": {
    "total": {
      "type": "number",
      "description": "Total matching documents."
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
search annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
fetch — Fetch a document by id
Advertised by the server during the last successful anonymous check.
Advertised read-only

Retrieve the full metadata, attached-file list and extracted text of a document by the `id` returned from `search` (e.g. 'doc:22112'). Returns it as Markdown with its linked companies and canonical dokumendiregister.ee URL.

fetch input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Document id from search, e.g. 'doc:22112'."
    }
  },
  "additionalProperties": false
}
fetch output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id",
    "title",
    "text",
    "url",
    "metadata"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "text": {
      "type": "string",
      "description": "The full document rendered as Markdown."
    },
    "title": {
      "type": "string"
    },
    "metadata": {
      "type": "object",
      "additionalProperties": {}
    }
  },
  "additionalProperties": false
}
fetch annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
search_documents — Search documents with filters
Advertised by the server during the last successful anonymous check.
Advertised read-only

Document search with optional filters: authority (slug), document type, access restriction (Avalik = public, AK = restricted; restricted documents expose metadata only, never file text) and a registration-date range. Returns a page of documents with a total count. Use `list_authorities` to discover authority slugs.

search_documents input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "description": "Free text; omit to browse by filters alone."
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    },
    "date_to": {
      "type": "string",
      "description": "YYYY-MM-DD upper bound (registration date)."
    },
    "doc_type": {
      "type": "string",
      "description": "Exact document type, e.g. 'Kiri'."
    },
    "authority": {
      "type": "string",
      "description": "Authority slug from `list_authorities`, e.g. 'rab'."
    },
    "date_from": {
      "type": "string",
      "description": "YYYY-MM-DD lower bound (registration date)."
    },
    "restriction": {
      "enum": [
        "Avalik",
        "AK"
      ],
      "type": "string",
      "description": "Access restriction."
    }
  },
  "additionalProperties": false
}
search_documents output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "total",
    "documents"
  ],
  "properties": {
    "total": {
      "type": "number"
    },
    "documents": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "reference",
          "authority",
          "docType",
          "date",
          "restriction",
          "counterparty",
          "companies",
          "fileCount",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "date": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "docType": {
            "type": [
              "string",
              "null"
            ]
          },
          "authority": {
            "type": "string"
          },
          "companies": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "fileCount": {
            "type": "number"
          },
          "reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "restriction": {
            "type": [
              "string",
              "null"
            ]
          },
          "counterparty": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
search_documents annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
documents_by_company — Public-authority documents involving a company
Advertised by the server during the last successful anonymous check.
Advertised read-only

Given an 8-digit Estonian registry code (registrikood), return every public-authority document that names that company — across ALL registers at once, with the authority, document type, date and the company's role. Each authority publishes its own register with no shared search, so this cross-register company join is unique to dokumendiregister.ee. Find a registry code via nimistu.ee or the nimistu MCP.

documents_by_company input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "reg_code"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    },
    "reg_code": {
      "type": "string",
      "description": "8-digit Estonian company registry code, e.g. '16887028'."
    }
  },
  "additionalProperties": false
}
documents_by_company output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "company",
    "total",
    "documents"
  ],
  "properties": {
    "total": {
      "type": "number"
    },
    "company": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "regCode",
            "name"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "regCode": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "documents": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "reference",
          "authority",
          "docType",
          "date",
          "restriction",
          "role",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "date": {
            "type": [
              "string",
              "null"
            ]
          },
          "role": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "docType": {
            "type": [
              "string",
              "null"
            ]
          },
          "authority": {
            "type": "string"
          },
          "reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "restriction": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
documents_by_company annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
list_authorities — List public authorities
Advertised by the server during the last successful anonymous check.
Advertised read-only

All Estonian public authorities whose document register is indexed, each with its slug and document count. Use a slug as the `authority` filter in `search_documents`.

list_authorities input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
list_authorities output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "authorities"
  ],
  "properties": {
    "authorities": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "slug",
          "name",
          "count"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "count": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
list_authorities annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
recent_documents — Most recently registered documents
Advertised by the server during the last successful anonymous check.
Advertised read-only

The newest documents by registration date, across all authorities — optionally narrowed to one authority.

recent_documents input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1
    },
    "authority": {
      "type": "string",
      "description": "Authority slug from `list_authorities`."
    }
  },
  "additionalProperties": false
}
recent_documents output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documents"
  ],
  "properties": {
    "documents": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "authority",
          "docType",
          "date",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "date": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "docType": {
            "type": [
              "string",
              "null"
            ]
          },
          "authority": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
recent_documents annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (3 of 3 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 2 of 2 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
830 ms
95th percentile latency
830 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 830 ms · metadata changed · 6 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http dokumendiregister-mcp https://dokumendiregister.ee/api/dokreg-mcp/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add dokumendiregister-mcp --url https://dokumendiregister.ee/api/dokreg-mcp/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable dokumendiregister-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "dokumendiregister-mcp": {
      "url": "https://dokumendiregister.ee/api/dokreg-mcp/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "dokumendiregister-mcp": {
      "type": "streamableHttp",
      "url": "https://dokumendiregister.ee/api/dokreg-mcp/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start dokumendiregister-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "dokumendiregister-mcp": {
      "type": "http",
      "url": "https://dokumendiregister.ee/api/dokreg-mcp/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http dokumendiregister-mcp https://dokumendiregister.ee/api/dokreg-mcp/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://dokumendiregister.ee/api/dokreg-mcp/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "dokumendiregister-mcp": {
      "serverUrl": "https://dokumendiregister.ee/api/dokreg-mcp/mcp"
    }
  }
}

Let your agent find its tools

Find servers like dokumendiregister MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.