AstraNL

com.astranlPublished by astranl.comOfficial publisherv1.37.19Updated Oct 27, 2026

Dutch construction facts with measured accuracy + NL coordination. Never holds third-party funds.

Overview

AI-generated overview

AstraNL gives an assistant Dutch construction data, counterparty checks, material and component grounding, and a signed verification log through a remote MCP…

What you can do
  • Look up Dutch construction facts: permits, tenders, lead times, laws, economy figures, emission zones, Natura 2000 sites and municipal build fees
  • Check a Dutch or EU counterparty against official sources and record the result in a signed public log others can verify
  • Ground materials, machine components and scientific citations in live market or register data, and search or fetch AstraNL records
  • Create and follow estimate cases, including uploading photos, plans and video, and re-checking material prices
  • Route a real-world task, create and track a physical task case, and retrieve machine-checkable evidence for it
When to use it
Useful when working on Dutch construction, procurement or renovation questions, when vetting a Dutch or EU supplier before paying or signing, or when a result needs to be verifiable later by a colleague or auditor.
Requirements
A remote streamable HTTP endpoint at astranl.com; no package, environment variable or header is declared. Some tools need an X-Agent-Key connection key, and estimate case tools need a case_id plus a case token that must be stored securely. Network access to AstraNL is required.
Before you install
Estimate case tools accept uploads of photos, plans and video (up to 250 MiB per video) that are sent to AstraNL; case tokens and the agent key are credentials to keep private. create_task coordinates a real-world executor and the client pays the executor directly. Several figures are model-based or provisional, and some tools are closed or unvalidated, so results should be checked before reliance.

Installation

In SourceWeft

  1. Open AstraNL in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.astranl%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "astranl": {
      "type": "http",
      "url": "https://astranl.com/mcp/streamable"
    }
  }
}

Tools

30

ask_astranl

Route a task to the right AstraNL tool

Turn a real-world task or question into a routing decision: whether AstraNL can help, which one tool to call, what to supply, what can and cannot be verified. No commitment, nothing created, no key. Also answers whether a physical task is feasible in the Netherlands.

Parametersquestionrequired

check_counterparty_nl

Check a Dutch or EU counterparty

Check a Dutch or EU counterparty against official sources before your own next step, such as onboarding a supplier, paying an invoice or signing an order. Give the KvK number, the company name and the EU VAT number as your document states them. Returns verdicts, not register data: whether the KvK number has an active registration, whether the name matches a registered name, whether the VAT number is valid in VIES and whether its VIES name matches the register, EU sanctions list candidates, whether an insolvency case is published under the KvK number in the Dutch insolvency register, open questions and a check_id. Read-only, no key, no cost. AstraNL does not search the Dutch register by name; look a number up at kvk.nl. When a colleague or auditor must verify it later, call record_counterparty_check with the check_id. It does not prove who may sign for the company, who owns a bank account, solvency or reliability.

Parameterscitypurposekvk_numbervat_numbercompany_name

record_counterparty_check

Record a counterparty check for later verification

Make a result of check_counterparty_nl verifiable by others: records its digest in the AstraNL signed public log and returns a reference that a colleague, approver or auditor can check later with verify_astranl, without trusting AstraNL. Works only for a check AstraNL produced in the last 48 hours. The public record holds no name, number or address of the checked party. Calling it again returns the same reference.

Parameterscheck_idrequired

create_task

Create a coordinated real-world task

Ask AstraNL to find and coordinate a verified executor for a physical task in the Netherlands. Returns an ingress receipt at once and a case once planning found a path; the client pays the executor directly; AstraNL holds no money.

Parametersneedrequiredproofdeadlinelocationsyntheticbudget_centsreply_channel

check_task

Check task state

Current state of a task or ingress receipt from create_task, and who must act next. Returns only what is recorded; infers nothing.

Parameterstask_idreceipt_idreceipt_key

get_evidence

Get verifiable evidence

Machine-checkable evidence for an AstraNL task, action or receipt: the signed log events that mention it, each verified live, with a proof block stating what is verified, what is not, validity, status, limitations and next actions.

