Technitium MCP
A tool that lets Claude inspect and modify a Technitium DNS Server through its API, with safety gates on changes.
Discover API endpoints by searching paths/titles or groups, and view their parameters and safety levels.
Call any Technitium API endpoint: reads run immediately; changes need
confirm=true; destructive actions need the exact endpoint path asconfirm_phrase.View dashboard stats for LastHour, LastDay, LastWeek, LastMonth, or LastYear.
Read all server settings and change specific settings safely.
Control ad blocking: turn on, turn off, or pause for a number of minutes.
Flush the whole DNS cache.
List DNS zones and list/add/delete DNS records (A, AAAA, CNAME, PTR, NS, TXT, MX, DNAME, ANAME).
Test DNS resolution for a name.
Work with one or several Technitium servers when configured, including read-only queries across all servers.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Technitium MCPshow my DNS query stats for the last 24 hours"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Technitium MCP
A small tool that lets Claude read and change a Technitium DNS Server through its API.
It runs on your own computer. Your token stays on your computer.
What Claude can do with it
Look at stats, settings, zones, logs, and users.
Turn ad blocking on, off, or pause it.
Flush the cache and refresh block lists.
Change settings and zones.
List, add and delete DNS records (technitium_records).
Test a lookup (technitium_resolve).
Work with several Technitium servers from one tool (see below).
Anything else in the Technitium API. 137 endpoints are in the catalog.
Related MCP server: MCP Cloudflare DNS Server
Safety
Every call has a safety level.
read: runs right away.
change: does not run until Claude asks you and sets
confirm.destructive: deleting, restoring, importing, password changes, disabling users, and changing ports or listeners. It also needs the exact endpoint path typed back.
Other protections:
Login and create-token calls are blocked. They would put a password in the chat.
The token is never printed. It is removed from error messages.
File downloads (backups, logs) are saved to a folder. They are not sent to chat. Default folder:
technitium-downloadsin your home folder.
Set up
1. Make an API token
Open the Technitium web page.
Go to the Administration part, then Sessions, then create an API token. Menu names can differ a little by version.
Best: make a separate user just for this, and make the token from that user. Then you can delete it on its own later.
Give the token a name, like
Claude.
Do not paste the token in a chat. Put it only in the config file below. If it ever lands in a chat, delete that token and make a new one.
2. Add the tool to Claude
Open the Claude desktop app settings and find the MCP servers config file.
Add the block from claude_desktop_config.example.json.
Change the address and token.
TECHNITIUM_URL: your server, likehttp://172.16.90.10:5380TECHNITIUM_TOKEN: your token
That file now holds a secret. Do not share it. Do not put it on GitHub.
The example uses uvx. If you do not have it, use Python instead:
pip install D:\GitHub-Projects\technitium-mcpThen use "command": "technitium-mcp" and no args.
Restart the Claude desktop app.
3. Try it
Ask Claude: "Show my Technitium stats for the last day."
Several servers in one tool
You can keep one server on its own entry (like ha-blue) and put a group of servers in a second entry. Both entries use the same code.
Example: a cluster with tech-master as the primary and two followers.
See claude_desktop_config.example.json for the full block.
TECHNITIUM_SERVERS: the names, separated by commas.TECHNITIUM_URL_<NAME>andTECHNITIUM_TOKEN_<NAME>: one pair per server.<NAME>is the name in capitals, with every other character turned into_.technitium-01becomesTECHNITIUM_URL_TECHNITIUM_01.TECHNITIUM_PRIMARY: the cluster primary. Changes on any other server get a warning that cluster-wide changes belong on the primary.Do not set plain
TECHNITIUM_URLorTECHNITIUM_TOKENin a group entry. They are ignored there, so one server's token can never go to another server.
How Claude uses it:
Every tool has a
serveroption. In a group, Claude must give a name.technitium_serverslists the names, addresses and the primary. No tokens.server: "all"works for read-only calls only. Good for comparing stats, settings or a lookup across all servers.Changes and deletes need exactly one server name. No "all".
Each server needs its own API token. A bad token breaks only that server.
If TECHNITIUM_SERVERS is not set, the tool works as before with one server.
Note: in technitium_resolve, the old server option (which DNS server to ask)
is now dns_server. server now means which Technitium server runs the lookup.
Other settings
TECHNITIUM_VERIFY_TLS=false: for an https address with a self-signed certificate.TECHNITIUM_TOKEN_IN_QUERY=true: for an old Technitium version that ignores the Bearer header. This puts the token in the URL, so avoid it if you can.TECHNITIUM_DOWNLOAD_DIR: where downloads are saved.TECHNITIUM_VERIFY_TLS_<NAME>: same as above, for one server in a group.
Test it
pip install mcp
python tests/test_server.py
python tests/test_multi.pyThe tests start fake Technitium servers and check every tool and every safety rule.
test_multi.py checks the several-server mode with three fake servers.
Limits
File uploads are not supported yet: zone import, settings restore, and app install from a file. Installing an app from a URL works.
Cluster options are in the catalog but not tested.
Tested against a fake server only. Not yet tested on a real one.
Credits
Endpoint list built from the official Technitium API docs. Technitium is made by Technitium. This project is not made by Technitium.
License
MIT. See LICENSE.
Available Tools
12 toolstechnitium_blockingA
Turn ad blocking off for some minutes, or turn it on or off for good.
minutes: pause blocking for this many minutes. enable: true or false to switch blocking for good. Ask the user first, then set confirm=true. server: which Technitium server, when this tool has several. One name only.
| Name | Required | Description | Default |
|---|---|---|---|
| enable | No | ||
| server | No | ||
| confirm | No | ||
| minutes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It correctly signals a mutation and discloses the important safety requirement that user confirmation must precede the call, plus that 'minutes' produces a temporary change. However, it never states what happens when both 'minutes' and 'enable' are supplied, whether the change is reversible, or how errors surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The primary behavior is front-loaded in the first sentence, and the remaining lines are terse per-parameter notes with no filler. The fragment style is efficient, though the parameter notes are not visually separated from the mode description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description covers all four parameters plus the confirmation gate. Still missing for a 4-parameter mutation tool with zero annotation coverage: whether 'minutes' requires 'enable=true', what happens on conflicting inputs, and the expected format for 'server'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema titles are bare ('Enable', 'Server', 'Minutes', 'Confirm'), so the description's per-parameter glosses are genuinely additive. It explains what each argument means and constrains 'server' to one name. It leaves the interaction between 'minutes' and 'enable' unexplained, which prevents a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific verb and resource ('Turn ad blocking off... or turn it on or off for good'), so the agent immediately knows this controls Technitium blocking state. It does not differentiate itself from siblings such as technitium_settings_set or technitium_call, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real guidance: use 'minutes' to pause, 'enable' for a permanent switch, and an explicit workflow rule ('Ask the user first, then set confirm=true'). It also scopes the 'server' parameter to multi-server setups. No named alternatives or exclusions are offered, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_callA
Call any Technitium API endpoint, for example /api/dashboard/stats/get.
Reads run at once. Anything that changes things is NOT run until you set confirm=true, and you must first tell the user what will change and get a clear yes. Risky calls (deleting, restoring, importing, changing ports or listeners, disabling users, password changes) also need confirm_phrase set to the exact endpoint path. Never guess parameters: use technitium_endpoint_help. The token is added automatically. Do not pass a token or a password unless the user asked for a password change. server: which Technitium server, when this tool has several (see technitium_servers). Use "all" for read-only calls.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| server | No | ||
| confirm | No | ||
| endpoint | Yes | ||
| max_chars | No | ||
| confirm_phrase | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so well: it discloses the read-immediate vs write-gated execution model, enumerates the risky operation classes (delete, restore, import, port/listener changes, user disabling, password changes), and states that the auth token is injected automatically. It also warns against passing a token/password unnecessarily, which is exactly the kind of auth context annotations would otherwise supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the safety gate, and every sentence carries operational meaning. The trailing 'server:' fragment is slightly dangling and the line breaks fragment related ideas, but there is little outright waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description covers the safety model, auth handling, parameter lookup workflow, and multi-server routing. The only real hole is max_chars and the resulting response-size behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it explains endpoint (via the help tool), server (which server, 'all' for read-only), confirm, and confirm_phrase with their semantics. max_chars is never mentioned, so truncation behavior for large responses remains opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Call any Technitium API endpoint') and gives a concrete example path, so the agent knows exactly what this does. It does not, however, differentiate itself from the eleven specialized siblings — nothing says this is the generic fallback to prefer only when no dedicated tool exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Rich conditional guidance: reads execute immediately, mutations require confirm=true plus a user yes, risky operations additionally require confirm_phrase equal to the endpoint path, and unknown parameters must be resolved via technitium_endpoint_help. Missing only an explicit 'use the specialized tools instead of this one when available' exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_endpoint_helpB
Show every parameter for one endpoint, for example /api/settings/set.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden, but this is a low-risk read-only introspection tool whose behavior is largely implied by 'Show'. It does disclose what is returned (the parameter set for one endpoint), yet says nothing about error behavior for an unknown path or whether any prerequisites/auth apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the purpose front-loaded and an inline example that earns its place. Nothing is wasted, though it is minimal to the point of leaving useful routing context unsaid.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is legitimately omitted, and the one parameter is simple. However, for a discovery tool sitting alongside technitium_endpoints and technitium_call, the description omits the routing context that would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0% (the single 'path' parameter has no description), so the description must compensate. It does add real meaning by clarifying that 'path' is an endpoint API path and showing the expected format ('/api/settings/set'), but it stops short of stating whether a full URL, leading slash, or query string is accepted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Show every parameter for one endpoint') plus a concrete example path, so the agent knows it is a per-endpoint introspection tool. It does not explicitly distinguish itself from the sibling technitium_endpoints (which presumably enumerates endpoints), so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use statement, no mention of the obvious workflow (inspect with this tool, then invoke via technitium_call), and no comparison against technitium_endpoints. The example path hints at usage but no condition or alternative is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_endpointsA
Find Technitium API endpoints and see their parameters and safety level.
query: words to look for in the path or title (for example "blocking" or "zone"). group: part of a group name (for example "Settings" or "DHCP"). Safety level: read runs at once. change and destructive need the user's yes.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | ||
| query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose the meaningful safety-tier semantics ('read runs at once; change and destructive need the user's yes'), which is real behavioral context. It stops short of stating that this tool itself is a safe read-only lookup and says nothing about result size or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first line, followed by tight per-parameter and safety notes with no filler. Every line earns its place, though the one-line-per-clause layout is slightly terse rather than fully integrated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two optional string parameters, an existing output schema (so return values need no explanation), and no annotations to reconcile, the description covers what an agent needs to invoke it. It is missing only explicit sibling routing, which is secondary for a simple discovery tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it does: both parameters are explained with what they match (path/title for query, group name for group) plus concrete examples. The only gap is that matching semantics (substring vs exact) and default/empty behavior are left implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Find Technitium API endpoints') and states the visible output (parameters and safety level), so the intent is unmistakable. It does not, however, explicitly distinguish this discovery tool from siblings like technitium_endpoint_help or technitium_call, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this is a search/lookup step done before invoking an endpoint, but there is no explicit when-to-use or routing to the alternatives (technitium_endpoint_help vs technitium_call). The examples for query/group help the invocation but not the selection decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_flush_cacheA
Clear the whole DNS cache. Ask the user first, then set confirm=true.
server: which Technitium server, when this tool has several. One name only.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden. It does surface two important traits — the operation wipes the entire cache and human confirmation is required — but omits permission/auth requirements, reversibility/impact on in-flight resolution, and any server-side side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded with the action, followed by the confirmation requirement and the parameter note. The trailing 'server:' fragment is slightly terse/awkward but still earns its place by documenting a 0%-coverage parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, single-action tool with an output schema available, the description covers the destructive scope, the confirmation workflow, and both parameters. The missing piece is any note about permissions or impact severity, which would matter for an unannotated destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it does document both parameters: 'server' is the one-name selector when multiple servers exist, and 'confirm' must be true after user approval. It does not clarify the expected server name format or where to obtain valid names, so it stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource ('Clear the whole DNS cache') and even scopes it ('whole'), which unambiguously separates it from siblings like technitium_resolve or technitium_stats. No sibling could be confused with it from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a procedural precondition ('Ask the user first, then set confirm=true') but says nothing about when this tool should be chosen over alternatives such as resolve or per-record operations, nor when not to flush. Usage is implied rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_recordsA
List, add or delete DNS records in a zone.
action: list, add or delete. zone: the zone name, for example mogie.io. name: the full record name, for example ha.mogie.io. Leave empty for the zone itself. type: A, AAAA, CNAME, PTR, NS, TXT, MX, DNAME or ANAME. value: the address or target (for MX, the mail server). ttl: seconds (add only). preference: MX only. list runs at once. add needs confirm=true after the user says yes. delete needs confirm=true and confirm_phrase "/api/zones/records/delete". To change a record, delete the old one and add the new one. server: which Technitium server, when this tool has several. list accepts "all". add and delete need one name. Zones belong on the cluster primary.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | ||
| name | No | ||
| type | No | A | |
| zone | Yes | ||
| value | No | ||
| action | Yes | ||
| server | No | ||
| confirm | No | ||
| preference | No | ||
| confirm_phrase | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the safety burden and does so well: it discloses the confirmation requirement for add/delete, the exact delete confirmation phrase, the fact that deletion is the only way to change a record, and server constraints. It does not discuss permissions, reversibility, or error behavior, which keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded by action and then parameter-like guidance, with no wasted sentences. The telegraphic line-per-field style is efficient for a 10-parameter tool, though slightly fragmented compared with a more cohesive prose description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are not required, and the description covers the multi-action workflow, mutation safety, and parameter meanings. It is complete enough for an agent to invoke correctly, though it could say more about what happens on partial failures or how list results are shaped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for 10 parameters, and it does: action, zone, name, type, value, ttl, preference, server, confirm, and confirm_phrase all receive useful meaning beyond the schema. Examples and constraints such as MX preference and empty-name zone behavior are included.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb set and resource: 'List, add or delete DNS records in a zone.' The action vocabulary is enumerated immediately, and the tool is clearly distinguishable from siblings like technitium_zones or technitium_resolve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear per-action guidance: list runs at once, add requires confirm after user approval, delete requires confirm and a specific confirm_phrase. It also explains that changes require delete-then-add and that server selection is constrained for add/delete. It does not explicitly route against sibling tools, but the action-level guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_resolveA
Look up a name to test DNS, for example ha.mogie.io.
dns_server: this-server (default) asks that Technitium itself. Or give another DNS server address. It only reads. A cached answer can be returned. server: which Technitium server runs the lookup, when this tool has several. "all" runs it on every server, which is a good way to compare answers.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | No | A | |
| server | No | ||
| dns_server | No | this-server |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the burden and does disclose two real behavioral traits: "It only reads" (safe, non-mutating) and "A cached answer can be returned" (stale results possible). It omits permissions/auth requirements and error behavior, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded, which is good, but the parameter notes are written as a fragmented list with hard line breaks that read more like field annotations than a coherent description. Some phrasing is redundant ("asks that Technitium itself").
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described. For a 4-parameter tool it covers two parameters well, leaves 'type' unexplained, and gives no guidance on query syntax or expected latency/caching implications beyond one line.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains dns_server (default this-server vs. alternate address) and server (single vs. "all") in reasonable depth, but the 'type' parameter (record type, default A) is never mentioned or explained anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Look up a name to test DNS" states a specific verb and resource, and the example domain makes the intent concrete. It does not, however, explicitly distinguish itself from siblings like technitium_call, which could also issue DNS queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives scenario guidance for the server parameter ("all runs it on every server, which is a good way to compare answers"), which is genuinely useful context. But it never says when to prefer this tool over a sibling, nor any when-not condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_serversA
List the Technitium servers this tool can reach, and which is the cluster primary.
Shows names and addresses only. Never shows tokens.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden. It does disclose two useful traits beyond the schema: the output is limited to names and addresses, and tokens are never exposed. However, it says nothing about ordering, error behavior when a server is unreachable, or any permission requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with what is listed, followed by the output-content constraint. Every sentence earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and a zero-parameter read tool has little surface left to document. The remaining gap is usage context, which the description does not supply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter semantics to clarify and the description correctly does not invent any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the Technitium servers this tool can reach") plus an additional attribute it surfaces (which is the cluster primary), which is more than a restatement of the name. It does not explicitly contrast itself with the nearest-looking sibling (technitium_endpoints), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use statement, no when-not-to-use, and no named alternative among the eleven siblings. An agent can infer that this is a discovery call, but nothing in the text confirms or excludes any scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_settings_getA
Read all server settings.
server: which Technitium server, when this tool has several. "all" works.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Read all server settings' correctly signals a non-mutating, unfiltered read, which is the key behavioral fact. It says nothing about auth requirements, whether values are redacted, or rate/latency characteristics, so gaps remain for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action is front-loaded in the first line, with the parameter note kept short. The trailing whitespace and bare 'server:' label are slightly sloppy but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the single parameter is documented. For a low-risk read of one parameter this is close to complete; only the absence of any when-to-use guidance keeps it from being fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% — the only property is an untitled 'server' string defaulting to empty. The description compensates by explaining what the parameter means (which Technitium server, for multi-server setups) and giving the accepted sentinel value 'all'. This is genuinely additive over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read all server settings.' The 'all' scope is clear and distinguishes it from a filtered read. However it does not name its obvious sibling technitium_settings_set, so the get/set pairing is left for the agent to infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent infers 'use this to inspect settings, use settings_set to change them.' There is no explicit when-to-use statement, no prerequisites, and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_settings_setA
Change server settings. Send only the settings that should change.
Example: {"enableBlocking": true}. Check names with technitium_endpoint_help on /api/settings/set. Read the settings first and tell the user what will change. Needs confirm=true after the user says yes. Port, listener, DNS over HTTPS/TLS, recursion and forwarder changes need confirm_phrase "/api/settings/set". server: which Technitium server, when this tool has several. One name only. Cluster-wide settings belong on the cluster primary.
| Name | Required | Description | Default |
|---|---|---|---|
| server | No | ||
| confirm | No | ||
| settings | Yes | ||
| confirm_phrase | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses the two-tier confirmation gate (confirm=true vs. confirm_phrase="/api/settings/set") and the classes of settings that trigger the stronger gate. It does not discuss reversibility or failure modes, but the confirm mechanics are the risky behavior worth surfacing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core instruction, then prerequisites and per-parameter notes. The line-per-topic structure is readable and most sentences earn their place; the example inline JSON is slightly awkward but useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. For a mutation tool with an arbitrary-key nested settings object and a two-tier confirmation flow, the description covers the parts that matter. What's missing is a note on what happens to settings omitted from the payload or on partial-application semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry all four parameters, and it does: 'settings' (partial, example given), 'server' (single name, cluster-wide goes to the primary), 'confirm' (after user approval), and 'confirm_phrase' (exact value for sensitive changes). It also routes the agent to endpoint_help for valid setting keys, which the open-ended schema cannot provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Change server settings') and adds the key scoping rule ('Send only the settings that should change'), which distinguishes a partial update from a full overwrite. It implies but never names technitium_settings_get as the read counterpart, so sibling differentiation is left partly to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit prerequisites and sequencing: read current settings first, tell the user what will change, then confirm=true only after the user agrees. It also names technitium_endpoint_help as the way to discover valid setting names, and flags which specific settings require the stronger confirm_phrase. Nothing important is left for the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_statsA
Dashboard numbers: queries, blocked, cached, top charts.
period: LastHour, LastDay, LastWeek, LastMonth, LastYear. server: which Technitium server, when this tool has several. "all" works.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | LastDay | |
| server | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Dashboard numbers' implies a read-only aggregation, and the note that server 'all' works is a useful operational detail, but there is no explicit statement of read-only status, return format, or pagination for a tool that produces 'top charts'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely terse and front-loaded, with the resource described in the first clause and parameter guidance following. The telegraphic 'period:'/'server:' style is efficient, though slightly clipped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. For a simple two-parameter, zero-required read tool, documenting both parameters plus the described output categories is nearly sufficient; only explicit usage routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it documents both parameters, enumerating the five period values and clarifying that server accepts 'all' when multiple servers exist. Only minor gaps remain, such as the LastDay default being left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (DNS stats) and enumerates the concrete outputs: queries, blocked, cached, top charts. This clearly separates it from siblings like technitium_blocking or technitium_flush_cache, though it does not explicitly name any alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It lists the valid period values and explains the server parameter, which guides invocation. However, it never says when to reach for this tool over technitium_zones, technitium_resolve, or other siblings, so the usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_zonesA
List DNS zones. Give a zone name to list its records instead.
server: which Technitium server, when this tool has several. "all" works.
| Name | Required | Description | Default |
|---|---|---|---|
| zone | No | ||
| server | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. 'List' implies a read-only operation and the server note explains the special 'all' value, but there is no disclosure of auth requirements, result scope, or pagination behavior for a server-spanning query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, with the primary purpose stated first and the mode switch immediately after. The trailing server note is slightly awkward in phrasing but earns its place by documenting the multi-server case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary. The description covers both operating modes and multi-server selection, which is adequate for a two-parameter list tool; only finer detail like pagination or auth is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate; it explains the server parameter ('all' works) and the effect of supplying zone, but the zone parameter's exact semantics (default empty = list zones) are only implied rather than stated explicitly, and no format guidance is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List DNS zones') and distinguishes its dual-mode behavior by explaining that supplying a zone name switches to listing records. It does not explicitly name the sibling technitium_records, but the alternate resource is clear enough for disambiguation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete mode-selection guidance: call with no zone to list zones, or pass a zone name to list its records instead. It stops short of naming the dedicated sibling tool (technitium_records) as the alternative, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.1.1- Changed
technitium_blocking1 field changed- added
Input schema / properties / serverAdded value: +{ + "default": "", + "title": "Server", + "type": "string" +}
- Changed
technitium_call1 field changed- added
Input schema / properties / serverAdded value: +{ + "default": "", + "title": "Server", + "type": "string" +}
- Changed
technitium_flush_cache1 field changed- added
Input schema / properties / serverAdded value: +{ + "default": "", + "title": "Server", + "type": "string" +}
- Changed
technitium_records1 field changed- added
Input schema / properties / serverAdded value: +{ + "default": "", + "title": "Server", + "type": "string" +}
- Changed
technitium_resolve2 fields changed- added
Input schema / properties / dns_serverAdded value: +{ + "default": "this-server", + "title": "Dns Server", + "type": "string" +} - changed
Input schema / properties / server / defaultPrevious value: -"this-server"New value: +""
- Added
technitium_servers - Changed
technitium_settings_get1 field changed- added
Input schema / properties / serverAdded value: +{ + "default": "", + "title": "Server", + "type": "string" +}
- Changed
technitium_settings_set1 field changed- added
Input schema / properties / serverAdded value: +{ + "default": "", + "title": "Server", + "type": "string" +}
- Changed
technitium_stats1 field changed- added
Input schema / properties / serverAdded value: +{ + "default": "", + "title": "Server", + "type": "string" +}
- Changed
technitium_zones1 field changed- added
Input schema / properties / serverAdded value: +{ + "default": "", + "title": "Server", + "type": "string" +}
11 tool updates
v0.1.0- First observed
technitium_blocking - First observed
technitium_call - First observed
technitium_endpoint_help - First observed
technitium_endpoints - First observed
technitium_flush_cache - First observed
technitium_records - First observed
technitium_resolve - First observed
technitium_settings_get - First observed
technitium_settings_set - First observed
technitium_stats - First observed
technitium_zones
TDQS
Scored across 12 tools
The generic technitium_call can invoke any endpoint, so it functionally overlaps with technitium_stats, technitium_settings_get/set, technitium_blocking, technitium_flush_cache, technitium_zones, and technitium_records, leaving the agent to guess whether to use the specific wrapper or the generic call. The two discovery tools (technitium_endpoints and technitium_endpoint_help) are close cousins but distinguishable as search vs. detail. The dedicated wrappers themselves are otherwise clearly scoped by resource and action.
All names share the technitium_ prefix and snake_case, which is very predictable. The suffixes mix noun-style (technitium_stats, technitium_zones, technitium_records) with verb-style (technitium_flush_cache, technitium_resolve) and a _get/_set pair, but each name is still immediately readable and no convention is violated.
Twelve tools is a good fit for a DNS server admin surface, covering the common operations plus discovery and a generic escape hatch. The call/endpoint_help/endpoints trio adds some redundancy on top of the specific wrappers, but nothing feels bloated or thin enough to hurt.
Core lifecycle is well covered: server listing, stats, settings read/write, blocking toggle, cache flush, zone listing, record list/add/delete (with a documented delete+add workaround for edits), and resolution testing. Zone create/delete and areas like query logs or DHCP are not dedicated tools but remain reachable through technitium_call, so there are no hard dead ends.
Maintenance
Related MCP Connectors
Manage Koru Shield DNS filtering: profiles, rules, categories, schedules, and logs.
Manage hosts, redirects, SSL, and traffic analytics from Claude and other AI assistants.
Look up DNS information for any domain to troubleshoot issues and gather insights. Get fast, relia…
Scan, fix, verify and monitor DNS: SPF, DMARC, DKIM, propagation, health, expiry. Validated fixes.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Cloudflare DNS records, including listing zones and records, and creating, updating, or deleting DNS records.23 npmMIT
- AlicenseAqualityBmaintenanceEnables AI agents to manage Cloudflare DNS records, including listing, creating, updating, and deleting records for your domains.86 npmGPL 3.0
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to control Pi-hole DNS filtering, including domain management, query analysis, and system administration, with support for multiple Pi-hole instances and synchronization.8MIT

Koru Shield MCP Serverofficial
AlicenseBqualityBmaintenanceEnables AI assistants to manage DNS filtering accounts by blocking or allowing domains, checking policies, reviewing blocked queries, and managing filter categories, schedules, and devices through natural language.1636 npm1MIT