publicsofttools-mcp
PublicSoftTools MCP Server
Give any MCP-compatible AI agent (Claude, Cursor, Windsurf) access to 14 utility tools from PublicSoftTools.
npm: npx publicsofttools-mcp
API docs: https://www.publicsofttools.com/docs
Get a key: https://www.publicsofttools.com/account/api-keys
Tools included
Tool | Endpoint | Description |
|
| QR code as base64 PNG or raw SVG |
|
| MD5, SHA-1, SHA-256, SHA-384, SHA-512 |
|
| UUID v4 — up to 100 at once |
|
| Encode or decode, with URL-safe variant |
|
| Cryptographically secure password |
|
| Geolocation, ISP, ASN, proxy/VPN detection |
|
| SSL certificate details + days remaining |
|
| A, AAAA, MX, TXT, CNAME, NS, SOA records |
|
| Domain registrar, dates, nameservers |
|
| Reduce PDF file size (max 4 MB) |
|
| Combine 2–20 PDFs into one |
|
| Split by page range or every N pages |
|
| Convert PDF to editable .docx |
|
| Remove permission restrictions |
Related MCP server: Kiprio MCP
Prerequisites
Node.js 18+ (required for native
fetchsupport)A PublicSoftTools API key — get one free (1,500 calls/month, no credit card)
Install & configure
Claude Desktop
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"publicsofttools": {
"command": "npx",
"args": ["-y", "publicsofttools-mcp"],
"env": {
"PST_API_KEY": "your_api_key_here"
}
}
}
}Restart Claude Desktop. The tools will appear in the tools panel.
Cursor
Open Settings → MCP and add:
{
"publicsofttools": {
"command": "npx",
"args": ["-y", "publicsofttools-mcp"],
"env": { "PST_API_KEY": "your_api_key_here" }
}
}Windsurf
Open Settings → MCP Servers and add the same JSON block as Cursor above.
Tool reference
All tools require the PST_API_KEY environment variable. All file inputs/outputs use base64-encoded content.
generate_qr_code
Generate a QR code image for any text, URL, or data.
Parameters
Name | Type | Required | Default | Description |
| string | yes | — | Text, URL, or data to encode |
| number | no | 256 | Output size in pixels (64–1024) |
|
| no |
| Output image format |
| string | no |
| Dark module color (hex) |
| string | no |
| Light module color (hex) |
|
| no |
| Error correction level |
Response
{
"image": "data:image/png;base64,iVBORw0...",
"format": "png",
"size": 256
}For format: "svg", image is a raw SVG string instead of a data URL.
generate_hash
Hash any text. Omit algorithm to get all five hashes in one call.
Parameters
Name | Type | Required | Default | Description |
| string | yes | — | Text to hash (max 100,000 chars) |
|
| no | all | Hash algorithm |
|
| no |
| Output encoding |
Response (all algorithms)
{
"hashes": {
"md5": "5f4dcc3b5aa765d61d8327deb882cf99",
"sha1": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8",
"sha256": "5e884898da28047151d0e56f8dc629277...",
"sha384": "a8b64babd0aca91a59bdbb7761b421d4...",
"sha512": "b109f3bbbc244eb82441917ed06d618b..."
},
"encoding": "hex",
"input_length": 8
}generate_uuid
Generate UUID v4 values in batch.
Parameters
Name | Type | Required | Default | Description |
| number | no | 1 | Number of UUIDs to generate (1–100) |
Response
{
"uuids": [
"550e8400-e29b-41d4-a716-446655440000",
"6ba7b810-9dad-11d1-80b4-00c04fd430c8"
],
"count": 2
}encode_decode_base64
Encode text to base64 or decode base64 back to plain text.
Parameters
Name | Type | Required | Default | Description |
| string | yes | — | Input text (max 500,000 chars) |
|
| yes | — | Operation to perform |
| boolean | no | false | Use URL-safe variant ( |
Response
{
"result": "aGVsbG8gd29ybGQ=",
"action": "encode",
"url_safe": false,
"input_length": 11,
"output_length": 16
}generate_password
Generate a cryptographically secure random password.
Parameters
Name | Type | Required | Default | Description |
| number | no | 16 | Password length (8–128) |
| boolean | no | true | Include uppercase letters (A–Z) |
| boolean | no | true | Include digits (0–9) |
| boolean | no | true | Include symbols (!@#$…) |
Response
{
"password": "kR7#mQ2@xZ9!wP4$",
"length": 16,
"entropy_bits": 98.6
}lookup_ip
Look up geolocation and network info for any IPv4 or IPv6 address.
Parameters
Name | Type | Required | Description |
| string | yes | IPv4 or IPv6 address (e.g. |
Response
{
"ip": "8.8.8.8",
"country": "United States",
"country_code": "US",
"region": "California",
"city": "Mountain View",
"zip": "94043",
"lat": 37.4056,
"lon": -122.0775,
"timezone": "America/Los_Angeles",
"isp": "Google LLC",
"org": "Google LLC",
"asn": "AS15169 Google LLC",
"is_mobile": false,
"is_proxy": false,
"is_hosting": true
}check_ssl
Check SSL/TLS certificate details for any domain.
Parameters
Name | Type | Required | Description |
| string | yes | Domain name (e.g. |
Response
{
"domain": "example.com",
"valid": true,
"issuer": "Let's Encrypt",
"subject": "example.com",
"san": ["example.com", "www.example.com"],
"valid_from": "2026-01-01T00:00:00Z",
"valid_to": "2026-04-01T00:00:00Z",
"days_remaining": 22,
"protocol": "TLSv1.3"
}lookup_dns
Query DNS records for a domain. Omit type to get all available record types at once.
Parameters
Name | Type | Required | Default | Description |
| string | yes | — | Domain to query (e.g. |
|
| no | all | Record type |
Response
{
"domain": "example.com",
"records": {
"A": ["93.184.216.34"],
"MX": [{ "exchange": "mail.example.com", "priority": 10 }],
"NS": ["ns1.example.com", "ns2.example.com"],
"TXT": ["v=spf1 include:_spf.example.com ~all"]
},
"queried_at": "2026-06-09T12:00:00Z"
}whois_lookup
Get domain registration information.
Parameters
Name | Type | Required | Description |
| string | yes | Domain to look up (e.g. |
Response
{
"domain": "example.com",
"registrar": "Example Registrar, Inc.",
"registered_at": "1995-08-14T00:00:00Z",
"expires_at": "2027-08-13T00:00:00Z",
"updated_at": "2024-08-13T00:00:00Z",
"nameservers": ["a.iana-servers.net", "b.iana-servers.net"],
"status": ["clientDeleteProhibited", "clientTransferProhibited"]
}compress_pdf
Reduce PDF file size using Ghostscript compression. Max file size: 4 MB.
Parameters
Name | Type | Required | Default | Description |
| string | yes | — | Base64-encoded PDF content |
|
| no |
| Compression level. |
Response
{
"pdf": "<base64-encoded compressed PDF>",
"original_size": 2048000,
"compressed_size": 819200,
"reduction_percent": 60
}merge_pdfs
Merge 2–20 PDF files into a single document. Max 4 MB per file.
Parameters
Name | Type | Required | Description |
| string[] | yes | Array of base64-encoded PDFs to merge in order (2–20 files) |
Response
{
"pdf": "<base64-encoded merged PDF>",
"page_count": 12,
"files_merged": 3
}split_pdf
Split a PDF into multiple documents. Max file size: 4 MB.
Parameters
Name | Type | Required | Default | Description |
| string | yes | — | Base64-encoded PDF to split |
|
| yes | — | Split mode |
| string | no | — | Page range when |
| number | no | — | Split every N pages when |
Response
{
"files": [
"<base64-encoded PDF part 1>",
"<base64-encoded PDF part 2>"
],
"count": 2
}pdf_to_word
Convert a PDF to an editable Word document (.docx). Max file size: 4 MB.
Parameters
Name | Type | Required | Description |
| string | yes | Base64-encoded PDF to convert |
Response
{
"docx": "<base64-encoded .docx file>",
"page_count": 5
}unlock_pdf
Remove owner-password permission restrictions from a PDF (print lock, copy lock, etc.). Does not require the password if only owner restrictions are set.
Parameters
Name | Type | Required | Description |
| string | yes | Base64-encoded PDF |
| string | no | PDF password, if the file requires one to open |
Response
{
"pdf": "<base64-encoded unlocked PDF>",
"was_encrypted": true
}Authentication
Set your API key as an environment variable:
export PST_API_KEY=pst_live_your_key_hereOr pass it inline for a one-off test:
PST_API_KEY=pst_live_your_key_here node dist/index.jsThe key is sent as X-Api-Key: pst_live_... on every request.
Rate limits & plans
Plan | Price | Calls/month |
Free | $0 | 1,500 |
Starter | $29/mo | 15,000 |
Pro | $99/mo | 100,000 |
Business | Custom | 1,000,000+ |
When you exceed your limit the API returns 429 Too Many Requests. Limits reset on the 1st of each month (UTC).
Get or upgrade your key: https://www.publicsofttools.com/account/api-keys
Troubleshooting
"PST_API_KEY environment variable is required"
The server exits immediately if no key is set. Make sure the env block in your MCP config has PST_API_KEY set.
Tools don't appear in Claude Desktop
Verify the JSON config is valid (no trailing commas), then fully quit and reopen Claude Desktop — a window close isn't enough.
401 Unauthorized
Your API key is invalid or has been revoked. Look it up again at https://www.publicsofttools.com/account/api-keys.
429 Too Many Requests
You've hit your monthly limit. Upgrade your plan or wait for the 1st-of-month reset.
413 File Too Large
PDF endpoints have a 4 MB binary limit. Compress or split the file before sending.
Node version error
Run node --version. You need Node 18 or later for native fetch. Update via https://nodejs.org.
License
MIT — see LICENSE
Available Tools
14 toolscheck_sslA
Check SSL/TLS certificate details for any domain: issuer, expiry date, SANs, and days remaining.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name to check (e.g. example.com) |
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. It lists output details but does not disclose potential side effects, permissions, rate limits, or error behavior, which is a gap for a network-checking tool.
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?
Single sentence, front-loaded with action and resource, no wasted words.
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 simple tool with one parameter and no output schema, the description adequately covers purpose and outputs. Minor lack of error handling or wildcard support info, but overall 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 coverage is 100% with one parameter described. The description adds 'any domain' and output fields but does not significantly enhance meaning beyond 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 clearly states the action ('Check'), the resource ('SSL/TLS certificate details for any domain'), and lists specific outputs ('issuer, expiry date, SANs, and days remaining'), distinguishing it from sibling tools like lookup_dns or whois_lookup.
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 use for checking SSL details but does not explicitly state when to use this tool versus siblings like lookup_dns or whois_lookup, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compress_pdfB
Compress a PDF file to reduce its size. Accepts a base64-encoded PDF, returns a compressed base64 PDF.
| Name | Required | Description | Default |
|---|---|---|---|
| file_base64 | Yes | Base64-encoded PDF file content | |
| quality | No | Compression quality: screen (lowest/smallest), ebook (balanced), printer (high quality), prepress (highest). Default: ebook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only covers I/O format. Missing details on lossy behavior, size limits, safety, and other traits beyond what is obvious.
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 sentences covering key points. Efficient, though could add brief usage guidance without bloat.
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?
Adequate for a simple tool with two well-described params, but missing behavioral context (lossy, limits) that would help agent. Output schema absent but return type is hinted.
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 has 100% parameter description coverage (file_base64 and quality). Description adds no extra semantic value beyond repeating 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?
Clearly states it compresses PDF files to reduce size, specifying base64 input/output. Distinct from sibling tools like merge_pdfs, split_pdf, etc.
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 on when to use compression vs alternatives, no when-not-to-use or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encode_decode_base64B
Encode text to base64 or decode base64 back to plain text.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to encode, or base64 string to decode | |
| action | Yes | Whether to encode or decode | |
| url_safe | No | Use URL-safe base64 variant (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It correctly indicates the tool performs encoding and decoding, but does not mention that it is stateless, deterministic, or has no side effects. However, for a simple encoding tool, this is adequate, so a score of 3 is appropriate.
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 a single sentence that immediately conveys the core functionality. It is concise and front-loaded with no unnecessary words.
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?
The description does not mention what the tool returns (e.g., a base64 string or decoded text), which is important given there is no output schema. Additionally, it provides no context about error handling or format specifics, making it incomplete for a tool with no output schema.
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 100%, and each parameter already has a clear description in the input schema. The tool description does not add additional meaning beyond what is in the schema, so the baseline score of 3 is correct.
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 clearly specifies the tool's function: encoding text to base64 or decoding base64 back to plain text. It uses specific verbs ('encode', 'decode') and a concrete resource ('base64'), distinguishing it from sibling tools like generate_hash or generate_qr_code that perform different encoding operations.
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 provided on when to use this tool versus alternatives, nor are there any conditions or prerequisites mentioned. The description only states what the tool does, not when to use it or when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_hashA
Generate cryptographic hashes for any text. Returns MD5, SHA-1, SHA-256, SHA-384, and SHA-512 in a single call.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to hash |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It reveals the output includes five hash algorithms, but does not mention performance, security, or side effects. Adequate but not rich.
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?
Single sentence efficiently states action, resource, and output. Every word is necessary, no 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?
Given the single required parameter and no output schema, the description fully covers what the tool does and returns. No missing information for this simple 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 coverage is 100%, with the parameter description 'Text to hash' already present. The tool description adds no additional semantic meaning beyond what the schema provides.
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 uses a specific verb 'Generate' and resource 'cryptographic hashes for any text', listing the exact hash types returned. It clearly distinguishes from siblings like encode_decode_base64 or generate_password.
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 for hashing any text but provides no explicit guidance on when not to use or alternatives among siblings. No context for when this tool is preferable over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_passwordB
Generate a cryptographically secure random password with configurable rules.
| Name | Required | Description | Default |
|---|---|---|---|
| length | No | Password length (default: 16, max: 128) | |
| uppercase | No | Include uppercase letters (default: true) | |
| numbers | No | Include numbers (default: true) | |
| symbols | No | Include symbols (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions 'cryptographically secure' and 'random', but does not address potential side effects, authorization requirements, or data privacy (e.g., whether passwords are stored or logged).
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 a single, efficient sentence that front-loads the core purpose. Every word earns its place, with no fluff or repetition.
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 that there is no output schema and no annotations, the description should explain the return value (e.g., the generated password string). It also lacks details on character set composition or limitations, making it incomplete for a four-parameter 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?
The input schema has 100% description coverage, meaning all four parameters are already documented with defaults. The description adds 'configurable rules' but does not provide new semantic meaning beyond what the schema offers. Baseline 3 is appropriate.
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 clearly states the tool generates a cryptographically secure random password with configurable rules. It uses a specific verb ('generate') and resource ('password'), and the security and configurability details distinguish it from sibling tools like generate_hash or generate_uuid.
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 provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it, prerequisites, or comparisons to sibling tools such as generate_uuid, which also generates random strings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_qr_codeB
Generate a QR code image for any text, URL, or data. Returns a base64 PNG or SVG image.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text, URL, or data to encode in the QR code | |
| size | No | Output size in pixels (default: 256, max: 1024) | |
| format | No | Output format — png or svg (default: png) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions output format but lacks disclosure of limitations (e.g., size max 1024 in schema, but not behavior on large text), error handling, or whether it requires network access. Unclear if base64 string includes data URI prefix.
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 key information. Every word 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?
Adequate for a simple tool with no output schema and no annotations. Covers input, output format, and return type. However, ambiguity about base64 representation (raw or with data URI) and lack of error handling information reduce completeness.
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 covers all parameters with descriptions (100% coverage). The description adds no extra meaning beyond 'any text, URL, or data' which is already implied by the text parameter description. Baseline 3 is appropriate.
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 clearly states it generates a QR code image for any text, URL, or data, specifying output format (base64 PNG or SVG). Among sibling tools, none directly compete, so it is well-distinguished.
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 on when or when not to use this tool. It doesn't compare to related tools like encode_decode_base64 or image tools, and doesn't provide context for appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_uuidA
Generate one or more UUID v4 values.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of UUIDs to generate (1–100, default: 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It accurately states the generation of UUID v4 values, which is a read-only, non-destructive operation. The behavior is fully disclosed for this simple tool.
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 a single sentence that is front-loaded and earns its place with no wasted words. It is appropriately concise.
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 the tool's simplicity (1 parameter, no output schema, no nested objects), the description is complete. It tells the agent exactly what the tool does and the scope of output.
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 100% with a single parameter 'count' already described in the schema. The description adds 'one or more' but does not provide additional meaning beyond what the schema offers. Baseline score of 3.
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 uses a specific verb 'Generate' and resource 'UUID v4 values', and clearly indicates the tool can produce one or more values. It is distinct from sibling tools which are unrelated (e.g., check_ssl, compress_pdf).
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 explicit guidance on when to use this tool versus alternatives. The tool is simple and self-explanatory, but the description does not provide context like 'Use to create unique identifiers' or exclusions. A minimal viable score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_dnsA
Query DNS records for a domain. Supports A, AAAA, MX, TXT, CNAME, NS, and SOA record types.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name to query (e.g. example.com) | |
| type | No | DNS record type to query (default: A) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as error handling, rate limits, or whether subdomains are supported, beyond the basic query 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 sentences, no filler, front-loaded with the main action, and lists supported types efficiently.
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 simple DNS lookup tool, the description covers the essential parameters and supported types. Lacks details on return format, but the tool is straightforward and no output schema exists.
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 100%, and the description lists the supported record types already in the enum, adding marginal value. Baseline 3 is appropriate.
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 clearly states the verb 'Query' and the resource 'DNS records for a domain', and explicitly lists supported record types, making it distinct from sibling tools like lookup_ip or whois_lookup.
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 when DNS records are needed, but lacks explicit guidance on when to use this tool versus alternatives like lookup_ip or whois_lookup, or any context about prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_ipA
Get geolocation, ISP, ASN, and proxy/VPN detection for any IPv4 or IPv6 address.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | IPv4 or IPv6 address to look up (e.g. 8.8.8.8) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must bear full burden. It only states what data is obtained but does not disclose whether it makes external network calls, has rate limits, or requires authentication. This lack of behavioral detail reduces transparency.
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?
Single sentence, no wasted words, and front-loaded with the core action. Highly concise and well-structured.
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 the tool's simplicity (one parameter, no output schema), the description adequately covers the return content. However, it could be more complete by hinting at the output format or any constraints.
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 100% for the sole parameter 'ip', so the schema already provides meaning. The description adds context about return data but does not enhance parameter-specific semantics beyond 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?
Description clearly states the verb 'Get' and specifies the resource: geolocation, ISP, ASN, and proxy/VPN detection for IPv4 or IPv6 addresses. It is specific and distinguishes from siblings like lookup_dns and whois_lookup.
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 for retrieving IP intelligence data but does not explicitly exclude alternatives or state when not to use it. Clear context is provided for the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_pdfsA
Merge 2–20 PDF files into a single document. Accepts array of base64-encoded PDFs.
| Name | Required | Description | Default |
|---|---|---|---|
| files_base64 | Yes | Array of base64-encoded PDF files to merge in order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It does not mention whether the operation is read-only, any side effects, error handling for invalid PDFs, or output format. The description is too minimal for a merge 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?
The description is just two sentences, both essential and front-loaded. No unnecessary words or repetition. It meets the conciseness standard perfectly.
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?
The tool has a single parameter and no output schema. The description covers input format and count but omits output format (e.g., returning merged PDF as base64), error cases, and any ordering guarantees beyond 'in order'. For a merge tool, this leaves significant gaps.
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 100% for the single parameter, so baseline is 3. The description adds 'in order' which is useful but largely redundant with the schema. No further semantic detail is provided beyond what the schema already states.
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 clearly states the action (merge), resource (PDF files), and constraints (2-20 files, base64-encoded). It distinguishes from sibling tools like split_pdf and compress_pdf, making the tool's purpose 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 when to use this tool (combining multiple PDFs into one) and specifies input format and size limits. However, it does not explicitly state when not to use it or mention alternatives, though the context from the sibling list suggests differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_to_wordB
Convert a PDF to an editable Word document (.docx). Returns a base64-encoded DOCX file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_base64 | Yes | Base64-encoded PDF file to convert |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions the output format but omits important details such as file size limits, handling of scanned/image-based PDFs, or conversion fidelity. This leaves the agent uncertain about potential failures.
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, front-loaded sentences with no superfluous information. Every word adds value.
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 the tool's simplicity (one parameter, no output schema), the description is minimally adequate. However, missing error handling info and lack of distinction from siblings reduce completeness. An agent may need additional context for robust usage.
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 100% (one parameter fully described). The description adds no new meaning beyond the schema's parameter description. Baseline is 3, and no extra value is provided.
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 clearly states the action (convert PDF to Word docx) and the output format (base64-encoded DOCX). It is specific and uses a verb+resource structure. However, it does not differentiate from sibling tools that also operate on PDFs, but the distinct conversion purpose is evident.
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 on when to use this tool versus alternatives (e.g., merge_pdfs, compress_pdf). No prerequisites or constraints (e.g., PDF must be text-based) are mentioned. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_pdfA
Split a PDF by page range or every N pages. Returns array of base64-encoded split PDFs.
| Name | Required | Description | Default |
|---|---|---|---|
| file_base64 | Yes | Base64-encoded PDF file to split | |
| mode | Yes | Split mode: range (specific pages) or every_n (split every N pages) | |
| pages | No | Page range string when mode is range, e.g. '1-3,5,7-9' | |
| every_n | No | Split every N pages when mode is every_n |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries full burden. States return format and splitting modes, but lacks details on error handling, file size limits, or behavior for invalid input.
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?
Single sentence, zero waste, front-loaded with verb and resource.
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?
Adequate for a simple tool, but lacks usage guidelines and behavioral details. No output schema; description covers return type minimally.
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 covers all 4 parameters with descriptions. Description adds no extra semantic value beyond the schema; baseline 3 applies.
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?
Clear verb and resource: 'Split a PDF by page range or every N pages.' Distinct from sibling tools like merge_pdfs or compress_pdf. Mentions return type (array of base64-encoded PDFs).
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 explicit guidance on when to use vs alternatives. Implied context: when splitting a PDF. Does not specify prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlock_pdfA
Remove permission restrictions (owner password) from a PDF. Returns unlocked base64 PDF.
| Name | Required | Description | Default |
|---|---|---|---|
| file_base64 | Yes | Base64-encoded password-protected PDF | |
| password | No | PDF password if known (optional) |
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. It discloses the return format (base64 PDF) and core action (remove restrictions), but lacks details on error scenarios (e.g., incorrect password), whether the password is truly optional, or any side effects. This is adequate but not rich.
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?
Description is a single sentence of 14 words, no filler. It directly states the action and output, meeting the front-loading principle.
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 the tool's simplicity (2 parameters, no output schema), the description covers the core functionality and return type. However, it could mention error behavior or constraints (e.g., only removes owner password, not user password) for full completeness. Still mostly adequate.
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 100%, so the baseline is 3. The description adds no extra meaning beyond the schema, which already describes the parameters well. No parameter examples or constraints are provided beyond what's in 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?
Description clearly states the tool removes permission restrictions (owner password) from a PDF and returns unlocked base64 PDF. This specific verb+resource combination distinguishes it from sibling tools like compress_pdf (compression), merge_pdfs (merging), and pdf_to_word (conversion).
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 explicit guidelines for when to use or avoid this tool. While the task is unique among siblings, the description does not mention alternatives or cases where this tool is inappropriate (e.g., if the PDF is encrypted with a user password). Usage is implied but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whois_lookupA
Look up domain registration information: registrar, registrant, creation/expiry dates, and nameservers.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name to look up (e.g. example.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It implies a read-only operation and lists returned fields, but omits details such as rate limits, authentication needs, or underlying data source reliability. The description is adequate but not richly transparent.
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 a single, efficient sentence that directly conveys the tool's purpose and the specific information returned, with no wasted words.
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 simple tool with one parameter and no output schema, the description is largely complete, covering the tool's function and output fields. However, it lacks usage guidance that would help in context of sibling tools, slightly reducing completeness.
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 100%, so the baseline is 3. The description adds no new meaning to the single parameter beyond what the schema already provides ('Domain name to look up'), so no extra value is added.
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 clearly states the tool's action ('Look up domain registration information') and specifies the types of data returned (registrar, registrant, dates, nameservers), effectively distinguishing it from sibling tools like lookup_dns and lookup_ip.
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 provided on when to use this tool versus alternatives (e.g., when to prefer whois lookup over DNS or IP lookup). The description only states the tool's function without contextual suggestions.
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. Dates show when Glama detected each change.
14 tool updates
v0.1.0- First observed
check_ssl - First observed
compress_pdf - First observed
encode_decode_base64 - First observed
generate_hash - First observed
generate_password - First observed
generate_qr_code - First observed
generate_uuid - First observed
lookup_dns - First observed
lookup_ip - First observed
merge_pdfs - First observed
pdf_to_word - First observed
split_pdf - First observed
unlock_pdf - First observed
whois_lookup
TDQS
Each tool targets a distinct utility function: SSL checking, PDF manipulation, encoding, hash/password/QR/UUID generation, DNS/IP/WHOIS lookups. No two tools have overlapping purposes, making it easy for an agent to select the correct one.
The naming convention is inconsistent: most tools use verb_noun (e.g., compress_pdf, split_pdf), but some use noun_verb (whois_lookup) or double verbs (encode_decode_base64). While readable, the pattern is not uniform.
With 14 tools covering networking, PDF, encoding, and generation utilities, the count feels well-scoped for a general-purpose toolbox. Each tool earns its place without overwhelming the agent.
The tool set covers common utility needs like SSL, DNS, WHOIS, hash, password, QR, UUID, and full PDF lifecycle (compress, split, merge, unlock, convert). Minor gaps exist (e.g., no regex, JSON formatting), but the surface is largely complete for its stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Developer toolkit: UUID, timestamp, unit conversion, JSON tools, and QR code (SVG). Free.
Generate IDs, QR codes, and hashes, encode values, geolocate IPs, plus gated host diagnostics.
49 developer tools via MCP: DNS, WHOIS, IP lookup, JWT, hashing, QR, and more.
20+ pay-per-use APIs: image gen, crypto data, email verify, SSL check, web scraping, and more.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceSwiss-army-knife utility MCP server for AI agents. 18 tools for JSON validation/formatting, base64 encode/decode, hash generation, UUID generation, URL parsing, regex testing, markdown↔HTML conversion, text stats, slug generation, datetime conversion, cron parsing, text diffing, CSV↔JSON conversion, and JWT decoding. Zero API Key required5-
- AlicenseAqualityAmaintenance23 developer & data API tools for AI agents - IP/DNS/WHOIS/SSL lookups, web scraping & screenshots, text AI (summarize, translate, sentiment, grammar, redact), and dev utilities (hash, UUID, QR, JWT, cron, IBAN/VAT/email validation, breach check).23MIT
- AlicenseBqualityDmaintenanceProvides 45 developer utilities (UUID generation, hashing, JWT decoding, etc.) for AI assistants like Claude Desktop, Cursor, and Windsurf. Includes 16 free tools and 29 pro tools with trial usage.4625MIT
- FlicenseNot gradedqualityBmaintenancefree dev tools (JWT, JSON, Base64, image converter, hash, UUID, and more) — each with a UI, REST API, and MCP server. No auth, stateless, <5s.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DrEjazAhmed/publicsofttools-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server