teneo-book-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@teneo-book-mcpWrite a 10-chapter book on habit building"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
teneo-book-mcp
MCP server for Teneo. Lets any MCP-capable agent — Claude Desktop, Cursor, Claude Code, or your own — generate a complete, publish-ready non-fiction book: full manuscript, cover, and PDF/EPUB/DOCX files.
{
"mcpServers": {
"teneo-book": {
"command": "npx",
"args": ["-y", "teneo-book-mcp"],
"env": { "TENEO_API_KEY": "tk_live_..." }
}
}
}Tools
Tool | What it does |
| Discover auth, pricing, request shape, workflow, and output shape. Start here. |
| Start a book (async) → returns a |
| Poll a job; when |
| Generate an outline only, without running the full pipeline. Free. |
| Niche research from a seed topic. Free. |
| Generate a cover only. |
| Run quality evaluation on an existing generated book. |
Related MCP server: forge-mcp
What it costs
Priced in Teneo credits. One credit is $69 singly, $59 each in a 3-pack, $44.90 each in a 10-pack; credits never expire.
requiredCredits = bookCredits + coverCredits + qualityCreditsReserve
bookCredits = wordBandCredits(estimatedWordCount) x modelMultiplier(model_version)
estimatedWordCount = number_of_chapters x topics_per_chapter x subtopic_count x 350A default request (12 chapters / 3 topics / 3 subtopics) estimates 37,800 words → 1.05
credits, about $72 at list. teneo_generate_outline and teneo_research_niche cost
nothing, so validate direction before committing to a paid generation.
A funded Teneo balance is required before the first paid call — there is no
pay-per-call endpoint yet. The live numbers, the full model-multiplier table, and the
request schema are always at
/api/agent/capabilities, which is
authoritative if anything here disagrees with it.
Setup
Get a credential, then add the config block above to your MCP client.
Preferred (delegated): start at
auth.teneo.io/auth.md, register forhttps://teneo.io/, have the user approve the claim, and exchange it for a delegated agent token. Pass it asTENEO_AGENT_TOKEN. The delegated user is charged.Legacy: create an API key in your Teneo dashboard and pass
TENEO_API_KEY=tk_live_....Point at staging with
TENEO_BASE_URL=https://staging.teneo.io.
Spend semantics
Worth knowing before you wire this into an autonomous loop:
Quoted before charged. A request that would exceed the balance returns
402with the full quote and charges nothing — a safe way to read the exact price.Idempotent. Send an
Idempotency-Keyheader; replaying a request replays the original debit instead of charging twice.Refunded on failure. A failed generation is refunded in full.
Async. A book takes ~45 minutes. Poll
teneo_book_status, or passcallback_urlfor a completion webhook. Download URLs expire in ~1 hour; re-poll for fresh ones.
Not for
A single short answer, a blog post, or an article — answer those directly instead. Fiction and novels are not supported by this API.
Develop
npm test # unit tests for the HTTP client (mocked fetch, no network)
npm start # run the MCP server over stdioclient.mjs is a dependency-free HTTP client; server.mjs wraps it as MCP tools. Both
mirror the published
OpenAPI contract.
Links
Agent front door: https://teneo.io/agents
Capability manifest: https://teneo.io/api/agent/capabilities
OpenAPI: https://teneo.io/openapi/agent-book-generation.yaml
Also installable as an agent skill:
npx skills add https://teneo.ioOfficial MCP registry:
io.github.Traviseric/teneo-book-mcp
License
MIT
Available Tools
7 toolsteneo_book_statusA
Check a book generation job. When status is "completed", the response includes outputManifest with coverUrl and time-limited download URLs for each format. Poll every ~30-60s.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | The jobId returned by teneo_generate_book. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does useful work: it discloses the completed-state payload (outputManifest, coverUrl, time-limited download URLs) and a polling cadence. It does not describe non-completed states, failure/error behavior, or how long the job typically takes, so some lifecycle context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler; the purpose leads and the polling guidance closes. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 characterize returns, and it does explain what appears on completion. It leaves the pending/failed response shape and retry semantics unspecified, which is a modest gap for a no-output-schema tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the jobId description already ties it back to teneo_generate_book. The description adds no format or sourcing detail for the parameter beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check a book generation job') and is clearly the polling companion to teneo_generate_book. An agent can distinguish it from the generation and evaluation siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit operational guidance ('Poll every ~30-60s'), which is exactly the context needed for a status-checking tool. It does not name alternatives or state when not to call it, but with no competing status sibling that omission is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teneo_capabilitiesA
Discover what Teneo can generate and how: auth, pricing (credits), request fields, the workflow, use cases, and the output shape. Call this first if unsure.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the informational domains it returns (auth, credits/pricing, field shapes, output shape), which hints at a read-only discovery operation. It does not state that the call is free, side-effect-free, or how large the response is, leaving the safety profile to inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the value proposition and ending with the routing cue. Every clause enumerates distinct content the agent will receive; nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-annotation discovery tool with no output schema, the description tells the agent what information it will obtain and when to call it, which is enough to act. It could be slightly stronger by noting the return is static documentation rather than generated content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so there is nothing to mis-document and the baseline of 4 applies. The description correctly implies no input is needed to retrieve the capability overview.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Discover') and enumerates exactly what the tool covers: auth, pricing (credits), request fields, workflow, use cases, and output shape. This clearly separates it from siblings like teneo_generate_book or teneo_research_niche, which perform work rather than describe capability, though it never says outright that it returns static documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this first if unsure' gives explicit, actionable routing guidance for an agent entering this tool family. It lacks a when-not-to-use clause (e.g., skip it once you know the workflow), so it stops short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teneo_evaluate_bookC
Run a Teneo evaluation on an existing generated book.
| Name | Required | Description | Default |
|---|---|---|---|
| fullBookId | Yes | ||
| forceRestart | No | ||
| evaluationMode | No | ||
| rewriteVersion | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It hints that the book must already exist ('existing generated book'), but omits whether the operation is read-only or mutating, what forceRestart and evaluationMode do, whether it is long-running, and any auth or rate-limit context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; the action and target are immediately clear. It is arguably too terse for the tool's complexity, but the sentence itself is structurally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters, an enum, no annotations, no output schema, and 0% schema coverage, the one-sentence description leaves critical invocation context missing. It states the basic action but not return behavior, mode differences, or restart semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all four parameters, and the description adds no meaning for fullBookId, forceRestart, evaluationMode, or rewriteVersion. With no compensation for the coverage gap, an agent must guess from parameter names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Run a Teneo evaluation') and resource ('existing generated book'), which separates it from generation and research siblings like teneo_generate_book and teneo_research_niche. However, it does not name a sibling alternative or explain what a Teneo evaluation actually covers, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use guidance, no prerequisites, and no exclusions. It never mentions related siblings such as teneo_book_status or explains when evaluation is preferable to other steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teneo_generate_bookA
Generate a COMPLETE, publish-ready non-fiction book (full manuscript + cover + PDF/EPUB/DOCX) from a topic/spec. Asynchronous: returns a jobId immediately (~45 min to finish). Then poll teneo_book_status. Charged in Teneo credits to the funded account. Use for a finished book/manuscript or KDP-ready files — not for a short answer or fiction.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Book title (or the topic). | |
| author_name | No | ||
| description | Yes | What the book covers. | |
| output_formats | No | ||
| idempotency_key | No | Optional stable retry key so the same request cannot double-charge. | |
| target_audience | Yes | Who the book is for. | |
| creative_direction | No | Tone / style / angle. | |
| number_of_chapters | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and does so: it discloses asynchronous execution, an immediate jobId return, an expected ~45 min completion, the required polling step, and that the operation is charged in credits to the funded account. The schema separately surfaces idempotency for retry-safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and deliverables, then the async/billing mechanics, then the usage boundary. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an async tool with no output schema or annotations, it covers the essential workflow: what it returns, how long it takes, the next step, and cost model. It could say a bit more about the three undocumented parameters, but an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 63%, so several params (author_name, output_formats, number_of_chapters) are undocumented in both places. The description names the overall input concept ('topic/spec') but adds no per-parameter semantics, making it a minimum-viable baseline rather than compensating for the gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Generate) and resource (COMPLETE, publish-ready non-fiction book) and enumerates the deliverables (manuscript + cover + PDF/EPUB/DOCX). It distinguishes itself from siblings by naming teneo_book_status as the follow-up and explicitly excluding fiction/short answers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (finished book/manuscript, KDP-ready files) and when-not (not a short answer, not fiction), and routes the agent to teneo_book_status for polling. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teneo_generate_coverC
Generate a book cover only. This charges the account for cover generation credits.
| Name | Required | Description | Default |
|---|---|---|---|
| mood | No | ||
| style | No | ||
| theme | No | ||
| title | Yes | ||
| author | No | ||
| provider | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses a real behavioral trait the schema cannot express: the call charges the account cover-generation credits. However, it says nothing about whether generation is synchronous, how long it takes, whether the provider choice changes cost or quality, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the cost caveat; nothing is padded. The phrasing 'only' is slightly ambiguous but costs almost no length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter generative tool with no annotations, no output schema, and no parameter documentation, this description is far too thin. The billing note is the one genuinely helpful addition; an agent still lacks any basis for choosing a provider or supplying mood/style/theme values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across six parameters (mood, style, theme, title, author, provider), and the description adds no meaning for any of them. The enum on 'provider' is completely unexplained, and the required 'title' is not distinguished from the optional descriptive fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate a book cover'), which is unambiguous on its own. The trailing 'only' weakly signals it does not generate anything beyond the cover, hinting at a boundary with the sibling teneo_generate_book, but the sibling is never named and the contrast is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to pick this over teneo_generate_book or teneo_generate_outline, nor any prerequisites or ordering advice. The word 'only' gestures at scope but does not tell the agent what condition should route it here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teneo_generate_outlineB
Generate an outline candidate for a nonfiction book without running the full book pipeline.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Book title or topic. | |
| description | No | What the book covers. | |
| target_audience | No | Who the book is for. | |
| number_of_chapters | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses scope — this is a lightweight, candidate-producing operation that skips the full book pipeline — but says nothing about whether the outline is persisted, what permissions are needed, or what the output looks like. Partial behavioral context only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core action front-loaded and the differentiator clause at the end. Efficient, though arguably too sparse given the missing behavioral and parameter detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter generation tool with no annotations and no output schema, the description is minimally adequate. It explains what is produced at a high level but not what a 'candidate outline' contains or how it is returned, leaving the agent to guess about the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, near the high-coverage baseline, so the schema already documents title, description, target_audience, and chapter count. The description adds no parameter-level detail (e.g., constraints on number_of_chapters or how the four inputs shape the outline), so it neither compensates for the gap nor adds value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Generate') and resource ('an outline candidate for a nonfiction book'), and differentiates itself from the sibling teneo_generate_book by clarifying it works 'without running the full book pipeline.' This gives an agent enough to distinguish it from the full-book generator, though it doesn't contrast with other siblings like teneo_research_niche.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer it should use this when it wants an outline but not a full book. However, no alternatives are named explicitly and no when-not conditions are given, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teneo_research_nicheC
Start a niche research job from a seed topic.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| topic | Yes | ||
| audience | No | ||
| category | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Start a ... job' weakly implies an async, long-running operation, but nothing is said about whether results are returned immediately, how long it takes, whether runs can be duplicated or cancelled, or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded with the verb and resource and contains no filler. However, it is so terse that 'conciseness' shades into under-specification rather than efficient structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, and four undocumented parameters, the one-line description is not sufficient for an agent to invoke this tool confidently. It would need at least parameter meaning and the async/job lifecycle spelled out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for four parameters. The description maps 'topic' to the seed topic but leaves 'count' (1-50), 'audience', and 'category' completely undefined in both schema and prose, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Start') and resource ('niche research job') plus the trigger input ('seed topic'), which is enough to distinguish it from the book-generation siblings. It stops short of explicitly contrasting itself with any sibling tool, so it does not reach a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus the book-oriented siblings (outline, cover, evaluate) or on what to do after starting the job. The word 'Start' implies an asynchronous job, but no follow-up tool (e.g. a status check) is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v1.0.2- First observed
teneo_book_status - First observed
teneo_capabilities - First observed
teneo_evaluate_book - First observed
teneo_generate_book - First observed
teneo_generate_cover - First observed
teneo_generate_outline - First observed
teneo_research_niche
TDQS
Scored across 7 tools
The tools target distinct actions: capabilities (discovery), generate_book, research_niche, book_status, generate_outline, generate_cover, evaluate_book. The main ambiguity is generate_cover vs generate_book (which already produces a cover) and whether book_status also tracks the research_niche job, but descriptions largely clarify these.
All tools share a teneo_ prefix and follow a mostly verb_noun convention (generate_book, research_niche, evaluate_book). Minor deviations: teneo_capabilities is noun-only and teneo_book_status reverses to a noun_status pattern rather than the verb_noun style.
Seven tools is well-scoped for a book-generation service, covering discovery, generation (book/outline/cover), status polling, research, and evaluation. Each tool earns its place without obvious redundancy.
The surface covers the core lifecycle: discover, generate (book/outline/cover), poll status with output manifest, research niche, and evaluate. Minor gaps: no dedicated status/cancel for the research_niche job and no job listing/history, but agents can work around these.
Maintenance
Related MCP Connectors
Agentic AI book creator: plan, write, illustrate, narrate, and publish books from any MCP client.
Build and publish full-stack apps from your coding agent: models, rules, pages, auth, per-app MCP.
Chinese web novel MCP: 36 tools (outline, prose, review, coach, KD export). BYOK, no API key.
AI document editing for agents: draft, edit, export .docx/PDF. 37 MCP tools; agent self-signup.
Related MCP Servers
- FlicenseCqualityDmaintenanceA multi-agent book-writing MCP server that manages a guarded chapter pipeline (writer → editor → third-pass agents → approve) with project planning, continuity tracking, and export/diff helpers.35-
- AlicenseNot gradedqualityBmaintenanceProvides MCP tools for AI-powered code review, research, and book writing via a fleet of coding agents.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides AI agents with a persistent, searchable knowledge library via MCP tools, allowing them to create books, manage pages, perform semantic search, and retrieve usage guides.5MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI-driven long-form novel creation and management, including chapter generation, character and timeline tracking, semantic memory retrieval, version savepoints, and deep consistency checking across multiple projects through MCP tools, with support for local LM Studio or any OpenAI-compatible API.14MIT