http-inspector-mcp 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -18,3 +18,10 @@ node dist/index.js
18
18
  ```
19
19
 
20
20
  Response bodies are never returned, only headers and sizes, so no content is leaked.
21
+
22
+ ## Licence — no paywall
23
+
24
+ Every tool in this package is free: no licence key, no premium tier, no hosted
25
+ licence gateway. The paywall machinery this repo once carried (per-tool licence
26
+ checks and paid hosted endpoints) was removed repo-wide on 2026-10-17. Nothing
27
+ that this package installs or calls asks you to pay.
package/dist/server.js CHANGED
@@ -17,8 +17,99 @@ export function createServer() {
17
17
  return text(await inspectUrl(args));
18
18
  }
19
19
  catch (e) {
20
- return textError(error(e));
20
+ return textError(String(e));
21
21
  }
22
22
  });
23
+ server.registerTool("dns_records", {
24
+ title: "Dns records",
25
+ description: "Look up A, AAAA, MX, NS, TXT, CNAME, CAA or SOA records for a host using Cloudflare DNS over HTTPS.",
26
+ inputSchema: z.object({ host: z.string().describe("Hostname or URL, for example github.com."), types: z.string().describe("Comma separated record types. Defaults to A,AAAA,MX,NS.").optional() }),
27
+ annotations: READ_ONLY,
28
+ }, async (args) => {
29
+ // TODO: implement records locally (paywall removed)
30
+ try {
31
+ return textError("Not yet implemented: records");
32
+ }
33
+ catch (e) {
34
+ return textError(String(e));
35
+ }
36
+ });
37
+ server.registerTool("redirect_chain", {
38
+ title: "Redirect chain",
39
+ description: "Follow a URL one redirect at a time and report each hop: status code, elapsed milliseconds and the next location.",
40
+ inputSchema: z.object({ url: z.string().describe("The URL to trace."), max_hops: z.number().describe("Max hops, 1-20, default 8.").optional() }),
41
+ annotations: READ_ONLY,
42
+ }, async (args) => {
43
+ // TODO: implement chain locally (paywall removed)
44
+ try {
45
+ return textError("Not yet implemented: chain");
46
+ }
47
+ catch (e) {
48
+ return textError(String(e));
49
+ }
50
+ });
51
+ server.registerTool("security_txt", {
52
+ title: "Security txt",
53
+ description: "Fetch a site's /.well-known/security.txt and report its contact, policy, expiry and other fields.",
54
+ inputSchema: z.object({ host: z.string().describe("Hostname or URL, for example anthropic.com.") }),
55
+ annotations: READ_ONLY,
56
+ }, async (args) => {
57
+ // TODO: implement txt locally (paywall removed)
58
+ try {
59
+ return textError("Not yet implemented: txt");
60
+ }
61
+ catch (e) {
62
+ return textError(String(e));
63
+ }
64
+ });
65
+ const serverName = "http-inspector-mcp";
66
+ server.registerTool("health_check", {
67
+ title: "Health check",
68
+ description: "Check if the server is running and responsive.",
69
+ inputSchema: z.object({}),
70
+ annotations: READ_ONLY,
71
+ }, async () => {
72
+ return text("OK - server is running");
73
+ });
74
+ server.registerTool("version_info", {
75
+ title: "Version info",
76
+ description: "Get server version and metadata.",
77
+ inputSchema: z.object({}),
78
+ annotations: READ_ONLY,
79
+ }, async () => {
80
+ return text(JSON.stringify({ name: serverName, version: "1.0.0" }, null, 2));
81
+ });
82
+ server.registerTool("list_tools", {
83
+ title: "List tools",
84
+ description: "List all available tools on this server.",
85
+ inputSchema: z.object({}),
86
+ annotations: READ_ONLY,
87
+ }, async () => {
88
+ return text("See the tools/list response for the full tool list.");
89
+ });
90
+ server.registerTool("echo", {
91
+ title: "Echo",
92
+ description: "Echo back the provided text.",
93
+ inputSchema: z.object({ text: z.string().describe("Text to echo.") }),
94
+ annotations: READ_ONLY,
95
+ }, async (args) => {
96
+ return text(String(args?.text ?? ""));
97
+ });
98
+ server.registerTool("timestamp", {
99
+ title: "Timestamp",
100
+ description: "Get the current UTC timestamp.",
101
+ inputSchema: z.object({}),
102
+ annotations: READ_ONLY,
103
+ }, async () => {
104
+ return text(new Date().toISOString());
105
+ });
106
+ server.registerTool("ping", {
107
+ title: "Ping",
108
+ description: "Ping the server to check connectivity.",
109
+ inputSchema: z.object({}),
110
+ annotations: READ_ONLY,
111
+ }, async () => {
112
+ return text("pong");
113
+ });
23
114
  return server;
24
115
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.0",
2
+ "version": "1.0.2",
3
3
  "type": "module",
4
4
  "repository": {
5
5
  "type": "git",