{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_ycezbq7hesav","handle":"plumbkit","url":"https://wellknown.network/agents/plumbkit","links":{"self":"https://wellknown.network/agents/plumbkit/record.json","html":"https://wellknown.network/agents/plumbkit","markdown":"https://wellknown.network/agents/plumbkit/record.md","api":"https://wellknown.network/api/v1/agents/plumbkit","status":"https://wellknown.network/api/v1/agents/plumbkit/status","claim":"https://wellknown.network/agents/plumbkit/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/plumbkit/claim.json","badge":"https://wellknown.network/agents/plumbkit/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/plumbkit/history","tools":"https://wellknown.network/api/v1/agents/plumbkit/tools"},"ard":{"identifier":"urn:air:plumbkit.dev:server:plumbkit","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Plumbkit","summary":"Exact utilities for agents: time zones, date math, business days, calculator, units, validation.","description":"Exact utilities for agents: time zones, date math, business days, calculator, units, validation.","publisher":{"name":"dev.plumbkit","url":null},"homepage":"https://plumbkit.dev","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://plumbkit.dev/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-14T15:32:20.130071Z","publishedAt":"2026-10-14T15:32:20.130071Z","registryName":"dev.plumbkit/plumbkit"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":0.525,"provenance":"derived"},{"slug":"documents.conversion","name":"Document Conversion","confidence":0.51,"provenance":"derived"}],"categories":["documents","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-30T15:23:50.336Z","lastProbedAt":"2026-10-30T15:23:50.336Z","statusComputedAt":"2026-10-30T15:27:14.307Z","reliability30d":{"probes":53,"successRate":1,"p50Ms":42,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":53,"ok":53,"authBoundaryOk":0,"serviceOk":53,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-30T15:23:50.336Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":66,"error":null,"detail":{"tools":[{"name":"current_time","description":"Returns the exact current date, time, weekday and UTC offset in any time zone. Use this whenever you need to know today's date or the current time instead of gu"},{"name":"convert_timezone","description":"Converts a date/time from one time zone to another, correctly handling daylight saving time. If the input already includes an offset or 'Z', from_timezone is ig"},{"name":"date_add","description":"Adds or subtracts a duration (years, months, weeks, days, hours, minutes, seconds) to a date/time. Use negative numbers to subtract. Calendar-aware: adding 1 mo"},{"name":"date_diff","description":"Calculates the exact time between two dates/times: a calendar breakdown (years, months, days, hours, minutes, seconds) plus totals in days, hours, minutes and s"},{"name":"business_days","description":"Works with business (working) days. mode \"add\": returns the date N business days after start_date (start_date itself is not counted; negative N goes backward; 0"},{"name":"calculate","description":"Evaluates an arithmetic expression exactly, so you don't have to do mental math. Supports + - * / % ^ (or **), parentheses, constants pi/e/tau and functions: sq"},{"name":"convert_units","description":"Converts a value between units of length, mass, volume (US and imperial), area, speed, time, digital data (KB vs KiB, bits vs bytes), energy, pressure and tempe"},{"name":"text_stats","description":"Counts exactly what language models are bad at counting: characters (as humans see them), words, lines, sentences, paragraphs, UTF-8 bytes, and occurrences of a"},{"name":"hash_text","description":"Computes a cryptographic hash (SHA-1, SHA-256, SHA-384, SHA-512) of text, or encodes/decodes it as Base64, Base64URL, hex or URL-encoding. Text is treated as UT"},{"name":"regex_test","description":"Runs a JavaScript regular expression against text and returns every match with its position and capture groups, or the text after replacement. Use it to verify "},{"name":"validate_email","description":"Checks whether an email address is correctly formatted and returns a normalized version. Set check_dns=true to also confirm the domain exists and can receive ma"},{"name":"validate_phone","description":"Validates a phone number using Google's libphonenumber rules and returns it in E.164 (+14155552671), international and national formats, plus the country and li"},{"name":"validate_url","description":"Checks that a URL is well-formed, normalizes it (lowercase host, punycode, default ports removed, spaces encoded) and splits it into parts including each query "},{"name":"validate_iban","description":"Validates an International Bank Account Number: country, length for that country, and the mod-97 check digits. Returns electronic and printed formats. A valid I"},{"name":"json_repair","description":"Turns almost-JSON into valid JSON: removes markdown code fences, comments and trailing commas, adds missing quotes, commas and closing brackets, converts single"},{"name":"json_schema_validate","description":"Checks a JSON value against a JSON Schema (drafts 4, 7, 2019-09 and 2020-12) and lists every violation with its location. Use it to confirm structured output or"}],"toolCount":16,"toolsHash":"d43da0df67520d6205c678c3904dec4a2c2f010621663bf298641ddd5d71f74f","serverName":"plumbkit","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-30T07:23:30.269Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":18,"error":null,"detail":{"tools":[{"name":"current_time","description":"Returns the exact current date, time, weekday and UTC offset in any time zone. Use this whenever you need to know today's date or the current time instead of gu"},{"name":"convert_timezone","description":"Converts a date/time from one time zone to another, correctly handling daylight saving time. If the input already includes an offset or 'Z', from_timezone is ig"},{"name":"date_add","description":"Adds or subtracts a duration (years, months, weeks, days, hours, minutes, seconds) to a date/time. Use negative numbers to subtract. Calendar-aware: adding 1 mo"},{"name":"date_diff","description":"Calculates the exact time between two dates/times: a calendar breakdown (years, months, days, hours, minutes, seconds) plus totals in days, hours, minutes and s"},{"name":"business_days","description":"Works with business (working) days. mode \"add\": returns the date N business days after start_date (start_date itself is not counted; negative N goes backward; 0"},{"name":"calculate","description":"Evaluates an arithmetic expression exactly, so you don't have to do mental math. Supports + - * / % ^ (or **), parentheses, constants pi/e/tau and functions: sq"},{"name":"convert_units","description":"Converts a value between units of length, mass, volume (US and imperial), area, speed, time, digital data (KB vs KiB, bits vs bytes), energy, pressure and tempe"},{"name":"text_stats","description":"Counts exactly what language models are bad at counting: characters (as humans see them), words, lines, sentences, paragraphs, UTF-8 bytes, and occurrences of a"},{"name":"hash_text","description":"Computes a cryptographic hash (SHA-1, SHA-256, SHA-384, SHA-512) of text, or encodes/decodes it as Base64, Base64URL, hex or URL-encoding. Text is treated as UT"},{"name":"regex_test","description":"Runs a JavaScript regular expression against text and returns every match with its position and capture groups, or the text after replacement. Use it to verify "},{"name":"validate_email","description":"Checks whether an email address is correctly formatted and returns a normalized version. Set check_dns=true to also confirm the domain exists and can receive ma"},{"name":"validate_phone","description":"Validates a phone number using Google's libphonenumber rules and returns it in E.164 (+14155552671), international and national formats, plus the country and li"},{"name":"validate_url","description":"Checks that a URL is well-formed, normalizes it (lowercase host, punycode, default ports removed, spaces encoded) and splits it into parts including each query "},{"name":"validate_iban","description":"Validates an International Bank Account Number: country, length for that country, and the mod-97 check digits. Returns electronic and printed formats. A valid I"},{"name":"json_repair","description":"Turns almost-JSON into valid JSON: removes markdown code fences, comments and trailing commas, adds missing quotes, commas and closing brackets, converts single"},{"name":"json_schema_validate","description":"Checks a JSON value against a JSON Schema (drafts 4, 7, 2019-09 and 2020-12) and lists every violation with its location. Use it to confirm structured output or"}],"toolCount":16,"toolsHash":"d43da0df67520d6205c678c3904dec4a2c2f010621663bf298641ddd5d71f74f","serverName":"plumbkit","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-30T00:23:28.626Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":8,"error":null,"detail":{"tools":[{"name":"current_time","description":"Returns the exact current date, time, weekday and UTC offset in any time zone. Use this whenever you need to know today's date or the current time instead of gu"},{"name":"convert_timezone","description":"Converts a date/time from one time zone to another, correctly handling daylight saving time. If the input already includes an offset or 'Z', from_timezone is ig"},{"name":"date_add","description":"Adds or subtracts a duration (years, months, weeks, days, hours, minutes, seconds) to a date/time. Use negative numbers to subtract. Calendar-aware: adding 1 mo"},{"name":"date_diff","description":"Calculates the exact time between two dates/times: a calendar breakdown (years, months, days, hours, minutes, seconds) plus totals in days, hours, minutes and s"},{"name":"business_days","description":"Works with business (working) days. mode \"add\": returns the date N business days after start_date (start_date itself is not counted; negative N goes backward; 0"},{"name":"calculate","description":"Evaluates an arithmetic expression exactly, so you don't have to do mental math. Supports + - * / % ^ (or **), parentheses, constants pi/e/tau and functions: sq"},{"name":"convert_units","description":"Converts a value between units of length, mass, volume (US and imperial), area, speed, time, digital data (KB vs KiB, bits vs bytes), energy, pressure and tempe"},{"name":"text_stats","description":"Counts exactly what language models are bad at counting: characters (as humans see them), words, lines, sentences, paragraphs, UTF-8 bytes, and occurrences of a"},{"name":"hash_text","description":"Computes a cryptographic hash (SHA-1, SHA-256, SHA-384, SHA-512) of text, or encodes/decodes it as Base64, Base64URL, hex or URL-encoding. Text is treated as UT"},{"name":"regex_test","description":"Runs a JavaScript regular expression against text and returns every match with its position and capture groups, or the text after replacement. Use it to verify "},{"name":"validate_email","description":"Checks whether an email address is correctly formatted and returns a normalized version. Set check_dns=true to also confirm the domain exists and can receive ma"},{"name":"validate_phone","description":"Validates a phone number using Google's libphonenumber rules and returns it in E.164 (+14155552671), international and national formats, plus the country and li"},{"name":"validate_url","description":"Checks that a URL is well-formed, normalizes it (lowercase host, punycode, default ports removed, spaces encoded) and splits it into parts including each query "},{"name":"validate_iban","description":"Validates an International Bank Account Number: country, length for that country, and the mod-97 check digits. Returns electronic and printed formats. A valid I"},{"name":"json_repair","description":"Turns almost-JSON into valid JSON: removes markdown code fences, comments and trailing commas, adds missing quotes, commas and closing brackets, converts single"},{"name":"json_schema_validate","description":"Checks a JSON value against a JSON Schema (drafts 4, 7, 2019-09 and 2020-12) and lists every violation with its location. Use it to confirm structured output or"}],"toolCount":16,"toolsHash":"d43da0df67520d6205c678c3904dec4a2c2f010621663bf298641ddd5d71f74f","serverName":"plumbkit","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-29T16:25:25.358Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":49,"error":null,"detail":{"tools":[{"name":"current_time","description":"Returns the exact current date, time, weekday and UTC offset in any time zone. Use this whenever you need to know today's date or the current time instead of gu"},{"name":"convert_timezone","description":"Converts a date/time from one time zone to another, correctly handling daylight saving time. If the input already includes an offset or 'Z', from_timezone is ig"},{"name":"date_add","description":"Adds or subtracts a duration (years, months, weeks, days, hours, minutes, seconds) to a date/time. Use negative numbers to subtract. Calendar-aware: adding 1 mo"},{"name":"date_diff","description":"Calculates the exact time between two dates/times: a calendar breakdown (years, months, days, hours, minutes, seconds) plus totals in days, hours, minutes and s"},{"name":"business_days","description":"Works with business (working) days. mode \"add\": returns the date N business days after start_date (start_date itself is not counted; negative N goes backward; 0"},{"name":"calculate","description":"Evaluates an arithmetic expression exactly, so you don't have to do mental math. Supports + - * / % ^ (or **), parentheses, constants pi/e/tau and functions: sq"},{"name":"convert_units","description":"Converts a value between units of length, mass, volume (US and imperial), area, speed, time, digital data (KB vs KiB, bits vs bytes), energy, pressure and tempe"},{"name":"text_stats","description":"Counts exactly what language models are bad at counting: characters (as humans see them), words, lines, sentences, paragraphs, UTF-8 bytes, and occurrences of a"},{"name":"hash_text","description":"Computes a cryptographic hash (SHA-1, SHA-256, SHA-384, SHA-512) of text, or encodes/decodes it as Base64, Base64URL, hex or URL-encoding. Text is treated as UT"},{"name":"regex_test","description":"Runs a JavaScript regular expression against text and returns every match with its position and capture groups, or the text after replacement. Use it to verify "},{"name":"validate_email","description":"Checks whether an email address is correctly formatted and returns a normalized version. Set check_dns=true to also confirm the domain exists and can receive ma"},{"name":"validate_phone","description":"Validates a phone number using Google's libphonenumber rules and returns it in E.164 (+14155552671), international and national formats, plus the country and li"},{"name":"validate_url","description":"Checks that a URL is well-formed, normalizes it (lowercase host, punycode, default ports removed, spaces encoded) and splits it into parts including each query "},{"name":"validate_iban","description":"Validates an International Bank Account Number: country, length for that country, and the mod-97 check digits. Returns electronic and printed formats. A valid I"},{"name":"json_repair","description":"Turns almost-JSON into valid JSON: removes markdown code fences, comments and trailing commas, adds missing quotes, commas and closing brackets, converts single"},{"name":"json_schema_validate","description":"Checks a JSON value against a JSON Schema (drafts 4, 7, 2019-09 and 2020-12) and lists every violation with its location. Use it to confirm structured output or"}],"toolCount":16,"toolsHash":"d43da0df67520d6205c678c3904dec4a2c2f010621663bf298641ddd5d71f74f","serverName":"plumbkit","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-29T08:23:12.766Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":37,"error":null,"detail":{"tools":[{"name":"current_time","description":"Returns the exact current date, time, weekday and UTC offset in any time zone. Use this whenever you need to know today's date or the current time instead of gu"},{"name":"convert_timezone","description":"Converts a date/time from one time zone to another, correctly handling daylight saving time. If the input already includes an offset or 'Z', from_timezone is ig"},{"name":"date_add","description":"Adds or subtracts a duration (years, months, weeks, days, hours, minutes, seconds) to a date/time. Use negative numbers to subtract. Calendar-aware: adding 1 mo"},{"name":"date_diff","description":"Calculates the exact time between two dates/times: a calendar breakdown (years, months, days, hours, minutes, seconds) plus totals in days, hours, minutes and s"},{"name":"business_days","description":"Works with business (working) days. mode \"add\": returns the date N business days after start_date (start_date itself is not counted; negative N goes backward; 0"},{"name":"calculate","description":"Evaluates an arithmetic expression exactly, so you don't have to do mental math. Supports + - * / % ^ (or **), parentheses, constants pi/e/tau and functions: sq"},{"name":"convert_units","description":"Converts a value between units of length, mass, volume (US and imperial), area, speed, time, digital data (KB vs KiB, bits vs bytes), energy, pressure and tempe"},{"name":"text_stats","description":"Counts exactly what language models are bad at counting: characters (as humans see them), words, lines, sentences, paragraphs, UTF-8 bytes, and occurrences of a"},{"name":"hash_text","description":"Computes a cryptographic hash (SHA-1, SHA-256, SHA-384, SHA-512) of text, or encodes/decodes it as Base64, Base64URL, hex or URL-encoding. Text is treated as UT"},{"name":"regex_test","description":"Runs a JavaScript regular expression against text and returns every match with its position and capture groups, or the text after replacement. Use it to verify "},{"name":"validate_email","description":"Checks whether an email address is correctly formatted and returns a normalized version. Set check_dns=true to also confirm the domain exists and can receive ma"},{"name":"validate_phone","description":"Validates a phone number using Google's libphonenumber rules and returns it in E.164 (+14155552671), international and national formats, plus the country and li"},{"name":"validate_url","description":"Checks that a URL is well-formed, normalizes it (lowercase host, punycode, default ports removed, spaces encoded) and splits it into parts including each query "},{"name":"validate_iban","description":"Validates an International Bank Account Number: country, length for that country, and the mod-97 check digits. Returns electronic and printed formats. A valid I"},{"name":"json_repair","description":"Turns almost-JSON into valid JSON: removes markdown code fences, comments and trailing commas, adds missing quotes, commas and closing brackets, converts single"},{"name":"json_schema_validate","description":"Checks a JSON value against a JSON Schema (drafts 4, 7, 2019-09 and 2020-12) and lists every violation with its location. Use it to confirm structured output or"}],"toolCount":16,"toolsHash":"d43da0df67520d6205c678c3904dec4a2c2f010621663bf298641ddd5d71f74f","serverName":"plumbkit","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-29T01:28:12.006Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":33,"error":null,"detail":{"tools":[{"name":"current_time","description":"Returns the exact current date, time, weekday and UTC offset in any time zone. Use this whenever you need to know today's date or the current time instead of gu"},{"name":"convert_timezone","description":"Converts a date/time from one time zone to another, correctly handling daylight saving time. If the input already includes an offset or 'Z', from_timezone is ig"},{"name":"date_add","description":"Adds or subtracts a duration (years, months, weeks, days, hours, minutes, seconds) to a date/time. Use negative numbers to subtract. Calendar-aware: adding 1 mo"},{"name":"date_diff","description":"Calculates the exact time between two dates/times: a calendar breakdown (years, months, days, hours, minutes, seconds) plus totals in days, hours, minutes and s"},{"name":"business_days","description":"Works with business (working) days. mode \"add\": returns the date N business days after start_date (start_date itself is not counted; negative N goes backward; 0"},{"name":"calculate","description":"Evaluates an arithmetic expression exactly, so you don't have to do mental math. Supports + - * / % ^ (or **), parentheses, constants pi/e/tau and functions: sq"},{"name":"convert_units","description":"Converts a value between units of length, mass, volume (US and imperial), area, speed, time, digital data (KB vs KiB, bits vs bytes), energy, pressure and tempe"},{"name":"text_stats","description":"Counts exactly what language models are bad at counting: characters (as humans see them), words, lines, sentences, paragraphs, UTF-8 bytes, and occurrences of a"},{"name":"hash_text","description":"Computes a cryptographic hash (SHA-1, SHA-256, SHA-384, SHA-512) of text, or encodes/decodes it as Base64, Base64URL, hex or URL-encoding. Text is treated as UT"},{"name":"regex_test","description":"Runs a JavaScript regular expression against text and returns every match with its position and capture groups, or the text after replacement. Use it to verify "},{"name":"validate_email","description":"Checks whether an email address is correctly formatted and returns a normalized version. Set check_dns=true to also confirm the domain exists and can receive ma"},{"name":"validate_phone","description":"Validates a phone number using Google's libphonenumber rules and returns it in E.164 (+14155552671), international and national formats, plus the country and li"},{"name":"validate_url","description":"Checks that a URL is well-formed, normalizes it (lowercase host, punycode, default ports removed, spaces encoded) and splits it into parts including each query "},{"name":"validate_iban","description":"Validates an International Bank Account Number: country, length for that country, and the mod-97 check digits. Returns electronic and printed formats. A valid I"},{"name":"json_repair","description":"Turns almost-JSON into valid JSON: removes markdown code fences, comments and trailing commas, adds missing quotes, commas and closing brackets, converts single"},{"name":"json_schema_validate","description":"Checks a JSON value against a JSON Schema (drafts 4, 7, 2019-09 and 2020-12) and lists every violation with its location. Use it to confirm structured output or"}],"toolCount":16,"toolsHash":"d43da0df67520d6205c678c3904dec4a2c2f010621663bf298641ddd5d71f74f","serverName":"plumbkit","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-28T17:30:22.177Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":68,"error":null,"detail":{"tools":[{"name":"current_time","description":"Returns the exact current date, time, weekday and UTC offset in any time zone. Use this whenever you need to know today's date or the current time instead of gu"},{"name":"convert_timezone","description":"Converts a date/time from one time zone to another, correctly handling daylight saving time. If the input already includes an offset or 'Z', from_timezone is ig"},{"name":"date_add","description":"Adds or subtracts a duration (years, months, weeks, days, hours, minutes, seconds) to a date/time. Use negative numbers to subtract. Calendar-aware: adding 1 mo"},{"name":"date_diff","description":"Calculates the exact time between two dates/times: a calendar breakdown (years, months, days, hours, minutes, seconds) plus totals in days, hours, minutes and s"},{"name":"business_days","description":"Works with business (working) days. mode \"add\": returns the date N business days after start_date (start_date itself is not counted; negative N goes backward; 0"},{"name":"calculate","description":"Evaluates an arithmetic expression exactly, so you don't have to do mental math. Supports + - * / % ^ (or **), parentheses, constants pi/e/tau and functions: sq"},{"name":"convert_units","description":"Converts a value between units of length, mass, volume (US and imperial), area, speed, time, digital data (KB vs KiB, bits vs bytes), energy, pressure and tempe"},{"name":"text_stats","description":"Counts exactly what language models are bad at counting: characters (as humans see them), words, lines, sentences, paragraphs, UTF-8 bytes, and occurrences of a"},{"name":"hash_text","description":"Computes a cryptographic hash (SHA-1, SHA-256, SHA-384, SHA-512) of text, or encodes/decodes it as Base64, Base64URL, hex or URL-encoding. Text is treated as UT"},{"name":"regex_test","description":"Runs a JavaScript regular expression against text and returns every match with its position and capture groups, or the text after replacement. Use it to verify "},{"name":"validate_email","description":"Checks whether an email address is correctly formatted and returns a normalized version. Set check_dns=true to also confirm the domain exists and can receive ma"},{"name":"validate_phone","description":"Validates a phone number using Google's libphonenumber rules and returns it in E.164 (+14155552671), international and national formats, plus the country and li"},{"name":"validate_url","description":"Checks that a URL is well-formed, normalizes it (lowercase host, punycode, default ports removed, spaces encoded) and splits it into parts including each query "},{"name":"validate_iban","description":"Validates an International Bank Account Number: country, length for that country, and the mod-97 check digits. Returns electronic and printed formats. A valid I"},{"name":"json_repair","description":"Turns almost-JSON into valid JSON: removes markdown code fences, comments and trailing commas, adds missing quotes, commas and closing brackets, converts single"},{"name":"json_schema_validate","description":"Checks a JSON value against a JSON Schema (drafts 4, 7, 2019-09 and 2020-12) and lists every violation with its location. Use it to confirm structured output or"}],"toolCount":16,"toolsHash":"d43da0df67520d6205c678c3904dec4a2c2f010621663bf298641ddd5d71f74f","serverName":"plumbkit","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-28T10:26:05.709Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":62,"error":null,"detail":{"tools":[{"name":"current_time","description":"Returns the exact current date, time, weekday and UTC offset in any time zone. Use this whenever you need to know today's date or the current time instead of gu"},{"name":"convert_timezone","description":"Converts a date/time from one time zone to another, correctly handling daylight saving time. If the input already includes an offset or 'Z', from_timezone is ig"},{"name":"date_add","description":"Adds or subtracts a duration (years, months, weeks, days, hours, minutes, seconds) to a date/time. Use negative numbers to subtract. Calendar-aware: adding 1 mo"},{"name":"date_diff","description":"Calculates the exact time between two dates/times: a calendar breakdown (years, months, days, hours, minutes, seconds) plus totals in days, hours, minutes and s"},{"name":"business_days","description":"Works with business (working) days. mode \"add\": returns the date N business days after start_date (start_date itself is not counted; negative N goes backward; 0"},{"name":"calculate","description":"Evaluates an arithmetic expression exactly, so you don't have to do mental math. Supports + - * / % ^ (or **), parentheses, constants pi/e/tau and functions: sq"},{"name":"convert_units","description":"Converts a value between units of length, mass, volume (US and imperial), area, speed, time, digital data (KB vs KiB, bits vs bytes), energy, pressure and tempe"},{"name":"text_stats","description":"Counts exactly what language models are bad at counting: characters (as humans see them), words, lines, sentences, paragraphs, UTF-8 bytes, and occurrences of a"},{"name":"hash_text","description":"Computes a cryptographic hash (SHA-1, SHA-256, SHA-384, SHA-512) of text, or encodes/decodes it as Base64, Base64URL, hex or URL-encoding. Text is treated as UT"},{"name":"regex_test","description":"Runs a JavaScript regular expression against text and returns every match with its position and capture groups, or the text after replacement. Use it to verify "},{"name":"validate_email","description":"Checks whether an email address is correctly formatted and returns a normalized version. Set check_dns=true to also confirm the domain exists and can receive ma"},{"name":"validate_phone","description":"Validates a phone number using Google's libphonenumber rules and returns it in E.164 (+14155552671), international and national formats, plus the country and li"},{"name":"validate_url","description":"Checks that a URL is well-formed, normalizes it (lowercase host, punycode, default ports removed, spaces encoded) and splits it into parts including each query "},{"name":"validate_iban","description":"Validates an International Bank Account Number: country, length for that country, and the mod-97 check digits. Returns electronic and printed formats. A valid I"},{"name":"json_repair","description":"Turns almost-JSON into valid JSON: removes markdown code fences, comments and trailing commas, adds missing quotes, commas and closing brackets, converts single"},{"name":"json_schema_validate","description":"Checks a JSON value against a JSON Schema (drafts 4, 7, 2019-09 and 2020-12) and lists every violation with its location. Use it to confirm structured output or"}],"toolCount":16,"toolsHash":"d43da0df67520d6205c678c3904dec4a2c2f010621663bf298641ddd5d71f74f","serverName":"plumbkit","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-28T02:30:06.371Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":43,"error":null,"detail":{"tools":[{"name":"current_time","description":"Returns the exact current date, time, weekday and UTC offset in any time zone. Use this whenever you need to know today's date or the current time instead of gu"},{"name":"convert_timezone","description":"Converts a date/time from one time zone to another, correctly handling daylight saving time. If the input already includes an offset or 'Z', from_timezone is ig"},{"name":"date_add","description":"Adds or subtracts a duration (years, months, weeks, days, hours, minutes, seconds) to a date/time. Use negative numbers to subtract. Calendar-aware: adding 1 mo"},{"name":"date_diff","description":"Calculates the exact time between two dates/times: a calendar breakdown (years, months, days, hours, minutes, seconds) plus totals in days, hours, minutes and s"},{"name":"business_days","description":"Works with business (working) days. mode \"add\": returns the date N business days after start_date (start_date itself is not counted; negative N goes backward; 0"},{"name":"calculate","description":"Evaluates an arithmetic expression exactly, so you don't have to do mental math. Supports + - * / % ^ (or **), parentheses, constants pi/e/tau and functions: sq"},{"name":"convert_units","description":"Converts a value between units of length, mass, volume (US and imperial), area, speed, time, digital data (KB vs KiB, bits vs bytes), energy, pressure and tempe"},{"name":"text_stats","description":"Counts exactly what language models are bad at counting: characters (as humans see them), words, lines, sentences, paragraphs, UTF-8 bytes, and occurrences of a"},{"name":"hash_text","description":"Computes a cryptographic hash (SHA-1, SHA-256, SHA-384, SHA-512) of text, or encodes/decodes it as Base64, Base64URL, hex or URL-encoding. Text is treated as UT"},{"name":"regex_test","description":"Runs a JavaScript regular expression against text and returns every match with its position and capture groups, or the text after replacement. Use it to verify "},{"name":"validate_email","description":"Checks whether an email address is correctly formatted and returns a normalized version. Set check_dns=true to also confirm the domain exists and can receive ma"},{"name":"validate_phone","description":"Validates a phone number using Google's libphonenumber rules and returns it in E.164 (+14155552671), international and national formats, plus the country and li"},{"name":"validate_url","description":"Checks that a URL is well-formed, normalizes it (lowercase host, punycode, default ports removed, spaces encoded) and splits it into parts including each query "},{"name":"validate_iban","description":"Validates an International Bank Account Number: country, length for that country, and the mod-97 check digits. Returns electronic and printed formats. A valid I"},{"name":"json_repair","description":"Turns almost-JSON into valid JSON: removes markdown code fences, comments and trailing commas, adds missing quotes, commas and closing brackets, converts single"},{"name":"json_schema_validate","description":"Checks a JSON value against a JSON Schema (drafts 4, 7, 2019-09 and 2020-12) and lists every violation with its location. Use it to confirm structured output or"}],"toolCount":16,"toolsHash":"d43da0df67520d6205c678c3904dec4a2c2f010621663bf298641ddd5d71f74f","serverName":"plumbkit","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-27T19:28:45.043Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":77,"error":null,"detail":{"tools":[{"name":"current_time","description":"Returns the exact current date, time, weekday and UTC offset in any time zone. Use this whenever you need to know today's date or the current time instead of gu"},{"name":"convert_timezone","description":"Converts a date/time from one time zone to another, correctly handling daylight saving time. If the input already includes an offset or 'Z', from_timezone is ig"},{"name":"date_add","description":"Adds or subtracts a duration (years, months, weeks, days, hours, minutes, seconds) to a date/time. Use negative numbers to subtract. Calendar-aware: adding 1 mo"},{"name":"date_diff","description":"Calculates the exact time between two dates/times: a calendar breakdown (years, months, days, hours, minutes, seconds) plus totals in days, hours, minutes and s"},{"name":"business_days","description":"Works with business (working) days. mode \"add\": returns the date N business days after start_date (start_date itself is not counted; negative N goes backward; 0"},{"name":"calculate","description":"Evaluates an arithmetic expression exactly, so you don't have to do mental math. Supports + - * / % ^ (or **), parentheses, constants pi/e/tau and functions: sq"},{"name":"convert_units","description":"Converts a value between units of length, mass, volume (US and imperial), area, speed, time, digital data (KB vs KiB, bits vs bytes), energy, pressure and tempe"},{"name":"text_stats","description":"Counts exactly what language models are bad at counting: characters (as humans see them), words, lines, sentences, paragraphs, UTF-8 bytes, and occurrences of a"},{"name":"hash_text","description":"Computes a cryptographic hash (SHA-1, SHA-256, SHA-384, SHA-512) of text, or encodes/decodes it as Base64, Base64URL, hex or URL-encoding. Text is treated as UT"},{"name":"regex_test","description":"Runs a JavaScript regular expression against text and returns every match with its position and capture groups, or the text after replacement. Use it to verify "},{"name":"validate_email","description":"Checks whether an email address is correctly formatted and returns a normalized version. Set check_dns=true to also confirm the domain exists and can receive ma"},{"name":"validate_phone","description":"Validates a phone number using Google's libphonenumber rules and returns it in E.164 (+14155552671), international and national formats, plus the country and li"},{"name":"validate_url","description":"Checks that a URL is well-formed, normalizes it (lowercase host, punycode, default ports removed, spaces encoded) and splits it into parts including each query "},{"name":"validate_iban","description":"Validates an International Bank Account Number: country, length for that country, and the mod-97 check digits. Returns electronic and printed formats. A valid I"},{"name":"json_repair","description":"Turns almost-JSON into valid JSON: removes markdown code fences, comments and trailing commas, adds missing quotes, commas and closing brackets, converts single"},{"name":"json_schema_validate","description":"Checks a JSON value against a JSON Schema (drafts 4, 7, 2019-09 and 2020-12) and lists every violation with its location. Use it to confirm structured output or"}],"toolCount":16,"toolsHash":"d43da0df67520d6205c678c3904dec4a2c2f010621663bf298641ddd5d71f74f","serverName":"plumbkit","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"current_time","description":"Returns the exact current date, time, weekday and UTC offset in any time zone. Use this whenever you need to know today's date or the current time instead of gu"},{"name":"convert_timezone","description":"Converts a date/time from one time zone to another, correctly handling daylight saving time. If the input already includes an offset or 'Z', from_timezone is ig"},{"name":"date_add","description":"Adds or subtracts a duration (years, months, weeks, days, hours, minutes, seconds) to a date/time. Use negative numbers to subtract. Calendar-aware: adding 1 mo"},{"name":"date_diff","description":"Calculates the exact time between two dates/times: a calendar breakdown (years, months, days, hours, minutes, seconds) plus totals in days, hours, minutes and s"},{"name":"business_days","description":"Works with business (working) days. mode \"add\": returns the date N business days after start_date (start_date itself is not counted; negative N goes backward; 0"},{"name":"calculate","description":"Evaluates an arithmetic expression exactly, so you don't have to do mental math. Supports + - * / % ^ (or **), parentheses, constants pi/e/tau and functions: sq"},{"name":"convert_units","description":"Converts a value between units of length, mass, volume (US and imperial), area, speed, time, digital data (KB vs KiB, bits vs bytes), energy, pressure and tempe"},{"name":"text_stats","description":"Counts exactly what language models are bad at counting: characters (as humans see them), words, lines, sentences, paragraphs, UTF-8 bytes, and occurrences of a"},{"name":"hash_text","description":"Computes a cryptographic hash (SHA-1, SHA-256, SHA-384, SHA-512) of text, or encodes/decodes it as Base64, Base64URL, hex or URL-encoding. Text is treated as UT"},{"name":"regex_test","description":"Runs a JavaScript regular expression against text and returns every match with its position and capture groups, or the text after replacement. Use it to verify "},{"name":"validate_email","description":"Checks whether an email address is correctly formatted and returns a normalized version. Set check_dns=true to also confirm the domain exists and can receive ma"},{"name":"validate_phone","description":"Validates a phone number using Google's libphonenumber rules and returns it in E.164 (+14155552671), international and national formats, plus the country and li"},{"name":"validate_url","description":"Checks that a URL is well-formed, normalizes it (lowercase host, punycode, default ports removed, spaces encoded) and splits it into parts including each query "},{"name":"validate_iban","description":"Validates an International Bank Account Number: country, length for that country, and the mod-97 check digits. Returns electronic and printed formats. A valid I"},{"name":"json_repair","description":"Turns almost-JSON into valid JSON: removes markdown code fences, comments and trailing commas, adds missing quotes, commas and closing brackets, converts single"},{"name":"json_schema_validate","description":"Checks a JSON value against a JSON Schema (drafts 4, 7, 2019-09 and 2020-12) and lists every violation with its location. Use it to confirm structured output or"}],"package":null,"toolSurface":{"id":"ts_sgz95umqd95q","endpointId":"ep_3axg5h7pvz3n","hash":"d43da0df67520d6205c678c3904dec4a2c2f010621663bf298641ddd5d71f74f","toolCount":16,"serverName":"plumbkit","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-15T12:31:50.767Z","lastSeenAt":"2026-10-30T15:23:50.345Z","observations":53,"toolNames":["current_time","convert_timezone","date_add","date_diff","business_days","calculate","convert_units","text_stats","hash_text","regex_test","validate_email","validate_phone","validate_url","validate_iban","json_repair","json_schema_validate"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_3axg5h7pvz3n","url":"https://plumbkit.dev/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-28T10:26:05.731Z","auth":{"observedAt":"2026-10-28T10:26:05.788Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-28T10:26:05.802Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"plumbkit.dev","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-10-14T14:23:52.000Z","validTo":"2027-01-12T15:23:50.000Z","daysToExpiry":73,"sanCount":2,"fingerprint256":"AF:1C:FC:B3:87:BF:D9:9D:34:3C:2E:B6:22:29:A3:78:2C:53:1C:8A:CA:A5:45:1C:FA:E3:C0:62:14:26:7F:9F"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"dev.plumbkit/plumbkit","url":"https://registry.modelcontextprotocol.io/v0/servers/dev.plumbkit%2Fplumbkit","firstSeenAt":"2026-10-15T12:22:14.290Z","fetchedAt":"2026-10-29T01:19:46.889Z","normalizedAt":"2026-10-29T01:19:46.889Z"}]},"firstSeenAt":"2026-10-15T12:22:14.290Z","updatedAt":"2026-10-30T15:28:17.723Z"}