MCP.Market

Editalmd MCP server

online · 100% uptime
by editalmd.com·com.editalmd/editalmd·v1.0.1

Brazilian public procurement (PNCP): search, deadlines, tender markdown, alerts and watches.

B81/100grade B
What users say
No reviews yet
Be the first
Safety scan
B81/100

full report

Adoption
Growing

0 stars

Reviews

Write one

Nobody has reviewed Editalmd yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Editalmd tools (58, 8 write)

write = sends, deletes, buys or posts
  • account_trackingFree

    Checks that the Salvas, Alertas and Vigias belong to the account of the session. The lists of a guest edm_… move to the account with `POST /api/auth/claim`; a POST to this route answers 410 with the path.

  • add_companyFree

    Imports the CNPJ into a new organization or into the organization of the organization key. Without X-Organization-Id, it creates the organization with the company name and EditalMD on, or returns the one that the person removed from the list (201). With X-Organization-Id or an organization key, the record goes to that organization if the caller manages it and it has no company. Returns 200 when the CNPJ is already in an organization of the caller. Up to 100 companies; no partners or contacts; no analysis starts.

  • analyze_participationFree

    Starts or resumes the analysis with the company record, the attachments and the tender. Call it only when the user asks; follow it with get_participation. Returns 202 after it accepts and keeps the request, and 200 when it reuses a finished analysis. It uses the profile and the attachments of this owner. Interrupted requests can resume; failures tell the reason and the next action. An explicit POST resumes a pause. Up to 2 thousand facts and 100 tenders per company, subject to the available capacity and budget. Follow-up only by GET. The analysis is a triage with evidence, not a final qualification decision or an external legal opinion.

  • api_indexFree

    The EditalMD API index, with the routes.

  • attach_company_documentwrite actionFree

    Sends a PDF proof of the company. It does not start OCR. Requires a session; for large files, prefer HTTP. Returns 201. JSON up to 11,200,000 bytes; PDF up to 8 MiB; 20 documents, 80 MiB and 50 pages per company. An identical file is reused. The automatic reading happens only when you request the analysis.

  • awarded_pricesFree

    Awarded results for a similar item, as a free summary: how many results, the median and the range (p25/p75) of the same catalog product in the same unit, without the extremes; the volume bought; the value for your quantity; and the other groups that the search found (ask for the product and the unit of one of them to switch). It searches awarded results by item description. It also accepts POST, PUT or PATCH with the same parameters in JSON or a form; `query`, `termo`, `busca` and `search` count as `q`, `estado` as `uf`, and `limit` as `limite`. Every 400 has `exemplo` and `doc`.

  • claim_guest_trackingFree

    Brings into the session account what the guest edm_… created (the SDK claim): the Salvas, Alertas and Vigias that the account does not have yet, and the documents that the guest bought. Requires the bootstrap/CSRF of this browser; the page does it right after sign-in. It moves only what the guest still has, in one transaction; what collides with what the account already has stays with the guest. A repeat does no harm (it moves zero).

  • company_documentsFree

    Lists the private PDFs of the company. Binary downloads use the authenticated HTTP GET /documentos/:arquivo.

  • consulta_cadastroFree

    Name, status, activity and address of a Brazilian company by CNPJ. It does not count against the daily free limit, does not show contacts or partners and runs no extra checks. The origin's protection limit still applies. For sanctions, tax status and a live CNIA check, use consulta_cnpj.

  • consulta_cepFree

    Addresses at a CEP (Brazilian postal code) with coordinates (CNEFE/IBGE) and the companies registered there. Returns up to 20 addresses and up to 20 companies; the total number of addresses is in `pontos_total`. 10 free lookups per day per network; after that, the tool answers `free_limit` with `resets_at`.

  • consulta_cnpjFree

    Brazilian company record by CNPJ from the Federal Revenue (Receita Federal), with the special status when there is one (bankruptcy, judicial recovery, liquidation); its sanctions (CEIS, CNEP, CEPIM, leniency agreements, TCU and the CNJ's CNIA, checked live); partners on the politically exposed persons list (CGU); tax status (federal tax debt, installment agreements, tax incentives and construction works); the Federal Revenue chronic tax debtor list (`devedorContumaz.consta`: barred from public tenders); environmental and labor risk (forced-labor list, Ibama embargoes and fines); government contracts (PNCP, federal contracts since 2013 and sales to municipalities in the state of SP, from TCE-SP) and BNDES financing; registrations with regulators and official registries (CVM, Central Bank, ANS, ANTT, ANP, ANEEL, Anatel, Anvisa, CNES, Cadastur, Ibama, ANAC and SICAF); CVM investment funds; and the address on the map (CNEFE/IBGE). Accepts the numeric and the alphanumeric CNPJ. Personal data in the record comes masked. `sancoes` has what public registries record against the whole company (the CNPJ root), updated daily: useful to vet suppliers. 10 free lookups per day per network; after that, the tool answers `free_limit` with `resets_at`.

  • consulta_enderecoFree

    Addresses and companies at a CEP (Brazilian postal code), without counting against the daily free limit. Up to 20 addresses and 20 companies; `pontos_total` has the total number of addresses. The origin's protection limit still applies.

  • consulta_sugerirFree

    Suggests up to 8 Brazilian companies for a CNPJ, company name, partner, phone or e-mail, ordered by how well they match. It does not count against the daily free limit and does not show contacts. `incompleto` means one of the sources did not answer.

  • create_alertwrite actionFree

    An alert for new procurements by object terms and state (UF) (requires the token edm_…). Channel pull (read with list_alert_matches), webhook (a signed https POST with the whsec_… of the owner) or email (only with the account session: it goes to the verified e-mail of the account). Two modes. By `termos`: a space requires all words, `|` accepts any word of the group (`uniforme|fardamento escolar`). By `cnpj`: the company record gives the activities (CNAE), the dictionary (`GET /api/cnaes`) turns each CNAE into a family of terms, and there is one alert for each distinct family, main first, up to `max_familias`; a CNAE outside the dictionary does not become an alert and is listed in `empresa.cnaes` with `familia: null`. The cron checks every 30 minutes. The email channel requires the account session: the notice goes to the verified e-mail of the account, without a confirmation code, and it exists only with `EMAIL_ALERTAS=1`.

  • create_alerts_by_cnpjwrite actionFree

    Alerts for new procurements by the company CNPJ (requires the token edm_…): the activities (CNAE) become families of terms, and there is one alert per family, main first, up to max_familias. A CNAE outside the dictionary is listed in the response with a null family. Two modes. By `termos`: a space requires all words, `|` accepts any word of the group (`uniforme|fardamento escolar`). By `cnpj`: the company record gives the activities (CNAE), the dictionary (`GET /api/cnaes`) turns each CNAE into a family of terms, and there is one alert for each distinct family, main first, up to `max_familias`; a CNAE outside the dictionary does not become an alert and is listed in `empresa.cnaes` with `familia: null`. The cron checks every 30 minutes. The email channel requires the account session: the notice goes to the verified e-mail of the account, without a confirmation code, and it exists only with `EMAIL_ALERTAS=1`.

  • create_ownerwrite actionFree

    Creates the guest (token edm_…, issued by the account library) that opens alerts and watches, and the secret whsec_… that signs the webhooks. No sign-up. The token appears only once: keep it and send it in Authorization: Bearer in the alert and watch tools. The account library signs the token, with a limit per network and per hour, so the free allowance does not become infinite. The token has no recovery: sign in to the account and bring the lists into it (`POST /api/auth/claim`, which the account page does on sign-in) to stop depending on it. You can read `webhook_segredo` again in `GET /api/dono`. Each webhook POST carries `webhook-id`, `webhook-timestamp` (Unix seconds) and `webhook-signature: v1,<base64>`: HMAC-SHA256 of `id.timestamp.body` with the key of your `whsec_…` (the base64 after the prefix). This is the Standard Webhooks pattern: any of its libraries can check it; reject a timestamp outside 5 minutes. After `POST /api/dono/segredo`, the previous secret still signs for 24 h (two `v1,` parts in the header).

  • evaluation_basicFree

    Basic native or OCR text of a PDF of up to 50 pages / 32 MiB, without review or structured tables. Up to 100 documents per agent. It does not open premium. Allowance per credential, until the earlier date of the agent's 30 days and the end of the pilot. Repeating the same document does not use another unit. Premium: keep evaluation.access_code and use X-Editalmd-Avaliacao together with X-Agent-Pass in the reads and in GET /geracao. Basic does not open premium content. The pilot depends on the global budget; no automatic renewal.

  • evaluation_basic_resultFree

    Follows the basic reading after retry_after_s and returns the text per page with the hash of the source. Allowance per credential, until the earlier date of the agent's 30 days and the end of the pilot. Repeating the same document does not use another unit. Premium: keep evaluation.access_code and use X-Editalmd-Avaliacao together with X-Agent-Pass in the reads and in GET /geracao. Basic does not open premium content. The pilot depends on the global budget; no automatic renewal.

  • evaluation_premiumFree

    Uses your only sponsored premium on a document of up to 50 pages. Keep evaluation.access_code as avaliacao_codigo and follow it with generation_status and agent_pass. A repeat returns the same access. Allowance per credential, until the earlier date of the agent's 30 days and the end of the pilot. Repeating the same document does not use another unit. Premium: keep evaluation.access_code and use X-Editalmd-Avaliacao together with X-Agent-Pass in the reads and in GET /geracao. Basic does not open premium content. The pilot depends on the global budget; no automatic renewal.

  • evaluation_quotaFree

    Individual allowance: one premium and 100 basic documents, with an expiry date.

  • framework_agreementsFree

    The valid framework agreements (`ata de registro de preços`) on PNCP for the object, most relevant first: the managing agency, the validity, whether the agreement accepts joining (carona) and the link to the agreement. Free. Only the agreements that are not canceled and are valid today or later. `adesao=1` returns only the ones that accept joining. The procurement record (`/api/compra/:id`) has the agreements that it generated. `Accept: text/html` opens the Atas vigentes tab with the terms.

  • generation_statusFree

    Follows the real phases and the completion, free, without starting processing.

  • get_deadlinesFree

    The deadlines of the procurement: the published end of proposals and the last day to challenge the tender (estimate: 3 business days before the session, Law 14.133 art. 164, national holidays). Free. Served from the edge cache for up to 6 hours: the record rarely changes. `Cache-Control: no-cache` in the request reads the origin now. The `x-origem-cache` header says `hit`, `miss` or `bypass`.

  • get_documentFree

    A free lookup of the title, type, pages and the procurement linked to a document. Use `get_procurement` to list the related documents. It does not open content or start OCR.

  • get_document_dossierFree

    Items, requirements, attestations, deadlines and obligations, with conditions, exceptions and excerpts/pages. It uses the same acesso_codigo as the reading. It does not start AI. The dossier is included in the document access, with no new analysis when you read it. Partial data tells the coverage; an export requires a finished version.

  • get_ownerFree

    The owner state (requires the token edm_… or the account session): account or guest, the notice e-mail, the allowance and the secret whsec_… that signs each webhook (Standard Webhooks: webhook-id, webhook-timestamp, webhook-signature). Each webhook POST carries `webhook-id`, `webhook-timestamp` (Unix seconds) and `webhook-signature: v1,<base64>`: HMAC-SHA256 of `id.timestamp.body` with the key of your `whsec_…` (the base64 after the prefix). This is the Standard Webhooks pattern: any of its libraries can check it; reject a timestamp outside 5 minutes. After `POST /api/dono/segredo`, the previous secret still signs for 24 h (two `v1,` parts in the header).

  • get_participationFree

    Reads the state, the pending items and the met items, with reasons, actions and evidence. It never starts an analysis. Pending items group precisa_comprovar (proof missing), divergente (incompatible evidence) and acompanhar (future obligation). A different company record, attachments or dossier return outdated without current results. The reference date stays when the analysis resumes; a previous day returns data_atual=false. Validated batches stay available during failures or processing, with parcial=true and processados/total; they never mean that the requirements not yet compared are done. GET does not run the queue and does not start AI.

  • get_procurementFree

    The procurement record and its documents in the collection (up to 50), with titles, types, pages and availability. Free. Served from the edge cache for up to 6 hours: the record rarely changes. `Cache-Control: no-cache` in the request reads the origin now. The `x-origem-cache` header says `hit`, `miss` or `bypass`.

  • get_qualificationFree

    The qualification list of the tender, with literal excerpts: conditions, exceptions and evidence by page of the available analysis. The lookup does not start another analysis. Deadlines, proposals and the other obligations are in the dossier; this list covers qualification and the required attestations, and does not state what the company has.

  • get_reading_manifestFree

    The document manifest: pages, images, SHA-256 and version. Send acesso_codigo; the examples are free. It does not start OCR. The same authorization opens the ZIP and the images through the API. Only ready resources. `document_approved: false` marks the automatic extraction and does not block reading.

  • get_tender_markdownFree

    Reads the Markdown with the acesso_codigo of the document, or with avaliacao_codigo and agent_pass of the sponsored premium. Five examples are free.

  • healthFree

    Health of the origin and size of the collection (procurements and documents with text).

  • list_alert_matchesFree

    The procurements that already matched an alert (pull channel), with deadlines and delivery status. Requires the token edm_….

  • list_cnaesFree

    Search term suggestions by economic activity (CNAE), with the description, the family and coverage indicators. Free. Without `q`, it lists the activities with the most registered suppliers. With `q`, it searches by code prefix (`1412`, `1412-6/01`) or by a word of the description. A null `familia` or `termos` means that the CNAE is not in the dictionary yet: an alert by CNPJ does not use it.

  • list_document_filesFree

    The catalog of the original files of the document, with download links and pages. Use /api/documento/{id}/original to download the full original.

  • list_examplesFree

    Lists five real free proofs to check the Markdown, the original PDF and the ZIP with images before you generate another document.

  • list_my_companiesFree

    The companies are the account organizations with EditalMD; use the session or the organization key.

  • list_savedFree

    Lists up to 200 tenders saved by the owner, free.

  • list_watch_eventsFree

    The events of a watched procurement (what changed, from what to what, and when) and the current snapshot. Requires the token edm_….

  • my_accountFree

    The identity and the private counters of the account session (cookie) sent in the MCP request. The global account is already the person in EditalMD: there is no activation per product.

  • my_documentsFree

    The private collection of the account. Requires the account session (cookie and the browser CSRF).

  • my_procurementsFree

    The private collection of the account. Requires the account session (cookie and the browser CSRF).

  • open_tenders_in_fieldFree

    The tenders with an open proposal period published in the last 7 days, in the state (UF) and in the CNAEs of the companies that supply the same as this procurement, highest value first, and the alert body that delivers them (for `create_alert`). Useful when the procurement you looked up is already closed. Free. Without a CNAE, it uses the terms of the object. It is the same read as the alert preview (`POST /api/alertas/previa`), and `alerta` has the body that creates this alert in `POST /api/alertas` (add the `canal`). The result is per field and state and is kept for 30 minutes; when the service is busy or the origin is down, `estado` says so and `itens` is empty.

  • original_statusFree

    Reads the status of the original, free. It does not ask for a download or a generation. It returns only the file status: it does not deliver content, grant access, confirm pages or start a generation. No query. The response is no-store.

  • preview_alertFree

    A free sample of procurements by terms and filters, or editable suggestions by CNPJ. It does not create alerts.

  • procurement_plansFree

    What agencies plan to procure (annual procurement plans, PCA, on PNCP), before the tender opens: item, agency, quantity, estimated value and desired date. Free. Only the current version of each plan; without `ano`, from the current year on. To know when the tender opens, create an alert with the same terms (`/api/alertas`). `Accept: text/html` opens the Planos de compras tab with the terms.

  • remove_companywrite actionFree

    Removes the company from the list (owner or admin); the organization and the PDFs stay, and adding the CNPJ again brings it back.

  • remove_company_documentwrite actionFree

    Removes a proof from your own company; the analyses that used it become out of date.

  • remove_savedwrite actionFree

    Removes the procurement from the personal list of the owner. Saving does not create a watch or a notification. The client sends only the ID; the snapshot comes from the collection.

  • request_originalFree

    When the person wants the document, downloads the pending original from PNCP now. Free and idempotent. It does not start OCR. Use it when the person opens the document. The body is empty or {} (two bytes at most). A free collector downloads the original at once and the status becomes downloading; without a free collector, the request goes first into the queue.

  • rotate_webhook_secretFree

    Changes the secret that signs the webhooks (requires the token edm_…). The previous secret still signs for 24 h, so you can change it without a failure window. During the 24 h, the `webhook-signature` header has two `v1,…` parts: one with the new secret and one with the previous. The receiver only needs to accept any part that matches.

  • save_procurementFree

    Saves the procurement, up to 200 per owner. Saving does not create a watch or a notification. The client sends only the ID; the snapshot comes from the collection.

  • search_companiesFree

    Searches the company registry by CNPJ or company name; requires an account or a guest.

  • search_tendersFree

    Searches public procurements by term. Free. Returns the object, the agency, the state (UF), the modality and the procurement id.

  • select_companyFree

    Selects a registered company; it does not run an analysis. Each person's choice is kept in the account. Repeating the current choice writes nothing.

  • update_alertwrite actionFree

    Edits the interest, or pauses or turns on again an alert of the owner. The filters replace the whole filter.

  • watch_procurementFree

    Watches a procurement (requires the token edm_…): takes a snapshot now and records the events of correction, new document, suspension, postponed deadline and value, plus deadline notices. The checks are periodic; check the date of the last check in the watch. The notices `prazo_impugnacao` (on the day) and `prazo_proposta` (24 h before) go out once each.

  • who_suppliesFree

    The CNAEs (activity codes) that usually win procurements like this one, most likely first, with the official description and, per CNAE, how many items and how much of the estimated value pointed to it. Free. Each item of the procurement (up to 99, the ones of highest value) points to the 3 most likely CNAEs, by a classifier trained on the activity of the companies that won similar items in the awarded PNCP results; the procurement adds the points (3, 2 and 1 by position). Without items in the collection, the object of the procurement counts, and the top 5 come without `itens` or `valor_estimado`. In the measurement of 27/09/2026, for 87% of the items one of the first 3 was a CNAE of the company that won. To receive the new procurements of these CNAEs, create an alert (`POST /api/alertas`).

Public scan report

scanner v0.1.10 · 2026-10-16 · same rubric, same numbers if you re-run it

1 high
  • –Code scanremote-only server, no package to scann/a
  • Live reliabilityremote reachable in 1782ms20/20
  • Tool poisoning58 tool descriptions checked15/15
  • Auth qualityopen endpoint exposes 8 write-action tools with no auth3/15
  • Maintenancelast push 2 days ago15/15
  • Maintainer identityendpoint served from the registry-verified namespace domain8/10

Findings (1)

  • highWrite-action tools reachable without authenticationauth.open-write
Overall 81/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Editalmd compares

Against every graded Web search MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
81/100
higher than 67% of 3,471 Web search servers
Tools
58
the typical Web search server has 5
Tools that change things
14%
typical: 0%. Fewer write tools means less an agent can break
Uptime
100%
of our recent checks; the typical remote Web search server answers 100%
Response time
1,353 ms
faster than 5% of 2,238 Web search servers

What its tools let an agent do: 43 read · 6 create · 2 change · 3 delete · 4 run or deploy

Release history: 2 versions in the registry since 2026-09-05, latest 2026-10-15, typically one every 40 days.

Install Editalmd in Claude Code, Cursor or VS Code

claude mcp add --transport http editalmd https://editalmd.com/mcp
Add to Cursor

What the publisher says

From the Editalmd repository's README, as published. We do not edit it. Read it on GitHub

EditalMD — skill and MCP server for AI agents

EditalMD lets an AI agent work with Brazilian public procurement. The agent searches the tenders of the national procurement portal (PNCP) by product, service and state, reads the deadlines and the winning prices, and reads the tender document (edital) as Markdown with its qualification requirements and page evidence. It can also create alerts for new tenders and watch a purchase for changes. This repository packages the EditalMD skill and the connection to its remote MCP server for Claude Code, Codex, Cursor and other agents.

Site: https://editalmd.com · MCP server: https://editalmd.com/mcp?checkout=site · Prices: https://editalmd.com/pricing · API docs: https://editalmd.com/developers

What your agent can do

challenge the tender.

  • Search tenders by term and state, and keep only the ones with open proposals.
  • Read a purchase: object, agency, estimated value, documents, the proposal deadline and the estimated last day to

price-registration minutes (atas) and the annual purchase plans of the agencies.

  • See which activities (CNAE) usually win purchases like it, the winning prices of similar items, the valid

with its page.

  • Read a tender document as Markdown, with the qualification requirements, items, deadlines and obligations, each

suspension, new deadline or new value.

  • Create alerts for new tenders by terms, state or company CNPJ, and watch a purchase for a new document,

Try: "Find open tenders for school uniforms in São Paulo state and give me the deadlines." or "What do I need to prove to take part in this tender?"

Install

Claude Code, as a plugin with the skill and the MCP server:

/plugin marketplace add wrpbr/editalmd
/plugin install editalmd@editalmd

Any agent that reads Agent Skills (Claude Code, Codex, Cursor, OpenCode and others):

npx skills add wrpbr/editalmd

Only the MCP server (remote, Streamable HTTP, no key for search and records):

claude mcp add --transport http editalmd 'https://editalmd.com/mcp?checkout=site'   # Claude Code
codex mcp add editalmd --url 'https://editalmd.com/mcp?checkout=site'               # Codex
{ "mcpServers": { "editalmd": { "url": "https://editalmd.com/mcp?checkout=site" } } }

The JSON above goes in .cursor/mcp.json for Cursor and in the MCP settings of most other clients. In Claude.ai and Claude Desktop, open Settings → Connectors → Add custom connector and paste the server address.

Price

The search, the purchase record, the deadlines, the suppliers, the price summary, the minutes and the purchase plans are free and need no key. Five sample documents are free to read. The access to a tender document is paid per page, by each buyer, and includes the Markdown, the qualification list and the dossier. The first alert and the first watch are free. You buy plans and prepaid credit on the site. Card subscriptions renew monthly after explicit consent; Pix, USDC and balance purchases last 30 days without renewal. The plugin never pays: with checkout=site, the MCP server has no purchase tool and no payment argument. The agent shows the price and the link, and after your purchase it uses your credit token. The current prices are at https://editalmd.com/pricing.

What the plugin sends

The skill tells the agent to call the EditalMD API at editalmd.com. The MCP server also runs at editalmd.com. Your queries (search terms, states, purchase and document numbers, alert terms and the webhook address that you choose) go to editalmd.com over HTTPS. A credit token or an owner token goes only when you give one. The plugin runs no local program and reads no local file.

Data and limits

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Grade history

  • 2026-10-16restoreC → Bscore 81: Write-action tools reachable without authentication

Editalmd: common questions

Is Editalmd MCP server safe?
Mostly: it is graded B (81/100). Read the Editalmd safety report
How do I install Editalmd?
It runs remotely at editalmd.com. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
Does Editalmd need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is Editalmd maintained?
The last commit was 22 days ago (2026-10-15). The latest release is v1.0.1.
Is Editalmd up?
100% of our last 28 checks got an answer. We check remote servers about four times a day.
What can I use instead of Editalmd?
Servers from other publishers that do the same job: Arxiv MCP server, GitHits MCP server and searxNcrawl MCP server.
How does Editalmd compare with other Web search MCP servers?
safety score 81/100 (higher than 67% of 3,471 Web search servers); tools 58 (the typical Web search server has 5); tools that change things 14% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to Editalmd

Same job from other publishers: the closest match first, then the best rated.

  • Arxiv
    Search arXiv papers, download full text, semantic search, citation graphs, and alerts via MCP.
    A
  • GitHits
    Search public open-source code, documentation, metadata, vulnerabilities, changelogs, and examples.
    A
  • searxNcrawl
    Web search via SearXNG and/or You.com, plus clean Markdown crawling via Crawl4AI. Self-hosted.
    A
  • Ref Tools
    Token-efficient search for coding agents over public and private documentation.
    A
  • Markdown Vault MCP
    Generic markdown vault MCP with hybrid search
    B