Technitium MCP
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).
Anything else in the Technitium API. 137 endpoints are in the catalog.
Related MCP server: MCP Pi-hole 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."
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.
Test it
pip install mcp
python tests/test_server.pyThe test starts a fake Technitium and checks every tool and every safety rule.
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
11 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.
| Name | Required | Description | Default |
|---|---|---|---|
| enable | 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 burden. It discloses the important behavioral traits that this is a state-mutating operation and that confirm must be set after user consent, which is genuinely useful. It omits reversibility, interaction/precedence between minutes and enable, and any auth/permission requirements.
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?
Four short lines, front-loaded with the overall action, then one line per parameter, ending with the confirm rule. No filler. The terseness borders on leaving gaps, but every sentence earns its place.
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 explained, and the param meanings are present. Still missing for a mutation tool with zero annotations: what the two modes do when combined, whether changes take effect immediately, and any scope/permission caveats.
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 supply all param meaning. It does cover all three: minutes (pause duration), enable (permanent switch), and confirm (set true after asking the user). It adds no types/defaults/ranges, but the semantic intent of each parameter is clear.
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 (turn on/off/pause) and a specific resource (ad blocking), with the three operating modes spelled out (temporary pause, permanent enable, permanent disable). It does not explicitly differentiate itself from siblings like technitium_settings_set, but the resource is unambiguous.
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 implies usage through the mode breakdown and adds a real workflow rule, 'Ask the user first, then set confirm=true.' However, it never states when to prefer this over sibling tools like technitium_settings_set, nor what happens if minutes and enable are supplied together.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | 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, the description carries the full burden and does substantial work: it separates read from write behavior, defines a two-tier confirmation protocol, enumerates risky operation classes (delete, restore, import, port/listener changes, user disabling, password changes), and states the token is injected automatically and must not be passed. It omits error/refusal behavior when confirm is missing and says nothing about response truncation.
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 purpose, then the confirmation model, then the discovery pointer. Sentences are dense but each adds a distinct constraint. The paragraph is slightly long and packs token/password handling into a trailing line rather than integrating it with the params discussion.
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 not required, and the description covers the two things an agent genuinely needs for a generic endpoint caller: the confirmation/auth model and where to look up per-endpoint parameters. The unaddressed max_chars parameter is the main incompleteness.
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 partially does: confirm, confirm_phrase, and params (via 'never guess parameters' and the endpoint_help pointer) are given real meaning. However max_chars is never mentioned, so truncation behavior is undocumented, and endpoint is only illustrated by example rather than explained.
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 states a specific verb and resource: calling any Technitium API endpoint, with a concrete example path (/api/dashboard/stats/get). It does not, however, distinguish this catch-all tool from the many dedicated siblings (technitium_stats, technitium_zones, technitium_blocking), so an agent has no explicit signal about when the generic caller is preferred over a purpose-built wrapper.
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 clear operative conditions: reads execute immediately, mutations require confirm=true plus user consent, and risky operations require confirm_phrase set to the exact path, with the risky categories enumerated. It also routes parameter discovery to technitium_endpoint_help. It stops short of saying when to use this tool versus the dedicated sibling tools, which is the one clear guidance gap.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | 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: it discloses that the flush is cache-wide and gated behind user confirmation, which are useful traits. However, it omits whether the action is reversible, its effect on in-flight/following queries, and any permission requirements for a state-changing operation.
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 with no filler, and the destructive action plus its gating instruction are both front-loaded. Every clause earns its place.
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 single parameter is explained. For a destructive, annotation-free tool the description could say more about impact after flushing, but nothing needed to invoke it correctly 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 schema alone leaves 'confirm' unexplained. The description compensates by defining both the workflow (ask the user) and the value to send (confirm=true), which is enough for an agent to set the single flag correctly.
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 ('Clear the whole DNS cache') with an explicit scope qualifier ('whole'), so an agent knows it is not a selective/per-zone purge. It does not differentiate from siblings, but none of the listed siblings is a competing cache-clear operation, so the differentiation gap is minor.
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?
'Ask the user first, then set confirm=true' gives a clear precondition for invocation. There is no need for when-not guidance or alternatives since no sibling performs an overlapping operation, so this is clear context without exclusions.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | ||
| name | No | ||
| type | No | A | |
| zone | Yes | ||
| value | No | ||
| action | Yes | ||
| 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 full burden and does well: it discloses that list runs immediately without confirmation, that add requires confirm=true after user assent, that delete requires confirm=true plus the literal confirm_phrase '/api/zones/records/delete', and that ttl/preference are action- and type-scoped. It stops short of stating whether deletes are recoverable or what errors/return values look like.
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 action summary, then a scannable one-line-per-parameter block, then the confirmation workflow. No filler sentences; every line earns its place.
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 9-parameter multi-action tool with an output schema (so return values need no explanation), the description covers parameters, confirmation gating, and the delete-then-add update pattern. Minor gaps remain: it never states which params are required per action, and it doesn't point to technitium_endpoint_help for edge cases.
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 there are 9 parameters, so the description must compensate entirely — and it does, defining action, zone, name, type (including the full enum list A/AAAA/CNAME/PTR/NS/TXT/MX/DNAME/ANAME, which the schema lacks), value, ttl, preference, confirm and confirm_phrase with formats and examples. This is meaning the agent cannot get from 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?
Opens with a specific verb triad plus resource: 'List, add or delete DNS records in a zone.' An agent can tell it operates on records rather than zones or endpoints, though it doesn't explicitly name sibling tools like technitium_zones. The three actions it multiplexes are enumerated, so the purpose is unambiguous.
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 operational routing: 'To change a record, delete the old one and add the new one,' and ties confirm/confirm_phrase to add versus delete. It doesn't name alternative sibling tools or state when to prefer technitium_resolve or technitium_zones, but the intra-tool when-to-use guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_resolveB
Look up a name to test DNS, for example ha.mogie.io.
server: this-server (default) asks Technitium itself. Or give another DNS server address. It only reads. Note that a cached answer can be returned.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | No | A | |
| 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, the description must carry the behavioral burden and does disclose two useful traits: 'It only reads' (read-only) and 'a cached answer can be returned' (stale-result caveat). However, it omits permission requirements, failure behavior for non-existent names (NXDOMAIN), and timeout/rate behavior.
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?
Short and front-loaded: purpose, then the server parameter, then behavioral caveats. The line breaks and sentence fragments are slightly choppy but nothing is padded or redundant.
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. Still, for a 3-parameter resolver with no annotations and 0% schema coverage, the description leaves the 'type' parameter and error semantics uncovered, so it is only minimally 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%, so the description must compensate. It does well on 'server' (this-server default vs. an explicit DNS address) and gives an example value for 'name', but the 'type' parameter (default A) is never mentioned, leaving record types such as AAAA/MX/CNAME unexplained.
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: 'Look up a name to test DNS', with a concrete example (ha.mogie.io). It is clearly a resolution/lookup tool, distinguishable in intent from siblings like technitium_flush_cache or technitium_blocking, though no sibling is named explicitly.
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?
Implies the use case ('to test DNS') and explains the default vs. alternate server choice, but gives no when-not guidance or explicit routing to alternative tools for related tasks (e.g. cache flushing after changing records).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_settings_getB
Read all server settings.
| 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?
No annotations are provided, so the description carries the full burden. 'Read' implies a non-mutating operation, which is useful, but the description says nothing about the sensitivity of the returned data (server settings may include credentials/tokens), required permissions, or that no filtering is possible. For a zero-parameter getter this is adequate but thin.
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 four-word sentence with no waste, and the purpose is front-loaded. It is efficient, though so terse that it borders on under-specification for a settings retrieval tool.
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 with zero parameters the surface area is small. The only real gap is the absence of any usage context relative to settings_set, but the tool is simple enough that this is a minor omission.
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 no parameters and the schema has 100% description coverage, so there is nothing for the description to clarify. Baseline 4 applies for a parameterless tool.
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 (Read) and resource (all server settings), making the operation immediately clear. It does not differentiate itself from the sibling technitium_settings_set or note its scope relative to other technitium_* tools, 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?
There is no when-to-use guidance, no mention of prerequisites, and no reference to the sibling technitium_settings_set or other alternatives. The agent must infer that this is the read counterpart to settings_set.
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".
| Name | Required | Description | Default |
|---|---|---|---|
| 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 burden and does so well: it discloses the two-stage confirmation gate, the exact confirm_phrase value for sensitive fields, and a read-before-write user-facing workflow. It stops short of stating whether changes are reversible or take effect immediately, but the destructive-risk surface is clearly gated.
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 partial-update rule, then the safety workflow. Every sentence carries a distinct instruction and none is filler, though the sequencing is dense and slightly run-on.
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 mutation tool with no annotations and an opaque free-form settings object, the description supplies the confirmation protocol, the sensitive-field escalation, and a discovery path for valid keys. An output schema exists so return values need no explanation. Remaining gap is the absence of any statement on effect timing or reversibility.
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: confirm is tied to user approval, confirm_phrase is tied to a specific set of sensitive settings, and the settings object is illustrated with a concrete example plus a pointer to the help endpoint for valid names. The settings value space remains open-ended, which the help-endpoint pointer partially mitigates.
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 clarifies the partial-update semantics ('Send only the settings that should change'), which is the key distinction from the sibling technitium_settings_get. It does not explicitly name the sibling it complements, but the operation is unambiguous.
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 workflow: check names via technitium_endpoint_help on /api/settings/set, read settings first, tell the user what will change, then obtain confirm=true. It also names the elevated-risk settings (port, listener, DoH/TLS, recursion, forwarder) that require the confirm_phrase. Both when-to-use and prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
technitium_statsC
Dashboard numbers: queries, blocked, cached, top charts.
period: LastHour, LastDay, LastWeek, LastMonth, LastYear.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | LastDay |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral burden. It implies a read-only retrieval of dashboard statistics but does not confirm read-only safety, mention permissions or rate limits, or describe any side effects. The behavioral profile is left largely to inference.
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 description is two short, front-loaded lines with no filler. The second line earns its place by enumerating period options, though the overall terseness leaves important usage context unaddressed.
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?
Given one simple parameter and an existing output schema, the description covers the core return content and valid period values. However, without annotations, it should do more to state the read-only nature and when to prefer this tool over siblings; it is adequate but not 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?
Schema description coverage is 0% and the sole 'period' parameter has no enum in the schema. The description compensates by listing the accepted values (LastHour, LastDay, LastWeek, LastMonth, LastYear), which is materially useful, though it omits the default value and any format details.
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 ('dashboard numbers') and lists categories (queries, blocked, cached, top charts), but uses a noun phrase rather than a specific verb like 'retrieve' or 'get'. It does not explicitly differentiate from siblings such as technitium_blocking or technitium_resolve, leaving purpose inferable but not crisply stated.
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?
No guidance is given on when to use this tool versus alternatives like technitium_endpoints or technitium_call. The period value list is parameter detail, not usage context, so the agent receives no routing help.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| zone | 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 disclosure burden. It does reveal the dual listing behavior (zones vs records), a genuine trait beyond the schema, but says nothing about auth, limits, or output shape; the latter is partly excused by the existing output schema.
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, zero filler, and the primary purpose is front-loaded ahead of the conditional behavior. Nothing could be cut without losing meaning.
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 single optional-parameter read tool with an output schema, the essentials are present. The main gap is the absence of any routing to the records sibling or note about name formatting, both minor for this complexity level.
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 explain the functional effect of supplying "zone" (switching the listing target). It does not give the expected name format or whether the value must match an existing zone exactly.
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 states a specific verb and resource ("List DNS zones") and clarifies the alternate mode when a zone is supplied. It implicitly separates itself from the sibling technitium_records, though it never names an alternative tool to make the routing explicit.
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?
"Give a zone name to list its records instead" tells the agent the condition under which behavior changes, which is effectively when-to-use-the-param guidance. It stops short of naming technitium_records or stating exclusions relative to other siblings.
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.
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 11 tools
The generic technitium_call can invoke any endpoint, which overlaps heavily with the specialized wrappers (settings_get/set, blocking, flush_cache, zones, records, stats, resolve), so an agent may struggle to choose between the guided tool and the raw call. technitium_endpoints vs technitium_endpoint_help are also adjacent (discovery vs parameter lookup), though their descriptions distinguish them reasonably well.
All tools share a clear technitium_ prefix in snake_case, which keeps them readable and grouped. However the suffix conventions are mixed: some use noun_verb ordering (endpoint_help, settings_get, settings_set) while others use verb_noun (flush_cache) or bare nouns (stats, zones, records).
11 tools is well within the ideal 3-15 range and each tool maps to a distinct area of DNS server management (settings, blocking, cache, zones, records, resolve, stats, discovery). The set is cohesive without obvious filler.
Core lifecycle coverage is strong: read/write settings, blocking toggle, cache flush, zone listing, record list/add/delete, resolution, and stats, plus a generic call and endpoint discovery as an escape hatch for uncovered APIs. The main gap is in-place record update (only delete+add is documented) and no explicit user/permission or DHCP management, though the raw call partly compensates.
Maintenance
Related MCP Connectors
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.
DNS lookups, health reports, SSL certs, security scans, GEO scoring, uptime checks
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to manage Cloudflare resources through natural language, including DNS records, zone management, Workers KV storage, cache purging, and analytics. Supports comprehensive Cloudflare operations with secure API token authentication.132MIT
- AlicenseAqualityCmaintenanceConnects AI assistants to Pi-hole network-wide ad blocker, enabling monitoring of DNS traffic statistics, controlling blocking settings, managing whitelist/blacklist domains, viewing query logs, and performing maintenance tasks through natural language.1684 npm8MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Cloudflare DNS records, including listing zones and records, and creating, updating, or deleting DNS records.41 npmMIT
- AlicenseAqualityBmaintenanceEnables AI agents to manage Cloudflare DNS records, including listing, creating, updating, and deleting records for your domains.812 npmGPL 3.0