byline
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| health_checkA | Probe every configured blog plus every image and research provider. Returns per-API ok/fail with the real error. Run this first when anything fails. |
| list_sitesA | List configured publishing targets. Never returns key material. |
| add_siteA | Add a publishing target to config/sites.yaml. Secret credential fields are recorded as a reference to a .env variable name; the value itself goes in .env, never in config.yaml. |
| remove_siteA | Remove a publishing target from config/sites.yaml. Leaves .env untouched. |
| list_authorsA | List the author accounts on a site, with their platform ids. Pass an id as create_post's |
| list_personasA | List available author personas. |
| get_personaC | Full author profile — voice, style, bias, and instructions. |
| research_topicA | OPTIONAL: fetch attributable findings on a topic from a single configured research provider (Brave or Tavily). If you already have live web access, use it directly and pass what you find as |
| build_writing_briefA | Build a randomized, persona-specific writing brief covering voice, structure, visual blocks, AEO and GEO. RESEARCH IS MANDATORY IN NEWS MODE, from exactly ONE origin: either your own findings as |
| score_draftA | Mechanically score a draft for human-voice quality: burstiness, AI-tell phrasing, paragraph uniformity, evidence density, first-hand experience, target-platform HTML validity, and — when |
| generate_imageA | Generate a photograph with Gemini, falling back to Grok. Pass |
| upload_imageA | Upload a local image to a site's media store and return the hosted URL. |
| create_postA | Publish an article. Defaults to status "published" — pass "draft" only when the user asked for a draft, or "scheduled" with publish_at to go live at a set time. The author accepts a persona slug and resolves to that site's author id. HTML must not still contain [[content_image]]. Every article gets a hero (feature_image) and an inline by default when an image provider is configured — refused otherwise; pass images: "hero" | "inline" | "none" to opt out. |
| update_postA | Edit an existing post in place. Only the fields you pass are changed. Also the way to schedule an existing draft (status "scheduled" plus publish_at), to unschedule one (status "draft"), or to correct a post's date (publish_at in the past). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Each tool targets a distinct resource and action. Even the list_* tools (sites, authors, personas) are clearly separated by what they enumerate, and the descriptions clarify the differences. No two tools could be easily confused.
The vast majority of tools follow a consistent verb_noun pattern (list_sites, add_site, create_post, update_post). The only deviation is health_check, which is a common compound noun and not confusing, but it breaks the otherwise uniform verb-first style.
14 tools is within the ideal 3-15 range. Each tool serves a clear purpose in the blogging workflow, from configuration and research to image generation and publishing. No tool feels redundant or unnecessary.
The set covers site management, persona lookup, research, brief building, scoring, image handling, and post creation/updating, but lacks any way to read or delete posts. This is a notable gap for a publishing server, as an agent cannot list existing posts or retrieve a post to update it intelligently.