Skip to main content
Glama

Server Details

Convert and compress PDFs and images, redact personal data, and run text and data utilities.

Ownership verified
Status
Healthy
Uptime
100.0% over 42 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

B3.1/5.0

Scored across 114 tools

Disambiguation3/5

Many tools have overlapping purposes (e.g., image_resizer vs. bulk_image_resizer vs. compress_to_size, random_picker vs. random_team_generator vs. wheel_of_names). The descriptions distinguish them, but the sheer volume and conceptual overlap make misselection likely.

Naming Consistency5/5

All tool names use consistent snake_case with descriptive noun_verb patterns (e.g., pdf_merge, image_cropper, age_calculator). No mixed conventions or cryptic abbreviations.

Tool Count2/5

With 114 tools, the surface is far beyond the typical well-scoped MCP server. Even for a general utility collection, the sheer number overwhelms agents and makes navigation impractical.

Completeness4/5

The set covers a broad range of common utilities—calculators, conversions, PDF manipulation, text processing, and image tools. Minor gaps exist (no CSS formatter, no HTML minifier), but the core self-help utility domain is well covered.

Available Tools

114 tools
age_calculatorAge CalculatorA
Read-onlyIdempotent
Inspect

An age calculator: your exact age in years, months and days, from a date of birth. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
asOfNoThe date to measure the age at, YYYY-MM-DD. Omitted, the server's own UTC date is used, which can be a day out for the caller near midnight, so pass it when the exact day matters. Must not be before the birth date. The response echoes the date it used.
birthYesDate of birth as YYYY-MM-DD. Read as a calendar date with no time zone, so the answer is the same wherever it is asked from.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no further behavioral context (e.g., authentication needs, rate limits, or side effects). It does not contradict annotations, but it also does not enrich them with any additional operational details, so a baseline 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that immediately states the tool's purpose. It is front-loaded and free of unnecessary details. The only minor addition, the HelpySelf branding, is a slight distraction but does not harm clarity or add meaningful length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple calculator with well-documented inputs, the description is mostly adequate. However, it does not specify the exact response format beyond the natural language 'years, months and days', and there is no output schema to clarify the structure. An agent might expect a specific JSON shape but has to infer it. The description could be more complete by mentioning that the response includes the asOf date used, but this is not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters (birth and asOf) have detailed descriptions including format, defaults, and timezone behavior. The tool description itself does not elaborate on parameters, but this is not required given the comprehensive schema. The baseline of 3 is correct since the schema carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('calculate') and resource ('age from a date of birth'), and explicitly lists the output granularity ('years, months and days'). It clearly distinguishes from sibling tools like date_difference (which computes arbitrary date differences) by focusing on age from a birthdate. The purpose is unambiguous and not a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as date_difference, business_days, or countdown_timer. The description only states what it does, leaving the agent to infer appropriate usage from the tool name and schema. No explicit exclusions or conditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app_background_previewApp Background PreviewC
Read-onlyIdempotent
Inspect

Find the app background image size that survives on every phone and tablet. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoHow the platform scales the image onto the screen. fill scales until both axes are covered and crops the overflow, centred; fit shows the whole image with empty bars (letterboxed); stretch shows the whole image distorted to the screen's shape; center shows a screen-sized window at native scale from the middle of the image.fill
kindsNoNarrow the check to phones, tablets or foldables. Omitted or empty, all three are included. Applied on top of devices, so the two filters compose. Leaving foldables in when you do not ship to one shrinks the safe area, because a foldable opened out is nearly square.
widthYesWidth of the artwork in pixels. Only the width-to-height ratio affects the crop, so any resolution with the same shape gives the same answer; the rectangles in the response are in these pixels.
heightYesHeight of the artwork in pixels, paired with width.
devicesNoWhich device shapes to check. Omitted or empty, every device is checked. Each id is one aspect ratio standing for all the models that share it; the response names those models. The safe area is the intersection across everything checked, so fewer devices means a larger safe area.
orientationsNoWhich orientations to check each device in. Omitted or empty, both portrait and landscape are checked, and both feed the safe-area intersection.
respectInsetsNoWhen true, the safe area is taken over the part of each screen not covered by the status bar, notch or home indicator, so it is safe from being covered as well as from being cropped. False (the default) considers cropping only.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds the scope that it covers phones and tablets, but it does not disclose details such as the safe-area intersection behavior, response format, or how scaling modes affect results. With annotations carrying the core safety burden, this is acceptable 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is concise and front-loaded with purpose. The second sentence, 'A HelpySelf tool (helpyself.com),' is brand filler that does not help an agent select or invoke the tool. The definition is short, but not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters, no output schema, and only a one-sentence description, there is little explanation of what the tool returns, how safe areas are represented, or how the result should be interpreted. The schema compensates for parameters but not for the missing output contract. The description is not complete enough for an unfamiliar agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter is already explained in detail, including mode semantics, device meaning, and safe-area intersection behavior. The description adds no parameter-specific information, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Find') and resource ('app background image size') and defines the desired outcome ('survives on every phone and tablet'). It is clear enough to identify the tool's core function, though it does not explicitly say it computes a safe area or crops. It does not differentiate among siblings, but there is no obviously similar sibling in the list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, no exclusions, and no mention of related tools like image_resizer or image_cropper. The context of 'app background' is implied but not stated as a condition. The agent is left to infer when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ascii_tableASCII TableB
Read-onlyIdempotent
Inspect

The full ASCII table, with the control codes explained rather than left blank. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoWhat to look up: a single character ("A"), a decimal code ("65"), hex ("0x41", "U+0041", "\x41"), binary ("0b01000001"), octal ("0o101"), an HTML entity ("&"), an abbreviation ("LF") or part of a name ("line feed", "sep"). Numbers return one entry; names return every match, best first. Plain digits are always decimal. Empty (the default) returns the whole table.
includeExtendedNoAlso include codes 128 to 255, read as ISO-8859-1 (Latin-1). ASCII proper stops at 127, so a search for a higher code finds nothing unless this is true.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive behavior, so the description only needs to add context beyond safety. It adds that control codes are explained rather than blank, which is useful but limited; return formatting is left unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core statement is short and front-loaded, with no wasted words before the key information. The brand sentence at the end is slightly extraneous but doesn't harm comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup with two richly documented parameters and strong annotations, the description is nearly sufficient. The main omissions are explicit output format and when-to-use guidance, but the tool's purpose is self-evident.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both search and includeExtended have detailed descriptions with examples and defaults. The tool description adds no parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource precisely — the full ASCII table including control-code explanations — so an agent can tell what the tool serves. It lacks an explicit action verb and doesn't contrast itself with related lookups, but the subject matter is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description doesn't state when to use this tool or when to prefer a sibling; it only identifies the content. The schema's search parameter gives lookup syntax, but the tool description itself provides no usage guidance or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auto_redact_pdfAuto Redact PDFC
Read-onlyIdempotent
Inspect

Auto redact PDF files: it finds the personal information, you confirm, the words are deleted. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe document's plain text, as extracted from the PDF, not the file itself. It is sent to a language model, which returns the personal names and postal addresses found in it, each exactly as written; the caller maps them back to positions. Emails, phone and card numbers are not returned, since patterns catch those locally. At least 40 characters and at most 120000.
languageNoThe language the document is most likely in, such as "Danish", passed to the model as a hint because it changes what a name looks like. A hint only: a wrong guess does not stop the text being read, and omitting it is fine.

TDQS

C2.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description directly contradicts annotations: it says 'the words are deleted,' implying mutation and destructive behavior, while annotations declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. This is an annotation contradiction, and the description also does not explain side effects, the confirmation workflow, or output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The functional sentence is short and front-loaded, but the final sentence 'A HelpySelf tool (helpyself.com)' is filler. The description is concise but slightly under-specified and includes a branding line that does not help an agent invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description does not say what the tool returns, how confirmation happens, or what a caller should do after the model finds personal information. The rich schema covers inputs, but the workflow and expected result are left entirely unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the parameter descriptions thoroughly explain text and language, including extraction constraints and model behavior. The prose description adds no parameter detail, but the baseline of 3 is appropriate because the schema carries the full meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action and object: auto-redacting PDF files by finding personal information and deleting the words after confirmation. This distinguishes it from sibling PDF tools such as pdf_merge or pdf_split, though it does not name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose this tool over alternatives, when not to use it, or what prerequisites apply. The reader must infer usage from the tool name and the one-line behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

average_calculatorAverage CalculatorB
Read-onlyIdempotent
Inspect

A mean median mode calculator, with standard deviation and the spread. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
numbersYesThe list of numbers as one string, separated by commas, spaces, line breaks or anything else that is not a digit, sign or decimal point. Use a decimal point, never a decimal comma: "1,5" is read as two numbers. Anything unparseable is skipped, and at least one number must remain. Returns mean, median, mode, range and both standard deviations.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is well covered. The description adds no further behavioral detail beyond the calculation itself. There is no contradiction, but the description also does not disclose extra behavior beyond what the schema and annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is compact and informative. The second sentence, 'A HelpySelf tool (helpyself.com)', is low-value branding filler but is brief and does not meaningfully hurt clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple single-parameter, read-only calculator, and the definition is sufficient: the schema explains exactly how to format input and what will be returned, while annotations cover safety. The missing output schema is mitigated by the parameter description explicitly listing the computed statistics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including parsing rules, separator handling, and return values. The tool-level description adds no parameter-specific detail, but it does not need to because the schema already carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a statistical calculator covering mean, median, mode, standard deviation, and spread. This distinguishes it from the many sibling calculators. It lacks an explicit verb like 'calculates', but the intended 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool or which alternatives might be more appropriate. The intended use case is only implied by the calculator name and output list, so an agent receives little routing help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avif_converterAVIF ConverterC
Read-onlyIdempotent
Inspect

AVIF to JPG, and JPG to AVIF — the format that halves a photograph. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe image file's bytes, base64-encoded: JPEG, PNG, WebP, GIF or AVIF. At most 30 MB decoded. An animated GIF is converted to a still of its first frame, and the response says so with note: "animation-dropped".
nameNoThe original filename. Only used to name the result: its extension is swapped for the output format's, so photo.jpg comes back as photo.avif.image.jpg
typeNoThe MIME type of the bytes in data. The image pipeline reads all of these; the actual format is taken from the bytes, so a wrong value here is not fatal.image/jpeg
formatNoThe format to produce. AVIF is what the tool is for; WebP, JPEG and PNG exist so an AVIF can be converted back to something older software opens.image/avif
qualityNoEncoder quality, 1 (smallest, roughest) to 100 (largest). Ignored for PNG, which is lossless. The default of 60 is deliberate: AVIF at 100 is often larger than the JPEG it replaces.
maxWidthNoScale the image down so its width is at most this many pixels, keeping the aspect ratio. Never enlarges. Omit to keep the original dimensions.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to repeat those. The only added behavioral claim is 'halves a photograph,' which addresses output size but not side effects or operational behavior. The description adds minimal value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core statement is concise and front-loaded, but the second sentence ('A HelpySelf tool (helpyself.com)') is filler that does not help an agent select or invoke the tool. It earns a 3 because it is short but contains an unnecessary component.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema and annotations, the description does not need to explain parameters or safety. However, it lacks usage guidance and does not fill the gap of when to use this tool versus image_converter or compress_to_size. The description is adequate but not complete for a tool with six parameters and sibling overlap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter fully documented in the input schema. The description itself does not add parameter semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: converts between AVIF and JPG, with the benefit of halving photograph size. It is not misleading, but it does not mention the tool's broader support for WebP/PNG output or non-AVIF inputs, nor does it explicitly distinguish it from sibling tools like image_converter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives. There are no exclusions, prerequisites, or explicit alternatives mentioned. The use case is implied by the name and first sentence, but the definition does not help an agent decide between this and similar image tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

background_removerRemove BackgroundA
Read-onlyIdempotent
Inspect

Remove the background from an image — solid backgrounds go transparent, in your browser. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe image file's bytes, base64-encoded. This removes a flat, single-colour background such as a white product shot or a scan; it is not a subject cutout for photos with busy backgrounds.
nameNoThe original filename. Used only to name the result, whose extension becomes .png because the output is always a PNG with transparency.image.png
typeYesThe MIME type of the bytes in data: JPEG, PNG or WebP.
reachNoedges (the default) removes only background connected to the image border, so enclosed areas like the hole in a letter or a window behind someone stay. everywhere removes every pixel within tolerance wherever it is.edges
colourNoThe background colour to remove, as #rrggbb hex. Omit to sample it from the four corners of the image; the response reports the colour used and whether the corners agreed on it.
featherNoHow soft the edge is, 0 to 100. It widens the band of partly transparent pixels around the tolerance threshold, as a percentage of tolerance; 0 gives a hard jagged cut.
toleranceNoHow far a pixel's colour may be from the background colour and still be removed, 0 to 100 as a share of the largest possible RGB distance. Raise it for uneven lighting or JPEG noise; too high eats into the subject.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the tool's safety profile is established. The description adds useful behavioral context beyond annotations: processing happens 'in your browser', the output is always a PNG with transparency, and the colour parameter description indicates the response reports the sampled colour and corner agreement. No contradiction with annotations was found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is well crafted and front-loaded with the core action and outcome. The second sentence — 'A HelpySelf tool (helpyself.com)' — is brand filler that does not help an agent select or invoke the tool, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With seven parameters, no output schema, and rich annotations, the definition covers the essential invocation details: input formats, default behaviours, tolerance/feather semantics, and the PNG-with-transparency output. The absence of an output schema is partially compensated by the statement that the result is always a transparent PNG and that the response reports the colour used, though the exact response envelope is unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already explains all seven parameters in detail, including enums, defaults, and behavioural nuances like 'reach' controlling connected vs. everywhere removal. The main description itself adds no parameter-level meaning, so the baseline of 3 for high schema coverage is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly names a specific operation ('Remove the background from an image') and the outcome ('solid backgrounds go transparent'), so an agent can tell this is a background-removal tool. It does not explicitly name sibling alternatives, but the schema's data parameter adds a useful boundary by noting it 'is not a subject cutout for photos with busy backgrounds.' The 'HelpySelf' branding contributes little to purpose clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description and parameter documentation give usable guidance on when the tool applies: only flat, single-colour backgrounds such as white product shots or scans, not busy-background subject cutouts. It does not name an alternative tool to use instead, but the when/when-not distinction is clear enough for an agent to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

barcode_generatorBarcode GeneratorA
Read-onlyIdempotent
Inspect

A barcode generator for EAN-13, UPC-A, EAN-8 and Code 128 — check digit included. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesWhat to encode. For ean13, upca and ean8 this is digits only: 12, 11 or 7 of them and the check digit is worked out, or one more and it is verified (a wrong one is refused rather than drawn). For code128 it is any printable ASCII up to 80 characters.
scaleNoWidth of the narrowest bar in pixels; every other width and the quiet zones are multiples of it, so this sets the overall size. 3 is about right for a screen.
heightNoHeight of the bars in pixels. The printed number and the longer guard bars add to the total height of the SVG when showText is true.
showTextNoPrint the encoded value underneath the bars, as a retail barcode always does. False gives bars only.
symbologyNoWhich barcode standard to draw. ean13 (13 digits, the retail default worldwide), upca (12 digits, North American retail), ean8 (8 digits, small packaging), code128 (letters, digits and punctuation, for labels and logistics).ean13

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds only 'check digit included' as behavioral context and does not state the output format, though the height parameter in the schema references SVG.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The main sentence is concise, front-loaded, and information-dense. The second sentence, 'A HelpySelf tool (helpyself.com),' is brand boilerplate that adds no value for an agent selecting or invoking the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With all five parameters richly documented in the schema and the read-only/idempotent annotations covering safety, the description is nearly sufficient. The only gap is the implicit return format, which the schema's height description mitigates by referencing the SVG output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with detailed descriptions for text, scale, height, showText, and symbology, including digit counts and check-digit validation rules. The description adds no parameter meaning beyond 'check digit included,' so the baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource ('barcode generator') and enumerates the exact symbologies supported: EAN-13, UPC-A, EAN-8, and Code 128, plus the check-digit behavior. This clearly differentiates it from siblings like qr_generator and barcode_reader without needing to open the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as qr_generator for 2D codes or barcode_reader for decoding. The intended use must be inferred from the name and format list rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

barcode_readerBarcode ReaderA
Read-onlyIdempotent
Inspect

A barcode scanner online — read a barcode or QR code from a photo or screenshot. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe image file's bytes, base64-encoded: JPEG, PNG, WebP, GIF or BMP. SVG is refused here (the server cannot rasterise it); convert it to PNG first.
typeNoThe MIME type of the bytes, such as image/png. Optional and only used to reject something that is plainly not an image; the format is otherwise read from the bytes.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the context that input is a photo or screenshot, which is mildly useful. It does not disclose output shape, failure modes, or practical limitations, but the annotation coverage lowers the burden, making a 3 appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core statement is one concise, front-loaded sentence that conveys the tool's purpose immediately. The appended brand line "A HelpySelf tool (helpyself.com)" adds no operational value and prevents a 5, but the description remains compact and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with rich annotations, a fully documented two-parameter schema, and no output schema, the description is largely complete. It could clarify what the tool returns (decoded payload text) and mention supported image types, but those are reasonably inferred from the schema and the phrase "read a barcode." Given the low complexity, the gaps are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters with 100% coverage, including format restrictions and the SVG limitation. The description adds no param-specific meaning beyond repeating the image-source idea of "photo or screenshot." Baseline 3 is correct because the schema carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: "read a barcode or QR code from a photo or screenshot." It identifies both the action (read) and the resource (barcode/QR code images), and the verb "read" implicitly distinguishes it from sibling tools like barcode_generator and qr_generator. However, it does not explicitly say what the result is (e.g., decoded text/value), leaving a minor ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the primary use case: decode a barcode or QR code from an image file. It does not explicitly state when to use this tool versus alternatives such as image_to_text, nor does it specify exclusion criteria. This is adequate but leaves the agent to infer routing based on the generic phrase "read a barcode or QR code."

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

base64Base64 Encoder & DecoderA
Read-onlyIdempotent
Inspect

Base64 encode and decode text instantly, with full Unicode support. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to encode, or the Base64 to decode, depending on action. Encoding goes through UTF-8 first, so accents, emoji and CJK survive. Decoding accepts standard or URL-safe Base64, with or without padding, and ignores whitespace.
actionNoencode turns text into Base64; decode turns Base64 back into UTF-8 text. Defaults to encode.encode
urlSafeNoWhen encoding, use the URL-safe alphabet (RFC 4648 section 5): + and / become - and _, and the = padding is dropped, as in JWTs. Ignored when decoding, which detects either alphabet.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds 'full Unicode support' and 'instantly', but the Unicode behavior is already detailed in the text parameter schema, and 'instantly' is a performance claim rather than a substantive behavioral disclosure. No error behavior or edge-case limitations are described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is short, front-loaded, and contains the essential information. The trailing 'A HelpySelf tool (helpyself.com)' is branding boilerplate that does not help an agent select or invoke the tool, preventing a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple pure-function tool with three fully documented parameters and safe, idempotent annotations, the description is largely complete. The absence of an output schema is not a major gap because the encoded/decoded result is directly implied by the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already fully documented. The description's 'encode and decode text' maps to the action parameter but adds no meaning beyond what the schema provides. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource pairing: 'Base64 encode and decode text'. It covers both directions of the operation and is unambiguous against siblings like url_encoder, binary_translator, or hash_generator because it names the exact algorithm and purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied clearly: use this tool when the user needs Base64 encoding or decoding. However, the description provides no explicit when-to-use vs alternatives guidance, no exclusions, and no mention of nearby tools that might appear similar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

binary_translatorBinary TranslatorA
Read-onlyIdempotent
Inspect

A binary translator both ways — binary to text, text to binary, hex and decimal too. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYesPlain text, or bytes written as binary, hex, decimal or octal. Groups may be separated by spaces or commas; hex also accepts 0x prefixes and unspaced pairs. Every other representation of the same bytes comes back at once, so there is no direction to choose. Text is treated as UTF-8, so "é" is two bytes.
readAsNoHow to read input. auto (the default) works it out: only 0s and 1s in whole bytes is binary, hex digits with a letter or 0x is hex, several zero-padded pairs is hex, several numbers up to 255 is decimal, anything else is text. Octal is never guessed, since "17" is valid octal and decimal, so name it explicitly. Byte values over 255 are refused.auto

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and side effects. The description adds only the 'both ways' conversion behavior; important behaviors like auto-detection, octal ambiguity, UTF-8 handling, and the all-representations-at-once return live in the schema rather than the description. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is short and front-loaded, stating purpose and scope. The second sentence ('A HelpySelf tool (helpyself.com)') is promotional and adds no functional value for an agent, so it does not fully earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Combined with the rich input schema and safety annotations, the definition is complete enough: an agent can determine what input to pass, how auto-detection works, and that all representations are returned at once. The top-level description is thin, but the surrounding structured data compensates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters are thoroughly documented with input formats, separators, prefixes, auto-detection rules, and the octal caveat. The top-level description adds no parameter-level detail, but the schema carries the full semantic burden, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific resource and conversion domain: a binary translator that works both ways, covering binary-to-text, text-to-binary, hex, and decimal. It differentiates from siblings like base64 and morse_code_translator by naming the exact formats it handles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The core use case is implied: translate between binary, text, hex, and decimal. However, the description does not explicitly state when to prefer this tool over alternatives or when not to use it, so the guidance remains implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bmi_calculatorBMI CalculatorB
Read-onlyIdempotent
Inspect

A BMI calculator in metric or imperial, worked out in your browser. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
feetNoThe whole-feet part of the height. Imperial only; ignored when metric. Either feet or inches may be left out, so 6 ft with no inches works.
unitsNometric (the default) reads weight as kg and height as cm; imperial reads weight as lb and height as feet plus inches. Also sets the unit of the healthy range returned.metric
heightNoHeight in centimetres. Required when units is metric and ignored when imperial, which takes feet and inches instead.
inchesNoThe inches part of the height, added to feet. Imperial only; ignored when metric.
weightYesBody weight, in kilograms when units is metric and in pounds when imperial. The healthy-weight range in the response comes back in the same unit.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide a strong safety profile: readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds one useful behavioral detail—'worked out in your browser'—which implies client-side execution. It does not disclose return behavior or edge cases, but the annotations lower the burden, and there is no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the essential 'BMI calculator in metric or imperial' phrase. However, the second sentence—'A HelpySelf tool (helpyself.com)'—is irrelevant filler that does not help an agent select or invoke the tool, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple stateless calculator with a detailed schema and clear read-only annotations, the description is minimally sufficient for selection and invocation. It does not explain the output payload, such as the computed BMI and healthy range, and it lacks routing guidance, but the schema and annotations cover most operational needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already documented including units, defaults, and ignored-when-metric/imperial behavior. The description only restates 'metric or imperial' and adds no meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a BMI calculator and adds that it supports both metric and imperial units, which is enough for an agent to recognize its primary purpose. It uses a noun phrase rather than a strong verb like 'computes', but the meaning is unambiguous and it is distinguishable from sibling calculators by the BMI subject matter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance about when to choose this tool over alternatives, nor any mention of related tools such as body_fat_calculator or calorie_calculator. The agent must infer usage solely from the title and the general 'BMI calculator' label.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

body_fat_calculatorBody Fat CalculatorB
Read-onlyIdempotent
Inspect

A body fat calculator that works from a tape measure, using the US Navy method. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
hipNoHip circumference at the widest point, in the unit named by system. Required when sex is female; ignored when male.
sexYesWhich of the two US Navy equations to use; they are not interchangeable. female needs a hip measurement and uses waist plus hip; male uses the waist alone.
neckYesNeck circumference measured just below the larynx, in the unit named by system. Must be smaller than the waist (or waist plus hip for female) or the request is refused.
waistYesWaist circumference, relaxed, in the unit named by system: at the navel for men, at the narrowest point for women.
heightYesStanding height, in the unit named by system.
systemNoThe unit every measurement is in. metric (the default) reads height, neck, waist and hip in centimetres and weight in kilograms; imperial reads lengths in inches and weight in pounds.metric
weightNoBody weight in kg (metric) or lb (imperial). Not part of the percentage; it is only used to also return fat mass and lean mass in the same unit. Omit it and those come back null.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the method and tape-measure basis but no additional behavioral details such as error conditions, refusal cases, or output format. Since annotations carry the safety burden, a 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and front-loaded with the core purpose and method. No wasted words; it's appropriately sized for a simple calculator tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal and doesn't mention the output (e.g., body fat percentage, fat mass/lean mass when weight is provided) or the conditional hip requirement for female subjects. While the schema covers parameters, the lack of output description leaves a gap for agents expecting a result format. However, the tool is simple and the schema is rich, so a 3 is fair.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter explained in detail (e.g., hip required for female, neck must be smaller than waist). The description adds no parameter-specific information beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific purpose: a body fat calculator using the US Navy method from tape measurements. It identifies the resource and method, distinguishing it from generic calculators, though it doesn't explicitly name sibling alternatives like BMI or calorie calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It doesn't mention prerequisites, exclusions, or context that would help an agent decide between this and other calculators. The agent must infer usage from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bulk_image_resizerBulk Image ResizerA
Read-onlyIdempotent
Inspect

A bulk image resizer for a whole folder at once, in your browser. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe image file's bytes, base64-encoded.
nameNoThe original filename. Echoed back unchanged as the result's name.image.png
typeYesThe MIME type of the bytes in data: JPEG, PNG or WebP. Also the output type when format is keep.
formatNoThe output format. keep (the default) re-encodes in the same type as the input; the others convert. JPEG has no transparency, so transparent areas are flattened onto white.keep
maxEdgeYesThe longest side of the result in pixels. The image is scaled down to fit inside this on its longer edge, keeping its aspect ratio. Never enlarges: an image already within the bound is returned as it is, with unchanged: true.
qualityNoEncoder quality for JPEG and WebP, 0.1 (smallest) to 1 (largest). Has no effect on PNG, which is lossless.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context by noting processing happens 'in your browser' (client-side, local, with privacy implications) and emphasizes batch operation. No contradiction with annotations found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is functional and front-loaded, conveying both scope and location efficiently. The second sentence, 'A HelpySelf tool (helpyself.com),' is brand boilerplate that adds no operational value. Overall concise, but not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description's 'whole folder at once' claim is not matched by the schema, which accepts a single base64-encoded image string (`data`), creating potential confusion about whether multiple images can be passed at once. With no output schema, return behavior is also unexplained. The rich per-parameter schema descriptions partially compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed parameter descriptions (e.g., base64-encoded data, maxEdge 'never enlarges', format's transparency behavior, quality's effect on JPEG/WebP only). The tool description adds no parameter-level detail, so the baseline 3 applies per the rubric.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'a bulk image resizer for a whole folder at once, in your browser.' The 'whole folder at once' phrasing clearly distinguishes it from the single-image sibling `image_resizer` present in the sibling-tools list. The identity and scope are immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: this is for resizing an entire folder of images at once, which implies batch rather than single-image use. However, it never explicitly names alternative tools (e.g., `image_resizer`) or states when not to use this tool, so it stops one step short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

business_daysBusiness DaysB
Read-onlyIdempotent
Inspect

Count forward or back a number of working days and see where you land. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysYesHow many working days (Monday to Friday, minus holidays) to move. Positive counts forward, negative counts back; zero is refused. More than 5200 either way is refused as too far.
holidaysNoDates to skip in addition to Saturdays and Sundays, YYYY-MM-DD each. No public holidays are assumed for any country, so pass the ones that apply. Omitted, only weekends are skipped. Those that fell on the path are listed in the response.
startDateYesThe date to count from, YYYY-MM-DD. Counting begins the day after it, so one working day from a Friday is the Monday. It may itself be a weekend or holiday; the response says whether it was a working day.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds the direction of counting and the working-day scope over that baseline. It does not disclose edge-case behaviors such as the exclusive start date or the lack of assumed public holidays, but those are covered in the schema and the annotation burden is low.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is concise and front-loaded, but the second sentence is promotional filler ('A HelpySelf tool (helpyself.com)') that provides no selection or invocation value. The definition is compact but not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the detailed parameter schema, safety annotations, and the tool's simple calculation nature, the description plus structured fields are largely sufficient for an agent to call it correctly. It still lacks a clear distinction from sibling date tools, but the schema fills the required invocation detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema explains days, holidays, and startDate in detail, so the description does not need to compensate. 'Forward or back' maps to the signed days parameter, but no additional parameter meaning is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete operation—counting working days—with direction (forward/back) and an implied result date, which separates it from generic date-difference tools among the siblings. Even without naming an alternative, the 'working days' scope and offset semantics make the tool's job unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to prefer this tool over sibling date/calendar tools such as date_difference or days_until_christmas, and no exclusions or prerequisites are stated. The only usage signal is the phrase 'working days,' which is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calorie_calculatorCalorie CalculatorC
Read-onlyIdempotent
Inspect

Work out how many calories you burn a day, and what to eat for a goal. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
ageYesAge in years. The equation was fitted on adults, so under 18 or over 100 the answer is still computed but reported as reliable: false.
sexYesEnters the Mifflin-St Jeor equation as a constant, and sets the lowest intake the tool will suggest: 1,200 kcal a day for female, 1,500 for male.
activityNoHow active a typical week is, multiplying resting metabolism to get maintenance calories: sedentary (little or no exercise, x1.2, the default), light (x1.375), moderate (x1.55), active (x1.725), athlete (very hard daily training, x1.9).sedentary
heightCmYesHeight in centimetres. Under 120 cm the answer is marked unreliable.
weightKgYesBody weight in kilograms. Under 30 kg the answer is marked unreliable.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is carried by structured data. The description adds nothing about behavioral details like output side effects or limitations beyond the schema's per-parameter reliability notes, but it does not contradict annotations or imply unsafe behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is effective and front-loaded with the core purpose. The second sentence, 'A HelpySelf tool (helpyself.com),' is vendor branding that does not help an agent select or invoke the tool, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and five parameters, the description should clarify what the tool returns and how the 'goal' aspect works, but it only gives a high-level promise of 'what to eat for a goal' without explaining how goals are expressed. The schema covers inputs well, but output behavior is left underspecified, leaving an agent uncertain about the response format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented with units, ranges, defaults, and reliability conditions. The description adds no parameter-level meaning; it only restates the high-level purpose, which keeps it at the baseline for fully covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear, specific function: it computes daily calorie expenditure and suggests what to eat for a goal. The verb 'work out' plus the resource makes it distinguishable from sibling calculators like bmi_calculator or body_fat_calculator, though the 'what to eat for a goal' portion is somewhat vague without a goal parameter in the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a general use case but no explicit guidance on when to use this tool versus alternatives. It does not name sibling tools, nor does it state when not to use it, so an agent would have to infer relevance from the name and short purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

case_converterCase ConverterB
Read-onlyIdempotent
Inspect

A text case converter: camelCase, snake_case, kebab-case and more. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to convert. It may already be in any case: camelCase, snake_case, kebab-case, acronyms like HTTPServer and digits are all split into words before being rebuilt.
targetNoThe case to produce: camel (helloWorld), pascal (HelloWorld), snake (hello_world), constant (HELLO_WORLD), kebab (hello-world), title (Hello World, small words like "of" kept lower unless first or last), sentence (first letter of each sentence capitalised, punctuation kept), upper or lower (the whole text, punctuation kept). Omit to get every case at once as a list.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no additional behavioral context (e.g., word-splitting behavior or multi-case output) beyond what the schema already states, so it neither enhances nor contradicts the annotations. This meets the baseline given annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the purpose, but the second sentence ('A HelpySelf tool (helpyself.com)') is promotional noise that does not help an agent. While the overall length is appropriate, not every sentence earns its place, preventing a higher score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with fully descriptive schemas and safety annotations, the description is sufficient. The only missing element is an explicit statement of return values, but the schema covers the 'omit target returns a list' behavior, so the agent has all necessary context to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'text' and 'target' fully documented including examples and the default behavior of omitting 'target'. The tool description itself adds no new parameter meaning, so the baseline of 3 applies as the schema carries the full burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('converts') and resource ('text case') with concrete examples (camelCase, snake_case, kebab-case), making the tool's function immediately clear. It also inherently differentiates from sibling tools by naming the exact domain, and the 'and more' hints at broader coverage without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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., slug_generator or text_diff). The description does not mention any context, prerequisites, or exclusions. Usage must be inferred entirely from the tool name and purpose, which is not sufficient for optimal agent selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

checksum_verifierChecksum VerifierA
Read-onlyIdempotent
Inspect

A checksum verifier: paste the published SHA-256 and check your download matches. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe file's bytes, base64-encoded. They are hashed with whichever algorithm expected implies and compared; the response is a match boolean plus both digests.
expectedYesThe published checksum, pasted as found: bare hex in either case, a whole SHA256SUMS line with the filename, a sha256: prefix as registries use, or a sha256-<base64> integrity value. The algorithm (SHA-1, SHA-256, SHA-384 or SHA-512) is read from the prefix or the digest length, never chosen. MD5 is refused.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool read-only, idempotent, and non-destructive, and the description does not contradict them. It adds only the comparison workflow and does not disclose facts like data being sent as base64 bytes or MD5 being rejected, though those are covered in the parameter descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The essential instruction is front-loaded in one short sentence. The second sentence ('A HelpySelf tool (helpyself.com)') is branding that doesn't help an agent invoke the tool, and 'A checksum verifier' partly repeats the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The parameter schema is unusually thorough, covering accepted checksum formats, MD5 refusal, algorithm detection, and the match-boolean-plus-digests response, which compensates for the lack of an output schema. The main gap is the top-level description's SHA-256-only framing, which understates the supported algorithms if read in isolation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the `data` parameter explaining base64 encoding and response contents and `expected` documenting accepted formats and algorithm inference. The tool description itself adds no parameter-level meaning, so the high-coverage baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete use ('paste the published SHA-256 and check your download matches'), clearly identifying a verification operation rather than generation. However, it frames the tool as SHA-256-only while the schema shows broader algorithm support, and it doesn't explicitly distinguish it from the sibling hash_generator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit scenario: verify a downloaded file against a published checksum by pasting the expected hash. It doesn't provide exclusions or route to alternatives, such as using hash_generator when the user only wants to generate a checksum.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

coin_flipCoin FlipB
Read-onlyIdempotent
Inspect

A coin toss you can trust — heads or tails, from real randomness. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoHow many times to flip, 1 to 1000. Every flip comes back in order, with a heads and tails tally beside them.
headsPercentNoChance of heads on each flip, as a percentage. 50 is a fair coin; 12.5 is honoured exactly rather than rounded to a whole percent.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that the tool is read-only, idempotent, and non-destructive, so the description does not need to repeat those facts. It adds 'real randomness' as a useful behavioral claim, but does not describe output shape or limitations; given the strong annotation coverage, this is acceptable 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core message is short and front-loaded, which is good, but the second sentence 'A HelpySelf tool (helpyself.com)' is branding rather than operational guidance. 'You can trust' also adds no concrete information, so the definition is not as tight as it could be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, read-only tool with thorough schema descriptions and safety annotations, the definition contains the essentials needed for a correct call. The exact return shape is only hinted at in the count parameter rather than explicitly specified, but the simplicity of the tool makes this a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description itself adds no parameter-level detail, but the input schema fully documents both count and headsPercent with defaults, ranges, and behavioral notes. With 100% schema description coverage, the schema appropriately carries the semantic load, so the baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as a coin toss producing heads or tails, and the 'real randomness' trait helps separate it from deterministic calculators. It lacks an explicit verb like 'flip' or 'generate' and does not name sibling tools, but the function is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose coin_flip over random_number_generator, random_picker, dice_roller, or wheel_of_names. The intended use must be inferred entirely from the name and generic coin-flip semantics, so an agent receives no routing or exclusionary context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

color_converterColour ConverterA
Read-onlyIdempotent
Inspect

A colour converter: HEX to RGB, RGB to HEX, and either to HSL. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
colorYesThe colour to convert, in any CSS form: #rgb, #rrggbb, #rrggbbaa, rgb()/rgba(), hsl()/hsla() or a colour name like teal. It comes back as hex, rgb and hsl, with the channels as numbers and a black-or-white text colour that reads on it.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide safety traits (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description doesn't need to repeat them. The description adds no new behavioral context beyond what the schema's parameter description already covers for the return value. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the core purpose effectively. The second sentence 'A HelpySelf tool (helpyself.com)' is branding that does not aid agent usage, but it is brief and not distracting.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with a comprehensive schema description and clear annotations, the description is complete. The schema's parameter description already explains the output format, so the description only needs to state the conversion scope, which it does fully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the parameter description is thorough, listing accepted CSS forms and detailing the output format. The tool description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('converts') and resource ('colour'), and explicitly enumerates the supported conversions: HEX to RGB, RGB to HEX, and either to HSL. This makes it clearly distinct from sibling converters like unit_converter or image_converter, whose purposes are different.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a user needs color format conversion, but it does not explicitly state when to use this tool over alternatives, nor does it mention excluded use cases like contrast checking. The context is clear, but there is no explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_two_listsCompare Two ListsB
Read-onlyIdempotent
Inspect

