Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 author to byline someone who has no persona file, or copy it into a persona's platform_authors.

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 research to build_writing_brief instead — this tool exists mainly for callers without one. What it adds is provenance: every finding carries its source URL, and its publication date wherever the provider supplies one, so claims drawn from it can be attributed. That provenance is what makes two downstream checks possible: build_writing_brief's news-mode recency guard, and score_draft's citation_provenance check, which cross-checks the URLs a draft links against these findings (advisory, not blocking). A hand-supplied research string gets neither: it is trusted, not verified. Before calling, decide whether the topic actually turns on recent events: "the Ashes result" does, "the history of the Ashes" does not. If that is genuinely unclear, ASK THE USER in chat rather than guessing. Byline never substitutes one provider for another — pick one explicitly with provider, or rely on BYLINE_RESEARCH_PROVIDER or whichever single provider is configured; an unconfigured named provider is refused, never swapped for the other. Findings come back in the provider's own order, with no re-sorting or relevance filtering by Byline — pass the WHOLE result as build_writing_brief's findings argument. Do NOT summarize it into research: that throws away the URLs and dates that make each finding checkable, and turns a verifiable origin into an unverifiable one.

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 research (your web access, /last30days, or notes a human pasted — TRUSTED but not verified by Byline), or a research_topic result as findings (checked to exist, and that AT LEAST ONE finding is dated and inside the window; any that are not are marked on the brief). Passing both is refused. Do not summarise a recent topic from your own knowledge — the model cutoff cannot know the last 30 days, and an article built on recalled facts will carry stale or invented figures. If it is unclear whether a topic depends on recent events, ASK THE USER rather than guessing; an evergreen topic should use mode: "blog", which needs no research at all. Returns the seed so a brief can be reproduced, plus researchOrigin and any warnings.

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 findings is passed — whether every cited URL actually came from the research. Verdict blocked means fix before publishing. No external API is called.

generate_imageA

Generate a photograph with Gemini, falling back to Grok. Pass prompt as the SUBJECT ONLY — what is happening and where; the photographic style is applied for you. Writes a PNG under the runs directory and returns its path plus which provider produced it.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/indianic/byline'

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