Parameterstask_idrequired

verify_astranl

Verify an AstraNL reference

Verify any AstraNL reference without a key. Returns two separate layers: integrity (payload hash, Ed25519 signature, Merkle inclusion, recomputed live) and claim (what exactly is attested, by whom, from which source, when, under which method, with which validity limits and current status VALID/EXPIRED/REVOKED/UNKNOWN). Integrity never implies the claim is true for your purpose; you apply your own acceptance rules. Tells you when to re-verify and how to consume a VALID receipt for a next action. Read-only, deterministic, no model in the path.

Parametersrefrequired

ground_astranl

Source-linked context for an answer

Get compact, source-linked real-world context for an LLM in ONE read-only call. Searches AstraNL public materials or tender records, or its protocol identity. Use source=public_tenders for tenders, materials for products; auto keeps domains separate. Returns record update times, fresh/stale/unknown labels, record disagreements, coverage gaps and ready-to-use context_text. Never books, contacts or pays anyone. Not a general web search: no match is not proof of absence; a cached price is not a quote. Optional astranl.reality-link.v2 profile checks exact source-record claims. It does not promote registry records to independently verified real-world facts. official.deadline on tender:TED-* records is checked live at the EU publisher (TED), budgeted and cached; unavailable means UNKNOWN.

Parametersqueryrequiredclaimssourceprotocolbudget_msmax_itemsmax_age_seconds

ground_component

Ground a component in live market reality

Ground a machine, robot or industrial automation component in live market reality with ONE read-only call. Give a manufacturer part number and optionally the maker. AstraNL queries its verified distributor connections (Nexar/Octopart, Mouser, element14/Farnell NL, OEMsecrets) in parallel, keeps only offers whose part number matches exactly after normalisation, screens maker and sellers against the EU consolidated sanctions list and the US Consolidated Screening List, and returns availability, stock seen, authorized sellers, lowest unit price seen in EUR, lifecycle values and per-source status. When AstraNL holds the manufacturer own lifecycle or discontinuation page for the part, the answer also carries manufacturer_lifecycle: status, date, the successor the manufacturer names and the page SHA-256, kept separate from seller-reported values; asking for a successor also shows which discontinued part it replaces. Every fresh answer carries a SHA-256 digest sealed with the AstraNL moment seal and an AstraLock event id you can check later with verify_astranl. Limits: distributor data is seller-reported at the observed time, not a quote and not a delivery promise; NOT_FOUND_IN_CHECKED_SOURCES means only these sources; answers are cached for 24 hours. Never orders, contacts or pays anyone.

Parametersmpnrequiredmanufacturer

ground_citation

Check a scientific reference for retraction and correction notices

Check one scientific reference before you reuse or cite it, with ONE read-only call. Give a DOI. AstraNL reads the Crossref work record and every Crossref notice that updates it, the OpenAlex retraction flag and the Europe PMC publication types and retraction, erratum and concern links, and returns a status: RETRACTION_NOTICE_FOUND, EXPRESSION_OF_CONCERN_FOUND, CORRECTION_NOTICE_FOUND, NO_NOTICE_IN_CHECKED_SOURCES or NOT_FOUND_IN_CHECKED_SOURCES, with each notice DOI, type and date, the source URLs and the observation time. Every fresh answer carries a SHA-256 digest sealed with the AstraNL moment seal and an AstraLock event id you can check later with verify_astranl. Limits: registry data at the observed time, never a judgement of the science; NO_NOTICE_IN_CHECKED_SOURCES means only these three registries; answers are cached for 24 hours. Never contacts authors or publishers.

Parametersdoirequired

construction_summary

construction summary

One-call overview of Dutch construction facts: permit publications last 90 days (national), lead-time status, number of open public works tenders, latest CBS periods, construction laws taking effect in the next 365 days. Permit kind accuracy is measured, not assumed: manual validation gate B on a 200-row sample (2026-10-05) gave precision 0.98, Wilson 95% lower bound 0.94, 11% unclassified; the current figures come back in accuracy, and the unknown bucket (OVERIG, BESLUIT_ONBEKEND) is shown separately. Read-only aggregates: no permit rows, publication identifiers, titles, addresses, points or names; permit counts below 5 per authority per kind are shown as <5 and totals that would reveal one are lower bounds (>=n). Every answer carries source provenance (source, source_url, licence, as_of/retrieved_at, method, status) and an exposure block.