Compare two lists and see what is only in one, only in the other, and in both. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoIgnore space at either end of a line when comparing, so 'Alice ' and 'Alice' match. On by default.
listAYesThe first list, one entry per line. Order does not matter: each side is treated as a set, and the answer is what is only in A, only in B, and in both.
listBYesThe second list, one entry per line, compared against listA the same way.
ignoreCaseNoTreat Alice and alice as the same entry. On by default. The output keeps whichever spelling appeared first rather than lower-casing it.
ignoreBlankNoDrop empty lines rather than counting them as entries. On by default; off, a blank line on both sides shows up under both.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose the read-only, idempotent, non-destructive nature, lowering the burden on the description. However, the description adds no behavioral detail beyond the core outcome, which is also repeated in the schema. The tagline is irrelevant, so no extra context is provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is concise and front-loaded with the tool's purpose. However, the second sentence 'A HelpySelf tool (helpyself.com)' is filler that adds no operational value, preventing a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only utility with fully documented parameters and safety annotations, the description plus schema is sufficient for an agent to call it correctly. No output schema exists, but the result categories are self-evident from the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description itself does not discuss parameters, but it doesn't need to: the schema fully explains listA, listB, trim, ignoreCase, and ignoreBlank, including defaults and edge-case behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('compare') and resource ('two lists'), and precisely defines the three output categories ('only in one, only in the other, in both'). This set-based outcome clearly differentiates it from sibling tools like text_diff, which typically handles ordered line-by-line differences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as text_diff or duplicate_line_remover. There is no mention of contexts, prerequisites, or exclusions; the agent must infer usage from the parameter schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compound_interestCompound InterestB
Read-onlyIdempotent
Inspect

A compound interest calculator with regular deposits and any compounding frequency. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
rateYesThe nominal annual interest rate as a percentage: 5 means 5%. It is divided by the number of compounding periods a year, so the effective annual rate is returned too.
yearsYesHow long the money is left to grow, in years. Fractions are allowed and rounded to whole compounding periods. One row per year comes back for a table or chart.
amountYesThe opening balance, in whatever currency the caller is thinking in. It is counted as contributed money, so it never appears as interest.
frequencyNoHow often interest is added to the balance: 1, 4, 12 or 365 times a year. Defaults to monthly. More frequent compounding gives a slightly higher effective rate.
contributionNoAn amount paid in every compounding period, not every month or year: with daily compounding it is paid 365 times a year. Omitted or 0 means nothing is added.
contributeAtStartNoPay each contribution at the start of its period rather than the end, so it earns that period's interest. Off by default, which is the smaller answer.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only, idempotent, and non-destructive, so no safety behavior is missing. The description adds some functional context about regular deposits and compounding frequencies, but it does not disclose output shape, rounding behavior, or effective-rate behavior; annotations lower the burden here, making this acceptable but not strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in a single clear sentence, and there is no technical fluff. The trailing 'A HelpySelf tool (helpyself.com)' is brand filler that does not help an agent invoke the tool, keeping this from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The richly documented schema and read-only/idempotent annotations cover most operational needs, and parameter descriptions hint at returned rows and effective annual rate. However, with no output schema, a short statement about what the tool returns would make the description more self-sufficient; currently it relies heavily on parameter descriptions for that context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter coverage with rich descriptions, so the baseline is 3 even without parameter details in the description. The description only mentions deposits and compounding frequency at a high level and adds no per-parameter meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a compound interest calculator and adds useful scope with 'regular deposits and any compounding frequency,' so an agent can tell it from generic financial calculators. It lacks an explicit verb like 'calculates' and does not explicitly differentiate from sibling calculators such as loan_calculator, but the resource and scope are clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: whenever compound interest with deposits or a custom compounding frequency is needed. However, it gives no explicit when-to-use guidance, exclusions, or alternatives, leaving the agent to infer selection from the tool name and basic description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compress_to_sizeCompress Image to SizeB
Read-onlyIdempotent
Inspect

Compress image to 100KB, 1MB, or whatever exact size the form demands. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe image file itself, base64-encoded (no data: prefix). The result's data is the compressed file in the same encoding.
nameNoThe file name, echoed back in the response so a caller can keep it with the result. It does not decide the format; type does.image.jpg
typeYesThe MIME type of the bytes in data. A JPEG is re-encoded as JPEG; PNG and WebP input both come back as WebP.
targetKbYesThe size the output must not exceed, in kilobytes of 1,024 bytes, as upload limits mean it. The highest quality that fits is found by re-encoding; if none does, the response says so and suggests a scale factor to shrink the pixels by instead.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this read-only, idempotent, and non-destructive, so safety context is covered. But the description claims the tool compresses to an 'exact size,' while the targetKb schema explains the output 'must not exceed' the target and may fail to fit altogether—making the description somewhat misleading about actual behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is compact and front-loads the core purpose. The second sentence, 'A HelpySelf tool (helpyself.com),' adds no functional value and is filler, so the structure is acceptable but not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 4-parameter tool, the schema and annotations already cover the output format, MIME conversion behavior, failure handling, and size semantics. The description's only real gap is the slight overpromise of 'exact size' and missing sibling differentiation, but the overall call context is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has a detailed description covering base64 format, MIME behavior, echoed name, and targetKb semantics. The description itself adds no parameter-level detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('compress image') and a specific target outcome ('100KB, 1MB, or whatever exact size the form demands'). It is clear and mostly distinguishable from generic siblings like image_compressor, but it does not explicitly name or contrast those siblings, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'whatever exact size the form demands' implies the tool is for exact-size upload constraints, which provides some usage context. However, the description gives no explicit when-to-use/when-not-to-use guidance or alternatives, especially given the close sibling tools image_compressor, bulk_image_resizer, and image_resizer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contrast_checkerContrast CheckerC
Read-onlyIdempotent
Inspect

A colour contrast checker for WCAG accessibility levels. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoThe contrast ratio the suggestion must reach. Only used when suggest is true. 4.5 is WCAG AA for normal text, 3 is AA for large text, 7 is AAA.
suggestNoAlso return a suggestion: the foreground nudged lighter or darker until it clears target, as hex, or null if even black or white would not. Off by default.
backgroundYesThe colour behind the text, in the same forms as foreground.
foregroundYesThe text colour, as hex, rgb(), hsl() or a CSS colour name. A translucent colour is composited over the background before the ratio is taken.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, and non-destructive behavior, so the description does not need to repeat them. It adds only the WCAG domain context; it does not disclose the output shape or behavior beyond what the parameter schema already states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is short and the functional sentence is front-loaded, but the second sentence 'A HelpySelf tool (helpyself.com)' contributes no selection or invocation value. It is concise but only minimally informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should indicate what the tool returns, such as a contrast ratio or pass/fail result, and clarify when to prefer contrast_fixer or contrast_grid. The schema covers inputs and annotations cover safety, but the overall behavior is under-specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All four parameters are fully described in the schema with 100% coverage, so the description itself adds no parameter semantics beyond what an agent can read from the input schema. The target defaults and suggest behavior are already documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a colour contrast checker scoped to WCAG accessibility levels, which is specific enough to identify the operation. However, it uses a noun phrase rather than a verb and does not explicitly distinguish itself from contrast_fixer or contrast_grid.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to choose this tool over siblings such as contrast_fixer or contrast_grid, nor any mention of prerequisites or exclusions. The brand attribution sentence does not help with tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contrast_fixerContrast FixerB
Read-onlyIdempotent
Inspect

A colour contrast fixer — the nearest accessible colour that passes WCAG AA. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoThe WCAG grade to reach. AA is normal body text at 4.5:1, AA_LARGE is large text at 3:1, AAA is 7:1 and AAA_LARGE is 4.5:1. Defaults to AA.AA
adjustNoWhich colour may change. Only its lightness moves; hue and saturation are kept. 'either' tries both and returns the smallest change first. Defaults to either.either
backgroundYesThe colour behind the text, in the same forms as foreground.
foregroundYesThe text colour, as hex, rgb(), hsl() or a CSS colour name.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, and non-destructive behaviour, so the description does not need to cover side effects. It adds that the result is the nearest accessible colour passing WCAG AA, but it does not disclose that hue and saturation are preserved or that only lightness is adjusted; this detail is deferred to the parameter schema. The description's exclusive mention of AA is slightly misleading given the level parameter supports AAA.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is short and front-loaded: 'A colour contrast fixer — the nearest accessible colour that passes WCAG AA.' The trailing brand sentence 'A HelpySelf tool (helpyself.com)' is not useful for tool selection or invocation and does not earn its place, so the description is not maximally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and the input schema is richly documented, but there is no output schema and the description does not state what the tool returns—whether it returns a single adjusted colour, both colours, or a contrast ratio. It also fails to mention the adjustable AA/AAA levels or the 'adjust' behaviour, leaving an agent with some uncertainty about the result format and options.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already explained with meaningful detail, including enum meanings and defaults. The description adds no additional parameter-level information beyond restating the AA default, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a colour contrast fixer that produces the nearest accessible colour passing WCAG AA, so an agent can tell this modifies colours rather than merely checks contrast. It lacks a specific verb like 'adjusts' or 'returns', and it only mentions AA despite the schema supporting additional levels, which slightly narrows the stated purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given about when to use this tool instead of contrast_checker, contrast_grid, or color_converter. The name and description imply it fixes contrast, but there is no stated context, exclusions, or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contrast_gridContrast GridB
Read-onlyIdempotent
Inspect

A contrast grid for your whole palette — every pairing checked against WCAG. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoThe WCAG grade a pairing must clear to count as passing: AA is 4.5:1, AA_LARGE is 3:1, AAA is 7:1, AAA_LARGE is 4.5:1. Every cell still reports its own ratio and grade; this only decides the pass count. Defaults to AA.AA
paletteYesThe colours to check against each other, as hex, rgb(), hsl() or CSS colour names, separated by newlines, commas or spaces. CSS custom-property names are ignored, duplicates are dropped, and 2 to 24 distinct colours are needed.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds that all pairings are checked against WCAG, which reinforces scope but adds little behavioral context beyond what the annotations and schema already communicate. The branding sentence contributes no behavioral information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is tight, front-loaded, and conveys the core purpose efficiently. The second sentence, 'A HelpySelf tool (helpyself.com),' is promotional filler that does not help an agent select or invoke the tool, violating the expectation that every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, read-only tool with a richly documented schema, the description is mostly sufficient. However, it does not describe the output format of the grid, and it does not address the closely related sibling tools contrast_checker and contrast_fixer, which would help an agent choose correctly among them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with detailed parameter descriptions covering WCAG levels, defaults, color formats, separators, duplicate handling, and required count. The tool description adds no extra meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states that the tool evaluates every pairing in a palette against WCAG, which is a clear statement of what it does. It does not use an imperative verb, but 'every pairing checked against WCAG' conveys the operation and 'whole palette' defines the resource scope. It does not explicitly distinguish itself from the sibling contrast_checker, though the all-pairs framing implies a difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for your whole palette' gives a clear context for when this tool is appropriate: checking all color pairings rather than a single pair. However, it never names alternatives such as contrast_checker or contrast_fixer, nor does it state when not to use this tool. The usage guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

countdown_timerCountdown TimerC
Read-onlyIdempotent
Inspect

A 5 minute timer, a 10 minute timer, or any timer online — with an alarm. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoThe hours part of the duration. The three parts are added together and capped at 24 hours in total, then returned as milliseconds, as h:mm:ss text and as parts.
minutesNoThe minutes part of the duration. Defaults to 5, so an empty request is 05:00.
secondsNoThe seconds part of the duration.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the behavioral detail of 'with an alarm' and flexibility over durations, but it does not clarify whether the tool returns a timer page, computes duration values, or actually runs a countdown. This leaves ambiguity about the operational behavior beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence and concise, but not every word earns its place. The phrase 'A HelpySelf tool (helpyself.com)' is promotional and irrelevant to an AI agent selecting or invoking the tool. The core message is front-loaded, but the trailing branding reduces structural efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple three-parameter tool with no annotations carrying behavioral context beyond safety, and no output schema. The description fails to explain what the tool returns (e.g., duration in milliseconds, formatted text, parts) or the exact nature of the 'alarm.' An agent cannot confidently predict the tool's response, so the description is insufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameter semantics are fully documented in the schema. The description adds no meaningful parameter information beyond echoing '5 minute' and '10 minute' examples, which align with the default of minutes=5. It does not explain how parameters combine or the 24-hour cap, but the schema already covers these details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a timer with concrete examples (5-minute, 10-minute, any duration) and the alarm feature. It is easily distinguishable from all sibling tools, none of which are timer-related. However, it lacks a direct verb like 'starts' or 'creates,' and the phrasing is more marketing-oriented than operational.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. Since no sibling timer tools exist, the absence of alternatives is not critical, but the description does not state the appropriate context (e.g., 'Use when you need a countdown with an alarm') or any exclusions. The phrase 'any timer online' is a vague implication at best.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cron_expressionCron Expression ParserA
Read-onlyIdempotent
Inspect

Read a cron expression in plain English, and see exactly when it will next run. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoHow many upcoming runs to list, strictly after now, each as a wall-clock ISO string without an offset plus a readable form. Defaults to 5.
timezoneNoThe IANA time zone the schedule is read in, such as Europe/Copenhagen. Cron means wall-clock time, so the run times change with it. Defaults to UTC, and an unrecognised name falls back to UTC.UTC
expressionYesA five-field crontab expression (minute, hour, day of month, month, day of week) such as '*/15 9-17 * * MON-FRI', or a shorthand like @daily or @hourly. Names, ranges, lists and steps are accepted; Quartz seconds and L/W/# are not. It comes back explained in words with its next run times.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that the output is a plain-English explanation plus next run times, but it does not disclose any behavior beyond that, such as timezone fallback or count limits, which are left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The functional first sentence is short and front-loaded, which is good. However, the second sentence ('A HelpySelf tool (helpyself.com).') provides no selection or invocation value and should be removed, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only parser, the schema and annotations supply the necessary detail about required parameters, defaults, and output form. The description provides the high-level purpose, and although there is no output schema, the parameter descriptions already describe the returned list of ISO/readable run times, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with detailed descriptions, defaults, and constraints for expression, count, and timezone. The description itself adds no parameter-level meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact resource (a cron expression) and the function (explain it in plain English and show exactly when it will next run). This goes beyond the generic title and is clearly distinct from every sibling tool, none of which handle cron parsing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is implied: call this when you have a cron expression and need its upcoming run times. However, it does not explicitly state when to use it versus alternatives or mention exclusions, so an agent must infer the trigger from the phrasing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

csv_to_jsonCSV to JSONB
Read-onlyIdempotent
Inspect

CSV to JSON and back — turn a spreadsheet export into clean, readable JSON. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe data to convert: CSV text when direction is csv-to-json, or a JSON array of objects or arrays when it is json-to-csv. Quoted fields, embedded newlines and doubled quotes are handled.
trimNoStrip whitespace from both ends of every field and column name when reading CSV. On by default.
shapeNoThe JSON produced from CSV: 'objects' keyed by column name (duplicate names get a _2 suffix), or 'arrays' of values in column order. Defaults to objects.objects
typedNoConvert fields that look like numbers, true/false or null to those JSON types, and empty fields to null. Off by default so postcodes and codes like 007 stay strings.
headerNoTreat the first CSV row as column names, or write one when producing CSV. On by default. Off, every row is data and shape falls back to arrays.
indentNoSpaces of indentation in the JSON output. 0 puts it all on one line. Defaults to 2. Ignored when producing CSV.
delimiterNoThe field separator: comma, semicolon, tab or pipe. 'auto' (the default) picks whichever appears most on the first line outside quotes when reading CSV, and writes a comma when producing it. The one used is returned.auto
directionNoWhich way to convert. Defaults to csv-to-json. Going to CSV, the columns are the union of every object's keys and rows are joined with CRLF.csv-to-json

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds behavioral context beyond the title: it explicitly states the tool works in both directions ('and back') and promises 'clean, readable JSON,' which tells the agent about output quality. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and front-loads the core purpose in the first clause. The second sentence ('A HelpySelf tool (helpyself.com)') is branding and non-functional, which prevents a perfect score, but overall the text is tight and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 8 parameters and no output schema, but all parameters are documented in the schema. The description covers the basic idea of conversion and bidirectionality but does not explain the return format (text) or error behavior. Given the schema's completeness, this is adequate but leaves some gaps for an agent to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with detailed descriptions for all 8 parameters including direction, shape, typed, and delimiter behavior. The tool description itself contributes no parameter semantics, but the schema carries the full load, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource (CSV/spreadsheet export), the verb (turn/convert), and the output (JSON), and even notes the reverse direction. It does not explicitly differentiate from siblings like json_formatter, but its purpose is unambiguous given the title and wording.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (converting spreadsheet exports) but provides no explicit guidance on when to use this tool versus alternatives, no conditions or exclusions, and no mention of when not to use it. The user must infer when it is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

currency_converterCurrency ConverterA
Read-onlyIdempotent
Inspect

An exchange rate calculator using the European Central Bank's official daily rate A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesHow much of fromCurrency to convert, in major units (dollars, not cents). Negative is allowed, since a refund is a conversion too.
toCurrencyYesThe ISO 4217 code to convert into, such as EUR. The rate used is the ECB cross rate for the day, and the whole day's rate table comes back with the answer.
fromCurrencyYesThe ISO 4217 code of the currency the amount is in, such as USD. Case does not matter. Only currencies the European Central Bank quotes daily are known; an unknown code returns an error naming it.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds the useful behavioral detail that rates come from the European Central Bank's official daily rate, which aligns with the openWorldHint and gives the agent a sense of where data comes from and how current it is. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the essential ECB-rate behavior, but it is marred by a missing period and includes promotional filler ('A HelpySelf tool (helpyself.com)') that does not help an agent select or invoke the tool. It is concise but slightly sloppy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter calculator with strong annotations and rich schema descriptions (including the note that the full day's rate table returns with the answer), the description is mostly complete. An agent can select and invoke the tool correctly, though a brief explicit statement of the returned result would have made it fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline applies: the schema already documents amount, fromCurrency, and toCurrency thoroughly. The description adds no parameter-level meaning beyond labeling the tool an exchange rate calculator, which is acceptable but not additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as an exchange rate calculator using the ECB's official daily rate, which makes the core purpose clear and distinguishes it from generic conversion tools like unit_converter. It does not use an explicit verb such as 'converts,' but the meaning is unambiguous enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this is the currency conversion tool backed by ECB official daily rates, which implies it should be chosen when official ECB rates are desired. It does not explicitly name alternatives or exclusions, but the context is strong enough for an agent to differentiate it from sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

date_differenceDate DifferenceA
Read-onlyIdempotent
Inspect

How many days between two dates — plus weeks, months and working days. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
toDateYesThe other date as YYYY-MM-DD. It may be earlier than fromDate: the difference is counted between the two whichever way round, and direction in the response says forward, backward or same.
fromDateYesThe first date as YYYY-MM-DD, usually the earlier one. The answer gives years, months and days, the gap in days, the span counting both ends, whole weeks, and Monday-to-Friday working days (public holidays not excluded).

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is covered. The description adds valuable behavioral details: the output includes years, months, days, total days, span counting both ends, whole weeks, and working days (excluding public holidays). It also explains that dates can be in any order and direction is reported. This goes beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single functional sentence followed by a branding tag. The main purpose is front-loaded and concise. The branding sentence 'A HelpySelf tool (helpyself.com)' adds no functional value but is not harmful. Overall, it is appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no output schema, the description explains the output contents and the direction handling. It does not mention edge cases like invalid dates (though the schema pattern enforces format) or time zones, but for a date-only tool this is sufficient. The description covers the key information an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters have detailed descriptions explaining format and behavior. The tool description adds only a general summary ('How many days between two dates') without new parameter-specific detail. Baseline 3 is appropriate since the schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes the number of days between two dates, plus weeks, months, and working days. The verb is implicit but the resource is specific. It does not explicitly differentiate from siblings like business_days or days_until_christmas, but the description conveys a general date-difference utility.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives. It mentions working days, which overlaps with business_days, but does not say 'use business_days for holiday-aware calculations' or similar. No exclusions or alternative routing are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

days_until_christmasDays Until ChristmasB
Read-onlyIdempotent
Inspect

How many days until Christmas — counted in sleeps, not hours, and right across time zones. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNoThe day of the month. Defaults to the 25th. A day the month never has (30 February) is refused; 29 February counts to the next leap year. Whole calendar days are counted, the day itself is 0, and a date already passed rolls to next year.
monthNoThe month of the occasion, 1 to 12. Defaults to December. Pass month and day together to count to any yearly date, such as a birthday.
todayNoThe date to count from, as YYYY-MM-DD in the caller's own calendar. Defaults to today in UTC. The response repeats the date it counted from as countedFrom.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so no safety disclosure is needed. The description adds useful context about day-level counting and timezone awareness, but it does not mention default dates, rollover behavior, or return format; those details are left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The substantive sentence is short and front-loaded with the tool's purpose and unusual unit. The trailing 'HelpySelf tool' branding is filler that does not help an agent select or invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, optional-parameter tool, the combination of concise description and thoroughly documented schema is sufficient for correct invocation. Absence of an output schema is a minor gap because the description and the today parameter's note imply the response shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter has detailed semantics, so the description adds little beyond the schema. The timezone note weakly reinforces the 'today' parameter, but does not carry the semantic burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool counts days until Christmas, adding unit ('sleeps') and timezone behavior. It does not explicitly distinguish it from siblings like countdown_timer or date_difference, so it misses the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this over sibling tools, nor any when-not-to-use note. The phrasing implies use for a Christmas countdown, but no alternatives or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delisted_gamesDelisted GamesB
Read-onlyIdempotent
Inspect

Check whether a Steam game has been delisted — and when it went A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
gameYesThe game to look up: a name, a Steam store URL or a numeric app id, in one field. A name is matched against every game ever seen in the weekly Steam snapshots, including ones Steam's own search no longer finds, and up to 8 matches come back each with a status of listed, delisted, upcoming, gone or unknown.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds a hint about returning 'when it went' delisted, which suggests a date or timestamp, but the clause is incomplete and not further detailed. It adds marginal value beyond annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description contains an unfinished clause ('and when it went') and a promotional tag ('A HelpySelf tool (helpyself.com)') that does not earn its place. The core sentence is short but broken by these artifacts, making it less concise than it should be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description should at least clarify what the tool returns. It promises 'when it went' but doesn't complete the thought, leaving ambiguity about whether a date is included. The schema covers input thoroughly but not the return structure. For a simple one-parameter read-only tool, this is a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the game parameter is thoroughly documented in the schema, including accepted input formats and match behavior. The description itself does not elaborate on the parameter. Baseline 3 applies because the schema handles semantics completely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a specific verb and resource: 'Check whether a Steam game has been delisted — and when it went'. This clearly identifies the tool's function and scope. It doesn't explicitly contrast with sibling tools like game_collection, but the name and core action are specific enough to distinguish it. The trailing 'A HelpySelf tool (helpyself.com)' is a promotional artifact and slightly garbles the sentence, which keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives. However, the purpose itself implies usage: when you need to know whether a Steam game has been delisted and when. No exclusions or alternative tool names are mentioned. This matches an 'implied usage' level rather than any explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dice_rollerDice RollerC
Read-onlyIdempotent
Inspect

A dice roller for any number of sides, rolled in your browser. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
diceNoHow many dice to roll, 1 to 100: the 2 in 2d6+3. Each roll comes back separately along with their subtotal.
sidesNoFaces on each die, 2 to 1000: the 6 in 2d6+3. Every die rolls 1 to this number. Defaults to 6.
modifierNoA whole number added once to the total, not to each die: the +3 in 2d6+3. May be negative. Defaults to 0.

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare idempotentHint=true, which implies repeated calls with the same parameters produce the same result. A dice roller inherently produces random outcomes, and the description does not clarify or correct this contradiction, leaving an agent with misleading expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is concise and front-loaded, conveying the core purpose quickly. The second sentence about being a HelpySelf tool is brand filler that does not help with tool selection or invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with fully documented parameters, the description is mostly adequate. However, with no output schema, it should more explicitly state that the tool returns random individual rolls and a subtotal, especially given the idempotence contradiction.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the parameter descriptions already define ranges, defaults, and dice-notation roles. The tool description adds no parameter-level meaning, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as a dice roller with configurable sides and in-browser execution, going beyond a bare restatement of the name. It is clear about the resource being operated on, though it doesn't explicitly differentiate it from related random tools like coin_flip or random_number_generator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose this tool over its siblings. The description mentions 'any number of sides' and 'in your browser' but does not state typical use cases, exclusions, or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

duplicate_line_removerRemove Duplicate LinesB
Read-onlyIdempotent
Inspect

Remove duplicate lines, blanks and stray spaces from a list in one pass. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
keepNoWhich occurrence of a repeated line survives: 'first' keeps it where it first appeared, 'last' keeps it at its final position. Defaults to first.first
sortNoOrder of the output: 'none' keeps the input order, 'asc' and 'desc' sort alphabetically with locale-aware, numeric-aware comparison (item2 before item10), 'length' sorts shortest line first. Defaults to none.none
textYesThe lines to de-duplicate, separated by any line ending. The result is the text with repeats removed, in the original order unless sort says otherwise, plus counts of what was dropped.
trimLinesNoStrip whitespace from both ends of every line before comparing and before output. On by default. Off, trailing spaces make two lines different.
removeBlankNoDrop empty lines entirely rather than keeping one of them. On by default.
caseSensitiveNoTreat Apple and apple as different lines. Off by default, so they count as the same line and only the kept one survives.
onlyDuplicatesNoInvert the tool: return only the lines that appeared more than once, one entry each in order of first appearance, and leave the unique lines out. Off by default.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds a little behavioral context ('one pass', 'blanks and stray spaces') but does not disclose more consequential defaults like first-vs-last retention or case-insensitive matching, leaving much to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is tight and front-loaded, but the second sentence 'A HelpySelf tool (helpyself.com)' is promotional filler that does not help an agent select or invoke the tool. It earns a middling score because of that irrelevant addition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 7 parameters and no output schema, but the detailed per-parameter descriptions cover semantics and even output counts. The description alone is minimal, but combined with the rich schema it is just adequate; it lacks higher-level context about when deduplication with these options is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mentions 'blanks and stray spaces' which loosely corresponds to removeBlank and trimLines, but it does not add any parameter meaning beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Remove') with a clear resource ('duplicate lines') and adds scope: blanks and stray spaces in one pass. This clearly distinguishes it from siblings like text_diff or compare_two_lists, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over alternatives, nor any mention of use cases or exclusions. The phrase 'from a list' implies a scenario, but it never states when to prefer it over nearby tools such as compare_two_lists or word_counter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

exif_removerRemove EXIF DataA
Read-onlyIdempotent
Inspect

See what your photos reveal, then remove the EXIF data — without uploading them. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe image file as base64: a JPEG, PNG or WebP. The format is detected from the bytes, and files over 50 MB are refused.
nameNoA filename echoed back with a strip result. It does not affect what is removed.image.jpg
actionNo'inspect' lists the metadata found (camera, time, location) without changing the file. 'strip' returns the same image with that metadata removed, losslessly.strip
keepOrientationNoKeep the EXIF orientation flag when stripping, so a phone photo does not turn on its side. Set false to remove it with everything else.
keepColourProfileNoKeep the ICC colour profile when stripping. Set false to remove it too, which can visibly shift the colours on wide-gamut screens.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and destructiveHint=false, which the description does not contradict. The description adds valuable behavioral context: it works locally (no upload), the strip operation is lossless, files over 50 MB are refused, and the keepOrientation/keepColourProfile options affect output. It also reveals the dual-mode nature (inspect vs. strip). This goes beyond the annotations and gives the agent a clear sense of side effects and constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (two sentences) and front-loaded with the core purpose. The second sentence is a brand tagline ('A HelpySelf tool') which is harmless but adds no functional value. The first sentence effectively captures the tool's essence. No waste beyond the tagline, so it earns a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is moderately complex with five parameters and two actions. The schema already details all parameters, and the action parameter description explains what inspect and strip return. The description adds the crucial privacy aspect (no upload) and the size limit. There is no output schema, but the parameter descriptions cover return behavior. An agent has enough to call it correctly, so this is a 4.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter already has a clear description. The tool description adds minimal extra meaning beyond that; it reinforces the action parameter's purpose ('see what your photos reveal' maps to inspect) and the privacy aspect, but does not compensate for any missing schema info. With full coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear purpose: 'See what your photos reveal, then remove the EXIF data — without uploading them.' It names the specific resource (photos) and the action (remove EXIF, plus inspect). It differentiates itself from siblings like auto_redact_pdf or image_converter by focusing on EXIF metadata, though it doesn't explicitly name an alternative. The title reinforces the core purpose, so the intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage ('See what your photos reveal, then remove the EXIF data') but does not explicitly state when to use this tool versus alternatives or when not to use it. There is no mention of exclusions or conditions. The privacy angle ('without uploading them') hints at a key benefit but does not guide selection against other metadata tools. Since the context is clear but not explicit, this is a 3.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

favicon_generatorFavicon GeneratorB
Read-onlyIdempotent
Inspect

A favicon generator that turns any image into a complete set. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe source image as base64. A square image works best; a non-square one is cropped to a centred square before the sizes are made.
nameNoThe source file's name. Informational only; the outputs use fixed favicon names.image.png
typeYesThe MIME type of the source image: image/jpeg, image/png or image/webp.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint), so the description does not need to restate that. It adds the core transformation behavior but leaves 'complete set' unexplained and does not describe the response format. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and the main clause is front-loaded, which is good. However, the second sentence about HelpySelf is brand noise that does not help an agent select or correctly invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With well-described parameters and safety annotations, the definition is adequate for a simple tool. However, there is no output schema and the description does not clarify what the returned 'complete set' contains, which leaves an agent uncertain about the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all three parameters, so the baseline is 3. The description adds no parameter-level detail and even says 'any image', which is looser than the schema's restricted MIME-type enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as a favicon generator and states its core action: turning an image into a complete set. This goes beyond the title, but 'complete set' is vague and it does not differentiate from other generator tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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 tool should be used when a favicon set is needed from an image. There is no explicit guidance about when not to use it or which sibling alternatives might be better, especially given the many image-related tools present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_a_timeFind a TimeBInspect

Propose a few times, send one link, see when everybody can make it A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many days the poll link stays open from now. After that it expires.
noteNoA line shown under the title to the people answering, such as where to meet.
titleYesThe heading on the poll page, shown to everybody who opens the link. 'Coffee with the team', 'Board meeting'.
localeNoThe language of the poll page: one of en, de, es, fi, fr, it, nl, pl. Anything else, or nothing, gives English.
optionsYesThe times people choose between, at least 2 and at most 366. Duplicates are refused; they are sorted chronologically for the page.
timezoneNoThe IANA time zone the option times are written in, e.g. 'Europe/Berlin', so the page can say so. Omit it, or give an unknown zone, and the times are shown as written with no zone claimed.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal this is not a read-only tool, and the description adds context by showing it creates a shareable poll link. It does not explicitly state that a persistent poll is created, that the link expires, or what side effects happen server-side, though the schema's days parameter clues the expiry. No contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, but the phrasing is more of a user-facing tagline than a precise tool definition, and the trailing 'A HelpySelf tool (helpyself.com)' is promotional and adds no value to an AI agent. It could be more effective as one clear sentence such as 'Create a poll link to propose meeting times and collect availability.'

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the key user journey — propose times, share a link, see availability — which is enough to convey what the tool returns. It leaves operational details such as the need for at least two options and the title requirement to the schema, and with no output schema it does not clarify the exact response format beyond 'one link'. An agent can still invoke it using the schema, but the description alone is thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% description coverage for all six parameters, so the description does not need to explain them. The only parameter-related hint in the description is 'Propose a few times', which loosely maps to options; no additional meaning beyond the schema is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the core workflow — propose several time options, send one link, and see when everybody can make it — making the tool's purpose as a scheduling-poll creator clear. It is consumer-facing rather than a precise verb+resource statement like 'Create a scheduling poll', but it is specific enough to be distinguished from the many unrelated utilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when someone wants to coordinate a time that works for multiple people, and no sibling tool has a similar purpose. However, there is no explicit statement of when to use it versus alternatives or what prerequisites exist, so the agent must infer the usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fraction_calculatorFraction CalculatorA
Read-onlyIdempotent
Inspect

A fraction calculator for adding, subtracting, multiplying and dividing — exactly. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
operatorYesThe arithmetic to apply: add, subtract, multiply or divide fractionA by fractionB.
fractionAYesThe left operand as text: a fraction '3/4', a mixed number '2 3/4' or a whole number '5'. Negative values are allowed; decimals are not.
fractionBYesThe right operand, in the same forms as fractionA. Dividing by zero is refused.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds the word 'exactly', implying precise arithmetic rather than approximations, which is useful behavioral context. However, it does not mention output format, edge cases, or error handling beyond what the schema notes (division by zero). Given the annotations, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately states the core function and even includes a clarifying word 'exactly'. There is no fluff or irrelevant information, and it is appropriately sized for a straightforward calculator tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple calculator with fully documented parameters, the description covers the essential operation. The lack of output format is not critical given the tool's nature, and error handling is partially covered by the schema. The mention of 'HelpySelf' is extraneous but not harmful. Overall, an agent has enough information to call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% description coverage for all three parameters, including allowed forms (fractions, mixed numbers, whole numbers) and the operator enum. The description adds no additional parameter information, so the baseline of 3 is appropriate since the schema carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool performs addition, subtraction, multiplication, and division on fractions, with a clear verb and resource. It is distinct from the many other calculator tools in the sibling list because it is specifically for fraction arithmetic, so an agent can immediately identify its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given about when to use this tool versus other calculators. The name and description make it obvious for fraction operations, but there is no mention of alternatives or exclusion criteria, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fuel_cost_calculatorFuel Cost CalculatorB
Read-onlyIdempotent
Inspect

A fuel cost calculator for any drive — your units, your currency, split however you like. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesThe price of fuel per unit given by priceUnit, in any currency. The result comes back in the same currency, unconverted.
peopleNoHow many people share the cost. The total is divided equally between them.
distanceYesThe length of the journey one way, in the unit given by distanceUnit.
priceUnitNoThe unit the price is per: 'litre', 'gallonUk' (4.546 l) or 'gallonUs' (3.785 l).litre
returnTripNoDouble the distance to cover the journey back as well.
consumptionYesThe vehicle's fuel consumption, in the unit given by consumptionUnit. Note that for mpg a higher number means less fuel, for l/100km more.
distanceUnitNoThe unit distance is given in: 'km' kilometres or 'mi' miles.km
consumptionUnitNoThe unit consumption is given in: 'l100km' litres per 100 km, 'mpgUk' miles per imperial gallon, 'mpgUs' miles per US gallon, 'kml' kilometres per litre.l100km

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the tool's side-effect profile. The description adds the idea of flexible units, currency, and cost splitting, but this is more of a feature summary than a disclosure of behavior such as currency conversion or return format. It adds some context without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence and front-loads the main purpose, which is concise. However, the trailing 'A HelpySelf tool (helpyself.com)' is promotional noise that does not earn its place for an AI agent, slightly reducing the structural quality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a rich schema (8 parameters, enums, defaults, 100% coverage) and annotations that cover side-effect safety, so much of the necessary context is present. However, there is no output schema and the description does not state what the tool returns (e.g., total cost, per-person cost, or a breakdown), leaving an important gap for an agent invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all eight parameters are already well-documented. The description's mention of 'units', 'currency', and 'split' mirrors existing parameter descriptions without adding new detail. Since the schema carries the load, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a fuel cost calculator for drives, with a specific scope: 'any drive', 'your units, your currency, split however you like'. It is distinguishable from sibling calculators because 'fuel cost' is a unique capability among them. However, it reads like a tagline and does not explicitly name the primary inputs (distance, consumption, price), so it stops short of a fully precise definition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for any drive' implies the tool is suitable whenever a fuel cost estimate is needed, providing a loose usage context. It does not, however, offer explicit guidance on when to prefer this over other calculators, nor does it name alternatives or exclusions. This is an implied, rather than a deliberate, guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

game_collectionMy Video Game CollectionCInspect

Know what you own, share the list, and stop buying games you already have. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe list's title, in the collector's own words: 'PS2 for sale', 'Boxed SNES'.
noteNoA line shown under the title: what the list is for, or what its prices mean.
sharedNoWhether the public share link works for anybody who has it. Off by default, so the list is private to its owner until this is set.
consoleNoThe console the list is for, by its usual name ('PS2', 'SNES', 'Mega Drive', 'Game Boy Advance'); matching ignores case. It narrows the game search when adding. A name not on the known list is refused; omit it for a mixed list.
folderIdNoThe id of one of the caller's own folders to file the list under. An unknown id, or another account's folder, is refused.

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are present but all false (readOnlyHint=false, destructiveHint=false, etc.), providing minimal behavioral signal. The description adds no extra transparency about side effects, permissions, or return values, leaving it unclear whether the tool creates, updates, or reads a list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but spends its words on benefits and branding ('A HelpySelf tool (helpyself.com)') rather than front-loading the tool's actual function. It is under-specified rather than appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with five parameters and no output schema, this description is grossly incomplete. It does not state the core operation, when to use it, or any context needed for correct invocation, so an agent would be unable to determine when or why to call this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage with detailed descriptions for all five parameters. The tool description adds no parameter-level meaning, so it does not exceed the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a marketing slogan ('Know what you own, share the list, and stop buying games you already have') rather than a clear functional statement. It implies the tool manages a game collection list but never names the specific operation (create, update, etc.), and it does not differentiate from sibling tools like delisted_games.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. The description does not specify whether to call it to create a new list, update an existing one, or check ownership, nor does it mention any other tool as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gif_compressorGIF CompressorA
Read-onlyIdempotent
Inspect

