Skip to main content
Glama
MauricioPerera

content-contracts-mcp-server

Lint de contenido de LinkedIn contra LINKEDIN.md

lint_linkedin_content
Read-onlyIdempotent

Validate LinkedIn feed copy and newsletter articles against LINKEDIN.md contract rules. Checks hard limits and forbidden structures like tables, raw HTML, and markdown, returning PASS/FAIL.

Instructions

Valida un copy de feed y/o un artículo de newsletter de LinkedIn contra los techos duros de un LINKEDIN.md. Los dos formatos son schemas separados (feed_copy / newsletter_article) porque casi no comparten restricciones reales — mandá al menos uno de los dos, podés mandar ambos.

El contenido del artículo es estructurado (title, seoDescription, hook, contextParagraph, sections: [{heading, body}], closing), no texto libre a re-parsear con regex de headings — contar secciones es leer la longitud del array.

forbidden_structure en LinkedIn SÍ chequea "table", "raw_html" y "literal_markdown" (a diferencia de lint_web_content, donde el medio ya es HTML y solo "table" aplica) — el editor de LinkedIn no renderiza ninguno de los tres.

Args:

  • config (string): frontmatter YAML de tu LINKEDIN.md.

  • feedCopy (opcional): { text, hashtags? }.

  • newsletter (opcional): { title, seoDescription, hook?, contextParagraph?, sections: [{heading, body}], closing? }.

Returns: texto "PASS"/"FAIL" con el detalle de cada pieza enviada, más structuredContent.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
configYesFrontmatter YAML de un LINKEDIN.md.
feedCopyNoCopy corto de feed a validar.
newsletterNoArtículo de newsletter a validar.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
passYes
feedCopyNo
newsletterNo
Behavior5/5

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

The description discloses that article content is structured ('El contenido del artículo es estructurado...') and warns against regex parsing, plus specifies the return format ('PASS'/'FAIL' with structuredContent). Annotations already declare read-only and idempotent, so this adds valuable behavioral context without contradiction.

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?

Every sentence earns its place: validation scope, structured-content expectation, sibling differentiation, and parameter recap are all tightly packed. The description is well-organized and appropriately sized for the tool's complexity.

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?

Given the rich schema and annotations, the description covers all necessary aspects: purpose, usage boundaries, behavioral quirks, return format, and parameter relationships. No significant information is missing for an agent 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.

Parameters5/5

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

Beyond the near-complete schema, the description clarifies that the two formats share almost no real restrictions, requires at least one of feedCopy/newsletter, and explains that counting sections is reading the array length. These operational details greatly help correct invocation.

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 opens with 'Valida un copy de feed y/o un artículo de newsletter de LinkedIn contra los techos duros de un LINKEDIN.md', using a specific verb and resource, and explicitly distinguishes itself from lint_web_content via the forbidden_structure difference. This clearly identifies the tool's scope and sets it apart from siblings.

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

Usage Guidelines5/5

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

The description explicitly contrasts with lint_web_content ('a diferencia de lint_web_content'), indicating when to use this tool for LinkedIn-specific structural checks. It also gives clear parameter guidance: 'mandá al menos uno de los dos, podés mandar ambos', which is not captured in the schema.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MauricioPerera/content-contracts-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server