Takes no parameters.

construction_permits

construction permits

Official permit publications counted per issuing body (municipality, province, water board) and kind (application, granted, refused, ...) over the last N days (default 90, max 400). Permit kind accuracy is measured, not assumed: manual validation gate B on a 200-row sample (2026-10-05) gave precision 0.98, Wilson 95% lower bound 0.94, 11% unclassified; the current figures come back in accuracy, and the unknown bucket (OVERIG, BESLUIT_ONBEKEND) is shown separately. Read-only aggregates: no permit rows, publication identifiers, titles, addresses, points or names; permit counts below 5 per authority per kind are shown as <5 and totals that would reveal one are lower bounds (>=n). Every answer carries source provenance (source, source_url, licence, as_of/retrieved_at, method, status) and an exposure block.

Parametersdaysgemeentemax_municipalities

construction_leadtimes

construction leadtimes

Permit lead times (application to decision, median and quartiles) from official pairs. Currently CLOSED: the answer says CLOSED with the reason until validation gate C passes; no lead time is estimated before that. Read-only aggregates: no permit rows, publication identifiers, titles, addresses, points or names; permit counts below 5 per authority per kind are shown as <5 and totals that would reveal one are lower bounds (>=n). Every answer carries source provenance (source, source_url, licence, as_of/retrieved_at, method, status) and an exposure block.

Parametersgemeente

construction_tenders

construction tenders

Open Dutch public works tenders from TenderNed (announcements with a future closing date): buyer, CPV, procedure, published and closing date, days left, European flag, TenderNed id and link. Tender names are not returned; open the link for the full notice. Read-only aggregates: no permit rows, publication identifiers, titles, addresses, points or names; permit counts below 5 per authority per kind are shown as <5 and totals that would reveal one are lower bounds (>=n). Every answer carries source provenance (source, source_url, licence, as_of/retrieved_at, method, status) and an exposure block.

Takes no parameters.

construction_laws

construction laws

Construction law calendar: dated rules in force or planned (Omgevingswet, Wkb, EPBD IV, MPG, CPR, ...), each with its own official or sector source and last-verified date; rows whose planned date passed are flagged needs_reverify. Read-only aggregates: no permit rows, publication identifiers, titles, addresses, points or names; permit counts below 5 per authority per kind are shown as <5 and totals that would reveal one are lower bounds (>=n). Every answer carries source provenance (source, source_url, licence, as_of/retrieved_at, method, status) and an exposure block.

Parametersupcoming_days

construction_economy

construction economy

CBS construction economy: build cost input price index, construction bankruptcies, construction vacancy rate (latest stored period, CBS status Voorlopig/Definitief per row, freshness) plus CBS indicators (dwelling permits, establishments, labour). Provisional figures are revised by CBS. Read-only aggregates: no permit rows, publication identifiers, titles, addresses, points or names; permit counts below 5 per authority per kind are shown as <5 and totals that would reveal one are lower bounds (>=n). Every answer carries source provenance (source, source_url, licence, as_of/retrieved_at, method, status) and an exposure block.

Takes no parameters.

construction_zones

construction zones

Dutch zero-emission and low-emission zones from NDW as published: municipality, zone label, status, start, vehicle categories, transition rules, bbox centre; derived_ze_logistics is derived by AstraNL. Source recount (ids and hashes) is reported. Read-only aggregates: no permit rows, publication identifiers, titles, addresses, points or names; permit counts below 5 per authority per kind are shown as <5 and totals that would reveal one are lower bounds (>=n). Every answer carries source provenance (source, source_url, licence, as_of/retrieved_at, method, status) and an exposure block.

Parametersgemeente

construction_natura

construction natura