Compress a GIF by the only three things a GIF has — frames, colours and size. Nothing uploaded. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
gifYesThe animated or still GIF file as base64. The result is also a GIF.
nameNoThe input filename. The result is named after it with '-small.gif' appended to the stem.image.gif
scaleNoA size factor per edge, 1 being the original size. Over the API only 1 is accepted; any other value is refused, because scaling happens in the browser tool alone.
coloursNoColours in each frame's palette, one of 256, 128, 64, 32, 16. Fewer colours make a smaller file at the cost of banding in gradients.
keepEveryNoDrop frames to shrink the file: 1 keeps every frame, 2 keeps every second one, 3 every third. Each kept frame takes on the delay of the frames dropped after it, so the animation runs for the same time.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds a meaningful non-redundant trait—'Nothing uploaded'—which signals that the GIF data is not sent to a server. It does not describe edge-case failures or output delivery, but it adds beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core purpose. However, the trailing 'A HelpySelf tool (helpyself.com)' is promotional filler that does not help an agent select or invoke the tool, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All parameters are fully documented in the schema, and annotations cover the read-only, idempotent, and non-destructive nature. The description itself is thin on operational context—no explicit output behavior or sibling differentiation—but for a simple stateless compression tool with rich schema coverage, it is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's 'frames, colours and size' conceptually maps to keepEvery, colours, and scale, but it adds no parameter-specific details beyond what the input schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Compress a GIF') and names the three compression levers (frames, colours, size), which makes the tool's purpose clear. It does not explicitly contrast it with related siblings like image_compressor or compress_to_size, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose statement implies this should be used when compressing a GIF, but there is no explicit guidance about when to choose it over sibling tools, nor any exclusions or prerequisites. 'Nothing uploaded' hints at privacy but is not a usage directive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gpa_calculatorGPA CalculatorA
Read-onlyIdempotent
Inspect

A GPA calculator on the 4.0 scale, weighted by the credits each course is worth. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
coursesYesThe courses to average. The GPA is the credit-weighted mean of their grade points.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds algorithmic transparency by specifying the 4.0 scale and credit-weighted mean, which is genuine behavioral context beyond the annotations. Edge cases are left to the schema, but the safety profile is already covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is short, front-loaded, and free of redundancy. The closing 'A HelpySelf tool (helpyself.com)' is brand boilerplate that does not help tool selection, so it prevents a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter fully documented in the schema and readOnly/idempotent annotations, the description plus schema is sufficient for correct invocation. The absence of an output schema and any statement of the return value is a minor gap, though 'calculator' implies a numeric or report result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter descriptions fully document courses, grade, credits, and edge-case handling. The description's 'weighted by the credits' restates what the credits field already says, adding no new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a GPA calculator on the 4.0 scale with credit weighting, which is more specific than the title alone. However, it lacks an explicit verb and does not contrast with sibling calculators such as average_calculator, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The term 'GPA' plus the credit-weighting note imply the intended classroom-use case, and the schema makes the course-list input clear. There is no explicit guidance about when to prefer this over sibling calculators, particularly average_calculator.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gradient_generatorCSS Gradient GeneratorA
Read-onlyIdempotent
Inspect

A CSS gradient generator for linear, radial and conic — copy the code straight out. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoThe kind of CSS gradient: 'linear' runs in a straight line at the angle, 'radial' spreads out from the centre, 'conic' sweeps round the centre.linear
angleNoDegrees, normalised to 0-359. For linear it is the direction the gradient runs, 0 pointing up and 180 down; for conic it is where the sweep starts. Ignored for radial.
shapeNoFor radial gradients only: 'circle' keeps the rings round, 'ellipse' stretches them to the box. Ignored for linear and conic.ellipse
stopsYesThe colours in order, from 2 to 16 of them.
repeatingNoEmit the repeating-* variant, which tiles the gradient over the box instead of stretching it once. Only visible when the stops have explicit positions short of 100.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it copies the code straight out, which implies the output is CSS code, but it does not elaborate on any other behaviors or requirements. This adds minimal value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the purpose and key features (linear, radial, conic, copy code). There is no wasted text; it is concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, the schema fully documents parameters, and annotations cover safety. The description mentions 'copy the code straight out,' which sufficiently indicates the output is CSS code, even without an output schema. It is complete enough for an agent to call correctly, though it could explicitly mention the output format more clearly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all five parameters documented in detail (type, angle, shape, stops, repeating). The description itself adds no parameter-specific information, so it relies entirely on the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a CSS gradient generator for linear, radial, and conic gradients, with the specific action of copying the code. This is a specific verb+resource that distinguishes it from other tools, and there are no sibling gradient tools to confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives, though no direct alternatives exist among siblings. The use case is implied by the name and description ('generator'), but there is no explicit guidance on when to choose it or any exclusions. This is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hash_generatorHash GeneratorC
Read-onlyIdempotent
Inspect

A hash generator for SHA-1, SHA-256, SHA-384 and SHA-512. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to hash. It is encoded as UTF-8 before hashing, exactly as given.
algorithmsNoWhich digests to compute, from SHA-1, SHA-256, SHA-384, SHA-512. One hex digest comes back per algorithm named.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond listing algorithms (which is already in the schema) and does not mention output format, encoding, or any edge-case behavior. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, which is efficient in length. However, the second sentence 'A HelpySelf tool (helpyself.com)' is brand attribution that does not help the agent select or invoke the tool, constituting wasted text. The functional sentence is front-loaded but the overall structure earns a mid score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and the schema plus annotations cover parameters and safety comprehensively. However, the description provides no way to distinguish this from the sibling 'checksum_verifier', which could lead an agent to select the wrong tool. For a tool with no output schema, the description should at least hint at what returns (e.g., hex digest), which is only in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both 'text' (UTF-8 encoding) and 'algorithms' (allowed values and hex digest return) are fully documented. The description repeats the algorithm list but adds no new semantic meaning beyond the schema, so it lands at the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is a hash generator for SHA-1, SHA-256, SHA-384, and SHA-512, which identifies the verb ('generator') and resource ('hashes') with specific algorithm support. However, it does not distinguish this tool from the sibling 'checksum_verifier' which also computes digests, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as checksum_verifier, base64, or other digest-related tools. There are no context hints, prerequisites, or exclusions—just a statement of what the tool does.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

image_compressorImage CompressorB
Read-onlyIdempotent
Inspect

Compress a JPEG, PNG or WebP to a smaller file, choosing quality or a target size. AVIF, HEIC, TIFF and BMP are browser-only and not accepted here. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe image file as base64, in the format given by type.
nameNoThe source filename, echoed back as the result's name.image.png
typeYesThe MIME type of the source image: image/jpeg, image/png or image/webp. HEIC, AVIF, TIFF and BMP are not accepted over the API.
formatNoThe output format. 'auto' always means WebP, which is usually the smallest. If the result would be no smaller than the input at the same size, the original bytes are returned unchanged.auto
maxEdgeNoShrink the image so its longer side is at most this many pixels, keeping the aspect ratio. Smaller images are left at their size; omit it to keep the dimensions.
qualityNoEncoder quality from 0.1 to 1 for JPEG and WebP output; lower means a smaller, softer file. PNG is lossless and ignores it.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description does not contradict them. The description adds the input-format constraint and the general effect of producing a smaller file, but it does not disclose details like unchanged-bytes behavior or the returned result shape; the schema partially covers these.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are concise and front-load the main action. The final brand sentence ('A HelpySelf tool') adds no operational value, and the unsupported 'target size' phrase introduces inaccuracy, so not every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter tool with fully described schema properties and safety annotations, the description provides enough selection-level context, including accepted and rejected formats. The main shortfall is the unbacked target-size claim, though the schema documents per-parameter behavior well enough that an agent can still invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented and the description does not need to restate them. The description adds little beyond the schema; its 'target size' claim suggests a parameter that does not exist, which slightly reduces trust in the prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a concrete action ('Compress') on specific formats (JPEG, PNG, WebP) and explicitly lists unsupported formats, so an agent can understand the tool's scope. However, the phrase 'or a target size' advertises a capability with no corresponding parameter in the schema and blurs the distinction with the sibling compress_to_size.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool—compressing supported image formats—and gives an explicit exclusion for AVIF/HEIC/TIFF/BMP. It does not name alternatives such as compress_to_size, avif_converter, or gif_compressor, and the 'target size' mention is misleading because no schema parameter supports it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

image_converterImage ConverterA
Read-onlyIdempotent
Inspect

Convert between JPEG, PNG and WebP, one file or many, with transparency flattened onto a colour you choose. HEIC and AVIF are browser-only and not accepted here. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe image file as base64, in the format given by type.
nameNoThe source filename. The result keeps its stem with the target format's extension.image.png
typeYesThe MIME type of the source image: image/jpeg, image/png or image/webp. HEIC, AVIF, TIFF and BMP are not accepted over the API.
targetYesThe format to convert to: image/jpeg, image/png or image/webp. It must differ from type; converting to the same format is refused. AVIF is not available over the API.
qualityNoEncoder quality from 0.1 to 1 when the target is JPEG or WebP; lower is smaller and softer. PNG is lossless and ignores it.
backgroundNoA CSS colour painted behind transparent areas when converting to JPEG, which has no transparency. Defaults to white. Ignored for PNG and WebP targets.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds transparency flattening behavior and format restrictions, which are useful beyond annotations. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, but the second sentence 'A HelpySelf tool' is branding and adds no functional value. Core action is front-loaded, but the extra branding is waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Schema covers all parameters and constraints (target must differ, quality range). Description explains core conversion and transparency handling. Missing explicit output description, but that is inferable. The 'one file or many' claim is not reflected in the schema, which accepts a single data field, creating slight ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. The description adds context about transparency flattening relating to the background parameter, but does not explain data/name/quality beyond schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Convert') and resource ('between JPEG, PNG and WebP'), clearly distinguishing it from siblings like avif_converter and image_resizer. The mention of 'one file or many' is slightly ambiguous but does not obscure the core purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for JPEG/PNG/WebP conversion and explicitly excludes HEIC/AVIF, but does not name alternative tools (e.g., avif_converter) or conditions for choosing them. No explicit when-not-to-use guidance beyond format restrictions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

image_cropperCrop ImageC
Read-onlyIdempotent
Inspect

Crop image online — drag the box, or type an exact size in pixels. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesThe crop box's left edge, in pixels from the left of the source image.
yYesThe crop box's top edge, in pixels from the top of the source image.
dataYesThe image file as base64, in the format given by type.
nameNoThe source filename. The result keeps its stem with the output format's extension.image.png
typeYesThe MIME type of the source image: image/jpeg, image/png or image/webp.
widthYesThe crop box's width in source pixels. A box that runs past the image is clamped to fit inside it, and never below 8 pixels.
formatNoThe output format. 'auto' keeps PNG and WebP sources in their own format, so transparency survives, and writes everything else as JPEG.auto
heightYesThe crop box's height in source pixels, clamped to the image like width.
qualityNoEncoder quality from 0.1 to 1 for JPEG and WebP output; lower is smaller and softer. PNG is lossless and ignores it.

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only, idempotent, and non-destructive, but the description adds no API-level behavioral context. The human-facing 'drag the box' language does not describe output format, clamping, or return behavior, which an agent would need beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence with the core verb front-loaded, so it is concise. However, 'drag the box' and the 'HelpySelf tool (helpyself.com)' branding are not useful to an agent and consume the only available sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, no output schema, and many image-related siblings, the description is too thin: it omits what the tool returns, how it relates to image_resizer/converter/compressor, and typical invocation context. The rich schema compensates for parameter understanding but not for selection and routing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema gives 100% description coverage for all 9 parameters, including enums, defaults, and clamping behavior, so the description doesn't need to repeat those details. The phrase 'type an exact size in pixels' loosely maps to width/height but adds no meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the operation ('Crop') and the resource ('image') clearly, and adds a hint of the interaction model. It doesn't explicitly distinguish itself from sibling tools like image_resizer or image_converter, but 'crop' is specific enough to convey the primary purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus image_resizer, bulk_image_resizer, image_converter, or image_compressor. 'Crop image online' implies the use case, but gives no exclusions, prerequisites, or alternatives, so an agent browsing the sibling list gets no routing help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

image_resizerImage ResizerC
Read-onlyIdempotent
Inspect

A photo resizer for any size — JPEG, PNG, WebP or an iPhone HEIC. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe image file as base64, in the format given by type.
modeNoHow the new size is given: 'dimensions' uses width and height in pixels, 'percentage' scales both sides by percentage and ignores width and height.dimensions
nameNoThe source filename. The result is named after its stem with the new size appended, e.g. 'photo-800x600.jpg'.image.png
typeYesThe MIME type of the source image: image/jpeg, image/png or image/webp.
widthNoThe target width in pixels, for the 'dimensions' mode. With keepAspect on, giving a width sets the height from it and any height given is ignored. Omitted with keepAspect off, the source width is kept.
formatNoThe output format: image/jpeg, image/png or image/webp. Omit it to keep the source format.
heightNoThe target height in pixels, for the 'dimensions' mode. With keepAspect on it only applies when width is omitted, and then sets the width from it.
qualityNoEncoder quality from 0.1 to 1 for JPEG and WebP output; lower is smaller and softer. PNG is lossless and ignores it.
keepAspectNoKeep the source proportions in 'dimensions' mode, so one of width or height drives the other. Set false to stretch to an exact width and height.
percentageNoThe scale for the 'percentage' mode, as a percentage of the source size per side: 50 halves both edges, 100 leaves it as is. Over 100 needs allowUpscale.
allowUpscaleNoAllow a result larger than the source on either side, up to 10000 pixels. Off by default, so enlarging is refused with an explanation rather than adding blur.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds little behavioral context, and what it does add is questionable: 'any size' conflicts with the 10000-pixel cap and allowUpscale being off by default, while HEIC support is not representable in the schema's type enum.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, stating the purpose in the first sentence. The second sentence is promotional boilerplate that does not earn its place, but overall the description is appropriately compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool with no output schema, the description is too thin. It does not explain what the tool returns, how it differs from bulk_image_resizer, or important constraints such as upscaling being disabled by default. The rich schema compensates somewhat, but the natural-language overview is not complete enough to guide reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, with detailed semantics for mode, keepAspect, percentage, quality, and related fields. The description itself adds no parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the core operation: resizing a photo, and lists common source formats. However, it does not differentiate this tool from siblings like bulk_image_resizer or image_cropper, and the claim of HEIC support conflicts with the input schema's type enum, which only permits jpeg, png, and webp.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose this tool over alternatives. There is no mention of single-image vs bulk use, output format conversion, or exclusions, so an agent gets no routing help despite siblings like bulk_image_resizer and image_converter existing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

images_to_pdfImages to PDFB
Read-onlyIdempotent
Inspect

JPG to PDF and PNG to PDF — photos to PDF, in the order you choose. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
imagesYesThe images in page order, one page each, at most 100 of them.
marginNoWhite space around the image on 'a4' and 'letter' pages, in PDF points (72 per inch; 144 is two inches). Ignored for 'fit'.
pageSizeNoThe paper size. 'fit' makes each page exactly the image's own pixel size, with no margins or letterboxing; 'a4' and 'letter' put every image on that fixed page, scaled to fit and centred.fit
orientationNoPage orientation for 'a4' and 'letter': 'portrait' or 'landscape' for every page, or 'auto' to turn a page landscape when its image is wider than tall. Ignored for 'fit'.auto

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile with readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the input-order guarantee and the supported image formats, but it does not disclose extra behavioral details like output delivery or any limitations beyond what the schema states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is compact and front-loaded with the conversion purpose. The trailing 'A HelpySelf tool (helpyself.com)' is promotional filler that does not help an agent, preventing a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the richly detailed schema and the safety annotations, the agent has enough information to invoke the tool correctly. The description states the output is a PDF and the schema covers all parameter semantics; only minor gaps like output-delivery detail remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents images, margin, pageSize, and orientation in detail. The description's 'in the order you choose' matches what the schema already says about the images array being in page order, so it adds little new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly conveys a conversion action: JPG/PNG images become a PDF, in an order chosen by the caller. It is specific about the resource and formats, though it does not explicitly compare itself to siblings like pdf_to_images or image_converter, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool rather than a sibling such as pdf_merge, image_converter, or pdf_to_images. The ordering feature hints at one use case, but the description gives no exclusions, prerequisites, or alternative-selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

image_to_textImage to TextA
Read-onlyIdempotent
Inspect

Image to text: read the words out of a photo — receipts, screenshots, handwriting. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoThe image file as base64, in the format given by type. Send this or fileId, not both. Anything a vision model can read works: a photo of a page, a screenshot, a scan.
modeNoWhat to return: 'text' is the words in reading order and nothing else; 'markdown' keeps headings and lists, which suits a document scan; 'table' transcribes a table as CSV.text
typeNoThe MIME type of the bytes in data: image/jpeg, image/png, image/webp or image/gif. Ignored when fileId is used, since the stored type wins.image/png
fileIdNoThe id of an image already uploaded to the caller's account, to read instead of data. Needs a signed-in caller; the upload is consumed by the run. Most scripts should send data instead.
languageNoThe language the text is most likely in, e.g. 'Danish', as a hint to the model. It is not a constraint: what is actually in the picture is transcribed.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds input examples but no additional behavioral traits like consumption of fileId or return semantics; it does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The main clause is concise and front-loaded: 'read the words out of a photo'. The trailing branding sentence 'A HelpySelf tool (helpyself.com)' does not help an agent select or invoke the tool, so it costs a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description, combined with fully documented parameters and safety annotations, gives an agent enough context to invoke the tool correctly. The absence of an output schema is mitigated by the mode parameter's clear explanation of what will be returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters already carry rich documentation. The tool description adds no parameter-level meaning, which matches the baseline of 3 when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'read the words out of a photo', with concrete use cases (receipts, screenshots, handwriting). It is immediately distinguishable from sibling tools like barcode_reader, which reads codes rather than words.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The examples 'receipts, screenshots, handwriting' give clear context for when to use the tool. It does not explicitly name alternatives or exclusion conditions, but no close OCR sibling exists in the provided list, so the implied usage is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoice_generatorInvoice GeneratorA
Read-onlyIdempotent
Inspect

A free invoice generator that makes a real PDF — no watermark, no sign-up. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesThe customer's name and address as free text; line breaks are kept.
pdfNoInclude the rendered PDF as base64 in pdfBase64. Set false to get only the number, due date and totals, which is faster and much smaller.
fromYesThe sender's name and address as free text; line breaks are kept.
itemsYesThe lines to bill, in the order they should appear.
notesNoFree text printed under the totals: payment details, bank account, terms, a thank-you. Empty prints nothing.
localeNoThe BCP 47 locale the amounts are formatted in, e.g. 'en-US' writes 1,234.56 and 'da-DK' writes 1.234,56. It does not translate the labels.en-US
numberNoYour own invoice number, printed as given. Overrides the one built from sequence.
currencyNoThe ISO 4217 currency code, e.g. 'USD', 'EUR', 'DKK'. It decides the symbol and decimals shown; an unknown code is refused with an error rather than guessed.USD
sequenceNoThe position in your invoice series, used to build the number as INV-<year>-<sequence padded to 4 digits>, e.g. 7 in 2026 gives INV-2026-0007. Ignored when number is given.
taxLabelNoWhat the tax line is called on the invoice: 'VAT', 'MwSt', 'Moms', 'GST'.Tax
issueDateYesThe date the invoice is issued, as YYYY-MM-DD. The due date is counted from it, and its year goes into the generated invoice number.
taxPercentNoTax added on top of the subtotal, as a percentage: 25 adds a quarter. 0 leaves the total equal to the subtotal.
paymentTermsDaysNoHow many days after issueDate payment is due. 0 means due on the issue date.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description need not repeat safety information. It adds 'real PDF' and 'no watermark, no sign-up', which provides some light behavioral context, but it does not detail return formats or error handling. Since these are partially addressed in the parameter descriptions Secret, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the core purpose, and uses concise phrasing. The second sentence about HelpySelf is minor brand attribution that an agent may not need, but it does not significantly detract from the overall clarity and compactness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters and no output schema, the description could provide more explicit details about the return object. However, the schema's parameter descriptions—especially for 'pdf' mentioning `pdfBase64`—partially compensate. The description adequately states the core purpose but leaves the exact response shape under-specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 13 parameters have descriptions in the input schema (100% coverage), so the description does not need to explain each one. The baseline of 3 applies because the schema fully documents parameters and the description adds no parameter-level semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as an invoice generator that produces a real PDF, using a specific verb and resource. It distinguishes itself from all sibling tools, none of which handle invoices, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool (generating invoices) and there are no competing sibling tools that require alternative routing. However, it does not mention any exclusions or prerequisites such as the need for valid currency codes or required parameters, though these are documented in the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

json_formatterJSON FormatterB
Read-onlyIdempotent
Inspect

A JSON formatter that validates and beautifies instantly — or minifies. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
jsonYesThe JSON text to work on. Invalid JSON comes back as an error naming where parsing failed.
actionNo'format' pretty-prints with the indent given; 'minify' strips all whitespace into one line; 'validate' only checks that it parses and returns the text unchanged.format
indentNoSpaces per nesting level when formatting, or 'tab' for one tab per level. 0 gives no indentation. Ignored by minify and validate.
sortKeysNoSort object keys alphabetically at every level when formatting, so two documents can be compared. Arrays keep their order. Ignored by minify and validate.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds only 'validates and beautifies instantly' which is more about functionality than behavior. It does not disclose return format or error behavior beyond what the parameter schema already states, so it adds minimal value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core description is a single sentence that front-loads the primary purpose. However, the second sentence 'A HelpySelf tool (helpyself.com)' is pure branding and adds no functional value, making it slightly wasteful. Overall concise and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is straightforward with a comprehensive schema and safety annotations. The description does not mention the return value (formatted JSON string), but the schema covers error handling for invalid input. It is adequate but not fully complete for an agent that needs to know the output format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (json, action, indent, sortKeys) having detailed descriptions. The tool description does not add any parameter-level meaning, so it relies entirely on the schema. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a JSON formatter that validates, beautifies, and minifies. It identifies the resource (JSON) and the actions (validate, beautify, minify), distinguishing it from sibling format converters like csv_to_json or sql_formatter by explicitly naming JSON.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for JSON formatting but provides no explicit guidance on when to use it versus alternatives, nor any exclusions. It does not mention 'use this when you need to format JSON' or compare to other formatters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jwt_decoderJWT DecoderB
Read-onlyIdempotent
Inspect

A JWT decoder that inspects JSON Web Tokens safely. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesThe JWT to decode: three base64url parts joined by dots. A leading 'Bearer ' is stripped. The header and payload are decoded and the signature is returned as is; nothing is verified, and the result says so.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description's 'safely' aligns with those annotations but adds little beyond them; more useful behavioral details live in the token property description rather than in the main description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the purpose. The sentence 'A HelpySelf tool (helpyself.com)' is non-functional branding and does not earn its place, which prevents a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only decoder, the combination of annotations and the detailed token property description gives an agent everything needed to call it correctly: input format, Bearer handling, decoded header/payload, signature passthrough, and explicit non-verification. No output schema exists, but the result content is sufficiently described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the token property description already explains the three-part format, Bearer stripping, decoding behavior, and non-verification. The main tool description adds no parameter semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (JSON Web Tokens) and a clear behavior ('inspects') while the title adds the decoding role. It is not a full 5 because it does not explicitly differentiate itself from sibling tools like base64, but JWT-specific scope makes the purpose clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use guidance, exclusions, or references to alternative tools. The use case must be inferred entirely from the tool name and the word 'decoder', which is minimal guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loan_calculatorLoan CalculatorB
Read-onlyIdempotent
Inspect

A loan calculator for the monthly payment, and how much of it is interest. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
rateYesNominal annual interest rate as a percentage, so 5.5 means 5.5% a year. 0 is a real case: an interest-free loan repaid in equal instalments.
yearsYesLength of the loan in years. Fractions are allowed and rounded to whole months, so 2.5 is 30 monthly payments.
amountYesThe principal borrowed, in whatever currency you are working in. Every figure in the answer is in the same units.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not contradict the annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false), which already establish this as a safe, non-mutating computation. Since the safety profile is covered by annotations, the bar is lower; the description adds the scope of what is computed (monthly payment and interest portion) but nothing about behavioral detail such as amortization assumptions, rounding behavior, or whether payments are equal installments.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is efficient and front-loaded with the tool's purpose. However, the second sentence ('A HelpySelf tool (helpyself.com)') is branding noise that adds no value for tool selection or invocation and does not earn its place in the description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a purely computational tool with fully documented parameters (100% schema coverage) and complete safety annotations, the description covers the essential remaining gap: what the output contains (monthly payment and interest portion), which matters because there is no output schema. An agent has enough to call it correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter is already well documented (rate as a percentage with 0 as a real case, years rounded to whole months, amount in any currency). Per the rubric, the baseline is 3 when the schema carries the load; the description adds no parameter-level meaning beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-object pair: calculating the monthly payment and the interest portion of it. Among many sibling calculators (BMI, calorie, compound_interest, salary, tip), this clearly identifies what distinguishes this tool as a loan repayment calculator. It doesn't explicitly name any sibling it is not, but the output specification ('monthly payment, and how much of it is interest') is enough to disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given for when to use this tool versus alternatives. The sibling list contains many calculators, some conceptually adjacent (compound_interest, salary_calculator, ratio_calculator), and the description gives no indication of when loan_calculator is the right choice, what prerequisites exist, or which situations it is not suited for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lorem_ipsumLorem Ipsum GeneratorB
Read-onlyIdempotent
Inspect

A lorem ipsum generator for placeholder text in mockups and layouts. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoWhat `count` counts. Paragraphs hold three to six sentences each and are separated by a blank line; sentences run on in one block; words come back as a single sentence.paragraphs
countNoHow many of `unit` to generate, up to 100. Three paragraphs when omitted.
startWithLoremNoOpen with the familiar "Lorem ipsum dolor sit amet, consectetur adipiscing elit". Off, and every word is drawn at random from the start.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and side effects. The description adds context about use in mockups and layouts but no behavioral details (e.g., output format, randomness behavior). It does not contradict annotations, so a 3 is appropriate – it adds minimal value beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, concise and front-loaded with the core purpose. The brand mention 'HelpySelf tool' is minor but not distracting. It's appropriately sized for a simple utility, though it could include usage context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool, the fully documented schema, and the absence of an output schema, the description is sufficient. It states what the tool does, and the output (placeholder text) is implied. An agent can reasonably infer return value and usage from the description and schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are fully documented in the schema itself. The description provides no additional parameter information, and per the rubric, the baseline is 3 when coverage is high. No compensation needed, but no added value either.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it's a lorem ipsum generator for placeholder text in mockups and layouts. It's specific and distinct from the large sibling list, though it doesn't mention the customizable units (paragraphs, sentences, words) which are in the schema. Overall 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. While no sibling is a direct substitute, the description fails to provide any context on when placeholder text is needed or how it fits into a workflow. This is a clear gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

markdown_to_htmlMarkdown to HTMLA
Read-onlyIdempotent
Inspect

Turn Markdown into clean HTML, with a preview you can trust. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe Markdown to convert: CommonMark plus the GitHub extensions (tables, strikethrough, task lists, autolinks). Links are limited to http, https, mailto, tel, ftp and relative URLs; other schemes are dropped.
breaksNoTurn every single newline into a <br>, the way chat apps do. Off, and only a line ending in two spaces breaks; other newlines join into the same paragraph.
allowHtmlNoPass any raw HTML in the Markdown through to the output instead of escaping it. Off by default, which is the safe choice: inline HTML can carry a script, so only turn this on for Markdown you wrote yourself.
headingIdsNoGive every heading an id derived from its text, made unique within the document, so a table of contents can link to it. Off, and headings carry no id.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description does not need to repeat those. However, it also adds no meaningful behavioral context — 'clean HTML' and 'preview you can trust' are vague quality claims rather than disclosures about behavior, output format, or limitations. With annotations present, the bar is lower, but the description still fails to add value beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise at two sentences. The first sentence is front-loaded and effectively communicates the purpose. The second sentence ('A HelpySelf tool (helpyself.com)') is a marketing tagline that does not help an agent select or invoke the tool, but it is short and not highly detrimental. The overall structure is clean, with minor fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple conversion tool with rich schema documentation and comprehensive annotations, the description is largely complete. The output is implied as HTML from the name and description. No output schema exists, but the return type is obvious. The only slight gap is the lack of an explicit statement about the output format, but this does not hinder correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, meaning all four parameters are already thoroughly documented in the schema. The description itself mentions no parameters and adds no additional semantic meaning beyond what the schema provides. A baseline score of 3 is appropriate because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Turn Markdown into clean HTML' — a specific verb and resource. There is no sibling tool with similar conversion functionality, so the description effectively identifies the tool's unique purpose. The tagline adds a minor quality claim but does not obscure the core intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use guidance, no alternatives, and no exclusions. It implicitly communicates that this tool should be used when converting Markdown to HTML, but it does not provide context for distinguishing it from other converters or mention any prerequisites. This is acceptable for a simple tool but lacks explicit usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mic_testMic TestC
Read-onlyIdempotent
Inspect

A microphone test that answers the real question — will they hear me? A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
samplesYesA block of decoded mono audio samples, each between -1 and 1. Loudness (RMS), peak and the verdict are judged over the whole block, so send a stretch of speech rather than a single frame; a peak at or above 0.99 counts as clipping.

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds only the 'will they hear me' framing and does not disclose storage, privacy, or result behavior beyond that; it does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but includes irrelevant branding ('A HelpySelf tool (helpyself.com)') and a marketing tagline. The useful content could be expressed in a single clause, so not every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only tool with a detailed schema and annotations, the description is mostly sufficient. However, it never explicitly states what the tool returns or how the verdict is presented, leaving the output semantics to be inferred from the schema's mention of 'verdict'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage and thoroughly explains the samples array, including range, meaning, and evaluation criteria. The description contributes no parameter-level detail, which is acceptable because the schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states this is a microphone test and implies it judges audibility ('will they hear me?'), but the first clause is a tautology of the tool name. It does not mention the actual mechanism (analyzing PCM samples) or the verdict it produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to choose this tool over similar tools like webcam_test, screen_recorder, or other diagnostic tools. There are no conditions, exclusions, or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

morse_code_translatorMorse Code TranslatorB
Read-onlyIdempotent
Inspect

A morse code translator both ways — text to morse code, and morse code to text. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesPlain text to turn into morse, or morse to turn back into text. Morse is dots and dashes with a space between letters and a slash (or two spaces) between words; middle dots and en or em dashes are accepted as well.
directionNoWhich way to translate. "auto" decodes when the input is nothing but dots, dashes, spaces and slashes, and encodes otherwise; "toMorse" and "toText" force one direction. Anything with no morse equivalent comes back as <x> and is listed in `unsupported`.auto

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds the core bidirectional behavior, but it does not disclose edge cases like unsupported characters or the auto-detection strategy; those are left to the schema's parameter descriptions. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core description is a single, front-loaded sentence that efficiently conveys the bidirectional capability. The appended 'A HelpySelf tool (helpyself.com)' is boilerplate that adds no operational value, keeping this from a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only, idempotent utility with a fully documented schema, the description is nearly adequate. The main gap is that the description does not mention what the output looks like or how unsupported characters are handled, though the schema's direction parameter touches on this. Overall, the combination of description and schema is sufficient for a tool of this simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters (text and direction) fully documented including examples and behavior. The tool description adds no parameter-level detail beyond what the schema already provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-resource pair: it translates Morse code in both directions (text to Morse and Morse to text). This makes the tool's purpose unambiguous and implicitly distinguishes it from unrelated translator siblings like binary_translator or base64, though it does not name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives. It does not mention any sibling tools, exclusions, or prerequisites, leaving the agent to infer usage solely from the title and name. The direction parameter description in the schema provides some behavioral context, but the tool description itself does not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pace_calculatorPace CalculatorA
Read-onlyIdempotent
Inspect

A running pace calculator: give any two of distance, time and pace to get the third. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoThe unit `distance` and `paceSecondsPerUnit` are read in. The answer always reports pace per kilometre and per mile, whichever was given.km
distanceNoHow far, in the unit named by `unit`. Give any two of distance, timeSeconds and paceSecondsPerUnit and the third is worked out.
timeSecondsNoTotal time in seconds, so 3150 is 52 minutes 30 seconds.
paceSecondsPerUnitNoPace in seconds per `unit`, so 315 with unit km is 5:15 per kilometre. Ignored when distance and timeSeconds are both given, since those two determine it.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare the tool read-only and idempotent, so the safety profile is covered. The description adds the core computation behavior but does not go beyond what the schema also conveys, such as ignored parameters or unit handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The main sentence is concise and front-loaded, clearly stating the tool's purpose and usage rule. The trailing branding sentence adds little value for an agent but is not distracting enough to warrant a lower score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple calculator tool with fully documented parameters and no output schema. The description plus schema gives an agent enough context to invoke it correctly, though the description itself could have been more explicit about return behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and each parameter has a thorough description with examples and constraints. The tool description adds little beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the tool does: compute the third of distance, time, or pace from the other two. It clearly identifies the domain (running pace) and distinguishes it from the many other calculator tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear usage rule: supply any two of distance, time, and pace to get the third. It does not explicitly list exclusions or alternatives, but the rule is specific enough that an agent can decide when to call this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

password_generatorPassword GeneratorA
Read-onlyIdempotent
Inspect

A password generator for strong random passwords, in your browser. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoHow many passwords to return, up to 50. Always an array.
digitsNoInclude 0-9.
lengthNoCharacters per password, 4 to 128. The reported entropy in bits grows with the length and with how many character sets are on.
symbolsNoInclude the symbols !#$%&*+-=?@^_~. Turn off for systems that refuse punctuation.
lowercaseNoInclude a-z. Every password is guaranteed at least one character from each set that is on, and at least one of the four sets must be on.
uppercaseNoInclude A-Z.
excludeAmbiguousNoLeave out I, l, 1, O, 0 and o, which are misread when a password is written down or read aloud. Slightly lowers the entropy.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, and non-destructive behavior, so the description adds value by noting the tool runs in the browser, implying local execution. It also promises 'strong random' passwords, though without cryptographic specifics. No contradiction with the annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is front-loaded in a single clear sentence. The secondary branding sentence about 'A HelpySelf tool' is filler for an AI agent, but the overall description is still short and appropriately scoped.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All parameters are optional and fully documented, annotations cover safety and idempotency, and the count property description states the return value is always an array. Combined with the browser-local context, an agent has enough information to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All seven parameters have full schema descriptions, including defaults, ranges, and behavioral guarantees such as at least one character from each enabled set. The description provides no additional parameter-level meaning beyond this already complete schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence identifies the resource (passwords) and function (generating strong random passwords), with 'in your browser' adding meaningful execution context. It is not a pure restatement of the name, though it lacks an explicit verb and direct sibling contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for strong random passwords' implies the intended use case, but the description never explicitly says when to use this tool over alternatives such as random_number_generator or hash_generator. Guidance remains implied rather than directly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pdf_compressCompress PDFA
Read-onlyIdempotent
Inspect

Reduce PDF size without turning the text into a picture. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe PDF to compress, base64-encoded (a data: URL prefix is stripped). The result comes back the same way in `data`.
nameNoFilename echoed back as `name` in the response. Used for nothing else.document.pdf
levelNoHow hard to squeeze the embedded JPEGs. light re-encodes at quality 0.82 with the longest edge capped at 2400 px, balanced 0.65 and 1800 px, strong 0.45 and 1400 px. Text, fonts and vector graphics are untouched at every level.balanced
structureOnlyNoLeave every image as it is and only rewrite the file structure with object streams. Saves a little on text-heavy documents and almost nothing on scans.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds the critical behavioral guarantee that text remains selectable and is not rasterized, which is not implied by the annotations. This is valuable context that goes beyond the structured metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is concise and front-loaded with the key purpose. However, the second sentence ('A HelpySelf tool (helpyself.com)') is filler that does not aid an agent in using the tool, adding a minor inefficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does not clarify the return format, but the data parameter's schema description explicitly states the result comes back base64-encoded in `data`. The tool is simple, and the schema covers input/output details, so the description is sufficient but not enriched with extra constraints or edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for all 4 parameters, each with detailed explanations (e.g., level enum and structureOnly semantics). The description adds no parameter-specific information, so it meets the baseline without enhancing beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (reduce) and resource (PDF size), and clarifies that it preserves text ('without turning the text into a picture'). This distinguishes it from image-centric compressors and clearly communicates the core function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives like compress_to_size or image_compressor. It does not mention conditions or exclusions, leaving the agent to infer suitability based on the name and short phrase.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pdf_mergeMerge PDFB
Read-onlyIdempotent
Inspect

Merge PDF files into one document. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesThe PDFs to join, in the order their pages should appear in the result. Needs at least two, and no more than 30 in one request.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description does not contradict them. It adds only the high-level output ('one document') and no extra operational context such as how the result is delivered or that originals are unmodified, which is acceptable given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is lean and front-loaded, but the second sentence ('A HelpySelf tool (helpyself.com)') is branding noise that does not help an agent select or invoke the tool. In a two-sentence description, this half-filler fails the every-sentence-earns-its-place test.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is low-complexity and the schema plus annotations cover input constraints and safety. However, with no output schema, the description does not explain how the merged document is returned or that input files remain untouched, leaving a small but real completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: files.data has base64/length semantics and files.name has a clear role. The description contributes no parameter-level detail, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Merge PDF files into one document') and clearly names the output artifact, distinguishing it from sibling PDF tools like pdf_split and pdf_compress. It is not a simple restatement of the title because it adds the single-document outcome.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to choose this tool over alternatives such as images_to_pdf or pdf_reorder, and no exclusion criteria. The schema's minItems/maxItems constraints imply card-of-files use, but the description itself leaves usage to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pdf_page_numbersAdd Page Numbers to PDFB
Read-onlyIdempotent
Inspect

