Skip to main content
Glama
Mohammed-Jameal-J

NewsBlog Composer MCP

build_schema

Render a news post's HTML body with NewsArticle and FAQPage JSON-LD, validate schema-to-content consistency, and return a paste-ready block plus metadata.

Instructions

Step 9. Render the HTML body and both JSON-LD blocks, then check them.

article: {headline, description (110-160 chars, used as the meta description), intro:[str,str] (exactly two), sections:[{heading, paragraphs:[str], bullets?:[str]}] (4-6), cta (one closing sentence that must contain CTA_LINK_TEXT verbatim so it renders as a link), date_published?, author?, slug?, url?, meta_title?, section?, language?, include_h1?} faq: [{question, answer}] - 4 to 8 entries image: {url, alt, title?, caption?} - url must be the public https URL references: [{title, url, publisher?}] - real fetched URLs only keywords: the primary and secondary keywords from seo_keywords; they go into NewsArticle.keywords and come back in meta for save_and_present

Pure templating, no model call. Renders the house body format: 720px container, inline styles, banner, byline, hr-separated H2 sections, FAQ as H3/P pairs, references as an ordered list. By default the body carries NO H1 because Blogger renders the post title itself - set BODY_INCLUDES_H1=true if your platform does not.

Returns paste_block, which is both JSON-LD scripts followed by the body, ready to paste into the post editor, and meta - pass that straight to save_and_present so the head, the schema and the body cannot drift apart. Returns validation.issues listing every mismatch found: FAQ questions that differ between the HTML and the FAQPage schema, an image URL that differs between the tag and NewsArticle.image, references missing from the body. Fix the issues and call again rather than publishing output with a non-empty issues list.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
faqYes
imageYes
articleYes
keywordsNo
referencesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses that it is pure templating with no model call, that the body carries no H1 by default unless BODY_INCLUDES_H1=true, the exact output shape (`paste_block`, `meta`), and the concrete conditions that populate `validation.issues`. It also explains the coupling guarantee (head, schema, and body cannot drift apart).

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 procedural directive is front-loaded and the dense bullet-style field spec is justified given five complex parameters at 0% schema coverage. It is long, but nearly every line conveys a constraint an agent needs, with minimal redundancy.

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?

There is no output schema, so the description must describe returns, and it does: `paste_block` (JSON-LD scripts plus body), `meta` for save_and_present, and `validation.issues` with named mismatch types. Given the nested-object complexity and required-parameter count, the definition is complete enough to call 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?

Schema description coverage is 0%, so the description must compensate and it does: it documents each field of `article` (headline, a 110-160 char description, exactly-two intro, 4-6 sections, a cta that must contain CTA_LINK_TEXT verbatim, plus optional fields), `faq` (4-8 entries), `image` (url/alt/title/caption with a public-https URL requirement), `references` (real fetched URLs only), and `keywords`. This adds far more meaning than the bare nested schemas provide.

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 action (render the HTML body and both JSON-LD blocks, then validate them) on a specific artifact. It explicitly positions itself in the pipeline as 'Step 9' and distinguishes its output from the sibling save_and_present, which consumes its `meta`. An agent can tell what this produces 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 Guidelines4/5

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

Clearly establishes when this runs (step 9, after drafting) and what to do with the results: pass `meta` to save_and_present, and re-call after fixing a non-empty `validation.issues` list. It does not name an explicit alternative tool for a different platform, so it stops short of full 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.