Server definition
- Hash
- sha256:fa780236385f4767ecbd8d5566f12161ea39c67a82a4e67aac4e8bb163b3f161
- What it is
- What a remote MCP server returned when asked what it offers: 6 tools
The blob, as servednamed by its sha256
{
"instructions": "Lint SKILL.md files for AI agents: lint_skill validates one file's frontmatter, structure, secrets, and size; packaging_check validates a zip layout plan for skill marketplaces. All tools are free.",
"tools": [
{
"description": "Explain a 5-field cron expression in plain English and flag mistakes. FREE.\n\nTypical input {\"expression\": \"0 9 * * 1-5\"} returns {\"expression\":\n\"0 9 * * 1-5\", \"meaning\": \"at minute 0; at hour 9; every day of month;\nevery month; day of week 1-5\", \"issues\": [\"none\"]}; out-of-range fields\nare listed in \"issues\".\n\nUse to read a schedule back in plain English before trusting it. Assumes\n5-field cron; not for 6-field or seconds-precision variants. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"expected 5 fields, got <value>\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"expression": {
"description": "A standard 5-field cron string (minute hour day-of-month month day-of-week), e.g. \"0 9 * * 1-5\"; must be non-empty.",
"minLength": 1,
"type": "string"
}
},
"required": [
"expression"
],
"type": "object"
},
"name": "cron_explain",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Produce a unified diff between two texts. FREE.\n\nUseful for comparing two SKILL.md versions. Typical input {\"a\": \"<old\ntext>\", \"b\": \"<new text>\"} returns {\"changed_lines\": N, \"diff\":\n\"--- \\n+++ \\n@@ ... @@\\n-old line\\n+new line\"}; identical inputs\nreturn {\"changed_lines\": 0, \"diff\": \"(identical)\"}. The diff is capped\nat 400 lines.\n\nUse to show exactly what changed between two versions of a text. Not for\njudging the risk of a code change - the codereview server's review_diff\ndoes that. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"each text must be at most 500000 characters\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"a": {
"description": "The original text (left side of the diff); at most 500000 characters.",
"maxLength": 500000,
"type": "string"
},
"b": {
"description": "The revised text (right side of the diff); at most 500000 characters.",
"maxLength": 500000,
"type": "string"
}
},
"required": [
"a",
"b"
],
"type": "object"
},
"name": "diff_texts",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Validate JSON text and summarize its structure. FREE.\n\nTypical input {\"text\": \"{\\\"a\\\": [1, 2]}\"} returns {\"valid\": true,\n\"structure\": {\"a\": [\"array[2]\", \"int\"]}}; invalid JSON returns\n{\"valid\": false, \"error\": \"<parser message>\", \"line\": N, \"column\": N}\ninstead.\n\nUse when JSON may be malformed or its shape is unknown. Reports structure,\nnot conformance to a schema. Not for testing a pattern (regex_test). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"text is empty — pass the JSON document as a raw string\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"text": {
"description": "The JSON document to validate, as a raw string; must be non-empty.",
"minLength": 1,
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"name": "json_validate",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lint one SKILL.md file the way marketplaces and agents parse it. FREE.\n\nChecks YAML frontmatter presence and required fields (name,\ndescription), description quality, body structure (procedure steps,\nrules, degradation), secret/credential leakage, injection-style\nphrasing, and size budget. Typical input {\"content\": \"<full SKILL.md\ntext>\"} returns {\"verdict\": \"pass\" | \"pass-with-warnings\" | \"fail\",\n\"errors\": [\"...\"], \"warnings\": [\"...\"], \"stats\": {\"body_words\": N,\n\"has_frontmatter\": bool}}.\n\nUse on the full text of one SKILL.md. Not for the surrounding archive\nlayout (packaging_check). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"content is empty — pass the full SKILL.md text including frontmatter\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"content": {
"description": "The complete SKILL.md file text, frontmatter included; must be non-empty.",
"minLength": 1,
"type": "string"
}
},
"required": [
"content"
],
"type": "object"
},
"name": "lint_skill",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Validate a zip layout plan for a skill marketplace before packaging. FREE.\n\nChecks SKILL.md placement rules and flags junk files. Typical input\n{\"file_paths\": [\"my-skill/SKILL.md\", \"my-skill/examples.md\"],\n\"marketplace\": \"agensi\"} returns {\"verdict\": \"pass\" | \"fail\",\n\"issues\": [\"...\"], \"skill_files_found\": [\"my-skill/SKILL.md\"]}.\n\nUse on a planned file layout, before zipping. Not for the content of a\nskill file (lint_skill). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"file_paths is empty — list every file that will be inside the zip\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"file_paths": {
"description": "Every file path that will be inside the zip, relative to the zip root, e.g. [\"my-skill/SKILL.md\"]; at least 1 entry.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
},
"marketplace": {
"default": "agensi",
"description": "Rule set to apply: \"agensi\" (SKILL.md at root or one folder deep) or \"generic\" (junk-file checks only). Default \"agensi\".",
"type": "string"
}
},
"required": [
"file_paths"
],
"type": "object"
},
"name": "packaging_check",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Test a regular expression against sample strings. FREE.\n\nTypical input {\"pattern\": \"v(\\\\d+)\", \"samples\": [\"v12\", \"beta\"]}\nreturns {\"pattern\": ..., \"results\": [{\"sample\": \"v12\", \"match\": true,\n\"matched_text\": \"v12\", \"groups\": [\"12\"]}, {\"sample\": \"beta\", \"match\":\nfalse, ...}], \"match_count\": 1}.\n\nUse to confirm a pattern matches what you expect before shipping it. Not\nfor validating JSON (json_validate). The pattern is compiled and run in a\nshort-lived, CPU-capped child process, so a pattern that backtracks\ncatastrophically is stopped instead of stalling the server. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"a sample is too long (max 10000 characters); shorten it and retry\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"pattern": {
"description": "A Python-flavor regular expression as a string, e.g. \"v(\\\\d+)\".",
"maxLength": 1000,
"type": "string"
},
"samples": {
"description": "Strings to test the pattern against; only the first 50 are evaluated.",
"items": {
"type": "string"
},
"maxItems": 50,
"type": "array"
}
},
"required": [
"pattern",
"samples"
],
"type": "object"
},
"name": "regex_test",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:fa780236385f4767ecbd8d5566f12161ea39c67a82a4e67aac4e8bb163b3f161 | sha256sum