Add page numbers to a PDF — starting where you want, skipping the pages that should stay clean. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe PDF to number, base64-encoded. A data: URL prefix is stripped.
fromNoThe first sheet to print a number on, counted from 1. Sheets before it are left clean, so passing 3 skips a title page and a contents page.
nameNoBase name for the output file; a .pdf ending is dropped and the response names it <name>-numbered.pdf.document
sizeNoFont size of the number in points. 10 when omitted.
formatNoHow the label reads. plain writes "3", of writes "3 of 20", page-of writes "Page 3 of 20". The total counts numbered pages rather than sheets, so an extract of three pages starting at 47 reads "47 of 49".plain
marginNoDistance from the page edge to the number, in points (1/72 inch). 28 when omitted, about a centimetre.
startAtNoThe number printed on the first numbered sheet; later sheets count up from it. 1 by default; an extract from a longer bundle might start at 47.
positionNoWhere the number sits on each page: bottom-centre, bottom-right, bottom-left, top-right or top-centre. `margin` is measured in from those edges.bottom-centre

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description need not restate it. It adds 'starting where you want, skipping pages', but that is parameter-level behavior rather than tool-side effects; no return format or file-handling behavior is disclosed. There is no contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The tool is described in two short sentences with the main capability front-loaded. The second sentence ('A HelpySelf tool (helpyself.com)') is brand boilerplate that does not help an agent select or invoke the tool, preventing a top score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All 8 parameters are fully described in the schema, and annotations cover the non-destructive/idempotent behavior, so the description does not need to repeat those. However, with no output schema the description also does not state what the agent receives back (e.g., a newly generated numbered PDF), relying on the `name` parameter's mention of '-numbered.pdf'. For a tool with this complexity this is minimally adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter has a meaningful schema description, so the description needs to add little. It only gestures at `from`/`startAt` via 'starting where you want' and adds no syntax, defaults, or relationships beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states the verb and resource ('Add page numbers to a PDF') and immediately adds key customization ('starting where you want, skipping the pages that should stay clean'), which distinguishes it from sibling PDF tools such as pdf_merge or watermark_pdf. It is not merely a tautology, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use instruction, and no sibling alternative is named. The phrase 'skipping the pages that should stay clean' implies a scenario such as skipping title or contents pages, but leaves the agent to infer the exact selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pdf_reorderReorder PDF PagesB
Read-onlyIdempotent
Inspect

Rearrange, rotate and delete pages from a PDF, then save it back out. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe PDF to rebuild, base64-encoded. A data: URL prefix is stripped.
nameNoBase name for the output file; a .pdf ending is dropped and the response names it <name>.pdf.document
orderNoSource page numbers, 1-based, in the order they should appear, as "3, 1, 2". A range may run backwards, so "10-1" reverses a ten-page document. Leave a page out to delete it and repeat one to duplicate it. Omit to keep every page in its current order.
rotationsNoExtra clockwise rotation per source page, as {"2": 90}. Added to whatever rotation the page already has, and keyed by source page rather than output position, so it holds good after a reorder.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool readOnly, idempotent, and non-destructive; the description adds that it produces a rebuilt PDF. The word 'delete' sits in tension with the safety annotations but is clarified by the order parameter (omitting a source page), so there is no direct contradiction. However, the description adds little beyond what the annotations already signal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is a tight, front-loaded summary of the operations and output. The second sentence ('A HelpySelf tool (helpyself.com)') is brand noise that does not earn its place and could be removed without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Together with the schema, the description covers ordering, deletion, duplication, reverse ranges, source-page-keyed rotations, and output file naming. There is no output schema, but the annotations and parameter descriptions provide enough for an agent to invoke this correctly, with only a minor gap around the exact response form.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has a detailed description covering 1-based ordering, reverse ranges, deletion/duplication semantics, source-page-keyed rotations, and output naming. The tool description itself contributes no additional parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a clear resource (a PDF) and three specific verbs (rearrange, rotate, delete), and states the outcome ('save it back out'). It is clearly distinguishable from most siblings, though it overlaps with pdf_rotate and does not explicitly call out that difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a use case (reordering, rotating, or deleting pages in a PDF) but provides no guidance on when to prefer this tool over the overlapping pdf_rotate sibling or other PDF tools. There are no exclusions, prerequisites, or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pdf_rotateRotate PDFA
Read-onlyIdempotent
Inspect

Rotate PDF pages the right way up — sideways or upside-down. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe PDF to rotate, base64-encoded. A data: URL prefix is stripped.
nameNoBase name for the output file; a .pdf ending is dropped and the response names it <name>-rotated.pdf.document
onlyNoFilter the selected pages by their current orientation: landscape turns only pages wider than tall, portrait only pages taller than wide, all turns every selected page. The response lists which pages actually turned.all
angleNoClockwise rotation in degrees, added to whatever rotation each page already has. Lossless: nothing is re-rendered. A quarter turn when omitted.
pagesNoWhich pages to rotate, counted from 1: single pages and ranges separated by commas, such as "1-3, 7, 12-", where an open end runs to the last page. Omit for every page.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety and side-effect behavior are covered structurally. The description adds a small amount of contextual behavior by framing rotation as orientation correction, but it does not disclose details like whether the original file is untouched or what the output response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is concise, front-loaded, and conveys the core purpose effectively. The second sentence, 'A HelpySelf tool (helpyself.com)', is branding filler that does not earn its place, preventing a top score, but overall the description is compact and free of redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With five parameters all documented in the schema and no nested objects, the definition is largely self-sufficient. The description itself is terse, but the schema covers rotation angle, page selection, orientation filtering, and output naming, so an agent has enough context to invoke the tool correctly even without a detailed prose explanation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already thoroughly documents all five parameters, including angle constraints, page ranges, orientation filtering, and output naming. The description itself adds no parameter-level meaning beyond the casual 'sideways or upside-down' phrasing, which loosely maps to the angle enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly names the verb and resource: 'Rotate PDF pages', and the parenthetical 'sideways or upside-down' clarifies the range of orientation corrections. It is readily distinguishable from sibling tools like pdf_merge, pdf_split, and pdf_reorder, though it does not explicitly name or differentiate itself from a sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'the right way up — sideways or upside-down' implies this tool is for fixing misoriented pages in a PDF, which gives some usage context. However, it provides no explicit guidance on when not to use it or which alternative tool to choose among the many PDF-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pdf_splitSplit PDFA
Read-onlyIdempotent
Inspect

Extract pages from a PDF or split it into separate files. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe PDF to split, base64-encoded. A data: URL prefix is stripped.
modeNoextract returns one PDF holding the selected pages; single returns one PDF per selected page. `files` in the response is an array either way.extract
nameNoBase name for the output files; a .pdf ending is dropped. extract mode names the result <name>-extracted.pdf, single mode <name>-page-N.pdf per page.document
pagesNoWhich pages to take, counted from 1: single pages and ranges separated by commas, such as "1-3, 7, 12-", where an open end runs to the last page. The order given is kept, so "3, 1" puts page 3 first. Omit for every page.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and a non-destructive profile, so the safety burden is largely carried. The description adds no behavioral details beyond the core extract/split behavior, but it does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is concise and informative. The second sentence, 'A HelpySelf tool (helpyself.com),' is boilerplate that does not earn its place, but the overall description remains short and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The rich input schema fully documents mode, pages, and naming conventions, and annotations cover safety. The main gap is the absence of an output schema or description of the returned file representation, but this is minor given the otherwise complete structured metadata.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters, including mode, page syntax, and naming. The description adds no parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Extract pages from a PDF or split it into separate files.' It captures both primary modes and clearly differentiates from siblings like pdf_merge and pdf_reorder.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies splitting/extraction use cases but gives no explicit guidance about when to choose this tool over alternatives such as pdf_merge, pdf_reorder, or pdf_rotate. There are no stated exclusions or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pdf_to_imagesPDF to ImagesA
Read-onlyIdempotent
Inspect

PDF to JPG, PDF to PNG — every page as an image, at the size you need. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe PDF to render, base64-encoded. A data: URL prefix is stripped.
nameNoBase name for the image files; a .pdf ending is dropped and pages are named <name>-01.png and so on, zero-padded to the page count. Also names the ZIP when `archive` is on.document.pdf
sizeNoLongest edge of each image in pixels: thumbnail 480, screen 1280, print 2480. A request estimated at more than 120 megapixels in total is refused before rendering, so ask for fewer pages or a smaller size.screen
typeNoImage format for every page. PNG is lossless; JPEG and WebP are much smaller and honour `quality`.image/png
pagesNoWhich pages to render, counted from 1: single pages and ranges separated by commas, such as "1-3, 7, 12-", where an open end runs to the last page. Omit for every page.
archiveNoReturn one ZIP of every image, base64-encoded in `data`, instead of an `images` array with one base64 string per page. Easier to handle for a long document.
qualityNoCompression quality for JPEG and WebP, 0.1 to 1, where 1 is the largest file and the best picture. Ignored for PNG.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), and the description is consistent with them. It adds useful behavioral context beyond the annotations: every page is rendered as an image, and output size is selectable. This is meaningful because 'PDF to images' alone does not specify whether the result is one image per page or a single combined image.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core function is front-loaded in a single dense sentence with zero wasted words. The second sentence, 'A HelpySelf tool (helpyself.com)', is a branding tagline that adds no operational value for an agent, which prevents a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema thoroughly documents all seven parameters, including defaults, enums, size behavior, and the archive response modes, while annotations cover the read-only and idempotent nature. With that structured richness, the short description is adequate; the only minor gap is an explicit statement of the full response envelope, but the schema's `archive` description already references both the images array and the ZIP form.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter carries a full description with defaults, enums, and behavioral notes (e.g., the 120-megapixel refusal under size, the ZIP vs images-array behavior under archive). The tool description adds nothing about parameters beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear conversion action: 'PDF to JPG, PDF to PNG — every page as an image, at the size you need.' It names the resource (PDF), the output form (images), and the per-page cardinality, which distinguishes it from siblings like pdf_to_word, images_to_pdf, pdf_merge, and pdf_split without needing to open the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys the context in which the tool applies — rendering PDF pages as image files at a chosen size — which is sufficient to pick it over the many PDF siblings. However, it does not explicitly name alternatives or state when-not-to-use conditions, so it stops short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pdf_to_wordPDF to WordA
Read-onlyIdempotent
Inspect

Convert PDF to Word — tables, pictures and all — in your browser A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe PDF to convert, base64-encoded (a data: URL prefix is accepted). It needs a text layer: a scan with no text is refused with `no_text` rather than turned into an empty document. Refused above 25 MB decoded.
keepPageBreaksNoStart a new page in the Word document wherever the PDF started one. Off by default, so the text reflows and the Word page count may differ from the PDF's.

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/destructive annotations, the description adds meaningful behavioral context: the conversion happens in the browser, scans without a text layer are refused with `no_text`, decoded input above 25 MB is rejected, and keepPageBreaks defaults off causing Word page count to differ. This is strong transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core instruction is front-loaded in a single sentence, but the phrase 'A HelpySelf tool (helpyself.com)' is marketing filler that does not help an AI agent select or invoke the tool. It is concise but not every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Input constraints are well covered by the schema, and behavior around text layers and page breaks is explained. However, with no output schema, the description does not say how the converted Word document is returned (file, URL, binary payload), leaving some operational ambiguity for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters (`data` and `keepPageBreaks`) are already well explained in the schema. The description adds only general output-fidelity context ('tables, pictures and all'), not parameter-specific semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Convert') and resource ('PDF to Word') and adds that tables, pictures, and browser execution are involved. It is clear enough to be distinguished from siblings like word_to_pdf or pdf_to_images, though it does not explicitly name or contrast a sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to choose this tool over alternatives such as pdf_to_images or word_to_pdf, and no exclusions are stated. The text-layer and size constraints are feasibility conditions rather than usage-routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

percentage_calculatorPercentage CalculatorC
Read-onlyIdempotent
Inspect

A percentage increase calculator — and the other three sums people mean. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
aYesThe first number, as a plain number with no % sign: the percentage in of, the part in what, the starting value in change and adjust.
bYesThe second number, as a plain number: the whole in of and what, the end value in change, the percentage to change by in adjust.
modeYesWhich sum to do. of: a percent of b (15, 80 gives 12). what: a as a percentage of b (12, 80 gives 15). change: the percentage change from a to b, measured against a (80, 92 gives up 15). adjust: a changed by b percent (80, 15 gives 92; a negative b is a discount).

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no behavioral details beyond the purpose (e.g., no mention of rounding, negative handling, or output format). Since annotations are comprehensive, the description's lack of additional context is acceptable, but it also adds no value here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short (two sentences), but the second sentence about 'A HelpySelf tool (helpyself.com)' is branding and does not help an agent select or invoke the tool. The first sentence is cryptic ('the other three sums people mean') and not fully self-explanatory. It is concise but not optimally structured for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 parameters, no output schema, no nested objects) and the rich schema descriptions, the description is minimally sufficient. However, it does not explain the output or provide context on when to use it, and the 'other three sums' are left undefined. The schema fills in the gaps, but the description alone would leave an agent guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with detailed explanations for all three parameters including examples. The description does not add any parameter-specific information. Per the rubric, a score of 3 is the baseline when schema coverage is high, and the description provides no extra compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it is a 'percentage increase calculator' and mentions 'the other three sums people mean,' but it does not enumerate those sums. This gives a general sense of the domain without clearly distinguishing the specific operations. It is not a tautology, but it is vague and relies on the schema to clarify.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 other calculators in the sibling list (e.g., ratio_calculator, average_calculator). There are no exclusions, prerequisites, or alternative tool mentions. The agent must infer usage from the schema alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pregnancy_calculatorPregnancy CalculatorC
Read-onlyIdempotent
Inspect

A due date calculator that also tells you how many weeks you are today A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
lmpDateYesFirst day of the last menstrual period as YYYY-MM-DD. Everything is counted from this date by Naegele's rule (280 days to the due date), shifted by `cycleLength`. Refused if it is in the future or more than 48 weeks ago.
asOfDateNoThe date to measure weeks, days and trimester to, as YYYY-MM-DD. Omit and the server uses today's date in UTC, which can be a day out near midnight; send the reader's own local date when you have it.
cycleLengthNoAverage menstrual cycle length in days. 28 is what Naegele's rule assumes; each day longer moves the due date and the estimated conception date one day later.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no behavioral context beyond that—no mention of refusal conditions, calculation method, or edge cases. It does not contradict annotations, but provides no additional transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short, but includes an irrelevant 'A HelpySelf tool (helpyself.com)' tag and lacks proper punctuation ('today A HelpySelf'). The core purpose is front-loaded, but the extra tag and formatting issues reduce clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple calculator with well-documented parameters, the description covers the primary outputs (due date and weeks). It doesn't mention the asOfDate feature explicitly, but the schema covers it. The tool is straightforward, and the description is adequate for an agent to understand its function.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter thoroughly documented (e.g., lmpDate format and constraints, asOfDate behavior, cycleLength effect). The description adds no parameter-specific information, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a due date calculator that also tells how many weeks you are today, which is a specific verb and resource. It doesn't explicitly differentiate from siblings, but no sibling tool provides pregnancy calculations, 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.

Usage Guidelines2/5

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, nor any exclusions or prerequisites. It simply states what it does without context on when it is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qr_generatorQR Code GeneratorB
Read-onlyIdempotent
Inspect

A QR code generator for any link or text — download it as SVG or PNG. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
darkNoColour of the modules as a six-digit hex code, such as #000000.#000000
sizeNoDeclared width and height of the SVG in pixels. The output is vector, so it scales cleanly; this mainly matters when the SVG is rasterised as-is.
textYesWhat the code should contain: a URL, plain text or any other string. Surrounding whitespace is trimmed. QR codes hold about 2,000 characters at most, and the denser the content the harder the code is to scan.
lightNoBackground colour as a six-digit hex code. Keep it much lighter than `dark`; scanners expect dark modules on a light ground.#ffffff
marginNoQuiet zone around the code, in modules (the small squares), not pixels. The QR spec recommends 4; less and some scanners fail to lock on.
errorCorrectionNoHow much of the code may be damaged or covered and still scan: L about 7%, M 15%, Q 25%, H 30%. Higher levels make a denser code for the same text.M

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (read-only, idempotent, non-destructive). The description adds that outputs are SVG/PNG and input is any link/text, but does not clarify how the output is delivered (e.g., binary response, download link, both formats). With annotations present, 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is efficient and front-loaded with the tool's purpose. However, the second sentence 'A HelpySelf tool (helpyself.com)' is promotional noise that does not earn its place in a functional description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should clarify what the tool returns. Saying 'download it as SVG or PNG' is ambiguous—does the agent receive both formats, a binary file, or a URL? For a 6-parameter tool with no output schema, this is a significant gap that leaves the agent uncertain about the expected result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed per-parameter explanations for all 6 parameters. The tool description adds no extra semantic meaning beyond the text parameter's 'link or text' scope, which the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is a QR code generator for any link or text, with specific output formats (SVG or PNG). This is a specific verb+resource and distinguishes it from siblings such as barcode_generator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, nor any exclusions. The description only states what it does, leaving the agent to infer usage from the name and sibling context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

random_number_generatorRandom Number GeneratorB
Read-onlyIdempotent
Inspect

A random number generator for any range, in your browser. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
maxNoHighest whole number that may be drawn, inclusive. Must not be below `min`. 100 when omitted.
minNoLowest whole number that may be drawn, inclusive. 1 when omitted.
countNoHow many numbers to draw, up to 1000. Always returned as an array.
sortedNoReturn the draw in ascending order. Sorting happens after drawing, so it does not change the odds.
uniqueNoDraw without repeats, like lottery balls rather than dice. Refused if `count` is more than the range holds.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the useful behavioral detail that execution happens in the browser, implying local, client-side operation. However, it does not disclose that draws are nondeterministic or describe the output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is concise and front-loaded with the core purpose. The second sentence, 'A HelpySelf tool (helpyself.com)', is marketing filler that does not help an agent select or invoke the tool, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with a fully documented schema and safety annotations, the description is minimally adequate. However, without an output schema, it would help to mention that results are returned as an array and to disambiguate from random_picker or dice_roller, which are present in the sibling list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the parameter descriptions already explain min, max, count, sorted, and unique in detail. The description's 'any range' adds minimal context but does not meaningfully supplement the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a random number generator for any range, which is a specific purpose. It draws some distinction from fixed-format random tools like dice_roller or coin_flip, but it does not explicitly differentiate from random_picker or mention whole-number/integer output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as random_picker, dice_roller, or coin_flip. The phrase 'for any range' weakly implies the custom-range use case, but no explicit context or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

random_pickerRandom PickerB
Read-onlyIdempotent
Inspect

A random picker for a list of names, drawn in your browser. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoHow many entries to pick, without repeats. Asking for more than the list holds is an error rather than a shorter answer. Ignored when shuffleAll is true.
itemsYesThe list to pick from, up to 10000 entries. An entry written twice is deliberately twice as likely to be picked, so duplicates are not collapsed.
shuffleAllNoReturn the whole list in a random order instead of a selection. Every ordering is equally likely, and count is ignored.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety. The description adds that it runs in the browser, which implies client-side execution and no server side effects. It does not describe behaviors like count limits or shuffleAll semantics, but these are covered by the schema, so the added value is minimal yet not contradictory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (two sentences) and gets to the point. However, the second sentence 'A HelpySelf tool (helpyself.com)' is brand promotion that does not help an agent call the tool, slightly diluting focus. Still, it is concise and front-loaded with the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich schema with 100% parameter coverage and the annotations covering safety, the description is adequate for a simple utility. It does not mention error conditions, return format, or edge cases, but for a random picker these are less critical. The lack of an output schema is not an issue here. Overall, the description is sufficient but not enriched beyond the bare minimum.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter (count, items, shuffleAll) having clear descriptions. The tool description adds no additional parameter semantics, so it relies entirely on the schema. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool picks randomly from a list of names, which conveys the core function. It distinguishes it from numeric random generators, but doesn't explicitly differentiate from similar tools like wheel_of_names or random_team_generator, so it's clear but not fully distinctive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus its siblings (e.g., coin_flip, dice_roller, wheel_of_names). The description does not mention any selection criteria or alternatives, leaving the agent to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

random_team_generatorRandom Team GeneratorB
Read-onlyIdempotent
Inspect

A random team generator — paste a list of names and split it into fair teams. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoWhat count means. "teams": make that many teams. "size": make teams of that many people, with the last team taking the remainder rather than anyone being left out.teams
countNoThe number of teams, or the people per team, depending on mode. Names are dealt round-robin after a shuffle, so team sizes never differ by more than one.
namesYesThe people to deal out, one name per line. Lines are trimmed and blank lines are dropped, so a pasted spreadsheet column works as it is.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only, non-destructive, and idempotent, so the safety burden is low. The description adds 'random' and 'fair teams' as behavioral context, but it does not disclose the output format or the round-robin dealing behavior; those details live only in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, with the core action in the first clause. The second sentence, 'A HelpySelf tool (helpyself.com)', is branding filler that does not help an agent select or invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter tool with a rich schema and safety annotations, the basic purpose is enough to begin invoking it correctly. However, with no output schema, the description does not state what the tool returns, and it misses explicit sibling routing, leaving completeness only partial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with detailed explanations for names, mode, and count. The description contributes only a 'fair teams' gloss and no additional parameter meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete action: 'paste a list of names and split it into fair teams.' This is more than a tautology, though 'random team generator' does echo the title. It does not explicitly contrast with random_picker or wheel_of_names, so it stops short of fully distinguishing siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is implied by the imperative phrasing: if a user has a list of names and wants fair teams, this is the tool. However, there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives like random_picker or wheel_of_names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratio_calculatorRatio CalculatorA
Read-onlyIdempotent
Inspect

A ratio calculator: reduce to lowest terms, or find the missing number. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
leftYesThe left side of the ratio, the a in a:b. Decimals are allowed and are scaled to whole numbers before reducing, so 2.5:1 simplifies to 5:2 rather than rounding to 3:1.
rightYesThe right side of the ratio, the b in a:b. A zero side is refused as not a ratio.
scaleToNoA new left-hand value to solve for: given, the answer is the c in a:b = scaleTo:c, returned as solved.value with a whole flag, since 16:9 at 1000 wide is 562.5 and is not rounded. Omitted, the ratio is only simplified.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds meaningful behavioral context by naming the two modes of operation: simplifying ratios and solving for a missing value, which the annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core operations in the first sentence. The trailing 'A HelpySelf tool (helpyself.com)' sentence is not functionally useful for an agent but is minor and does not detract much.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema and the safety-bearing annotations, the description plus schema covers what the tool does, how parameters behave, and that it is a read-only operation. It lacks an explicit output-shape statement, but the scaleTo parameter schema already describes the solved.value result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the input schema already richly documents left, right, and scaleTo, including decimal scaling, zero handling, and non-rounding behavior. The description's 'find the missing number' lightly reinforces scaleTo's purpose but adds no new parameter detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource ('ratio calculator') and two concrete operations: reduce to lowest terms or find the missing number. This is clear and functional, though it does not explicitly differentiate from sibling tools like fraction_calculator or percentage_calculator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'ratio calculator' plus the described operations imply use for ratio simplification and missing-value ratio problems. However, it provides no explicit guidance on when to choose this tool over similar calculators, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

readability_scoreReadability ScoreB
Read-onlyIdempotent
Inspect

Readability score for any text — Flesch–Kincaid, Gunning fog index and more. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesEnglish prose to score, at least 20 words. Scored with Flesch Reading Ease, Flesch-Kincaid, Gunning fog, SMOG, ARI and Coleman-Liau, which are averages over sentence and syllable counts, so a short passage gives a rough answer.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds the algorithm names, which is helpful, but its claim of 'any text' is overbroad relative to the schema's English-prose and 20-word minimum. No output format or caveats about short passages are disclosed in the description itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is efficient and front-loaded with the core purpose and metrics. The second sentence, 'A HelpySelf tool (helpyself.com),' is boilerplate that adds no decision-relevant value for an AI agent, so the definition is not fully tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does not clarify what the agent will receive back (e.g., a single composite score, multiple metric values, or a formatted report). The input constraints are covered well by the schema, but return-value ambiguity remains for a one-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the text parameter is well documented with length constraints, language expectation, and a methodological caveat. The description itself adds no new parameter-level meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes a readability score for text and names concrete metrics (Flesch–Kincaid, Gunning fog). It avoids being a pure tautology of the title, though it lacks an explicit verb like 'calculate' or 'assess'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use case is implied: when the agent needs readability metrics for a piece of text. The schema adds constraints (English prose, at least 20 words), but the description gives no explicit guidance on when to choose this over alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

regex_explainerRegex ExplainerA
Read-onlyIdempotent
Inspect

A regex explainer: paste a pattern and read what every part of it does, in English. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesA JavaScript regular expression to explain, either bare or as /pattern/flags. It is read, never run, so a pattern that would not compile is still explained, with the problems listed alongside.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond the annotations: 'It is read, never run, so a pattern that would not compile is still explained, with the problems listed alongside.' This discloses that the tool does not execute regexes and handles invalid patterns gracefully. Annotations already indicate readOnlyHint=true and idempotentHint=true, but the description enriches this with specific behavior about non-compiling patterns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with the core purpose front-loaded in the first sentence. The second sentence, 'A HelpySelf tool (helpyself.com),' is a brand mention that adds little functional value but is not harmful. Overall, it is efficient and well-structured, though the brand mention could be considered unnecessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 adequate. It explains the purpose, the input format, and the behavior for invalid patterns. It does not detail the exact output format, but that is not required given the absence of an output schema. The description covers the essential information an agent needs to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, and the parameter 'pattern' has a detailed description in the schema itself: 'A JavaScript regular expression to explain, either bare or as /pattern/flags. It is read, never run...' The tool description does not add additional parameter semantics beyond what the schema already provides. Since the schema carries the full burden, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'paste a pattern and read what every part of it does, in English.' It identifies the verb (explain) and resource (regex pattern). However, it does not explicitly differentiate from the sibling tool 'regex_tester', which could be confused for a similar purpose. The purpose is clear but lacks explicit sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like regex_tester. It only states what it does, without any context for selection or exclusions. An agent would have to infer usage from the name and description alone, with no explicit routing information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

regex_testerRegex TesterB
Read-onlyIdempotent
Inspect

A regex tester for regular expressions, run safely against your own text. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to run the pattern against, at most 20000 characters. Matches are returned with their index and capture groups, and stop after 1000.
flagsNoThe standard JavaScript flags as one string, such as "gi". The default "g" returns every match; without it only the first match is returned.g
patternYesA JavaScript regular expression, bare, without surrounding slashes; flags go in flags. At most 500 characters, which is shorter than the page allows.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds the 'safely' framing but discloses little beyond what annotations provide and does not describe runtime limits or edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core operational sentence is concise and front-loaded. The trailing 'A HelpySelf tool (helpyself.com)' is provenance filler that does not help an agent select or invoke the tool, preventing a higher score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter tool, the combination of full schema coverage and safety annotations makes the description sufficient for correct invocation. Return behavior is documented in the schema's text parameter, so the description does not need to repeat it, though a nod to regex_explainer would strengthen completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with rich parameter documentation covering text length, flags, pattern format, and default behavior. The description itself adds no parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource ('regular expressions') and the action ('run safely against your own text'), so the agent can tell it is a regex evaluation tool. However, it largely restates the tool name and does not explicitly distinguish it from the sibling regex_explainer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as regex_explainer. The phrase 'run safely against your own text' hints at a safe testing context, but it does not state when to choose this tool 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.

request_a_fileRequest a FileCInspect

Request files with a link — they upload to you, with no account and no ads. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many days a request link would stay open for uploads, at most 30; there is no permanent option. This call only describes such a link and creates nothing; creating one is a separate, signed-in POST to the createAt path returned.
maxFilesNoHow many files the link would accept before closing itself, at most 100. Each file is also capped at what the owner's own plan allows and counts against their storage.

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations carry no safety profile beyond non-read-only, so the description must carry the behavioral burden, but it does not. The description implies an active file-request action, yet the days parameter schema reveals that 'this call only describes such a link and creates nothing' and that creating one requires a separate signed-in POST — a critical behavior the description omits entirely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is short and front-loaded, but the second sentence ('A HelpySelf tool (helpyself.com)') is branding that does not help an AI agent select or invoke the tool. It is concise overall, but not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description still omits essential operational context: what the tool actually returns, that it does not create the request link, and that creation requires a separate authenticated step. The parameter schema compensates somewhat, but the description alone is not complete enough for correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter descriptions are detailed, covering meaning, defaults, ranges, and edge cases. The description adds nothing about the parameters, so it stays at the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource — requesting files from others via a link so they upload to you. It is clear enough to distinguish from siblings like share_file or send_a_secret, though it relies on the tool name to communicate the directionality of the request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus share_file, send_a_secret, or other sibling tools, and no alternatives are mentioned. The only contextual claims are 'no account and no ads,' which do not help an agent decide between similar tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roman_numeralsRoman NumeralsB
Read-onlyIdempotent
Inspect

A Roman numeral converter — numbers to numerals, and numerals back to numbers. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
numeralYesEither a Roman numeral ("MCMXCIV") or a whole number from 1 to 3999 ("1994"); the direction is worked out from what is given. Loose forms like IIII are read and reported with strict false, and the strict modern spelling is returned alongside.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety and idempotency (readOnlyHint=true, idempotentHint=true, destructiveHint=false). The description adds the bidirectional behavior, while the input schema documents loose-form handling and strict spelling. No contradiction exists, but the description itself does not add much behavioral depth beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core function is stated concisely and front-loaded. However, "A HelpySelf tool (helpyself.com)" is filler that does not help an agent select or invoke the tool correctly, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple one-parameter utility with a fully described input schema and safety annotations. The description gives enough orientation, and the return behavior is largely self-evident for a converter. No critical invocation information appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single parameter already documents accepted inputs, direction detection, loose forms, and strict spelling. The tool description adds no extra parameter meaning beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a bidirectional Roman numeral converter: "numbers to numerals, and numerals back to numbers." It names the specific resource and operation. It does not explicitly differentiate from sibling converter tools, but the Roman numeral domain is sufficiently distinctive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use this tool when converting between Roman numerals and ordinary numbers. There are no explicit when-to-use or when-not-to-use instructions, and no alternatives are named, but the tool name and description make the intended context reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

salary_calculatorSalary CalculatorB
Read-onlyIdempotent
Inspect

A salary calculator that goes hourly to annual and back — the same pay written every way, before tax. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesThe gross pay figure you already know, in any currency; no tax or deductions are applied. It is converted to all five periods using the working pattern below.
periodYesWhich period amount covers. A month is always a twelfth of a year, never 4.33 weeks.
daysPerWeekNoDays worked in a normal week, used for the daily figure. Defaults to 5.
hoursPerWeekNoHours worked in a normal week, used to turn an hourly rate into a weekly one and back. Defaults to 37.5; 40 is usual in the US.
weeksPerYearNoWeeks paid in a year, used to turn a weekly figure into an annual one and back. Defaults to 52; use 52.18 to count the odd days.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds genuinely useful context — that the output is gross pay before tax — plus the output-shape hint 'the same pay written every way.' It does not, however, disclose conversion assumptions (default working pattern) or precision behavior, though those live in the parameter descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The functional sentence is compact and front-loaded with the core action and scope. But the second sentence ('A HelpySelf tool (helpyself.com)') is pure attribution that earns no place in an agent-facing description — it carries no selection or invocation value — keeping this from a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, read-only calculator with exhaustive parameter docs and safety annotations, the description — combined with the schema — is nearly complete. 'The same pay written every way' sufficiently implies the output shape in the absence of an output schema, and 'before tax' sets expectations about result semantics. Minor gaps (currency-agnostic behavior, rounding) do not impede correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: every parameter (amount, period, daysPerWeek, hoursPerWeek, weeksPerYear) already carries a rich description including defaults, ranges, and conversion rules (e.g., 'A month is always a twelfth of a year, never 4.33 weeks'). The tool description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action — converting salary between pay periods ('hourly to annual and back') — and defines the scope: the same gross figure written in every period, before tax. This distinguishes it from sibling calculators like currency_converter (currency translation) and time_card_calculator (hours worked). However, it relies on the informal verb 'goes' and never explicitly names a sibling, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the clear purpose: use it whenever pay must be converted across hourly/day/weekly/monthly/annual periods. But the description gives no explicit when-to-use or when-not-to-use guidance, and no alternative routing — the closest confusable sibling (time_card_calculator, which also computes pay from hours) is never mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_recorderScreen RecorderB
Read-onlyIdempotent
Inspect

Record your screen in the browser — nothing is uploaded anywhere A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYesWidth of the area being recorded, in pixels. Bitrate scales with the pixel count, so a shared window costs far less than a full 4K screen.
heightYesHeight of the area being recorded, in pixels.
qualityNoHow much data to spend, as bits per pixel per frame: "high" is 0.10 and keeps text crisp at 1080p, "balanced" is 0.05 with readable text and slight banding, "small" is 0.02 for a long recording that has to be emailed. There is a floor of 400 kbit/s whatever the picture size.balanced
secondsNoThe planned length of the recording, in seconds, used only to estimate the file size and to say whether it is past the point where a browser tab runs out of memory (about 512 MB held in the tab). The bitrate and safe duration do not depend on it.
frameRateNoFrames per second to capture at. Bitrate scales with it, and 30 is enough for screen content, which changes little between frames.
withAudioNoWhether the recording carries an audio track. True adds a fixed 128 kbit/s of Opus to the size estimate and shortens the safe duration accordingly.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose that the tool is read-only, idempotent, and non-destructive. The description adds one useful behavior — 'nothing is uploaded anywhere' — but it does not explain likely client-side behaviors such as browser permission prompts, where the recording is produced, or whether a file/blob is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, scannable sentence that front-loads the core purpose and a key privacy guarantee. The trailing brand mention adds little operational value, keeping this from a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should explain what the caller receives after recording, such as a downloadable file, a data URL, or a stored artifact. It also omits practical context like browser permissions and duration limits. The excellent schema covers parameters, but not the tool's overall result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the parameter descriptions are rich: they explain bitrate scaling, default behavior, quality trade-offs, memory constraints, and audio overhead. The tool description itself adds no parameter-specific meaning, so the schema carries the burden, which is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Record your screen') and a clear resource ('in the browser'), and it adds a useful privacy qualifier. However, it does not distinguish itself from sibling tools such as webcam_test or mic_test, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance about when to use this tool instead of another, and no exclusions or alternatives are named. The privacy statement implies a local/no-upload recording use case, but an agent is left to infer when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_a_secretSend a SecretBInspect

Send a password securely by link that self-destructs after one read. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
ivYesThe base64-encoded AES-GCM initialisation vector used to encrypt data. Not secret; it is stored beside the ciphertext so the recipient can decrypt.
dataYesThe secret as base64-encoded AES-GCM ciphertext, encrypted by the caller before sending. Never plaintext: the server stores this without being able to read it, and the decryption key must be appended by the caller to the returned URL after the #, where a browser never sends it. Sized for a password, not a document.
saltNoThe base64-encoded salt the password-derived key was made with. Give it only when the secret is additionally locked with a password; omit it otherwise.
keyProofNoBase64-encoded SHA-256 digest of the password-derived key, letting the server check a password attempt without ever holding the password or the key. Omit it when there is no password.
lifetimeNoHow long the stored ciphertext lives if nobody opens it: 1h, 24h, 7d. It is also destroyed on first read, and there is no permanent option. Each call stores a new secret and returns a new link, so call once per secret.24h

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the central non-obvious behavior: the secret self-destructs after one read and is delivered by link. However, with no meaningful annotations, it does not surface other operational traits such as the server never receiving plaintext or the caller needing to append the key to the URL; those are left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise, front-loaded sentence that names the verb, resource, and behavior. The trailing 'A HelpySelf tool (helpyself.com)' is boilerplate and does not help an agent call the tool, so it loses a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema richly documents inputs and the description covers the core promise, but there is no output schema and the description never explicitly says the tool returns a link to share, nor that each call creates a new one-time secret. A bit more operational context would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All five parameters have comprehensive descriptions in the input schema, so the tool description adds no parameter-level meaning. This meets the baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Send'), object ('a password'), and key differentiator (a link that self-destructs after one read). It is clearly distinct from generic sharing tools, though it does not explicitly name a sibling or alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance about when to prefer this tool over related tools like share_file, nor about prerequisites such as client-side encryption. The use case is only implied by the phrase 'Send a password securely.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

share_fileShare a FileBInspect