Natura 2000 sites in the Netherlands from RVO / PDOK: number, site label, protection type, status, site code, bounding box (lon/lat). Filter with site. Source recount is reported. Read-only aggregates: no permit rows, publication identifiers, titles, addresses, points or names; permit counts below 5 per authority per kind are shown as <5 and totals that would reveal one are lower bounds (>=n). Every answer carries source provenance (source, source_url, licence, as_of/retrieved_at, method, status) and an exposure block.

Parameterssite

construction_events

construction events

CloudEvents 1.0 feed of construction signals, oldest first after since_id: daily permit aggregate cells (with gate B accuracy), newly published works tenders (AAO), laws coming up. Continue with next_since_id. Read-only aggregates: no permit rows, publication identifiers, titles, addresses, points or names; permit counts below 5 per authority per kind are shown as <5 and totals that would reveal one are lower bounds (>=n). Every answer carries source provenance (source, source_url, licence, as_of/retrieved_at, method, status) and an exposure block.

Parameterstypelimitsince_id

nl_municipal_build_rules

Dutch municipal permit fee and skip rule for a building job

Dutch municipal rules for a renovation or building job, with ONE read-only call. Give a municipality, optionally the planned bouwkosten excluding VAT. Returns the 2026 omgevingsvergunning fee, leges, for the technical building activity as the municipality's own regulation sets it, and whether a skip or container on the public road needs a permit, a notification or nothing, with the permit fee and precario where confirmed. Every answer names the regulation, article and source URL, the read date and how it was verified. Coverage: all 342 municipalities for leges, 296 for containers. Limits: the municipality decides; spatial or other permit parts are not added; a fee is withheld when the tariff is not verified. Free, no auth, no side effects.

Parametersmunicipalityrequiredbouwkosten_eur

check_material

Check a building material in live store reality

Check one building material in live Dutch store reality with ONE read-only call. Exact identity only: a GTIN with valid check digit, a store variant or the exact partner feed link; plain words return candidates you can check exactly next. Returns every offer of the same trade item with price incl. VAT, stock and read time per store (Bouwmaat, Hubo, Houtdirect through UCP search; partner shop feeds), the identical GTIN at other stores (verdict DIRECT_SUBSTITUTE, the only substitute named), the cheapest available offer, per source status and a sha256 digest. Limits: seller prices at read time, not a quote or delivery promise; delivery costs not included; NOT_FOUND covers only the sources listed. Never orders, pays or contacts anyone.

Parametersrefrequired

check_estimate_materials

Check the materials of an estimate

Check every material line of an AstraNL estimate case you hold the token of (from estimate_case_create) against the current offer of the same product: PRICE_UP or PRICE_DOWN beyond 5 percent, UNAVAILABLE, NOT_FOUND_IN_CHECKED_SOURCES, CHEAPER_SAME_GTIN at another store, each with source and read time, plus the open findings of the daily monitor for that case. Read-only; an estimate is re-read live at most once in 6 hours.

Parameterstokenrequiredcase_idrequired

estimate_case_create

Create a real estimate case through the public router. Reuses the connection X-Agent-Key; requester_kind is agent. Save case_id and token securely. language selects human-client output, default nl. Duplicates do not return a token. Processing may be asynchronous.

Parameterstextrequiredlanguagepostcodehouse_numbercontact_emailrequester_kind

estimate_case_status

Read the exact public case-status JSON using case_id and its token. Human-client questions and documents retain their language. Deliver an estimate only when release_state is RELEASED; DONE alone is insufficient.

Parameterstokenrequiredcase_idrequired

estimate_case_answer

Submit human answers as a map from question ID to text. The public router validates, merges and queues an operator rerun; submission does not itself spawn processing. Requires the case token.

Parameterstokenrequiredanswersrequiredcase_idrequiredversion

estimate_case_files

Upload photos or plans as base64 contents, never local paths or URLs. Requires the case token. Public feature flag, type checks, sanitization and quotas apply: 10 files, 15 MiB each, 60 MiB per case. Upload acceptance does not prove incorporation into an existing estimate.

Parametersfilesrequiredtokenrequiredcase_idrequired

estimate_case_video

Video action=create takes one base64 file up to 250 MiB and reuses the connection agent key. action=status takes intake_id and its token only. After case creation, use case_id and case_token with estimate_case_status. Video and case tokens are distinct.

Parametersfiletexttokenactionrequiredlanguagepostcodeintake_idhouse_numbercontact_emailrequester_kindspeech_language

estimate_cost

Estimate task cost

Legacy model-based cost figure in EUR, with human-provider and robot-automation comparisons. AstraNL currently has zero recorded real price observations for this service. This tool does not create an estimate case and does not provide a reviewed quotation. For the real case engine use estimate_case_create, then estimate_case_status and estimate_case_answer; use estimate_case_files for photos/plans and estimate_case_video for video intake. Do not invent dimensions. Legacy arguments and response fields remain unchanged.

Parametersarea_m2categoryrequiredlocation

fetch

Fetch AstraNL record

Fetch the full record for a single result id returned by search (robot passport, category detail, or merchant SKU). id 'context' returns the AstraNL continuation packet: live state, open mandates and recent sessions, the same text as https://astranl.com/api/context.md. Read-only.

Parametersidrequired

Version history

58
  1. v1.37.19LatestOct 24, 2026
  2. v1.37.0Oct 6, 2026
  3. v1.35.207Oct 1, 2026
  4. v1.35.202Sep 30, 2026
  5. v1.35.201Sep 30, 2026
  6. v1.35.200Sep 29, 2026
  7. v1.35.199Sep 29, 2026
  8. v1.35.198Sep 29, 2026
  9. v1.35.197Sep 29, 2026
  10. v1.35.196Sep 28, 2026
  11. v1.35.195Sep 28, 2026
  12. v1.35.194Sep 28, 2026
  13. v1.35.192Sep 27, 2026
  14. v1.35.191Sep 27, 2026
  15. v1.35.190Sep 27, 2026
  16. v1.35.187Sep 27, 2026
  17. v1.35.186Sep 27, 2026
  18. v1.35.185Sep 26, 2026
  19. v1.35.184Sep 26, 2026
  20. v1.35.182Sep 26, 2026
  21. v1.35.181Sep 26, 2026
  22. v1.35.180Sep 25, 2026
  23. v1.35.177Sep 25, 2026
  24. v1.35.176Sep 25, 2026
  25. v1.35.175Sep 25, 2026
  26. v1.35.174Sep 24, 2026
  27. v1.35.173Sep 24, 2026
  28. v1.35.172Sep 24, 2026
  29. v1.35.171Sep 23, 2026
  30. v1.35.167Sep 23, 2026
  31. v1.35.165Sep 23, 2026
  32. v1.35.164Sep 23, 2026
  33. v1.35.163Sep 23, 2026
  34. v1.35.162Sep 22, 2026
  35. v1.35.160Sep 22, 2026
  36. v1.35.159Sep 22, 2026
  37. v1.35.158Sep 21, 2026
  38. v1.35.156Sep 21, 2026
  39. v1.35.150Sep 21, 2026
  40. v1.35.147Sep 21, 2026
  41. v1.35.142Sep 20, 2026
  42. v1.35.136Sep 20, 2026
  43. v1.35.130Sep 20, 2026
  44. v1.35.126Sep 20, 2026
  45. v1.35.125Sep 19, 2026
  46. v1.35.124Sep 19, 2026
  47. v1.35.123Sep 19, 2026
  48. v1.35.122Sep 19, 2026
  49. v1.35.121Sep 18, 2026
  50. v1.35.120Sep 18, 2026
  51. v1.35.119Sep 18, 2026
  52. v1.35.118Sep 18, 2026
  53. v1.35.117Sep 17, 2026
  54. v1.35.116Sep 17, 2026
  55. v1.35.115Sep 17, 2026
  56. v1.35.114Sep 17, 2026
  57. v1.35.113Sep 16, 2026
  58. v1.35.112Sep 16, 2026

Score

72% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts

    Publish an icon in the registry entry.

  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.

Other Astranl integrations