Send large files by link, with an expiry date and an optional password. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe file's bytes, base64-encoded, at most 35000000 characters (three quarters of that in bytes). The file is stored in the caller's account, counts against its storage quota, and must be within the plan's per-file limit.
nameYesThe filename, with extension, that the recipient sees and downloads. Cleaned of unsafe characters before storage.
typeNoThe file's MIME type, such as "image/png" or "application/pdf". It is served with this type, and only an image type can be screened.application/octet-stream
screenNoHave a model check the image for explicit content before the link is made. Images only, costs one AI credit from the caller's monthly allowance, and if the image is judged explicit no link is created at all.
messageNoA short note shown beside the file to whoever opens the link. Plain text: line breaks are collapsed, it is shortened, and URLs in it are not made clickable.
durationNoHow long the link works for anyone who has it: 1h, 24h, 7d, 30d, 90d, 1y. The 90d and 1y options are Pro durations; there is no permanent one, and a link never outlives the stored file. Each call stores a new copy and mints a new link, so call once per file.24h
passwordNoA password the recipient must type to open the link, at least 4 characters. Only a salted hash is stored. Omit it, or send an empty string, for no password.
senderNameNoWho the file is from, shown as a heading to whoever opens the link. Plain text: trimmed, shortened, and never turned into a link.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal this is a read/write, non-idempotent, non-destructive operation, so the bar is lowered. The description adds that links have expiry dates and optional passwords, but it omits notable behavioral details such as per-call storage of a new copy, quota consumption, and the AI-credit cost of screening, which only appear in the parameter schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is compact, front-loaded, and informative. The second sentence ('A HelpySelf tool...') is boilerplate that does not help an agent select or invoke the tool, though its placement at the end minimizes harm.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema and annotations cover most invocation details, but there is no output schema and the main description never explicitly states that a shareable link is returned or summarizes the side effects. The definition is adequate but leaves the agent to discover important implications from individual parameter descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and parameter descriptions are rich (base64 limits, storage quota, MIME type serving, screening costs, per-call link minting). The main description only restates expiry and password, adding no semantic value beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Send'), a resource ('large files'), and a delivery mechanism ('by link'), with two distinctive features (expiry date and optional password). It is clear about the tool's core function, though it does not explicitly contrast it with siblings like send_a_secret or request_a_file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Send large files by link' gives a clear implied use case, but there are no explicit conditions, exclusions, or alternative sibling tools mentioned. An agent must infer when this tool is better than send_a_secret or other file-sharing siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

signature_makerSignature MakerB
Read-onlyIdempotent
Inspect

A signature maker: draw or type yours, saved with a transparent background. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoFit the SVG viewBox tightly to the ink. False keeps the pad's origin, so empty space above and left of the signature is kept and it sits off-centre when placed.
colourNoInk colour as a hex value, #rgb or #rrggbb. Anything else falls back to #111111 rather than being written into the SVG.#111111
smoothNoDraw quadratic curves through the points instead of straight segments between them, which stops a signature looking ruler-drawn.
paddingNoSpace left around the ink when trimming, measured in stroke widths rather than points units, so 2 at a strokeWidth of 3 is 6 units on every side.
strokesYesThe drawing as a list of strokes, each a list of points in the order the pen visited them, in any consistent unit. At most 20000 points in total. The result is an SVG path, so the units only matter relative to strokeWidth.
simplifyNoDrop points that lie almost on the line between their neighbours (tolerance of a quarter of strokeWidth). Shrinks the path a great deal and steadies the smoothing.
strokeWidthNoLine thickness, in the same units as the points. It also sets the scale of padding and of the simplify tolerance.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the transparent background detail, which is useful, but it also introduces ambiguity by saying 'draw or type yours' while the schema only accepts strokes, potentially misleading an agent. It does not describe the output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the purpose. The brand mention is minor and does not detract. Every word earns its place, and the length is appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description does not explain the output format (e.g., SVG string or image) or the input structure beyond the schema. An agent would not know what the tool returns or how to interpret the result. Given the schema covers parameters and annotations cover safety, the missing output information is a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are fully documented. The description adds no parameter-specific information beyond what the schema already provides, so it does not go beyond the structured data. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('make') and resource ('signature'), and adds the key detail of a transparent background. It is not a tautology and clearly distinguishes the tool from the many unrelated siblings, even though no direct sibling is similar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, prerequisites, or exclusions. It does not mention the input format (strokes) or any alternatives, leaving the agent to infer usage from the schema alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sleep_calculatorSleep CalculatorB
Read-onlyIdempotent
Inspect

A sleep calculator that works backwards from when you have to be up. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
timeYesA 24-hour clock reading with a colon, such as "07:30" or "23:15". No date or time zone is involved. "7.30" or "7:30 pm" is refused.
timeIsNoWhat time is: "wake" means it is the alarm and bedtimes are returned, most sleep first; "bedtime" means it is when you go to bed and wake times are returned, earliest first. 4 options come back, for 3 to 6 cycles.wake
cycleMinutesNoLength of one sleep cycle in minutes. 90 is the adult average; real cycles run roughly 70 to 120 and differ between people.
fallAsleepMinutesNoMinutes spent falling asleep after going to bed, subtracted from a bedtime or added to a wake time. Defaults to 15.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only and idempotent behavior, lowering the bar. The description adds the directional algorithm trait, but it does not disclose output ordering, cycle-count behavior, or the bedtime-input mode; those details live in the schema rather than the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The functional sentence is front-loaded and short, but the second sentence ('A HelpySelf tool (helpyself.com)') is promotional filler that does not help an agent select or invoke the tool. It is concise overall, but not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a fully described schema and read-only annotations, the tool is mostly understandable. However, there is no output schema, and the description does not summarize the returned options or the two supported directions (wake and bedtime), so an agent must rely entirely on parameter descriptions to understand expected behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies; the schema already documents time format, timeIs semantics, cycle length defaults, and fall-asleep offset. The description adds no extra parameter meaning beyond the wake-time framing that maps to the default timeIs value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('sleep calculator') and adds a specific directional behavior: it works backwards from when you have to be up. This goes beyond a restatement of the title, though it doesn't explicitly say the tool also supports the reverse bedtime-to-wake direction exposed by timeIs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'works backwards from when you have to be up' implies the main use case, but the description offers no explicit when-to-use guidance, exclusions, or alternatives. The schema's timeIs documentation covers some usage, but the description itself stays at the level of implication.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

slug_generatorSlug GeneratorA
Read-onlyIdempotent
Inspect

A slug generator that turns any title into a clean URL slug. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe title or phrase to turn into a URL slug. Accents are stripped, & becomes "and", apostrophes are dropped, and every other non-alphanumeric run becomes one separator.
lowercaseNoLower-case the result. False keeps the capitals of the input.
maxLengthNoLongest slug allowed, in characters; 0 means no limit. A slug is cut at the last separator inside the limit, so a word is never cut in half.
separatorNoThe character put between words. Hyphens are what search engines expect.-
expandDiacriticsNoWrite letters that romanise as two characters that way: ø to oe, æ to ae, å to aa, ü to ue, ß to ss. False uses the nearest single letter instead: ø to o, ß to s.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description's burden is low. It states the core transformation behavior ('turns any title into a clean URL slug') but does not add details about return format or error behavior. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is essential and front-loaded, stating the tool's purpose precisely. The second sentence about HelpySelf adds little operational value but is brief and harmless. Overall, the description is concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple transformation tool with a fully documented schema and safety annotations, the description is sufficient. The return value (a slug string) is implicit in the purpose, and with no output schema a more explicit statement could help, but the gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter has a thorough description (e.g., accent stripping, separator choices, maxLength cutting behavior). The description itself adds no parameter semantics beyond the schema, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('turns') and resource ('any title' into a 'clean URL slug'), making the tool's domain unambiguous. This clearly distinguishes it from sibling tools like case_converter or url_encoder, even without naming them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose implies usage for generating URL slugs from titles, but there is no explicit guidance on when to choose this tool over alternatives or any exclusions. It relies on the reader to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sql_formatterSQL FormatterA
Read-onlyIdempotent
Inspect

An SQL formatter for 16 dialects — paste unreadable SQL, get it laid out, nothing uploaded. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesThe SQL to lay out, one or more statements, at most 500000 characters. It is only reformatted: nothing checks that it would run.
indentNoWhat one level of indentation is: "2" or "4" spaces, or "tab".2
dialectNoWhich database's syntax to parse it as, one of 16 dialects. "sql" is generic standard SQL and is what to use when unsure; "transactsql" is SQL Server and "plsql" is Oracle.sql
keywordCaseNoHow keywords are written: "upper" gives SELECT, "lower" gives select, "preserve" leaves each keyword as it was typed.upper
linesBetweenQueriesNoHow many blank lines to leave between statements.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint=false), the description discloses 'nothing uploaded' — a meaningful privacy trait for handling sensitive SQL. The schema's note that SQL is 'only reformatted: nothing checks that it would run' adds a non-validation trait consistent with the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence packs purpose, scope, use case, and a privacy guarantee into one compact clause chain, well front-loaded. The closing product line ('A HelpySelf tool (helpyself.com)') adds no invocation value but costs little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a stateless pure-formatting tool, the description plus a 100%-covered schema and safety annotations tell an agent everything needed to invoke it: input shape, options, and privacy profile. No output schema exists, but for a formatter the returned laid-out text is self-evident, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter carries its own meaning (enum values, defaults, maxLength, concrete examples like '"upper" gives SELECT'). The description only echoes the dialect count ('16 dialects'), adding no semantics beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the formatter verb with an explicit resource and scope ('An SQL formatter for 16 dialects'), and the phrase 'paste unreadable SQL, get it laid out' makes the transformation unambiguous. It distinguishes itself from sibling formatters (json_formatter, xml_formatter) by naming the target language outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is stated plainly — take unreadable SQL and lay it out — so an agent can match it against a formatting request involving SQL. It does not name sibling alternatives or spell out exclusions, but the schema fortifies selection guidance with dialect advice ('sql' is 'what to use when unsure').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stall_bookingStall BookingCInspect

One link, on your own site or sent — vendors pick their own stall A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
gapNoThe aisle between stalls in centimetres, both between neighbours in a row and between rows. 120 fits prams and wheelchairs.
dateYesThe day the market is held, as YYYY-MM-DD with no time or zone. It must not be in the past, and the booking page is deleted daysAfter days after it.
noteNoA line shown under the title on the booking page: doors open, where to park, what not to bring.
priceNoWhat one stall costs, in the currency's minor unit (cents, pence, øre), so 25000 is 250.00. Never a decimal amount. 0 means the stalls are free.
titleYesThe market's name, shown as the heading of the public booking page vendors book on. A successful call publishes that page under the caller's account and returns its URL, so call once per market.
unitsNoHow the hall is shown to people, in metres or in feet. Display only: every dimension in this call is centimetres either way.metric
stallsNoHow many stalls to lay out in the rectangle. Required when no venueId is given. If fewer fit at the given stall size, fewer are made rather than the stalls being shrunk, and the response says how many. A free account is limited to a smaller market than Pro.
backGapNoSpace between the two backs of a paired row in centimetres, for the sellers' chairs and stock. Only used when backToBack is true; it is not the aisle.
venueIdNoThe id of a hall the caller has already drawn in the venue editor. Given, the market uses that hall's shape and hand-placed stalls, and hallWidth, hallDepth, stalls and the stall sizes are ignored. Omitted, a plain rectangle is laid out from hallWidth, hallDepth and stalls, which are then all required.
currencyNoWhat the price is in. An ISO code such as "DKK" or "EUR" is formatted properly; any other text ("kr", "beer tokens") is printed as given beside the number.DKK
daysAfterNoHow many days after the market date the booking page stays up. After that it is deleted, along with the vendors' names and contact details.
hallDepthNoDepth of the hall in centimetres. Required when no venueId is given.
hallWidthNoWidth of the hall in centimetres, so 2000 is twenty metres. Required when no venueId is given; a value under two metres is refused as a typo.
holdHoursNoHow many hours a booked stall is held while the vendor pays, at most a week. If the organiser has not marked it paid by then, the stall is released for someone else to book.
backToBackNoLay rows out in pairs with their backs together and the aisle only between pairs, so the public cannot walk behind a seller. Fits more stalls in the same hall than a plain grid.
stallDepthNoDepth of one stall in centimetres, front to back.
stallWidthNoWidth of one stall in centimetres, along the row. 180 is a standard trestle table.
paymentDetailsNoHow a vendor is to pay, in the organiser's own words, shown to them after they book: a bank account, a MobilePay number, "cash on the day". No card processing is involved.

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false, so the description carries the burden of disclosing side effects. It only says vendors pick stalls via a link, omitting that a successful call publishes a page under the caller's account, returns a URL, and that the page is deleted after daysAfter. There is no annotation contradiction, but the disclosure is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with 'One link,' but it is under-specified rather than concisely informative. The trailing 'A HelpySelf tool (helpyself.com)' is filler that does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex 18-parameter creation tool with no output schema and minimal annotations. The description does not orient the agent to the two required fields, the venueId vs. hallWidth/hallDepth/stalls conditional groups, account limits, or the returned URL. It is far below minimum viable for this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents all 18 parameters thoroughly, including defaults, enums, and conditional requirements. The tool description adds no parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description conveys a user-facing outcome — a link that lets vendors pick their own stall — but never states the actual operation, such as creating or publishing a booking page. It is vague rather than a tautology, and it does not distinguish this tool from its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool or when to prefer an alternative. The phrase 'on your own site or sent' hints at distribution, but no conditions, exclusions, or sibling comparisons are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subnet_calculatorSubnet CalculatorC
Read-onlyIdempotent
Inspect

A subnet calculator that gets /31 and /32 right, which most do not. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
networkYesAn IPv4 address with a prefix length ("192.168.1.10/24"), an address and a dotted mask separated by a space ("10.0.0.1 255.0.0.0"), or a bare address, which is read as /24. Octets with leading zeros are refused, as is a mask that is not a run of ones followed by zeros.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety. The description adds a behavioral claim about correctness for /31 and /32, which is useful but does not disclose return format, error handling, or any other edge-case behavior. It adds modest value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, with the first sentence conveying the core purpose and the second being branding ('A HelpySelf tool'). The branding sentence adds no operational value and could be omitted, but the overall length is appropriate and the key claim is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description should explain what the tool returns (e.g., network address, broadcast, usable hosts). It does not. Given the non-trivial nature of subnet calculation, an agent cannot anticipate the output format or content, leaving a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, thoroughly explaining the accepted formats and constraints for the 'network' parameter. The description adds no additional parameter-specific meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a subnet calculator and highlights a specific differentiator (handling /31 and /32 correctly). It is distinct from other calculators by its resource focus, though it does not explicitly enumerate the outputs it produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 is implied by the name and title, but the description does not state conditions, prerequisites, or mention any sibling tools. An agent receives no explicit routing information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

svg_minifierSVG MinifierA
Read-onlyIdempotent
Inspect

An SVG minifier that strips editor clutter and scripts, without touching the artwork. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe SVG source as text. Anything without an <svg> element is refused.
precisionNoDecimal places kept on coordinates and other numeric attributes; -1 leaves numbers untouched. Two is enough for an icon and is where most of the saving comes from.
removeScriptsNoStrip <script> elements, on* event handlers, javascript: links and the <a> elements around them, so the output is safe to serve as a file. On by default.
removeCommentsNoStrip <!-- --> comments.
removeMetadataNoStrip <metadata>, Inkscape and Sodipodi elements, attributes and namespace declarations: editor bookkeeping that draws nothing.
shortenColoursNoShorten six-digit hex colours that can be written in three: #ffffff becomes #fff.
removeTitleDescNoStrip <title> and <desc>. Off by default because they are the accessible name and description a screen reader reads out.
removeUnusedIdsNoDrop id attributes nothing inside the file refers to. Off by default because CSS or JavaScript in the embedding page may target them, which cannot be checked here.
collapseWhitespaceNoRemove whitespace between tags and collapse runs of it inside them. The content of text, style, title and desc elements is left as it is.
removeXmlDeclarationNoStrip the <?xml ?> declaration, any DOCTYPE and the editor's Generator comment.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that it strips scripts and editor clutter while preserving artwork, which is useful behavioral context beyond the annotations. However, it does not mention details like the removal of scripts for safety or the impact on accessibility elements, which are covered in the schema descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core purpose and includes a meaningful qualifier ('without touching the artwork'). It avoids redundancy and every word earns its place, with only the minor branding tag 'A HelpySelf tool' adding slight noise but not detracting from clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 10 parameters, the schema fully documents each one, and annotations cover safety and idempotency. The description is minimal but sufficient for a straightforward minifier, and the absence of an output schema means no return-value explanation is needed. It could mention typical use cases (e.g., web optimization) but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 10 parameters are already well-documented with detailed explanations of defaults and rationale (e.g., precision notes that 2 is enough for an icon). The main description adds no parameter-specific information, so it does not enhance what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('minifier') and resource ('SVG'), and adds nuance by specifying what it strips ('editor clutter and scripts') and what it preserves ('without touching the artwork'). This clearly distinguishes it from sibling image tools like image_compressor or gif_compressor, which handle different formats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives. It does not mention that it is specifically for SVG files or that other tools should be used for other image formats. The name alone implies the use case, but the description lacks any contextual direction for an agent deciding between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

text_diffText DiffA
Read-onlyIdempotent
Inspect

A diff checker for text — compare two versions and see exactly what changed, line by line. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
changedYesThe later version, compared against original. Lines only in it are reported as insertions; lines only in original as deletions.
originalYesThe earlier version of the text. Compared line by line, split on newlines.
ignoreCaseNoTreat lines that differ only in letter case as equal. The reported lines keep their original case.
ignoreWhitespaceNoTreat lines as equal when they differ only in leading, trailing or repeated whitespace, so an indentation change no longer counts as a change.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already document readOnlyHint, idempotentHint, and destructiveHint, so the description doesn't need to repeat safety behavior. It adds the line-by-line behavioral detail, but does not disclose output format or edge cases. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is concise, front-loaded, and contains the essential purpose. The second sentence ('A HelpySelf tool') is branding that doesn't help an agent select or invoke the tool, so it doesn't earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only, non-destructive diff tool with fully described parameters and annotations, the description is sufficient. It doesn't specify the exact return format, but no output schema exists and line-by-line behavior gives enough context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already well documented. The description adds no parameter-specific detail beyond the 'two versions' concept, which maps to original and changed. This is adequate baseline but not additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('diff checker for text — compare two versions') and states the granularity ('line by line'). This distinguishes it from sibling tools like compare_two_lists, which handles lists rather than text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when you have two text versions to compare), but it gives no explicit guidance about alternatives or when not to use it. There is no mention of siblings such as compare_two_lists or case_converter that might overlap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_card_calculatorTime Card CalculatorB
Read-onlyIdempotent
Inspect

A time card calculator for hours worked, breaks and overtime across a week. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
rateNoPay per hour. Omit it and the result gives hours only, with pay as null.
shiftsYesThe shifts to total, one entry each. A shift ending before it starts is read as crossing midnight, never as negative.
overtimeAfterNoWeekly hours after which the remaining hours count as overtime. Omitted means no overtime is worked out.
overtimeMultiplierNoWhat overtime hours are paid at, as a multiple of rate: 1.5 is the usual. Only matters when overtimeAfter and rate are set; defaults to 1.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, and non-destructive behavior, so the bar for added behavioral context is lower. The description adds the useful scope 'across a week' and the components 'hours worked, breaks and overtime,' which convey aggregation behavior not in the annotations. It does not describe output format, rounding, or edge cases, but these are partially covered by the detailed schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is concise and front-loaded, but the second sentence 'A HelpySelf tool (helpyself.com)' is promotional and does not aid tool selection. This extra sentence fails to earn its place, so the overall structure is adequate but not optimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a complex schema with 4 parameters and no output schema, but the schema covers all parameter semantics in detail. The description provides a minimal yet sufficient overview for basic selection, though it omits details like the optional rate behavior (pay as null) and weekly aggregation nuances. With annotations covering safety, the description is acceptable but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mentions 'hours worked, breaks and overtime' which roughly maps to shifts, breakMinutes, and overtimeAfter/overtimeMultiplier, but it adds no new meaning beyond the schema. Since all parameters are thoroughly documented in the input schema, the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'calculator for hours worked, breaks and overtime across a week.' This clearly indicates what the tool does and distinguishes it from generic calculators like average_calculator or percentage_calculator. However, it does not explicitly contrast with closely related tools such as salary_calculator, leaving some differentiation to the name and schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. The description only states what it does, with no mention of suitable scenarios, exclusions, or sibling tools. An agent must infer usage from the name and schema, which is not sufficient for a tool with many calculator siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

timestamp_converterTimestamp ConverterB
Read-onlyIdempotent
Inspect

A Unix timestamp converter — timestamps to dates, and dates back to timestamps. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesA Unix timestamp or a date. A bare number is read as seconds, or as milliseconds once it reaches 100000000000 (1e11); negative means before 1970. Anything else is parsed as a date string such as 2026-08-03T12:00:00Z.
timeZoneNoIANA zone name, e.g. "Europe/Copenhagen", used for the local reading and the day of the week. Defaults to UTC, and an unknown name falls back to UTC rather than failing.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds the bidirectional conversion behavior but does not disclose parsing nuances or output format; those are left to the schema. This is acceptable 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first clause is tight and front-loaded. The trailing 'A HelpySelf tool (helpyself.com)' is brand noise that does not help an agent select or invoke the tool, costing a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and its parameters are fully documented, but with no output schema the description should clarify what the converted result looks like; it only promises the direction of conversion. Together with the missing usage guidance, this leaves minor but real gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema documents both value and timeZone at 100% coverage, so the baseline is 3. The description adds no parameter-level meaning beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific verb/resource (Unix timestamp converter) and states conversion in both directions, distinguishing it from siblings like timezone_converter and date_difference. A passing agent can tell what it does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to prefer this tool over similar date/time siblings; it only restates the conversion behavior. No exclusions, alternatives, or prerequisite conditions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

timezone_converterTime Zone ConverterB
Read-onlyIdempotent
Inspect

A time zone converter and world clock — one time, every city at once. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesThe calendar date on the wall clock in fromZone, as YYYY-MM-DD.
timeYesThe wall-clock time in fromZone, 24-hour, as HH:MM. A time the clocks skip is moved forward and flagged; one that happens twice is read as the first.
toZonesYesIANA zone names to read the same moment in. Each comes back with its own date, time, abbreviation, UTC offset and whether it is a day ahead or behind.
fromZoneYesIANA zone name the date and time are read in, e.g. "America/New_York". Abbreviations such as EST or CST are not accepted, since they are ambiguous.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no operational detail such as output shape, DST edge-case handling, or return flags beyond what the input schema already mentions. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is short and front-loaded with the essential purpose. The second sentence, 'A HelpySelf tool (helpyself.com),' is boilerplate that does not help an agent select or invoke the tool, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only utility, the description is mostly sufficient: annotations cover safety, and the input schema fully documents parameters, IANA zone constraints, DST edge cases, and the per-zone output. The main gap is lack of explicit disambiguation from sibling time-related tools, but the tagline and schema carry enough context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description is not required to restate parameter details. The tagline lightly maps 'one time' to date/time/fromZone and 'every city' to toZones, but it adds no parameter-level constraints or formats beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as a time zone converter and world clock, and 'one time, every city at once' conveys the core multi-zone behavior beyond the name. It lacks a clear verb and does not explicitly differentiate from siblings like timestamp_converter or find_a_time, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the tool name and the 'world clock / one time, every city at once' tagline, but the description gives no explicit 'when to use' or 'when not to use' guidance. It does not name alternatives or explain why this tool should be preferred over timestamp_converter or find_a_time.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tip_calculatorTip CalculatorA
Read-onlyIdempotent
Inspect

Work out the tip and split the bill into amounts people can actually pay. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
billYesThe amount on the bill before any tip, in whatever currency you use. Tax it already contains is handled by taxRate.
peopleYesHow many ways to split the total. 1 means no split.
roundToNoRound each person's share up to this step in the bill's currency: 1 for whole units, 0.5 for halves. 0 or omitted keeps the exact share. Always up, never down.
taxRateNoSales tax already included in bill, as a percentage. It is taken off before the tip is worked out, so the tip is on the pre-tax amount. 0 or omitted tips on the whole bill, which is the norm outside the US.
tipPercentYesThe tip as a percentage of the bill, or of the pre-tax amount when taxRate is set: 15 means 15%.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description's phrase 'amounts people can actually pay' hints at rounding behavior but does not explicitly disclose the always-up rounding rule or the tax-rate handling; that detail is left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core description is a single efficient sentence that front-loads the purpose. The appended 'A HelpySelf tool (helpyself.com)' is branding that adds no invocation value, preventing a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema and annotations carry most of the weight: parameters are fully described and safety is annotated. The description adds the rounding intent but does not mention return values or edge cases, and with no output schema the agent must infer the result format. It is adequate but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all five parameters. The description adds no parameter-level detail beyond the schema, matching the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('work out the tip and split the bill') on a clear resource (a bill), which distinguishes it from the many other sibling calculators. It is not a tautology and leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose itself implies when to use the tool (when calculating a tip and splitting a bill), but there is no explicit guidance about when not to use it or how it compares to alternatives such as percentage_calculator or vat_calculator. The context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

typing_testTyping TestB
Read-onlyIdempotent
Inspect

A typing speed test that shows both your raw and your real WPM. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
typedYesWhat was actually typed, exactly as entered. Shorter than target is fine; the untyped rest counts as pending.
targetYesThe passage the person was supposed to type. Compared against typed character by character, position by position.
elapsedMsYesTime taken, in milliseconds. Words per minute counts five characters as a word; 0 scores 0 wpm rather than dividing by zero.
includeCharactersNoAlso return a verdict for every character of target: correct, incorrect or pending. Off by default because it is thousands of strings for a minute of typing.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the tool returns raw and real WPM, which is a behavioral output detail. However, it does not disclose how it handles edge cases (e.g., mismatched lengths, zero time) beyond what the schema notes. Given the annotation coverage, a mid-range score 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the core purpose. However, it includes a brand tagline ('A HelpySelf tool (helpyself.com)') that adds no value for an agent and could be considered noise. It is still appropriately short, but the extra brand mention prevents a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should clarify the return format. It only vaguely says 'shows both your raw and your real WPM' without specifying the structure (e.g., object fields, units). The schema fully documents inputs, but the output is underspecified. For a simple tool this is adequate but not complete—an agent may need to know exactly what to expect in the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (target, typed, elapsedMs, includeCharacters) already documented in detail. The description adds no parameter-specific meaning—it only mentions the output WPM values, which is not parameter semantics. With full schema coverage, the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: it is a typing speed test that reports both raw and real (net) WPM. This is specific and distinguishes it from any sibling tool—no other sibling measures typing speed. The verb 'shows' is slightly generic but the resource and output are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, nor any preconditions or exclusions. It does not mention that it requires a target passage and typed input, nor does it suggest scenarios (e.g., 'use this when you have a typed transcript and a reference text'). The agent is left to infer usage from the schema alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unit_converterUnit ConverterB
Read-onlyIdempotent
Inspect

kg to lbs, mm to inches, cm to feet — every everyday unit, in your browser. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesUnit id to convert to, from the same category and the same list of ids as from.
fromYesUnit id to convert from, which must belong to category. Ids by category: length: mm, cm, m, km, in, ft, yd, mi; mass: g, kg, t, oz, lb, st; temperature: c, f, k; volume: ml, l, tsp, tbsp, cup, pt, gal, galuk; area: cm2, m2, km2, ft2, yd2, acre, ha; speed: kmh, mph, ms, kn; data: b, kb, mb, gb, tb, kib, mib, gib, tib; time: ms, s, min, h, d, wk.
valueNoThe quantity to convert, expressed in the from unit. Defaults to 1.
categoryNoWhich kind of quantity: length, mass, temperature, volume, area, speed, data, time. Both from and to must be units of this category. Defaults to length.length

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds only 'in your browser' context, which hints at local execution but not enough to raise the score. No contradiction; output format and error handling are not disclosed, but that burden is light for a pure read-only converter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is compact and scopes the tool with concrete examples. The second sentence, 'A HelpySelf tool (helpyself.com)', carries no agent-relevant information and does not earn its place. Overall it is short but not optimally useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter converter with a complete schema and read-only/idempotent annotations, most invocation details are already present. What is missing is explicit routing guidance versus other converter tools and explicit confirmation that from/to must share a category, though the schema mentions it. The description is adequate but leaves selection logic to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents from, to, value, and category, including all unit ids and enums. The examples 'kg to lbs, mm to inches' give real usage patterns but add no semantic detail beyond the schema. The baseline 3 applies because the structured schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening examples ('kg to lbs, mm to inches, cm to feet') clearly identify the tool as everyday unit conversion, and 'every everyday unit' conveys the scope. It does not explicitly say 'convert', but the examples make the action unambiguous. It is distinguishable from siblings like currency_converter and timezone_converter, though no alternative is named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose this tool over siblings such as currency_converter or timezone_converter, beyond the generic 'everyday unit' phrase. There is no when-not-to-use note and no explicit alternative. An agent can infer general use but not exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

url_encoderURL Encoder & DecoderC
Read-onlyIdempotent
Inspect

A URL encoder and decoder for links and query strings, percent-encoded properly. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNocomponent encodes or decodes every reserved character, as encodeURIComponent does, which is right for one query value. full leaves the characters that structure a URL (/ ? & = : #) alone, as encodeURI does, which is right for a whole address. Ignored by parse.component
textYesThe text to encode, the percent-encoded string to decode, or the URL to parse, depending on action.
actionNoencode percent-encodes text; decode reverses it; parse splits a complete URL (scheme included) into protocol, host, path, query parameters and hash, and ignores mode.encode

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety and idempotency profile. The description adds minimal behavioral context beyond 'percent-encoded properly,' which is trivial. No contradiction with annotations, but little added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the main purpose, but the second sentence ('A HelpySelf tool (helpyself.com)') is pure branding and adds no functional value. It is concise but contains an unnecessary sentence that could be removed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is incomplete for a tool with three actions and two modes. It only mentions encode and decode, omitting the parse action entirely. While the schema covers parameter details, the description fails to give an overview of the tool's full capabilities, leaving an agent unaware of the parse functionality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters (mode, text, action) have detailed descriptions. The tool description adds no parameter-specific meaning, so it does not compensate beyond the schema's baseline. A score of 3 reflects the schema doing the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a URL encoder and decoder for links and query strings, which is specific and distinguishes it from sibling tools (no other URL tool exists). However, it omits the 'parse' action that the schema defines, so the stated purpose is incomplete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, nor does it mention any prerequisites or exclusions. The schema's parameter descriptions offer some usage hints (e.g., when to use component vs full mode), but the description itself gives no context for selection or invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

utm_builderUTM BuilderA
Read-onlyIdempotent
Inspect

A UTM builder for campaign URLs, with the tagging mistakes caught as you type. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoutm_id: GA4's campaign id, tying the link to a campaign record.
urlYesThe destination page. A bare hostname is accepted and assumed https. Any utm_ parameters already on it are replaced and a warning says so; other query parameters and a fragment are kept.
termNoutm_term: the paid keyword, for search ads.
mediumNoutm_medium: the channel, such as cpc, email or social.
sourceNoutm_source: where the traffic comes from, as a short name such as google or newsletter. A pasted URL is flagged. Empty or omitted fields are left off the link.
contentNoutm_content: which link or creative, for telling two links in one campaign apart.
campaignNoutm_campaign: the campaign name, such as spring-sale.
normaliseNoLower-case each value and turn spaces into hyphens before building the link. On by default, because inconsistent casing splits one campaign into several in reporting. Off keeps values exactly as given and warns about casing and spaces instead.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds one extra behavioral trait – validation performed 'as you type' – which goes beyond the annotations and helps set expectations about input checking. It does not repeat or contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is compact and front-loads the purpose. The second sentence, 'A HelpySelf tool (helpyself.com),' is brand attribution that gives an agent no selection or invocation value, so the description doesn't fully earn its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich parameter schema and safety annotations, the description doesn't need to explain parameters or safety, and it does state the core purpose. However, it never mentions what the tool returns (the assembled URL string), and there is no output schema to fill that gap, so the description alone leaves that question open.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter explained in detail (e.g., url's replace-and-keep behavior, normalise's default and rationale, source's pasted-URL flag). The description itself adds no parameter-level information, so it stays at the baseline 3 since the schema already carries the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase 'A UTM builder for campaign URLs' states the resource (campaign URLs) and the function (UTM tagging), and the clause about catching tagging mistakes highlights a distinctive behavior. It lacks an explicit imperative verb such as 'build', and there is no sibling UTM tool to differentiate from, so it just misses the 5-level specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the noun-phrase description: this is the tool to call when a campaign URL needs UTM parameters. There is no explicit when-to-use or when-not-to-use guidance and no named alternative among the 100+ siblings, but the purpose is clear enough that an agent can infer the intended case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uuid_generatorUUID GeneratorB
Read-onlyIdempotent
Inspect

A UUID generator for random v4 identifiers, instantly. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoHow many UUIDs to return, 1 to 500. They come back as an array either way.
uppercaseNoReturn the hex digits in upper case. The hyphens are unaffected.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose that the tool is read-only, idempotent, and non-destructive. The description adds little beyond 'instantly' and 'v4', and does not describe output shape or randomness behavior, leaving most behavioral transparency to the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, stating the core function in the first sentence. The branding line is minor noise, but overall the text is efficient and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple, side-effect-free tool with two well-documented parameters and strong safety annotations. The description plus schema is enough for correct invocation, though the lack of usage guidance among siblings is a minor gap already penalized above.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters, count and uppercase, are fully described in the schema with clear defaults, ranges, and behavior. The description itself adds no parameter-specific detail, so it neither helps nor hurts beyond the schema's already complete coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: generating random v4 UUIDs. It is specific enough that an agent can identify what resource is produced, though it does not explicitly differentiate itself from sibling generation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 random_number_generator or hash_generator. There are no exclusions, examples, or context cues to help an agent choose it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vat_calculatorVAT CalculatorB
Read-onlyIdempotent
Inspect

Add VAT to a price, or take it back out of one — the sum people get wrong. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
rateYesThe VAT rate as a percentage: 25 means 25%. Must be below 100.
amountYesThe price. The net (pre-VAT) price when direction is add; the gross (VAT-inclusive) price when it is remove.
directionYesadd works out the VAT on a net amount and the gross that results. remove takes a gross amount and divides the VAT back out to find the net and the VAT it contained.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds little behavioral context beyond restating the add/remove operations, and the phrase 'the sum people get wrong' is color rather than disclosure. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core functional sentence is short and front-loaded: 'Add VAT to a price, or take it back out of one.' However, the second sentence 'A HelpySelf tool (helpyself.com)' is branding that does not help an agent select or invoke the tool, and 'the sum people get wrong' is filler. The description is compact but not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple calculator with only three fully documented parameters and read-only annotations, the description plus schema provides enough information for correct invocation. The schema's direction description even explains what remove 'finds' after dividing out VAT, covering the result semantics. The lack of an output schema is mitigated by this rich parameter documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, and each parameter has a detailed description: amount distinguishes net vs gross based on direction, rate is a percentage below 100, and direction explains both add and remove. The description adds only a high-level paraphrase and no extra parameter semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Add VAT to a price, or take it back out of one.' This clearly identifies the tool as a VAT calculator with two supported directions. It does not explicitly differentiate itself from sibling tools like percentage_calculator, but the VAT-specific wording makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when a user needs to add VAT to a net price or remove it from a gross price. However, it gives no explicit exclusions, alternatives, or context about choosing this tool over other percentage-based calculators. Usage guidance is present but only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

video_to_gifVideo to GIFA
Read-onlyIdempotent
Inspect

Convert video to GIF — MP4 to GIF in your browser, with the frames you choose. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
fpsNoFrames per second of the GIF. fps times seconds is the frame count, capped at 300. Above about 15 the file grows faster than it improves. Defaults to 10.
dataYesThe video file, base64-encoded; a data: URL prefix is stripped if present. MP4 is what the transformer expects. Roughly 26 MB of video at most.
widthNoLongest edge of the output in pixels, up to 1280; the other edge follows the clip's aspect ratio. Defaults to 480.
secondsNoHow many seconds of the clip to use, counted from the start. The rest is discarded. Defaults to 3.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds a useful behavioral context: the conversion happens 'in your browser', meaning local processing and no server-side state changes. No contradiction with annotations is present, but no additional behavioral detail like output delivery or failure modes is added.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, with the core action in the first words. The trailing brand note 'A HelpySelf tool (helpyself.com)' is minor filler but not distracting. Overall, every important element is present without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich parameter schema and annotations, the description is sufficient for an agent to invoke the tool correctly. It communicates the format, environment, and user-selected framing. An explicit statement of the output (a downloadable GIF) would make it fully complete, but the core conversion intent is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% parameter coverage with clear explanations of fps, data, width, and seconds, including defaults and limits. The description's mention of 'frames you choose' is a high-level reference but does not need to repeat schema details. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Convert video to GIF' and narrows it further with 'MP4 to GIF'. It also specifies the environment ('in your browser') and hints at user control ('with the frames you choose'). This clearly differentiates it from sibling tools like gif_compressor or image_converter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied clearly: use this when you have a video, specifically MP4, and want a GIF. However, there are no explicit exclusions or mentions of alternatives, such as 'for existing GIFs, use gif_compressor'. The guidance is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

watermark_pdfWatermark PDFB
Read-onlyIdempotent
Inspect

Add a watermark to a PDF — DRAFT, CONFIDENTIAL, or a client's name across every page. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe PDF file, base64-encoded; a data: URL prefix is stripped if present.
nameNoThe original file name, used to name the output: "report.pdf" comes back as "report-watermarked.pdf". Defaults to document.document
sizeNoFont size in points for centre and footer; ignored for diagonal, which sizes itself to the page. Defaults to 48 for centre and 12 for footer.
textYesThe word or short phrase to stamp on each page, up to 60 characters: DRAFT, CONFIDENTIAL, a client's name.
pagesNoWhich pages to stamp, as 1-based page numbers. Numbers past the last page are ignored. Omit to stamp every page.
opacityNoHow solid the grey text is, 0.05 (barely visible) to 1 (solid). Defaults to 0.15, faint enough to read the page through.
positionNodiagonal runs corner to corner and sizes itself to the page; centre sits in the middle of the page; footer sits just above the bottom edge, clear of a page number. Defaults to diagonal.diagonal

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=true, destructiveHint=false) and idempotence, lowering the burden on the description. The description adds the default 'across every page' behavior, but this is slightly misleading because the schema's 'pages' parameter allows limiting which pages get stamped. It also does not clarify that a new watermarked file is produced rather than the input being modified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core description is a single clear sentence, but the trailing 'A HelpySelf tool (helpyself.com)' is filler that does not help an agent select or invoke the tool. The structure is short and front-loaded, but not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters and no output schema, the description alone would be incomplete, but the rich parameter descriptions compensate for most ambiguity. It still omits explicit return-value behavior and the page-selection nuance, though the 'name' parameter partially hints at output naming. This is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and every parameter already has a detailed description including defaults, constraints, and behavior. The tool description itself adds no parameter-level meaning beyond restating 'DRAFT, CONFIDENTIAL, or a client's name', which duplicates the 'text' parameter description. Baseline 3 is appropriate because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb and resource ('Add a watermark to a PDF') and gives concrete examples (DRAFT, CONFIDENTIAL, client's name) that make intent obvious. It does not actively differentiate from sibling tools, but the operation is distinct enough that an agent can identify what it does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool through its examples, but it does not state explicit conditions, exclusions, or alternatives. There is no guidance distinguishing it from other PDF-related tools in the sibling list, so the usage context is only inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webcam_testWebcam TestC
Read-onlyIdempotent
Inspect

A webcam test that tells you what the other end will actually see A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYesFrame width in pixels. With height it decides the resolution grade, judged on the shorter side so portrait counts, and the aspect ratio.
heightYesFrame height in pixels.
pixelsNoOne frame as RGBA bytes, four values per pixel, 0-255, as a canvas getImageData returns them; the length must be a multiple of four. Used to measure brightness and the blown-out fraction. Send a downsample of up to 100,000 pixels, such as 64x64: it gives the same verdict as a full frame.
frameRateNoFrames per second, if already known. Omit it and pass frameTimestampsMs to have it measured; omit both and smoothness comes back null.
brightnessNoAverage brightness of the frame, 0 (black) to 1 (white), if measured yourself. Ignored when pixels is given.
blownFractionNoFraction of the frame burnt out to white, 0 to 1, if measured yourself. Ignored when pixels is given. This is what tells a backlit subject from a well-lit one.
frameTimestampsMsNoArrival times of consecutive frames, in milliseconds. Needs at least two; the rate is derived from first to last rather than from any single gap. Ignored when frameRate is given.

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, and the description does not contradict them. However, the description adds no operational context beyond the outcome statement—it doesn't mention whether the camera is accessed, what processing occurs, or how optional inputs affect the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the main purpose, but it is awkwardly phrased ('will actually see A HelpySelf tool' with missing punctuation) and includes a branding clause that doesn't help an agent select or invoke the tool. It is concise but not polished.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With seven parameters and no output schema, the description is too thin: it doesn't describe the returned verdict, the effect of optional parameters, or what happens when required data is missing. The rich input schema mitigates parameter confusion, but the tool's overall contract remains underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with detailed descriptions for all seven parameters including width, height, pixels, frameRate, brightness, blownFraction, and frameTimestampsMs. The description itself adds no parameter-level meaning, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the specific resource (webcam) and the outcome ('what the other end will actually see'), going beyond simply restating the title. It does not, however, explain how the test works or explicitly differentiate it from related tools such as mic_test or the many image tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, no exclusions, and no scenario-based advice. An agent is left to infer applicability from the name and the phrase 'webcam test'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

what_is_my_ipWhat Is My IPA
Read-onlyIdempotent
Inspect

What's my IP — the address the internet sees, and where it thinks you are. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds context about the output (IP and location) beyond the schema, which is useful. It does not disclose any other behaviors (e.g., rate limits), but for a simple read-only tool this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core meaning. However, it includes the promotional tag 'A HelpySelf tool (helpyself.com)' which adds no value for an agent. This reduces the score from 5 to 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with no output schema, the description fully explains what the tool returns (IP and location). The schema description complements it by specifying the caller's IP. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The schema description already states it takes no arguments. The tool description does not add parameter details, but none are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the user's public IP address and geolocation. It is specific and distinct from all sibling tools, none of which relate to IP lookup. The phrase 'the address the internet sees, and where it thinks you are' precisely conveys the output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool or mention any alternatives. Since there are no sibling tools for IP lookup, the use case is implied but not stated. It lacks explicit guidance such as 'Use this when you need to know your public IP.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheel_of_namesWheel of NamesB
Read-onlyIdempotent
Inspect

A spinning wheel of names — paste a list, spin, and get one fair winner. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
drawsNoHow many winners to draw. Without removeWinner each draw is from the full list, so the same name can win more than once. Defaults to 1.
namesYesThe entries to draw from, one per line. Blank lines and surrounding spaces are ignored; a name listed twice has two chances.
removeWinnerNoTake each winner out of the list before the next draw, so no name wins twice. Drawing stops early if the list runs out; remaining in the response lists who is left.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds a subtle behavioral trait: 'fair winner' implying unbiased selection. However, the annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description does not disclose the behavior of duplicate names or the impact of removeWinner, which are described in the schema, but beyond that it adds minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core action. It includes a domain link (HelpySelf) which is useful for context but not essential. It is concise and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 params, one required), the description is adequate but not thorough. It does not explain the nuances of multiple draws, the option to remove winners, or input format details, but those are covered in the schema. Since there is no output schema, the description could mention what the response looks like, but it doesn't, leaving a slight gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters: names, draws, and removeWinner. The description does not add new parameter meaning beyond what the schema already provides, except the mention of 'paste a list' which aligns with the names parameter. Thus, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: spin a wheel of names to get a fair winner. It names the key actions (paste, spin) and the output. However, it does not explicitly differentiate it from similar tools like random_picker or random_team_generator, but the unique 'wheel' metaphor helps distinguish it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: paste a list and spin. It doesn't explicitly state when to use this tool over alternatives or when not to use it. Sibling tools like random_picker exist, but no guidance is given for choosing between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

word_counterWord CounterA
Read-onlyIdempotent
Inspect

A word counter and character counter, updating as you type. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to count. Returns characters with and without spaces, words, sentences, paragraphs (split on blank lines), lines, reading and speaking time in minutes, and the most frequent words with common ones left out.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds 'updating as you type,' which is a user-interface trait rather than a tool execution detail, and it provides minimal behavioral context beyond what annotations already convey. The HelpySelf branding is irrelevant to tool behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with two short sentences. The first sentence clearly states the purpose, and the second is branding. While the branding sentence is unnecessary for functionality, it does not detract from clarity. The description is front-loaded and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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) and the rich parameter description in the schema, the description is sufficient. An agent can infer the return values from the schema. No critical information is missing for correct invocation, though it could mention typical use cases or edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema's description for 'text' is thorough (100% coverage), detailing all the computed metrics (characters, words, sentences, etc.). The tool description adds no additional parameter information, so it relies entirely on the schema. With high schema coverage, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool counts words and characters, which is a specific verb+resource. It distinguishes itself from the many sibling tools (e.g., case_converter, text_diff) by focusing on counting metrics. The title and description align perfectly, leaving no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives. While it's obvious that this is for counting text metrics, there is no mention of when not to use it (e.g., for editing, formatting, or other transformations). The usage context is implied rather than stated, which is adequate but not exemplary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

word_to_pdfWord to PDFA
Read-onlyIdempotent
Inspect

Convert a Word document to PDF in your browser — nothing is uploaded. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe Word document, base64-encoded; a data: URL prefix is stripped if present. A .docx is expected, and the older binary .doc is recognised from its bytes too. Up to 25 MB once decoded.
pageSizeNodocument keeps the paper size and margins the file was written for. a4 or letter overrides them with that paper and fixed margins, which re-wraps every paragraph. Defaults to document.document

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral context beyond annotations by stating that conversion happens 'in your browser' and that 'nothing is uploaded,' which informs privacy expectations. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the action, and avoids clutter. The only marginal element is the 'A HelpySelf tool (helpyself.com)' branding sentence, which provides no selection or invocation value, but it is brief and not distracting.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple conversion tool with two fully documented parameters and no output schema, the description is sufficiently complete. It communicates the core operation, the privacy-relevant browser-local behavior, and expected input type implicitly via the schema. It could mention output handling but the result is obvious from 'Convert to PDF.'

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds no parameter-level details, but the baseline of 3 applies because the schema carries the burden and the description does not need to repeat it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Convert a Word document to PDF.' It also adds a distinguishing trait ('in your browser — nothing is uploaded'), which clearly differentiates it from reverse tools like pdf_to_word and similar conversion utilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when converting a Word document to PDF, but it does not explicitly state when to use this tool versus alternatives or mention any exclusions. The privacy note ('nothing is uploaded') gives context but no direct comparison with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

xml_formatterXML FormatterA
Read-onlyIdempotent
Inspect

An XML formatter that indents, minifies and checks a document in your browser. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlYesThe XML document to work on.
modeNoformat re-indents it, one node per line; minify puts it on one line; validate only reports whether the tags nest and close, with the line of the first fault. None of them checks against a schema. Defaults to format.format
indentNoSpaces per nesting level when formatting, or "tab" for one tab per level. Ignored by minify and validate. Defaults to 2.
keepCommentsNoKeep <!-- --> comments when formatting; false drops them. Defaults to true.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral detail by enumerating the three modes (format, minify, validate) and implying that validation does not check against a schema (though this is also in the parameter schema). This goes beyond the annotations, providing useful operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that captures the core functionality and context. It is front-loaded with the main verb and resource, and there is no wasted wording. It earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with full schema coverage and no output schema, the description is nearly complete. It states the purpose and the three modes, and the schema covers parameters. It could mention that the tool returns the formatted/minified XML or validation results, but that is implied. The description is adequate for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add any parameter-specific meaning beyond what the schema already provides. The schema descriptions for xml, mode, indent, and keepComments are comprehensive, and the tool description does not supplement them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'An XML formatter that indents, minifies and checks a document'. It identifies the specific resource (XML documents) and the three distinct operations (format, minify, validate), distinguishing it from sibling formatters like json_formatter or sql_formatter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives. It only states what it does, without mentioning when not to use it or suggesting other tools for different document types. The context of 'in your browser' is incidental, not a usage guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

yaml_to_jsonYAML to JSONA
Read-onlyIdempotent
Inspect

Convert a config file to JSON, or JSON back to readable YAML. A HelpySelf tool (helpyself.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe document to convert: YAML when direction is yaml-to-json, JSON when it is json-to-yaml. A YAML file holding several --- documents becomes a JSON array.
indentNoSpaces of indentation in the output. For JSON, 0 gives a single line; YAML output always indents by at least 1. Defaults to 2.
sortKeysNoSort object keys alphabetically at every level, so two configs can be compared. Off by default, which keeps the input's order.
directionNoyaml-to-json parses YAML and returns JSON; json-to-yaml parses JSON and returns YAML. Defaults to yaml-to-json.yaml-to-json

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the 'readable YAML' framing but no deeper behavioral context like multi-document handling, which is only in the parameter schema. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is efficient and immediately communicates the tool's purpose. The second sentence 'A HelpySelf tool (helpyself.com)' is marketing rather than useful selection or invocation guidance, keeping this from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 4-parameter converter with fully described schema fields and safety annotations, the description plus schema is sufficient for correct invocation. No output schema exists, but the schema already indicates what the conversion returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all four parameters including direction, indent, and sortKeys. The tool description adds no parameter-level meaning beyond this, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses explicit verb 'Convert' with a specific resource (config file) and names both directions (YAML to JSON and JSON to YAML). This clearly distinguishes from sibling converters like csv_to_json and json_formatter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use it for converting config files between YAML and JSON. It does not explicitly contrast with alternatives or state when not to use it, so it stops short of full usage guidance.

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.

  1. 114 tool updates
    • Changedage_calculator2 fields changed
      • addedInput schema / properties / asOf / description
        Added value: +"The date to measure the age at, YYYY-MM-DD. Omitted, the server's own UTC date is used, which can be a day out for the caller near midnight, so pass it when the exact day matters. Must not be before the birth date. The response echoes the date it used."
      • addedInput schema / properties / birth / description
        Added value: +"Date of birth as YYYY-MM-DD. Read as a calendar date with no time zone, so the answer is the same wherever it is asked from."
    • Changedapp_background_preview10 fields changed
      • addedInput schema / properties / devices / description
        Added value: +"Which device shapes to check. Omitted or empty, every device is checked. Each id is one aspect ratio standing for all the models that share it; the response names those models. The safe area is the intersection across everything checked, so fewer devices means a larger safe area."
      • addedInput schema / properties / devices / items / description
        Added value: +"A device id. Each id stands for one screen shape, not one model."
      • addedInput schema / properties / height / description
        Added value: +"Height of the artwork in pixels, paired with width."
      • addedInput schema / properties / kinds / description
        Added value: +"Narrow the check to phones, tablets or foldables. Omitted or empty, all three are included. Applied on top of devices, so the two filters compose. Leaving foldables in when you do not ship to one shrinks the safe area, because a foldable opened out is nearly square."
      • addedInput schema / properties / kinds / items / description
        Added value: +"phone, tablet or foldable."
      • addedInput schema / properties / mode / description
        Added value: +"How the platform scales the image onto the screen. fill scales until both axes are covered and crops the overflow, centred; fit shows the whole image with empty bars (letterboxed); stretch shows the whole image distorted to the screen's shape; center shows a screen-sized window at native scale from the middle of the image."
      • addedInput schema / properties / orientations / description
        Added value: +"Which orientations to check each device in. Omitted or empty, both portrait and landscape are checked, and both feed the safe-area intersection."
      • addedInput schema / properties / orientations / items / description
        Added value: +"portrait or landscape."
      • addedInput schema / properties / respectInsets / description
        Added value: +"When true, the safe area is taken over the part of each screen not covered by the status bar, notch or home indicator, so it is safe from being covered as well as from being cropped. False (the default) considers cropping only."
      • addedInput schema / properties / width / description
        Added value: +"Width of the artwork in pixels. Only the width-to-height ratio affects the crop, so any resolution with the same shape gives the same answer; the rectangles in the response are in these pixels."
    • Changedascii_table2 fields changed
      • addedInput schema / properties / includeExtended / description
        Added value: +"Also include codes 128 to 255, read as ISO-8859-1 (Latin-1). ASCII proper stops at 127, so a search for a higher code finds nothing unless this is true."
      • addedInput schema / properties / search / description
        Added value: +"What to look up: a single character (\"A\"), a decimal code (\"65\"), hex (\"0x41\", \"U+0041\", \"\\x41\"), binary (\"0b01000001\"), octal (\"0o101\"), an HTML entity (\"&amp;\"), an abbreviation (\"LF\") or part of a name (\"line feed\", \"sep\"). Numbers return one entry; names return every match, best first. Plain digits are always decimal. Empty (the default) returns the whole table."
    • Changedauto_redact_pdf2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"The language the document is most likely in, such as \"Danish\", passed to the model as a hint because it changes what a name looks like. A hint only: a wrong guess does not stop the text being read, and omitting it is fine."
      • addedInput schema / properties / text / description
        Added value: +"The document's plain text, as extracted from the PDF, not the file itself. It is sent to a language model, which returns the personal names and postal addresses found in it, each exactly as written; the caller maps them back to positions. Emails, phone and card numbers are not returned, since patterns catch those locally. At least 40 characters and at most 120000."
    • Changedaverage_calculator1 field changed
      • addedInput schema / properties / numbers / description
        Added value: +"The list of numbers as one string, separated by commas, spaces, line breaks or anything else that is not a digit, sign or decimal point. Use a decimal point, never a decimal comma: \"1,5\" is read as two numbers. Anything unparseable is skipped, and at least one number must remain. Returns mean, median, mode, range and both standard deviations."
    • Changedavif_converter6 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The image file's bytes, base64-encoded: JPEG, PNG, WebP, GIF or AVIF. At most 30 MB decoded. An animated GIF is converted to a still of its first frame, and the response says so with note: \"animation-dropped\"."
      • addedInput schema / properties / format / description
        Added value: +"The format to produce. AVIF is what the tool is for; WebP, JPEG and PNG exist so an AVIF can be converted back to something older software opens."
      • addedInput schema / properties / maxWidth / description
        Added value: +"Scale the image down so its width is at most this many pixels, keeping the aspect ratio. Never enlarges. Omit to keep the original dimensions."
      • addedInput schema / properties / name / description
        Added value: +"The original filename. Only used to name the result: its extension is swapped for the output format's, so photo.jpg comes back as photo.avif."
      • addedInput schema / properties / quality / description
        Added value: +"Encoder quality, 1 (smallest, roughest) to 100 (largest). Ignored for PNG, which is lossless. The default of 60 is deliberate: AVIF at 100 is often larger than the JPEG it replaces."
      • addedInput schema / properties / type / description
        Added value: +"The MIME type of the bytes in data. The image pipeline reads all of these; the actual format is taken from the bytes, so a wrong value here is not fatal."
    • Changedbackground_remover8 fields changed
      • addedInput schema / properties / colour / description
        Added value: +"The background colour to remove, as #rrggbb hex. Omit to sample it from the four corners of the image; the response reports the colour used and whether the corners agreed on it."
      • addedInput schema / properties / data / description
        Added value: +"The image file's bytes, base64-encoded. This removes a flat, single-colour background such as a white product shot or a scan; it is not a subject cutout for photos with busy backgrounds."
      • addedInput schema / properties / feather / description
        Added value: +"How soft the edge is, 0 to 100. It widens the band of partly transparent pixels around the tolerance threshold, as a percentage of tolerance; 0 gives a hard jagged cut."
      • addedInput schema / properties / name / description
        Added value: +"The original filename. Used only to name the result, whose extension becomes .png because the output is always a PNG with transparency."
      • addedInput schema / properties / reach / description
        Added value: +"edges (the default) removes only background connected to the image border, so enclosed areas like the hole in a letter or a window behind someone stay. everywhere removes every pixel within tolerance wherever it is."
      • changedInput schema / properties / tolerance / default
        Previous value: -20New value: +12
      • addedInput schema / properties / tolerance / description
        Added value: +"How far a pixel's colour may be from the background colour and still be removed, 0 to 100 as a share of the largest possible RGB distance. Raise it for uneven lighting or JPEG noise; too high eats into the subject."
      • addedInput schema / properties / type / description
        Added value: +"The MIME type of the bytes in data: JPEG, PNG or WebP."
    • Changedbarcode_generator5 fields changed
      • addedInput schema / properties / height / description
        Added value: +"Height of the bars in pixels. The printed number and the longer guard bars add to the total height of the SVG when showText is true."
      • addedInput schema / properties / scale / description
        Added value: +"Width of the narrowest bar in pixels; every other width and the quiet zones are multiples of it, so this sets the overall size. 3 is about right for a screen."
      • addedInput schema / properties / showText / description
        Added value: +"Print the encoded value underneath the bars, as a retail barcode always does. False gives bars only."
      • addedInput schema / properties / symbology / description
        Added value: +"Which barcode standard to draw. ean13 (13 digits, the retail default worldwide), upca (12 digits, North American retail), ean8 (8 digits, small packaging), code128 (letters, digits and punctuation, for labels and logistics)."
      • addedInput schema / properties / text / description
        Added value: +"What to encode. For ean13, upca and ean8 this is digits only: 12, 11 or 7 of them and the check digit is worked out, or one more and it is verified (a wrong one is refused rather than drawn). For code128 it is any printable ASCII up to 80 characters."
    • Changedbarcode_reader2 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The image file's bytes, base64-encoded: JPEG, PNG, WebP, GIF or BMP. SVG is refused here (the server cannot rasterise it); convert it to PNG first."
      • addedInput schema / properties / type / description
        Added value: +"The MIME type of the bytes, such as image/png. Optional and only used to reject something that is plainly not an image; the format is otherwise read from the bytes."
    • Changedbase643 fields changed
      • addedInput schema / properties / action / description
        Added value: +"encode turns text into Base64; decode turns Base64 back into UTF-8 text. Defaults to encode."
      • addedInput schema / properties / text / description
        Added value: +"The text to encode, or the Base64 to decode, depending on action. Encoding goes through UTF-8 first, so accents, emoji and CJK survive. Decoding accepts standard or URL-safe Base64, with or without padding, and ignores whitespace."
      • addedInput schema / properties / urlSafe / description
        Added value: +"When encoding, use the URL-safe alphabet (RFC 4648 section 5): + and / become - and _, and the = padding is dropped, as in JWTs. Ignored when decoding, which detects either alphabet."
    • Changedbinary_translator2 fields changed
      • addedInput schema / properties / input / description
        Added value: +"Plain text, or bytes written as binary, hex, decimal or octal. Groups may be separated by spaces or commas; hex also accepts 0x prefixes and unspaced pairs. Every other representation of the same bytes comes back at once, so there is no direction to choose. Text is treated as UTF-8, so \"é\" is two bytes."
      • addedInput schema / properties / readAs / description
        Added value: +"How to read input. auto (the default) works it out: only 0s and 1s in whole bytes is binary, hex digits with a letter or 0x is hex, several zero-padded pairs is hex, several numbers up to 255 is decimal, anything else is text. Octal is never guessed, since \"17\" is valid octal and decimal, so name it explicitly. Byte values over 255 are refused."
    • Changedbmi_calculator5 fields changed
      • addedInput schema / properties / feet / description
        Added value: +"The whole-feet part of the height. Imperial only; ignored when metric. Either feet or inches may be left out, so 6 ft with no inches works."
      • addedInput schema / properties / height / description
        Added value: +"Height in centimetres. Required when units is metric and ignored when imperial, which takes feet and inches instead."
      • addedInput schema / properties / inches / description
        Added value: +"The inches part of the height, added to feet. Imperial only; ignored when metric."
      • addedInput schema / properties / units / description
        Added value: +"metric (the default) reads weight as kg and height as cm; imperial reads weight as lb and height as feet plus inches. Also sets the unit of the healthy range returned."
      • addedInput schema / properties / weight / description
        Added value: +"Body weight, in kilograms when units is metric and in pounds when imperial. The healthy-weight range in the response comes back in the same unit."
    • Changedbody_fat_calculator7 fields changed
      • addedInput schema / properties / height / description
        Added value: +"Standing height, in the unit named by system."
      • addedInput schema / properties / hip / description
        Added value: +"Hip circumference at the widest point, in the unit named by system. Required when sex is female; ignored when male."
      • addedInput schema / properties / neck / description
        Added value: +"Neck circumference measured just below the larynx, in the unit named by system. Must be smaller than the waist (or waist plus hip for female) or the request is refused."
      • addedInput schema / properties / sex / description
        Added value: +"Which of the two US Navy equations to use; they are not interchangeable. female needs a hip measurement and uses waist plus hip; male uses the waist alone."
      • addedInput schema / properties / system / description
        Added value: +"The unit every measurement is in. metric (the default) reads height, neck, waist and hip in centimetres and weight in kilograms; imperial reads lengths in inches and weight in pounds."
      • addedInput schema / properties / waist / description
        Added value: +"Waist circumference, relaxed, in the unit named by system: at the navel for men, at the narrowest point for women."
      • addedInput schema / properties / weight / description
        Added value: +"Body weight in kg (metric) or lb (imperial). Not part of the percentage; it is only used to also return fat mass and lean mass in the same unit. Omit it and those come back null."
    • Changedbulk_image_resizer6 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The image file's bytes, base64-encoded."
      • addedInput schema / properties / format / description
        Added value: +"The output format. keep (the default) re-encodes in the same type as the input; the others convert. JPEG has no transparency, so transparent areas are flattened onto white."
      • addedInput schema / properties / maxEdge / description
        Added value: +"The longest side of the result in pixels. The image is scaled down to fit inside this on its longer edge, keeping its aspect ratio. Never enlarges: an image already within the bound is returned as it is, with unchanged: true."
      • addedInput schema / properties / name / description
        Added value: +"The original filename. Echoed back unchanged as the result's name."
      • addedInput schema / properties / quality / description
        Added value: +"Encoder quality for JPEG and WebP, 0.1 (smallest) to 1 (largest). Has no effect on PNG, which is lossless."
      • addedInput schema / properties / type / description
        Added value: +"The MIME type of the bytes in data: JPEG, PNG or WebP. Also the output type when format is keep."
    • Changedbusiness_days4 fields changed
      • addedInput schema / properties / days / description
        Added value: +"How many working days (Monday to Friday, minus holidays) to move. Positive counts forward, negative counts back; zero is refused. More than 5200 either way is refused as too far."
      • addedInput schema / properties / holidays / description
        Added value: +"Dates to skip in addition to Saturdays and Sundays, YYYY-MM-DD each. No public holidays are assumed for any country, so pass the ones that apply. Omitted, only weekends are skipped. Those that fell on the path are listed in the response."
      • addedInput schema / properties / holidays / items / description
        Added value: +"A date to skip, YYYY-MM-DD."
      • addedInput schema / properties / startDate / description
        Added value: +"The date to count from, YYYY-MM-DD. Counting begins the day after it, so one working day from a Friday is the Monday. It may itself be a weekend or holiday; the response says whether it was a working day."
    • Changedcalorie_calculator5 fields changed
      • addedInput schema / properties / activity / description
        Added value: +"How active a typical week is, multiplying resting metabolism to get maintenance calories: sedentary (little or no exercise, x1.2, the default), light (x1.375), moderate (x1.55), active (x1.725), athlete (very hard daily training, x1.9)."
      • addedInput schema / properties / age / description
        Added value: +"Age in years. The equation was fitted on adults, so under 18 or over 100 the answer is still computed but reported as reliable: false."
      • addedInput schema / properties / heightCm / description
        Added value: +"Height in centimetres. Under 120 cm the answer is marked unreliable."
      • addedInput schema / properties / sex / description
        Added value: +"Enters the Mifflin-St Jeor equation as a constant, and sets the lowest intake the tool will suggest: 1,200 kcal a day for female, 1,500 for male."
      • addedInput schema / properties / weightKg / description
        Added value: +"Body weight in kilograms. Under 30 kg the answer is marked unreliable."
    • Changedcase_converter2 fields changed
      • addedInput schema / properties / target / description
        Added value: +"The case to produce: camel (helloWorld), pascal (HelloWorld), snake (hello_world), constant (HELLO_WORLD), kebab (hello-world), title (Hello World, small words like \"of\" kept lower unless first or last), sentence (first letter of each sentence capitalised, punctuation kept), upper or lower (the whole text, punctuation kept). Omit to get every case at once as a list."
      • addedInput schema / properties / text / description
        Added value: +"The text to convert. It may already be in any case: camelCase, snake_case, kebab-case, acronyms like HTTPServer and digits are all split into words before being rebuilt."
    • Changedchecksum_verifier2 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The file's bytes, base64-encoded. They are hashed with whichever algorithm expected implies and compared; the response is a match boolean plus both digests."
      • addedInput schema / properties / expected / description
        Added value: +"The published checksum, pasted as found: bare hex in either case, a whole SHA256SUMS line with the filename, a sha256: prefix as registries use, or a sha256-<base64> integrity value. The algorithm (SHA-1, SHA-256, SHA-384 or SHA-512) is read from the prefix or the digest length, never chosen. MD5 is refused."
    • Changedcoin_flip2 fields changed
      • addedInput schema / properties / count / description
        Added value: +"How many times to flip, 1 to 1000. Every flip comes back in order, with a heads and tails tally beside them."
      • addedInput schema / properties / headsPercent / description
        Added value: +"Chance of heads on each flip, as a percentage. 50 is a fair coin; 12.5 is honoured exactly rather than rounded to a whole percent."
    • Changedcolor_converter1 field changed
      • addedInput schema / properties / color / description
        Added value: +"The colour to convert, in any CSS form: #rgb, #rrggbb, #rrggbbaa, rgb()/rgba(), hsl()/hsla() or a colour name like teal. It comes back as hex, rgb and hsl, with the channels as numbers and a black-or-white text colour that reads on it."
    • Changedcompare_two_lists5 fields changed
      • addedInput schema / properties / ignoreBlank / description
        Added value: +"Drop empty lines rather than counting them as entries. On by default; off, a blank line on both sides shows up under both."
      • addedInput schema / properties / ignoreCase / description
        Added value: +"Treat Alice and alice as the same entry. On by default. The output keeps whichever spelling appeared first rather than lower-casing it."
      • addedInput schema / properties / listA / description
        Added value: +"The first list, one entry per line. Order does not matter: each side is treated as a set, and the answer is what is only in A, only in B, and in both."
      • addedInput schema / properties / listB / description
        Added value: +"The second list, one entry per line, compared against listA the same way."
      • addedInput schema / properties / trim / description
        Added value: +"Ignore space at either end of a line when comparing, so 'Alice ' and 'Alice' match. On by default."
    • Changedcompound_interest6 fields changed
      • addedInput schema / properties / amount / description
        Added value: +"The opening balance, in whatever currency the caller is thinking in. It is counted as contributed money, so it never appears as interest."
      • addedInput schema / properties / contributeAtStart / description
        Added value: +"Pay each contribution at the start of its period rather than the end, so it earns that period's interest. Off by default, which is the smaller answer."
      • addedInput schema / properties / contribution / description
        Added value: +"An amount paid in every compounding period, not every month or year: with daily compounding it is paid 365 times a year. Omitted or 0 means nothing is added."
      • addedInput schema / properties / frequency / description
        Added value: +"How often interest is added to the balance: 1, 4, 12 or 365 times a year. Defaults to monthly. More frequent compounding gives a slightly higher effective rate."
      • addedInput schema / properties / rate / description
        Added value: +"The nominal annual interest rate as a percentage: 5 means 5%. It is divided by the number of compounding periods a year, so the effective annual rate is returned too."
      • addedInput schema / properties / years / description
        Added value: +"How long the money is left to grow, in years. Fractions are allowed and rounded to whole compounding periods. One row per year comes back for a table or chart."
    • Changedcompress_to_size4 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The image file itself, base64-encoded (no data: prefix). The result's data is the compressed file in the same encoding."
      • addedInput schema / properties / name / description
        Added value: +"The file name, echoed back in the response so a caller can keep it with the result. It does not decide the format; type does."
      • addedInput schema / properties / targetKb / description
        Added value: +"The size the output must not exceed, in kilobytes of 1,024 bytes, as upload limits mean it. The highest quality that fits is found by re-encoding; if none does, the response says so and suggests a scale factor to shrink the pixels by instead."
      • addedInput schema / properties / type / description
        Added value: +"The MIME type of the bytes in data. A JPEG is re-encoded as JPEG; PNG and WebP input both come back as WebP."
    • Changedcontrast_checker4 fields changed
      • addedInput schema / properties / background / description
        Added value: +"The colour behind the text, in the same forms as foreground."
      • addedInput schema / properties / foreground / description
        Added value: +"The text colour, as hex, rgb(), hsl() or a CSS colour name. A translucent colour is composited over the background before the ratio is taken."
      • addedInput schema / properties / suggest / description
        Added value: +"Also return a suggestion: the foreground nudged lighter or darker until it clears target, as hex, or null if even black or white would not. Off by default."
      • addedInput schema / properties / target / description
        Added value: +"The contrast ratio the suggestion must reach. Only used when suggest is true. 4.5 is WCAG AA for normal text, 3 is AA for large text, 7 is AAA."
    • Changedcontrast_fixer4 fields changed
      • addedInput schema / properties / adjust / description
        Added value: +"Which colour may change. Only its lightness moves; hue and saturation are kept. 'either' tries both and returns the smallest change first. Defaults to either."
      • addedInput schema / properties / background / description
        Added value: +"The colour behind the text, in the same forms as foreground."
      • addedInput schema / properties / foreground / description
        Added value: +"The text colour, as hex, rgb(), hsl() or a CSS colour name."
      • addedInput schema / properties / level / description
        Added value: +"The WCAG grade to reach. AA is normal body text at 4.5:1, AA_LARGE is large text at 3:1, AAA is 7:1 and AAA_LARGE is 4.5:1. Defaults to AA."
    • Changedcontrast_grid2 fields changed
      • addedInput schema / properties / level / description
        Added value: +"The WCAG grade a pairing must clear to count as passing: AA is 4.5:1, AA_LARGE is 3:1, AAA is 7:1, AAA_LARGE is 4.5:1. Every cell still reports its own ratio and grade; this only decides the pass count. Defaults to AA."
      • addedInput schema / properties / palette / description
        Added value: +"The colours to check against each other, as hex, rgb(), hsl() or CSS colour names, separated by newlines, commas or spaces. CSS custom-property names are ignored, duplicates are dropped, and 2 to 24 distinct colours are needed."
    • Changedcookie_checker1 field changed
      • addedInput schema / properties / url / description
        Added value: +"The public website to check, for example https://example.com. A bare hostname is read as https. The page is fetched as a normal browser would and every Set-Cookie header it returns is parsed and judged. Private, loopback and non-http addresses are refused."
    • Changedcountdown_timer3 fields changed
      • addedInput schema / properties / hours / description
        Added value: +"The hours part of the duration. The three parts are added together and capped at 24 hours in total, then returned as milliseconds, as h:mm:ss text and as parts."
      • addedInput schema / properties / minutes / description
        Added value: +"The minutes part of the duration. Defaults to 5, so an empty request is 05:00."
      • addedInput schema / properties / seconds / description
        Added value: +"The seconds part of the duration."
    • Changedcron_expression3 fields changed
      • addedInput schema / properties / count / description
        Added value: +"How many upcoming runs to list, strictly after now, each as a wall-clock ISO string without an offset plus a readable form. Defaults to 5."
      • addedInput schema / properties / expression / description
        Added value: +"A five-field crontab expression (minute, hour, day of month, month, day of week) such as '*/15 9-17 * * MON-FRI', or a shorthand like @daily or @hourly. Names, ranges, lists and steps are accepted; Quartz seconds and L/W/# are not. It comes back explained in words with its next run times."
      • addedInput schema / properties / timezone / description
        Added value: +"The IANA time zone the schedule is read in, such as Europe/Copenhagen. Cron means wall-clock time, so the run times change with it. Defaults to UTC, and an unrecognised name falls back to UTC."
    • Changedcsv_to_json8 fields changed
      • addedInput schema / properties / delimiter / description
        Added value: +"The field separator: comma, semicolon, tab or pipe. 'auto' (the default) picks whichever appears most on the first line outside quotes when reading CSV, and writes a comma when producing it. The one used is returned."
      • addedInput schema / properties / direction / description
        Added value: +"Which way to convert. Defaults to csv-to-json. Going to CSV, the columns are the union of every object's keys and rows are joined with CRLF."
      • addedInput schema / properties / header / description
        Added value: +"Treat the first CSV row as column names, or write one when producing CSV. On by default. Off, every row is data and shape falls back to arrays."
      • addedInput schema / properties / indent / description
        Added value: +"Spaces of indentation in the JSON output. 0 puts it all on one line. Defaults to 2. Ignored when producing CSV."
      • addedInput schema / properties / shape / description
        Added value: +"The JSON produced from CSV: 'objects' keyed by column name (duplicate names get a _2 suffix), or 'arrays' of values in column order. Defaults to objects."
      • addedInput schema / properties / text / description
        Added value: +"The data to convert: CSV text when direction is csv-to-json, or a JSON array of objects or arrays when it is json-to-csv. Quoted fields, embedded newlines and doubled quotes are handled."
      • addedInput schema / properties / trim / description
        Added value: +"Strip whitespace from both ends of every field and column name when reading CSV. On by default."
      • addedInput schema / properties / typed / description
        Added value: +"Convert fields that look like numbers, true/false or null to those JSON types, and empty fields to null. Off by default so postcodes and codes like 007 stay strings."
    • Changedcurrency_converter3 fields changed
      • addedInput schema / properties / amount / description
        Added value: +"How much of fromCurrency to convert, in major units (dollars, not cents). Negative is allowed, since a refund is a conversion too."
      • addedInput schema / properties / fromCurrency / description
        Added value: +"The ISO 4217 code of the currency the amount is in, such as USD. Case does not matter. Only currencies the European Central Bank quotes daily are known; an unknown code returns an error naming it."
      • addedInput schema / properties / toCurrency / description
        Added value: +"The ISO 4217 code to convert into, such as EUR. The rate used is the ECB cross rate for the day, and the whole day's rate table comes back with the answer."
    • Changeddate_difference2 fields changed
      • addedInput schema / properties / fromDate / description
        Added value: +"The first date as YYYY-MM-DD, usually the earlier one. The answer gives years, months and days, the gap in days, the span counting both ends, whole weeks, and Monday-to-Friday working days (public holidays not excluded)."
      • addedInput schema / properties / toDate / description
        Added value: +"The other date as YYYY-MM-DD. It may be earlier than fromDate: the difference is counted between the two whichever way round, and direction in the response says forward, backward or same."
    • Changeddays_until_christmas3 fields changed
      • addedInput schema / properties / day / description
        Added value: +"The day of the month. Defaults to the 25th. A day the month never has (30 February) is refused; 29 February counts to the next leap year. Whole calendar days are counted, the day itself is 0, and a date already passed rolls to next year."
      • addedInput schema / properties / month / description
        Added value: +"The month of the occasion, 1 to 12. Defaults to December. Pass month and day together to count to any yearly date, such as a birthday."
      • addedInput schema / properties / today / description
        Added value: +"The date to count from, as YYYY-MM-DD in the caller's own calendar. Defaults to today in UTC. The response repeats the date it counted from as countedFrom."
    • Changeddelisted_games1 field changed
      • addedInput schema / properties / game / description
        Added value: +"The game to look up: a name, a Steam store URL or a numeric app id, in one field. A name is matched against every game ever seen in the weekly Steam snapshots, including ones Steam's own search no longer finds, and up to 8 matches come back each with a status of listed, delisted, upcoming, gone or unknown."
    • Changeddice_roller3 fields changed
      • addedInput schema / properties / dice / description
        Added value: +"How many dice to roll, 1 to 100: the 2 in 2d6+3. Each roll comes back separately along with their subtotal."
      • addedInput schema / properties / modifier / description
        Added value: +"A whole number added once to the total, not to each die: the +3 in 2d6+3. May be negative. Defaults to 0."
      • addedInput schema / properties / sides / description
        Added value: +"Faces on each die, 2 to 1000: the 6 in 2d6+3. Every die rolls 1 to this number. Defaults to 6."
    • Changedduplicate_line_remover7 fields changed
      • addedInput schema / properties / caseSensitive / description
        Added value: +"Treat Apple and apple as different lines. Off by default, so they count as the same line and only the kept one survives."
      • addedInput schema / properties / keep / description
        Added value: +"Which occurrence of a repeated line survives: 'first' keeps it where it first appeared, 'last' keeps it at its final position. Defaults to first."
      • addedInput schema / properties / onlyDuplicates / description
        Added value: +"Invert the tool: return only the lines that appeared more than once, one entry each in order of first appearance, and leave the unique lines out. Off by default."
      • addedInput schema / properties / removeBlank / description
        Added value: +"Drop empty lines entirely rather than keeping one of them. On by default."
      • addedInput schema / properties / sort / description
        Added value: +"Order of the output: 'none' keeps the input order, 'asc' and 'desc' sort alphabetically with locale-aware, numeric-aware comparison (item2 before item10), 'length' sorts shortest line first. Defaults to none."
      • addedInput schema / properties / text / description
        Added value: +"The lines to de-duplicate, separated by any line ending. The result is the text with repeats removed, in the original order unless sort says otherwise, plus counts of what was dropped."
      • addedInput schema / properties / trimLines / description
        Added value: +"Strip whitespace from both ends of every line before comparing and before output. On by default. Off, trailing spaces make two lines different."
    • Changedexif_remover5 fields changed
      • addedInput schema / properties / action / description
        Added value: +"'inspect' lists the metadata found (camera, time, location) without changing the file. 'strip' returns the same image with that metadata removed, losslessly."
      • addedInput schema / properties / data / description
        Added value: +"The image file as base64: a JPEG, PNG or WebP. The format is detected from the bytes, and files over 50 MB are refused."
      • addedInput schema / properties / keepColourProfile / description
        Added value: +"Keep the ICC colour profile when stripping. Set false to remove it too, which can visibly shift the colours on wide-gamut screens."
      • addedInput schema / properties / keepOrientation / description
        Added value: +"Keep the EXIF orientation flag when stripping, so a phone photo does not turn on its side. Set false to remove it with everything else."
      • addedInput schema / properties / name / description
        Added value: +"A filename echoed back with a strip result. It does not affect what is removed."
    • Changedfavicon_generator3 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The source image as base64. A square image works best; a non-square one is cropped to a centred square before the sizes are made."
      • addedInput schema / properties / name / description
        Added value: +"The source file's name. Informational only; the outputs use fixed favicon names."
      • addedInput schema / properties / type / description
        Added value: +"The MIME type of the source image: image/jpeg, image/png or image/webp."
    • Changedfind_a_time9 fields changed
      • addedInput schema / properties / days / description
        Added value: +"How many days the poll link stays open from now. After that it expires."
      • addedInput schema / properties / locale / description
        Added value: +"The language of the poll page: one of en, de, es, fi, fr, it, nl, pl. Anything else, or nothing, gives English."
      • addedInput schema / properties / note / description
        Added value: +"A line shown under the title to the people answering, such as where to meet."
      • addedInput schema / properties / options / description
        Added value: +"The times people choose between, at least 2 and at most 366. Duplicates are refused; they are sorted chronologically for the page."
      • addedInput schema / properties / options / items / description
        Added value: +"One time to vote on: a date, and optionally a time on it."
      • addedInput schema / properties / options / items / properties / date / description
        Added value: +"The calendar date of this option, as YYYY-MM-DD."
      • addedInput schema / properties / options / items / properties / time / description
        Added value: +"The start time on that date, as 24-hour HH:MM. Leave it out to offer the whole day."
      • addedInput schema / properties / timezone / description
        Added value: +"The IANA time zone the option times are written in, e.g. 'Europe/Berlin', so the page can say so. Omit it, or give an unknown zone, and the times are shown as written with no zone claimed."
      • addedInput schema / properties / title / description
        Added value: +"The heading on the poll page, shown to everybody who opens the link. 'Coffee with the team', 'Board meeting'."
    • Changedfraction_calculator3 fields changed
      • addedInput schema / properties / fractionA / description
        Added value: +"The left operand as text: a fraction '3/4', a mixed number '2 3/4' or a whole number '5'. Negative values are allowed; decimals are not."
      • addedInput schema / properties / fractionB / description
        Added value: +"The right operand, in the same forms as fractionA. Dividing by zero is refused."
      • addedInput schema / properties / operator / description
        Added value: +"The arithmetic to apply: add, subtract, multiply or divide fractionA by fractionB."
    • Changedfuel_cost_calculator8 fields changed
      • addedInput schema / properties / consumption / description
        Added value: +"The vehicle's fuel consumption, in the unit given by consumptionUnit. Note that for mpg a higher number means less fuel, for l/100km more."
      • addedInput schema / properties / consumptionUnit / description
        Added value: +"The unit consumption is given in: 'l100km' litres per 100 km, 'mpgUk' miles per imperial gallon, 'mpgUs' miles per US gallon, 'kml' kilometres per litre."
      • addedInput schema / properties / distance / description
        Added value: +"The length of the journey one way, in the unit given by distanceUnit."
      • addedInput schema / properties / distanceUnit / description
        Added value: +"The unit distance is given in: 'km' kilometres or 'mi' miles."
      • addedInput schema / properties / people / description
        Added value: +"How many people share the cost. The total is divided equally between them."
      • addedInput schema / properties / price / description
        Added value: +"The price of fuel per unit given by priceUnit, in any currency. The result comes back in the same currency, unconverted."
      • addedInput schema / properties / priceUnit / description
        Added value: +"The unit the price is per: 'litre', 'gallonUk' (4.546 l) or 'gallonUs' (3.785 l)."
      • addedInput schema / properties / returnTrip / description
        Added value: +"Double the distance to cover the journey back as well."
    • Changedgame_collection5 fields changed
      • addedInput schema / properties / console / description
        Added value: +"The console the list is for, by its usual name ('PS2', 'SNES', 'Mega Drive', 'Game Boy Advance'); matching ignores case. It narrows the game search when adding. A name not on the known list is refused; omit it for a mixed list."
      • addedInput schema / properties / folderId / description
        Added value: +"The id of one of the caller's own folders to file the list under. An unknown id, or another account's folder, is refused."
      • addedInput schema / properties / name / description
        Added value: +"The list's title, in the collector's own words: 'PS2 for sale', 'Boxed SNES'."
      • addedInput schema / properties / note / description
        Added value: +"A line shown under the title: what the list is for, or what its prices mean."
      • addedInput schema / properties / shared / description
        Added value: +"Whether the public share link works for anybody who has it. Off by default, so the list is private to its owner until this is set."
    • Changedgif_compressor5 fields changed
      • addedInput schema / properties / colours / description
        Added value: +"Colours in each frame's palette, one of 256, 128, 64, 32, 16. Fewer colours make a smaller file at the cost of banding in gradients."
      • addedInput schema / properties / gif / description
        Added value: +"The animated or still GIF file as base64. The result is also a GIF."
      • addedInput schema / properties / keepEvery / description
        Added value: +"Drop frames to shrink the file: 1 keeps every frame, 2 keeps every second one, 3 every third. Each kept frame takes on the delay of the frames dropped after it, so the animation runs for the same time."
      • addedInput schema / properties / name / description
        Added value: +"The input filename. The result is named after it with '-small.gif' appended to the stem."
      • addedInput schema / properties / scale / description
        Added value: +"A size factor per edge, 1 being the original size. Over the API only 1 is accepted; any other value is refused, because scaling happens in the browser tool alone."
    • Changedgpa_calculator5 fields changed
      • addedInput schema / properties / courses / description
        Added value: +"The courses to average. The GPA is the credit-weighted mean of their grade points."
      • addedInput schema / properties / courses / items / description
        Added value: +"One course: its grade and how much it weighs."
      • addedInput schema / properties / courses / items / properties / credits / description
        Added value: +"The course's credit hours, which weight its grade in the average. A course with 0 credits is left out rather than counted as zero."
      • addedInput schema / properties / courses / items / properties / grade / description
        Added value: +"The grade as a letter on the US 4.0 scale ('A', 'B+', 'C-', 'F'; A+ counts as 4.0) or as grade points directly ('3.7'). A number above 5 or an unknown letter leaves the course out of the average."
      • addedInput schema / properties / courses / items / properties / name / description
        Added value: +"The course's name, used only to label it in the report."
    • Changedgradient_generator8 fields changed
      • addedInput schema / properties / angle / description
        Added value: +"Degrees, normalised to 0-359. For linear it is the direction the gradient runs, 0 pointing up and 180 down; for conic it is where the sweep starts. Ignored for radial."
      • addedInput schema / properties / repeating / description
        Added value: +"Emit the repeating-* variant, which tiles the gradient over the box instead of stretching it once. Only visible when the stops have explicit positions short of 100."
      • addedInput schema / properties / shape / description
        Added value: +"For radial gradients only: 'circle' keeps the rings round, 'ellipse' stretches them to the box. Ignored for linear and conic."
      • addedInput schema / properties / stops / description
        Added value: +"The colours in order, from 2 to 16 of them."
      • addedInput schema / properties / stops / items / description
        Added value: +"One colour stop."
      • addedInput schema / properties / stops / items / properties / colour / description
        Added value: +"Any CSS colour: a hex code, rgb(), hsl() or a named colour."
      • addedInput schema / properties / stops / items / properties / position / description
        Added value: +"Where along the gradient this colour sits, as a percentage from 0 to 100. Omit it and CSS spaces the stop evenly between its neighbours."
      • addedInput schema / properties / type / description
        Added value: +"The kind of CSS gradient: 'linear' runs in a straight line at the angle, 'radial' spreads out from the centre, 'conic' sweeps round the centre."
    • Changedhash_generator3 fields changed
      • addedInput schema / properties / algorithms / description
        Added value: +"Which digests to compute, from SHA-1, SHA-256, SHA-384, SHA-512. One hex digest comes back per algorithm named."
      • addedInput schema / properties / algorithms / items / description
        Added value: +"One digest algorithm."
      • addedInput schema / properties / text / description
        Added value: +"The text to hash. It is encoded as UTF-8 before hashing, exactly as given."
    • Changedimage_compressor6 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The image file as base64, in the format given by type."
      • addedInput schema / properties / format / description
        Added value: +"The output format. 'auto' always means WebP, which is usually the smallest. If the result would be no smaller than the input at the same size, the original bytes are returned unchanged."
      • addedInput schema / properties / maxEdge / description
        Added value: +"Shrink the image so its longer side is at most this many pixels, keeping the aspect ratio. Smaller images are left at their size; omit it to keep the dimensions."
      • addedInput schema / properties / name / description
        Added value: +"The source filename, echoed back as the result's name."
      • addedInput schema / properties / quality / description
        Added value: +"Encoder quality from 0.1 to 1 for JPEG and WebP output; lower means a smaller, softer file. PNG is lossless and ignores it."
      • addedInput schema / properties / type / description
        Added value: +"The MIME type of the source image: image/jpeg, image/png or image/webp. HEIC, AVIF, TIFF and BMP are not accepted over the API."
    • Changedimage_converter6 fields changed
      • addedInput schema / properties / background / description
        Added value: +"A CSS colour painted behind transparent areas when converting to JPEG, which has no transparency. Defaults to white. Ignored for PNG and WebP targets."
      • addedInput schema / properties / data / description
        Added value: +"The image file as base64, in the format given by type."
      • addedInput schema / properties / name / description
        Added value: +"The source filename. The result keeps its stem with the target format's extension."
      • addedInput schema / properties / quality / description
        Added value: +"Encoder quality from 0.1 to 1 when the target is JPEG or WebP; lower is smaller and softer. PNG is lossless and ignores it."
      • addedInput schema / properties / target / description
        Added value: +"The format to convert to: image/jpeg, image/png or image/webp. It must differ from type; converting to the same format is refused. AVIF is not available over the API."
      • addedInput schema / properties / type / description
        Added value: +"The MIME type of the source image: image/jpeg, image/png or image/webp. HEIC, AVIF, TIFF and BMP are not accepted over the API."
    • Changedimage_cropper9 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The image file as base64, in the format given by type."
      • addedInput schema / properties / format / description
        Added value: +"The output format. 'auto' keeps PNG and WebP sources in their own format, so transparency survives, and writes everything else as JPEG."
      • addedInput schema / properties / height / description
        Added value: +"The crop box's height in source pixels, clamped to the image like width."
      • addedInput schema / properties / name / description
        Added value: +"The source filename. The result keeps its stem with the output format's extension."
      • addedInput schema / properties / quality / description
        Added value: +"Encoder quality from 0.1 to 1 for JPEG and WebP output; lower is smaller and softer. PNG is lossless and ignores it."
      • addedInput schema / properties / type / description
        Added value: +"The MIME type of the source image: image/jpeg, image/png or image/webp."
      • addedInput schema / properties / width / description
        Added value: +"The crop box's width in source pixels. A box that runs past the image is clamped to fit inside it, and never below 8 pixels."
      • addedInput schema / properties / x / description
        Added value: +"The crop box's left edge, in pixels from the left of the source image."
      • addedInput schema / properties / y / description
        Added value: +"The crop box's top edge, in pixels from the top of the source image."
    • Changedimage_resizer11 fields changed
      • addedInput schema / properties / allowUpscale / description
        Added value: +"Allow a result larger than the source on either side, up to 10000 pixels. Off by default, so enlarging is refused with an explanation rather than adding blur."
      • addedInput schema / properties / data / description
        Added value: +"The image file as base64, in the format given by type."
      • addedInput schema / properties / format / description
        Added value: +"The output format: image/jpeg, image/png or image/webp. Omit it to keep the source format."
      • addedInput schema / properties / height / description
        Added value: +"The target height in pixels, for the 'dimensions' mode. With keepAspect on it only applies when width is omitted, and then sets the width from it."
      • addedInput schema / properties / keepAspect / description
        Added value: +"Keep the source proportions in 'dimensions' mode, so one of width or height drives the other. Set false to stretch to an exact width and height."
      • addedInput schema / properties / mode / description
        Added value: +"How the new size is given: 'dimensions' uses width and height in pixels, 'percentage' scales both sides by percentage and ignores width and height."
      • addedInput schema / properties / name / description
        Added value: +"The source filename. The result is named after its stem with the new size appended, e.g. 'photo-800x600.jpg'."
      • addedInput schema / properties / percentage / description
        Added value: +"The scale for the 'percentage' mode, as a percentage of the source size per side: 50 halves both edges, 100 leaves it as is. Over 100 needs allowUpscale."
      • addedInput schema / properties / quality / description
        Added value: +"Encoder quality from 0.1 to 1 for JPEG and WebP output; lower is smaller and softer. PNG is lossless and ignores it."
      • addedInput schema / properties / type / description
        Added value: +"The MIME type of the source image: image/jpeg, image/png or image/webp."
      • addedInput schema / properties / width / description
        Added value: +"The target width in pixels, for the 'dimensions' mode. With keepAspect on, giving a width sets the height from it and any height given is ignored. Omitted with keepAspect off, the source width is kept."
    • Changedimage_to_text5 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The image file as base64, in the format given by type. Send this or fileId, not both. Anything a vision model can read works: a photo of a page, a screenshot, a scan."
      • addedInput schema / properties / fileId / description
        Added value: +"The id of an image already uploaded to the caller's account, to read instead of data. Needs a signed-in caller; the upload is consumed by the run. Most scripts should send data instead."
      • addedInput schema / properties / language / description
        Added value: +"The language the text is most likely in, e.g. 'Danish', as a hint to the model. It is not a constraint: what is actually in the picture is transcribed."
      • addedInput schema / properties / mode / description
        Added value: +"What to return: 'text' is the words in reading order and nothing else; 'markdown' keeps headings and lists, which suits a document scan; 'table' transcribes a table as CSV."
      • addedInput schema / properties / type / description
        Added value: +"The MIME type of the bytes in data: image/jpeg, image/png, image/webp or image/gif. Ignored when fileId is used, since the stored type wins."
    • Changedimages_to_pdf8 fields changed
      • addedInput schema / properties / images / description
        Added value: +"The images in page order, one page each, at most 100 of them."
      • addedInput schema / properties / images / items / description
        Added value: +"One image, which becomes one page."
      • addedInput schema / properties / images / items / properties / data / description
        Added value: +"The image file as base64. A data: URL prefix is tolerated and stripped."
      • addedInput schema / properties / images / items / properties / name / description
        Added value: +"The image's filename. Its extension is a fallback for telling JPEG from PNG."
      • addedInput schema / properties / images / items / properties / type / description
        Added value: +"The MIME type of the bytes: image/jpeg or image/png. Only these two can be embedded."
      • addedInput schema / properties / margin / description
        Added value: +"White space around the image on 'a4' and 'letter' pages, in PDF points (72 per inch; 144 is two inches). Ignored for 'fit'."
      • addedInput schema / properties / orientation / description
        Added value: +"Page orientation for 'a4' and 'letter': 'portrait' or 'landscape' for every page, or 'auto' to turn a page landscape when its image is wider than tall. Ignored for 'fit'."
      • addedInput schema / properties / pageSize / description
        Added value: +"The paper size. 'fit' makes each page exactly the image's own pixel size, with no margins or letterboxing; 'a4' and 'letter' put every image on that fixed page, scaled to fit and centred."
    • Changedinvoice_generator17 fields changed
      • addedInput schema / properties / currency / description
        Added value: +"The ISO 4217 currency code, e.g. 'USD', 'EUR', 'DKK'. It decides the symbol and decimals shown; an unknown code is refused with an error rather than guessed."
      • addedInput schema / properties / from / description
        Added value: +"The sender's name and address as free text; line breaks are kept."
      • addedInput schema / properties / issueDate / description
        Added value: +"The date the invoice is issued, as YYYY-MM-DD. The due date is counted from it, and its year goes into the generated invoice number."
      • addedInput schema / properties / items / description
        Added value: +"The lines to bill, in the order they should appear."
      • addedInput schema / properties / items / items / description
        Added value: +"One line on the invoice; its amount is quantity times unitPriceCents."
      • addedInput schema / properties / items / items / properties / description / description
        Added value: +"What the line is for, as printed on the invoice: 'Consulting, March', 'Logo design'."
      • addedInput schema / properties / items / items / properties / quantity / description
        Added value: +"How many units of the line. Fractions are allowed: 1.5 hours, 0.25 days."
      • addedInput schema / properties / items / items / properties / unitPriceCents / description
        Added value: +"The price per unit in the currency's minor unit, so 1999 means 19.99. Integers only. A negative value makes a discount line."
      • addedInput schema / properties / locale / description
        Added value: +"The BCP 47 locale the amounts are formatted in, e.g. 'en-US' writes 1,234.56 and 'da-DK' writes 1.234,56. It does not translate the labels."
      • addedInput schema / properties / notes / description
        Added value: +"Free text printed under the totals: payment details, bank account, terms, a thank-you. Empty prints nothing."
      • addedInput schema / properties / number / description
        Added value: +"Your own invoice number, printed as given. Overrides the one built from sequence."
      • addedInput schema / properties / paymentTermsDays / description
        Added value: +"How many days after issueDate payment is due. 0 means due on the issue date."
      • addedInput schema / properties / pdf / description
        Added value: +"Include the rendered PDF as base64 in pdfBase64. Set false to get only the number, due date and totals, which is faster and much smaller."
      • addedInput schema / properties / sequence / description
        Added value: +"The position in your invoice series, used to build the number as INV-<year>-<sequence padded to 4 digits>, e.g. 7 in 2026 gives INV-2026-0007. Ignored when number is given."
      • addedInput schema / properties / taxLabel / description
        Added value: +"What the tax line is called on the invoice: 'VAT', 'MwSt', 'Moms', 'GST'."
      • addedInput schema / properties / taxPercent / description
        Added value: +"Tax added on top of the subtotal, as a percentage: 25 adds a quarter. 0 leaves the total equal to the subtotal."
      • addedInput schema / properties / to / description
        Added value: +"The customer's name and address as free text; line breaks are kept."
    • Changedjson_formatter4 fields changed
      • addedInput schema / properties / action / description
        Added value: +"'format' pretty-prints with the indent given; 'minify' strips all whitespace into one line; 'validate' only checks that it parses and returns the text unchanged."
      • addedInput schema / properties / indent / description
        Added value: +"Spaces per nesting level when formatting, or 'tab' for one tab per level. 0 gives no indentation. Ignored by minify and validate."
      • addedInput schema / properties / json / description
        Added value: +"The JSON text to work on. Invalid JSON comes back as an error naming where parsing failed."
      • addedInput schema / properties / sortKeys / description
        Added value: +"Sort object keys alphabetically at every level when formatting, so two documents can be compared. Arrays keep their order. Ignored by minify and validate."
    • Changedjwt_decoder1 field changed
      • addedInput schema / properties / token / description
        Added value: +"The JWT to decode: three base64url parts joined by dots. A leading 'Bearer ' is stripped. The header and payload are decoded and the signature is returned as is; nothing is verified, and the result says so."
    • Changedloan_calculator3 fields changed
      • addedInput schema / properties / amount / description
        Added value: +"The principal borrowed, in whatever currency you are working in. Every figure in the answer is in the same units."
      • addedInput schema / properties / rate / description
        Added value: +"Nominal annual interest rate as a percentage, so 5.5 means 5.5% a year. 0 is a real case: an interest-free loan repaid in equal instalments."
      • addedInput schema / properties / years / description
        Added value: +"Length of the loan in years. Fractions are allowed and rounded to whole months, so 2.5 is 30 monthly payments."
    • Changedlorem_ipsum3 fields changed
      • addedInput schema / properties / count / description
        Added value: +"How many of `unit` to generate, up to 100. Three paragraphs when omitted."
      • addedInput schema / properties / startWithLorem / description
        Added value: +"Open with the familiar \"Lorem ipsum dolor sit amet, consectetur adipiscing elit\". Off, and every word is drawn at random from the start."
      • addedInput schema / properties / unit / description
        Added value: +"What `count` counts. Paragraphs hold three to six sentences each and are separated by a blank line; sentences run on in one block; words come back as a single sentence."
    • Changedmarkdown_to_html4 fields changed
      • addedInput schema / properties / allowHtml / description
        Added value: +"Pass any raw HTML in the Markdown through to the output instead of escaping it. Off by default, which is the safe choice: inline HTML can carry a script, so only turn this on for Markdown you wrote yourself."
      • addedInput schema / properties / breaks / description
        Added value: +"Turn every single newline into a <br>, the way chat apps do. Off, and only a line ending in two spaces breaks; other newlines join into the same paragraph."
      • addedInput schema / properties / headingIds / description
        Added value: +"Give every heading an id derived from its text, made unique within the document, so a table of contents can link to it. Off, and headings carry no id."
      • addedInput schema / properties / text / description
        Added value: +"The Markdown to convert: CommonMark plus the GitHub extensions (tables, strikethrough, task lists, autolinks). Links are limited to http, https, mailto, tel, ftp and relative URLs; other schemes are dropped."
    • Changedmic_test2 fields changed
      • addedInput schema / properties / samples / description
        Added value: +"A block of decoded mono audio samples, each between -1 and 1. Loudness (RMS), peak and the verdict are judged over the whole block, so send a stretch of speech rather than a single frame; a peak at or above 0.99 counts as clipping."
      • addedInput schema / properties / samples / items / description
        Added value: +"One mono PCM sample as a float from -1 to 1, where 1 is full scale."
    • Changedmorse_code_translator2 fields changed
      • addedInput schema / properties / direction / description
        Added value: +"Which way to translate. \"auto\" decodes when the input is nothing but dots, dashes, spaces and slashes, and encodes otherwise; \"toMorse\" and \"toText\" force one direction. Anything with no morse equivalent comes back as <x> and is listed in `unsupported`."
      • addedInput schema / properties / text / description
        Added value: +"Plain text to turn into morse, or morse to turn back into text. Morse is dots and dashes with a space between letters and a slash (or two spaces) between words; middle dots and en or em dashes are accepted as well."
    • Changedpace_calculator4 fields changed
      • addedInput schema / properties / distance / description
        Added value: +"How far, in the unit named by `unit`. Give any two of distance, timeSeconds and paceSecondsPerUnit and the third is worked out."
      • addedInput schema / properties / paceSecondsPerUnit / description
        Added value: +"Pace in seconds per `unit`, so 315 with unit km is 5:15 per kilometre. Ignored when distance and timeSeconds are both given, since those two determine it."
      • addedInput schema / properties / timeSeconds / description
        Added value: +"Total time in seconds, so 3150 is 52 minutes 30 seconds."
      • addedInput schema / properties / unit / description
        Added value: +"The unit `distance` and `paceSecondsPerUnit` are read in. The answer always reports pace per kilometre and per mile, whichever was given."
    • Changedpassword_generator7 fields changed
      • addedInput schema / properties / count / description
        Added value: +"How many passwords to return, up to 50. Always an array."
      • addedInput schema / properties / digits / description
        Added value: +"Include 0-9."
      • addedInput schema / properties / excludeAmbiguous / description
        Added value: +"Leave out I, l, 1, O, 0 and o, which are misread when a password is written down or read aloud. Slightly lowers the entropy."
      • addedInput schema / properties / length / description
        Added value: +"Characters per password, 4 to 128. The reported entropy in bits grows with the length and with how many character sets are on."
      • addedInput schema / properties / lowercase / description
        Added value: +"Include a-z. Every password is guaranteed at least one character from each set that is on, and at least one of the four sets must be on."
      • addedInput schema / properties / symbols / description
        Added value: +"Include the symbols !#$%&*+-=?@^_~. Turn off for systems that refuse punctuation."
      • addedInput schema / properties / uppercase / description
        Added value: +"Include A-Z."
    • Changedpdf_compress4 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The PDF to compress, base64-encoded (a data: URL prefix is stripped). The result comes back the same way in `data`."
      • addedInput schema / properties / level / description
        Added value: +"How hard to squeeze the embedded JPEGs. light re-encodes at quality 0.82 with the longest edge capped at 2400 px, balanced 0.65 and 1800 px, strong 0.45 and 1400 px. Text, fonts and vector graphics are untouched at every level."
      • addedInput schema / properties / name / description
        Added value: +"Filename echoed back as `name` in the response. Used for nothing else."
      • addedInput schema / properties / structureOnly / description
        Added value: +"Leave every image as it is and only rewrite the file structure with object streams. Saves a little on text-heavy documents and almost nothing on scans."
    • Changedpdf_merge4 fields changed
      • addedInput schema / properties / files / description
        Added value: +"The PDFs to join, in the order their pages should appear in the result. Needs at least two, and no more than 30 in one request."
      • addedInput schema / properties / files / items / description
        Added value: +"One PDF to include, with all of its pages."
      • addedInput schema / properties / files / items / properties / data / description
        Added value: +"This PDF's bytes, base64-encoded. A data: URL prefix is stripped."
      • addedInput schema / properties / files / items / properties / name / description
        Added value: +"Filename used to identify this PDF in the response's `sources` list and in any error message about it."
    • Changedpdf_page_numbers8 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The PDF to number, base64-encoded. A data: URL prefix is stripped."
      • addedInput schema / properties / format / description
        Added value: +"How the label reads. plain writes \"3\", of writes \"3 of 20\", page-of writes \"Page 3 of 20\". The total counts numbered pages rather than sheets, so an extract of three pages starting at 47 reads \"47 of 49\"."
      • addedInput schema / properties / from / description
        Added value: +"The first sheet to print a number on, counted from 1. Sheets before it are left clean, so passing 3 skips a title page and a contents page."
      • addedInput schema / properties / margin / description
        Added value: +"Distance from the page edge to the number, in points (1/72 inch). 28 when omitted, about a centimetre."
      • addedInput schema / properties / name / description
        Added value: +"Base name for the output file; a .pdf ending is dropped and the response names it <name>-numbered.pdf."
      • addedInput schema / properties / position / description
        Added value: +"Where the number sits on each page: bottom-centre, bottom-right, bottom-left, top-right or top-centre. `margin` is measured in from those edges."
      • addedInput schema / properties / size / description
        Added value: +"Font size of the number in points. 10 when omitted."
      • addedInput schema / properties / startAt / description
        Added value: +"The number printed on the first numbered sheet; later sheets count up from it. 1 by default; an extract from a longer bundle might start at 47."
    • Changedpdf_reorder6 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The PDF to rebuild, base64-encoded. A data: URL prefix is stripped."
      • addedInput schema / properties / name / description
        Added value: +"Base name for the output file; a .pdf ending is dropped and the response names it <name>.pdf."
      • addedInput schema / properties / order / description
        Added value: +"Source page numbers, 1-based, in the order they should appear, as \"3, 1, 2\". A range may run backwards, so \"10-1\" reverses a ten-page document. Leave a page out to delete it and repeat one to duplicate it. Omit to keep every page in its current order."
      • addedInput schema / properties / rotations / additionalProperties / description
        Added value: +"Clockwise degrees to add to that page."
      • addedInput schema / properties / rotations / description
        Added value: +"Extra clockwise rotation per source page, as {\"2\": 90}. Added to whatever rotation the page already has, and keyed by source page rather than output position, so it holds good after a reorder."
      • addedInput schema / properties / rotations / propertyNames / description
        Added value: +"A source page number, 1-based, as a string key."
    • Changedpdf_rotate5 fields changed
      • addedInput schema / properties / angle / description
        Added value: +"Clockwise rotation in degrees, added to whatever rotation each page already has. Lossless: nothing is re-rendered. A quarter turn when omitted."
      • addedInput schema / properties / data / description
        Added value: +"The PDF to rotate, base64-encoded. A data: URL prefix is stripped."
      • addedInput schema / properties / name / description
        Added value: +"Base name for the output file; a .pdf ending is dropped and the response names it <name>-rotated.pdf."
      • addedInput schema / properties / only / description
        Added value: +"Filter the selected pages by their current orientation: landscape turns only pages wider than tall, portrait only pages taller than wide, all turns every selected page. The response lists which pages actually turned."
      • addedInput schema / properties / pages / description
        Added value: +"Which pages to rotate, counted from 1: single pages and ranges separated by commas, such as \"1-3, 7, 12-\", where an open end runs to the last page. Omit for every page."
    • Changedpdf_split4 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The PDF to split, base64-encoded. A data: URL prefix is stripped."
      • addedInput schema / properties / mode / description
        Added value: +"extract returns one PDF holding the selected pages; single returns one PDF per selected page. `files` in the response is an array either way."
      • addedInput schema / properties / name / description
        Added value: +"Base name for the output files; a .pdf ending is dropped. extract mode names the result <name>-extracted.pdf, single mode <name>-page-N.pdf per page."
      • addedInput schema / properties / pages / description
        Added value: +"Which pages to take, counted from 1: single pages and ranges separated by commas, such as \"1-3, 7, 12-\", where an open end runs to the last page. The order given is kept, so \"3, 1\" puts page 3 first. Omit for every page."
    • Changedpdf_to_images7 fields changed
      • addedInput schema / properties / archive / description
        Added value: +"Return one ZIP of every image, base64-encoded in `data`, instead of an `images` array with one base64 string per page. Easier to handle for a long document."
      • addedInput schema / properties / data / description
        Added value: +"The PDF to render, base64-encoded. A data: URL prefix is stripped."
      • addedInput schema / properties / name / description
        Added value: +"Base name for the image files; a .pdf ending is dropped and pages are named <name>-01.png and so on, zero-padded to the page count. Also names the ZIP when `archive` is on."
      • addedInput schema / properties / pages / description
        Added value: +"Which pages to render, counted from 1: single pages and ranges separated by commas, such as \"1-3, 7, 12-\", where an open end runs to the last page. Omit for every page."
      • addedInput schema / properties / quality / description
        Added value: +"Compression quality for JPEG and WebP, 0.1 to 1, where 1 is the largest file and the best picture. Ignored for PNG."
      • addedInput schema / properties / size / description
        Added value: +"Longest edge of each image in pixels: thumbnail 480, screen 1280, print 2480. A request estimated at more than 120 megapixels in total is refused before rendering, so ask for fewer pages or a smaller size."
      • addedInput schema / properties / type / description
        Added value: +"Image format for every page. PNG is lossless; JPEG and WebP are much smaller and honour `quality`."
    • Changedpdf_to_word2 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The PDF to convert, base64-encoded (a data: URL prefix is accepted). It needs a text layer: a scan with no text is refused with `no_text` rather than turned into an empty document. Refused above 25 MB decoded."
      • addedInput schema / properties / keepPageBreaks / description
        Added value: +"Start a new page in the Word document wherever the PDF started one. Off by default, so the text reflows and the Word page count may differ from the PDF's."
    • Changedpercentage_calculator3 fields changed
      • addedInput schema / properties / a / description
        Added value: +"The first number, as a plain number with no % sign: the percentage in of, the part in what, the starting value in change and adjust."
      • addedInput schema / properties / b / description
        Added value: +"The second number, as a plain number: the whole in of and what, the end value in change, the percentage to change by in adjust."
      • addedInput schema / properties / mode / description
        Added value: +"Which sum to do. of: a percent of b (15, 80 gives 12). what: a as a percentage of b (12, 80 gives 15). change: the percentage change from a to b, measured against a (80, 92 gives up 15). adjust: a changed by b percent (80, 15 gives 92; a negative b is a discount)."
    • Changedphoto_gallery10 fields changed
      • addedInput schema / properties / captions / description
        Added value: +"Captions matched to `fileIds` by position, so the third caption belongs to the third file. Use null or an empty string to leave one uncaptioned. Omit for none."
      • addedInput schema / properties / captions / items / description
        Added value: +"The caption for the file at the same position, or null for none."
      • addedInput schema / properties / columns / description
        Added value: +"Pictures per row on a wide screen, treated as a maximum: a phone shows at most two across and a tablet three, whatever is set here."
      • addedInput schema / properties / duration / description
        Added value: +"How long the public link works, from now: one hour, one day, seven days or thirty days. Cut short if any of the files expires sooner."
      • addedInput schema / properties / fileIds / description
        Added value: +"Ids of files the signed-in caller already owns, in the order they should appear. Upload first via POST /v1/files/upload-url then /v1/files/confirm; the gallery stores no bytes of its own. Up to 200 pictures; duplicates are shown once. The link never outlives the files it shows."
      • addedInput schema / properties / fileIds / items / description
        Added value: +"The id of a file in the caller's own storage, as returned on upload."
      • addedInput schema / properties / intro / description
        Added value: +"A line of plain text under the heading; never rendered as a link. Omit for none."
      • addedInput schema / properties / layout / description
        Added value: +"grid crops every tile to a square for a uniform wall; masonry keeps each picture's own proportions and packs them."
      • addedInput schema / properties / password / description
        Added value: +"A password visitors must enter before any picture is fetched. Omit, or send an empty string, for an open link."
      • addedInput schema / properties / title / description
        Added value: +"The heading shown at the top of the gallery page, up to 120 characters."
    • Changedpregnancy_calculator3 fields changed
      • addedInput schema / properties / asOfDate / description
        Added value: +"The date to measure weeks, days and trimester to, as YYYY-MM-DD. Omit and the server uses today's date in UTC, which can be a day out near midnight; send the reader's own local date when you have it."
      • addedInput schema / properties / cycleLength / description
        Added value: +"Average menstrual cycle length in days. 28 is what Naegele's rule assumes; each day longer moves the due date and the estimated conception date one day later."
      • addedInput schema / properties / lmpDate / description
        Added value: +"First day of the last menstrual period as YYYY-MM-DD. Everything is counted from this date by Naegele's rule (280 days to the due date), shifted by `cycleLength`. Refused if it is in the future or more than 48 weeks ago."
    • Changedqr_generator6 fields changed
      • addedInput schema / properties / dark / description
        Added value: +"Colour of the modules as a six-digit hex code, such as #000000."
      • addedInput schema / properties / errorCorrection / description
        Added value: +"How much of the code may be damaged or covered and still scan: L about 7%, M 15%, Q 25%, H 30%. Higher levels make a denser code for the same text."
      • addedInput schema / properties / light / description
        Added value: +"Background colour as a six-digit hex code. Keep it much lighter than `dark`; scanners expect dark modules on a light ground."
      • addedInput schema / properties / margin / description
        Added value: +"Quiet zone around the code, in modules (the small squares), not pixels. The QR spec recommends 4; less and some scanners fail to lock on."
      • addedInput schema / properties / size / description
        Added value: +"Declared width and height of the SVG in pixels. The output is vector, so it scales cleanly; this mainly matters when the SVG is rasterised as-is."
      • addedInput schema / properties / text / description
        Added value: +"What the code should contain: a URL, plain text or any other string. Surrounding whitespace is trimmed. QR codes hold about 2,000 characters at most, and the denser the content the harder the code is to scan."
    • Changedrandom_number_generator5 fields changed
      • addedInput schema / properties / count / description
        Added value: +"How many numbers to draw, up to 1000. Always returned as an array."
      • addedInput schema / properties / max / description
        Added value: +"Highest whole number that may be drawn, inclusive. Must not be below `min`. 100 when omitted."
      • addedInput schema / properties / min / description
        Added value: +"Lowest whole number that may be drawn, inclusive. 1 when omitted."
      • addedInput schema / properties / sorted / description
        Added value: +"Return the draw in ascending order. Sorting happens after drawing, so it does not change the odds."
      • addedInput schema / properties / unique / description
        Added value: +"Draw without repeats, like lottery balls rather than dice. Refused if `count` is more than the range holds."
    • Changedrandom_picker4 fields changed
      • addedInput schema / properties / count / description
        Added value: +"How many entries to pick, without repeats. Asking for more than the list holds is an error rather than a shorter answer. Ignored when shuffleAll is true."
      • addedInput schema / properties / items / description
        Added value: +"The list to pick from, up to 10000 entries. An entry written twice is deliberately twice as likely to be picked, so duplicates are not collapsed."
      • addedInput schema / properties / items / items / description
        Added value: +"One entry to draw from. Duplicates are kept and weight the draw."
      • addedInput schema / properties / shuffleAll / description
        Added value: +"Return the whole list in a random order instead of a selection. Every ordering is equally likely, and count is ignored."
    • Changedrandom_team_generator3 fields changed
      • addedInput schema / properties / count / description
        Added value: +"The number of teams, or the people per team, depending on mode. Names are dealt round-robin after a shuffle, so team sizes never differ by more than one."
      • addedInput schema / properties / mode / description
        Added value: +"What count means. \"teams\": make that many teams. \"size\": make teams of that many people, with the last team taking the remainder rather than anyone being left out."
      • addedInput schema / properties / names / description
        Added value: +"The people to deal out, one name per line. Lines are trimmed and blank lines are dropped, so a pasted spreadsheet column works as it is."
    • Changedratio_calculator3 fields changed
      • addedInput schema / properties / left / description
        Added value: +"The left side of the ratio, the a in a:b. Decimals are allowed and are scaled to whole numbers before reducing, so 2.5:1 simplifies to 5:2 rather than rounding to 3:1."
      • addedInput schema / properties / right / description
        Added value: +"The right side of the ratio, the b in a:b. A zero side is refused as not a ratio."
      • addedInput schema / properties / scaleTo / description
        Added value: +"A new left-hand value to solve for: given, the answer is the c in a:b = scaleTo:c, returned as solved.value with a whole flag, since 16:9 at 1000 wide is 562.5 and is not rounded. Omitted, the ratio is only simplified."
    • Changedreadability_score1 field changed
      • addedInput schema / properties / text / description
        Added value: +"English prose to score, at least 20 words. Scored with Flesch Reading Ease, Flesch-Kincaid, Gunning fog, SMOG, ARI and Coleman-Liau, which are averages over sentence and syllable counts, so a short passage gives a rough answer."
    • Changedregex_explainer1 field changed
      • addedInput schema / properties / pattern / description
        Added value: +"A JavaScript regular expression to explain, either bare or as /pattern/flags. It is read, never run, so a pattern that would not compile is still explained, with the problems listed alongside."
    • Changedregex_tester3 fields changed
      • addedInput schema / properties / flags / description
        Added value: +"The standard JavaScript flags as one string, such as \"gi\". The default \"g\" returns every match; without it only the first match is returned."
      • addedInput schema / properties / pattern / description
        Added value: +"A JavaScript regular expression, bare, without surrounding slashes; flags go in flags. At most 500 characters, which is shorter than the page allows."
      • addedInput schema / properties / text / description
        Added value: +"The text to run the pattern against, at most 20000 characters. Matches are returned with their index and capture groups, and stop after 1000."
    • Changedrequest_a_file2 fields changed
      • addedInput schema / properties / days / description
        Added value: +"How many days a request link would stay open for uploads, at most 30; there is no permanent option. This call only describes such a link and creates nothing; creating one is a separate, signed-in POST to the createAt path returned."
      • addedInput schema / properties / maxFiles / description
        Added value: +"How many files the link would accept before closing itself, at most 100. Each file is also capped at what the owner's own plan allows and counts against their storage."
    • Changedroman_numerals1 field changed
      • addedInput schema / properties / numeral / description
        Added value: +"Either a Roman numeral (\"MCMXCIV\") or a whole number from 1 to 3999 (\"1994\"); the direction is worked out from what is given. Loose forms like IIII are read and reported with strict false, and the strict modern spelling is returned alongside."
    • Changedsalary_calculator5 fields changed
      • addedInput schema / properties / amount / description
        Added value: +"The gross pay figure you already know, in any currency; no tax or deductions are applied. It is converted to all five periods using the working pattern below."
      • addedInput schema / properties / daysPerWeek / description
        Added value: +"Days worked in a normal week, used for the daily figure. Defaults to 5."
      • addedInput schema / properties / hoursPerWeek / description
        Added value: +"Hours worked in a normal week, used to turn an hourly rate into a weekly one and back. Defaults to 37.5; 40 is usual in the US."
      • addedInput schema / properties / period / description
        Added value: +"Which period amount covers. A month is always a twelfth of a year, never 4.33 weeks."
      • addedInput schema / properties / weeksPerYear / description
        Added value: +"Weeks paid in a year, used to turn a weekly figure into an annual one and back. Defaults to 52; use 52.18 to count the odd days."
    • Changedscreen_recorder6 fields changed
      • addedInput schema / properties / frameRate / description
        Added value: +"Frames per second to capture at. Bitrate scales with it, and 30 is enough for screen content, which changes little between frames."
      • addedInput schema / properties / height / description
        Added value: +"Height of the area being recorded, in pixels."
      • addedInput schema / properties / quality / description
        Added value: +"How much data to spend, as bits per pixel per frame: \"high\" is 0.10 and keeps text crisp at 1080p, \"balanced\" is 0.05 with readable text and slight banding, \"small\" is 0.02 for a long recording that has to be emailed. There is a floor of 400 kbit/s whatever the picture size."
      • addedInput schema / properties / seconds / description
        Added value: +"The planned length of the recording, in seconds, used only to estimate the file size and to say whether it is past the point where a browser tab runs out of memory (about 512 MB held in the tab). The bitrate and safe duration do not depend on it."
      • addedInput schema / properties / width / description
        Added value: +"Width of the area being recorded, in pixels. Bitrate scales with the pixel count, so a shared window costs far less than a full 4K screen."
      • addedInput schema / properties / withAudio / description
        Added value: +"Whether the recording carries an audio track. True adds a fixed 128 kbit/s of Opus to the size estimate and shortens the safe duration accordingly."
    • Changedsend_a_secret5 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The secret as base64-encoded AES-GCM ciphertext, encrypted by the caller before sending. Never plaintext: the server stores this without being able to read it, and the decryption key must be appended by the caller to the returned URL after the #, where a browser never sends it. Sized for a password, not a document."
      • addedInput schema / properties / iv / description
        Added value: +"The base64-encoded AES-GCM initialisation vector used to encrypt data. Not secret; it is stored beside the ciphertext so the recipient can decrypt."
      • addedInput schema / properties / keyProof / description
        Added value: +"Base64-encoded SHA-256 digest of the password-derived key, letting the server check a password attempt without ever holding the password or the key. Omit it when there is no password."
      • addedInput schema / properties / lifetime / description
        Added value: +"How long the stored ciphertext lives if nobody opens it: 1h, 24h, 7d. It is also destroyed on first read, and there is no permanent option. Each call stores a new secret and returns a new link, so call once per secret."
      • addedInput schema / properties / salt / description
        Added value: +"The base64-encoded salt the password-derived key was made with. Give it only when the secret is additionally locked with a password; omit it otherwise."
    • Changedshare_file8 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The file's bytes, base64-encoded, at most 35000000 characters (three quarters of that in bytes). The file is stored in the caller's account, counts against its storage quota, and must be within the plan's per-file limit."
      • addedInput schema / properties / duration / description
        Added value: +"How long the link works for anyone who has it: 1h, 24h, 7d, 30d, 90d, 1y. The 90d and 1y options are Pro durations; there is no permanent one, and a link never outlives the stored file. Each call stores a new copy and mints a new link, so call once per file."
      • addedInput schema / properties / message / description
        Added value: +"A short note shown beside the file to whoever opens the link. Plain text: line breaks are collapsed, it is shortened, and URLs in it are not made clickable."
      • addedInput schema / properties / name / description
        Added value: +"The filename, with extension, that the recipient sees and downloads. Cleaned of unsafe characters before storage."
      • addedInput schema / properties / password / description
        Added value: +"A password the recipient must type to open the link, at least 4 characters. Only a salted hash is stored. Omit it, or send an empty string, for no password."
      • addedInput schema / properties / screen / description
        Added value: +"Have a model check the image for explicit content before the link is made. Images only, costs one AI credit from the caller's monthly allowance, and if the image is judged explicit no link is created at all."
      • addedInput schema / properties / senderName / description
        Added value: +"Who the file is from, shown as a heading to whoever opens the link. Plain text: trimmed, shortened, and never turned into a link."
      • addedInput schema / properties / type / description
        Added value: +"The file's MIME type, such as \"image/png\" or \"application/pdf\". It is served with this type, and only an image type can be screened."
    • Changedsignature_maker11 fields changed
      • addedInput schema / properties / colour / description
        Added value: +"Ink colour as a hex value, #rgb or #rrggbb. Anything else falls back to #111111 rather than being written into the SVG."
      • addedInput schema / properties / padding / description
        Added value: +"Space left around the ink when trimming, measured in stroke widths rather than points units, so 2 at a strokeWidth of 3 is 6 units on every side."
      • addedInput schema / properties / simplify / description
        Added value: +"Drop points that lie almost on the line between their neighbours (tolerance of a quarter of strokeWidth). Shrinks the path a great deal and steadies the smoothing."
      • addedInput schema / properties / smooth / description
        Added value: +"Draw quadratic curves through the points instead of straight segments between them, which stops a signature looking ruler-drawn."
      • addedInput schema / properties / strokeWidth / description
        Added value: +"Line thickness, in the same units as the points. It also sets the scale of padding and of the simplify tolerance."
      • addedInput schema / properties / strokes / description
        Added value: +"The drawing as a list of strokes, each a list of points in the order the pen visited them, in any consistent unit. At most 20000 points in total. The result is an SVG path, so the units only matter relative to strokeWidth."
      • addedInput schema / properties / strokes / items / description
        Added value: +"One pen stroke: its points in drawing order. A single point draws a dot."
      • addedInput schema / properties / strokes / items / items / description
        Added value: +"One sampled pen position."
      • addedInput schema / properties / strokes / items / items / properties / x / description
        Added value: +"Horizontal position, increasing to the right, in pad units."
      • addedInput schema / properties / strokes / items / items / properties / y / description
        Added value: +"Vertical position, increasing downwards as in SVG, in pad units."
      • addedInput schema / properties / trim / description
        Added value: +"Fit the SVG viewBox tightly to the ink. False keeps the pad's origin, so empty space above and left of the signature is kept and it sits off-centre when placed."
    • Changedsleep_calculator4 fields changed
      • addedInput schema / properties / cycleMinutes / description
        Added value: +"Length of one sleep cycle in minutes. 90 is the adult average; real cycles run roughly 70 to 120 and differ between people."
      • addedInput schema / properties / fallAsleepMinutes / description
        Added value: +"Minutes spent falling asleep after going to bed, subtracted from a bedtime or added to a wake time. Defaults to 15."
      • addedInput schema / properties / time / description
        Added value: +"A 24-hour clock reading with a colon, such as \"07:30\" or \"23:15\". No date or time zone is involved. \"7.30\" or \"7:30 pm\" is refused."
      • addedInput schema / properties / timeIs / description
        Added value: +"What time is: \"wake\" means it is the alarm and bedtimes are returned, most sleep first; \"bedtime\" means it is when you go to bed and wake times are returned, earliest first. 4 options come back, for 3 to 6 cycles."
    • Changedslug_generator5 fields changed
      • addedInput schema / properties / expandDiacritics / description
        Added value: +"Write letters that romanise as two characters that way: ø to oe, æ to ae, å to aa, ü to ue, ß to ss. False uses the nearest single letter instead: ø to o, ß to s."
      • addedInput schema / properties / lowercase / description
        Added value: +"Lower-case the result. False keeps the capitals of the input."
      • addedInput schema / properties / maxLength / description
        Added value: +"Longest slug allowed, in characters; 0 means no limit. A slug is cut at the last separator inside the limit, so a word is never cut in half."
      • addedInput schema / properties / separator / description
        Added value: +"The character put between words. Hyphens are what search engines expect."
      • addedInput schema / properties / text / description
        Added value: +"The title or phrase to turn into a URL slug. Accents are stripped, & becomes \"and\", apostrophes are dropped, and every other non-alphanumeric run becomes one separator."
    • Changedsql_formatter5 fields changed
      • addedInput schema / properties / dialect / description
        Added value: +"Which database's syntax to parse it as, one of 16 dialects. \"sql\" is generic standard SQL and is what to use when unsure; \"transactsql\" is SQL Server and \"plsql\" is Oracle."
      • addedInput schema / properties / indent / description
        Added value: +"What one level of indentation is: \"2\" or \"4\" spaces, or \"tab\"."
      • addedInput schema / properties / keywordCase / description
        Added value: +"How keywords are written: \"upper\" gives SELECT, \"lower\" gives select, \"preserve\" leaves each keyword as it was typed."
      • addedInput schema / properties / linesBetweenQueries / description
        Added value: +"How many blank lines to leave between statements."
      • addedInput schema / properties / sql / description
        Added value: +"The SQL to lay out, one or more statements, at most 500000 characters. It is only reformatted: nothing checks that it would run."
    • Changedstall_booking18 fields changed
      • addedInput schema / properties / backGap / description
        Added value: +"Space between the two backs of a paired row in centimetres, for the sellers' chairs and stock. Only used when backToBack is true; it is not the aisle."
      • addedInput schema / properties / backToBack / description
        Added value: +"Lay rows out in pairs with their backs together and the aisle only between pairs, so the public cannot walk behind a seller. Fits more stalls in the same hall than a plain grid."
      • addedInput schema / properties / currency / description
        Added value: +"What the price is in. An ISO code such as \"DKK\" or \"EUR\" is formatted properly; any other text (\"kr\", \"beer tokens\") is printed as given beside the number."
      • addedInput schema / properties / date / description
        Added value: +"The day the market is held, as YYYY-MM-DD with no time or zone. It must not be in the past, and the booking page is deleted daysAfter days after it."
      • addedInput schema / properties / daysAfter / description
        Added value: +"How many days after the market date the booking page stays up. After that it is deleted, along with the vendors' names and contact details."
      • addedInput schema / properties / gap / description
        Added value: +"The aisle between stalls in centimetres, both between neighbours in a row and between rows. 120 fits prams and wheelchairs."
      • addedInput schema / properties / hallDepth / description
        Added value: +"Depth of the hall in centimetres. Required when no venueId is given."
      • addedInput schema / properties / hallWidth / description
        Added value: +"Width of the hall in centimetres, so 2000 is twenty metres. Required when no venueId is given; a value under two metres is refused as a typo."
      • addedInput schema / properties / holdHours / description
        Added value: +"How many hours a booked stall is held while the vendor pays, at most a week. If the organiser has not marked it paid by then, the stall is released for someone else to book."
      • addedInput schema / properties / note / description
        Added value: +"A line shown under the title on the booking page: doors open, where to park, what not to bring."
      • addedInput schema / properties / paymentDetails / description
        Added value: +"How a vendor is to pay, in the organiser's own words, shown to them after they book: a bank account, a MobilePay number, \"cash on the day\". No card processing is involved."
      • addedInput schema / properties / price / description
        Added value: +"What one stall costs, in the currency's minor unit (cents, pence, øre), so 25000 is 250.00. Never a decimal amount. 0 means the stalls are free."
      • addedInput schema / properties / stallDepth / description
        Added value: +"Depth of one stall in centimetres, front to back."
      • addedInput schema / properties / stallWidth / description
        Added value: +"Width of one stall in centimetres, along the row. 180 is a standard trestle table."
      • addedInput schema / properties / stalls / description
        Added value: +"How many stalls to lay out in the rectangle. Required when no venueId is given. If fewer fit at the given stall size, fewer are made rather than the stalls being shrunk, and the response says how many. A free account is limited to a smaller market than Pro."
      • addedInput schema / properties / title / description
        Added value: +"The market's name, shown as the heading of the public booking page vendors book on. A successful call publishes that page under the caller's account and returns its URL, so call once per market."
      • addedInput schema / properties / units / description
        Added value: +"How the hall is shown to people, in metres or in feet. Display only: every dimension in this call is centimetres either way."
      • addedInput schema / properties / venueId / description
        Added value: +"The id of a hall the caller has already drawn in the venue editor. Given, the market uses that hall's shape and hand-placed stalls, and hallWidth, hallDepth, stalls and the stall sizes are ignored. Omitted, a plain rectangle is laid out from hallWidth, hallDepth and stalls, which are then all required."
    • Changedsubnet_calculator1 field changed
      • addedInput schema / properties / network / description
        Added value: +"An IPv4 address with a prefix length (\"192.168.1.10/24\"), an address and a dotted mask separated by a space (\"10.0.0.1 255.0.0.0\"), or a bare address, which is read as /24. Octets with leading zeros are refused, as is a mask that is not a run of ones followed by zeros."
    • Changedsvg_minifier10 fields changed
      • addedInput schema / properties / collapseWhitespace / description
        Added value: +"Remove whitespace between tags and collapse runs of it inside them. The content of text, style, title and desc elements is left as it is."
      • addedInput schema / properties / precision / description
        Added value: +"Decimal places kept on coordinates and other numeric attributes; -1 leaves numbers untouched. Two is enough for an icon and is where most of the saving comes from."
      • addedInput schema / properties / removeComments / description
        Added value: +"Strip <!-- --> comments."
      • addedInput schema / properties / removeMetadata / description
        Added value: +"Strip <metadata>, Inkscape and Sodipodi elements, attributes and namespace declarations: editor bookkeeping that draws nothing."
      • addedInput schema / properties / removeScripts / description
        Added value: +"Strip <script> elements, on* event handlers, javascript: links and the <a> elements around them, so the output is safe to serve as a file. On by default."
      • addedInput schema / properties / removeTitleDesc / description
        Added value: +"Strip <title> and <desc>. Off by default because they are the accessible name and description a screen reader reads out."
      • addedInput schema / properties / removeUnusedIds / description
        Added value: +"Drop id attributes nothing inside the file refers to. Off by default because CSS or JavaScript in the embedding page may target them, which cannot be checked here."
      • addedInput schema / properties / removeXmlDeclaration / description
        Added value: +"Strip the <?xml ?> declaration, any DOCTYPE and the editor's Generator comment."
      • addedInput schema / properties / shortenColours / description
        Added value: +"Shorten six-digit hex colours that can be written in three: #ffffff becomes #fff."
      • addedInput schema / properties / text / description
        Added value: +"The SVG source as text. Anything without an <svg> element is refused."
    • Changedtext_diff4 fields changed
      • addedInput schema / properties / changed / description
        Added value: +"The later version, compared against original. Lines only in it are reported as insertions; lines only in original as deletions."
      • addedInput schema / properties / ignoreCase / description
        Added value: +"Treat lines that differ only in letter case as equal. The reported lines keep their original case."
      • addedInput schema / properties / ignoreWhitespace / description
        Added value: +"Treat lines as equal when they differ only in leading, trailing or repeated whitespace, so an indentation change no longer counts as a change."
      • addedInput schema / properties / original / description
        Added value: +"The earlier version of the text. Compared line by line, split on newlines."
    • Changedtime_card_calculator8 fields changed
      • addedInput schema / properties / overtimeAfter / description
        Added value: +"Weekly hours after which the remaining hours count as overtime. Omitted means no overtime is worked out."
      • addedInput schema / properties / overtimeMultiplier / description
        Added value: +"What overtime hours are paid at, as a multiple of rate: 1.5 is the usual. Only matters when overtimeAfter and rate are set; defaults to 1."
      • addedInput schema / properties / rate / description
        Added value: +"Pay per hour. Omit it and the result gives hours only, with pay as null."
      • addedInput schema / properties / shifts / description
        Added value: +"The shifts to total, one entry each. A shift ending before it starts is read as crossing midnight, never as negative."
      • addedInput schema / properties / shifts / items / properties / breakMinutes / description
        Added value: +"Unpaid break in minutes, taken off the shift. Must be shorter than the shift itself. Defaults to 0."
      • addedInput schema / properties / shifts / items / properties / end / description
        Added value: +"Clock-out time, in the same forms as start. Earlier than start means the shift ran past midnight; 24:00 is accepted as the end of the day."
      • addedInput schema / properties / shifts / items / properties / label / description
        Added value: +"A free-form name for the shift, such as a weekday or a date. Returned unchanged on the matching day in the result."
      • addedInput schema / properties / shifts / items / properties / start / description
        Added value: +"Clock-in time. Forgiving: \"9:00\", \"9.00\", \"0900\", \"9am\" and \"9\" all read the same."
    • Changedtimestamp_converter2 fields changed
      • addedInput schema / properties / timeZone / description
        Added value: +"IANA zone name, e.g. \"Europe/Copenhagen\", used for the local reading and the day of the week. Defaults to UTC, and an unknown name falls back to UTC rather than failing."
      • addedInput schema / properties / value / description
        Added value: +"A Unix timestamp or a date. A bare number is read as seconds, or as milliseconds once it reaches 100000000000 (1e11); negative means before 1970. Anything else is parsed as a date string such as 2026-08-03T12:00:00Z."
    • Changedtimezone_converter5 fields changed
      • addedInput schema / properties / date / description
        Added value: +"The calendar date on the wall clock in fromZone, as YYYY-MM-DD."
      • addedInput schema / properties / fromZone / description
        Added value: +"IANA zone name the date and time are read in, e.g. \"America/New_York\". Abbreviations such as EST or CST are not accepted, since they are ambiguous."
      • addedInput schema / properties / time / description
        Added value: +"The wall-clock time in fromZone, 24-hour, as HH:MM. A time the clocks skip is moved forward and flagged; one that happens twice is read as the first."
      • addedInput schema / properties / toZones / description
        Added value: +"IANA zone names to read the same moment in. Each comes back with its own date, time, abbreviation, UTC offset and whether it is a day ahead or behind."
      • addedInput schema / properties / toZones / items / description
        Added value: +"An IANA zone name such as \"Asia/Tokyo\"."
    • Changedtip_calculator5 fields changed
      • addedInput schema / properties / bill / description
        Added value: +"The amount on the bill before any tip, in whatever currency you use. Tax it already contains is handled by taxRate."
      • addedInput schema / properties / people / description
        Added value: +"How many ways to split the total. 1 means no split."
      • addedInput schema / properties / roundTo / description
        Added value: +"Round each person's share up to this step in the bill's currency: 1 for whole units, 0.5 for halves. 0 or omitted keeps the exact share. Always up, never down."
      • addedInput schema / properties / taxRate / description
        Added value: +"Sales tax already included in bill, as a percentage. It is taken off before the tip is worked out, so the tip is on the pre-tax amount. 0 or omitted tips on the whole bill, which is the norm outside the US."
      • addedInput schema / properties / tipPercent / description
        Added value: +"The tip as a percentage of the bill, or of the pre-tax amount when taxRate is set: 15 means 15%."
    • Changedtyping_test4 fields changed
      • addedInput schema / properties / elapsedMs / description
        Added value: +"Time taken, in milliseconds. Words per minute counts five characters as a word; 0 scores 0 wpm rather than dividing by zero."
      • addedInput schema / properties / includeCharacters / description
        Added value: +"Also return a verdict for every character of target: correct, incorrect or pending. Off by default because it is thousands of strings for a minute of typing."
      • addedInput schema / properties / target / description
        Added value: +"The passage the person was supposed to type. Compared against typed character by character, position by position."
      • addedInput schema / properties / typed / description
        Added value: +"What was actually typed, exactly as entered. Shorter than target is fine; the untyped rest counts as pending."
    • Changedunit_converter4 fields changed
      • addedInput schema / properties / category / description
        Added value: +"Which kind of quantity: length, mass, temperature, volume, area, speed, data, time. Both from and to must be units of this category. Defaults to length."
      • addedInput schema / properties / from / description
        Added value: +"Unit id to convert from, which must belong to category. Ids by category: length: mm, cm, m, km, in, ft, yd, mi; mass: g, kg, t, oz, lb, st; temperature: c, f, k; volume: ml, l, tsp, tbsp, cup, pt, gal, galuk; area: cm2, m2, km2, ft2, yd2, acre, ha; speed: kmh, mph, ms, kn; data: b, kb, mb, gb, tb, kib, mib, gib, tib; time: ms, s, min, h, d, wk."
      • addedInput schema / properties / to / description
        Added value: +"Unit id to convert to, from the same category and the same list of ids as from."
      • addedInput schema / properties / value / description
        Added value: +"The quantity to convert, expressed in the from unit. Defaults to 1."
    • Changedurl_encoder3 fields changed
      • addedInput schema / properties / action / description
        Added value: +"encode percent-encodes text; decode reverses it; parse splits a complete URL (scheme included) into protocol, host, path, query parameters and hash, and ignores mode."
      • addedInput schema / properties / mode / description
        Added value: +"component encodes or decodes every reserved character, as encodeURIComponent does, which is right for one query value. full leaves the characters that structure a URL (/ ? & = : #) alone, as encodeURI does, which is right for a whole address. Ignored by parse."
      • addedInput schema / properties / text / description
        Added value: +"The text to encode, the percent-encoded string to decode, or the URL to parse, depending on action."
    • Changedutm_builder8 fields changed
      • addedInput schema / properties / campaign / description
        Added value: +"utm_campaign: the campaign name, such as spring-sale."
      • addedInput schema / properties / content / description
        Added value: +"utm_content: which link or creative, for telling two links in one campaign apart."
      • addedInput schema / properties / id / description
        Added value: +"utm_id: GA4's campaign id, tying the link to a campaign record."
      • addedInput schema / properties / medium / description
        Added value: +"utm_medium: the channel, such as cpc, email or social."
      • addedInput schema / properties / normalise / description
        Added value: +"Lower-case each value and turn spaces into hyphens before building the link. On by default, because inconsistent casing splits one campaign into several in reporting. Off keeps values exactly as given and warns about casing and spaces instead."
      • addedInput schema / properties / source / description
        Added value: +"utm_source: where the traffic comes from, as a short name such as google or newsletter. A pasted URL is flagged. Empty or omitted fields are left off the link."
      • addedInput schema / properties / term / description
        Added value: +"utm_term: the paid keyword, for search ads."
      • addedInput schema / properties / url / description
        Added value: +"The destination page. A bare hostname is accepted and assumed https. Any utm_ parameters already on it are replaced and a warning says so; other query parameters and a fragment are kept."
    • Changeduuid_generator2 fields changed
      • addedInput schema / properties / count / description
        Added value: +"How many UUIDs to return, 1 to 500. They come back as an array either way."
      • addedInput schema / properties / uppercase / description
        Added value: +"Return the hex digits in upper case. The hyphens are unaffected."
    • Changedvat_calculator3 fields changed
      • addedInput schema / properties / amount / description
        Added value: +"The price. The net (pre-VAT) price when direction is add; the gross (VAT-inclusive) price when it is remove."
      • addedInput schema / properties / direction / description
        Added value: +"add works out the VAT on a net amount and the gross that results. remove takes a gross amount and divides the VAT back out to find the net and the VAT it contained."
      • addedInput schema / properties / rate / description
        Added value: +"The VAT rate as a percentage: 25 means 25%. Must be below 100."
    • Changedvideo_to_gif4 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The video file, base64-encoded; a data: URL prefix is stripped if present. MP4 is what the transformer expects. Roughly 26 MB of video at most."
      • addedInput schema / properties / fps / description
        Added value: +"Frames per second of the GIF. fps times seconds is the frame count, capped at 300. Above about 15 the file grows faster than it improves. Defaults to 10."
      • addedInput schema / properties / seconds / description
        Added value: +"How many seconds of the clip to use, counted from the start. The rest is discarded. Defaults to 3."
      • addedInput schema / properties / width / description
        Added value: +"Longest edge of the output in pixels, up to 1280; the other edge follows the clip's aspect ratio. Defaults to 480."
    • Changedwatermark_pdf8 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The PDF file, base64-encoded; a data: URL prefix is stripped if present."
      • addedInput schema / properties / name / description
        Added value: +"The original file name, used to name the output: \"report.pdf\" comes back as \"report-watermarked.pdf\". Defaults to document."
      • addedInput schema / properties / opacity / description
        Added value: +"How solid the grey text is, 0.05 (barely visible) to 1 (solid). Defaults to 0.15, faint enough to read the page through."
      • addedInput schema / properties / pages / description
        Added value: +"Which pages to stamp, as 1-based page numbers. Numbers past the last page are ignored. Omit to stamp every page."
      • addedInput schema / properties / pages / items / description
        Added value: +"A page number, counting from 1."
      • addedInput schema / properties / position / description
        Added value: +"diagonal runs corner to corner and sizes itself to the page; centre sits in the middle of the page; footer sits just above the bottom edge, clear of a page number. Defaults to diagonal."
      • addedInput schema / properties / size / description
        Added value: +"Font size in points for centre and footer; ignored for diagonal, which sizes itself to the page. Defaults to 48 for centre and 12 for footer."
      • addedInput schema / properties / text / description
        Added value: +"The word or short phrase to stamp on each page, up to 60 characters: DRAFT, CONFIDENTIAL, a client's name."
    • Changedwebcam_test9 fields changed
      • addedInput schema / properties / blownFraction / description
        Added value: +"Fraction of the frame burnt out to white, 0 to 1, if measured yourself. Ignored when pixels is given. This is what tells a backlit subject from a well-lit one."
      • addedInput schema / properties / brightness / description
        Added value: +"Average brightness of the frame, 0 (black) to 1 (white), if measured yourself. Ignored when pixels is given."
      • addedInput schema / properties / frameRate / description
        Added value: +"Frames per second, if already known. Omit it and pass frameTimestampsMs to have it measured; omit both and smoothness comes back null."
      • addedInput schema / properties / frameTimestampsMs / description
        Added value: +"Arrival times of consecutive frames, in milliseconds. Needs at least two; the rate is derived from first to last rather than from any single gap. Ignored when frameRate is given."
      • addedInput schema / properties / frameTimestampsMs / items / description
        Added value: +"When one frame arrived, in milliseconds."
      • addedInput schema / properties / height / description
        Added value: +"Frame height in pixels."
      • addedInput schema / properties / pixels / description
        Added value: +"One frame as RGBA bytes, four values per pixel, 0-255, as a canvas getImageData returns them; the length must be a multiple of four. Used to measure brightness and the blown-out fraction. Send a downsample of up to 100,000 pixels, such as 64x64: it gives the same verdict as a full frame."
      • addedInput schema / properties / pixels / items / description
        Added value: +"One channel value, 0-255."
      • addedInput schema / properties / width / description
        Added value: +"Frame width in pixels. With height it decides the resolution grade, judged on the shorter side so portrait counts, and the aspect ratio."
    • Changedwhat_is_my_ip1 field changed
      • addedInput schema / description
        Added value: +"Takes no arguments. The answer is about whoever makes the call: their public IP address and what can be read from it."
    • Changedwheel_of_names3 fields changed
      • addedInput schema / properties / draws / description
        Added value: +"How many winners to draw. Without removeWinner each draw is from the full list, so the same name can win more than once. Defaults to 1."
      • addedInput schema / properties / names / description
        Added value: +"The entries to draw from, one per line. Blank lines and surrounding spaces are ignored; a name listed twice has two chances."
      • addedInput schema / properties / removeWinner / description
        Added value: +"Take each winner out of the list before the next draw, so no name wins twice. Drawing stops early if the list runs out; remaining in the response lists who is left."
    • Changedword_counter1 field changed
      • addedInput schema / properties / text / description
        Added value: +"The text to count. Returns characters with and without spaces, words, sentences, paragraphs (split on blank lines), lines, reading and speaking time in minutes, and the most frequent words with common ones left out."
    • Changedword_to_pdf2 fields changed
      • addedInput schema / properties / data / description
        Added value: +"The Word document, base64-encoded; a data: URL prefix is stripped if present. A .docx is expected, and the older binary .doc is recognised from its bytes too. Up to 25 MB once decoded."
      • addedInput schema / properties / pageSize / description
        Added value: +"document keeps the paper size and margins the file was written for. a4 or letter overrides them with that paper and fixed margins, which re-wraps every paragraph. Defaults to document."
    • Changedxml_formatter4 fields changed
      • addedInput schema / properties / indent / description
        Added value: +"Spaces per nesting level when formatting, or \"tab\" for one tab per level. Ignored by minify and validate. Defaults to 2."
      • addedInput schema / properties / keepComments / description
        Added value: +"Keep <!-- --> comments when formatting; false drops them. Defaults to true."
      • addedInput schema / properties / mode / description
        Added value: +"format re-indents it, one node per line; minify puts it on one line; validate only reports whether the tags nest and close, with the line of the first fault. None of them checks against a schema. Defaults to format."
      • addedInput schema / properties / xml / description
        Added value: +"The XML document to work on."
    • Changedyaml_to_json4 fields changed
      • addedInput schema / properties / direction / description
        Added value: +"yaml-to-json parses YAML and returns JSON; json-to-yaml parses JSON and returns YAML. Defaults to yaml-to-json."
      • addedInput schema / properties / indent / description
        Added value: +"Spaces of indentation in the output. For JSON, 0 gives a single line; YAML output always indents by at least 1. Defaults to 2."
      • addedInput schema / properties / sortKeys / description
        Added value: +"Sort object keys alphabetically at every level, so two configs can be compared. Off by default, which keeps the input's order."
      • addedInput schema / properties / text / description
        Added value: +"The document to convert: YAML when direction is yaml-to-json, JSON when it is json-to-yaml. A YAML file holding several --- documents becomes a JSON array."
  2. 1 tool update
    • Changedgame_collection2 fields changed
      • removedInput schema / properties / console / enum
        Removed value: -[
        -  "NES",
        -  "SNES",
        -  "N64",
        -  "GameCube",
        -  "Wii",
        -  "Wii U",
        -  "Switch",
        -  "Game Boy",
        -  "Game Boy Color",
        -  "Game Boy Advance",
        -  "Nintendo DS",
        -  "Nintendo 3DS",
        -  "Master System",
        -  "Mega Drive",
        -  "Game Gear",
        -  "Saturn",
        -  "Dreamcast",
        -  "PlayStation",
        -  "PS2",
        -  "PS3",
        -  "PS4",
        -  "PS5",
        -  "PSP",
        -  "Vita",
        -  "Xbox",
        -  "Xbox 360",
        -  "Xbox One",
        -  "Xbox Series",
        -  "Atari 2600",
        -  "Amiga",
        -  "Commodore 64",
        -  "Neo Geo",
        -  "TurboGrafx-16",
        -  "PC"
        -]
      • addedInput schema / properties / console / maxLength
        Added value: +40
  3. 1 tool update
    • Changedgame_collection1 field changed
      • addedInput schema / properties / folderId
        Added value: +{
        +  "maxLength": 64,
        +  "type": "string"
        +}
  4. 1 tool update
    • Addedgame_collection
  5. 1 tool update
    • Changedstall_booking2 fields changed
      • addedInput schema / properties / backGap
        Added value: +{
        +  "default": 0,
        +  "maximum": 300,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / backToBack
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
  6. 1 tool update
    • Changedstall_booking2 fields changed
      • addedInput schema / properties / venueId
        Added value: +{
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "title",
        -  "date",
        -  "hallWidth",
        -  "hallDepth",
        -  "stalls"
        -]New value: +[
        +  "title",
        +  "date"
        +]
  7. 1 tool update
    • Changedstall_booking2 fields changed
      • changedInput schema / properties / holdHours / maximum
        Previous value: -2160New value: +168
      • changedInput schema / properties / stalls / maximum
        Previous value: -500New value: +2000
  8. 1 tool update
    • Addedstall_booking
  9. 1 tool update
    • Changedfind_a_time1 field changed
      • addedInput schema / properties / timezone
        Added value: +{
        +  "maxLength": 64,
        +  "type": "string"
        +}
  10. 3 tool updates
    • Changedfind_a_time1 field changed
      • changedInput schema / properties / options / maxItems
        Previous value: -30New value: +366
    • Addedscreen_recorder
    • Addedwebcam_test
  11. 1 tool update
    • Changedfind_a_time1 field changed
      • addedInput schema / properties / locale
        Added value: +{
        +  "maxLength": 5,
        +  "type": "string"
        +}
  12. 1 tool update
    • Addedfind_a_time
  13. 1 tool update
    • Addeddelisted_games
  14. 3 tool updates
    • Changedpdf_merge1 field changed
      • changedInput schema / properties / files / items / properties / data / maxLength
        Previous value: -70000000New value: +28000000
    • Changedpdf_rotate1 field changed
      • changedInput schema / properties / data / maxLength
        Previous value: -70000000New value: +28000000
    • Changedpdf_split1 field changed
      • changedInput schema / properties / data / maxLength
        Previous value: -70000000New value: +28000000
  15. 1 tool update
    • Changedpdf_compress1 field changed
      • changedInput schema / properties / data / maxLength
        Previous value: -35000000New value: +28000000
  16. 1 tool update
    • Changedword_to_pdf2 fields changed
      • changedInput schema / properties / pageSize / default
        Previous value: -"a4"New value: +"document"
      • changedInput schema / properties / pageSize / enum
        Previous value: -[
        -  "a4",
        -  "letter"
        -]New value: +[
        +  "document",
        +  "a4",
        +  "letter"
        +]

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables comprehensive file and document operations including image compression, archive creation/extraction, file copying/moving, PDF merging/splitting/conversion, SQLite database queries, and advanced text processing.
    -
  • F
    license
    B
    quality
    A
    maintenance
    Enables local, offline document extraction and manipulation—PDF first but also HTML, DOCX, XLSX, PPTX, EML, EPUB, Markdown, and plain text—through tools for probing, locating, extracting, converting, assembling, OCR, protecting, and redacting documents, with nothing leaving the machine.
    7
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables PDF file manipulation including merging, splitting, extracting pages, extracting text, excluding pages, and reordering pages.
    35 npm
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources